VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes
makVrv::DtTritonManager Class Reference
Inheritance diagram for makVrv::DtTritonManager:
Inheritance graph
[legend]

Public Types

enum  TritonQuality { TritonQuality_Good = 0, TritonQuality_Better, TritonQuality_Best }
 
enum  TritonSpectralModel { TritonSpectralModel_JonSwap = 0, TritonSpectralModel_Pierson_Moskowitz, TritonSpectralModel_Tessendorf }
 

Public Member Functions

virtual ~DtTritonManager ()
 
virtual void addToScene ()
 
virtual void oceanLayerAdded ()
 
virtual void oceanLayerToBeDeleted ()
 
virtual void setSeaLevel (float level)
 
virtual float seaLevel () const
 
virtual void setElevationLod (double maxElevation)
 
virtual double elevationLod () const
 
virtual void setWind (double speed, double direction, double fetch=0.0)
 
virtual void setDouglasSeaState (DtDouglasSeaState::Scale seaState, double seaStateDirection, DtDouglasSwellState::Scale swellState, double swellStateDirection)
 
virtual void addSwell (float wavelength, float waveHeight, float radiansClockwiseFromNorth)
 
virtual void clearSwells ()
 
virtual void setChoppiness (float chop)
 
virtual bool getIsUnderwater (const osg::Camera *osgCamera) const
 
virtual void setUnderwaterVisibility (double distance)
 
virtual bool setUnderwaterFogColor (const DtVector &fogColor)
 
virtual void setUnderwaterFogEnabled (bool enabled)
 
virtual double waterVisibility () const
 
virtual void setWaterVisibility (double distance)
 
virtual void setSurfaceTransparency (double transparency)
 
virtual void setSurgeDepth (float depth)
 
virtual float getSurgeDepth () const
 
virtual void setDepthOffset (float offset)
 
virtual bool intersect (const DtVector &position, DtVector &positionOut, DtVector &normalOut, float waterlineAdjustment=0.0)
 
virtual bool intersectSeaLevel (const DtVector &position, const DtVector &direction, DtVector &positionOut)
 
virtual bool getHeight (const DtVector &position, const DtVector &direction, double &height, DtVector &normalOut)
 
virtual Triton::WakeGenerator * createWake (const Triton::WakeGeneratorParameters &parameters)
 
virtual Triton::RotorWash * createRotorWash (double rotorDiameter)
 
virtual Triton::Impact * createImpact (double impactorDiameter, double mass, double sprayScale)
 
virtual Triton::TidalStreamWake * createTidalStreamWake (double size, double draft, double maxWaveHeight, double offset)
 
virtual void setWaveSprayEffects (bool waveSprayEnabled)
 
virtual bool waveSprayEffects () const
 
virtual void setDecalEffects (bool decalsEnabled)
 
virtual bool decalEffects () const
 
virtual void setGodRayEffects (bool godRaysEnabled)
 
virtual bool godRayEffects () const
 
virtual int numberOfPropWashes () const
 
virtual int maxPropWashes () const
 
virtual void setBreakingWaveAmplitude (float meters)
 
virtual float getBreakingWaveAmplitude () const
 
virtual float getMaximumWaveHeight ()
 
virtual void setSeaState (DtBeaufortWindScale::Scale beaufortScale)
 
virtual DtBeaufortWindScale::Scale seaState () const
 
virtual void setCorrelateIntersectionsToVisuals (bool visualCorrelation)
 
virtual bool correlateIntersectionsToVisuals () const
 
virtual void setOceanMaskTextureEnabled (bool enable)
 
virtual bool isOceanMaskTextureEnabled () const
 
virtual bool isOverWater (const DtVector &localPosition, bool isVisible=true)
 
virtual bool addedToScene ()
 
virtual bool getIsVisible () const
 
virtual DtTime oceanTime () const
 
virtual DtTritonDrawabletritonDrawable () const
 
virtual double getOceanZoomOverride () const
 
virtual void setOceanZoomOverride (double zoomOverride)
 
virtual void setFreezeEnabled (bool enable)
 
virtual bool freezeEnabled () const
 
virtual void setFreezeTime (DtTime freezeAtTime)
 
virtual DtTime freezeTime (void) const
 
virtual void setIncludeWakesInIntersections (bool includeWakes)
 
virtual bool includeWakesInIntersections () const
 
virtual bool LockHeightData ()
 
virtual bool UnLockHeightData ()
 
virtual bool IsLockedHeightData () const
 
