14 #include <vlutil/vlString.h>
18 #include <matrix/vlVector.h>
22 #include <tbb/spin_mutex.h>
27 #include <tbb/spin_mutex.h>
42 class DtTroposphereStateComponent;
93 virtual void setAutomaticallyCreateGlobalEnvironment(
bool autoCreate);
103 virtual bool globalEnvironmentSimulatedLocally()
const;
109 virtual bool startEnvironmentSimulationLocally();
134 template<
typename WeatherStateType>
136 bool* isGlobal = 0)
const;
140 template<
typename WeatherStateType>
141 const WeatherStateType* weatherStateFor(
const DtVector& localPosition,
142 bool* isGlobal = 0)
const;
151 virtual std::vector<DtSimObjectReference> weatherObjectsFor(
const DtChord& localChord)
const;
161 virtual std::vector<const makVrf::DtTroposphereStateComponent*> cloudLayersFor(
const DtChord& localChord)
const;
167 virtual std::vector<CloudStateSegment>
168 cloudLayerDescriptionsAt(
const DtVector& localPosition)
const;
175 virtual DtSimObjectReference windCorridorFor(
double & windHeading,
const DtVector& localPosition)
const;
178 virtual std::vector<DtSimObjectReference> windCorridorsFor(
const DtChord& localChord)
const;
188 virtual std::vector<DtSimObjectReference> airTurbulencesFor(
const DtChord& localChord)
const;
196 virtual double visualDetectionMinimumContrast()
const;
201 virtual double airTemperature(
const DtVector&)
const;
204 virtual double airPressure(
const DtVector& localPosition)
const;
207 virtual double airTemperatureAltitude(
const DtVector& localPosition)
const;
210 virtual double airPressureAltitude(
const DtVector& localPosition)
const;
213 virtual double humidity(
const DtVector& localPosition)
const;
216 virtual double precipitationIntensity(
const DtVector&)
const;
220 virtual double averagePrecipitationIntensity(
const DtChord&)
const;
226 virtual double windSpeed(
const DtVector&)
const;
229 virtual double windDirection(
const DtVector&)
const;
235 virtual bool lightningPresent(
const DtVector& localPosition)
const;
238 virtual double visibility(
const DtVector&)
const;
241 virtual int visibilityObscurant(
const DtVector&)
const;
248 virtual double visibility(
const DtChord&)
const;
251 virtual double underwaterVisibility(
const DtVector&)
const;
254 virtual double surfaceTransparency(
const DtVector&)
const;
257 virtual double waterCurrentSpeed(
const DtVector&)
const;
260 virtual double waterCurrentDirection(
const DtVector&)
const;
263 virtual double ambientWaterTemperature(
const DtVector&)
const;
266 virtual double tidalOffset(
const DtVector&)
const;
269 virtual unsigned int swellState(
const DtVector&)
const;
272 virtual double swellStateDirection(
const DtVector&)
const;
275 virtual unsigned int seaState(
const DtVector&)
const;
278 virtual double seaStateDirection(
const DtVector&)
const;
281 virtual double choppiness(
const DtVector&)
const;
284 virtual double surgeDepth(
const DtVector&)
const;
287 virtual double depthOffset(
const DtVector&)
const;
290 virtual double windFetch(
const DtVector&)
const;
293 virtual double fogHeight(
const DtVector&)
const;
299 virtual DtVector fogColor(
const DtVector&)
const;
302 virtual int blowingParticulateMatter(
const DtVector&)
const;
305 virtual double snowAccumulation(
const DtVector&)
const;
309 virtual double snowRoadAccumulation(
const DtVector&)
const;
312 virtual double rainAccumulation(
const DtVector&)
const;
316 virtual DtEntityType globalEnvironmentObjectType()
const;
320 virtual DtEntityType metocServiceObjectType()
const;
324 virtual DtUUID initializeAndGetMetocWeatherService();
329 virtual double thermoclineLayer1Depth(
const DtVector&)
const;
330 virtual double thermoclineLayer1Permeability(
const DtVector&)
const;
331 virtual double thermoclineLayer2Depth(
const DtVector&)
const;
332 virtual double thermoclineLayer2Permeability(
const DtVector&)
const;
333 virtual double thermoclineLayer3Depth(
const DtVector&)
const;
334 virtual double thermoclineLayer3Permeability(
const DtVector&)
const;
335 virtual double thermoclineLayer4Depth(
const DtVector&)
const;
336 virtual double thermoclineLayer4Permeability(
const DtVector&)
const;
337 virtual double thermoclineLayer5Depth(
const DtVector&)
const;
338 virtual double thermoclineLayer5Permeability(
const DtVector&)
const;
342 virtual bool windSpeedAndDirectionAtAltitude(
const DtVector&,
343 double altMSL,
double& windSpeed,
double& windDirection)
const;
345 virtual bool visibilityAndObscurantAtAltitude(
const DtVector&,
346 double altMSL,
double& visibility,
int& obscurant)
const;
355 virtual void setDateAndTimeOfDay(
double secondsPastMidnight);
358 virtual double timeOfDay()
const;
360 virtual double dateAndTimeOfDay()
const;
363 virtual void setTimeOfDayAdvancementSpeed(
double speed);
365 virtual double timeOfDayAdvancementSpeed()
const;
374 virtual double illumination(
const DtVector& localPosition)
const;
378 virtual double expectedIllumination(
const DtVector& localPosition,
double dateAndTime)
const;
397 virtual void computeSoilWeatherMobilityModifiers(
398 const DtVector& location,
const DtString& soilType,
399 double& snowEffectFraction,
400 DtString& alternateSoil,
double& alternateSoilFraction,
401 double& tractionModifier)
const;
409 virtual double snowMinimumAltitude(
const DtVector&)
const;
416 virtual bool windDrivenSeaStateEnabled(
const DtVector&)
const;
422 virtual void setUseDayNightIlluminationModel(
bool);
423 virtual bool useDayNightIlluminationModel()
const;
429 virtual double normalizedPrecipitationRate()
const;
430 virtual void setNormalizedPrecipitationRate(
const double);
438 virtual bool reduceVisibilityForPrecipitation()
const;
439 virtual void setReduceVisibilityForPrecipitation(
const bool);
455 virtual DtString deepWaterSoilName()
const;
456 virtual DtString shallowWaterSoilName()
const;
457 virtual DtString waterySoilName()
const;
458 virtual DtString drySoilName()
const;
459 virtual DtString roadSoilName()
const;
460 virtual DtString snowSoilName()
const;
461 virtual DtString iceSoilName()
const;
462 virtual double deepSnowDepth()
const;
465 virtual double saturationWaterDepth()
const;
467 virtual double waterSlideDepth()
const;
469 virtual double waterSlideFactor()
const;
472 virtual double hardFreezeTemperature()
const;
478 virtual int priority(
const DtUUID& weatherArea)
const;
479 virtual int priority(
const DtVector&)
const;
488 virtual double cloudAltitude(
const DtVector& localPosition)
const;
489 virtual double cloudThickness(
const DtVector& localPosition)
const;
490 virtual double cloudDensity(
const DtVector& localPosition)
const;
507 virtual void setUnderwaterVisibility(
double underwaterVisibility,
const DtUUID& weatherArea =
DtUUID::nullUUID());
509 virtual void setWaterCurrentSpeed(
double waterCurrentSpeed,
const DtUUID& weatherArea =
DtUUID::nullUUID());
510 virtual void setWaterCurrentDirection(
double waterCurrentDirection,
const DtUUID& weatherArea =
DtUUID::nullUUID());
511 virtual void setAmbientWaterTemperature(
double waterTemperature,
const DtUUID& weatherArea =
DtUUID::nullUUID());
528 virtual void setThermoclineLayer1Permeability(
double depth,
const DtUUID& weatherArea =
DtUUID::nullUUID());
530 virtual void setThermoclineLayer2Permeability(
double depth,
const DtUUID& weatherArea =
DtUUID::nullUUID());
532 virtual void setThermoclineLayer3Permeability(
double depth,
const DtUUID& weatherArea =
DtUUID::nullUUID());
534 virtual void setThermoclineLayer4Permeability(
double depth,
const DtUUID& weatherArea =
DtUUID::nullUUID());
536 virtual void setThermoclineLayer5Permeability(
double depth,
const DtUUID& weatherArea =
DtUUID::nullUUID());
545 virtual DtRwWindLevels windLevels(
const DtVector& localPosition)
const;
550 virtual void setDeepWaterSoilName(
const DtString&);
551 virtual void setShallowWaterSoilName(
const DtString&);
552 virtual void setDrySoilName(
const DtString&);
553 virtual void setWaterySoilName(
const DtString&);
554 virtual void setRoadSoilName(
const DtString&);
555 virtual void setSnowSoilName(
const DtString&);
556 virtual void setIceSoilName(
const DtString&);
557 virtual void setDeepSnowDepth(
const double);
558 virtual void setSaturationWaterDepth(
const double);
559 virtual void setWaterSlideDepth(
const double);
560 virtual void setWaterSlideFactor(
const double);
561 virtual void setHardFreezeTemperature(
const double);
573 static void changeWeatherPrioritiesCallback(
DtSimMessage* msg,
void* usr);
574 virtual void processChangeWeatherPriorities(
DtSimMessage* msg);
576 static void requestWeatherAtLocationCallback(
DtSimMessage* msg,
void* usr);
577 virtual void processRequestWeatherAtLocation(
DtSimMessage* msg);
579 static void physicalWorldParametersChangedCallback(
void* usr);
580 virtual void initializeIlluminationObjectsList();
583 virtual void initializeSoilCharacteristics();
587 virtual void initializeWeatherStateProvider();
591 virtual void initializeWeatherParameters();
594 virtual void setupGlobalEnvironmentObject(
DtLocalObject* lo);
595 virtual void setupGlobalEnvironmentObject(
const DtUUID&);
596 static void globalObjectAddedCallback(
const DtLocalObject*,
void* usr);
601 virtual bool autoCreateGlobalEnvironmentIfRequired();
605 void printWeatherObjects()
const;
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:13
DtString myIceSoilName
Name of "soil" that is ice.
Definition: environmentalStateManager.h:651
bool myAutomaticallyCreateGlobalEnvironment
Definition: environmentalStateManager.h:623
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
class DtLocalObjectManager:
Definition: localObjectManager.h:157
DtRwBoolean myReduceVisibilityForPrecipitation
This flag determines whether to degrade visibility due to precipitation, on top of the effect of the ...
Definition: environmentalStateManager.h:681
DtSimulationServices * simulationServices() const
Definition: environmentalStateManager.h:444
DtReal myWaterSlideFactor
Fraction [0-1] of traction retained on hard surface with water on it.
Definition: environmentalStateManager.h:664
This class contains the functions that the VRF simulation uses to query the current state of the weat...
Definition: weatherStateProvider.h:186
DtEnvironmentalStateSetter * myEnvironmentalStateSetter
This is only for setting global weather – local weather will use local vrf objects.
Definition: environmentalStateManager.h:621
tbb::spin_mutex myRemovalMutex
This flag determines whether the net interfaces for Environmental Process objects will publish METOC ...
Definition: environmentalStateManager.h:691
DtVrfTurbulenceLevel
placeholder. Final version is defined in vrfWeatherStateEnums.h
Definition: weatherStateProvider.h:27
Instances of DtIlluminationObjectParameters are used to specify the how much illumination is cast by ...
Definition: illuminationObjectParameters.h:21
DtSimObjectReferenceList myAirTurbulenceObjects
Definition: environmentalStateManager.h:618
DtString myShallowWaterSoilName
Name of soil that is considered shallow water.
Definition: environmentalStateManager.h:636
std::map< DtEntityType, DtIlluminationObjectParameters > myIlluminationObjectTypes
Definition: environmentalStateManager.h:630
double myHardFreezeTemperature
Temperature at which shallow water is frozen enough to drive a vehicle on. Degrees C...
Definition: environmentalStateManager.h:668
std::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList. These lists are used within VR-Fo...
Definition: managedObjectList.h:35
Contains the DtUUID class declaration.
DtUUID myMetocWeatherServiceUuid
Definition: environmentalStateManager.h:626
boost::signals2::scoped_connection mySimObjectAddedConnection
Definition: environmentalStateManager.h:683
bool myFirstTick
Definition: environmentalStateManager.h:686
CloudLayerCloudType
Definition: vrfCloudLayerStateEnums.h:14
DtString myRoadSoilName
Name of soil that is paved road.
Definition: environmentalStateManager.h:645
DtLocalObjectManager * myObjectManager
Definition: environmentalStateManager.h:687
DtSimulationServices * mySimulationServices
Definition: environmentalStateManager.h:608
DtSimObjectReferenceList myWeatherObjects
Definition: environmentalStateManager.h:616
bool myCreatedMetocService
Definition: environmentalStateManager.h:625
static const DtUUID & nullUUID()
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: environmentalStateManager.h:684
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Contains the enums for cloud layers.
DtSimObjectReferenceList myWindCorridorObjects
Definition: environmentalStateManager.h:617
double myDeepSnowDepth
Depth of snow required for full snow soil effect. Meters.
Definition: environmentalStateManager.h:654
File: simMsg.h.
Definition: simMessage.h:35
DtWeatherStateProvider * myWeatherStateProvider
The object used to get weather state.
Definition: environmentalStateManager.h:611
double mySaturationWaterDepth
Depth of water accumulation before dry soil is changed completely to watery soil. Meters...
Definition: environmentalStateManager.h:658
DtReal myWaterSlideDepth
Depth of water on a hard surface that causes loss of normal traction.
Definition: environmentalStateManager.h:661
DtString myWaterySoilName
Name of soil that is considered watery soil.
Definition: environmentalStateManager.h:639
A DtSimCommand subclass which specifies a change to the weather settings for the specified weather ar...
Definition: changeWeatherCommand.h:29
DtSimObjectReference myGlobalEnvironmentObject
Definition: environmentalStateManager.h:615
DtString myDeepWaterSoilName
Name of soil that is considered deep water.
Definition: environmentalStateManager.h:633
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:25
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
DtString myDrySoilName
Name of soil that is dry soil–not sand or gravel.
Definition: environmentalStateManager.h:642
DtString mySnowSoilName
Name of "soil" that is snow.
Definition: environmentalStateManager.h:648
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtUUID myNextFrameGlobalEnvironmentObjectUUID
Definition: environmentalStateManager.h:614
Maintains the environmental state of the simulation, such as time of day, illumination, and various aspects of the weather. All access to this data from any behavior or dynamics model should be made to this class.
Definition: environmentalStateManager.h:67
Definition: rwWindLevels.h:17
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:29
DtManagedObjectListConstPtr myIlluminationObjects
Definition: environmentalStateManager.h:628
1) Define the interface class that will be used to represent the next and current frames...
Definition: troposphereStateComponent.h:46
double myNormalizedPrecipitationRate
The (rain) precipitation rate that corresponds to a value of 1.0 in a weather object or the return va...
Definition: environmentalStateManager.h:672
A locally simulated VRF object.
Definition: localObject.h:98
DtLocalObject * myNextFrameGlobalEnvironmentObject
Definition: environmentalStateManager.h:613