VR-Vantage 2.5 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) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
16 
19 
21 #include <vrvUtil/event_signal.h>
22 
23 namespace makArchives
24 {
25  class DtCloudLayerRecord;
26  class DtEnvironmentListRecord;
27 }
28 
29 namespace makVrv
30 {
31  class DtDe;
32  class DtAgentManagerInterface;
33  class DtSkyObjectAgent;
34  class DtDynamicOceanObjectAgent;
35  class DtEventQueueInterface;
36  class DtSharedSettingsManager;
37  class DtOceanLayer;
38  class DtCloudLayer;
39  class DtOceanStateInterface;
40 
46  {
47  public:
48 
50  DtEnvironment(DtDe& de);
51 
53  virtual ~DtEnvironment();
54 
57  virtual void init();
58 
61  virtual void getRecord(makArchives::DtEnvironmentRecord& record);
62 
65  virtual void setFromRecord(
66  const makArchives::DtEnvironmentRecord& record);
67 
69  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
70 
78  virtual void saveEnvironment(const std::string& name);
79 
82  virtual void setEnvironment(const std::string& name);
83 
86  virtual void removeEnvironment(const std::string& name);
87 
89  virtual void renameEnvironment(
90  const std::string& oldName, const std::string& newName);
91 
93  virtual void getEnvironmentNames(std::vector<std::string>& names);
94 
97  virtual void setDefaultEnvironmentName(const std::string& name);
98 
101  virtual std::string defaultEnvironmentName() const;
103 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115  virtual void setCloudCover(makArchives::DtCloudCoverType cloudCover);
116  virtual makArchives::DtCloudCoverType cloudCover() const;
118 
120 
121  virtual void setAirTurbidity(float turbidity);
122  virtual float airTurbidity() const;
124 
126 
127  virtual void setVisibleDistance(float distance);
128  virtual float visibleDistance() const;
130 
132 
133  virtual void setPrecipitationType(PrecipitationType type);
134  virtual PrecipitationType precipitationType() const;
136 
138 
139  virtual void setPrecipitationIntensity(float intensity);
140  virtual float precipitationIntensity() const;
142 
144 
145  virtual void setWindSpeed(float speed);
146  virtual float windSpeed() const;
148 
150 
151  virtual void setWindDirection(float direction);
152  virtual float windDirection() const;
154 
156 
157  virtual void setAmbientAirTemperature(float temperature);
158  virtual float ambientAirTemperature() const;
160 
162 
163  virtual void setFogHeight(float height);
164  virtual float fogHeight() const;
166 
168 
169  virtual void setFogColor(const DtVector& color);
170  virtual DtVector fogColor() const;
172 
174 
175  virtual void setSeaState(int state);
176  virtual int seaState() const;
178 
180 
181  virtual void setSeaStateDirection(float dir);
182  virtual float seaStateDirection() const;
184 
186 
187  virtual void setWindDrivenSeaState(bool enabled);
188  virtual bool windDrivenSeaState() const;
190 
192 
193  virtual void setSwellState(int state);
194  virtual int swellState() const;
196 
198 
199  virtual void setSwellStateDirection(float dir);
200  virtual float swellStateDirection() const;
202 
204 
205  virtual void setWindFetch(float distance);
206  virtual float windFetch() const;
208 
210 
211  virtual void setSeaChoppiness(float chop);
212  virtual float seaChoppiness() const;
214 
217  void setUnderwaterVisibilityEnabled(bool enabled);
218  bool underwaterVisibilityEnabled() const;
220 
222 
223  virtual void setUnderwaterVisibility(float distance);
224  virtual float underwaterVisibility() const;
226 
228 
229  virtual void setWaterSurfaceTransparency(float normalizedValue);
230  virtual float waterSurfaceTransparency() const;
232 
234 
235  virtual void setSurgeDepth(float meters);
236  virtual float surgeDepth() const;
238 
240 
241  virtual void setDepthOffset(float meters);
242  virtual float depthOffset() const;
244 
246 
247  virtual void setAmbientWaterTemperature(float temperature);
248  virtual float ambientWaterTemperature() const;
250 
252 
253  virtual void setWaterCurrentSpeed(float speed);
254  virtual float waterCurrentSpeed() const;
256 
258 
259 
260  virtual void setWaterCurrentDirection(float direction);
261  virtual float waterCurrentDirection() const;
263 
265 
266  virtual void setTidalOffset(float meters);
267  virtual float tidalOffset() const;
269 
271 
272  virtual void setTidalDirection(bool inOut);
273  virtual bool tidalDirection() const;
275 
277 
278  virtual void setThermoclineDepth(unsigned int layer, float depth);
279  virtual float thermoclineDepth(unsigned int layer) const;
281 
283 
284  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
285  virtual float thermoclinePermeability(unsigned int layer) const;
287 
292  virtual float lightLevel() const;
293 
297  void loadDefaults(bool loadOnlyFactorySettings = false);
298 
300  void restore();
301 
303  void saveAsDefaults();
305 
307 
308  virtual void exportSettings(const std::string& filename);
309  virtual void importSettings(const std::string& filename);
311 
312  const DtSettingsBackup* settingsBackup() const
313  {
314  return mySettingsBackup;
315  }
316 
317  DtSettingsBackup* settingsBackup()
318  {
319  return mySettingsBackup;
320  }
321 
323  virtual bool getIsUnderwater() const;
324 
338  virtual bool isOverWater(const DtVector& localPosition, bool isVisible=true);
339 
341  virtual float getMaximumWaveHeight();
342 
344  virtual float seaLevel() const;
345 
348  virtual void setOceanManager(DtOceanStateInterface* oceanManager);
349 
351  virtual void deleteOceanManager();
352 
354  virtual void initializeEnvironmentSettings();
355 
356  protected:
357 
358  typedef std::vector<DtCloudLayer> CloudLayersVector;
359 
361 
363  virtual void clearCloudsFromSky();
364 
365  virtual void resetClouds();
366 
367  virtual void sendToSkyAllCloudLayers();
368 
369  virtual void sendToSkyCloudLayerAdded(DtCloudLayerId layerId);
370  virtual void sendToSkyCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
371  virtual void sendToSkyCloudLayerRemoved(DtCloudLayerId layerId);
372  virtual void sendToSkyCloudLayerModified(DtCloudLayerId layerId);
373 
375 
376 
377  virtual void slot_cloudCoverReset();
378  virtual void slot_cloudCoverCloudCoverToBeRemoved(makArchives::DtCloudCoverType coverType);
379  virtual void slot_cloudCoverCloudLayerEnabledChanged(DtCloudLayerId layerId, bool enableState);
380  virtual void slot_cloudCoverCloudLayerModified(DtCloudLayerId layerId);
381  virtual void slot_cloudCoverCloudLayerPositionAndOrientationChanged(DtCloudLayerId layerId,
382  const DtVector& position, float orientation);
383  virtual void slot_cloudCoverCloudLayerAdded(DtCloudLayerId layerId);
384  virtual void slot_cloudCoverCloudLayerToBeRemoved(DtCloudLayerId layerId);
385 
387  virtual void slot_coordinateSystemChanged();
388 
390  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
391 
393  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
394 
396  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
397  double seaLevel);
398 
401  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
402  int range);
403 
405  virtual void slot_surgeDepthChanged(double depth);
406 
408  virtual void slot_depthOffsetChanged(double offset);
409 
411  virtual void updateEnvironment();
412 
415  virtual void initializeOcean();
416 
418  virtual void enableCurrentCloudCoverLayers();
419  virtual void disableCurrentCloudCoverLayers();
420 
421  virtual void autoSave();
422 
425  virtual void sendMarineEnvironmentToOceanObject();
426 
429  virtual void sendWeatherEnvironmentToSkyObject();
430 
431  protected:
434 
435  // makArchives::DtEnvironmentListRecord* mySettings;
436 
441 
442  // This is an env record that reflects our current settings
444 
445  // This is an env list that reflects saved settings
447 
448  // This is an interface to allow vrvOsg to query specific
449  // vrvTriton functions without an explicit dependency
451  };
452 
454  {
455  public:
456 
458  static DtEnvironmentCreator& instance(DtDe& de);
459 
461 
463  virtual ~DtEnvironmentCreator();
464 
465  DtEnvironment* create(DtDe& de);
466 
467  };
471  {
472  public:
473 
475  static DtEnvironmentSignaler& instance(DtDe& de);
476 
478  virtual ~DtEnvironmentSignaler();
479 
480  //Signaled when any of the atmospheric parameters change.
481  boost::signal<void ()> signal_atmosphericParametersChanged;
482 
483  //Signaled when any of the precipitation parameters change.
484  boost::signal<void ()> signal_precipitationSettingsChanged;
485 
486  //Signaled when cloud cover changes
487  boost::signal<void (makArchives::DtCloudCoverType)> signal_cloudCoverChanged;
488 
489  boost::signal<void (unsigned int layerId,
491 
492  boost::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
493 
494  boost::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
496 
497  boost::signal<void (float height)> signal_fogHeightChanged;
498 
499  boost::signal<void (const DtVector& color)> signal_fogColorChanged;
500 
501  //Signaled when air parameters change.
502  boost::signal<void (float speed)> signal_windSpeedChanged;
503 
504  boost::signal<void (float direction)> signal_windDirectionChanged;
505  boost::signal<void (float celsius)> signal_ambientAirTemperatureChanged;
506 
507  //Signaled when marine states change.
508  boost::signal<void (unsigned int seastate)> signal_seaStateChanged;
509  boost::signal<void (float radians)> signal_seaStateDirectionChanged;
510  boost::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
511  boost::signal<void (unsigned int swellstate)> signal_swellStateChanged;
512  boost::signal<void (float radians)> signal_swellStateDirectionChanged;
513  boost::signal<void (float distance)> signal_windFetchChanged;
514  boost::signal<void (float chop)> signal_seaChoppinessChanged;
515  boost::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
516  boost::signal<void (double meters)> signal_underwaterVisibilityChanged;
517  boost::signal<void (double normalizedValue)>
519  boost::signal<void (double meters)> signal_surgeDepthChanged;
520  boost::signal<void (double meters)> signal_depthOffsetChanged;
521 
522  boost::signal<void (float celsius)> signal_ambientWaterTemperatureChanged;
523  boost::signal<void (float speed)> signal_waterCurrentSpeedChanged;
524  boost::signal<void (float direction)> signal_waterCurrentDirectionChanged;
525  boost::signal<void (float meters)> signal_tidalOffsetChanged;
526  boost::signal<void (bool inOut)> signal_tidalDirectionChanged;
527  boost::signal<void (unsigned int layer, float depth)>
529  boost::signal<void (unsigned int layer, float permeability)>
531  boost::signal < void(const std::string& environmentName) >
533 
534  protected:
536  };
537 
542  {
543  public:
546  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
547 
550  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
551 
555  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
556 
558  virtual ~DtWeatherProcessorSignaler();
559 
561 
562  protected:
564 
565  private:
568  };
569 
571 }


Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)