virtual DtTritonGrouptritonGroup ()
 
virtual const DtTritonGrouptritonGroup () const
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 
virtual ~DtVirtualBaseClass ()
 

Static Public Member Functions

static DtTritonManagerinstance (makVrv::DtDe &de)
 

Public Attributes

boost::signalslib::signal< void()> signal_oceanInitialized
 
boost::signalslib::signal< void()> signal_addedToScene
 
boost::signalslib::signal< void()> signal_removedFromScene
 
boost::signalslib::signal< void()> signal_oceanToBeDestroyed
 
boost::signalslib::signal
< void(DtPlanarReflectionCamera
*reflection)> 
signal_planarReflectionCreated
 

Protected Member Functions

 DtTritonManager (makVrv::DtDe &de)
 
void slot_coordinateSystemChanged ()
 
void slot_postInitialize ()
 
void slot_driverToBeDestroyed (DtDriver &driver)
 
virtual void installEventProcessor ()
 
void slot_postUpdate ()
 
virtual DtDynamicOceanObjectdynamicOcean () const
 
virtual bool intersectMslGeocentric (const DtVector &rayOrigin, const DtVector &rayDirection, const double seaLevel, DtVector &positionOut)
 
virtual bool intersectMslFlat (const DtVector &rayOrigin, const DtVector &rayDirection, const double seaLevel, DtVector &positionOut)
 
virtual bool intersectRaySphere (const DtVector &rayOrigin, const DtVector &rayDirection, const DtVector &sphereCenter, const double sphereSize, DtVector &hitPoint)
 

Protected Attributes

DtDemyDe
 
DtDynamicOceanObjectManagermyDynamicOceanObjectManager
 
DtSignalConnectionManager myConnections
 
DtTritonEventProcessormyEventProcessor
 
osg::ref_ptr< DtTritonDrawablemyTritonDrawable
 
osg::ref_ptr< DtTritonGroupmyTritonRoot
 
float myElevationRange
 
float mySeaLevel
 
double myWaterVisibility
 
bool myVisualIntersections
 
bool myIncludeWakesInIntersections = true
 
bool myDecalEffects
 
double myOceanZoomOverride
 
bool myOceanMaskTextureEnabled
 
bool myFreezeEnabled = false
 
DtTime myFreezeAtTime = 0
 
DtCoordinateSystemmyCoordinateSystem = nullptr
 
boost::signalslib::connection myDriverToBeDestroyedConnection
 
boost::signalslib::connection myPostInitializeConnection
 
float myBreakerAmplitude
 
float mySurgeDepth
 

Static Protected Attributes

static const float theMaxWindSpeedForWindFetch
 

Member Enumeration Documentation

Enumerator
TritonQuality_Good 
TritonQuality_Better 
TritonQuality_Best 
Enumerator
TritonSpectralModel_JonSwap 
TritonSpectralModel_Pierson_Moskowitz 
TritonSpectralModel_Tessendorf 

Constructor & Destructor Documentation

virtual makVrv::DtTritonManager::~DtTritonManager ( )
virtual

destructor

makVrv::DtTritonManager::DtTritonManager ( makVrv::DtDe de)
protected

cannot create directly

Member Function Documentation

static DtTritonManager& makVrv::DtTritonManager::instance ( makVrv::DtDe de)
static

access the instance

virtual void makVrv::DtTritonManager::addToScene ( )
virtual
virtual void makVrv::DtTritonManager::oceanLayerAdded ( )
virtual
virtual void makVrv::DtTritonManager::oceanLayerToBeDeleted ( )
virtual
virtual void makVrv::DtTritonManager::setSeaLevel ( float  level)
virtual
virtual float makVrv::DtTritonManager::seaLevel ( ) const
virtual
virtual void makVrv::DtTritonManager::setElevationLod ( double  maxElevation)
virtual
virtual double makVrv::DtTritonManager::elevationLod ( ) const
virtual
virtual void makVrv::DtTritonManager::setWind ( double  speed,
double  direction,
double  fetch = 0.0 
)
virtual

Set the wind effects on ocean waves.

Parameters
[in]speedis in meters per second.
[in]directionis in radians clockwise from north.
[in]fetchis fetch distance in meters.
virtual void makVrv::DtTritonManager::setDouglasSeaState ( DtDouglasSeaState::Scale  seaState,
double  seaStateDirection,
DtDouglasSwellState::Scale  swellState,
double  swellStateDirection 
)
virtual

