17 #include <osg/LightSource>
22 #include <matrix/vlVector.h>
23 #include <matrix/referenceEllipsoid.h>
24 #include <matrix/geodeticCoord.h>
25 #include <OpenThreads/Mutex>
30 namespace SilverLining
42 class DtOsgFogComponent;
43 class DtLightManagerGroup;
60 void setGenerateCubeMaps(
bool enabled);
63 void setCubeMapGenerationDistanceThreshold(
double threshold);
67 unsigned int getCubeMap(
const osg::ref_ptr<osg::Camera> camera)
const;
71 unsigned int getPrimaryCubeMap()
const;
76 void applyFog(osg::ref_ptr<osg::Camera> camera);
82 void setGeocentricMode(
bool mode);
85 bool geocentricMode()
const;
88 void setHiResCumulus(
bool enabled);
91 bool hiResCumulus()
const;
94 void setLensFlare(
bool enabled);
97 bool lensFlare()
const;
100 void setCrepuscularRays(
bool enabled);
103 bool crepuscularRays()
const;
106 void setForcedMoonPhase(
float phase);
109 void clearForcedMoonPhase();
112 bool moonPhaseIsForced()
const;
115 float forcedMoonPhase()
const;
120 void setForcedSunAndMoon(
double sunLat,
double sunLon,
double moonLat,
121 double moonLon,
bool horizonCoords=
true);
124 void clearForcedSunAndMoon();
127 bool sunAndMoonPositionIsForced()
const;
130 void getForcedSunAndMoonPosition(
double& sunLat,
double& sunLon,
131 double& moonLat,
double& moonLon,
bool& horizonCoords )
const;
135 void setLightPollution(
double Wm2);
138 double lightPollution()
const;
141 virtual void setDateAndTime(
unsigned short year,
unsigned char month,
142 unsigned char day,
unsigned char hour,
unsigned char minutes,
143 double seconds,
bool observeDaylightSavings );
146 virtual void updateTime();
150 virtual void setLocation(
const DtVector& location);
153 virtual void update(
const osg::Matrix& m);
156 virtual void update2D(
const osg::Matrix& m);
163 int cloudLayerCount()
const;
166 void removeCloudLayer(
int index);
170 void setFogColor(
const osg::Vec4f& rgbA);
173 void setFogHeight(
float height);
177 void setFogBlend(
const osg::Vec4f& rgbA,
float density);
180 void setFogOverride(osg::ref_ptr<osg::Camera> camera,
const osg::Vec4f& rgbA,
float density);
184 void setFogThresholdDistance(
float distance);
187 void setHorizonColor(
const osg::Vec4f& rgbA);
190 void setCubeMapDirty();
193 void setUse16BitEnviroMap(
bool flag);
196 bool getUse16BitEnviroMap();
199 void setUsingSensorFXShader(
bool flag);
202 bool getUsingSensorFXShader();
205 void clearHorizonColor();
208 void clearFogOverride(osg::ref_ptr<osg::Camera> camera);
210 void clearFogOverrideForAllCameras(
void);
214 virtual void setUseGlobalTimeZone(
bool b);
217 virtual bool useGlobalTimeZone()
const;
220 float getSunAlpha()
const;
223 void addCirroCumulus(
const DtVector& position,
const DtVector& bounds,
bool infinite,
bool relative);
224 void addCirrusFibratus(
const DtVector& position,
const DtVector& bounds,
bool infinite,
bool relative);
225 void addNimbostratus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
226 void addCumulusMediocris(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
227 void addCumulusCongestus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
228 void addCumulonumbusCappilatus(
const DtVector& position,
const DtVector& bounds,
double density,
bool relative);
229 void addStratocumulus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
230 void setCloudLayerEnabled(
int index,
bool enabled);
231 void setCloudLayerPosition(
int index,
double xCoord,
double yCoord);
233 void setWind(
double directionDEN,
double minAltitude,
double maxAltitude,
double velocity);
234 void setAirTurbidity(
float turbidity );
235 void setVisibleDistance(
float distance );
236 float getVisibleDistance()
const;
238 void createAtmosphere();
239 void destroyAtmosphere();
241 void addRain(
float mmPerHour,
bool global);
242 void addSleet(
float mmPerHour,
bool global);
243 void addSnow(
float mmPerHour,
bool global,
bool wet);
244 void clearAllPrecipitation();
246 void realizeLayers();
248 SilverLining::Atmosphere* findAtmosphere();
253 void getGMTDateTime(
long &julianDate,
double &GMTTod);
256 osg::Node *getCloudsNode();
259 osg::Node *getSkyNode();
262 std::vector<unsigned int> getDefaultShaderVector();
265 void setSunMoonEnabled(
bool drawSunMoon);
268 bool getSunMoonEnabled();
271 void setStarsEnabled(
bool drawStars);
274 bool getStarsEnabled();
276 void enableLighting(osg::ref_ptr<osg::Camera> camera,
bool enable);
300 int CalculateZoneByLongitude(
double longitude);
301 void SetTimeAndLocation();
303 void addPrecipitationToClouds(
int type,
float mmPerHour);
305 void updatePrecipitation();
307 void setCloudVisibility();
310 virtual void traverse(osg::NodeVisitor& nv);
312 void forceResetLayers();
314 void generateCubeMap(
const osg::Matrix& viewMatrix );