VR-Forces 4.10 Class Documentation
 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) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
8 
9 #pragma once
10 #include <vrvTriton/vrvTriton.h>
11 
12 #include <vrvCore/DtEnvironment.h>
14 
15 #include <vlutil/vlTime.h>
16 
17 #include <vrvUtil/signalslib.h>
18 #include <osg/ref_ptr>
19 
20 #include <map>
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 DtRenderer;
42  class DtTritonDrawable;
43  class DtTritonEventProcessor;
44  class DtTritonGroup;
45  class DtDynamicOceanObjectManager;
46 
47 
49  : public DtOceanStateInterface
50  , public DtVirtualBaseClass
51  {
52  public:
53  static DtTritonManager& instance(makVrv::DtDe& de);
54  virtual ~DtTritonManager();
55 
56  void addToScene();
57 
58  virtual void oceanLayerAdded();
59  virtual void oceanLayerToBeDeleted();
60 
61  void setSeaLevel(float level);
62  float seaLevel() const;
63 
64  void setElevationLod(double maxElevation);
65  double elevationLod() const;
66 
71  void setWind(double speed, double direction, double fetch = 0.0);
72 
81  void setDouglasSeaState(
82  int seaState, double seaStateDirection,
83  int swellState, double swellStateDirection);
84 
85  void addSwell(float wavelength, float waveHeight, float radiansClockwiseFromNorth);
86  void clearSwells();
87 
90  void setChoppiness(float chop);
91 
92  // Water visibility when below water
93  bool getIsUnderwater(const osg::Camera* osgCamera) const;
94  void setUnderwaterVisibility(double distance);
95  bool setUnderwaterFogColor(const DtVector& fogColor);
96  void setUnderwaterFogEnabled(bool enabled);
97 
98  // Color used for refracted water, pre-lighting
99  void setWaterColor(const DtVector& waterColor);
100  DtVector waterColor() const;
101 
102  // Water transparency when above water
103  double waterVisibility() const;
104  void setWaterVisibility(double distance);
105  void setSurfaceTransparency(double transparency);
106 
107  // Depth at which wave displacements start getting dampened
108  bool setSurgeDepth(float depth);
109  bool getSurgeDepth(float& depth) const;
110 
111  void setDepthOffset(float offset);
112 
115  bool intersect(const DtVector& position, DtVector& positionOut,
116  DtVector& normalOut, float waterlineAdjustment=0.0);
117 
123  bool intersectSeaLevel(const DtVector& position,
124  const DtVector& direction, DtVector& positionOut);
125 
131  bool getHeight(const DtVector& position, const DtVector& direction,
132  double& height, DtVector& normalOut);
133 
134  Triton::WakeGenerator* createWake(
135  const Triton::WakeGeneratorParameters& parameters );
136 
137  Triton::RotorWash* createRotorWash(double rotorDiameter);
138  Triton::Impact *createImpact(double impactorDiameter, double mass,
139  double sprayScale);
140 
146  Triton::TidalStreamWake* createTidalStreamWake(double size,
147  double draft, double maxWaveHeight, double offset);
148 
150  void setSplashEffects(bool screenSplashEnabled);
151  bool splashEffects() const;
152 
154  void setSprayEffects(bool screenSprayEnabled);
155  bool sprayEffects() const;
156 
158  void setWaveSprayEffects(bool waveSprayEnabled);
159  bool waveSprayEffects() const;
160 
162  void setDecalEffects(bool decalsEnabled);
163  bool decalEffects() const;
164 
166  void setGodRayEffects(bool godRaysEnabled);
167  bool godRayEffects() const;
168 
169  void setBreakingWaveAmplitude(float meters);
170  float getBreakingWaveAmplitude() const;
171 
173  float getMaximumWaveHeight();
174 
176  void setHeightMapResolution(float metersPerTexel);
177  bool getHeightMapResolution(float &metersPerTexel) const;
178 
179  void setSeaState(unsigned int beaufortScale);
180  unsigned int seaState() const;
181 
182  void setBeach(const DtVector& origin, const DtVector& normal);
183 
184  void setPlanarReflections(bool enable);
185  bool planarReflections() const;
186 
187  void setHeightMap(bool enable);
188  bool heightMap() const;
189 
190  void setCorrelateIntersectionsToVisuals(bool visualCorrelation);
191  bool correlateIntersectionsToVisuals() const;
192 
195  void setOceanMaskTextureEnabled(bool enable);
196  bool isOceanMaskTextureEnabled() const;
197 
201  TritonQuality_Best
202  };
203 
207  virtual void setQuality(unsigned int quality);
208  virtual TritonQuality getQuality() const;
209 
220  virtual bool isOverWater(const DtVector& localPosition, bool isVisible=true);
221 
222  bool addedToScene();
223 
224  // Called by traversal. If any call for the given frame number is true, then
225  // the ocean is visible in at least one viewport.
226  void setIsVisible(bool visible, unsigned int frameNum);
227 
228  // Is the ocean currently rendered in at least one viewport?
229  bool getIsVisible();
230 
231  // Get the time (in seconds) that triton is using for its simulation
232  // This may be simulation time or wall clock time
233  DtTime oceanTime() const;
234 
235  DtTritonDrawable* tritonDrawable() const;
236 
237  boost::signalslib::signal<void ()> signal_oceanInitialized;
238  boost::signalslib::signal<void()> signal_addedToScene;
239  boost::signalslib::signal<void()> signal_removedFromScene;
240  boost::signalslib::signal<void()> signal_oceanToBeDestroyed;
241 
242  // This is just a hack to support the demo ship
243  boost::signalslib::signal<void (double)> signal_shipSpeedChanged;
244 
245  virtual double getOceanZoomOverride() const;
246  virtual void setOceanZoomOverride(double zoomOverride);
247 
248  protected:
250 
251  void slot_postInitialize();
252  void slot_driverToBeDestroyed(DtDriver& driver);
253 
255  DtDynamicOceanObject* dynamicOcean() const;
256 
257  protected:
260 
263 
265  float mySeaLevel;
268  unsigned int myLastFrameNum;
276  };
277 
278 
279 }
osg::ref_ptr< DtTritonDrawable > myTritonDrawable
Definition: DtTritonManager.h:261
Virtual base class.
Definition: DtVirtualBaseClass.h:19
The declaration of the makVrv::DtEnvironment class.
boost::signalslib::signal< void()> signal_oceanToBeDestroyed
Definition: DtTritonManager.h:240
float myElevationRange
Definition: DtTritonManager.h:264
DtDynamicOceanObjectManager & myDynamicOceanObjectManager
Definition: DtTritonManager.h:273
voidpf uLong int origin
Definition: ioapi.h:42
DtTritonEventProcessor * myEventProcessor
Definition: DtTritonManager.h:259
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
Contains makVrv::DtOceanStateInterface class.
unsigned int myLastFrameNum
Definition: DtTritonManager.h:268
bool myVisualIntersections
Definition: DtTritonManager.h:267
boost::signalslib::signal< void()> signal_oceanInitialized
Definition: DtTritonManager.h:237
Definition: DtTritonManager.h:199
double myOceanZoomOverride
Definition: DtTritonManager.h:272
bool myWaterVisible
Definition: DtTritonManager.h:269
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:266
boost::signalslib::signal< void()> signal_removedFromScene
Definition: DtTritonManager.h:239
The base dynamic ocean object.
Definition: DtDynamicOceanObject.h:27
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
The DtDriver is an abstract class.
Definition: DtDriver.h:31
Definition: DtTritonManager.h:200
boost::signalslib::signal< void()> signal_addedToScene
Definition: DtTritonManager.h:238
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
DtSignalConnectionManager mySignals
Definition: DtTritonManager.h:258
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myOceanMaskTextureEnabled
Definition: DtTritonManager.h:275
osg::ref_ptr< DtTritonGroup > myTritonRoot
Definition: DtTritonManager.h:262
float mySeaLevel
Definition: DtTritonManager.h:265
Definition: DtTritonEventProcessor.h:21
DtTritonManager::TritonQuality myTritonQuality
Definition: DtTritonManager.h:274
boost::signalslib::signal< void(double)> signal_shipSpeedChanged
Definition: DtTritonManager.h:243
Definition: DtTritonManager.h:48
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Definition: DtOceanStateInterface.h:20
An OSG Drawable representing Triton&#39;s infinite ocean.
Definition: DtTritonDrawable.h:62
TritonQuality
Definition: DtTritonManager.h:198
voidpf uLong offset
Definition: ioapi.h:42
DtVector myWaterColor
Definition: DtTritonManager.h:271
bool myDecalEffects
Definition: DtTritonManager.h:270

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)