Set the Douglas sea and swell states.

Parameters
[in]seaStateis the sea-state generated by local winds (0 - 9).
[in]seaStateDirectionis the direction of the sea-state.
[in]swellStateis the swell-state generated afar (0 - 9).
[in]swellStateDirectionis the direction of the swells.
Note
All directions are in radians clockwise from north.
Calling this function clears out existing swells and waves created with setWind(double, double, double).
virtual void makVrv::DtTritonManager::addSwell ( float  wavelength,
float  waveHeight,
float  radiansClockwiseFromNorth 
)
virtual
virtual void makVrv::DtTritonManager::clearSwells ( )
virtual
virtual void makVrv::DtTritonManager::setChoppiness ( float  chop)
virtual

Set the choppiness of the waves.

Parameters
[in]chopis a normalized value from 0.0 to 1.0.
virtual bool makVrv::DtTritonManager::getIsUnderwater ( const osg::Camera *  osgCamera) const
virtual
virtual void makVrv::DtTritonManager::setUnderwaterVisibility ( double  distance)
virtual
virtual bool makVrv::DtTritonManager::setUnderwaterFogColor ( const DtVector &  fogColor)
virtual
virtual void makVrv::DtTritonManager::setUnderwaterFogEnabled ( bool  enabled)
virtual
virtual double makVrv::DtTritonManager::waterVisibility ( ) const
virtual
virtual void makVrv::DtTritonManager::setWaterVisibility ( double  distance)
virtual
virtual void makVrv::DtTritonManager::setSurfaceTransparency ( double  transparency)
virtual
virtual void makVrv::DtTritonManager::setSurgeDepth ( float  depth)
virtual
virtual float makVrv::DtTritonManager::getSurgeDepth ( ) const
virtual
virtual void makVrv::DtTritonManager::setDepthOffset ( float  offset)
virtual
virtual bool makVrv::DtTritonManager::intersect ( const DtVector &  position,
DtVector &  positionOut,
DtVector &  normalOut,
float  waterlineAdjustment = 0.0 
)
virtual

Get the intersection with a wave, assuming the position is directly above the sea (vertical)

virtual bool makVrv::DtTritonManager::intersectSeaLevel ( const DtVector &  position,
const DtVector &  direction,
DtVector &  positionOut 
)
virtual

Get an intersection of a ray starting at position and pointing in direction with the sea level plane This can potentially query the externally provided height map that triton stores internally. If so, this must be called where the OpenGL context is current.

virtual bool makVrv::DtTritonManager::getHeight ( const DtVector &  position,
const DtVector &  direction,
double height,
DtVector &  normalOut 
)
virtual

Get the height of the wave field intersected by a ray starting at position pointing in direction This can potentially query the externally provided height map that triton stores internally. If so, this must be called where the OpenGL context is current.

virtual Triton::WakeGenerator* makVrv::DtTritonManager::createWake ( const Triton::WakeGeneratorParameters &  parameters)
virtual
virtual Triton::RotorWash* makVrv::DtTritonManager::createRotorWash ( double  rotorDiameter)
virtual
virtual Triton::Impact* makVrv::DtTritonManager::createImpact ( double  impactorDiameter,
double  mass,
double  sprayScale 
)
virtual
virtual Triton::TidalStreamWake* makVrv::DtTritonManager::createTidalStreamWake ( double  size,
double  draft,
double  maxWaveHeight,
double  offset 
)
virtual

Create a wake from a fixed object such as a buoy or bridge pile, with a given wave length, draft (distance below water the object extends,) and maximum wave amplitude. Call Update() on this object each frame to activate it for a given position, direction, and tidal stream velocity.

virtual void makVrv::DtTritonManager::setWaveSprayEffects ( bool  waveSprayEnabled)
virtual

Toggle spray effects from high wave crests.

virtual bool makVrv::DtTritonManager::waveSprayEffects ( ) const
virtual
virtual void makVrv::DtTritonManager::setDecalEffects ( bool  decalsEnabled)
virtual

Toggle use of decal textures on rotor wash for subsquently created rotor washes.

virtual bool makVrv::DtTritonManager::decalEffects ( ) const
virtual
virtual void makVrv::DtTritonManager::setGodRayEffects ( bool  godRaysEnabled)
virtual

Toggles underwater "god rays" or shafts of light.

virtual bool makVrv::DtTritonManager::godRayEffects ( ) const
virtual
virtual int makVrv::DtTritonManager::numberOfPropWashes ( ) const
virtual

