17 #include <osg/LightSource>
18 #include <osg/Uniform>
20 #include <OpenThreads/Mutex>
25 #include <matrix/vlVector.h>
26 #include <matrix/referenceEllipsoid.h>
27 #include <matrix/geodeticCoord.h>
34 namespace SilverLining
46 class DtOsgFogComponent;
47 class DtLightManagerGroup;
79 virtual void setGenerateCubeMaps(
bool enabled);
82 void setCubeMapGenerationDistanceThreshold(
double threshold);
86 virtual unsigned int getCubeMap(
const osg::ref_ptr<osg::Camera>& camera)
const;
90 virtual unsigned int getPrimaryCubeMap()
const;
92 virtual void installIntoChannel(
DtChannel*);
95 virtual void applyFog(osg::ref_ptr<osg::Camera> camera);
98 virtual void deleteGeods();
101 virtual void setGeocentricMode(
bool mode);
104 virtual bool geocentricMode()
const;
107 virtual void setHiResCumulus(
bool enabled);
110 virtual bool hiResCumulus()
const;
113 virtual void setLensFlare(
bool enabled);
116 virtual bool lensFlare()
const;
119 virtual void setCrepuscularRays(
bool enabled);
122 virtual bool crepuscularRays()
const;
125 virtual void setForcedMoonPhase(
float phase);
128 virtual void clearForcedMoonPhase();
131 virtual bool moonPhaseIsForced()
const;
134 virtual float forcedMoonPhase()
const;
139 virtual void setForcedSunAndMoon(
double sunLat,
double sunLon,
double moonLat,
140 double moonLon,
bool horizonCoords =
true);
143 virtual void clearForcedSunAndMoon();
146 virtual bool sunAndMoonPositionIsForced()
const;
149 virtual void getForcedSunAndMoonPosition(
double& sunLat,
double& sunLon,
150 double& moonLat,
double& moonLon,
bool& horizonCoords)
const;
154 virtual void setLightPollution(
double Wm2);
157 virtual double lightPollution()
const;
160 virtual void setDateAndTime(
unsigned short year,
unsigned char month,
161 unsigned char day,
unsigned char hour,
unsigned char minutes,
162 double seconds,
bool observeDaylightSavings);
165 virtual void updateTime();
169 virtual void setLocation(
const DtVector& location);
172 virtual void update(
const osg::Matrix& m);
175 virtual void update2D(
const osg::Matrix& m);
182 virtual int cloudLayerCount()
const;
185 virtual void removeCloudLayer(
int index);
189 virtual void setFogColor(
const osg::Vec4f& rgbA);
192 virtual void setFogHeight(
float height);
196 virtual void setFogBlend(
const osg::Vec4f& rgbA,
float density);
199 virtual void setFogOverride(osg::ref_ptr<osg::Camera> camera,
const osg::Vec4f& rgbA,
float density);
203 virtual void setFogThresholdDistance(
float distance);
206 virtual void setHorizonColor(
const osg::Vec4f& rgbA);
209 virtual void setCubeMapDirty();
212 virtual void setUse16BitEnviroMap(
bool flag);
215 virtual bool getUse16BitEnviroMap();
218 virtual void setUsingSensorFXShader(
bool flag);
221 virtual bool getUsingSensorFXShader();
224 virtual void clearHorizonColor();
227 virtual void clearFogOverride(osg::ref_ptr<osg::Camera> camera);
229 virtual void clearFogOverrideForAllCameras(
void);
234 void setUseGlobalTimeZone(
bool b);
237 virtual bool useGlobalTimeZone()
const;
240 virtual float getSunAlpha()
const;
243 virtual void setDrawSunAndMoonIntoEnvMap(
bool draw);
246 virtual bool drawSunAndMoonIntoEnvMap()
const;
249 virtual float getSkyCoverage()
const;
252 virtual void addCirroCumulus(
const DtVector& position,
const DtVector& bounds,
bool infinite,
bool relative);
253 virtual void addCirrusFibratus(
const DtVector& position,
const DtVector& bounds,
bool infinite,
bool relative);
254 virtual void addNimbostratus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
255 virtual void addCumulusMediocris(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
256 virtual void addCumulusCongestus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
257 virtual void addCumulonumbusCappilatus(
const DtVector& position,
const DtVector& bounds,
double density,
bool relative);
258 virtual void addStratocumulus(
const DtVector& position,
const DtVector& bounds,
double density,
bool infinite,
bool relative);
259 virtual void setCloudLayerEnabled(
int index,
bool enabled);
260 virtual void setCloudLayerPosition(
int index,
double xCoord,
double yCoord);
262 virtual void setWind(
double directionDEN,
double minAltitude,
double maxAltitude,
double velocity);
263 virtual void setAirTurbidity(
float turbidity);
264 virtual void setVisibleDistance(
float distance);
265 virtual float getVisibleDistance()
const;
267 virtual void createAtmosphere();
268 virtual void destroyAtmosphere();
273 virtual void addRain(
float mmPerHour,
bool global);
274 virtual void addSleet(
float mmPerHour,
bool global);
275 virtual void addSnow(
float mmPerHour,
bool global,
bool wet);
276 virtual void clearAllPrecipitation();
278 virtual void realizeLayers();
280 virtual SilverLining::Atmosphere* findAtmosphere();
285 virtual void getGMTDateTime(
long &julianDate,
double &GMTTod);
288 virtual osg::Node *getCloudsNode();
291 virtual osg::Node *getSkyNode();
294 virtual void setSunMoonEnabled(
bool drawSunMoon);
297 virtual bool getSunMoonEnabled();
300 virtual void setStarsEnabled(
bool drawStars);
303 virtual bool getStarsEnabled();
305 virtual void enableLighting(osg::ref_ptr<osg::Camera> camera,
bool enable);
309 void setEnableHDR(
bool enable);
312 virtual osg::LightSource *skyLight();
314 virtual const CloudLayerList& cloudLayerList()
const;
319 virtual bool updateVolumetricUniforms(osg::StateSet * stateSet);
324 virtual void addLayer(
const CloudLayer& layer);
327 virtual void realizeLayer(CloudLayer& layer);
330 virtual int CalculateZoneByLongitude(
double longitude);
332 void SetTimeAndLocation();
334 virtual void addPrecipitationToClouds(
int type,
float mmPerHour);
336 virtual void updatePrecipitation();
338 virtual void setCloudVisibility();
341 virtual void traverse(osg::NodeVisitor& nv);
342 virtual void resetLayers();
343 virtual void forceResetLayers();
345 virtual void generateCubeMap(
const osg::Matrix& viewMatrix);
348 virtual void slot_reloadShader();