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 | Protected Member Functions | Protected Attributes
makVrv::DtTickable Class Referenceabstract

An abstract base class for objects that require updates. This object automatically adds itself to a DtTickableManager.

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

Public Types

enum  TickableListState { TickableNotOnList, TickableOnMainList, TickableOnThreadSafeList }
 

Public Member Functions

virtual bool needsUpdate (DtTime tNow)
 
virtual bool updateIfNeeded (DtTime tNow)
 
virtual void update (DtTime tNow)=0
 
virtual ~DtTickable ()
 
virtual void setTickableEnabled (bool enabled)
 
virtual void setIsThreadSafe (bool safe)
 
virtual bool isThreadSafe () const
 
virtual void setTickableListState (TickableListState safeList)
 
virtual TickableListState tickableListState () const
 
virtual void setUpdatePeriod (unsigned int period)
 
virtual unsigned int updatePeriod () const
 
virtual bool adaptiveTickLodEnabled () const
 

Protected Member Functions

 DtTickable (DtTickableManagerInterface *manager)
 
 DtTickable ()=delete
 
virtual void slot_managerAboutToBeDeleted ()
 

Protected Attributes

DtTickableManagerInterfacemyManager
 
DtSignalConnectionManager myConnections
 
unsigned int myFrameCounter
 
unsigned int myFrameToUpdate
 
unsigned int myUpdatePeriod
 
unsigned int myTickableIndex
 
DtTime myLastUpdateTime
 
bool myIsThreadSafe
 
TickableListState myTickableListState
 

Member Enumeration Documentation

Enumeration used to indicate which DtTickableManager's tickable list the tickable is on, if any.

Enumerator
TickableNotOnList 
TickableOnMainList 
TickableOnThreadSafeList 

Constructor & Destructor Documentation

virtual makVrv::DtTickable::~DtTickable ( )
virtual

Virtual DTOR.

makVrv::DtTickable::DtTickable ( DtTickableManagerInterface manager)
protected

CTOR.

Parameters
[in]manageris the managing object to update this object; NULL may be passed to create an unticked tickable Do not delete this object explicitly, because the manager now owns it and will delete it on its own
makVrv::DtTickable::DtTickable ( )
protecteddelete

Unimplemented default CTOR.

Member Function Documentation

virtual bool makVrv::DtTickable::needsUpdate ( DtTime  tNow)
virtual
virtual bool makVrv::DtTickable::updateIfNeeded ( DtTime  tNow)
virtual

Calls needsUpdate(), and then calls update() if needsUpdate() is true.

virtual void makVrv::DtTickable::update ( DtTime  tNow)
pure virtual

The update function called by DtTickableManager during update-ticks.

Parameters
[in]tNowis the current time-stamp.

Implemented in makVrv::DtAttachableUpdater, makVrv::DtOsgGlStudioCockpit, makVrv::DtOsgEarthPaperMapManager, makVrv::DtMultiPointEmbarkationUpdater, makVrv::DtDynamicTerrainObject, makVrv::DtEmbarkationUpdater, makVrf::DtVrfEntitySoundUpdater, makVrv::DtRotorWashManager, makVrv::DtAttachableEntityFanUpdater, makVrv::DtSceneObjectUpdater, makVrv::DtEntityWheelUpdater, makVrv::DtSymbolDecorationUpdater, makVrv::DtOverWaterUpdater, makVrv::DtLineModelUpdater, makVrv::DtGroundClampingUpdater, makVrv::DtCameraShake, makVrv::DtSurfaceClampingUpdater, makVrv::DtAttachableIntervisibilityUpdater, makVrv::DtMultiDeadReckonUpdater, makVrv::DtEnvironmentalIconCenteringUpdater, makVrv::DtVertexUpdater, makVrv::DtTritonTidalStreamWakeUpdater, makVrv::DtFxParticleCollisionObjectUpdater, makVrv::DtLosTrackMonitor, makVrv::DtMultiPointSceneObjectUpdater, makVrv::DtShipFlagSwitchTickable, makVrv::DtLineIndicatorSymbolDecorationUpdater, makVrv::DtParticleCollisionObjectUpdater, makVrv::DtWakeUpdater, makVrv::DtTritonWakeUpdater, makVrf::DtExternalDataSymbolDecorationUpdater, makVrv::DtShipFlagDirTickable, makVrf::DtPriorityUpdater, makVrf::DtSpotReportTrackHistoryUpdater, makVrv::DtNavigationLightUpdater, makVrv::DtTrackMonitor, makVrv::DtRotorUpdater, makVrv::DtContinuousCameraShake, makVrv::DtTidalStreamWakeUpdater, makVrv::DtWaterClampingUpdater, makVrf::DtSensorContactLinesUpdater, makVrv::DtOsgEarthDynamicFidManagerTickable, makVrv::DtDeadReckonUpdater, makVrv::DtTrackHistoryUpdater, makVrv::DtWindDirTickable, makVrv::DtWindRotTickable, makVrv::DtWindSwitchTickable, makVrv::DtEntitySoundUpdater, makVrv::DtTerrainScalingUpdater, and makVrf::DtVrfAttachableEntityFanUpdater.

