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) 2025 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 
163  virtual void setLocalZoneOrigin(DtUniqueID areaId, const DtVector& origin);
164 
172  virtual void setLocalZoneShape(DtUniqueID areaId, double width, double length,
173  double height, double cornerRadius);
174 
177  virtual void computeTopoWidthAndLength(const DtVector& minBoundsLocation,
178  const DtVector& maxBoundsLocation, double& width, double& length) const;
179 
181  virtual DtLocalLayeredEnvironmentData* findLocalWeatherArea(DtUniqueID areaId);
182 
184  virtual const DtLocalLayeredEnvironmentData* findLocalWeatherArea(DtUniqueID areaId) const;
185 
187  virtual DtGlobalLayeredEnvironmentData* globalWeatherArea();
188 
190  virtual const DtGlobalLayeredEnvironmentData* globalWeatherArea() const;
191 
194  virtual void setBaseMSLAltitude(DtUniqueID areaId, DtUniqueID layerId, float mslAltitudeInMeters);
195  virtual float baseMSLAltitude(DtUniqueID areaId, DtUniqueID layerId) const;
197 
200  virtual void setWindSpeed(DtUniqueID areaId, DtUniqueID layerId, float speedInMetersPerSecond);
201  virtual float windSpeed(DtUniqueID areaId, DtUniqueID layerId) const;
203 
207  virtual void setWindDirection(DtUniqueID areaId, DtUniqueID layerId, float offsetInRadiansFromTrueNorth);
208  virtual float windDirection(DtUniqueID areaId, DtUniqueID layerId) const;
210 
213  virtual void setVisibilityDistance(DtUniqueID areaId, DtUniqueID layerId, float visibilityInMeters);
214  virtual float visibilityDistance(DtUniqueID areaId, DtUniqueID layerId) const;
216 
219  virtual void setObscurant(DtUniqueID areaId, DtUniqueID layerId, makArchives::VisibilityObscurant obscurantEnumerationValue);
220  virtual makArchives::VisibilityObscurant obscurant(DtUniqueID areaId, DtUniqueID layerId) const;
222 
225  virtual void setCloudType(DtUniqueID areaId, DtUniqueID layerId, const std::string& cloudTypeEnumerationValue);
226  virtual std::string cloudType(DtUniqueID areaId, DtUniqueID layerId) const;
228 
232  virtual void setCloudDensity(DtUniqueID areaId, DtUniqueID layerId, float cloudDensity);
233  virtual float cloudDensity(DtUniqueID areaId, DtUniqueID layerId) const;
235 
239  virtual void setSkyCoverage(DtUniqueID areaId, DtUniqueID layerId, float skyCoverage);
240  virtual float skyCoverage(DtUniqueID areaId, DtUniqueID layerId) const;
242 
243 
246  virtual void setPrecipitationType(DtUniqueID areaId, DtEnvironment::PrecipitationType type);
247  virtual DtEnvironment::PrecipitationType precipitationType(DtUniqueID areaId) const;
249 
252  virtual void setPrecipitationIntensity(DtUniqueID areaId, float intensity);
253  virtual float precipitationIntensity(DtUniqueID areaId) const;
255 
260  virtual void setAirTemperature(DtUniqueID areaId, float temperature);
261  virtual float airTemperature(DtUniqueID areaId) const;
263 
268  virtual void setAirPressure(DtUniqueID areaId, float pressure);
269  virtual float airPressure(DtUniqueID areaId);
271 
274  virtual void setSeaLevelWaterConcentration(DtUniqueID areaId, float ppmv);
275  virtual float seaLevelWaterConcentration(DtUniqueID areaId) const;
277 
280  virtual void setLightningPresent(DtUniqueID areaId, bool present);
281  virtual bool lightningPresent(DtUniqueID areaId) const;
283 
286  virtual void setBlowingParticulateMatter(DtUniqueID areaId,
288  virtual DtEnvironment::BlowingParticulateMatterType blowingParticulateMatter(DtUniqueID areaId) const;
290 
293  virtual void setSnowMinimumElevation(DtUniqueID areaId, float elevation);
294  virtual float snowMinimumElevation(DtUniqueID areaId) const;
296 
299  virtual void setRoadSnowAccumulation(DtUniqueID areaId, float accumulation);
300  virtual float roadSnowAccumulation(DtUniqueID areaId) const;
302 
305  virtual void setGroundRainAccumulation(DtUniqueID areaId, float accumulation);
306  virtual float groundRainAccumulation(DtUniqueID areaId) const;
308 
311  virtual void setGroundSnowAccumulation(DtUniqueID areaId, float accumulation);
312  virtual float groundSnowAccumulation(DtUniqueID areaId) const;
314 
317  virtual void setFogColor(DtUniqueID areaId, float red, float green, float blue);
318  virtual void getFogColor(DtUniqueID areaId, float& red, float& green, float& blue) const;
320 
323  virtual void setFogHeight(DtUniqueID areaId, float height);
324  virtual float fogHeight(DtUniqueID areaId) const;
326 
329  virtual void setAirPressureAltitude(DtUniqueID areaId, float altitude);
330  virtual float airPressureAltitude(DtUniqueID areaId) const;
332 
334  virtual void setAirTemperatureAltitude(DtUniqueID areaId, float altitude);
335  virtual float airTemperatureAltitude(DtUniqueID areaId) const;
337 
338  //
339  // --- The following methods only apply to global environment data so no weather area id is provided
340  //
341 
344  virtual void setSwellState(DtUniqueID areaId, DtDouglasSwellState::Scale state);
345  virtual DtDouglasSwellState::Scale swellState(DtUniqueID areaId) const;
347 
350  virtual void setSwellStateDirection(DtUniqueID areaId, float value);
351  virtual float swellStateDirection(DtUniqueID areaId) const;
353 
356  virtual void setSeaState(DtUniqueID areaId, DtDouglasSeaState::Scale state);
357  virtual DtDouglasSeaState::Scale seaState(DtUniqueID areaId) const;
359 
362  virtual void setSeaStateDirection(DtUniqueID areaId, float value);
363  virtual float seaStateDirection(DtUniqueID areaId) const;
365 
369  virtual void setWindDrivenSeaStateEnabled(DtUniqueID areaId, bool value, bool force=false);
370  virtual bool windDrivenSeaStateEnabled(DtUniqueID areaId) const;
372 
375  virtual void setWindFetch(DtUniqueID areaId, float value);
376  virtual float windFetch(DtUniqueID areaId) const;
378 
381  virtual void setSeaChoppiness(DtUniqueID areaId, float value);
382  virtual float seaChoppiness(DtUniqueID areaId) const;
384 
387  virtual void setUnderwaterVisibility(DtUniqueID areaId, float depth, float distance);
388  virtual float underwaterVisibility(DtUniqueID areaId) const;
390 
393  virtual void setSurfaceTransparency(DtUniqueID areaId, float value);
394  virtual float surfaceTransparency(DtUniqueID areaId) const;
396 
399  virtual void setSurgeDepth(DtUniqueID areaId, float value);
400  virtual float surgeDepth(DtUniqueID areaId) const;
402 
407  virtual void setAmbientWaterTemperature(DtUniqueID areaId, float temperature);
408  virtual float ambientWaterTemperature(DtUniqueID areaId) const;
410 
413  virtual void setWaterCurrentSpeed(DtUniqueID areaId, float speed);
414  virtual float waterCurrentSpeed(DtUniqueID areaId) const;
416 
419  virtual void setWaterCurrentDirection(DtUniqueID areaId, float direction);
420  virtual float waterCurrentDirection(DtUniqueID areaId) const;
422 
425  virtual void setTidalOffset(DtUniqueID areaId, float meters);
426  virtual float tidalOffset(DtUniqueID areaId) const;
428 
431  virtual void setDateAndTimeOfDay(int year, int month, int day, int hour, int minutes, double seconds);
432  virtual void getDateAndTimeOfDay(int& year, int& month, int& day, int& hour, int& minutes, double& seconds);
434 
438  virtual void setUseGlobalTimeZone(bool, bool force=false);
439  virtual bool useGlobalTimeZone() const;
441 
444  virtual void setTimeOfDayAdvancementSpeed(float speed);
445  virtual float timeOfDayAdvancementSpeed() const;
447 
450  virtual void setThermoclinePermeability(DtUniqueID areaId, float depth, float permeability);
451  virtual float thermoclinePermeability(DtUniqueID areaId, float depth) const;
453 
454  public:
456  static DtEnvironmentStatusManager& instance(DtBaseConnection& conn);
457 
458  protected:
460  virtual DtLayeredEnvironmentDataBase* findWeatherAreaBase(DtUniqueID areaId);
461 
463  virtual const DtLayeredEnvironmentDataBase* findWeatherAreaBase(DtUniqueID areaId) const;
464 
465  protected:
467 
468  std::unordered_map<DtUniqueID, DtLocalLayeredEnvironmentData*> myLocalWeatherAreasMap;
469  std::unordered_map<DtUniqueID, DtLocalEnvironmentalsControllerObjectAgent*> myLocalWeatherAgentsMap;
470 
471  DtSceneEnvironmentalsControllerObjectAgent* myGlobalWeatherAgent;
473 
474  // While the local controller object will let us set thermocline info, the methods are no-ops; only
475  // global thermocline layers are supported. The key is a depth value
476  std::map<float, DtSubsurfaceRecord> myGlobalThermoclineMap;
477  };
478 }
std::map< float, DtSubsurfaceRecord > myGlobalThermoclineMap
Definition: DtEnvironmentStatusManager.h:476
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:30
DtGlobalLayeredEnvironmentData extends DtLayeredEnvironmentDataBase by overriding its data &#39;mutator&#39; ...
Definition: DtGlobalLayeredEnvironmentData.h:28
BlowingParticulateMatterType
Definition: DtEnvironmentRecord.h:22
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
Scale
Definition: DtDouglasSeaScale.h:33
Contains makVrv::DtVirtualBaseClass class.
DtBaseConnection & myConnection
Definition: DtEnvironmentStatusManager.h:466
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:468
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:469
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
float myVisibility
Definition: DtEnvironmentStatusManager.h:125
PrecipitationType
Definition: DtEnvironmentInterface.h:44
DtSceneEnvironmentalsControllerObjectAgent * myGlobalWeatherAgent
Definition: DtEnvironmentStatusManager.h:471
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:472
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 Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)