VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSkyObject.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 
12 #include <vrvCore/vrvCore.h>
14 
15 #include <vrvCore/DtUniqueID.h>
16 
18 #include <vrvUtil/signalslib.h>
19 
20 #include <matrix/vlVector.h>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtSkyObjectSignaler;
26 
30  {
31  //We should refactor the class with the DtDynamicOceanObject and DtWeatherEffectObject
32  // and combine them to make a consistent way
33  // to send down environment settings to the RDE.
34  public:
35 
36  class CloudLayer
37  {
38  public:
40  const DtVector& location = DtVector(0, 0, 0), float orientation = 0., float cornerRadius = 0.,
41  const DtVector& bounds = DtVector(0, 0, 0), double density = 0.0, bool infinite = false,
42  bool relative = false,
43  bool fadeAtAltitude = true, bool altitudeIsHAT = true)
44  : myLayerId(layerId)
45  , myType(type)
46  , myLocation(location)
47  , myOrientation(orientation)
48  , myCornerRadius(cornerRadius)
49  , myBounds(bounds)
50  , myDensity(density)
51  , myInfinite(infinite)
52  , myRelative(relative)
53  , myEnabled(false)
54  , myFadeAtAltitude(fadeAtAltitude)
55  , myAltitudeIsHAT(altitudeIsHAT)
56  {}
57 
58  public:
60  int myType;
65  double myDensity;
66  bool myInfinite;
67  bool myRelative;
68  bool myEnabled;
71  };
72 
75  {
76  None = 0,
77  Rain = 1,
78  SnowWet = 2,
79  SnowDry = 3,
80  Sleet = 4,
81  Hail = 5
82  };
83 
85  const static float DefaultDayLightLevel;
89  const static float DefaultSkyShadowsLightLevelHdr;
91  const static float DefaultFogVisibilityLevel;
92 
94  DtSkyObject(DtDe& de, DtUniqueID id);
95 
97  virtual ~DtSkyObject();
98 
100  virtual void setLocation( const DtVector& location );
101 
103  virtual void setDateAndTime(unsigned short year, unsigned char month,
104  unsigned char day, unsigned char hour, unsigned char minutes,
105  double seconds, bool observeDaylightSavings);
106 
107  // XXX New methods to document
108  virtual void addCloudLayer(DtCloudLayerId layerId) = 0;
109  virtual void sendCloudLayer(DtCloudLayerId layerId) = 0;
110  virtual void setCloudLayerDeckType(DtCloudLayerId layerId, int deckType) = 0;
111  virtual void setCloudLayerCornerRadius(DtCloudLayerId layerId, float corner) = 0;
112  virtual void setCloudLayerBounds(DtCloudLayerId layerId, const DtVector& bounds) = 0;
113  virtual void setCloudLayerDensity(DtCloudLayerId layerId, double density) = 0;
114  virtual void setCloudLayerInfiniteFlag(DtCloudLayerId layerId, bool infinite) = 0;
115  virtual void setCloudLayerRelativeFlag(DtCloudLayerId layerId, bool relative) = 0;
116  virtual void setCloudLayerFadeAtAltitudeFlag(DtCloudLayerId layerId, bool fadeAtAltitude) = 0;
117  virtual void setCloudLayerAltitudeIsHATFlag(DtCloudLayerId layerId, bool altitudeIsHAT) = 0;
118  virtual CloudLayer* findCloudLayer(DtCloudLayerId layerId) = 0;
119 
121  virtual void setCloudLayerEnabled(DtCloudLayerId layerId, bool enabled) = 0;
122 
124  //virtual int cloudLayerCount() const;
125 
127  virtual void removeCloudLayer(DtCloudLayerId layerId) = 0;
128 
130  virtual void removeCloudLayers() = 0;
131 
133  virtual void setAirTurbidity(float turbidity) = 0;
134 
136  virtual void setAmbientAirTemperature(float temperature) = 0;
137 
139  virtual void setVisibleDistance(float distance) = 0;
140 
142  virtual void setPrecipitationEnabled(bool enabled) = 0;
143 
146  virtual void setPrecipitationType(int type) = 0;
147 
149  virtual void setPrecipitationIntensity(float intensity) = 0;
150 
152  virtual void setCloudLayerPositionAndOrientation(DtCloudLayerId layerId, const DtVector&position,
153  float orientation) = 0;
154 
156  virtual void setFogHeight(float meters) = 0;
157 
159  virtual void setFogColor(const DtVector& color) = 0;
160 
162  virtual void setWindSpeed(float metersPerSecond) = 0;
163 
165  virtual void setWindDirection(float radians) = 0;
166 
167  //@(
170  void setAmbientLightValue( float ambientLightValue );
171  float ambientLightValue() const;
173 
174  //@(
176  bool isDaylight() const;
177 
181  bool isSkyCastingShadows() const;
183 
185  protected:
186 
190  };
191 
193  {
194  public:
196  static DtSkyObjectSignaler& instance(DtDe& de);
197 
199  virtual ~DtSkyObjectSignaler();
200 
202 
204  boost::signal<void(DtCloudLayerId layerId)>signal_addCloudLayer;
205  boost::signal<void(DtCloudLayerId layerId)>signal_modifyCloudLayer;
206 
208  boost::signal<void(DtCloudLayerId layerId, bool enabled) >
210 
212  boost::signal<void(DtCloudLayerId layerId) > signal_removeCloudLayer;
213 
215  boost::signal<void ()> signal_removeCloudLayers;
216 
218  boost::signal<void (float turbidity)> signal_airTurbidityChanged;
219 
221  boost::signal<void (float temperature)> signal_ambientAirTemperatureChanged;
222 
224  boost::signal<void (float distance)> signal_visibleDistanceChanged;
225 
227  boost::signal<void (bool enabled)> signal_precipitationEnabledChanged;
228 
231  boost::signal<void (int type)> signal_precipitationTypeChanged;
232 
234  boost::signal<void (float intensity)> signal_precipitationIntensityChanged;
235 
237  boost::signal<void(DtCloudLayerId layerId, double xCoord,
239 
241  boost::signal<void (float meters)> signal_fogHeightChanged;
242 
244  boost::signal<void (const DtVector& color)> signal_fogColorChanged;
245 
247  boost::signal<void (float metersPerSecond)> signal_windSpeedChanged;
248 
250  boost::signal<void (float radians) > signal_windDirectionChanged;
251 
253  boost::signal<void (float)> signal_ambientLightValueChanged;
254 
257  boost::signal<void (bool)> signal_isDayChanged;
258 
259  protected:
261  };
262 }
263 
264 
Virtual base class.
Definition: DtVirtualBaseClass.h:22
static const float DefaultDayLightLevel
Value for daylight visibility.
Definition: DtSkyObject.h:85
boost::signal< void(float metersPerSecond)> signal_windSpeedChanged
Signal raised when the wind speed changes.
Definition: DtSkyObject.h:247
The base sky object.
Definition: DtSkyObject.h:29
Contains makVrv::DtCloudCoverManager class.
boost::signal< void(float meters)> signal_fogHeightChanged
Signal raised when the ceiling height of the fog layer changes.
Definition: DtSkyObject.h:241
#define DtCloudLayerIdUndefined
Definition: DtCloudLayer.h:29
boost::signal< void(DtCloudLayerId layerId) > signal_removeCloudLayer
Signal raised when a cloud deck is removed.
Definition: DtSkyObject.h:212
static const float DefaultSkyShadowsLightLevelHdr
Value for shadow visibility with HDR.
Definition: DtSkyObject.h:89
boost::signal< void(DtCloudLayerId layerId)> signal_addCloudLayer
Signals for changed values.
Definition: DtSkyObject.h:204
CloudLayer(DtCloudLayerId layerId=DtCloudLayerIdUndefined, int type=0, const DtVector &location=DtVector(0, 0, 0), float orientation=0., float cornerRadius=0., const DtVector &bounds=DtVector(0, 0, 0), double density=0.0, bool infinite=false, bool relative=false, bool fadeAtAltitude=true, bool altitudeIsHAT=true)
Definition: DtSkyObject.h:39
boost::signal< void(bool)> signal_isDayChanged
Signal raised when the ambient light value is above the DefaultDayLightLevel.
Definition: DtSkyObject.h:257
boost::signal< void(float turbidity)> signal_airTurbidityChanged
Signal raised when the air turbidity changes.
Definition: DtSkyObject.h:218
double myDensity
Definition: DtSkyObject.h:65
boost::signal< void(const DtVector &color)> signal_fogColorChanged
Signal raised when the color of the fog layer changes.
Definition: DtSkyObject.h:244
DtCloudLayerId myLayerId
Definition: DtSkyObject.h:59
Definition: DtSkyObject.h:36
DtVector myLocation
Definition: DtSkyObject.h:61
Contains makVrv::DtVirtualBaseClass class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
bool myRelative
Definition: DtSkyObject.h:67
boost::signal< void(float radians) > signal_windDirectionChanged
Signal raised the wind direction changes.
Definition: DtSkyObject.h:250
DtSkyObjectSignaler & mySignaler
Definition: DtSkyObject.h:188
boost::signal< void(float intensity)> signal_precipitationIntensityChanged
Signal raised when the precipitation intensity changes.
Definition: DtSkyObject.h:234
static const float DefaultSkyShadowsLightLevelNoHdr
Value for shadow visibility without HDR.
Definition: DtSkyObject.h:87
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool myAltitudeIsHAT
Definition: DtSkyObject.h:70
float myCornerRadius
Definition: DtSkyObject.h:63
boost::signal< void(float distance)> signal_visibleDistanceChanged
Signal raised when the visible distance changes.
Definition: DtSkyObject.h:224
boost::signal< void(float temperature)> signal_ambientAirTemperatureChanged
Signal raised when the visible distance changes.
Definition: DtSkyObject.h:221
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
DtVector myBounds
Definition: DtSkyObject.h:64
boost::signal< void(DtCloudLayerId layerId, bool enabled) > signal_cloudLayerEnabledChanged
Signal raised when a cloud layer is enabled/disabled.
Definition: DtSkyObject.h:209
boost::signal< void(int type)> signal_precipitationTypeChanged
Signal raised when the precipitation type changes.
Definition: DtSkyObject.h:231
boost::signal< void(float)> signal_ambientLightValueChanged
Signal raised when the ambient light value changes.
Definition: DtSkyObject.h:253
boost::signal< void(DtCloudLayerId layerId, double xCoord, double yCoord)> signal_cloudLayerPositionChanged
Signal raised when a cloud layer moves to a new position.
Definition: DtSkyObject.h:238
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains makVrv::DtUniqueID type.
boost::signal< void(bool enabled)> signal_precipitationEnabledChanged
Signal raised when precipitation is enabled or disabled.
Definition: DtSkyObject.h:227
PrecipitationType
Precipitation types.
Definition: DtSkyObject.h:74
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Definition: DtTacticalGraphicUtilities.h:57
float myOrientation
Definition: DtSkyObject.h:62
boost::signal< void(DtCloudLayerId layerId)> signal_modifyCloudLayer
Definition: DtSkyObject.h:205
bool myEnabled
Definition: DtSkyObject.h:68
int myType
Definition: DtSkyObject.h:60
Definition: DtSkyObject.h:192
DtDe & myDe
Definition: DtSkyObject.h:189
static const float DefaultFogVisibilityLevel
Value for fog visibility - standard definition (1000 m.)
Definition: DtSkyObject.h:91
float myAmbientLightValue
Definition: DtSkyObject.h:187
boost::signal< void()> signal_removeCloudLayers
Signal raised when all the cloud decks are removed.
Definition: DtSkyObject.h:215
bool myFadeAtAltitude
Definition: DtSkyObject.h:69
bool myInfinite
Definition: DtSkyObject.h:66
Contains DLL export macros.

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)