VR-Vantage 3.0.3 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) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
18 
21 
23 #include <vrvUtil/event_signal.h>
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 
49  {
50  public:
51 
53  DtEnvironment(DtDe& de);
54 
56  virtual ~DtEnvironment();
57 
60  virtual void init();
61 
64  virtual void getRecord(makArchives::DtEnvironmentRecord& record);
65 
68  virtual void setFromRecord(
69  const makArchives::DtEnvironmentRecord& record);
70 
72  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
73 
81  virtual void saveEnvironment(const std::string& name);
82 
85  virtual void setEnvironment(const std::string& name);
86 
89  virtual void removeEnvironment(const std::string& name);
90 
92  virtual void renameEnvironment(
93  const std::string& oldName, const std::string& newName);
94 
99  virtual void getEnvironmentNames(std::vector<std::string>& names,
100  bool includeLocalOnlyEnvironment = false);
101 
104  virtual void setDefaultEnvironmentName(const std::string& name);
105 
108  virtual std::string defaultEnvironmentName() const;
110 
112 
113  virtual void setLightningPresent(bool lightningPresent);
114  virtual bool lightningPresent() const;
116 
118 
119  virtual void setAirTurbidity(float turbidity);
120  virtual float airTurbidity() const;
122 
124 
125 
126 
127 
128  virtual void setVisibleDistance(float distance);
129  virtual float visibleDistance() const;
131 
133 
134 
135 
136 
137  virtual void setWindSpeed(float windSpeed);
138  virtual float windSpeed() const;
140 
142 
143 
144 
145 
146  virtual void setWindDirection(float direction);
147  virtual float windDirection() const;
149 
151 
152  virtual void setPrecipitationType(PrecipitationType type);
153  virtual PrecipitationType precipitationType() const;
155 
157 
158  virtual void setPrecipitationIntensity(float intensity);
159  virtual float precipitationIntensity() const;
161 
172  virtual void updateOrAddElevationalConfiguration(
173  const DtElevationalConfigurationRecord& record);
174 
182  virtual bool getElevationalConfiguration(float baseMSLAltitude,
184 
192  virtual void removeElevationalConfiguration(float baseMSLAltitude);
193 
204  virtual void moveElevationalConfiguration(
205  float oldBaseMSLAltitude, float newBaseMSLAltitude);
206 
211  virtual void setWindSpeedAtMSLAltitude(float mslAltitude, float windSpeed);
212 
218  virtual float windSpeedAtMSLAltitude(float mslAltitude) const;
219 
225  virtual void setWindDirectionAtMSLAltitude(float mslAltitude, float windDirection);
226 
232  virtual float windDirectionAtMSLAltitude(float mslAltitude) const;
233 
239  virtual void setVisibilityDistanceAtMSLAltitude(float mslAltitude, float visibilityDistance);
240 
246  virtual float visibilityDistanceAtMSLAltitude(float mslAltitude) const;
247 
253  virtual void setObscurantAtMSLAltitude(float mslAltitude, VisibilityObscurant obscurant);
254 
260  virtual VisibilityObscurant obscurantAtMSLAltitude(float mslAltitude) const;
261 
267  virtual void setCloudTypeAtMSLAltitude(float mslAltitude, CloudType cloudType);
268 
274  virtual CloudType cloudTypeAtMSLAltitude(float mslAltitude) const;
275 
280  virtual void setSkyCoverageAtMSLAltitude(float mslAltitude, float skyCoverage);
281 
286  virtual float skyCoverageAtMSLAltitude(float mslAltitude) const;
287 
289 
290  virtual void setAmbientAirTemperature(float temperature);
291  virtual float ambientAirTemperature() const;
293 
295 
296  virtual void setAmbientAirPressure(float pressure);
297  virtual float ambientAirPressure() const;
299 
302  virtual void setAirPressureAltitude(float altitude);
303  virtual float airPressureAltitude() const;
305 
308  virtual void setAirTemperatureAltitude(float altitude);
309  virtual float airTemperatureAltitude() const;
311 
314  virtual void setAirPressureAltitudeIsSeaLevel(bool seaLevel);
315  virtual bool airPressureAltitudeIsSeaLevel() const;
317 
320  virtual void setAirTemperatureAltitudeIsSeaLevel(bool seaLevel);
321  virtual bool airTemperatureAltitudeIsSeaLevel() const;
323 
326  virtual void setSeaLevelWaterConcentration(float water);
327  virtual float seaLevelWaterConcentration() const;
329 
331 
332  virtual void setFogHeight(float height);
333  virtual float fogHeight() const;
335 
337 
338  virtual void setFogColor(const DtVector& color);
339  virtual DtVector fogColor() const;
341 
343 
344  virtual void setGroundFogColor(const DtVector& color) override;
345  virtual DtVector groundFogColor() const override;
347 
349 
350 
351  virtual void setSeaState(DtDouglasSeaState::Scale state);
352  virtual DtDouglasSeaState::Scale seaState() const;
354 
356 
357  virtual void setSeaStateDirection(float dir);
358  virtual float seaStateDirection() const;
360 
362 
363  virtual void setWindDrivenSeaState(bool enabled);
364  virtual bool windDrivenSeaState() const;
366 
368 
369 
370  virtual void setSwellState(DtDouglasSwellState::Scale state);
371  virtual DtDouglasSwellState::Scale swellState() const;
373 
375 
376  virtual void setSwellStateDirection(float dir);
377  virtual float swellStateDirection() const;
379 
381 
382  virtual void setWindFetch(float distance);
383  virtual float windFetch() const;
385 
387 
388  virtual void setSeaChoppiness(float chop);
389  virtual float seaChoppiness() const;
391 
394  void setUnderwaterVisibilityEnabled(bool enabled);
395  bool underwaterVisibilityEnabled() const;
397 
399 
400  virtual void setUnderwaterVisibility(float distance);
401  virtual float underwaterVisibility() const;
403 
405 
406  virtual void setWaterSurfaceTransparency(float normalizedValue);
407  virtual float waterSurfaceTransparency() const;
409 
411 
412  virtual void setSurgeDepth(float meters);
413  virtual float surgeDepth() const;
415 
417 
418  virtual void setDepthOffset(float meters);
419  virtual float depthOffset() const;
421 
423 
424  virtual void setAmbientWaterTemperature(float temperature);
425  virtual float ambientWaterTemperature() const;
427 
429 
430  virtual void setWaterCurrentSpeed(float speed);
431  virtual float waterCurrentSpeed() const;
433 
435 
436 
437  virtual void setWaterCurrentDirection(float direction);
438  virtual float waterCurrentDirection() const;
440 
442 
443  virtual void setTidalOffset(float meters);
444  virtual float tidalOffset() const;
446 
448 
449  virtual void setTidalDirection(bool inOut);
450  virtual bool tidalDirection() const;
452 
454 
455  virtual void setThermoclineDepth(unsigned int layer, float depth);
456  virtual float thermoclineDepth(unsigned int layer) const;
458 
460 
461  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
462  virtual float thermoclinePermeability(unsigned int layer) const;
464 
466 
467  virtual void setGroundSnowAccumulation(float depth);
468  virtual float groundSnowAccumulation() const;
470 
472 
473  virtual void setRoadSnowAccumulation(float depth);
474  virtual float roadSnowAccumulation() const;
476 
478 
479  virtual void setSnowMinimumElevation(float elevation);
480  virtual float snowMinimumElevation() const;
482 
485  virtual void setSnowElevationTransition(float elevation);
486  virtual float snowElevationTransition() const;
488 
490 
491  virtual void setGroundRainAccumulation(float depth);
492  virtual float groundRainAccumulation() const;
494 
496 
497 
498 
499 
500  virtual DtUniqueID addLocalWind(WindType localWindType);
501  virtual void removeLocalWind(DtUniqueID id) const;
503 
505 
506  virtual void setLocalWindLocation(DtUniqueID id, DtVector loc);
508 
510 
511  virtual void setLocalWindSpeed(DtUniqueID id, float windSpeed);
513 
518  virtual float lightLevel() const;
519 
523  void loadDefaults(bool loadOnlyFactorySettings = false);
524 
526  void restore();
527 
529  void saveAsDefaults();
531 
533 
534  virtual void exportSettings(const std::string& filename);
535  virtual void importSettings(const std::string& filename);
537 
538  const DtSettingsBackup* settingsBackup() const
539  {
540  return mySettingsBackup;
541  }
542 
543  DtSettingsBackup* settingsBackup()
544  {
545  return mySettingsBackup;
546  }
547 
549  virtual float seaLevel() const;
551  virtual void initializeEnvironmentSettings();
552 
553  protected:
554 
555  typedef std::vector<DtCloudLayer> CloudLayersVector;
556 
563  virtual void resetClouds();
564 
568  virtual void refreshCloudLayerThicknessIfNeeded();
569 
571  virtual void clearCloudsFromSky();
572 
576  virtual void addElevationalCloudLayersToCloudCoverManagerIfNeeded();
577 
580  virtual void sendToSkyAllCloudLayers();
581 
582  virtual void initializeCloudLayerRecordByCloudType(makArchives::DtCloudLayerRecord&) const;
583 
584  virtual void sendToSkyCloudLayerAdded(DtCloudLayerId layerId);
585  virtual void sendToSkyCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
586  virtual void sendToSkyCloudLayerRemoved(DtCloudLayerId layerId);
587  virtual void sendToSkyCloudLayerModified(DtCloudLayerId layerId);
588 
590 
591 
592  virtual void slot_listenToRemoteEnvironmentSettingsChanged(bool allowSimMessages);
593 
594  virtual void slot_cloudCoverCloudLayerEnabledChanged(DtCloudLayerId layerId, bool enableState);
595  virtual void slot_cloudCoverCloudLayerModified(DtCloudLayerId layerId);
596  virtual void slot_cloudCoverCloudLayerPositionAndOrientationChanged(DtCloudLayerId layerId,
597  const DtVector& position, float orientation);
598  virtual void slot_cloudCoverCloudLayerAdded(DtCloudLayerId layerId);
599  virtual void slot_cloudCoverCloudLayerToBeRemoved(DtCloudLayerId layerId);
600  virtual void slot_cloudCoverToBeRemoved(const std::string& cloudCoverName);
601 
603  virtual void slot_coordinateSystemChanged();
604 
606  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
607 
609  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
610 
612  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
613  double seaLevel);
614 
617  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
618  int range);
619 
621  virtual void slot_surgeDepthChanged(double depth);
622 
624  virtual void slot_depthOffsetChanged(double offset);
625 
627  virtual void updateEnvironment();
628 
631  virtual void initializeOcean();
632 
634  virtual void enableCurrentCloudCoverLayers();
635  virtual void disableCurrentCloudCoverLayers();
636 
637  virtual void autoSave();
638 
641  virtual void sendMarineEnvironmentToOceanObject();
642 
645  virtual void sendWeatherEnvironmentToSkyObject();
646 
647  protected:
650 
651  // makArchives::DtEnvironmentListRecord* mySettings;
652 
653  //We should refactor these classes and combine them to make a consistent way
654  // to send down environment settings to the RDE.
658 
662 
663  // This is an env record that reflects our current settings
665 
666  // This is used to retain the name of the (old) environment configuration
667  // that was in use before switching over to the 'remote environment'.
669 
670  // This is an env list that reflects saved settings
672 
673  // This holds the DtLocalWindObjectAgents which
674  // ultimately sends the info to osgEarth
676 
677  float mySeaLevel;
678 
679  // Until this is in an environment record
681  };
682 
684  {
685  public:
686 
688  static DtEnvironmentCreator& instance(DtDe& de);
689 
691 
693  virtual ~DtEnvironmentCreator();
694 
695  DtEnvironment* create(DtDe& de);
696 
697  };
701  {
702  public:
703 
705  static DtEnvironmentSignaler& instance(DtDe& de);
706 
708  virtual ~DtEnvironmentSignaler();
709 
710  //Signaled when any of the atmospheric parameters change.
711  boost::signalslib::signal<void ()> signal_atmosphericParametersChanged;
712 
713  //Signaled when any of the precipitation parameters change.
714  boost::signalslib::signal<void ()> signal_precipitationSettingsChanged;
715 
716  //Signaled when the lightning is present state has changed
717  boost::signalslib::signal<void(bool)> signal_lightningPresentChanged;
718 
719  boost::signalslib::signal<void (unsigned int layerId,
721 
722  boost::signalslib::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
723 
724  boost::signalslib::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
726 
727  boost::signalslib::signal<void (float height)> signal_fogHeightChanged;
728 
729  boost::signalslib::signal<void (const DtVector& color)> signal_fogColorChanged;
730 
731  //Signaled when elevational configurations change.
732  boost::signalslib::signal<void(float baseMSLAltitude)> signal_elevationalConfigurationRemoved;
733  boost::signalslib::signal<void(float oldBaseMSLAltitude, float newBaseMSLAltitude)> signal_elevationalConfigurationMoved;
734  boost::signalslib::signal<void(DtEnvironmentInterface::DtElevationalConfigurationRecord)> signal_elevationalConfigurationAdded;
735  boost::signalslib::signal<void(DtEnvironmentInterface::DtElevationalConfigurationRecord)> signal_elevationalConfigurationUpdated;
736 
737  //Signaled when air parameters change.
738  boost::signalslib::signal<void (float kelvins)> signal_ambientAirTemperatureChanged;
739  boost::signalslib::signal<void (float pressure)> signal_ambientAirPressureChanged;
740  boost::signalslib::signal<void (float altitude)> signal_airTemperatureAltitudeChanged;
741  boost::signalslib::signal<void (float altitude)> signal_airPressureAltitudeChanged;
742  boost::signalslib::signal<void (bool seaLevel)> signal_airTemperatureAltitudeIsSeaLevelChanged;
743  boost::signalslib::signal<void (bool seaLevel)> signal_airPressureAltitudeIsSeaLevelChanged;
744  boost::signalslib::signal<void (float water)> signal_seaLevelWaterConcentrationChanged;
745 
746  //Signaled when marine states change.
747  boost::signalslib::signal<void (DtDouglasSeaState::Scale seastate)> signal_seaStateChanged;
748  boost::signalslib::signal<void (float radians)> signal_seaStateDirectionChanged;
749  boost::signalslib::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
750  boost::signalslib::signal<void (DtDouglasSwellState::Scale swellstate)> signal_swellStateChanged;
751  boost::signalslib::signal<void (float radians)> signal_swellStateDirectionChanged;
752  boost::signalslib::signal<void (float distance)> signal_windFetchChanged;
753  boost::signalslib::signal<void (float chop)> signal_seaChoppinessChanged;
754  boost::signalslib::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
755  boost::signalslib::signal<void (double meters)> signal_underwaterVisibilityChanged;
756  boost::signalslib::signal<void (double normalizedValue)>
758  boost::signalslib::signal<void (double meters)> signal_surgeDepthChanged;
759  boost::signalslib::signal<void (double meters)> signal_depthOffsetChanged;
760 
761  boost::signalslib::signal<void (float kelvins)> signal_ambientWaterTemperatureChanged;
762  boost::signalslib::signal<void (float speed)> signal_waterCurrentSpeedChanged;
763  boost::signalslib::signal<void (float direction)> signal_waterCurrentDirectionChanged;
764  boost::signalslib::signal<void (float meters)> signal_tidalOffsetChanged;
765  boost::signalslib::signal<void (bool inOut)> signal_tidalDirectionChanged;
766  boost::signalslib::signal<void (unsigned int layer, float depth)>
768  boost::signalslib::signal<void (unsigned int layer, float permeability)>
770  boost::signalslib::signal< void(const std::string& environmentName) >
772  boost::signalslib::signal<void(float depth)> signal_groundSnowAccumulationChanged;
773  boost::signalslib::signal<void(float depth)> signal_roadSnowAccumulationChanged;
774  boost::signalslib::signal<void(float elevation)> signal_snowMinimumElevationChanged;
775  boost::signalslib::signal<void(float elevation)> signal_snowElevationTransitionChanged;
776  boost::signalslib::signal<void(float depth)> signal_groundRainAccumulationChanged;
777 
778  protected:
780  };
781 
786  {
787  public:
790  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
791 
794  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
795 
799  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
800 
802  virtual ~DtWeatherProcessorSignaler();
803 
805 
806  protected:
808 
809  private:
812  };
813 
815 }


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