VR-Forces 4.7 Class 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) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
16 
18 
20 #include <vrvUtil/event_signal.h>
21 
22 namespace makArchives
23 {
24  class DtCloudLayerRecord;
25  class DtEnvironmentListRecord;
26 }
27 
28 namespace makVrv
29 {
30  class DtDe;
31  class DtAgentManagerInterface;
32  class DtSkyObjectAgent;
33  class DtDynamicOceanObjectAgent;
34  class DtEventQueueInterface;
35  class DtSharedSettingsManager;
36  class DtOceanLayer;
37  class DtCloudLayer;
38  class DtOceanStateInterface;
39 
45  {
46  public:
47 
49  DtEnvironment(DtDe& de, DtAgentManagerInterface& sceneInterface);
50 
52  virtual ~DtEnvironment();
53 
55  virtual void clear();
56 
59  virtual void getRecord(makArchives::DtEnvironmentRecord& record);
60 
63  virtual void setFromRecord(
64  const makArchives::DtEnvironmentRecord& record);
65 
67  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
68 
76  virtual void saveEnvironment(const std::string& name);
77 
80  virtual void setEnvironment(const std::string& name);
81 
84  virtual void removeEnvironment(const std::string& name);
85 
87  virtual void renameEnvironment(
88  const std::string& oldName, const std::string& newName);
89 
91  virtual void getEnvironmentNames(std::vector<std::string>& names);
92 
95  virtual void setDefaultEnvironmentName(const std::string& name);
96 
99  virtual std::string defaultEnvironmentName() const;
101 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113  virtual void setCloudCover(DtVrfWeatherCloudState cloudCover, bool autoSave = true);
114  virtual DtVrfWeatherCloudState cloudCover() const;
116 
118 
119 
121  virtual int cloudLayerCount() const;
122 
125  virtual const DtCloudLayer& cloudLayer(unsigned int layerId) const;
126 
128  virtual void setCloudLayer(unsigned int layerId,
129  const DtCloudLayer& layer);
131 
133  virtual void addCloudLayer(const DtCloudLayer& layer);
134 
136  virtual void removeCloudLayer(unsigned int layerId);
137 
139  virtual void removeCloudLayers();
140 
144  virtual void setCloudLayerEnabled(unsigned int layerId, bool enabled);
145 
147 
148  virtual bool useCustomCloudCover() const;
149  virtual void setUseCustomCloudCover(bool enabled);
151 
153 
154  virtual void setAirTurbidity(float turbidity, bool autoSave = true);
155  virtual float airTurbidity() const;
157 
159 
160  virtual void setVisibleDistance(float distance, bool autoSave = true);
161  virtual float visibleDistance() const;
163 
165 
166  virtual void setPrecipitationType(PrecipitationType type, bool autoSave = true);
167  virtual PrecipitationType precipitationType() const;
169 
171 
172  virtual void setPrecipitationIntensity(float intensity, bool autoSave = true);
173  virtual float precipitationIntensity() const;
175 
177 
178  virtual void setWindSpeed(float speed, bool autoSave = true);
179  virtual float windSpeed() const;
181 
183 
184  virtual void setWindDirection(float direction, bool autoSave = true);
185  virtual float windDirection() const;
187 
189 
190  virtual void setAmbientAirTemperature(float temperature, bool autoSave = true);
191  virtual float ambientAirTemperature() const;
193 
195 
196  virtual void setFogHeight(float height, bool autoSave = true);
197  virtual float fogHeight() const;
199 
201 
202  virtual void setFogColor(const DtVector& color, bool autoSave = true);
203  virtual DtVector fogColor() const;
205 
207 
208  virtual void setSeaState(int state, bool autoSave = true);
209  virtual int seaState() const;
211 
213 
214  virtual void setSeaStateDirection(float dir, bool autoSave = true);
215  virtual float seaStateDirection() const;
217 
219 
220  virtual void setWindDrivenSeaState(bool enabled, bool autoSave = true);
221  virtual bool windDrivenSeaState() const;
223 
225 
226  virtual void setSwellState(int state, bool autoSave = true);
227  virtual int swellState() const;
229 
231 
232  virtual void setSwellStateDirection(float dir, bool autoSave = true);
233  virtual float swellStateDirection() const;
235 
237 
238  virtual void setWindFetch(float distance, bool autoSave = true);
239  virtual float windFetch() const;
241 
243 
244  virtual void setSeaChoppiness(float chop, bool autoSave = true);
245  virtual float seaChoppiness() const;
247 
250  void setUnderwaterVisibilityEnabled(bool enabled, bool autoSave = true);
251  bool underwaterVisibilityEnabled() const;
253 
255 
256  virtual void setUnderwaterVisibility(float distance, bool autoSave = true);
257  virtual float underwaterVisibility() const;
259 
261 
262  virtual void setWaterSurfaceTransparency(float normalizedValue, bool autoSave = true);
263  virtual float waterSurfaceTransparency() const;
265 
267 
268  virtual void setSurgeDepth(float meters, bool autoSave = true);
269  virtual float surgeDepth() const;
271 
273 
274  virtual void setDepthOffset(float meters, bool autoSave = true);
275  virtual float depthOffset() const;
277 
279 
280  virtual void setAmbientWaterTemperature(float temperature, bool autoSave = true);
281  virtual float ambientWaterTemperature() const;
283 
285 
286  virtual void setWaterCurrentSpeed(float speed, bool autoSave = true);
287  virtual float waterCurrentSpeed() const;
289 
291 
292 
293  virtual void setWaterCurrentDirection(float direction, bool autoSave = true);
294  virtual float waterCurrentDirection() const;
296 
298 
299  virtual void setTidalOffset(float meters, bool autoSave = true);
300  virtual float tidalOffset() const;
302 
304 
305  virtual void setTidalDirection(bool inOut, bool autoSave = true);
306  virtual bool tidalDirection() const;
308 
310 
311  virtual void setThermoclineDepth(unsigned int layer, float depth);
312  virtual float thermoclineDepth(unsigned int layer) const;
314 
316 
317  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
318  virtual float thermoclinePermeability(unsigned int layer) const;
320 
325  virtual float lightLevel() const;
326 
330  void loadDefaults(bool loadOnlyFactorySettings = false);
331 
333  void restore();
334 
336  void saveAsDefaults();
338 
340 
341  virtual void exportSettings(const std::string& filename);
342  virtual void importSettings(const std::string& filename);
344 
345  const DtSettingsBackup* settingsBackup() const
346  {
347  return mySettingsBackup;
348  }
349 
350  DtSettingsBackup* settingsBackup()
351  {
352  return mySettingsBackup;
353  }
354 
356  virtual bool getIsUnderwater() const;
357 
371  virtual bool isOverWater(const DtVector& localPosition, bool isVisible=true);
372 
374  virtual float getMaximumWaveHeight();
375 
377  virtual float seaLevel() const;
378 
381  virtual void setOceanManager(DtOceanStateInterface* oceanManager);
382 
384  virtual void deleteOceanManager();
385 
387  virtual void initializeEnvironmentSettings();
388 
389  protected:
390 
391  typedef std::vector<DtCloudLayer> CloudLayersVector;
392 
394  virtual void createCloudLayers();
395 
397  virtual void slot_coordinateSystemChanged();
398 
400  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
401 
403  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
404 
406  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
407  double seaLevel);
408 
411  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
412  int range);
413 
415  virtual void slot_surgeDepthChanged(double depth);
416 
418  virtual void slot_depthOffsetChanged(double offset);
419 
421  virtual void updateEnvironment();
422 
425  virtual void initializeOcean();
426 
428  virtual void enableCurrentCloudCoverLayers();
429 
430  virtual void processAddedCloudLayer(const DtCloudLayer& layer,
431  int cloudIndex);
432 
433  virtual void autoSave();
434 
437  virtual void sendMarineEnvironmentToOceanObject();
438 
441  virtual void sendWeatherEnvironmentToSkyObject();
442 
445  virtual void sendCloudCoverToSkyObject();
446 
447  protected:
450 
451 
452  // makArchives::DtEnvironmentListRecord* mySettings;
453 
454  DtSkyObjectAgent* mySkyObject;
455  DtDynamicOceanObjectAgent* myDynamicOceanObject;
458 
459  // This is an env record that reflects our current settings
461 
462  // This is an env list that reflects saved settings
464 
465  // This is the cloud layers currently in use, whether custom or
466  // from the sky conditions manager
468 
469  // This is an interface to allow vrvOsg to query specific
470  // vrvTriton functions without an explicit dependency
472 
473  // Cloud covers manager
474  std::multimap<DtVrfWeatherCloudState, int > myCoverCloudsMap;
475 
476  // set to true if pre-loading clouds on start up
478 
479  };
480 
484  {
485  public:
486 
488  static DtEnvironmentSignaler& instance(DtDe& de);
489 
491  virtual ~DtEnvironmentSignaler();
492 
493  //Signaled when any of the atmospheric parameters change.
494  boost::signal<void ()> signal_atmosphericParametersChanged;
495 
496  //Signaled when any of the precipitation parameters change.
497  boost::signal<void ()> signal_precipitationSettingsChanged;
498 
499  //Signaled when cloud cover changes
500  boost::signal<void (DtVrfWeatherCloudState)> signal_cloudCoverChanged;
501 
502  boost::signal<void (unsigned int layerId,
504 
505  boost::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
506 
507  boost::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
509 
510  boost::signal<void (float height)> signal_fogHeightChanged;
511 
512  boost::signal<void (const DtVector& color)> signal_fogColorChanged;
513 
514  //Signaled when air parameters change.
515  boost::signal<void (float speed)> signal_windSpeedChanged;
516 
517  boost::signal<void (float direction)> signal_windDirectionChanged;
518  boost::signal<void (float celsius)> signal_ambientAirTemperatureChanged;
519 
520  //Signaled when marine states change.
521  boost::signal<void (unsigned int seastate)> signal_seaStateChanged;
522  boost::signal<void (float radians)> signal_seaStateDirectionChanged;
523  boost::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
524  boost::signal<void (unsigned int swellstate)> signal_swellStateChanged;
525  boost::signal<void (float radians)> signal_swellStateDirectionChanged;
526  boost::signal<void (float distance)> signal_windFetchChanged;
527  boost::signal<void (float chop)> signal_seaChoppinessChanged;
528  boost::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
529  boost::signal<void (double meters)> signal_underwaterVisibilityChanged;
530  boost::signal<void (double normalizedValue)>
532  boost::signal<void (double meters)> signal_surgeDepthChanged;
533  boost::signal<void (double meters)> signal_depthOffsetChanged;
534 
535  boost::signal<void (float celsius)> signal_ambientWaterTemperatureChanged;
536  boost::signal<void (float speed)> signal_waterCurrentSpeedChanged;
537  boost::signal<void (float direction)> signal_waterCurrentDirectionChanged;
538  boost::signal<void (float meters)> signal_tidalOffsetChanged;
539  boost::signal<void (bool inOut)> signal_tidalDirectionChanged;
540  boost::signal<void (unsigned int layer, float depth)>
542  boost::signal<void (unsigned int layer, float permeability)>
544  boost::signal < void(const std::string& environmentName) >
546 
547  protected:
549  };
550 
555  {
556  public:
559  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
560 
563  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
564 
568  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
569 
571  virtual ~DtWeatherProcessorSignaler();
572 
574 
575  protected:
577 
578  private:
581  };
582 
584 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)