VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtOsgSkyObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <vrvCore/DtSkyObject.h>
15 #include <osgParticle/PrecipitationEffect>
16 #include <osg/TextureCubeMap>
17 
18 namespace makVrv
19 {
20  class DtDe;
21  class DtWaterOnScreen;
22 
26  class DT_DLL_VRVOSG DtPrecipitationEffect : public osgParticle::PrecipitationEffect
27  {
28  public:
30  DtPrecipitationEffect(const DtPrecipitationEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
32 
33  virtual const char* libraryName() const { return "vrvOsg"; }
34  virtual const char* className() const { return "DtPrecipitationEffect"; }
35  virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const DtPrecipitationEffect*>(obj) != 0; }
36 
37  virtual void traverse(osg::NodeVisitor& nv);
38  };
39 
43  {
44  public:
45 
48 
50  virtual ~DtOsgSkyObject();
51 
55  virtual void setLocation(const DtVector& location);
56 
59  virtual const DtVector& location() const;
60 
69  virtual void addCloudLayer(int deckType, const DtVector& location,
70  const DtVector& bounds, double density, bool infinite, bool relative);
71 
82  virtual bool cloudLayer(int index, int& deckType, DtVector& location,
83  DtVector& bounds, double& density, bool& infinite, bool& relative) const;
84 
86  virtual int cloudLayerCount() const;
87 
89  virtual void removeCloudLayer(int index);
90 
92  virtual void removeCloudLayers();
93 
96  virtual void sendCloudLayers();
97 
99  virtual void setCloudLayerEnabled(int index, bool enabled);
100 
103  virtual float getSunAlpha() const;
104 
106  virtual void setDrawSunAndMoonIntoEnvMap(bool draw);
107 
110  virtual void setAirTurbidity(float turbidity);
111  virtual float airTurbidity() const;
113 
116  virtual void setAmbientAirTemperature(float temperature);
117  virtual float ambientAirTemperature() const;
119 
122  virtual void setVisibleDistance(float distance);
123  virtual float visibleDistance() const;
125 
128  virtual void setFogHeight(float meters);
129  virtual float fogHeight() const;
131 
137  virtual void setFogColor(const DtVector& color);
138  virtual const osg::Vec4& fogColor() const;
140 
146  virtual void setFogThresholdDistance(float distance);
147  virtual float fogThresholdDistance() const;
149 
152  virtual void setPrecipitationEnabled(bool enabled);
153  virtual bool precipitationEnabled() const;
155 
158  virtual void setPrecipitationVisibilityEffectsEnabled(bool enabled);
159  virtual bool precipitationVisibilityEffectsEnabled() const;
161 
165  virtual void setPrecipitationType(int type);
166  virtual int precipitationType() const;
168 
171  virtual void setPrecipitationIntensity(float intensity);
172  virtual float precipitationIntensity() const;
174 
176  virtual void setCloudLayerPosition(
177  int index, double xCoord, double yCoord);
178 
181  virtual void setWindSpeed(float metersPerSecond);
182  virtual float windSpeed() const;
184 
185 
187  virtual void setWindDirection(float radians);
189  virtual float windDirection() const;
192  virtual float windDirectionInDegrees() const;
193 
194 
197  virtual void setMinimumWindAltitude(float alt);
198  virtual float minimumWindAltitude() const;
200 
203  virtual void setMaximumWindAltitude(float alt);
204  virtual float maximumWindAltitude() const;
206 
209  virtual void setLensFlare(bool enabled);
210  virtual bool lensFlare() const;
212 
215  virtual void setCrepuscularRays(bool enabled);
216  virtual bool crepuscularRays() const;
218 
221  virtual void setRainSplashEffect();
223 
225  void setGenerateCubeMaps(bool enabled);
226 
229  GLuint getCubeMap(const osg::ref_ptr<osg::Camera> camera, const osg::State &state) const;
230 
233  GLuint getPrimaryCubeMap() const;
234 
236  void setFogOverride(osg::ref_ptr<osg::Camera> camera, const osg::Vec4f& fogColor, float fogDensity);
237 
239  void clearFogOverride(osg::ref_ptr<osg::Camera> camera);
240 
241  void clearFogOverrideForAllCameras(void);
242 
244  void setHorizonColor(const osg::Vec4f& horizonColor);
245 
247  void clearHorizonColor();
248 
250  void updatePrecipitation();
251 
253  DtSilverliningGroup *getDtSilverlining();
254 
255  void enableLighting(osg::ref_ptr<osg::Camera> camera, bool enable);
256 
259  bool shouldActivateRaindrops() const;
260 
261  protected:
262 
263  void updatePrecipitationOSG();
264  void updatePrecipitationSilverLining();
265 
266  void on_coordinateSystemChanged(const std::string& type);
267 
268  void applyCurrentSettings();
269 
270  protected:
271 
273  {
274  public:
275  CloudLayer(int type=0, const DtVector& location=DtVector(0, 0, 0),
276  const DtVector& bounds=DtVector(0, 0, 0), double density=0.0,
277  bool infinite=false, bool relative=false)
278  : myType(type)
279  , myLocation(location)
280  , myBounds(bounds)
281  , myDensity(density)
282  , myInfinite(infinite)
283  , myRelative(relative)
284  , myEnabled(false)
285  {}
286 
287  public:
288  int myType;
291  double myDensity;
294  bool myEnabled;
295  };
296  typedef std::vector<CloudLayer> CloudLayerList;
297 
300  osg::ref_ptr<DtSilverliningGroup> mySilverliningGroup;
303  osg::ref_ptr<osgParticle::PrecipitationEffect> myPrecipitationEffect;
310  float myFogHeight;
311  osg::Vec4f myFogColor;
313  float myWindSpeed;
322 
323  //default cube map for when the sky is turned off.
324  osg::ref_ptr<osg::TextureCubeMap> myDefaultCubeMap;
325 
326  };
327 }
328 

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)