VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
makVrv::DtTritonWaterClampingUpdater Class Reference

DtTritonWaterClampingUpdater is a Triton-using re-implementation of the DtWaterClampingUpdater. It provides a physics-based buoyancy model that is used to determine the position and altitude of a scene object that is on Triton dynamic ocean.

Inheritance diagram for makVrv::DtTritonWaterClampingUpdater:
Inheritance graph
[legend]

Public Member Functions

 DtTritonWaterClampingUpdater (DtDe &de, DtUniqueID id)
 
virtual ~DtTritonWaterClampingUpdater ()
 
virtual bool clampToWater (DtTime tNow)
 
virtual void setPaused (bool isPaused)
 
virtual void setLOD (float lodDistance)
 
virtual void setWaterlineOriginOffset (float offset)
 
virtual void resetMotionModel (double seaLevel)
 
- Public Member Functions inherited from makVrv::DtWaterClampingUpdater
 DtWaterClampingUpdater (DtDe &de, DtUniqueID id)
 
virtual ~DtWaterClampingUpdater ()
 
virtual void update (DtTime tNow)
 
virtual void setMinimumCullDistance (float distance)
 
virtual void setCullType (int cullType)
 
virtual void setIsSinking (bool isSinking)
 
virtual void setWaterClampingEnabled (bool enabled)
 
- Public Member Functions inherited from makVrv::DtSceneObjectUpdater
 DtSceneObjectUpdater (DtDe &de, DtUniqueID id)
 
virtual ~DtSceneObjectUpdater ()
 
virtual void setNextUpdater (DtSceneObjectUpdater *nextUpdater)
 
virtual void setPrevUpdater (DtSceneObjectUpdater *prevUpdater)
 
virtual bool needsUpdate (DtTime tNow)
 
virtual void updateAdaptiveTickrate (const DtVector &lastPos, const DtTime &deltaTime)
 
virtual void setVertexToUpdate (unsigned int vertex)
 
virtual void setInputPosition (const DtVector &position)
 
virtual void setInputOrientation (const DtTaitBryan &orientation)
 
virtual void setOutputPosition (const DtVector &position)
 
virtual DtVector outputPosition () const
 
virtual void setOutputOrientation (const DtTaitBryan &orientation)
 
virtual DtTaitBryan outputOrientation () const
 
virtual void setOutputPositionAndOrientation (const DtVector &position, const DtTaitBryan &orientation)
 
virtual DtTime lastUpdateTime () const
 
virtual void setSceneObject (DtSceneObject *sceneObject, bool addToTickableMgrIfHead)
 
virtual void setSceneObject (DtSceneObject *sceneObject)
 
DtUniqueID uniqueId () const
 
DtSceneObjectUpdaterfindNextUpdater () const
 
DtSceneObjectUpdaterfindPrevUpdater () const
 
virtual bool isChainThreadSafe (DtSceneObjectUpdater *firstUpdater)
 
virtual DtSceneObjectUpdaterchainHead ()
 
virtual void setIsThreadSafe (bool safe)
 
virtual void setTickableEnabled (bool enabled) override
 
virtual void setAdaptiveTickLodEnabled (bool enabled)
 
virtual bool adaptiveTickLodEnabled () const override
 
virtual void setLodScaleSpeedFactor (float factor)
 
virtual float lodScaleSpeedFactor () const
 
virtual void setLodRadiusStart (float ratius)
 
virtual float lodRadiusStart () const
 
virtual void setLodRadiusEnd (float ratius)
 
virtual float lodRadiusEnd () const
 
virtual void setNearLodUpdateRate (int nearRate)
 
virtual int nearLodUpdateRate () const
 
virtual void setFarLodUpdateRate (int maxRate)
 
virtual int farLodUpdateRate () const
 
DtSceneObjectfindActiveSceneObject ()
 
DtSceneObject *const findActiveSceneObject () const
 
DtSceneObjectfindSceneObjectForModelSet (DtModelSetId modelSet)
 
DtSceneObject *const findSceneObjectForModelSet (DtModelSetId modelSet) const
 
