VR-Vantage 2.7 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) 2020 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 
96  virtual void getEnvironmentNames(std::vector<std::string>& names);
97 
100  virtual void setDefaultEnvironmentName(const std::string& name);
101 
104  virtual std::string defaultEnvironmentName() const;
106 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118  virtual void setCloudCover(makArchives::DtCloudCoverType cloudCover);
119  virtual makArchives::DtCloudCoverType cloudCover() const;
121 
123 
124  virtual void setAirTurbidity(float turbidity);
125  virtual float airTurbidity() const;
127 
129 
130  virtual void setVisibleDistance(float distance);
131  virtual float visibleDistance() const;
133 
135 
136  virtual void setPrecipitationType(PrecipitationType type);
137  virtual PrecipitationType precipitationType() const;
139 
141 
142  virtual void setPrecipitationIntensity(float intensity);
143  virtual float precipitationIntensity() const;
145 
154  virtual void updateOrAddElevationalWind(float baseMSLAltitude, float windSpeed, float windDirection);
155 
163  virtual bool getElevationalWind(float baseMSLAltitude, makArchives::DtEnvironmentRecord::DtElevationalWindRecord& wRec) const;
164 
171  virtual void removeWindConfiguration(float baseMSLAltitude);
172 
183  virtual void moveWindConfiguration(float oldBaseMSLAltitude, float newBaseMSLAltitude);
184 
189  virtual float windSpeedAtMSLAltitude(float mslAltitude) const;
190 
196  virtual float windDirectionAtMSLAltitude(float mslAltitude) const;
197 
199 
200  virtual void setAmbientAirTemperature(float temperature);
201  virtual float ambientAirTemperature() const;
203 
205 
206  virtual void setAmbientAirPressure(float pressure);
207  virtual float ambientAirPressure() const;
209 
211 
212  virtual void setFogHeight(float height);
213  virtual float fogHeight() const;
215 
217 
218  virtual void setFogColor(const DtVector& color);
219  virtual DtVector fogColor() const;
221 
223 
224  virtual void setSeaState(int state);
225  virtual int seaState() const;
227 
229 
230  virtual void setSeaStateDirection(float dir);
231  virtual float seaStateDirection() const;
233 
235 
236  virtual void setWindDrivenSeaState(bool enabled);
237  virtual bool windDrivenSeaState() const;
239 
241 
242  virtual void setSwellState(int state);
243  virtual int swellState() const;
245 
247 
248  virtual void setSwellStateDirection(float dir);
249  virtual float swellStateDirection() const;
251 
253 
254  virtual void setWindFetch(float distance);
255  virtual float windFetch() const;
257 
259 
260  virtual void setSeaChoppiness(float chop);
261  virtual float seaChoppiness() const;
263 
266  void setUnderwaterVisibilityEnabled(bool enabled);
267  bool underwaterVisibilityEnabled() const;
269 
271 
272  virtual void setUnderwaterVisibility(float distance);
273  virtual float underwaterVisibility() const;
275 
277 
278  virtual void setWaterSurfaceTransparency(float normalizedValue);
279  virtual float waterSurfaceTransparency() const;
281 
283 
284  virtual void setSurgeDepth(float meters);
285  virtual float surgeDepth() const;
287 
289 
290  virtual void setDepthOffset(float meters);
291  virtual float depthOffset() const;
293 
295 
296  virtual void setAmbientWaterTemperature(float temperature);
297  virtual float ambientWaterTemperature() const;
299 
301 
302  virtual void setWaterCurrentSpeed(float speed);
303  virtual float waterCurrentSpeed() const;
305 
307 
308 
309  virtual void setWaterCurrentDirection(float direction);
310  virtual float waterCurrentDirection() const;
312 
314 
315  virtual void setTidalOffset(float meters);
316  virtual float tidalOffset() const;
318 
320 
321  virtual void setTidalDirection(bool inOut);
322  virtual bool tidalDirection() const;
324 
326 
327  virtual void setThermoclineDepth(unsigned int layer, float depth);
328  virtual float thermoclineDepth(unsigned int layer) const;
330 
332 
333  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
334  virtual float thermoclinePermeability(unsigned int layer) const;
336 
338 
339  virtual void setGroundSnowAccumulation(float depth);
340  virtual float groundSnowAccumulation() const;
342 
344 
345  virtual void setRoadSnowAccumulation(float depth);
346  virtual float roadSnowAccumulation() const;
348 
350 
351  virtual void setSnowMinimumElevation(float elevation);
352  virtual float snowMinimumElevation() const;
354 
357  virtual void setSnowElevationTransition(float elevation);
358  virtual float snowElevationTransition() const;
360 
362 
363  virtual void setGroundRainAccumulation(float depth);
364  virtual float groundRainAccumulation() const;
366 
368 
369 
370 
371 
372  virtual DtUniqueID addLocalWind(WindType localWindType);
373  virtual void removeLocalWind(DtUniqueID id) const;
375 
377 
378  virtual void setLocalWindLocation(DtUniqueID id, DtVector loc);
380 
382 
383  virtual void setLocalWindSpeed(DtUniqueID id, float windSpeed);
385 
390  virtual float lightLevel() const;
391 
395  void loadDefaults(bool loadOnlyFactorySettings = false);
396 
398  void restore();
399 
401  void saveAsDefaults();
403 
405 
406  virtual void exportSettings(const std::string& filename);
407  virtual void importSettings(const std::string& filename);
409 
410  const DtSettingsBackup* settingsBackup() const
411  {
412  return mySettingsBackup;
413  }
414 
415  DtSettingsBackup* settingsBackup()
416  {
417  return mySettingsBackup;
418  }
419 
421  virtual float seaLevel() const;
423  virtual void initializeEnvironmentSettings();
424 
425  protected:
426 
427  typedef std::vector<DtCloudLayer> CloudLayersVector;
428 
430 
432  virtual void clearCloudsFromSky();
433 
434  virtual void resetClouds();
435 
436  virtual void sendToSkyAllCloudLayers();
437 
438  virtual void sendToSkyCloudLayerAdded(DtCloudLayerId layerId);
439  virtual void sendToSkyCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
440  virtual void sendToSkyCloudLayerRemoved(DtCloudLayerId layerId);
441  virtual void sendToSkyCloudLayerModified(DtCloudLayerId layerId);
442 
444 
445 
446  virtual void slot_allowSimMessagesSet(bool allowSimMessages);
447 
448  virtual void slot_cloudCoverReset();
449  virtual void slot_cloudCoverCloudCoverToBeRemoved(makArchives::DtCloudCoverType coverType);
450  virtual void slot_cloudCoverCloudLayerEnabledChanged(DtCloudLayerId layerId, bool enableState);
451  virtual void slot_cloudCoverCloudLayerModified(DtCloudLayerId layerId);
452  virtual void slot_cloudCoverCloudLayerPositionAndOrientationChanged(DtCloudLayerId layerId,
453  const DtVector& position, float orientation);
454  virtual void slot_cloudCoverCloudLayerAdded(DtCloudLayerId layerId);
455  virtual void slot_cloudCoverCloudLayerToBeRemoved(DtCloudLayerId layerId);
456 
458  virtual void slot_coordinateSystemChanged();
459 
461  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
462 
464  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
465 
467  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
468  double seaLevel);
469 
472  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
473  int range);
474 
476  virtual void slot_surgeDepthChanged(double depth);
477 
479  virtual void slot_depthOffsetChanged(double offset);
480 
482  virtual void updateEnvironment();
483 
486  virtual void initializeOcean();
487 
489  virtual void enableCurrentCloudCoverLayers();
490  virtual void disableCurrentCloudCoverLayers();
491 
492  virtual void autoSave();
493 
496  virtual void sendMarineEnvironmentToOceanObject();
497 
500  virtual void sendWeatherEnvironmentToSkyObject();
501 
502  protected:
505 
506  // makArchives::DtEnvironmentListRecord* mySettings;
507 
508  //We should refactor these classes and combine them to make a consistent way
509  // to send down environment settings to the RDE.
513 
516 
517  // This is an env record that reflects our current settings
519 
520  // This is an env list that reflects saved settings
522 
523  // This holds the DtLocalWindObjectAgents which
524  // ultimately sends the info to osgEarth
526 
527  float mySeaLevel;
528  };
529 
531  {
532  public:
533 
535  static DtEnvironmentCreator& instance(DtDe& de);
536 
538 
540  virtual ~DtEnvironmentCreator();
541 
542  DtEnvironment* create(DtDe& de);
543 
544  };
548  {
549  public:
550 
552  static DtEnvironmentSignaler& instance(DtDe& de);
553 
555  virtual ~DtEnvironmentSignaler();
556 
557  //Signaled when any of the atmospheric parameters change.
558  boost::signalslib::signal<void ()> signal_atmosphericParametersChanged;
559 
560  //Signaled when any of the precipitation parameters change.
561  boost::signalslib::signal<void ()> signal_precipitationSettingsChanged;
562 
563  //Signaled when cloud cover changes
564  boost::signalslib::signal<void (makArchives::DtCloudCoverType)> signal_cloudCoverChanged;
565 
566  boost::signalslib::signal<void (unsigned int layerId,
568 
569  boost::signalslib::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
570 
571  boost::signalslib::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
573 
574  boost::signalslib::signal<void (float height)> signal_fogHeightChanged;
575 
576  boost::signalslib::signal<void (const DtVector& color)> signal_fogColorChanged;
577 
578  //Signaled when air parameters change.
579  boost::signalslib::signal<void (float baseMSLAltitude)> signal_elevationalWindConfigurationRemoved;
580  boost::signalslib::signal<void (float oldBaseMSLAltitude, float newBaseMSLAltitude)> signal_elevationalWindConfigurationMoved;
581  boost::signalslib::signal<void (float baseMSLAltitude, float windSpeed, float windDirection)> signal_elevationalWindConfigurationAdded;
582  boost::signalslib::signal<void (float baseMSLAltitude, float windSpeed, float windDirection)> signal_elevationalWindConfigurationUpdated;
583  boost::signalslib::signal<void (float kelvins)> signal_ambientAirTemperatureChanged;
584  boost::signalslib::signal<void (float pressure)> signal_ambientAirPressureChanged;
585 
586  //Signaled when marine states change.
587  boost::signalslib::signal<void (unsigned int seastate)> signal_seaStateChanged;
588  boost::signalslib::signal<void (float radians)> signal_seaStateDirectionChanged;
589  boost::signalslib::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
590  boost::signalslib::signal<void (unsigned int swellstate)> signal_swellStateChanged;
591  boost::signalslib::signal<void (float radians)> signal_swellStateDirectionChanged;
592  boost::signalslib::signal<void (float distance)> signal_windFetchChanged;
593  boost::signalslib::signal<void (float chop)> signal_seaChoppinessChanged;
594  boost::signalslib::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
595  boost::signalslib::signal<void (double meters)> signal_underwaterVisibilityChanged;
596  boost::signalslib::signal<void (double normalizedValue)>
598  boost::signalslib::signal<void (double meters)> signal_surgeDepthChanged;
599  boost::signalslib::signal<void (double meters)> signal_depthOffsetChanged;
600 
601  boost::signalslib::signal<void (float kelvins)> signal_ambientWaterTemperatureChanged;
602  boost::signalslib::signal<void (float speed)> signal_waterCurrentSpeedChanged;
603  boost::signalslib::signal<void (float direction)> signal_waterCurrentDirectionChanged;
604  boost::signalslib::signal<void (float meters)> signal_tidalOffsetChanged;
605  boost::signalslib::signal<void (bool inOut)> signal_tidalDirectionChanged;
606  boost::signalslib::signal<void (unsigned int layer, float depth)>
608  boost::signalslib::signal<void (unsigned int layer, float permeability)>
610  boost::signalslib::signal< void(const std::string& environmentName) >
612  boost::signalslib::signal<void(float depth)> signal_groundSnowAccumulationChanged;
613  boost::signalslib::signal<void(float depth)> signal_roadSnowAccumulationChanged;
614  boost::signalslib::signal<void(float elevation)> signal_snowMinimumElevationChanged;
615  boost::signalslib::signal<void(float elevation)> signal_snowElevationTransitionChanged;
616  boost::signalslib::signal<void(float depth)> signal_groundRainAccumulationChanged;
617 
618  protected:
620  };
621 
626  {
627  public:
630  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
631 
634  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
635 
639  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
640 
642  virtual ~DtWeatherProcessorSignaler();
643 
645 
646  protected:
648 
649  private:
652  };
653 
655 }


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