VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTritonManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvTriton/vrvTriton.h>
12 
13 #include <vrvCore/DtEnvironment.h>
14 
15 #include <vlutil/vlTime.h>
16 
17 #include <vrvUtil/signalslib.h>
19 
20 #include <osg/ref_ptr>
21 
22 namespace Triton
23 {
24  class WakeGenerator;
25  class WakeGeneratorParameters;
26  class RotorWash;
27  class Impact;
28  class TidalStreamWake;
29 }
30 
31 namespace osg
32 {
33  class Camera;
34 }
35 
36 namespace makVrv
37 {
38  class DtDe;
39  class DtDriver;
40  class DtDynamicOceanObject;
41  class DtPlanarReflection;
42  class DtRenderer;
43  class DtTritonDrawable;
44  class DtTritonEventProcessor;
45  class DtTritonGroup;
46  class DtDynamicOceanObjectManager;
47 
49  {
50  public:
54  TritonQuality_Best
55  };
56 
58  TritonSpectralModel_JonSwap = 0 // (default)
59  , TritonSpectralModel_Pierson_Moskowitz
60  , TritonSpectralModel_Tessendorf
61  };
62 
63  public:
65  static DtTritonManager& instance(makVrv::DtDe& de);
66 
68  virtual ~DtTritonManager();
69 
70  protected:
73  public:
74  virtual void addToScene();
75 
76  virtual void oceanLayerAdded();
77  virtual void oceanLayerToBeDeleted();
78 
79  virtual void setSeaLevel(float level);
80  virtual float seaLevel() const;
81 
82  virtual void setElevationLod(double maxElevation);
83  virtual double elevationLod() const;
84 
89  virtual void setWind(double speed, double direction, double fetch = 0.0);
90 
99  virtual void setDouglasSeaState(
100  DtDouglasSeaState::Scale seaState, double seaStateDirection,
101  DtDouglasSwellState::Scale swellState, double swellStateDirection);
102 
103  virtual void addSwell(float wavelength, float waveHeight, float radiansClockwiseFromNorth);
104  virtual void clearSwells();
105 
108  virtual void setChoppiness(float chop);
109 
110  // Water visibility when below water
111  virtual bool getIsUnderwater(const osg::Camera* osgCamera) const;
112  virtual void setUnderwaterVisibility(double distance);
113  virtual bool setUnderwaterFogColor(const DtVector& fogColor);
114  virtual void setUnderwaterFogEnabled(bool enabled);
115 
116  // Color used for refracted water, pre-lighting
117  virtual void setWaterColor(const DtVector& waterColor);
118  virtual DtVector waterColor() const;
119 
120  // Water transparency when above water
121  virtual double waterVisibility() const;
122  virtual void setWaterVisibility(double distance);
123  virtual void setSurfaceTransparency(double transparency);
124 
125  // Depth at which wave displacements start getting dampened
126  virtual bool setSurgeDepth(float depth);
127  virtual bool getSurgeDepth(float& depth) const;
128 
129  virtual void setDepthOffset(float offset);
130 
133  virtual bool intersect(const DtVector& position, DtVector& positionOut,
134  DtVector& normalOut, float waterlineAdjustment = 0.0);
135 
141  virtual bool intersectSeaLevel(const DtVector& position,
142  const DtVector& direction, DtVector& positionOut);
143 
149  virtual bool getHeight(const DtVector& position, const DtVector& direction,
150  double& height, DtVector& normalOut);
151 
152  virtual Triton::WakeGenerator* createWake(
153  const Triton::WakeGeneratorParameters& parameters);
154 
155  virtual Triton::RotorWash* createRotorWash(double rotorDiameter);
156 
157  virtual Triton::Impact* createImpact(double impactorDiameter, double mass,
158  double sprayScale);
159 
165  virtual Triton::TidalStreamWake* createTidalStreamWake(double size,
166  double draft, double maxWaveHeight, double offset);
167 
169  virtual void setWaveSprayEffects(bool waveSprayEnabled);
170  virtual bool waveSprayEffects() const;
171 
173  virtual void setDecalEffects(bool decalsEnabled);
174  virtual bool decalEffects() const;
175 
177  virtual void setGodRayEffects(bool godRaysEnabled);
178  virtual bool godRayEffects() const;
179 
180  virtual void setBreakingWaveAmplitude(float meters);
181  virtual float getBreakingWaveAmplitude() const;
182 
184  virtual float getMaximumWaveHeight();
185 
187  virtual void setHeightMapResolution(float metersPerTexel);
188  virtual bool getHeightMapResolution(float& metersPerTexel) const;
189 
190  virtual void setSeaState(DtBeaufortWindScale::Scale beaufortScale);
191  virtual DtBeaufortWindScale::Scale seaState() const;
192 
193  virtual void setBeach(const DtVector& origin, const DtVector& normal);
194 
195  virtual void setPlanarReflections(bool enable);
196  virtual bool planarReflections() const;
197 
198  virtual void setHeightMap(bool enable);
199  virtual bool heightMap() const;
200 
201  virtual void setCorrelateIntersectionsToVisuals(bool visualCorrelation);
202  virtual bool correlateIntersectionsToVisuals() const;
203 
205  virtual void setIncludeWakesInIntersections(bool includeWakes);
208  virtual bool includeWakesInIntersections() const;
210 
213  virtual void setOceanMaskTextureEnabled(bool enable);
214  virtual bool isOceanMaskTextureEnabled() const;
215 
217  virtual void setQuality(unsigned int quality);
221  virtual TritonQuality quality() const;
223 
225  virtual void setSpectralModel(unsigned int spectralModel);
227  virtual TritonSpectralModel spectralModel() const;
229 
240  virtual bool isOverWater(const DtVector& localPosition, bool isVisible = true);
241 
242  virtual bool addedToScene();
243 
245  // the ocean is visible in at least one viewport.
246  virtual void setIsVisible(bool visible, unsigned int frameNum);
247 
249  virtual bool getIsVisible();
250 
253  virtual DtTime oceanTime() const;
254 
255  virtual DtTritonDrawable* tritonDrawable() const;
256 
258  virtual double getOceanZoomOverride() const;
259  virtual void setOceanZoomOverride(double zoomOverride);
260 
262  virtual void setFreezeEnabled(bool enable);
265  virtual bool freezeEnabled() const;
266 
268  virtual void setFreezeTime(DtTime freezeAtTime);
270  virtual DtTime freezeTime(void) const;
271 
272  public:
273  boost::signalslib::signal<void()> signal_oceanInitialized;
274  boost::signalslib::signal<void()> signal_addedToScene;
275  boost::signalslib::signal<void()> signal_removedFromScene;
276  boost::signalslib::signal<void()> signal_oceanToBeDestroyed;
277 
279  boost::signalslib::signal<void (DtPlanarReflection* reflection)> signal_planarReflectionCreated;
280 
281  // This is just a hack to support the demo ship
282  boost::signalslib::signal<void(double)> signal_shipSpeedChanged;
283 
284  protected:
285  void slot_postInitialize();
286  void slot_driverToBeDestroyed(DtDriver& driver);
287  virtual void installEventProcessor();
288 
291  void slot_postUpdate();
292 
294  virtual DtDynamicOceanObject* dynamicOcean() const;
295 
296  protected:
298 
300 
303 
306 
309 
311  float mySeaLevel;
314  bool myIncludeWakesInIntersections = true;
315  unsigned int myLastFrameNum;
321 
323  bool myFreezeEnabled = false;
324  DtTime myFreezeAtTime = 0;
325 
326  static const float theMaxWindSpeedForWindFetch;
327  };
328 }
osg::ref_ptr< DtTritonDrawable > myTritonDrawable
Definition: DtTritonManager.h:304
DtDe & myDe
Definition: DtTritonManager.h:297
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
The declaration of the makVrv::DtEnvironment class.
boost::signalslib::signal< void()> signal_oceanToBeDestroyed
Definition: DtTritonManager.h:276
float myElevationRange
Definition: DtTritonManager.h:310
DtDynamicOceanObjectManager & myDynamicOceanObjectManager
Definition: DtTritonManager.h:299
voidpf uLong int origin
Definition: ioapi.h:42
DtTritonEventProcessor * myEventProcessor
Definition: DtTritonManager.h:302
Definition: featureContext.h:37
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
voidpf void uLong size
Definition: ioapi.h:39
unsigned int myLastFrameNum
Definition: DtTritonManager.h:315
bool myVisualIntersections
Definition: DtTritonManager.h:313
TritonQuality myTritonQuality
Definition: DtTritonManager.h:307
boost::signalslib::signal< void(double)> signal_shipSpeedChanged
Definition: DtTritonManager.h:282
Definition: DtTritonManager.h:52
double myOceanZoomOverride
Definition: DtTritonManager.h:319
bool myWaterVisible
Definition: DtTritonManager.h:316
The declaration of the makVrv::DtBeaufortWindScale class.
Manager that provides direct access to the dynamic ocean objects in use within a display engine...
Definition: DtDynamicOceanObjectManager.h:27
Contains DLL export macros.
double myWaterVisibility
Definition: DtTritonManager.h:312
Scale
Definition: DtDouglasSeaScale.h:33
static const float theMaxWindSpeedForWindFetch
Definition: DtTritonManager.h:326
boost::signalslib::signal< void()> signal_removedFromScene
Definition: DtTritonManager.h:275
The base dynamic ocean object. An actual (do-nothing) implementation is provided so that an implement...
Definition: DtDynamicOceanObject.h:29
Scale
Definition: DtBeaufortWindScale.h:29
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points. Coordinates are in local database coordinates The coordinat...
The DtDriver is an abstract class. Developers derive from this to create logic that &quot;directs&quot; things ...
Definition: DtDriver.h:31
Definition: DtTritonManager.h:53
boost::signalslib::signal< void()> signal_addedToScene
Definition: DtTritonManager.h:274
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
Scale
Definition: DtDouglasSeaScale.h:114
DtSignalConnectionManager mySignals
Definition: DtTritonManager.h:301
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
TritonSpectralModel mySpectralModel
Definition: DtTritonManager.h:308
bool myOceanMaskTextureEnabled
Definition: DtTritonManager.h:320
osg::ref_ptr< DtTritonGroup > myTritonRoot
Definition: DtTritonManager.h:305
float mySeaLevel
Definition: DtTritonManager.h:311
Definition: DtTritonEventProcessor.h:22
Definition: DtTritonManager.h:48
TritonSpectralModel
Definition: DtTritonManager.h:57
boost::signalslib::signal< void(DtPlanarReflection *reflection)> signal_planarReflectionCreated
Signal emitted when a new planar reflection has been created.
Definition: DtTritonManager.h:279
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
An OSG Drawable representing Triton&#39;s infinite ocean. /ingroup vrvTriton.
Definition: DtTritonDrawable.h:62
TritonQuality
Definition: DtTritonManager.h:51
boost::signalslib::signal< void()> signal_oceanInitialized
Definition: DtTritonManager.h:273
voidpf uLong offset
Definition: ioapi.h:42
DtVector myWaterColor
Definition: DtTritonManager.h:318
bool myDecalEffects
Definition: DtTritonManager.h:317

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)