virtual void addSceneObjectToUpdate (DtModelSetId modelSet, DtSceneObject *sceneObject, bool addToTickableMgrIfHead=true)
 
virtual void removeSceneObjectToUpdate (DtModelSetId modelSet, DtSceneObject *sceneObject)
 
virtual void addSceneObjectToUpdateAtChainEnd (DtModelSetId modelSet, DtSceneObject *sceneObject, bool addToTickableMgrIfHead=true)
 
virtual void removeSceneObjectToUpdateAtChainEnd (DtModelSetId modelSet, DtSceneObject *sceneObject)
 
- Public Member Functions inherited from makVrv::DtTickable
virtual bool updateIfNeeded (DtTime tNow)
 
virtual ~DtTickable ()
 
virtual bool isThreadSafe () const
 
virtual void setTickableListState (TickableListState safeList)
 
virtual TickableListState tickableListState () const
 
virtual void setUpdatePeriod (unsigned int period)
 
virtual unsigned int updatePeriod () const
 

Protected Member Functions

virtual double altitudeAt (const DtVector &pos)
 
virtual void addAltitude (DtVector &pos, float altitudeToAdd)
 
virtual DtVector moveToAltitude (const DtVector &pos, double alt)
 
virtual DtTaitBryan computeMotionOrientation ()
 
virtual bool isFullyImmersed ()
 
virtual void adjustSinkingSpeedScale (const DtVector &inputPosition, const DtVector &currentPosition)
 
virtual void smoothMotionAndSeaLevel (double percent, DtVector &outputPos, DtTaitBryan &outputOri)
 
virtual void slot_oceanLayerSeaLevelChanged (double sealevel)
 
virtual void updateWaterLineAltitude (double sealevel)
 
virtual bool initializeExtents (double sealevel)
 
virtual bool checkCull (DtObserverObject *const observer, const DtVector &eyeToShip) const
 
virtual void slot_coordinateSystemChanged ()
 
- Protected Member Functions inherited from makVrv::DtWaterClampingUpdater
virtual void setNextUpdaterWithoutManagerPlacement (DtSceneObjectUpdater *updater)
 
- Protected Member Functions inherited from makVrv::DtSceneObjectUpdater
virtual void removeThreadSafeChainFromManager (DtSceneObjectUpdater *head)
 
virtual void removeUnThreadSafeChainFromManager (DtSceneObjectUpdater *head)
 
virtual void addThreadSafeChainToManager (DtSceneObjectUpdater *head)
 
virtual void addUnThreadSafeChainToManager (DtSceneObjectUpdater *head)
 
virtual void placeChainOnCorrectTickableList (DtSceneObjectUpdater *head)
 
virtual void slot_sceneObjectToBeDeleted (const DtUniqueID &id)
 
- Protected Member Functions inherited from makVrv::DtTickable
 DtTickable (DtTickableManagerInterface *manager)
 
 DtTickable ()=delete
 
virtual void slot_managerAboutToBeDeleted ()
 

Protected Attributes

DtRk4MotionModelmyMotionModel
 
DtTime myLastTickTime
 
bool myExtentsSet
 
bool myIsPaused
 
double myLastSinkingDiff
 
bool mySmallObject
 
DtTritonManagermyTritonManager
 
DtVector myLastMotionPos
 
DtTaitBryan myLastMotionOri
 
DtVector myLastOutputPos
 
DtVector myLastAltitudeAdjustedPos
 
float myWaterlineAltitude
 
DtVector myLastInputPosition
 
DtVector mySeaLevelPosition
 
bool mySeaLevelPositionDirty
 
DtTime myLastLODTickTime
 
float mySeaLevelClampDistance
 
bool myLodedOut
 
bool myCoordinateSystemChanged
 
DtCoordinateConvertermyCoordinateConverter = nullptr
 
- Protected Attributes inherited from makVrv::DtWaterClampingUpdater
float myWaterlineOriginOffset
 
float myLodDistance
 
float myMinimumCullDistance
 
DtEntitySettingsRecord::BuoyancyCullType myCullType
 