Get the number of prop wash wakes that the Triton Ocean knows about.

virtual int makVrv::DtTritonManager::maxPropWashes ( ) const
virtual

Get the maximum number of prop wash wakes that will be rendered This returns the value set for the max-prop-wash-opengl property in data/Environment/Triton.config.

virtual void makVrv::DtTritonManager::setBreakingWaveAmplitude ( float  meters)
virtual
virtual float makVrv::DtTritonManager::getBreakingWaveAmplitude ( ) const
virtual
virtual float makVrv::DtTritonManager::getMaximumWaveHeight ( )
virtual

Returns maximum wave height just based on the sea state.

virtual void makVrv::DtTritonManager::setSeaState ( DtBeaufortWindScale::Scale  beaufortScale)
virtual
virtual DtBeaufortWindScale::Scale makVrv::DtTritonManager::seaState ( ) const
virtual
virtual void makVrv::DtTritonManager::setCorrelateIntersectionsToVisuals ( bool  visualCorrelation)
virtual
virtual bool makVrv::DtTritonManager::correlateIntersectionsToVisuals ( ) const
virtual
virtual void makVrv::DtTritonManager::setIncludeWakesInIntersections ( bool  includeWakes)
virtual

whether to include wakes in intersection queries By default, true. Setting it to false can improve performance

virtual bool makVrv::DtTritonManager::includeWakesInIntersections ( ) const
virtual

whether to include wakes in intersection queries By default, true. Setting it to false can improve performance

virtual void makVrv::DtTritonManager::setOceanMaskTextureEnabled ( bool  enable)
virtual

Get/set a flag for disabling the ocean mask texture. This is used by the SOE since it doesn't need a mask and it is crashing on Centos8.

virtual bool makVrv::DtTritonManager::isOceanMaskTextureEnabled ( ) const
virtual
virtual bool makVrv::DtTritonManager::isOverWater ( const DtVector &  localPosition,
bool  isVisible = true 
)
virtual

Returns whether we are currently over water. This can't be implemented correctly until we have coastal boundaries. For now, we use a call to Triton::Ocean->GetIntersection() if isVisible is true; this only works if there is a valid height map in the area of the query, which means it will only work correctly if there is a camera (observer) in the query area; it really should only be used for things that are LOD'd out when not close to an observer; things like wakes on amphibious vehicles, tidal stream wakes, or rotor wash. We use the returned height of a terrain intersect call if isVisible is false; sea level or below is water, anything higher is not.

virtual bool makVrv::DtTritonManager::addedToScene ( )
virtual
virtual bool makVrv::DtTritonManager::getIsVisible ( ) const
virtual

Is the ocean currently rendered in at least one viewport?

virtual DtTime makVrv::DtTritonManager::oceanTime ( ) const
virtual

Get the time (in seconds) that triton is using for its simulation This may be simulation time or wall clock time.

virtual DtTritonDrawable* makVrv::DtTritonManager::tritonDrawable ( ) const
virtual
virtual double makVrv::DtTritonManager::getOceanZoomOverride ( ) const
virtual

zoom override

virtual void makVrv::DtTritonManager::setOceanZoomOverride ( double  zoomOverride)
virtual
virtual void makVrv::DtTritonManager::setFreezeEnabled ( bool  enable)
virtual

Set the freeze enable flag which stops time for triton.

virtual bool makVrv::DtTritonManager::freezeEnabled ( ) const
virtual

get the freeze enable flag which stops time for triton Currently only used by the auto test plugin

virtual void makVrv::DtTritonManager::setFreezeTime ( DtTime  freezeAtTime)
virtual

as above. freeze at a given time, if frozen.

virtual DtTime makVrv::DtTritonManager::freezeTime ( void  ) const
virtual

as above. return the time at which frozen, if set to frozen.

virtual bool makVrv::DtTritonManager::LockHeightData ( )
virtual

If ocean height data is successfully locked, multiple Ocean::GetHeight calls can run in parallel from different threads.

virtual bool makVrv::DtTritonManager::UnLockHeightData ( )
virtual

If ocean height data is successfully locked, multiple Ocean::GetHeight calls can run in parallel from different threads.

virtual bool makVrv::DtTritonManager::IsLockedHeightData ( ) const
virtual

If ocean height data is successfully locked, multiple Ocean::GetHeight calls can run in parallel from different threads.

virtual DtTritonGroup* makVrv::DtTritonManager::tritonGroup ( )
virtual

