VR-Forces 4.8 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 <boost/signal.hpp>
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 
120  bool intersectSeaLevel(const DtVector& position,
121  const DtVector& direction, DtVector& positionOut);
122 
125  bool getHeight(const DtVector& position, const DtVector& direction,
126  double& height, DtVector& normalOut);
127 
128  Triton::WakeGenerator* createWake(
129  const Triton::WakeGeneratorParameters& parameters );
130 
131  Triton::RotorWash* createRotorWash(double rotorDiameter);
132  Triton::Impact *createImpact(double impactorDiameter, double mass,
133  double sprayScale);
134 
140  Triton::TidalStreamWake* createTidalStreamWake(double size,
141  double draft, double maxWaveHeight, double offset);
142 
144  void setSplashEffects(bool screenSplashEnabled);
145  bool splashEffects() const;
146 
148  void setSprayEffects(bool screenSprayEnabled);
149  bool sprayEffects() const;
150 
152  void setWaveSprayEffects(bool waveSprayEnabled);
153  bool waveSprayEffects() const;
154 
156  void setDecalEffects(bool decalsEnabled);
157  bool decalEffects() const;
158 
160  void setGodRayEffects(bool godRaysEnabled);
161  bool godRayEffects() const;
162 
163  void setBreakingWaveAmplitude(float meters);
164  float getBreakingWaveAmplitude() const;
165 
167  float getMaximumWaveHeight();
168 
170  void setHeightMapResolution(float metersPerTexel);
171  bool getHeightMapResolution(float &metersPerTexel) const;
172 
173  void setSeaState(unsigned int beaufortScale);
174  unsigned int seaState() const;
175 
176  void setBeach(const DtVector& origin, const DtVector& normal);
177 
178  void setPlanarReflections(bool enable);
179  bool planarReflections() const;
180 
181  void setHeightMap(bool enable);
182  bool heightMap() const;
183 
184  void setCorrelateIntersectionsToVisuals(bool visualCorrelation);
185  bool correlateIntersectionsToVisuals() const;
186 
189  void setOceanMaskTextureEnabled(bool enable);
190  bool isOceanMaskTextureEnabled() const;
191 
195  TritonQuality_Best
196  };
197 
201  virtual void setQuality(unsigned int quality);
202  virtual TritonQuality getQuality() const;
203 
214  virtual bool isOverWater(const DtVector& localPosition, bool isVisible=true);
215 
216  bool addedToScene();
217 
218  // Called by traversal. If any call for the given frame number is true, then
219  // the ocean is visible in at least one viewport.
220  void setIsVisible(bool visible, unsigned int frameNum);
221 
222  // Is the ocean currently rendered in at least one viewport?
223  bool getIsVisible();
224 
225  // Get the time (in seconds) that triton is using for its simulation
226  // This may be simulation time or wall clock time
227  DtTime oceanTime() const;
228 
229  DtTritonDrawable* tritonDrawable() const;
230 
231  boost::signal<void ()> signal_oceanInitialized;
232  boost::signal<void()> signal_addedToScene;
233  boost::signal<void()> signal_removedFromScene;
234  boost::signal<void()> signal_oceanToBeDestroyed;
235 
236  // This is just a hack to support the demo ship
237  boost::signal<void (double)> signal_shipSpeedChanged;
238 
239  virtual double getOceanZoomOverride() const;
240  virtual void setOceanZoomOverride(double zoomOverride);
241 
242  protected:
244 
245  void slot_postInitialize();
246  void slot_driverToBeDestroyed(DtDriver& driver);
247 
249  DtDynamicOceanObject* dynamicOcean() const;
250 
251  protected:
254 
257 
259  float mySeaLevel;
263  unsigned int myLastFrameNum;
271  };
272 
273 
274 }
osg::ref_ptr< DtTritonDrawable > myTritonDrawable
Definition: DtTritonManager.h:255
Virtual base class.
Definition: DtVirtualBaseClass.h:22
The declaration of the makVrv::DtEnvironment class.
float myElevationRange
Definition: DtTritonManager.h:258
DtDynamicOceanObjectManager & myDynamicOceanObjectManager
Definition: DtTritonManager.h:268
voidpf uLong int origin
Definition: ioapi.h:42
DtTritonEventProcessor * myEventProcessor
Definition: DtTritonManager.h:253
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:263
bool myVisualIntersections
Definition: DtTritonManager.h:261
boost::signal< void(double)> signal_shipSpeedChanged
Definition: DtTritonManager.h:237
Definition: DtTritonManager.h:193
double myOceanZoomOverride
Definition: DtTritonManager.h:267
bool myWaterVisible
Definition: DtTritonManager.h:264
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:260
float myWaveDampingDistance
Definition: DtTritonManager.h:262
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:34
Definition: DtTritonManager.h:194
#define DT_DLL_VRVTRITON
Definition: vrvTriton.h:19
DtSignalConnectionManager mySignals
Definition: DtTritonManager.h:252
boost::signal< void()> signal_oceanToBeDestroyed
Definition: DtTritonManager.h:234
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
bool myOceanMaskTextureEnabled
Definition: DtTritonManager.h:270
osg::ref_ptr< DtTritonGroup > myTritonRoot
Definition: DtTritonManager.h:256
float mySeaLevel
Definition: DtTritonManager.h:259
Definition: DtTritonEventProcessor.h:21
DtTritonManager::TritonQuality myTritonQuality
Definition: DtTritonManager.h:269
boost::signal< void()> signal_removedFromScene
Definition: DtTritonManager.h:233
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:61
TritonQuality
Definition: DtTritonManager.h:192
boost::signal< void()> signal_oceanInitialized
Definition: DtTritonManager.h:231
voidpf uLong offset
Definition: ioapi.h:42
DtVector myWaterColor
Definition: DtTritonManager.h:266
boost::signal< void()> signal_addedToScene
Definition: DtTritonManager.h:232
bool myDecalEffects
Definition: DtTritonManager.h:265

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)