bool myIsSinking
 
bool myWaterClampingEnabled
 
- Protected Attributes inherited from makVrv::DtSceneObjectUpdater
DtDemyDe
 
DtUniqueID myUniqueId
 
DtModelSetId myModelSet
 
boost::signalslib::connection mySceneObjectConnection
 
DtSceneObjectUpdatermyNextUpdater
 
DtSceneObjectUpdatermyPrevUpdater
 
unsigned int myVertexToUpdate
 
DtVector myLastPositionForAdaptiveTickRate
 
DtVector myInputPosition
 
DtTaitBryan myInputOrientation
 
DtVector myLastOutputPosition
 
DtTaitBryan myLastOutputOrientation
 
bool myPositionDataOutputted
 
bool myOrientationDataOutputted
 
ModelSetToSceneObjectMap mySceneObjectMap
 
SceneObjectConnectionsMap mySceneObjectConnectionsMap
 
AdaptiveTickRateLODParams myAdaptiveTickRateLODParams
 
- Protected Attributes inherited from makVrv::DtTickable
DtTickableManagerInterfacemyManager
 
DtSignalConnectionManager myConnections
 
unsigned int myFrameCounter
 
unsigned int myFrameToUpdate
 
unsigned int myUpdatePeriod
 
unsigned int myTickableIndex
 
DtTime myLastUpdateTime
 
bool myIsThreadSafe
 
TickableListState myTickableListState
 

Static Protected Attributes

static const double theMotionTimeout
 
static const double theSmoothTime
 
static const double theFullyLodScaler
 

Additional Inherited Members

- Public Types inherited from makVrv::DtTickable
enum  TickableListState { TickableNotOnList, TickableOnMainList, TickableOnThreadSafeList }
 
- Public Attributes inherited from makVrv::DtSceneObjectUpdater
boost::signalslib::signal
< void(const DtUniqueID &) > 
signal_updaterToBeDeleted
 
- Protected Types inherited from makVrv::DtSceneObjectUpdater
using ModelSetToSceneObjectMap = std::unordered_map< DtModelSetId, DtSceneObject * >
 
using SceneObjectConnectionsMap = std::unordered_map< DtUniqueID, boost::signalslib::connection >
 

Constructor & Destructor Documentation

makVrv::DtTritonWaterClampingUpdater::DtTritonWaterClampingUpdater ( DtDe de,
DtUniqueID  id 
)

CTOR.

virtual makVrv::DtTritonWaterClampingUpdater::~DtTritonWaterClampingUpdater ( )
virtual

DTOR.

Member Function Documentation

virtual bool makVrv::DtTritonWaterClampingUpdater::clampToWater ( DtTime  tNow)
virtual

Clamp an object to the water using the buoyancy model.

Reimplemented from makVrv::DtWaterClampingUpdater.

virtual void makVrv::DtTritonWaterClampingUpdater::setPaused ( bool  isPaused)
virtual

Set the simulation paused/unpaused.

Reimplemented from makVrv::DtWaterClampingUpdater.

virtual void makVrv::DtTritonWaterClampingUpdater::setLOD ( float  lodDistance)
virtual

override the base class version so myFullyLodDistance can be updated

Reimplemented from makVrv::DtWaterClampingUpdater.

virtual void makVrv::DtTritonWaterClampingUpdater::setWaterlineOriginOffset ( float  offset)
virtual

override the base class version so myWaterlineAltitude can be updated

Reimplemented from makVrv::DtWaterClampingUpdater.

virtual void makVrv::DtTritonWaterClampingUpdater::resetMotionModel ( double  seaLevel)
virtual

Deletes and recreates the underlying motion model; used when sea level.

virtual double makVrv::DtTritonWaterClampingUpdater::altitudeAt ( const DtVector pos)
protectedvirtual

Get the altitude at a point.

virtual void makVrv::DtTritonWaterClampingUpdater::addAltitude ( DtVector pos,
float  altitudeToAdd 
)
protectedvirtual

Add the specified altitude to pos.

