Go to
the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
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
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