IDaylightSystem.h

Go to the documentation of this file.
00001 //*****************************************************************************/
00002 // Copyright (c) 1998-2007 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //*****************************************************************************/
00011 // DESCRIPTION: Interface for creating and modifying daylight systems programatically.
00012 // AUTHOR: Chloe Mignot - created April 27 2007
00013 //*****************************************************************************/
00014 
00015 
00016 #pragma once
00017 #include "GetCOREInterface.h"
00018 #include "ifnpub.h"
00019 #include "assetmanagement\AssetUser.h"
00020 
00021 class INode;
00022 class Point3;
00023 class LightObject;
00024 class IDaylightSystem;
00025 class IDaylightSystem2;
00026 
00027 // --- Interface IDs
00028 #define DAYLIGHTSYSTEM_FACTORY_INTERFACE Interface_ID(0x5c665bc7, 0x61b44a30)
00029 
00038 class IDaylightSystemFactory : public FPStaticInterface
00039 {
00040 public:
00048     virtual INode* Create(IDaylightSystem*& pDaylight) = 0;
00049 
00052     static IDaylightSystemFactory* GetInstance()    {
00053         return static_cast<IDaylightSystemFactory*>(GetCOREInterface(DAYLIGHTSYSTEM_FACTORY_INTERFACE));
00054     }
00055 };
00056 
00057 #define IID_DAYLIGHT_SYSTEM_FACTORY2 Interface_ID(0x688f66a6, 0x423a37aa)
00058 
00067 class IDaylightSystemFactory2 : public FPStaticInterface
00068 {
00069 public:
00084     virtual INode* Create(
00085         IDaylightSystem2*& pDaylight, 
00086         const Class_ID* sunClassID = NULL, 
00087         const Class_ID* skyClassID = NULL) = 0;
00088 };
00089 
00090 // --- Interface IDs
00091 #define DAYLIGHT_SYSTEM_INTERFACE Interface_ID(0x20033f9f, 0x6a65470)
00092 
00105 class IDaylightSystem : public FPMixinInterface 
00106 {
00107 public:
00112     virtual LightObject* GetSun() const = 0;
00113 
00118     virtual LightObject* GetSky() const = 0;
00119 
00123     virtual void SetPosition(const Point3& position) = 0;
00124 
00128     virtual Point3 GetPosition() const = 0;
00129 
00134     virtual void  SetOrbitalScale(float orbScale) = 0;
00135 
00140     virtual float GetOrbitalScale() const = 0;
00141 
00146     virtual void SetNorthDirection(float angle) = 0;
00147 
00152     virtual float GetNorthDirection() const = 0;
00153 
00159     virtual void SetCompassDiameter(float compassDiameter) = 0;
00160 
00165     virtual float GetCompassDiameter() const = 0;
00166 
00170     virtual void SetTimeOfDay(const Point3& time) = 0;
00171 
00176     virtual Point3 GetTimeOfDay() const = 0;
00177 
00181     virtual void SetDate(const Point3& date) = 0;
00182 
00187     virtual Point3 GetDate() const = 0;
00188 
00194     virtual void SetLatLong(float latitude, float longitude) = 0;
00195 
00199     virtual float GetLatitude() const = 0;
00200 
00201 
00205     virtual float GetLongitude() const = 0;
00206 
00211     virtual void SetDaylightSavingTime(BOOL isDaylightSavingTime) = 0;
00212 
00217     virtual BOOL GetDaylightSavingTime() const = 0;
00218 };
00219 
00220 #define IID_DAYLIGHT_SYSTEM2 Interface_ID(0x226e7d9a, 0x215a193f)
00221 
00231 class IDaylightSystem2 : public IDaylightSystem
00232 {
00233 public:
00234     /* \brief Retrieves the unique identifier of this interface
00235     */
00236     virtual Interface_ID GetID() { return IID_DAYLIGHT_SYSTEM2; }
00237 
00245     virtual int GetTimeZone(float longitude) const = 0;
00246 
00252     virtual LightObject* SetSun(const Class_ID& sunClassID) = 0;
00253 
00259     virtual LightObject* SetSky(const Class_ID& skyClassID) = 0;
00260 
00264     enum DaylightControlType
00265     {
00266         eDateAndTime = 0, eManual = 1, eWeatherFile = 2
00267     };
00268 
00275     virtual DaylightControlType GetDaylightControlType()const =0;
00276 
00283     virtual void SetDaylightControlType(DaylightControlType val) =0;
00284 
00288     virtual MSTR GetLocation() = 0;
00289 
00295     virtual void GetAltitudeAzimuth(TimeValue t, float &altitude,float &azimuth) =0;
00296 
00302     virtual MaxSDK::AssetManagement::AssetUser GetWeatherFile()const =0;
00303 
00307     virtual void SetWeatherFile(const MaxSDK::AssetManagement::AssetUser &val) =0;
00308 
00313     virtual void OpenWeatherFileDlg() = 0;
00314 
00315     
00324     virtual bool GetTemps(float &dryBulbTemperature, float &dewPointTemperature)=0;
00325 
00336     virtual bool GetExtraTerrestialRadiation(float &extraterrestrialHorizontalRadiation, float &extraterrestrialDirectNormalRadiation)=0;
00337 
00338 
00351     virtual bool GetRadiation(float &globalHorizontalRadiation, float &directNormalRadiation,
00352                                              float &diffuseHorizontalRadiation)=0;
00353 
00354 
00369     virtual bool GetIlluminance(float &globalHorizontalIlluminance, float &directNormalIlluminance,
00370                                              float &diffuseHorizontalIlluminance, float &zenithLuminance)=0;
00372 
00373 };
00374 
00375 #define IID_DAYLIGHT_SYSTEM3 Interface_ID(0x36df4e9f, 0x6b160e40)
00376 
00385 class IDaylightSystem3 : public IDaylightSystem2
00386 {
00387 public:
00393     virtual void GetAltAz(TimeValue t, float &altitude,float &azimuth)=0;
00394 };
00395