accessor for the triton group object (parent of the triton geode)

virtual const DtTritonGroup* makVrv::DtTritonManager::tritonGroup ( ) const
virtual

accessor for the triton group object (parent of the triton geode)

void makVrv::DtTritonManager::slot_coordinateSystemChanged ( )
protected
void makVrv::DtTritonManager::slot_postInitialize ( )
protected
void makVrv::DtTritonManager::slot_driverToBeDestroyed ( DtDriver driver)
protected
virtual void makVrv::DtTritonManager::installEventProcessor ( )
protectedvirtual
void makVrv::DtTritonManager::slot_postUpdate ( )
protected

Slot that is called once per tick in the post update phase. This is used to update camera culling parameters above water state.

virtual DtDynamicOceanObject* makVrv::DtTritonManager::dynamicOcean ( ) const
protectedvirtual

Helper function to get the dynamic ocean.

virtual bool makVrv::DtTritonManager::intersectMslGeocentric ( const DtVector &  rayOrigin,
const DtVector &  rayDirection,
const double  seaLevel,
DtVector &  positionOut 
)
protectedvirtual

Get an intersection of a ray with the (mean sea level) for a geocentric coordinate system. This is used as a fallback when Triton ocean is not active or available.

virtual bool makVrv::DtTritonManager::intersectMslFlat ( const DtVector &  rayOrigin,
const DtVector &  rayDirection,
const double  seaLevel,
DtVector &  positionOut 
)
protectedvirtual

Get an intersection of a ray with the (mean sea level) for a non-geocentric coordinate system. This is used as a fallback when Triton ocean is not active or available.

virtual bool makVrv::DtTritonManager::intersectRaySphere ( const DtVector &  rayOrigin,
const DtVector &  rayDirection,
const DtVector &  sphereCenter,
const double  sphereSize,
DtVector &  hitPoint 
)
protectedvirtual

Ray vs sphere intersection test.

Member Data Documentation

boost::signalslib::signal<void()> makVrv::DtTritonManager::signal_oceanInitialized
boost::signalslib::signal<void()> makVrv::DtTritonManager::signal_addedToScene
boost::signalslib::signal<void()> makVrv::DtTritonManager::signal_removedFromScene
boost::signalslib::signal<void()> makVrv::DtTritonManager::signal_oceanToBeDestroyed
boost::signalslib::signal<void (DtPlanarReflectionCamera* reflection)> makVrv::DtTritonManager::signal_planarReflectionCreated

Signal emitted when a new planar reflection has been created.

DtDe& makVrv::DtTritonManager::myDe
protected
DtDynamicOceanObjectManager& makVrv::DtTritonManager::myDynamicOceanObjectManager
protected
DtSignalConnectionManager makVrv::DtTritonManager::myConnections
protected
DtTritonEventProcessor* makVrv::DtTritonManager::myEventProcessor
protected
osg::ref_ptr<DtTritonDrawable> makVrv::DtTritonManager::myTritonDrawable
protected
osg::ref_ptr<DtTritonGroup> makVrv::DtTritonManager::myTritonRoot
protected
float makVrv::DtTritonManager::myElevationRange
protected
float makVrv::DtTritonManager::mySeaLevel
protected
double makVrv::DtTritonManager::myWaterVisibility
protected
bool makVrv::DtTritonManager::myVisualIntersections
protected
bool makVrv::DtTritonManager::myIncludeWakesInIntersections = true
protected
bool makVrv::DtTritonManager::myDecalEffects
protected
double makVrv::DtTritonManager::myOceanZoomOverride
protected
bool makVrv::DtTritonManager::myOceanMaskTextureEnabled
protected
bool makVrv::DtTritonManager::myFreezeEnabled = false
protected

whether frozen. used by the auto tests

DtTime makVrv::DtTritonManager::myFreezeAtTime = 0
protected
const float makVrv::DtTritonManager::theMaxWindSpeedForWindFetch
staticprotected
DtCoordinateSystem* makVrv::DtTritonManager::myCoordinateSystem = nullptr
protected

local clone of the system wide coordinate system. for thread safety.

boost::signalslib::connection makVrv::DtTritonManager::myDriverToBeDestroyedConnection
protected
boost::signalslib::connection makVrv::DtTritonManager::myPostInitializeConnection
protected
float makVrv::DtTritonManager::myBreakerAmplitude
protected
float makVrv::DtTritonManager::mySurgeDepth
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)