VR-Forces 4.3 Class 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) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
16 #include <vrvCore/DtSkyObject.h>
18 
21 #include <vrvUtil/event_signal.h>
22 
24 
25 #include <boost/signal.hpp>
26 #include <boost/unordered_map.hpp>
27 
28 #include <matrix/vlVector.h>
29 
30 #include <string>
31 #include <vector>
32 
33 namespace makArchives
34 {
35  class DtCloudLayerRecord;
36  class DtEnvironmentListRecord;
37 }
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtAgentManagerInterface;
43  class DtSkyObjectAgent;
44  class DtDynamicOceanObjectAgent;
45  class DtEventQueueInterface;
46  class DtSharedSettingsManager;
47  class DtOceanLayer;
48  class DtCloudLayer;
49 
55  {
56  public:
57 
59  DtEnvironment(DtDe& de, DtAgentManagerInterface& sceneInterface);
60 
62  virtual ~DtEnvironment();
63 
65  virtual void clear();
66 
69  virtual void getRecord(makArchives::DtEnvironmentRecord& record);
70 
73  virtual void setFromRecord(
74  const makArchives::DtEnvironmentRecord& record);
75 
77  virtual makArchives::DtEnvironmentRecord environmentConditionRecord(const std::string&);
78 
86  virtual void saveEnvironment(const std::string& name);
87 
90  virtual void setEnvironment(const std::string& name);
91 
94  virtual void removeEnvironment(const std::string& name);
95 
97  virtual void renameEnvironment(
98  const std::string& oldName, const std::string& newName);
99 
101  virtual void getEnvironmentNames(std::vector<std::string>& names);
102 
105  virtual void setDefaultEnvironmentName(const std::string& name);
106 
109  virtual std::string defaultEnvironmentName() const;
111 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123  virtual void setCloudCover(DtVrfWeatherCloudState cloudCover);
124  virtual DtVrfWeatherCloudState cloudCover() const;
126 
128 
129 
131  virtual int cloudLayerCount() const;
132 
135  virtual const DtCloudLayer& cloudLayer(unsigned int layerId) const;
136 
138  virtual void setCloudLayer(unsigned int layerId,
139  const DtCloudLayer& layer);
141 
143  virtual void addCloudLayer(const DtCloudLayer& layer);
144 
146  virtual void removeCloudLayer(unsigned int layerId);
147 
149  virtual void removeCloudLayers();
150 
154  virtual void setCloudLayerEnabled(unsigned int layerId, bool enabled);
155 
157 
158  virtual bool useCustomCloudCover() const;
159  virtual void setUseCustomCloudCover(bool enabled);
161 
163 
164  virtual void setAirTurbidity(float turbidity);
165  virtual float airTurbidity() const;
167 
169 
170  virtual void setVisibleDistance(float distance);
171  virtual float visibleDistance() const;
173 
175 
176  virtual void setPrecipitationType(PrecipitationType type);
177  virtual PrecipitationType precipitationType() const;
179 
181 
182  virtual void setPrecipitationIntensity(float intensity);
183  virtual float precipitationIntensity() const;
185 
187 
188  virtual void setWindSpeed(float speed);
189  virtual float windSpeed() const;
191 
193 
194  virtual void setWindDirection(float direction);
195  virtual float windDirection() const;
197 
199 
200  virtual void setAmbientAirTemperature(float temperature);
201  virtual float ambientAirTemperature() const;
203 
205 
206  virtual void setFogHeight(float height);
207  virtual float fogHeight() const;
209 
211 
212  virtual void setFogColor(const DtVector& color);
213  virtual DtVector fogColor() const;
215 
217 
218  virtual void setSeaState(int state);
219  virtual int seaState() const;
221 
223 
224  virtual void setSeaStateDirection(float dir);
225  virtual float seaStateDirection() const;
227 
229 
230  virtual void setWindDrivenSeaState(bool enabled);
231  virtual bool windDrivenSeaState() const;
233 
235 
236  virtual void setSwellState(int state);
237  virtual int swellState() const;
239 
241 
242  virtual void setSwellStateDirection(float dir);
243  virtual float swellStateDirection() const;
245 
247 
248  virtual void setWindFetch(float distance);
249  virtual float windFetch() const;
251 
253 
254  virtual void setSeaChoppiness(float chop);
255  virtual float seaChoppiness() const;
257 
259 
260  virtual void setUnderwaterVisibility(float distance);
261  virtual float underwaterVisibility() const;
263 
265 
266  virtual void setWaterSurfaceTransparency(float normalizedValue);
267  virtual float waterSurfaceTransparency() const;
269 
271 
272  virtual void setSurgeDepth(float meters);
273  virtual float surgeDepth() const;
275 
277 
278  virtual void setDepthOffset(float meters);
279  virtual float depthOffset() const;
281 
283 
284  virtual void setAmbientWaterTemperature(float temperature);
285  virtual float ambientWaterTemperature() const;
287 
289 
290  virtual void setWaterCurrentSpeed(float speed);
291  virtual float waterCurrentSpeed() const;
293 
295 
296 
297  virtual void setWaterCurrentDirection(float direction);
298  virtual float waterCurrentDirection() const;
300 
302 
303  virtual void setTidalOffset(float meters);
304  virtual float tidalOffset() const;
306 
308 
309  virtual void setTidalDirection(bool inOut);
310  virtual bool tidalDirection() const;
312 
314 
315  virtual void setThermoclineDepth(unsigned int layer, float depth);
316  virtual float thermoclineDepth(unsigned int layer) const;
318 
320 
321  virtual void setThermoclinePermeability(unsigned int layer, float permeability);
322  virtual float thermoclinePermeability(unsigned int layer) const;
324 
329  virtual float lightLevel() const;
330 
334  void loadDefaults(bool loadOnlyFactorySettings = false);
335 
337  void restore();
338 
340  void saveAsDefaults();
342 
344 
345  virtual void exportSettings(const std::string& filename);
346  virtual void importSettings(const std::string& filename);
348 
349  const DtSettingsBackup* settingsBackup() const
350  {
351  return mySettingsBackup;
352  }
353 
354  DtSettingsBackup* settingsBackup()
355  {
356  return mySettingsBackup;
357  }
358 
360  virtual bool getIsUnderwater() const;
361 
366  virtual bool isOverWater(const DtVector& localPosition);
367 
369  virtual float getMaximumWaveHeight();
370 
372  virtual float seaLevel() const;
373 
376  virtual void setOceanManager(DtOceanStateInterface* oceanManager);
377 
379  virtual void deleteOceanManager();
380 
381  protected:
382 
383  typedef std::vector<DtCloudLayer> CloudLayersVector;
384 
386  virtual void slot_coordinateSystemChanged();
387 
389  virtual void slot_oceanLayerAdded(const DtOceanLayer& layer);
390 
392  virtual void slot_oceanLayerToBeDeleted(const DtOceanLayer& layer);
393 
395  virtual void slot_oceanLayerSeaLevelChanged(const DtOceanLayer& layer,
396  double seaLevel);
397 
400  virtual void slot_oceanLayerLodRangeChanged(const DtOceanLayer& layer,
401  int range);
402 
404  virtual void slot_surgeDepthChanged(double depth);
405 
407  virtual void slot_depthOffsetChanged(double offset);
408 
410  virtual void updateEnvironment();
411 
414  virtual void initializeOcean();
415 
416  virtual void createCloudLayers();
417 
418  virtual void processAddedCloudLayer(const DtCloudLayer& layer,
419  int cloudIndex);
420 
421  virtual void autoSave();
422 
425  virtual void sendMarineEnvironmentToOceanObject();
426 
429  virtual void sendWeatherEnvironmentToSkyObject();
430 
433  virtual void sendCloudCoverToSkyObject();
434 
435  protected:
438 
439 
440  // makArchives::DtEnvironmentListRecord* mySettings;
441 
442  DtSkyObjectAgent* mySkyObject;
443  DtDynamicOceanObjectAgent* myDynamicOceanObject;
446 
447  // This is an env record that reflects our current settings
449 
450  // This is an env list that reflects saved settings
452 
453  // This is the cloud layers currently in use, whether custom or
454  // from the sky conditions manager
456 
457  // This is an interface to allow vrvOsg to query specific
458  // vrvTriton functions without an explicit dependency
460  };
461 
465  {
466  public:
467 
469  static DtEnvironmentSignaler& instance(DtDe& de);
470 
472  virtual ~DtEnvironmentSignaler();
473 
474  //Signaled when any of the atmospheric parameters change.
475  boost::signal<void ()> signal_atmosphericParametersChanged;
476 
477  //Signaled when any of the precipitation parameters change.
478  boost::signal<void ()> signal_precipitationSettingsChanged;
479 
480  //Signaled when cloud cover changes
481  boost::signal<void (DtVrfWeatherCloudState)> signal_cloudCoverChanged;
482 
483  boost::signal<void (unsigned int layerId,
485 
486  boost::signal<void (unsigned int layerId)> signal_cloudLayerToBeDestroyed;
487 
488  boost::signal<void (unsigned int layerId, const DtCloudLayer& changedLayer)>
490 
491  boost::signal<void (float height)> signal_fogHeightChanged;
492 
493  boost::signal<void (const DtVector& color)> signal_fogColorChanged;
494 
495  //Signaled when air parameters change.
496  boost::signal<void (float speed)> signal_windSpeedChanged;
497 
498  boost::signal<void (float direction)> signal_windDirectionChanged;
499  boost::signal<void (float celsius)> signal_ambientAirTemperatureChanged;
500 
501  //Signaled when marine states change.
502  boost::signal<void (unsigned int seastate)> signal_seaStateChanged;
503  boost::signal<void (float radians)> signal_seaStateDirectionChanged;
504  boost::signal<void (bool enabled)> signal_windDrivenSeaStateChanged;
505  boost::signal<void (unsigned int swellstate)> signal_swellStateChanged;
506  boost::signal<void (float radians)> signal_swellStateDirectionChanged;
507  boost::signal<void (float distance)> signal_windFetchChanged;
508  boost::signal<void (float chop)> signal_seaChoppinessChanged;
509  boost::signal<void (double meters)> signal_underwaterVisibilityChanged;
510  boost::signal<void (double normalizedValue)>
512  boost::signal<void (double meters)> signal_surgeDepthChanged;
513  boost::signal<void (double meters)> signal_depthOffsetChanged;
514 
515  boost::signal<void (float celsius)> signal_ambientWaterTemperatureChanged;
516  boost::signal<void (float speed)> signal_waterCurrentSpeedChanged;
517  boost::signal<void (float direction)> signal_waterCurrentDirectionChanged;
518  boost::signal<void (float meters)> signal_tidalOffsetChanged;
519  boost::signal<void (bool inOut)> signal_tidalDirectionChanged;
520  boost::signal<void (unsigned int layer, float depth)>
522  boost::signal<void (unsigned int layer, float permeability)>
524 
525  protected:
527  };
528 
533  {
534  public:
537  static DtWeatherProcessorSignaler& instance(const DtSharedSettingsManager& ssm);
538 
541  static DtWeatherProcessorSignaler& instance(DtEventQueueInterface& eqi);
542 
546  static DtWeatherProcessorSignaler* findInstance(DtEventQueueInterface* eqi);
547 
549  virtual ~DtWeatherProcessorSignaler();
550 
552 
553  protected:
555 
556  private:
559  };
560 
562 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)