VR-Forces 4.8 Class Documentation
 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. More...

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

Public Types

enum  TickableListState { TickableNotOnList, TickableOnMainList, TickableOnThreadSafeList }
 Enumeration used to indicate which DtTickableManager's tickable list the tickable is on, if any. More...
 

Public Member Functions

virtual bool needsUpdate (DtTime tNow)
 The check function called by DtTickableManager to verify if an update is required. More...
 
virtual bool updateIfNeeded (DtTime tNow)
 Calls needsUpdate(), and then calls update() if needsUpdate() is true. More...
 
virtual void update (DtTime tNow)=0
 The update function called by DtTickableManager during update-ticks. More...
 
virtual ~DtTickable ()
 Virtual DTOR. More...
 
virtual void setIsThreadSafe (bool safe)
 Get/set whether this tickable can be updated in parallel with other tickables. More...
 
virtual bool isThreadSafe () const
 
virtual void setTickableListState (TickableListState safeList)
 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). More...
 
virtual TickableListState tickableListState () const
 
virtual void setUpdatePeriod (unsigned int period)
 Specify how often (in # of frames) this tickable should call update. More...
 
virtual unsigned int updatePeriod () const
 
virtual bool lodSystemEnabled () const
 is the update LOD system enabled, overridden by subclasses More...
 

Protected Member Functions

 DtTickable (DtTickableManagerInterface *manager)
 CTOR. More...
 
 DtTickable ()
 Unimplemented default CTOR. More...
 
virtual void slot_managerAboutToBeDeleted ()
 

Protected Attributes

DtTickableManagerInterfacemyManager
 Pointer to manager for removal during destruction. More...
 
DtSignalConnectionManager myConnections
 
unsigned int myFrameCounter
 
unsigned int myFrameToUpdate
 
unsigned int myUpdatePeriod
 
DtTime myLastUpdateTime
 
bool myIsThreadSafe
 
TickableListState myTickableListState
 

Detailed Description

An abstract base class for objects that require updates.

This object automatically adds itself to a DtTickableManager.

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 ( )
protected

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::DtDrawnIntersectorManager, makVrv::DtAttachableUpdater, makVrv::DtOsgGlStudioCockpit, makVrv::DtEmbarkationUpdater, makVrf::DtVrfEntitySoundUpdater, makVrv::DtMultiPointEmbarkationUpdater, makVrv::DtDynamicTerrainObject, makVrv::DtSceneObjectUpdater, makVrv::DtAttachableEntityFanUpdater, makVrv::DtTritonRotorWashUpdater, makVrv::DtLineModelUpdater, makVrv::DtParticleRotorWashUpdater, makVrv::DtCameraShake, makVrv::DtOverWaterUpdater, makVrv::DtSurfaceClampingUpdater, makVrv::DtMultiDeadReckonUpdater, makVrv::DtVertexUpdater, makVrv::DtGroundClampingUpdater, makVrv::DtMultiPointSceneObjectUpdater, makVrv::DtFxParticleCollisionObjectUpdater, makVrv::DtWakeUpdater, makVrv::DtTritonTidalStreamWakeUpdater, makVrv::DtEnvironmentalIconCenteringUpdater, makVrf::DtExternalDataSymbolDecorationUpdater, makVrv::DtParticleCollisionObjectUpdater, makVrf::DtSpotReportTrackHistoryUpdater, makVrf::DtPriorityUpdater, makVrv::DtNavigationLightUpdater, makVrv::DtSymbolDecorationUpdater, makVrv::DtTidalStreamWakeUpdater, makVrv::DtTritonWakeUpdater, makVrv::DtRotorWashUpdater, makVrv::DtContinuousCameraShake, makVrv::DtWaterClampingUpdater, makVrv::DtShipFlagSwitchTickable, makVrf::DtSensorContactLinesUpdater, makVrv::DtAttachableIntervisibilityUpdater, makVrv::DtShipFlagDirTickable, makVrv::DtDeadReckonUpdater, makVrv::DtHeadingLineUpdater, makVrv::DtTrackHistoryUpdater, makVrv::DtEntitySoundUpdater, makVrv::DtWindRotTickable, makVrv::DtWindDirTickable, makVrv::DtWindSwitchTickable, makVrf::DtVrfAttachableEntityFanUpdater, makVrv::DtTerrainScalingUpdater, and makVrv::DtEntityWheelUpdater.

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
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
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
virtual bool makVrv::DtTickable::lodSystemEnabled ( ) const
virtual

is the update 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
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 Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)