VR-Forces 5.0.3 Developer's Guide
 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) 2021 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  Drizzle = 6,
83  };
84 
86  const static float theDefaultDayLightLevel;
92  const static float theDefaultFogVisibilityLevel;
97  const static double theMaximumPrecipitationRate;
99  const static float theMaximumVisibilityDistance;
100 
102  DtSkyObject(DtDe& de, DtUniqueID id);
103 
105  virtual ~DtSkyObject();
106 
108  virtual void setLocation( const DtVector& location );
109 
111  virtual void setDateAndTime(unsigned short year, unsigned char month,
112  unsigned char day, unsigned char hour, unsigned char minutes,
113  double seconds, bool observeDaylightSavings);
114 
115  // XXX New methods to document
116  virtual void addCloudLayer(DtCloudLayerId layerId) = 0;
117  virtual void sendCloudLayer(DtCloudLayerId layerId) = 0;
118  virtual void setCloudLayerDeckType(DtCloudLayerId layerId, int deckType) = 0;
119  virtual void setCloudLayerCornerRadius(DtCloudLayerId layerId, float corner) = 0;
120  virtual void setCloudLayerBounds(DtCloudLayerId layerId, const DtVector& bounds) = 0;
121  virtual void setCloudLayerDensity(DtCloudLayerId layerId, double density) = 0;
122  virtual void setCloudLayerInfiniteFlag(DtCloudLayerId layerId, bool infinite) = 0;
123  virtual void setCloudLayerRelativeFlag(DtCloudLayerId layerId, bool relative) = 0;
124  virtual void setCloudLayerFadeAtAltitudeFlag(DtCloudLayerId layerId, bool fadeAtAltitude) = 0;
125  virtual void setCloudLayerAltitudeIsHATFlag(DtCloudLayerId layerId, bool altitudeIsHAT) = 0;
126  virtual CloudLayer* findCloudLayer(DtCloudLayerId layerId) = 0;
127 
129  virtual void setCloudLayerEnabled(DtCloudLayerId layerId, bool enabled) = 0;
130 
132  //virtual int cloudLayerCount() const;
133 
135  virtual void removeCloudLayer(DtCloudLayerId layerId) = 0;
136 
138  virtual void removeCloudLayers() = 0;
139 
141  virtual void setAirTurbidity(float turbidity) = 0;
142 
144  virtual void setAmbientAirTemperature(float temperature) = 0;
145 
147  virtual void setVisibleDistance(float distance) = 0;
148 
150  virtual void setPrecipitationEnabled(bool enabled) = 0;
151 
154  virtual void setPrecipitationType(int type) = 0;
155 
157  virtual void setPrecipitationIntensity(float intensity) = 0;
158 
160  virtual void setCloudLayerPositionAndOrientation(DtCloudLayerId layerId, const DtVector&position,
161  float orientation) = 0;
162 
164  virtual void setFogHeight(float meters) = 0;
165 
167  virtual void setFogColor(const DtVector& color) = 0;
168 
170  virtual void setGroundFogColor(const DtVector& color) = 0;
171 
173  virtual void setWindSpeed(float metersPerSecond) = 0;
174 
176  virtual void setWindDirection(float radians) = 0;
177 
178  //@(
181  void setAmbientLightValue( float ambientLightValue );
182  float ambientLightValue() const;
184 
185  //@(
187  bool isDaylight() const;
188 
192  bool isSkyCastingShadows() const;
194 
196  protected:
197 
201  };
202 
204  {
205  public:
207  static DtSkyObjectSignaler& instance(DtDe& de);
208 
210  virtual ~DtSkyObjectSignaler();
211 
213 
215  boost::signalslib::signal<void(DtCloudLayerId layerId)>signal_addCloudLayer;
216  boost::signalslib::signal<void(DtCloudLayerId layerId)>signal_modifyCloudLayer;
217 
219  boost::signalslib::signal<void(DtCloudLayerId layerId, bool enabled) >
221 
223  boost::signalslib::signal<void(DtCloudLayerId layerId) > signal_removeCloudLayer;
224 
226  boost::signalslib::signal<void ()> signal_removeCloudLayers;
227 
229  boost::signalslib::signal<void (float turbidity)> signal_airTurbidityChanged;
230 
232  boost::signalslib::signal<void (float temperature)> signal_ambientAirTemperatureChanged;
233 
235  boost::signalslib::signal<void (float distance)> signal_visibleDistanceChanged;
236 
238  boost::signalslib::signal<void (bool enabled)> signal_precipitationEnabledChanged;
239 
242  boost::signalslib::signal<void (int type)> signal_precipitationTypeChanged;
243 
245  boost::signalslib::signal<void (float intensity)> signal_precipitationIntensityChanged;
246 
248  boost::signalslib::signal<void(DtCloudLayerId layerId, double xCoord,
250 
252  boost::signalslib::signal<void (float meters)> signal_fogHeightChanged;
253 
255  boost::signalslib::signal<void (const DtVector& color)> signal_fogColorChanged;
256 
258  boost::signalslib::signal<void (float metersPerSecond)> signal_windSpeedChanged;
259 
261  boost::signalslib::signal<void (float radians) > signal_windDirectionChanged;
262 
264  boost::signalslib::signal<void (float)> signal_ambientLightValueChanged;
265 
268  boost::signalslib::signal<void (bool)> signal_isDayChanged;
269 
273  boost::signalslib::signal<void (const DtVector& locStart, const DtVector& locEnd)> signal_lightningStrikeOccurred;
274 
275  protected:
277  };
278 }
279 
280 
boost::signalslib::signal< void(DtCloudLayerId layerId)> signal_addCloudLayer
Signals for changed values.
Definition: DtSkyObject.h:215
boost::signalslib::signal< void(float distance)> signal_visibleDistanceChanged
Signal raised when the visible distance changes.
Definition: DtSkyObject.h:235
static const float theMaximumVisibilityDistance
Maximum Visibility Distance. The default is 20 km.
Definition: DtSkyObject.h:99
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
boost::signalslib::signal< void(bool enabled)> signal_precipitationEnabledChanged
Signal raised when precipitation is enabled or disabled.
Definition: DtSkyObject.h:238
static const double theMaximumPrecipitationRate
Maximum precipitation rate in mm/hr. This value will be clamped to the value specified by rain-max-in...
Definition: DtSkyObject.h:97
boost::signalslib::signal< void()> signal_removeCloudLayers
Signal raised when all the cloud decks are removed.
Definition: DtSkyObject.h:226
boost::signalslib::signal< void(DtCloudLayerId layerId, bool enabled) > signal_cloudLayerEnabledChanged
Signal raised when a cloud layer is enabled/disabled.
Definition: DtSkyObject.h:220
The base sky object.
Definition: DtSkyObject.h:29
Contains makVrv::DtCloudCoverManager class.
#define DtCloudLayerIdUndefined
Definition: DtCloudLayer.h:29
static const float theDefaultSkyShadowsLightLevelNoHdr
Value for shadow visibility without HDR.
Definition: DtSkyObject.h:88
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
double myDensity
Definition: DtSkyObject.h:65
boost::signalslib::signal< void(const DtVector &color)> signal_fogColorChanged
Signal raised when the color of the fog layer changes.
Definition: DtSkyObject.h:255
DtCloudLayerId myLayerId
Definition: DtSkyObject.h:59
Definition: DtSkyObject.h:36
boost::signalslib::signal< void(float turbidity)> signal_airTurbidityChanged
Signal raised when the air turbidity changes.
Definition: DtSkyObject.h:229
boost::signalslib::signal< void(const DtVector &locStart, const DtVector &locEnd)> signal_lightningStrikeOccurred
Signal raised when a lightning strike occurred locStart The starting location of the strike locEnd ...
Definition: DtSkyObject.h:273
boost::signalslib::signal< void(DtCloudLayerId layerId, double xCoord, double yCoord)> signal_cloudLayerPositionChanged
Signal raised when a cloud layer moves to a new position.
Definition: DtSkyObject.h:249
DtVector myLocation
Definition: DtSkyObject.h:61
boost::signalslib::signal< void(DtCloudLayerId layerId)> signal_modifyCloudLayer
Signals for changed values.
Definition: DtSkyObject.h:216
Contains makVrv::DtVirtualBaseClass class.
boost::signalslib::signal< void(float temperature)> signal_ambientAirTemperatureChanged
Signal raised when the visible distance changes.
Definition: DtSkyObject.h:232
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
boost::signalslib::signal< void(int type)> signal_precipitationTypeChanged
Signal raised when the precipitation type changes.
Definition: DtSkyObject.h:242
bool myRelative
Definition: DtSkyObject.h:67
DtSkyObjectSignaler & mySignaler
Definition: DtSkyObject.h:199
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool myAltitudeIsHAT
Definition: DtSkyObject.h:70
boost::signalslib::signal< void(float metersPerSecond)> signal_windSpeedChanged
Signal raised when the wind speed changes.
Definition: DtSkyObject.h:258
boost::signalslib::signal< void(float intensity)> signal_precipitationIntensityChanged
Signal raised when the precipitation intensity changes.
Definition: DtSkyObject.h:245
float myCornerRadius
Definition: DtSkyObject.h:63
static const float theDefaultFogVisibilityLevel
Value for fog visibility - standard definition (1000 m.)
Definition: DtSkyObject.h:92
boost::signalslib::signal< void(float radians) > signal_windDirectionChanged
Signal raised the wind direction changes.
Definition: DtSkyObject.h:261
boost::signalslib::signal< void(DtCloudLayerId layerId) > signal_removeCloudLayer
Signal raised when a cloud deck is removed.
Definition: DtSkyObject.h:223
DtVector myBounds
Definition: DtSkyObject.h:64
boost::signalslib::signal< void(float)> signal_ambientLightValueChanged
Signal raised when the ambient light value changes.
Definition: DtSkyObject.h:264
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
Contains makVrv::DtUniqueID type.
boost::signalslib::signal< void(bool)> signal_isDayChanged
Signal raised when the ambient light value is above the DefaultDayLightLevel.
Definition: DtSkyObject.h:268
PrecipitationType
Precipitation types.
Definition: DtSkyObject.h:74
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
float myOrientation
Definition: DtSkyObject.h:62
bool myEnabled
Definition: DtSkyObject.h:68
int myType
Definition: DtSkyObject.h:60
Definition: DtSkyObject.h:203
DtDe & myDe
Definition: DtSkyObject.h:200
static const float theDefaultDayLightLevel
Value for daylight visibility.
Definition: DtSkyObject.h:86
static const float theDefaultSkyShadowsLightLevelHdr
Value for shadow visibility with HDR.
Definition: DtSkyObject.h:90
boost::signalslib::signal< void(float meters)> signal_fogHeightChanged
Signal raised when the ceiling height of the fog layer changes.
Definition: DtSkyObject.h:252
float myAmbientLightValue
Definition: DtSkyObject.h:198
bool myFadeAtAltitude
Definition: DtSkyObject.h:69
bool myInfinite
Definition: DtSkyObject.h:66
Contains DLL export macros.

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)