VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
environmentalStateManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <vlutil/vlString.h>
18 #include <matrix/vlVector.h>
19 #include <vrfutil/rwUUID.h>
22 
23 #include <set>
24 
25 class DtSimManager;
26 class DtVrfObject;
27 class DtObjectType;
32 class DtChord;
33 class DtSimMessage;
34 
42 {
43 private:
45 
48  orig);
51 
52 public:
53 
56 
58  virtual ~DtEnvironmentalStateManager();
59 
60  virtual bool init();
61 
62  virtual void tick();
63 
64  virtual DtSimManager* simManager();
65 
68  virtual bool globalEnvironmentSimulatedLocally() const;
69 
74  virtual bool startEnvironmentSimulationLocally();
75 
77  virtual DtSharedVrfObjectReference weatherObjectFor(const DtUUID& = DtUUID::nullUUID(),
78  bool* isGlobal = 0) const;
79 
82  virtual DtSharedVrfObjectReference weatherObjectFor(const DtVector& localPosition,
83  bool* isGlobal = 0) const;
84 
89  virtual std::vector<DtSharedVrfObjectReference> weatherObjectsFor(const DtChord& localChord) const;
90 
92  virtual DtSharedVrfObjectReference weatherObjectFor(const DtChord& localChord,
93  bool* isGlobal = 0) const;
94 
96  virtual DtSharedVrfObjectReference cloudLayerFor(const DtUUID&) const;
97 
99  virtual DtSharedVrfObjectReference cloudLayerFor(const DtVector& localPosition) const;
100 
102  virtual DtSharedVrfObjectReference cloudLayerFor(const DtChord& localChord) const;
103 
105  virtual std::vector<DtSharedVrfObjectReference> cloudLayersFor(const DtChord& localChord) const;
106 
108  virtual std::vector<DtSharedVrfObjectReference> cloudLayers() const;
110  virtual void setCloudType(CloudLayerCloudType, const DtUUID& cloudLayer);
111  virtual CloudLayerCloudType cloudType(const DtUUID& cloudLayer) const;
112  virtual CloudLayerCloudType cloudType(const DtVector& cloudLayer) const;
113 
114  virtual void setCloudAltitude(double, const DtUUID& cloudLayer);
115  virtual double cloudAltitude(const DtUUID& cloudLayer) const;
116  virtual double cloudAltitude(const DtVector& cloudLayer) const;
117 
118  virtual void setCloudThickness(double, const DtUUID& cloudLayer);
119  virtual double cloudThickness(const DtUUID& cloudLayer) const;
120  virtual double cloudThickness(const DtVector& cloudLayer) const;
121 
122  virtual void setCornerRadius(double, const DtUUID& cloudLayer);
123  virtual double cornerRadius(const DtUUID& cloudLayer) const;
124  virtual double cornerRadius(const DtVector& cloudLayer) const;
125 
126  virtual void setCloudDensity(double, const DtUUID& cloudLayer);
127  virtual double cloudDensity(const DtUUID& cloudLayer) const;
128  virtual double cloudDensity(const DtVector& cloudLayer) const;
129 
130  virtual void setCloudBox(const DtVector& center, double width, double length, const DtUUID& cloudLayer);
131  virtual void cloudBox(const DtUUID& cloudLayer, DtVector& center, double& width, double& length) const;
132  virtual void cloudBox(const DtVector& cloudLayer, DtVector& center, double& width, double& length) const;
133 
136  virtual void setCloudLayerState(const DtChangeCloudLayerCommand& command);
137 
139 
142 
143  virtual void setAirTurbidity(double factor, const DtUUID& weatherArea = DtUUID::nullUUID());
144  virtual double airTurbidity(const DtUUID& weatherArea) const;
145  virtual double airTurbidity(const DtVector&) const;
147 
149 
150  virtual void setAmbientAirTemperature(double temp, const DtUUID& weatherArea = DtUUID::nullUUID());
151  virtual double ambientAirTemperature(const DtUUID& weatherArea) const;
152  virtual double ambientAirTemperature(const DtVector&) const;
153  virtual double ambientAirTemperature(const DtVector&, double defaultMslTemperature) const;
155 
164  virtual double temperatureAtAltitude(double altitude,
165  const double defaultMslTemperature = 15.04) const;
167 
178  virtual double pressureAtAltitude(
179  double altitude,
180  const double temperatureAtAltitudeInCelcius,
181  const double defaultMslPressure = 0.7600) const;
183 
185 
186  virtual void setCloudState(DtVrfWeatherCloudState current, const DtUUID& weatherArea = DtUUID::nullUUID());
187  virtual DtVrfWeatherCloudState cloudState(const DtUUID& weatherArea) const;
188  virtual DtVrfWeatherCloudState cloudState(const DtVector&) const;
190 
192 
193  virtual void setPrecipitationIntensity(double factor, const DtUUID& weatherArea = DtUUID::nullUUID());
194  virtual double precipitationIntensity(const DtUUID& weatherArea) const;
195  virtual double precipitationIntensity(const DtVector&) const;
197 
200 
201  virtual double precipitationIntensity(const DtChord&) const;
203 
205 
206  virtual void setPrecipitationType(DtVrfWeatherPrecipitationType current, const DtUUID& weatherArea = DtUUID::nullUUID());
207  virtual DtVrfWeatherPrecipitationType precipitationType(const DtUUID& weatherArea) const;
208  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector&) const;
210 
212 
213  virtual void setWindSpeed(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
214  virtual double windSpeed(const DtUUID& weatherArea) const;
215  virtual double windSpeed(const DtVector&) const;
217 
219 
220  virtual void setWindDirection(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
221  virtual double windDirection(const DtUUID& weatherArea) const;
222  virtual double windDirection(const DtVector&) const;
224 
226 
227  virtual void setVisibility(double value, const DtUUID& weatherArea = DtUUID::nullUUID());
228  virtual double visibility(const DtUUID& weatherArea) const;
229  virtual double visibility(const DtVector&) const;
230 
234  virtual double visibility(const DtChord&) const;
236 
239  virtual double illumination(const DtVector& localPosition) const;
240 
244  virtual double expectedIllumination(const DtVector& localPosition, double dateAndTime) const;
245 
248  virtual void setWeatherState(const DtChangeWeatherCommand& command);
249 
252  virtual void setUseDayNightIlluminationModel(const DtChangeTimeOfDayCommand& command);
253  virtual void setDateAndTimeOfDay(double secondsPastMidnight);
254  virtual void setDateAndTimeOfDay(const DtChangeTimeOfDayCommand& command);
255  virtual double timeOfDay() const;
256  virtual double dateAndTimeOfDay() const;
257 
259  virtual void setTimeOfDayAdvancementSpeed(double speed);
260  virtual void setTimeOfDayAdvancementSpeed(const DtChangeTimeOfDayCommand& command);
261  virtual double timeOfDayAdvancementSpeed() const;
262 
264 
265  virtual void setPriority(int p, const DtUUID& weatherArea = DtUUID::nullUUID());
266  virtual int priority(const DtUUID& weatherArea) const;
267  virtual int priority(const DtVector&) const;
269 
271 
272  virtual void setUnderwaterVisibility(double underwaterVisibility, const DtUUID& weatherArea = DtUUID::nullUUID());
273  virtual double underwaterVisibility(const DtUUID& weatherArea) const;
274  virtual double underwaterVisibility(const DtVector&) const;
276 
278 
279  virtual void setSurfaceTransparency(double transparency, const DtUUID& weatherArea = DtUUID::nullUUID());
280  virtual double surfaceTransparency(const DtUUID& weatherArea) const;
281  virtual double surfaceTransparency(const DtVector&) const;
283 
285 
286  virtual void setWaterCurrentSpeed(double waterCurrentSpeed, const DtUUID& weatherArea = DtUUID::nullUUID());
287  virtual double waterCurrentSpeed(const DtUUID& weatherArea) const;
288  virtual double waterCurrentSpeed(const DtVector&) const;
290 
292 
293  virtual void setWaterCurrentDirection(double waterCurrentDirection, const DtUUID& weatherArea = DtUUID::nullUUID());
294  virtual double waterCurrentDirection(const DtUUID& weatherArea) const;
295  virtual double waterCurrentDirection(const DtVector&) const;
297 
299 
300  virtual void setAmbientWaterTemperature(double waterTemperature, const DtUUID& weatherArea = DtUUID::nullUUID());
301  virtual double ambientWaterTemperature(const DtUUID& weatherArea) const;
302  virtual double ambientWaterTemperature(const DtVector&) const;
304 
306 
307  virtual void setTidalOffset(double tidalOffset, const DtUUID& weatherArea = DtUUID::nullUUID());
308  virtual double tidalOffset(const DtUUID& weatherArea) const;
309  virtual double tidalOffset(const DtVector&) const;
311 
315  virtual void setUseDayNightIlluminationModel(bool);
316  virtual bool useDayNightIlluminationModel() const;
318 
321 
322  virtual void setTidalDirection(bool tidalDirection, const DtUUID& weatherArea = DtUUID::nullUUID());
323  virtual bool tidalDirection(const DtUUID& weatherArea) const;
324  virtual bool tidalDirection(const DtVector&) const;
326 
328 
329  virtual void setSwellState(unsigned int state, const DtUUID& weatherArea = DtUUID::nullUUID());
330  virtual unsigned int swellState(const DtUUID& weatherArea) const;
331  virtual unsigned int swellState(const DtVector&) const;
333 
335 
336  virtual void setSwellStateDirection(double direction, const DtUUID& weatherArea = DtUUID::nullUUID());
337  virtual double swellStateDirection(const DtUUID& weatherArea) const;
338  virtual double swellStateDirection(const DtVector&) const;
340 
342 
343  virtual void setSeaState(unsigned int state, const DtUUID& weatherArea = DtUUID::nullUUID());
344  virtual unsigned int seaState(const DtUUID& weatherArea) const;
345  virtual unsigned int seaState(const DtVector&) const;
347 
349 
350  virtual void setSeaStateDirection(double direction, const DtUUID& weatherArea = DtUUID::nullUUID());
351  virtual double seaStateDirection(const DtUUID& weatherArea) const;
352  virtual double seaStateDirection(const DtVector&) const;
354 
356 
357  virtual void setWindDrivenSeaStateEnabled(bool b, const DtUUID& weatherArea = DtUUID::nullUUID());
358  virtual bool windDrivenSeaStateEnabled(const DtUUID& weatherArea) const;
359  virtual bool windDrivenSeaStateEnabled(const DtVector&) const;
361 
363 
364  virtual void setChoppiness(double choppiness, const DtUUID& weatherArea = DtUUID::nullUUID());
365  virtual double choppiness(const DtUUID& weatherArea) const;
366  virtual double choppiness(const DtVector&) const;
368 
370 
371  virtual void setSurgeDepth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
372  virtual double surgeDepth(const DtUUID& weatherArea) const;
373  virtual double surgeDepth(const DtVector&) const;
375 
377 
378  virtual void setFogHeight(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
379  virtual double fogHeight(const DtUUID& weatherArea) const;
380  virtual double fogHeight(const DtVector&) const;
382 
384 
385  virtual void setFogColor(const DtVector& color, const DtUUID& weatherArea = DtUUID::nullUUID());
386  virtual DtVector fogColor(const DtUUID& weatherArea) const;
387  virtual DtVector fogColor(const DtVector&) const;
389 
391 
392  virtual void setSnowAccumulation(double snow, const DtUUID& weatherArea = DtUUID::nullUUID());
393  virtual double snowAccumulation(const DtUUID& weatherArea) const;
394  virtual double snowAccumulation(const DtVector&) const;
396 
398 
399  virtual void setSnowMinimumAltitude(double snow, const DtUUID& weatherArea = DtUUID::nullUUID());
400  virtual double snowMinimumAltitude(const DtUUID& weatherArea) const;
401  virtual double snowMinimumAltitude(const DtVector&) const;
403 
405 
406  virtual void setSnowRoadAccumulation(double snow, const DtUUID& weatherArea = DtUUID::nullUUID());
407  virtual double snowRoadAccumulation(const DtUUID& weatherArea) const;
408  virtual double snowRoadAccumulation(const DtVector&) const;
410 
412 
413  virtual void setRainAccumulation(double rain, const DtUUID& weatherArea = DtUUID::nullUUID());
414  virtual double rainAccumulation(const DtUUID& weatherArea) const;
415  virtual double rainAccumulation(const DtVector&) const;
417 
420  virtual DtObjectType globalEnvironmentObjectType() const;
421 
424 
425  virtual void setThermoclineLayer1Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
426  virtual double thermoclineLayer1Depth(const DtUUID& weatherArea) const;
427  virtual double thermoclineLayer1Depth(const DtVector&) const;
428  virtual void setThermoclineLayer1Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
429  virtual double thermoclineLayer1Permeability(const DtUUID& weatherArea) const;
430  virtual double thermoclineLayer1Permeability(const DtVector&) const;
431  virtual void setThermoclineLayer2Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
432  virtual double thermoclineLayer2Depth(const DtUUID& weatherArea) const;
433  virtual double thermoclineLayer2Depth(const DtVector&) const;
434  virtual void setThermoclineLayer2Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
435  virtual double thermoclineLayer2Permeability(const DtUUID& weatherArea) const;
436  virtual double thermoclineLayer2Permeability(const DtVector&) const;
437  virtual void setThermoclineLayer3Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
438  virtual double thermoclineLayer3Depth(const DtUUID& weatherArea) const;
439  virtual double thermoclineLayer3Depth(const DtVector&) const;
440  virtual void setThermoclineLayer3Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
441  virtual double thermoclineLayer3Permeability(const DtUUID& weatherArea) const;
442  virtual double thermoclineLayer3Permeability(const DtVector&) const;
443  virtual void setThermoclineLayer4Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
444  virtual double thermoclineLayer4Depth(const DtUUID& weatherArea) const;
445  virtual double thermoclineLayer4Depth(const DtVector&) const;
446  virtual void setThermoclineLayer4Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
447  virtual double thermoclineLayer4Permeability(const DtUUID& weatherArea) const;
448  virtual double thermoclineLayer4Permeability(const DtVector&) const;
449  virtual void setThermoclineLayer5Depth(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
450  virtual double thermoclineLayer5Depth(const DtUUID& weatherArea) const;
451  virtual double thermoclineLayer5Depth(const DtVector&) const;
452  virtual void setThermoclineLayer5Permeability(double depth, const DtUUID& weatherArea = DtUUID::nullUUID());
453  virtual double thermoclineLayer5Permeability(const DtUUID& weatherArea) const;
454  virtual double thermoclineLayer5Permeability(const DtVector&) const;
456 
459 
462  virtual DtString deepWaterSoilName() const;
463  virtual void setDeepWaterSoilName(const DtString&);
465 
468  virtual DtString shallowWaterSoilName() const;
469  virtual void setShallowWaterSoilName(const DtString&);
471 
474  virtual DtString waterySoilName() const;
475  virtual void setWaterySoilName(const DtString&);
477 
480  virtual DtString drySoilName() const;
481  virtual void setDrySoilName(const DtString&);
483 
486  virtual DtString roadSoilName() const;
487  virtual void setRoadSoilName(const DtString&);
489 
492  virtual DtString snowSoilName() const;
493  virtual void setSnowSoilName(const DtString&);
495 
498  virtual DtString iceSoilName() const;
499  virtual void setIceSoilName(const DtString&);
501 
504  virtual double deepSnowDepth() const;
505  virtual void setDeepSnowDepth(const double);
507 
510  virtual double saturationWaterDepth() const;
511  virtual void setSaturationWaterDepth(const double);
513 
516  virtual double waterSlideDepth() const;
517  virtual void setWaterSlideDepth(const double);
519 
522  virtual double waterSlideFactor() const;
523  virtual void setWaterSlideFactor(const double);
525 
528  virtual double hardFreezeTemperature() const;
529  virtual void setHardFreezeTemperature(const double);
531 
548  virtual void computeSoilWeatherMobilityModifiers(
549  const DtVector& location, const DtString& soilType,
550  double& snowEffectFraction,
551  DtString& alternateSoil, double& alternateSoilFraction,
552  double& tractionModifier) const;
553 
555 
559  virtual void createGlobalEnvironmentObject();
560 
561 protected:
562  static void objectAddedCallback(const DtVrfObject* object, void* usr);
563  virtual void processObjectAdded(const DtVrfObject* object);
564 
565  static void objectRemovedCallback(const DtVrfObject* object, void* usr);
566  virtual void processObjectRemoved(const DtVrfObject* object);
567 
569  virtual DtEnvironmentalStateSetter* createLocalEnvironmentalStateSetter();
571  virtual DtEnvironmentalStateSetter* createRemoteEnvironmentalStateSetter();
572 
573  static void changeWeatherPrioritiesCallback(DtSimMessage* msg, void* usr);
574  virtual void processChangeWeatherPriorities(DtSimMessage* msg);
575 
576  static void requestWeatherAtLocationCallback(DtSimMessage* msg, void* usr);
577  virtual void processRequestWeatherAtLocation(DtSimMessage* msg);
578 
579  static void physicalWorldParametersChangedCallback(void* usr);
580  virtual void initializeIlluminationObjectsList();
583  virtual void initializeSoilCharacteristics();
584 
585  virtual const DtIlluminationObjectParameters& findBestMatch(const DtObjectType& objtype) const;
586 
587 protected:
589 
593 
596 
598 
602 
604 
605  std::map<DtObjectType, DtIlluminationObjectParameters> myIlluminationObjectTypes;
606 
609 
612 
615 
618 
621 
624 
627 
630 
634 
637 
640 
644 
645 };
646 
647 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:18
DtString myIceSoilName
Name of &quot;soil&quot; that is ice.
Definition: environmentalStateManager.h:626
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtReal myWaterSlideFactor
Fraction [0-1] of traction retained on hard surface with water on it.
Definition: environmentalStateManager.h:639
std::map< DtObjectType, DtIlluminationObjectParameters > myIlluminationObjectTypes
Definition: environmentalStateManager.h:605
DtSimManager * mySimManager
Definition: environmentalStateManager.h:588
DtEnvironmentalStateSetter * myEnvironmentalStateSetter
This is only for setting global weather – local weather will use local vrf objects.
Definition: environmentalStateManager.h:595
Instances of DtIlluminationObjectParameters are used to specify the how much illumination is cast by ...
Definition: illuminationObjectParameters.h:21
DtString myShallowWaterSoilName
Name of soil that is considered shallow water.
Definition: environmentalStateManager.h:611
double myHardFreezeTemperature
Temperature at which shallow water is frozen enough to drive a vehicle on.
Definition: environmentalStateManager.h:643
bool myFirstTick
Definition: environmentalStateManager.h:597
CloudLayerCloudType
Definition: vrfCloudLayerStateEnums.h:12
DtString myRoadSoilName
Name of soil that is paved road.
Definition: environmentalStateManager.h:620
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
Definition: objectType.h:27
static const DtUUID & nullUUID()
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Contains the enums for cloud layers.
double myDeepSnowDepth
Depth of snow required for full snow soil effect. Meters.
Definition: environmentalStateManager.h:629
File: simMsg.h.
Definition: simMessage.h:35
double mySaturationWaterDepth
Depth of water accumulation before dry soil is changed completely to watery soil. ...
Definition: environmentalStateManager.h:633
A DtSimCommand subclass which specifies a change to the cloud layer settings for the specified cloud ...
Definition: changeCloudLayerCommand.h:25
DtReal myWaterSlideDepth
Depth of water on a hard surface that causes loss of normal traction.
Definition: environmentalStateManager.h:636
DtString myWaterySoilName
Name of soil that is considered watery soil.
Definition: environmentalStateManager.h:614
A DtSimCommand subclass which specifies a change to the weather settings for the specified weather ar...
Definition: changeWeatherCommand.h:28
DtString myDeepWaterSoilName
Name of soil that is considered deep water.
Definition: environmentalStateManager.h:608
DtVrfWeatherCloudState
Definition: vrfWeatherStateEnums.h:28
DtVector myLastPointChecked
For faster access for consecutive lookups given a point.
Definition: environmentalStateManager.h:600
DtString myDrySoilName
Name of soil that is dry soil–not sand or gravel.
Definition: environmentalStateManager.h:617
DtString mySnowSoilName
Name of &quot;soil&quot; that is snow.
Definition: environmentalStateManager.h:623
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtBoost::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList.
Definition: managedObjectList.h:31
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
Handles the environmental state of the simulation.
Definition: environmentalStateManager.h:41
DtRwVrfObjectReferenceList myCloudLayerObjects
Definition: environmentalStateManager.h:592
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: vrfObjectReference.h:305
A DtSimCommand subclass which specifies a change to the time of day settings in the simulation engine...
Definition: changeTimeOfDayCommand.h:20
Abstract base class for classes that set new environmental state to the environmental state simulator...
Definition: environmentalStateSetter.h:28
DtManagedObjectListConstPtr myIlluminationObjects
Definition: environmentalStateManager.h:603
DtSharedVrfObjectReference myLastWeatherByPoint
Definition: environmentalStateManager.h:601
DtRwVrfObjectReferenceList myWeatherObjects
Definition: environmentalStateManager.h:591
DtSharedVrfObjectReference myGlobalEnvironmentObject
Definition: environmentalStateManager.h:590

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)