virtual DtVector makVrv::DtTritonWaterClampingUpdater::moveToAltitude ( const DtVector pos,
double  alt 
)
protectedvirtual

Move a point to the specified altitude.

virtual DtTaitBryan makVrv::DtTritonWaterClampingUpdater::computeMotionOrientation ( )
protectedvirtual

Compute the orientation for the motion model.

Combines heading from unclamped orientation and pitch/roll from motion orientation

virtual bool makVrv::DtTritonWaterClampingUpdater::isFullyImmersed ( )
protectedvirtual

Are we under water?

virtual void makVrv::DtTritonWaterClampingUpdater::adjustSinkingSpeedScale ( const DtVector inputPosition,
const DtVector currentPosition 
)
protectedvirtual
virtual void makVrv::DtTritonWaterClampingUpdater::smoothMotionAndSeaLevel ( double  percent,
DtVector outputPos,
DtTaitBryan &  outputOri 
)
protectedvirtual

Percent 0 = myLastMotionPos/Ori Percent 1 = mySeaLevelPosition/myInputOrientation linear interpolation between the two for values in between 0 and 1.

virtual void makVrv::DtTritonWaterClampingUpdater::slot_oceanLayerSeaLevelChanged ( double  sealevel)
protectedvirtual
virtual void makVrv::DtTritonWaterClampingUpdater::updateWaterLineAltitude ( double  sealevel)
protectedvirtual
virtual bool makVrv::DtTritonWaterClampingUpdater::initializeExtents ( double  sealevel)
protectedvirtual
virtual bool makVrv::DtTritonWaterClampingUpdater::checkCull ( DtObserverObject *const  observer,
const DtVector eyeToShip 
) const
protectedvirtual
virtual void makVrv::DtTritonWaterClampingUpdater::slot_coordinateSystemChanged ( )
protectedvirtual

Member Data Documentation

const double makVrv::DtTritonWaterClampingUpdater::theMotionTimeout
staticprotected
const double makVrv::DtTritonWaterClampingUpdater::theSmoothTime
staticprotected
const double makVrv::DtTritonWaterClampingUpdater::theFullyLodScaler
staticprotected
DtRk4MotionModel* makVrv::DtTritonWaterClampingUpdater::myMotionModel
protected
DtTime makVrv::DtTritonWaterClampingUpdater::myLastTickTime
protected
bool makVrv::DtTritonWaterClampingUpdater::myExtentsSet
protected
bool makVrv::DtTritonWaterClampingUpdater::myIsPaused
protected
double makVrv::DtTritonWaterClampingUpdater::myLastSinkingDiff
protected
bool makVrv::DtTritonWaterClampingUpdater::mySmallObject
protected
DtTritonManager& makVrv::DtTritonWaterClampingUpdater::myTritonManager
protected
DtVector makVrv::DtTritonWaterClampingUpdater::myLastMotionPos
protected
DtTaitBryan makVrv::DtTritonWaterClampingUpdater::myLastMotionOri
protected
DtVector makVrv::DtTritonWaterClampingUpdater::myLastOutputPos
protected
DtVector makVrv::DtTritonWaterClampingUpdater::myLastAltitudeAdjustedPos
protected
float makVrv::DtTritonWaterClampingUpdater::myWaterlineAltitude
protected
DtVector makVrv::DtTritonWaterClampingUpdater::myLastInputPosition
protected
DtVector makVrv::DtTritonWaterClampingUpdater::mySeaLevelPosition
protected
bool makVrv::DtTritonWaterClampingUpdater::mySeaLevelPositionDirty
protected
DtTime makVrv::DtTritonWaterClampingUpdater::myLastLODTickTime
protected
float makVrv::DtTritonWaterClampingUpdater::mySeaLevelClampDistance
protected
bool makVrv::DtTritonWaterClampingUpdater::myLodedOut
protected
bool makVrv::DtTritonWaterClampingUpdater::myCoordinateSystemChanged
protected
DtCoordinateConverter* makVrv::DtTritonWaterClampingUpdater::myCoordinateConverter = nullptr
protected

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


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

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)