virtual void makVrv::DtTickable::setTickableEnabled ( bool  enabled)
virtual

Tickables are added to the main tickable list on construction. setTickableEnabled will remove it from the list if set to false, or readd it when true is passed in.

Reimplemented in makVrv::DtSceneObjectUpdater.

virtual void makVrv::DtTickable::setIsThreadSafe ( bool  safe)
virtual

Get/set whether this tickable can be updated in parallel with other tickables. Calling setIsThreadSafe() will put the tickable onto either the tickable manager's main tickable list or its threadSafe list. By default, all tickables are considered NOT thread safe, and start on the main tickable list.

Reimplemented in makVrv::DtSceneObjectUpdater.

virtual bool makVrv::DtTickable::isThreadSafe ( ) const
virtual

Get/set whether this tickable can be updated in parallel with other tickables. Calling setIsThreadSafe() will put the tickable onto either the tickable manager's main tickable list or its threadSafe list. By default, all tickables are considered NOT thread safe, and start on the main tickable list.

virtual void makVrv::DtTickable::setTickableListState ( TickableListState  safeList)
virtual

Track which tickable list (if any) this tickable is on Since the tickable constructor puts ALL tickables on the main (unThreadSafe) to start we need a way to check which list a tickable is on (and this way we can request removals from the correct list instead of having to call DtTickableManager::removeTickableObject(), which tries both lists).

virtual TickableListState makVrv::DtTickable::tickableListState ( ) const
virtual

Track which tickable list (if any) this tickable is on Since the tickable constructor puts ALL tickables on the main (unThreadSafe) to start we need a way to check which list a tickable is on (and this way we can request removals from the correct list instead of having to call DtTickableManager::removeTickableObject(), which tries both lists).

virtual void makVrv::DtTickable::setUpdatePeriod ( unsigned int  period)
virtual

Specify how often (in # of frames) this tickable should call update. E.g, if period is set to 40, then needsUpdate will return true once every forty frames. Which frame that happens on is randomized (when the period is set) to help distribute intermittent tickables. By default, period is 1, and needsUpdate returns true every frame.

virtual unsigned int makVrv::DtTickable::updatePeriod ( ) const
virtual

Specify how often (in # of frames) this tickable should call update. E.g, if period is set to 40, then needsUpdate will return true once every forty frames. Which frame that happens on is randomized (when the period is set) to help distribute intermittent tickables. By default, period is 1, and needsUpdate returns true every frame.

virtual bool makVrv::DtTickable::adaptiveTickLodEnabled ( ) const
virtual

Is the adaptive tick LOD system enabled, overridden by subclasses.

Reimplemented in makVrv::DtSceneObjectUpdater.

virtual void makVrv::DtTickable::slot_managerAboutToBeDeleted ( )
protectedvirtual

Member Data Documentation

DtTickableManagerInterface* makVrv::DtTickable::myManager
protected

Pointer to manager for removal during destruction.

DtSignalConnectionManager makVrv::DtTickable::myConnections
protected
unsigned int makVrv::DtTickable::myFrameCounter
protected
unsigned int makVrv::DtTickable::myFrameToUpdate
protected
unsigned int makVrv::DtTickable::myUpdatePeriod
protected
unsigned int makVrv::DtTickable::myTickableIndex
protected
DtTime makVrv::DtTickable::myLastUpdateTime
protected
bool makVrv::DtTickable::myIsThreadSafe
protected
TickableListState makVrv::DtTickable::myTickableListState
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)