VR-Vantage 2.8 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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  virtual void setSeaState(int state);
351  virtual int seaState() const;
353 
355 
356  virtual void setSeaStateDirection(float dir);
357  virtual float seaStateDirection() const;
359 
361 
362  virtual void setWindDrivenSeaState(bool enabled);
363  virtual bool windDrivenSeaState() const;
365 
367 
368  virtual void setSwellState(int state);
369  virtual int swellState() const;
371 
373 
374  virtual void setSwellStateDirection(float dir);
375  virtual float swellStateDirection() const;
377 
379 
380  virtual void setWindFetch(float distance);
381  virtual float windFetch() const;
383 
385 
386  virtual void setSeaChoppiness(float chop);
387  virtual float seaChoppiness() const;
389 
392  void setUnderwaterVisibilityEnabled(bool enabled);
393  bool underwaterVisibilityEnabled() const;
395 
397 
398  virtual void setUnderwaterVisibility(float distance);
399  virtual float underwaterVisibility() const;
401 
403 
404  virtual void setWaterSurfaceTransparency(float normalizedValue);
405  virtual float waterSurfaceTransparency() const;
407 
409 
410  virtual void setSurgeDepth(float meters);
411  virtual float surgeDepth() const;
413 
415 
416  virtual void setDepthOffset(float meters);
417  virtual float depthOffset() const;
419 
421 
422  virtual void setAmbientWaterTemperature(float temperature);
423  virtual float ambientWaterTemperature() const;
425 
427 
428  virtual void setWaterCurrentSpeed(float speed);
429  virtual float waterCurrentSpeed() const;
431 
433 
434 
435  virtual void setWaterCurrentDirection(float direction);
436  virtual float waterCurrentDirection() const;
438 
440 
441  virtual void setTidalOffset(float meters);
442  virtual float tidalOffset() const;
444 
446 
447  virtual void setTidalDirection(bool inOut);
448  virtual bool tidalDirection() const;
450 
452 
453  virtual void setThermoclineDepth(unsigned int layer, float depth);
454  virtual float thermoclineDepth(unsigned int layer) const;
456 
458 
459  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
460  virtual float thermoclinePermeability(unsigned int layer) const;
462 
464 
465  virtual void setGroundSnowAccumulation(float depth);
466  virtual float groundSnowAccumulation() const;
468 
470 
471  virtual void setRoadSnowAccumulation(float depth);
472  virtual float roadSnowAccumulation() const;
474 
476 
477  virtual void setSnowMinimumElevation(float elevation);
478  virtual float snowMinimumElevation() const;
480 
483  virtual void setSnowElevationTransition(float elevation);
484  virtual float snowElevationTransition() const;
486 
488 
489  virtual void setGroundRainAccumulation(float depth);
490  virtual float groundRainAccumulation() const;
492 
494 
495 
496 
497 
498  virtual DtUniqueID addLocalWind(WindType localWindType);
499  virtual void removeLocalWind(DtUniqueID id) const;
501 
503 
504  virtual void setLocalWindLocation(DtUniqueID id, DtVector loc);
506 
508 
509  virtual void setLocalWindSpeed(DtUniqueID id, float windSpeed);
511 
516  virtual float lightLevel() const;
517 
521  void loadDefaults(bool loadOnlyFactorySettings = false);
522 
524  void restore();
525 
527  void saveAsDefaults();
529 
531 
532  virtual void exportSettings(const std::string& filename);
533  virtual void importSettings(const std::string& filename);
535 
536  const DtSettingsBackup* settingsBackup() const
537  {
538  return mySettingsBackup;
539  }
540 
541  DtSettingsBackup* settingsBackup()
542  {
543  return mySettingsBackup;
544  }
545 
547  virtual float seaLevel() const;
549  virtual void initializeEnvironmentSettings();
550 
551  virtual void initializeRemoteEnvironment();
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_allowSimMessagesSet(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 
661 
662  // This is an env record that reflects our current settings
664 
665  // This is an env list that reflects saved settings
667 
668  // This holds the DtLocalWindObjectAgents which
669  // ultimately sends the info to osgEarth
671 
672  float mySeaLevel;
673 
674  // Until this is in an environment record
676  };
677 
679  {
680  public:
681 
683  static DtEnvironmentCreator& instance(DtDe& de);
684 
686 
688  virtual ~DtEnvironmentCreator();
689 
690  DtEnvironment* create(DtDe& de);
691 
692  };
696  {
697  public:
698 
700  static DtEnvironmentSignaler& instance(DtDe& de);
701 
703  virtual ~DtEnvironmentSignaler();
704 
705  //Signaled when any of the atmospheric parameters change.
706  boost::signalslib::signal<void ()> signal_atmosphericParametersChanged;
707 
708  //Signaled when any of the precipitation parameters change.
709  boost::signalslib::signal<void ()> signal_precipitationSettingsChanged;
710 
711  //Signaled when the lightning is present state has changed
712  boost::signalslib::signal<void(bool)> signal_lightningPresentChanged;
713 
714  boost::signalslib::signal<void (unsigned int layerId,
716 
717  boost::signalslib::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
718 
719  boost::signalslib::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
721 
722  boost::signalslib::signal<void (float height)> signal_fogHeightChanged;
723 
724  boost::signalslib::signal<void (const DtVector& color)> signal_fogColorChanged;
725 
726  //Signaled when elevational configurations change.
727  boost::signalslib::signal<void(float baseMSLAltitude)> signal_elevationalConfigurationRemoved;
728  boost::signalslib::signal<void(float oldBaseMSLAltitude, float newBaseMSLAltitude)> signal_elevationalConfigurationMoved;
729  boost::signalslib::signal<void(DtEnvironmentInterface::DtElevationalConfigurationRecord)> signal_elevationalConfigurationAdded;
730  boost::signalslib::signal<void(DtEnvironmentInterface::DtElevationalConfigurationRecord)> signal_elevationalConfigurationUpdated;
731 
732  //Signaled when air parameters change.
733  boost::signalslib::signal<void (float kelvins)> signal_ambientAirTemperatureChanged;
734  boost::signalslib::signal<void (float pressure)> signal_ambientAirPressureChanged;
735  boost::signalslib::signal<void (float altitude)> signal_airTemperatureAltitudeChanged;
736  boost::signalslib::signal<void (float altitude)> signal_airPressureAltitudeChanged;
737  boost::signalslib::signal<void (bool seaLevel)> signal_airTemperatureAltitudeIsSeaLevelChanged;
738  boost::signalslib::signal<void (bool seaLevel)> signal_airPressureAltitudeIsSeaLevelChanged;
739  boost::signalslib::signal<void (float water)> signal_seaLevelWaterConcentrationChanged;
740 
741  //Signaled when marine states change.
742  boost::signalslib::signal<void (unsigned int seastate)> signal_seaStateChanged;
743  boost::signalslib::signal<void (float radians)> signal_seaStateDirectionChanged;
744  boost::signalslib::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
745  boost::signalslib::signal<void (unsigned int swellstate)> signal_swellStateChanged;
746  boost::signalslib::signal<void (float radians)> signal_swellStateDirectionChanged;
747  boost::signalslib::signal<void (float distance)> signal_windFetchChanged;
748  boost::signalslib::signal<void (float chop)> signal_seaChoppinessChanged;
749  boost::signalslib::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
750  boost::signalslib::signal<void (double meters)> signal_underwaterVisibilityChanged;
751  boost::signalslib::signal<void (double normalizedValue)>
753  boost::signalslib::signal<void (double meters)> signal_surgeDepthChanged;
754  boost::signalslib::signal<void (double meters)> signal_depthOffsetChanged;
755 
756  boost::signalslib::signal<void (float kelvins)> signal_ambientWaterTemperatureChanged;
757  boost::signalslib::signal<void (float speed)> signal_waterCurrentSpeedChanged;
758  boost::signalslib::signal<void (float direction)> signal_waterCurrentDirectionChanged;
759  boost::signalslib::signal<void (float meters)> signal_tidalOffsetChanged;
760  boost::signalslib::signal<void (bool inOut)> signal_tidalDirectionChanged;
761  boost::signalslib::signal<void (unsigned int layer, float depth)>
763  boost::signalslib::signal<void (unsigned int layer, float permeability)>
765  boost::signalslib::signal< void(const std::string& environmentName) >
767  boost::signalslib::signal<void(float depth)> signal_groundSnowAccumulationChanged;
768  boost::signalslib::signal<void(float depth)> signal_roadSnowAccumulationChanged;
769  boost::signalslib::signal<void(float elevation)> signal_snowMinimumElevationChanged;
770  boost::signalslib::signal<void(float elevation)> signal_snowElevationTransitionChanged;
771  boost::signalslib::signal<void(float depth)> signal_groundRainAccumulationChanged;
772 
773  protected:
775  };
776 
781  {
782  public:
785  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
786 
789  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
790 
794  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
795 
797  virtual ~DtWeatherProcessorSignaler();
798 
800 
801  protected:
803 
804  private:
807  };
808 
810 }


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