VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEnvironmentStatusManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
16 
17 #include <vrvCore/DtUniqueID.h>
18 #include <vrvCore/DtEnvironment.h>
19 
21 
23 
24 #include <unordered_map>
25 
26 namespace makArchives
27 {
28  enum class VisibilityObscurant : unsigned int;
29 }
30 
31 namespace makVrv
32 {
33  class DtBaseConnection;
34  class DtSceneEnvironmentalsControllerObjectAgent;
35  class DtLocalEnvironmentalsControllerObjectAgent;
36 
51  {
52  public:
53  // Often used as a 'default' value for DtUniqueIDs, it is assumed that the
54  // DtAgentManagerInterface::createNewUniqueId() will not return this value
55  static const DtUniqueID GlobalWeatherAreaId = (DtUniqueID)-1;
56 
57  protected:
64  {
65  public:
68  : myPermeability(-1.)
69  , myVisibility(-1.)
70  {
71  // Intentional No-op
72  }
73 
76  {
77  // Intentional No-op
78  }
79 
82  : myPermeability(orig.myPermeability)
83  , myVisibility(orig.myVisibility)
84  {
85  // Intentional No-op
86  }
87 
90  {
91  if (this != &rhs)
92  {
93  myPermeability = rhs.myPermeability;
94  myVisibility = rhs.myVisibility;
95  }
96  return *this;
97  }
98 
100  float permeability() const
101  {
102  return myPermeability;
103  }
104 
106  void setPermeability(float val)
107  {
108  myPermeability = val;
109  }
110 
112  float visibility() const
113  {
114  return myVisibility;
115  }
116 
118  void setVisibility(float val)
119  {
120  myVisibility = val;
121  }
122 
123  protected:
126  };
127 
128  public:
131 
133  DtEnvironmentStatusManager() = delete;
134 
136  virtual ~DtEnvironmentStatusManager();
137 
140 
142  DtEnvironmentStatusManager& operator=(const DtEnvironmentStatusManager&) = delete;
143 
144  public:
147  virtual void addWeatherArea(DtUniqueID areaId);
148 
151  virtual void removeWeatherArea(DtUniqueID areaId);
152 
154  virtual void addElevationalConfiguration(DtUniqueID areaId, DtUniqueID layerId);
155 
157  virtual void removeElevationalConfiguration(DtUniqueID areaId, DtUniqueID uniqueId);
158 
161  virtual void setLocalZoneOrigin(DtUniqueID areaId, const DtVector& origin);
162 
165  virtual void setLocalZoneShape(DtUniqueID areaId, float width, float length, float height, float cornerRadius);
166 
168  virtual DtLocalLayeredEnvironmentData* findLocalWeatherArea(DtUniqueID areaId);
169 
171  virtual const DtLocalLayeredEnvironmentData* findLocalWeatherArea(DtUniqueID areaId) const;
172 
174  virtual DtGlobalLayeredEnvironmentData* globalWeatherArea();
175 
177  virtual const DtGlobalLayeredEnvironmentData* globalWeatherArea() const;
178 
181  virtual void setBaseMSLAltitude(DtUniqueID areaId, DtUniqueID layerId, float mslAltitudeInMeters);
182  virtual float baseMSLAltitude(DtUniqueID areaId, DtUniqueID layerId) const;
184 
187  virtual void setWindSpeed(DtUniqueID areaId, DtUniqueID layerId, float speedInMetersPerSecond);
188  virtual float windSpeed(DtUniqueID areaId, DtUniqueID layerId) const;
190 
194  virtual void setWindDirection(DtUniqueID areaId, DtUniqueID layerId, float offsetInRadiansFromTrueNorth);
195  virtual float windDirection(DtUniqueID areaId, DtUniqueID layerId) const;
197 
200  virtual void setVisibilityDistance(DtUniqueID areaId, DtUniqueID layerId, float visibilityInMeters);
201  virtual float visibilityDistance(DtUniqueID areaId, DtUniqueID layerId) const;
203 
206  virtual void setObscurant(DtUniqueID areaId, DtUniqueID layerId, makArchives::VisibilityObscurant obscurantEnumerationValue);
207  virtual makArchives::VisibilityObscurant obscurant(DtUniqueID areaId, DtUniqueID layerId) const;
209 
212  virtual void setCloudType(DtUniqueID areaId, DtUniqueID layerId, const std::string& cloudTypeEnumerationValue);
213  virtual std::string cloudType(DtUniqueID areaId, DtUniqueID layerId) const;
215 
219  virtual void setCloudDensity(DtUniqueID areaId, DtUniqueID layerId, float cloudDensity);
220  virtual float cloudDensity(DtUniqueID areaId, DtUniqueID layerId) const;
222 
226  virtual void setSkyCoverage(DtUniqueID areaId, DtUniqueID layerId, float skyCoverage);
227  virtual float skyCoverage(DtUniqueID areaId, DtUniqueID layerId) const;
229 
230 
233  virtual void setPrecipitationType(DtUniqueID areaId, DtEnvironment::PrecipitationType type);
234  virtual DtEnvironment::PrecipitationType precipitationType(DtUniqueID areaId) const;
236 
239  virtual void setPrecipitationIntensity(DtUniqueID areaId, float intensity);
240  virtual float precipitationIntensity(DtUniqueID areaId) const;
242 
247  virtual void setAirTemperature(DtUniqueID areaId, float temperature);
248  virtual float airTemperature(DtUniqueID areaId) const;
250 
255  virtual void setAirPressure(DtUniqueID areaId, float pressure);
256  virtual float airPressure(DtUniqueID areaId);
258 
261  virtual void setSeaLevelWaterConcentration(DtUniqueID areaId, float ppmv);
262  virtual float seaLevelWaterConcentration(DtUniqueID areaId) const;
264 
267  virtual void setLightningPresent(DtUniqueID areaId, bool present);
268  virtual bool lightningPresent(DtUniqueID areaId) const;
270 
273  virtual void setSnowMinimumElevation(DtUniqueID areaId, float elevation);
274  virtual float snowMinimumElevation(DtUniqueID areaId) const;
276 
279  virtual void setRoadSnowAccumulation(DtUniqueID areaId, float accumulation);
280  virtual float roadSnowAccumulation(DtUniqueID areaId) const;
282 
285  virtual void setGroundRainAccumulation(DtUniqueID areaId, float accumulation);
286  virtual float groundRainAccumulation(DtUniqueID areaId) const;
288 
291  virtual void setGroundSnowAccumulation(DtUniqueID areaId, float accumulation);
292  virtual float groundSnowAccumulation(DtUniqueID areaId) const;
294 
297  virtual void setFogColor(DtUniqueID areaId, float red, float green, float blue);
298  virtual void getFogColor(DtUniqueID areaId, float& red, float& green, float& blue) const;
300 
303  virtual void setFogHeight(DtUniqueID areaId, float height);
304  virtual float fogHeight(DtUniqueID areaId) const;
306 
309  virtual void setAirPressureAltitude(DtUniqueID areaId, float altitude);
310  virtual float airPressureAltitude(DtUniqueID areaId) const;
312 
314  virtual void setAirTemperatureAltitude(DtUniqueID areaId, float altitude);
315  virtual float airTemperatureAltitude(DtUniqueID areaId) const;
317 
318  //
319  // --- The following methods only apply to global environment data so no weather area id is provided
320  //
321 
324  virtual void setSwellState(DtDouglasSwellState::Scale state);
325  virtual DtDouglasSwellState::Scale swellState() const;
327 
330  virtual void setSwellStateDirection(float value);
331  virtual float swellStateDirection() const;
333 
336  virtual void setSeaState(DtDouglasSeaState::Scale state);
337  virtual DtDouglasSeaState::Scale seaState() const;
339 
342  virtual void setSeaStateDirection(float value);
343  virtual float seaStateDirection() const;
345 
349  virtual void setWindDrivenSeaStateEnabled(bool value, bool force=false);
350  virtual bool windDrivenSeaStateEnabled() const;
352 
355  virtual void setWindFetch(float value);
356  virtual float windFetch() const;
358 
361  virtual void setSeaChoppiness(float value);
362  virtual float seaChoppiness() const;
364 
367  virtual void setUnderwaterVisibility(float depth, float distance);
368  virtual float underwaterVisibility() const;
370 
373  virtual void setSurfaceTransparency(float value);
374  virtual float surfaceTransparency() const;
376 
379  virtual void setSurgeDepth(float value);
380  virtual float surgeDepth() const;
382 
387  virtual void setAmbientWaterTemperature(float temperature);
388  virtual float ambientWaterTemperature() const;
390 
393  virtual void setWaterCurrentSpeed(float speed);
394  virtual float waterCurrentSpeed() const;
396 
399  virtual void setWaterCurrentDirection(float direction);
400  virtual float waterCurrentDirection() const;
402 
405  virtual void setTidalOffset(float meters);
406  virtual float tidalOffset() const;
408 
411  virtual void setDateAndTimeOfDay(int year, int month, int day, int hour, int minutes, double seconds);
412  virtual void getDateAndTimeOfDay(int& year, int& month, int& day, int& hour, int& minutes, double& seconds);
414 
418  virtual void setUseGlobalTimeZone(bool, bool force=false);
419  virtual bool useGlobalTimeZone() const;
421 
424  virtual void setTimeOfDayAdvancementSpeed(float speed);
425  virtual float timeOfDayAdvancementSpeed() const;
427 
430  virtual void setThermoclinePermeability(float depth, float permeability);
431  virtual float thermoclinePermeability(float depth) const;
433 
434  public:
436  static DtEnvironmentStatusManager& instance(DtBaseConnection& conn);
437 
438  protected:
440  virtual DtLayeredEnvironmentDataBase* findWeatherAreaBase(DtUniqueID areaId);
441 
443  virtual const DtLayeredEnvironmentDataBase* findWeatherAreaBase(DtUniqueID areaId) const;
444 
445  protected:
447 
448  std::unordered_map<DtUniqueID, DtLocalLayeredEnvironmentData*> myLocalWeatherAreasMap;
449  std::unordered_map<DtUniqueID, DtLocalEnvironmentalsControllerObjectAgent*> myLocalWeatherAgentsMap;
450 
451  DtSceneEnvironmentalsControllerObjectAgent* myGlobalWeatherAgent;
453 
454  // While the local controller object will let us set thermocline info, the methods are no-ops; only
455  // global thermocline layers are supported. The key is a depth value
456  std::map<float, DtSubsurfaceRecord> myGlobalThermoclineMap;
457  };
458 }
std::map< float, DtSubsurfaceRecord > myGlobalThermoclineMap
Definition: DtEnvironmentStatusManager.h:456
DtLayeredEnvironmentDataBase is a container class that can be used to maintain the global or a local ...
Definition: DtLayeredEnvironmentDataBase.h:35
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
The declaration of the makVrv::DtEnvironment class.
DtSubsurfaceRecord(const DtSubsurfaceRecord &orig)
Copy CTOR.
Definition: DtEnvironmentStatusManager.h:81
voidpf uLong int origin
Definition: ioapi.h:42
DtLocalLayeredEnvironmentData extends DtLayeredEnvironmentDataBase by overriding its data &#39;mutator&#39; m...
Definition: DtLocalLayeredEnvironmentData.h:30
Contains makVrv::DtGlobalLayeredEnvironmentData class.
DtSubsurfaceRecord & operator=(const DtSubsurfaceRecord &rhs)
Assigment.
Definition: DtEnvironmentStatusManager.h:89
void setPermeability(float val)
Set the permeability value for this subsurface layer.
Definition: DtEnvironmentStatusManager.h:106
float permeability() const
Get the permeability value for this subsurface layer.
Definition: DtEnvironmentStatusManager.h:100
~DtSubsurfaceRecord()
DTOR.
Definition: DtEnvironmentStatusManager.h:75
VisibilityObscurant
Definition: DtEnvironmentRecord.h:21
DtGlobalLayeredEnvironmentData extends DtLayeredEnvironmentDataBase by overriding its data &#39;mutator&#39; ...
Definition: DtGlobalLayeredEnvironmentData.h:28
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
Scale
Definition: DtDouglasSeaScale.h:33
Contains makVrv::DtVirtualBaseClass class.
DtBaseConnection & myConnection
Definition: DtEnvironmentStatusManager.h:446
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...
std::unordered_map< DtUniqueID, DtLocalLayeredEnvironmentData * > myLocalWeatherAreasMap
Definition: DtEnvironmentStatusManager.h:448
The declaration of the makArchives::DtEnvironmentRecord class.
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Scale
Definition: DtDouglasSeaScale.h:114
std::unordered_map< DtUniqueID, DtLocalEnvironmentalsControllerObjectAgent * > myLocalWeatherAgentsMap
Definition: DtEnvironmentStatusManager.h:449
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
float myVisibility
Definition: DtEnvironmentStatusManager.h:125
PrecipitationType
Definition: DtEnvironmentInterface.h:44
DtSceneEnvironmentalsControllerObjectAgent * myGlobalWeatherAgent
Definition: DtEnvironmentStatusManager.h:451
DT_DLL_VRVCORE double length(const makVrv::DtCoordinateSystem &, const std::vector< DtVector > &vertices)
Returns the total distance of a segmented line defined by the provided vector of vertices. Coordinates are in local database coordinates. The coordinate system is used to convert between the local database coordinates and geocentric. All distance is in 2D – the Z value is ignored.
float visibility() const
Get the visibility value for this subsurface layer.
Definition: DtEnvironmentStatusManager.h:112
DtGlobalLayeredEnvironmentData * myGlobalWeatherArea
Definition: DtEnvironmentStatusManager.h:452
float myPermeability
Definition: DtEnvironmentStatusManager.h:124
Contains makVrv::DtUniqueID type.
Contains makVrv::DtLocalLayeredEnvironmentData class.
void setVisibility(float val)
Set the visibility value for this subsurface layer.
Definition: DtEnvironmentStatusManager.h:118
DtSubsurfaceRecord is a local class used to maintain the information provided by the METOC DtSubsurfa...
Definition: DtEnvironmentStatusManager.h:63
DtEnvironmentStatusManager manages all of the environment-related data (including date and time) that...
Definition: DtEnvironmentStatusManager.h:50
DtSubsurfaceRecord()
CTOR.
Definition: DtEnvironmentStatusManager.h:67
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)