VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgSkyObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
15 #include <vrvCore/DtSkyObject.h>
17 #include <osgParticle/PrecipitationEffect>
18 #include <osg/TextureCubeMap>
19 
20 #include <boost/unordered_map.hpp>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtWaterOnScreen;
26 
30  class DT_DLL_VRVOSG DtPrecipitationEffect : public osgParticle::PrecipitationEffect
31  {
32  public:
34  DtPrecipitationEffect(const DtPrecipitationEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
35  virtual ~DtPrecipitationEffect();
36 
37  virtual const char* libraryName() const { return "vrvOsg"; }
38  virtual const char* className() const { return "DtPrecipitationEffect"; }
39  virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const DtPrecipitationEffect*>(obj) != 0; }
40 
41  virtual void traverse(osg::NodeVisitor& nv);
42  };
43 
47  {
48  public:
49 
52 
54  virtual ~DtOsgSkyObject();
55 
59  virtual void setLocation(const DtVector& location);
60 
63  virtual const DtVector& location() const;
64 
75 
76  virtual void addCloudLayer(DtCloudLayerId layerId);
77  virtual void setCloudLayerDeckType(DtCloudLayerId layerId, int deckType);
78  virtual void setCloudLayerCornerRadius(DtCloudLayerId layerId, float corner);
79  virtual void setCloudLayerBounds(DtCloudLayerId layerId, const DtVector& bounds);
80  virtual void setCloudLayerDensity(DtCloudLayerId layerId, double density);
81  virtual void setCloudLayerInfiniteFlag(DtCloudLayerId layerId, bool infinite);
82  virtual void setCloudLayerRelativeFlag(DtCloudLayerId layerId, bool relative);
83  virtual void setCloudLayerFadeAtAltitudeFlag(DtCloudLayerId layerId, bool fadeAtAltitude);
84  virtual void setCloudLayerAltitudeIsHATFlag(DtCloudLayerId layerId, bool altitudeIsHAT);
85 
86 
97  virtual CloudLayer* findCloudLayer(DtCloudLayerId layerId);
98 
100  //virtual int cloudLayerCount() const;
101 
103  virtual void removeCloudLayer(DtCloudLayerId layerId);
104 
106  virtual void removeCloudLayers();
107 
110  virtual void sendCloudLayers();
111 
113  virtual void sendCloudLayer(DtCloudLayerId layerId);
114 
116  virtual void setCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
117 
120  virtual float getSunAlpha() const;
121 
123  virtual void setDrawSunAndMoonIntoEnvMap(bool draw);
124 
127  virtual void setAirTurbidity(float turbidity);
128  virtual float airTurbidity() const;
130 
133  virtual void setAmbientAirTemperature(float temperature);
134  virtual float ambientAirTemperature() const;
136 
139  virtual void setVisibleDistance(float distance);
140  virtual float visibleDistance() const;
142 
145  virtual void setFogHeight(float meters);
146  virtual float fogHeight() const;
148 
154  virtual void setFogColor(const DtVector& color);
155  virtual const osg::Vec4& fogColor() const;
157 
163  virtual void setFogThresholdDistance(float distance);
164  virtual float fogThresholdDistance() const;
166 
169  virtual void setPrecipitationEnabled(bool enabled);
170  virtual bool precipitationEnabled() const;
172 
175  virtual void setPrecipitationVisibilityEffectsEnabled(bool enabled);
176  virtual bool precipitationVisibilityEffectsEnabled() const;
178 
182  virtual void setPrecipitationType(int type);
183  virtual int precipitationType() const;
185 
188  virtual void setPrecipitationIntensity(float intensity);
189  virtual float precipitationIntensity() const;
191 
193  virtual void setCloudLayerPositionAndOrientation(DtCloudLayerId layerId, const DtVector& position, float orientation);
194 
197  virtual void setWindSpeed(float metersPerSecond);
198  virtual float windSpeed() const;
200 
201 
203  virtual void setWindDirection(float radians);
205  virtual float windDirection() const;
208  virtual float windDirectionInDegrees() const;
209 
210 
213  virtual void setMinimumWindAltitude(float alt);
214  virtual float minimumWindAltitude() const;
216 
219  virtual void setMaximumWindAltitude(float alt);
220  virtual float maximumWindAltitude() const;
222 
225  virtual void setLensFlare(bool enabled);
226  virtual bool lensFlare() const;
228 
231  virtual void setCrepuscularRays(bool enabled);
232  virtual bool crepuscularRays() const;
234 
237  virtual void setRainSplashEffect();
239 
241  void setGenerateCubeMaps(bool enabled);
242 
245  GLuint getCubeMap(const osg::ref_ptr<const osg::Camera> camera, const osg::State &state) const;
246 
249  GLuint getPrimaryCubeMap() const;
250 
252  void setFogOverride(osg::ref_ptr<const osg::Camera> camera, const osg::Vec4f& fogColor, float fogDensity);
253 
255  void clearFogOverride(osg::ref_ptr<const osg::Camera> camera);
256 
257  void clearFogOverrideForAllCameras(void);
258 
260  void setHorizonColor(const osg::Vec4f& horizonColor);
261 
263  void clearHorizonColor();
264 
266  void updatePrecipitation();
267 
269  DtSilverliningGroup *getDtSilverlining();
270 
272  DtGroundFogGroup* getDtGroundFogGroup();
273 
275  DtWeatherLayerGroup* getDtWeatherLayerGroup();
276 
277  void enableLighting(osg::ref_ptr<osg::Camera> camera, bool enable);
278 
281  bool shouldActivateRaindrops() const;
282 
284  void setAboveWater(bool value) { myAboveWater = value; }
285  bool aboveWater() { return myAboveWater; }
286 
287  protected:
288 
289  void updatePrecipitationOSG();
290  void updatePrecipitationSilverLining();
291 
292  void on_coordinateSystemChanged(const std::string& type);
293 
294  void applyCurrentSettings();
295 
296  protected:
297 
298  virtual void sendCloudLayer(const CloudLayer& layer);
299 
300 protected:
301 
302  typedef boost::unordered_map<DtCloudLayerId, CloudLayer> CloudLayerMap;
303 
319  float myFogHeight;
320  osg::Vec4f myFogColor;
322  float myWindSpeed;
332 
333  //default cube map for when the sky is turned off.
335 
336  };
337 }
338 
osg::ref_ptr< DtGroundFogGroup > myGroundFogGroup
Definition: DtOsgSkyObject.h:307
float myWindDirection
Definition: DtOsgSkyObject.h:323
float mySavedVisibility
Definition: DtOsgSkyObject.h:329
bool myPrecipitationEnabled
Definition: DtOsgSkyObject.h:313
Contains makVrv::DtGroundFogGroup class.
float myAirTemperature
Definition: DtOsgSkyObject.h:317
osg::ref_ptr< osg::TextureCubeMap > myDefaultCubeMap
Definition: DtOsgSkyObject.h:334
bool aboveWater()
Definition: DtOsgSkyObject.h:285
osg::ref_ptr< osgParticle::PrecipitationEffect > myPrecipitationEffect
Definition: DtOsgSkyObject.h:312
int myPrecipitationEffectType
Definition: DtOsgSkyObject.h:314
Precipitation effect that only displays in 3d modes (to avoid strange effects in 2d mode) ...
Definition: DtOsgSkyObject.h:30
float myAirTurbidity
Definition: DtOsgSkyObject.h:316
A group node which serves as a root for weather layers.
Definition: DtWeatherLayerGroup.h:47
The base sky object.
Definition: DtSkyObject.h:29
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: featureContext.h:37
osg::ref_ptr< DtWeatherLayerGroup > myWeatherLayerGroup
Definition: DtOsgSkyObject.h:308
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:17
An OSG implementation of the sky.
Definition: DtOsgSkyObject.h:46
DtVector myLocation
Definition: DtOsgSkyObject.h:310
A group node which adds a silver-lining sky and will light all Children with the proper lighting para...
Definition: DtSilverliningGroup.h:63
Definition: DtSkyObject.h:36
Contains makVrv::DtSkyObject class.
float myVisibleDistance
Definition: DtOsgSkyObject.h:318
float myWindAltMinimum
Definition: DtOsgSkyObject.h:324
boost::unordered_map< DtCloudLayerId, CloudLayer > CloudLayerMap
Definition: DtOsgSkyObject.h:302
bool myLensFlareEnabled
Definition: DtOsgSkyObject.h:326
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
float myFogHeight
Definition: DtOsgSkyObject.h:319
float myWindSpeed
Definition: DtOsgSkyObject.h:322
virtual const char * libraryName() const
Definition: DtOsgSkyObject.h:37
A group node which serves as a root for patchy ground fog areas, and effects in addition to infinite ...
Definition: DtGroundFogGroup.h:47
Contains makVrv::DtWeatherLayerGroup class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
bool myCrepuscularRaysEnabled
Definition: DtOsgSkyObject.h:327
bool myPrecipitationVisibilityEffects
Definition: DtOsgSkyObject.h:331
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
bool myVisibilitySaved
Definition: DtOsgSkyObject.h:328
virtual bool isSameKindAs(const osg::Object *obj) const
Definition: DtOsgSkyObject.h:39
float myFogThreshold
Definition: DtOsgSkyObject.h:321
osg::ref_ptr< DtSilverliningGroup > mySilverliningGroup
Definition: DtOsgSkyObject.h:306
Base class to provide boost signal/slot management.
virtual const char * className() const
Definition: DtOsgSkyObject.h:38
bool myAboveWater
Definition: DtOsgSkyObject.h:330
DtUniqueID myHailLayerId
Definition: DtOsgSkyObject.h:309
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
void setAboveWater(bool value)
needed for god ray generation
Definition: DtOsgSkyObject.h:284
float myWindAltMaximum
Definition: DtOsgSkyObject.h:325
DtSignalConnectionManager mySignals
Definition: DtOsgSkyObject.h:305
DtDe & myDe
Definition: DtOsgSkyObject.h:304
float myPrecipitationIntensity
Definition: DtOsgSkyObject.h:315
Contains makVrv::DtSilverliningGroup class.
CloudLayerMap myCloudLayerMap
Definition: DtOsgSkyObject.h:311
osg::Vec4f myFogColor
Definition: DtOsgSkyObject.h:320
Definition: vrfObjectManipulationHandlerBaseClass.h:67

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)