VR-Vantage 3.1.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEnvironment.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>
18 
21 
24 
25 namespace makArchives
26 {
27  class DtCloudLayerRecord;
28  class DtEnvironmentListRecord;
29 }
30 
31 namespace makVrv
32 {
33  class DtDe;
34  class DtAgentManagerInterface;
35  class DtSkyObjectAgent;
36  class DtDynamicOceanObjectAgent;
37  class DtEventQueueInterface;
38  class DtSharedSettingsManager;
39  class DtOceanLayer;
40  class DtCloudLayer;
41  class DtOceanStateInterface;
42  class DtWeatherEffectsObjectAgent;
43 
44  // forward Declarations
46 
49 
51  template <>
52  inline const char* creatorTypeName<DtEnvironment>() { return "DtEnvironmentCreator"; }
53 
59  {
60  public:
61 
63  DtEnvironment(DtDe& de);
64 
66  virtual ~DtEnvironment();
67 
70  virtual void init();
71 
74  virtual void getRecord(makArchives::DtEnvironmentRecord& record) const;
75 
78  virtual void setFromRecord(
79  const makArchives::DtEnvironmentRecord& record);
80 
82  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
83 
91  virtual void saveEnvironment(const std::string& name);
92 
95  virtual void setEnvironment(const std::string& name);
96 
99  virtual void removeEnvironment(const std::string& name);
100 
102  virtual void renameEnvironment(
103  const std::string& oldName, const std::string& newName);
104 
109  virtual void getEnvironmentNames(std::vector<std::string>& names,
110  bool includeLocalOnlyEnvironment = false);
111 
114  virtual void setDefaultEnvironmentName(const std::string& name);
115 
118  virtual std::string defaultEnvironmentName() const;
120 
122  virtual void setLightningPresent(bool lightningPresent);
124  virtual bool lightningPresent() const;
126 
128  virtual void setAirTurbidity(float turbidity);
130  virtual float airTurbidity() const;
132 
134  virtual void setVisibleDistance(float distance);
139  virtual float visibleDistance() const;
141 
143  virtual void setWindSpeed(float windSpeed);
148  virtual float windSpeed() const;
150 
152  virtual void setWindDirection(float direction);
157  virtual float windDirection() const;
159 
161  virtual void setPrecipitationType(PrecipitationType type);
163  virtual PrecipitationType precipitationType() const;
165 
167  virtual void setPrecipitationIntensity(float intensity);
169  virtual float precipitationIntensity() const;
171 
182  virtual void updateOrAddElevationalConfiguration(
183  const DtElevationalConfigurationRecord& record);
184 
192  virtual bool getElevationalConfiguration(float baseMSLAltitude,
194 
202  virtual void removeElevationalConfiguration(float baseMSLAltitude);
203 
214  virtual void moveElevationalConfiguration(
215  float oldBaseMSLAltitude, float newBaseMSLAltitude);
216 
221  virtual void setWindSpeedAtMSLAltitude(float mslAltitude, float windSpeed);
222 
228  virtual float windSpeedAtMSLAltitude(float mslAltitude) const;
229 
235  virtual void setWindDirectionAtMSLAltitude(float mslAltitude, float windDirection);
236 
242  virtual float windDirectionAtMSLAltitude(float mslAltitude) const;
243 
249  virtual void setVisibilityDistanceAtMSLAltitude(float mslAltitude, float visibilityDistance);
250 
256  virtual float visibilityDistanceAtMSLAltitude(float mslAltitude) const;
257 
263  virtual void setObscurantAtMSLAltitude(float mslAltitude, VisibilityObscurant obscurant);
264 
270  virtual VisibilityObscurant obscurantAtMSLAltitude(float mslAltitude) const;
271 
277  virtual void setCloudTypeAtMSLAltitude(float mslAltitude, CloudType cloudType);
278 
284  virtual CloudType cloudTypeAtMSLAltitude(float mslAltitude) const;
285 
290  virtual void setSkyCoverageAtMSLAltitude(float mslAltitude, float skyCoverage);
291 
296  virtual float skyCoverageAtMSLAltitude(float mslAltitude) const;
297 
299  virtual void setAmbientAirTemperature(float temperature);
301  virtual float ambientAirTemperature() const;
303 
305  virtual void setAmbientAirPressure(float pressure);
307  virtual float ambientAirPressure() const;
309 
312  virtual void setAirPressureAltitude(float altitude);
313  virtual float airPressureAltitude() const;
315 
318  virtual void setAirTemperatureAltitude(float altitude);
319  virtual float airTemperatureAltitude() const;
321 
324  virtual void setAirPressureAltitudeIsSeaLevel(bool seaLevel);
325  virtual bool airPressureAltitudeIsSeaLevel() const;
327 
330  virtual void setAirTemperatureAltitudeIsSeaLevel(bool seaLevel);
331  virtual bool airTemperatureAltitudeIsSeaLevel() const;
333 
336  virtual void setSeaLevelWaterConcentration(float water);
337  virtual float seaLevelWaterConcentration() const;
339 
341  virtual void setFogHeight(float height);
343  virtual float fogHeight() const;
345 
347  virtual void setFogColor(const DtVector& color);
349  virtual DtVector fogColor() const;
351 
353  virtual void setGroundFogColor(const DtVector& color) override;
355  virtual DtVector groundFogColor() const override;
357 
359  virtual void setSeaState(DtDouglasSeaState::Scale state);
362  virtual DtDouglasSeaState::Scale seaState() const;
364 
366  virtual void setSeaStateDirection(float dir);
368  virtual float seaStateDirection() const;
370 
372  virtual void setWindDrivenSeaState(bool enabled);
374  virtual bool windDrivenSeaState() const;
376 
378  virtual void setSwellState(DtDouglasSwellState::Scale state);
381  virtual DtDouglasSwellState::Scale swellState() const;
383 
385  virtual void setSwellStateDirection(float dir);
387  virtual float swellStateDirection() const;
389 
391  virtual void setWindFetch(float distance);
393  virtual float windFetch() const;
395 
397  virtual void setSeaChoppiness(float chop);
399  virtual float seaChoppiness() const;
401 
404  void setUnderwaterVisibilityEnabled(bool enabled);
405  bool underwaterVisibilityEnabled() const;
407 
409  virtual void setUnderwaterVisibility(float distance);
411  virtual float underwaterVisibility() const;
413 
415  virtual void setWaterSurfaceTransparency(float normalizedValue);
417  virtual float waterSurfaceTransparency() const;
419 
421  virtual void setSurgeDepth(float meters);
423  virtual float surgeDepth() const;
425 
427  virtual void setDepthOffset(float meters);
429  virtual float depthOffset() const;
431 
433  virtual void setAmbientWaterTemperature(float temperature);
435  virtual float ambientWaterTemperature() const;
437 
439  virtual void setWaterCurrentSpeed(float speed);
441  virtual float waterCurrentSpeed() const;
443 
445  virtual void setWaterCurrentDirection(float direction);
448  virtual float waterCurrentDirection() const;
450 
452  virtual void setTidalOffset(float meters);
454  virtual float tidalOffset() const;
456 
458  virtual void setTidalDirection(bool inOut);
460  virtual bool tidalDirection() const;
462 
464  virtual void setThermoclineDepth(unsigned int layer, float depth);
466  virtual float thermoclineDepth(unsigned int layer) const;
468 
470  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
472  virtual float thermoclinePermeability(unsigned int layer) const;
474 
476  virtual void setGroundSnowAccumulation(float depth);
478  virtual float groundSnowAccumulation() const;
480 
482  virtual void setRoadSnowAccumulation(float depth);
484  virtual float roadSnowAccumulation() const;
486 
488  virtual void setSnowMinimumElevation(float elevation);
490  virtual float snowMinimumElevation() const;
492 
495  virtual void setSnowElevationTransition(float elevation);
496  virtual float snowElevationTransition() const;
498 
500  virtual void setGroundRainAccumulation(float depth);
502  virtual float groundRainAccumulation() const;
504 
506  virtual DtUniqueID addLocalWind(WindType localWindType);
511  virtual void removeLocalWind(DtUniqueID id) const;
513 
515  virtual void setLocalWindLocation(DtUniqueID id, DtVector loc);
518 
520  virtual void setLocalWindSpeed(DtUniqueID id, float windSpeed);
523 
528  virtual float lightLevel() const;
529 
533  void loadDefaults(bool loadOnlyFactorySettings = false);
534 
536  void restore();
537 
539  void saveAsDefaults();
541 
543  virtual void exportSettings(const std::string& filename);
545  virtual void importSettings(const std::string& filename);
547 
549  {
550  return mySettingsBackup;
551  }
552 
554  {
555  return mySettingsBackup;
556  }
557 
559  virtual float seaLevel() const;
561  virtual void initializeEnvironmentSettings();
562 
563  protected:
564 
565  typedef std::vector<DtCloudLayer> CloudLayersVector;
566 
573  virtual void resetClouds();
574 
578  virtual void refreshCloudLayerThicknessIfNeeded();
579 
581  virtual void clearCloudsFromSky();
582 
586  virtual void addElevationalCloudLayersToCloudCoverManagerIfNeeded();
587 
590  virtual void sendToSkyAllCloudLayers();
591 
592  virtual void initializeCloudLayerRecordByCloudType(makArchives::DtCloudLayerRecord&) const;
593 
594  virtual void sendToSkyCloudLayerAdded(DtCloudLayerId layerId);
595  virtual void sendToSkyCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
596  virtual void sendToSkyCloudLayerRemoved(DtCloudLayerId layerId);
597  virtual void sendToSkyCloudLayerModified(DtCloudLayerId layerId);
598 
600 
602  virtual void slot_listenToRemoteEnvironmentSettingsChanged(bool allowSimMessages);
603  virtual void slot_refreshRemoteEnvironment();
604 
605  virtual void slot_cloudCoverCloudLayerEnabledChanged(DtCloudLayerId layerId, bool enableState);
606  virtual void slot_cloudCoverCloudLayerModified(DtCloudLayerId layerId);
607  virtual void slot_cloudCoverCloudLayerPositionAndOrientationChanged(DtCloudLayerId layerId,
608  const DtVector& position, float orientation);
609  virtual void slot_cloudCoverCloudLayerAdded(DtCloudLayerId layerId);
610  virtual void slot_cloudCoverCloudLayerToBeRemoved(DtCloudLayerId layerId);
611  virtual void slot_cloudCoverToBeRemoved(const std::string& cloudCoverName);
612 
614  virtual void slot_coordinateSystemChanged();
615 
617  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
618 
620  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
621 
623  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
624  double seaLevel);
625 
628  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
629  int range);
630 
632  virtual void slot_surgeDepthChanged(double depth);
633 
635  virtual void slot_depthOffsetChanged(double offset);
636 
638  virtual void updateEnvironment();
639 
642  virtual void initializeOcean();
643 
645  virtual void enableCurrentCloudCoverLayers();
646  virtual void disableCurrentCloudCoverLayers();
647 
648  virtual void autoSave();
649 
652  virtual void sendMarineEnvironmentToOceanObject();
653 
656  virtual void sendWeatherEnvironmentToSkyObject();
657 
658  protected:
661 
662  // makArchives::DtEnvironmentListRecord* mySettings;
663 
664  //We should refactor these classes and combine them to make a consistent way
665  // to send down environment settings to the RDE.
666  DtSkyObjectAgent* mySkyObject;
667  DtDynamicOceanObjectAgent* myDynamicOceanObject;
668  DtWeatherEffectsObjectAgent* myWeatherEffectsObject;
669 
673 
674  // This is an env record that reflects our current settings
676 
677  // This is used to retain the name of the (old) environment configuration
678  // that was in use before switching over to the 'remote environment'.
680 
681  // This is an env list that reflects saved settings
683 
684  // This holds the DtLocalWindObjectAgents which
685  // ultimately sends the info to osgEarth
687 
688  float mySeaLevel;
689 
690  // Until this is in an environment record
692  };
693 
695 }
DtRecordSettingsBackup< DtEnvironment, makArchives::DtEnvironmentRecord > DtEnvironmentSettingsBackup
Definition: DtEnvironment.h:694
DT_DLL_EXAMPLESCENEROOTPLUGIN void init(DtDe &anIG)
DtDe & myDe
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:659
float mySeaLevel
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:688
The declaration of the makVrv::DtEnvironmentInterface class.
DtVirtualBaseClassCreator< DtEnvironment > DtEnvironmentCreator
creator
Definition: DtEnvironment.h:45
DtLocalWindObjectManager & myLocalWindManager
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:686
const char * creatorTypeName< DtEnvironment >()
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtEnvironment.h:52
The DtLocalWindObjectManager manages and sets values for a DtLocalWindObjectAgents.
Definition: DtLocalWindObjectManager.h:32
DtSettingsBackup * settingsBackup()
Definition: DtEnvironment.h:553
makArchives::DtEnvironmentRecord myCurrentSettings
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:675
The declaration of the makVrv::DtEnvironmentList class.
DtEnvironmentList myEnvironmentList
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:682
VisibilityObscurant
Definition: DtEnvironmentRecord.h:21
The makVrv::DtRecordSettingsBackup is a templaced class that settings records will use in order to ba...
Definition: DtRecordSettingsBackup.h:100
The DtEnvironment configures the environmental effects for a scene.
Definition: DtEnvironment.h:58
Record for an elevational configuration A record of this type consists of 1) a base MSL altitude...
Definition: DtEnvironmentRecord.h:242
const DtSettingsBackup * settingsBackup() const
Definition: DtEnvironment.h:548
DtSignalConnectionManager myRemoteEnvironmentConnections
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:672
Scale
Definition: DtDouglasSeaScale.h:33
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
Contains DtLocalWindObjectManager class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
The DtEnvironmentInterface is an interface class providing abstraction for different managers of envi...
Definition: DtEnvironmentInterface.h:40
DtRecordSettingsBackupInterface * mySettingsBackup
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:670
Record of a single cloud layer&#39;s settings.
Definition: DtCloudLayerRecord.h:17
The declaration of the makArchives::DtEnvironmentRecord class.
DtSkyObjectAgent * mySkyObject
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:666
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Scale
Definition: DtDouglasSeaScale.h:114
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Record of environment/weather settings Includes precipitation, air, and clouds.
Definition: DtEnvironmentRecord.h:36
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:23
DtWeatherEffectsObjectAgent * myWeatherEffectsObject
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:668
Rotorwash and rotorwash collision object information.
std::string myEnvironmentRecordNameToRestore
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:679
DtAgentManagerInterface & mySceneInterface
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:660
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
PrecipitationType
Definition: DtEnvironmentInterface.h:44
The ocean layer is a type of terrain layer which contains information about an area that should be re...
Definition: DtOceanLayer.h:25
Base class to provide boost signal/slot management.
WindType
This matches makOsgEarth enums for Wind These should be in synch!
Definition: DtRotorWashInfo.h:47
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:72
DtDynamicOceanObjectAgent * myDynamicOceanObject
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:667
The makVrv::DtRecordSettingsBackupInterface provides an interface to record-based backups...
Definition: DtRecordSettingsBackup.h:24
DtSignalConnectionManager myConnections
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:671
DtVector myGroundFogColor
Slots connected to the Sky Conditions Manager.
Definition: DtEnvironment.h:691
CloudType
Cloud layer types.
Definition: DtCloudTypeMapper.h:35
The DtEnvironmentList maintains a list of DtEnvironment records that can be looked up by the environm...
Definition: DtEnvironmentList.h:32
std::vector< DtCloudLayer > CloudLayersVector
Definition: DtEnvironment.h:565
Contains DLL export macros.


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)