VR-Forces 4.8 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) 2020 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  class DtWeatherEffectsObjectAgent;
41 
47  {
48  public:
49 
51  DtEnvironment(DtDe& de);
52 
54  virtual ~DtEnvironment();
55 
58  virtual void init();
59 
62  virtual void getRecord(makArchives::DtEnvironmentRecord& record);
63 
66  virtual void setFromRecord(
67  const makArchives::DtEnvironmentRecord& record);
68 
70  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
71 
79  virtual void saveEnvironment(const std::string& name);
80 
83  virtual void setEnvironment(const std::string& name);
84 
87  virtual void removeEnvironment(const std::string& name);
88 
90  virtual void renameEnvironment(
91  const std::string& oldName, const std::string& newName);
92 
94  virtual void getEnvironmentNames(std::vector<std::string>& names);
95 
98  virtual void setDefaultEnvironmentName(const std::string& name);
99 
102  virtual std::string defaultEnvironmentName() const;
104 
106  virtual void setCloudCover(makArchives::DtCloudCoverType cloudCover);
117  virtual makArchives::DtCloudCoverType cloudCover() const;
119 
121  virtual void setAirTurbidity(float turbidity);
123  virtual float airTurbidity() const;
125 
127  virtual void setVisibleDistance(float distance);
129  virtual float visibleDistance() const;
131 
133  virtual void setPrecipitationType(PrecipitationType type);
135  virtual PrecipitationType precipitationType() const;
137 
139  virtual void setPrecipitationIntensity(float intensity);
141  virtual float precipitationIntensity() const;
143 
145  virtual void setWindSpeed(float speed);
147  virtual float windSpeed() const;
149 
151  virtual void setWindDirection(float direction);
153  virtual float windDirection() const;
155 
157  virtual void setAmbientAirTemperature(float temperature);
159  virtual float ambientAirTemperature() const;
161 
163  virtual void setFogHeight(float height);
165  virtual float fogHeight() const;
167 
169  virtual void setFogColor(const DtVector& color);
171  virtual DtVector fogColor() const;
173 
175  virtual void setSeaState(int state);
177  virtual int seaState() const;
179 
181  virtual void setSeaStateDirection(float dir);
183  virtual float seaStateDirection() const;
185 
187  virtual void setWindDrivenSeaState(bool enabled);
189  virtual bool windDrivenSeaState() const;
191 
193  virtual void setSwellState(int state);
195  virtual int swellState() const;
197 
199  virtual void setSwellStateDirection(float dir);
201  virtual float swellStateDirection() const;
203 
205  virtual void setWindFetch(float distance);
207  virtual float windFetch() const;
209 
211  virtual void setSeaChoppiness(float chop);
213  virtual float seaChoppiness() const;
215 
218  void setUnderwaterVisibilityEnabled(bool enabled);
219  bool underwaterVisibilityEnabled() const;
221 
223  virtual void setUnderwaterVisibility(float distance);
225  virtual float underwaterVisibility() const;
227 
229  virtual void setWaterSurfaceTransparency(float normalizedValue);
231  virtual float waterSurfaceTransparency() const;
233 
235  virtual void setSurgeDepth(float meters);
237  virtual float surgeDepth() const;
239 
241  virtual void setDepthOffset(float meters);
243  virtual float depthOffset() const;
245 
247  virtual void setAmbientWaterTemperature(float temperature);
249  virtual float ambientWaterTemperature() const;
251 
253  virtual void setWaterCurrentSpeed(float speed);
255  virtual float waterCurrentSpeed() const;
257 
259  virtual void setWaterCurrentDirection(float direction);
262  virtual float waterCurrentDirection() const;
264 
266  virtual void setTidalOffset(float meters);
268  virtual float tidalOffset() const;
270 
272  virtual void setTidalDirection(bool inOut);
274  virtual bool tidalDirection() const;
276 
278  virtual void setThermoclineDepth(unsigned int layer, float depth);
280  virtual float thermoclineDepth(unsigned int layer) const;
282 
284  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
286  virtual float thermoclinePermeability(unsigned int layer) const;
288 
290  virtual void setGroundSnowAccumulation(float depth);
292  virtual float groundSnowAccumulation() const;
294 
296  virtual void setRoadSnowAccumulation(float depth);
298  virtual float roadSnowAccumulation() const;
300 
302  virtual void setSnowMinimumElevation(float elevation);
304  virtual float snowMinimumElevation() const;
306 
309  virtual void setSnowElevationTransition(float elevation);
310  virtual float snowElevationTransition() const;
312 
314  virtual void setGroundRainAccumulation(float depth);
316  virtual float groundRainAccumulation() const;
318 
323  virtual float lightLevel() const;
324 
328  void loadDefaults(bool loadOnlyFactorySettings = false);
329 
331  void restore();
332 
334  void saveAsDefaults();
336 
338  virtual void exportSettings(const std::string& filename);
340  virtual void importSettings(const std::string& filename);
342 
344  {
345  return mySettingsBackup;
346  }
347 
349  {
350  return mySettingsBackup;
351  }
352 
354  virtual bool getIsUnderwater() const;
355 
369  virtual bool isOverWater(const DtVector& localPosition, bool isVisible=true);
370 
372  virtual float getMaximumWaveHeight();
373 
375  virtual float seaLevel() const;
376 
379  virtual void setOceanManager(DtOceanStateInterface* oceanManager);
380 
382  virtual void deleteOceanManager();
383 
385  virtual void initializeEnvironmentSettings();
386 
387  protected:
388 
389  typedef std::vector<DtCloudLayer> CloudLayersVector;
390 
392 
394  virtual void clearCloudsFromSky();
395 
396  virtual void resetClouds();
397 
398  virtual void sendToSkyAllCloudLayers();
399 
400  virtual void sendToSkyCloudLayerAdded(DtCloudLayerId layerId);
401  virtual void sendToSkyCloudLayerEnabled(DtCloudLayerId layerId, bool enabled);
402  virtual void sendToSkyCloudLayerRemoved(DtCloudLayerId layerId);
403  virtual void sendToSkyCloudLayerModified(DtCloudLayerId layerId);
404 
406 
408  virtual void slot_cloudCoverReset();
409  virtual void slot_cloudCoverCloudCoverToBeRemoved(makArchives::DtCloudCoverType coverType);
410  virtual void slot_cloudCoverCloudLayerEnabledChanged(DtCloudLayerId layerId, bool enableState);
411  virtual void slot_cloudCoverCloudLayerModified(DtCloudLayerId layerId);
412  virtual void slot_cloudCoverCloudLayerPositionAndOrientationChanged(DtCloudLayerId layerId,
413  const DtVector& position, float orientation);
414  virtual void slot_cloudCoverCloudLayerAdded(DtCloudLayerId layerId);
415  virtual void slot_cloudCoverCloudLayerToBeRemoved(DtCloudLayerId layerId);
416 
418  virtual void slot_coordinateSystemChanged();
419 
421  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
422 
424  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
425 
427  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
428  double seaLevel);
429 
432  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
433  int range);
434 
436  virtual void slot_surgeDepthChanged(double depth);
437 
439  virtual void slot_depthOffsetChanged(double offset);
440 
442  virtual void updateEnvironment();
443 
446  virtual void initializeOcean();
447 
449  virtual void enableCurrentCloudCoverLayers();
450  virtual void disableCurrentCloudCoverLayers();
451 
452  virtual void autoSave();
453 
456  virtual void sendMarineEnvironmentToOceanObject();
457 
460  virtual void sendWeatherEnvironmentToSkyObject();
461 
462  protected:
465 
466  // makArchives::DtEnvironmentListRecord* mySettings;
467 
468  //We should refactor these classes and combine them to make a consistent way
469  // to send down environment settings to the RDE.
470  DtSkyObjectAgent* mySkyObject;
471  DtDynamicOceanObjectAgent* myDynamicOceanObject;
472  DtWeatherEffectsObjectAgent* myWeatherEffectsObject;
473 
476 
477  // This is an env record that reflects our current settings
479 
480  // This is an env list that reflects saved settings
482 
483  // This is an interface to allow vrvOsg to query specific
484  // vrvTriton functions without an explicit dependency
486  };
487 
489  {
490  public:
491 
493  static DtEnvironmentCreator& instance(DtDe& de);
494 
496 
498  virtual ~DtEnvironmentCreator();
499 
500  DtEnvironment* create(DtDe& de);
501 
502  };
506  {
507  public:
508 
510  static DtEnvironmentSignaler& instance(DtDe& de);
511 
513  virtual ~DtEnvironmentSignaler();
514 
515  //Signaled when any of the atmospheric parameters change.
516  boost::signal<void ()> signal_atmosphericParametersChanged;
517 
518  //Signaled when any of the precipitation parameters change.
519  boost::signal<void ()> signal_precipitationSettingsChanged;
520 
521  //Signaled when cloud cover changes
522  boost::signal<void (makArchives::DtCloudCoverType)> signal_cloudCoverChanged;
523 
524  boost::signal<void (unsigned int layerId,
526 
527  boost::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
528 
529  boost::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
531 
532  boost::signal<void (float height)> signal_fogHeightChanged;
533 
534  boost::signal<void (const DtVector& color)> signal_fogColorChanged;
535 
536  //Signaled when air parameters change.
537  boost::signal<void (float speed)> signal_windSpeedChanged;
538 
539  boost::signal<void (float direction)> signal_windDirectionChanged;
540  boost::signal<void (float celsius)> signal_ambientAirTemperatureChanged;
541 
542  //Signaled when marine states change.
543  boost::signal<void (unsigned int seastate)> signal_seaStateChanged;
544  boost::signal<void (float radians)> signal_seaStateDirectionChanged;
545  boost::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
546  boost::signal<void (unsigned int swellstate)> signal_swellStateChanged;
547  boost::signal<void (float radians)> signal_swellStateDirectionChanged;
548  boost::signal<void (float distance)> signal_windFetchChanged;
549  boost::signal<void (float chop)> signal_seaChoppinessChanged;
550  boost::signal<void (bool enable)> signal_underwaterVisibilityEnabledChanged;
551  boost::signal<void (double meters)> signal_underwaterVisibilityChanged;
552  boost::signal<void (double normalizedValue)>
554  boost::signal<void (double meters)> signal_surgeDepthChanged;
555  boost::signal<void (double meters)> signal_depthOffsetChanged;
556 
557  boost::signal<void (float celsius)> signal_ambientWaterTemperatureChanged;
558  boost::signal<void (float speed)> signal_waterCurrentSpeedChanged;
559  boost::signal<void (float direction)> signal_waterCurrentDirectionChanged;
560  boost::signal<void (float meters)> signal_tidalOffsetChanged;
561  boost::signal<void (bool inOut)> signal_tidalDirectionChanged;
562  boost::signal<void (unsigned int layer, float depth)>
564  boost::signal<void (unsigned int layer, float permeability)>
566  boost::signal < void(const std::string& environmentName) >
568  boost::signal<void(float depth)> signal_groundSnowAccumulationChanged;
569  boost::signal<void(float depth)> signal_roadSnowAccumulationChanged;
570  boost::signal<void(float elevation)> signal_snowMinimumElevationChanged;
571  boost::signal<void(float elevation)> signal_snowElevationTransitionChanged;
572  boost::signal<void(float depth)> signal_groundRainAccumulationChanged;
573 
574  protected:
576  };
577 
582  {
583  public:
586  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
587 
590  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
591 
595  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
596 
598  virtual ~DtWeatherProcessorSignaler();
599 
601 
602  protected:
604 
605  private:
608  };
609 
611 }
DtRecordSettingsBackup< DtEnvironment, makArchives::DtEnvironmentRecord > DtEnvironmentSettingsBackup
Definition: DtEnvironment.h:610
DtOceanStateInterface * myOceanManager
Definition: DtEnvironment.h:485
DtDe & myDe
Definition: DtEnvironment.h:463
Virtual base class.
Definition: DtVirtualBaseClass.h:22
The declaration of the makVrv::DtEnvironmentInterface class.
Definition: DtEnvironment.h:488
boost::signal< void(unsigned int layerId, const DtCloudLayer &changedLayer)> signal_cloudLayerChanged
Definition: DtEnvironment.h:530
boost::signal< void(float speed)> signal_waterCurrentSpeedChanged
Definition: DtEnvironment.h:558
boost::signal< void(float speed)> signal_windSpeedChanged
Definition: DtEnvironment.h:537
boost::signal< void(float direction)> signal_windDirectionChanged
Definition: DtEnvironment.h:539
boost::signal< void()> signal_precipitationSettingsChanged
Definition: DtEnvironment.h:519
DtSettingsBackup * settingsBackup()
Definition: DtEnvironment.h:348
boost::signal< void(float depth)> signal_groundRainAccumulationChanged
Definition: DtEnvironment.h:572
boost::signal< void(unsigned int layerId)> signal_cloudLayerToBeDestroyed
Definition: DtEnvironment.h:527
boost::signal< void(float chop)> signal_seaChoppinessChanged
Definition: DtEnvironment.h:549
makArchives::DtEnvironmentRecord myCurrentSettings
Definition: DtEnvironment.h:478
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:45
The declaration of the makVrv::DtEnvironmentList class.
boost::signal< void(double meters)> signal_depthOffsetChanged
Definition: DtEnvironment.h:555
DtEnvironmentList myEnvironmentList
Definition: DtEnvironment.h:481
boost::signal< void(makArchives::DtCloudCoverType)> signal_cloudCoverChanged
Definition: DtEnvironment.h:522
The makVrv::DtRecordSettingsBackup is a templaced class that settings records will use in order to ba...
Definition: DtRecordSettingsBackup.h:103
The DtEnvironment configures the environmental effects for a scene.
Definition: DtEnvironment.h:46
The weather processor signaler class is used to connect the Environment Widget with the WeatherProces...
Definition: DtEnvironment.h:581
Contains makVrv::event_signal class.
boost::signal< void(float direction)> signal_waterCurrentDirectionChanged
Definition: DtEnvironment.h:559
The signaler for the dt environment.
Definition: DtEnvironment.h:505
The event queue interface is a cross thread event queue used to emit event_signal across thread bound...
Definition: DtEventQueueInterface.h:29
boost::signal< void(float depth)> signal_groundSnowAccumulationChanged
Definition: DtEnvironment.h:568
boost::signal< void(const std::string &environmentName) > signal_environmentChanged
Definition: DtEnvironment.h:567
boost::signal< void(double normalizedValue)> signal_waterSurfaceTransparencyChanged
Definition: DtEnvironment.h:553
const DtSettingsBackup * settingsBackup() const
Definition: DtEnvironment.h:343
boost::signal< void(bool inOut)> signal_tidalDirectionChanged
Definition: DtEnvironment.h:561
boost::signal< void(unsigned int layer, float depth)> signal_thermoclineDepthChanged
Definition: DtEnvironment.h:563
boost::signal< void(float elevation)> signal_snowElevationTransitionChanged
Definition: DtEnvironment.h:571
event_signal< void() > signal_refreshRemoteWeather
Definition: DtEnvironment.h:600
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
The DtEnvironmentInterface is an interface class providing abstraction for different managers of envi...
Definition: DtEnvironmentInterface.h:38
boost::signal< void(float height)> signal_fogHeightChanged
Definition: DtEnvironment.h:532
DtRecordSettingsBackupInterface * mySettingsBackup
Definition: DtEnvironment.h:474
boost::signal< void(float radians)> signal_seaStateDirectionChanged
Definition: DtEnvironment.h:544
The declaration of the makArchives::DtEnvironmentRecord class.
DtSkyObjectAgent * mySkyObject
Definition: DtEnvironment.h:470
DtCloudCoverType
Definition: DtCloudCoverType.h:14
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
boost::signal< void(float distance)> signal_windFetchChanged
Definition: DtEnvironment.h:548
Representation of a single cloud layer.
Definition: DtCloudLayer.h:34
Record of environment/weather settings Includes precipitation, air, and clouds.
Definition: DtEnvironmentRecord.h:24
boost::signal< void(unsigned int seastate)> signal_seaStateChanged
Definition: DtEnvironment.h:543
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:26
boost::signal< void(float celsius)> signal_ambientWaterTemperatureChanged
Definition: DtEnvironment.h:557
DtWeatherEffectsObjectAgent * myWeatherEffectsObject
Definition: DtEnvironment.h:472
DtAgentManagerInterface & mySceneInterface
Definition: DtEnvironment.h:464
PrecipitationType
Definition: DtEnvironmentInterface.h:42
The ocean layer is a type of terrain layer which contains information about an area that should be re...
Definition: DtOceanLayer.h:27
Base class to provide boost signal/slot management.
boost::signal< void()> signal_atmosphericParametersChanged
Definition: DtEnvironment.h:516
boost::signal< void(const DtVector &color)> signal_fogColorChanged
Definition: DtEnvironment.h:534
boost::signal< void(unsigned int layer, float permeability)> signal_thermoclinePermeabilityChanged
Definition: DtEnvironment.h:565
boost::signal< void(float elevation)> signal_snowMinimumElevationChanged
Definition: DtEnvironment.h:570
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
boost::signal< void(unsigned int layerId, const DtCloudLayer &newLayer)> signal_cloudLayerAdded
Definition: DtEnvironment.h:525
long long DtCloudLayerId
Definition: DtCloudLayer.h:26
boost::signal< void(bool enable)> signal_underwaterVisibilityEnabledChanged
Definition: DtEnvironment.h:550
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:36
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Definition: DtOceanStateInterface.h:20
boost::signal< void(float depth)> signal_roadSnowAccumulationChanged
Definition: DtEnvironment.h:569
boost::signal< void(unsigned int swellstate)> signal_swellStateChanged
Definition: DtEnvironment.h:546
boost::signal< void(float radians)> signal_swellStateDirectionChanged
Definition: DtEnvironment.h:547
DtDynamicOceanObjectAgent * myDynamicOceanObject
Definition: DtEnvironment.h:471
The makVrv::DtRecordSettingsBackupInterface provides an interface to record-based backups...
Definition: DtRecordSettingsBackup.h:27
voidpf uLong offset
Definition: ioapi.h:42
DtSignalConnectionManager myConnections
Definition: DtEnvironment.h:475
boost::signal< void(bool enabled)> signal_windDrivenSeaStateChanged
Definition: DtEnvironment.h:545
boost::signal< void(float meters)> signal_tidalOffsetChanged
Definition: DtEnvironment.h:560
boost::signal< void(float celsius)> signal_ambientAirTemperatureChanged
Definition: DtEnvironment.h:540
boost::signal< void(double meters)> signal_underwaterVisibilityChanged
Definition: DtEnvironment.h:551
The DtEnvironmentList maintains a list of DtEnvironment records that can be looked up by the environm...
Definition: DtEnvironmentList.h:32
boost::signal< void(double meters)> signal_surgeDepthChanged
Definition: DtEnvironment.h:554
std::vector< DtCloudLayer > CloudLayersVector
Definition: DtEnvironment.h:389
Contains DLL export macros.

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)