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

This is not a typical updater, instead of the usual 1 updater per entity, the DtEntityWheelManager adds entity info to this updater which updates all the entity wheels in one update.

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

Classes

struct  DtPerModelWheelUpdaterCache
 

Public Member Functions

 DtEntityWheelUpdater (DtDe &de)
 
virtual ~DtEntityWheelUpdater ()
 
virtual void update (DtTime tNow)
 
virtual void setWheelData (std::unordered_map< DtOsgArticulatedModel *, DtEntityWheelData > *wheelMap)
 
- Public Member Functions inherited from makVrv::DtTickable
virtual bool needsUpdate (DtTime tNow)
 
virtual bool updateIfNeeded (DtTime tNow)
 
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
 

Static Public Member Functions

static void setAutoResumeTimeout (double val)
 
static double autoResumeTimeout ()
 

Protected Member Functions

virtual bool verifyAutoUpdate (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData)
 
virtual void updateWheels (DtTime tNow)
 
virtual void updateWheels (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData, bool vrvWheelRotationEnabled)
 
virtual bool calculateVelocity (DtSceneObject *sceneObject, DtDeadReckonUpdater *updater, DtEntityWheelDataCommon &wheelDataCommon, DtTime tNow) const
 
virtual bool calculateHeading (DtSceneObject *sceneObject, DtDeadReckonUpdater *updater, DtEntityWheelDataCommon &wheelDataCommon, DtTime tNow) const
 
virtual float calculateDistanceBetweenWheelAxles (DtOsgArticulatedModel *model, int firstSet, int secondSet) const
 
virtual bool hasAckermanSteering (DtOsgArticulatedModel *model) const
 
virtual bool hasSkidSteering (DtOsgArticulatedModel *model) const
 
virtual bool hasArticulatedWheels (DtOsgArticulatedModel *model) const
 
virtual int numSetOfWheels (const DtEntityWheelData &wheelData) const
 
virtual DtAckermanSteeringVelocity calculateAckermanSteeringVelocity (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData, double speed) const
 
virtual DtSkidSteeringSpeed calculateSkidSteeringSpeeds (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData) const
 
virtual bool hasTracks (DtOsgArticulatedModel *model) const
 
virtual float calculateTrackWidth (DtOsgArticulatedModel *model) const
 
virtual void printWheelDetails (DtOsgArticulatedModel *model, const DtVector &currVel, int partNum, double speed, double angVel) const
 
virtual void updateWheelsAckerman (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData, bool vrvWheelRotationEnabled) const
 
virtual void updateWheelsSkid (DtTime tNow, DtOsgArticulatedModel *model, DtEntityWheelData &wheelData, bool vrvWheelRotationEnabled, DtSkidSteeringSpeed skidSteeringSpeed) const
 
virtual bool isReversing (const DtVector &entityVelocity, const DtTaitBryan &entityHeading) const
 
virtual void slot_coordinateSystemChanged ()
 
virtual void slot_sceneObjectToBeDeleted (DtOsgArticulatedModel *model)
 
virtual void slot_sceneObjectUpdaterToBeDeleted (DtOsgArticulatedModel *model)
 
virtual void findSceneObjectAndUpdater (DtOsgArticulatedModel *model, DtSceneObject *&sceneObject, DtDeadReckonUpdater *&updater)
 
virtual bool doesModelNeedUpdating (DtOsgArticulatedModel *model)
 
- Protected Member Functions inherited from makVrv::DtTickable
 DtTickable (DtTickableManagerInterface *manager)
 
 DtTickable ()=delete
 
virtual void slot_managerAboutToBeDeleted ()
 

Protected Attributes

DtDemyDe
 
DtCoordinateSystemmyCoordinateSystem
 
bool myShouldRotate
 
std::unordered_map
< DtOsgArticulatedModel
*, DtEntityWheelData > * 
myEntityWheelMap
 
std::unordered_map
< DtOsgArticulatedModel
*, DtPerModelWheelUpdaterCache
myPerModelWheelUpdaterCacheMap
 
- 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 double theAutoResumeTimeout
 

Private Member Functions

 DtEntityWheelUpdater ()=delete
 
 DtEntityWheelUpdater (const DtEntityWheelUpdater &)=delete
 
DtEntityWheelUpdateroperator= (const DtEntityWheelUpdater &)=delete
 

Additional Inherited Members

- Public Types inherited from makVrv::DtTickable
enum  TickableListState { TickableNotOnList, TickableOnMainList, TickableOnThreadSafeList }
 

Constructor & Destructor Documentation

makVrv::DtEntityWheelUpdater::DtEntityWheelUpdater ( DtDe de)

CTOR.

virtual makVrv::DtEntityWheelUpdater::~DtEntityWheelUpdater ( )
virtual

DTOR.

makVrv::DtEntityWheelUpdater::DtEntityWheelUpdater ( )
privatedelete

Default Constructor not implemented – default constructor not allowed.

makVrv::DtEntityWheelUpdater::DtEntityWheelUpdater ( const DtEntityWheelUpdater )
privatedelete

Copy Constructor not implemented - Copy not allowed.

Member Function Documentation

DtEntityWheelUpdater& makVrv::DtEntityWheelUpdater::operator= ( const DtEntityWheelUpdater )
privatedelete

Assignment Operator not implemented - Copy not allowed.

virtual void makVrv::DtEntityWheelUpdater::update ( DtTime  tNow)
virtual

update per tick.

See Also
DtTickable::update.

Implements makVrv::DtTickable.

virtual void makVrv::DtEntityWheelUpdater::setWheelData ( std::unordered_map< DtOsgArticulatedModel *, DtEntityWheelData > *  wheelMap)
virtual

Give the updater a pointer to the manager's wheel data map.

static void makVrv::DtEntityWheelUpdater::setAutoResumeTimeout ( double  val)
static

Sets the amount of time before auto updates will resume after a manual/nework update has been applied to a wheel part.

static double makVrv::DtEntityWheelUpdater::autoResumeTimeout ( )
static

Returns the amount of time before auto updates will resume after a manual/nework update has been applied to a wheel part.

virtual bool makVrv::DtEntityWheelUpdater::verifyAutoUpdate ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData 
)
protectedvirtual

internal Detects if wheel data was updated by something other than this auto-updater. If wheel data was manually/network updated, then no auto updates will occur for a timeout period. Once the timeout period ends and no manual/network updates have occured, then auto updates will resume. returns true if it's okay to auto-update the wheel data.

virtual void makVrv::DtEntityWheelUpdater::updateWheels ( DtTime  tNow)
protectedvirtual

internal. update the wheels that are art parts,

virtual void makVrv::DtEntityWheelUpdater::updateWheels ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData,
bool  vrvWheelRotationEnabled 
)
protectedvirtual

internal

virtual bool makVrv::DtEntityWheelUpdater::calculateVelocity ( DtSceneObject sceneObject,
DtDeadReckonUpdater updater,
DtEntityWheelDataCommon wheelDataCommon,
DtTime  tNow 
) const
protectedvirtual

calculate the velocity of the entity Use the updater/dead reckoner of the velocity if present Else, use the last position/time (stored in wheel data common)

virtual bool makVrv::DtEntityWheelUpdater::calculateHeading ( DtSceneObject sceneObject,
DtDeadReckonUpdater updater,
DtEntityWheelDataCommon wheelDataCommon,
DtTime  tNow 
) const
protectedvirtual

calculate the heading of the entity

virtual float makVrv::DtEntityWheelUpdater::calculateDistanceBetweenWheelAxles ( DtOsgArticulatedModel model,
int  firstSet,
int  secondSet 
) const
protectedvirtual

internal function to calculate distance between 2 sets of wheel axles

virtual bool makVrv::DtEntityWheelUpdater::hasAckermanSteering ( DtOsgArticulatedModel model) const
protectedvirtual

is regular vehicle?

virtual bool makVrv::DtEntityWheelUpdater::hasSkidSteering ( DtOsgArticulatedModel model) const
protectedvirtual

is tracked vehicle?

virtual bool makVrv::DtEntityWheelUpdater::hasArticulatedWheels ( DtOsgArticulatedModel model) const
protectedvirtual

has articulated wheels?

virtual int makVrv::DtEntityWheelUpdater::numSetOfWheels ( const DtEntityWheelData wheelData) const
protectedvirtual

how many set of wheels does it have? (e.g. 4 wheeler has 2 sets of wheels, a stryker has 4)

virtual DtAckermanSteeringVelocity makVrv::DtEntityWheelUpdater::calculateAckermanSteeringVelocity ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData,
double  speed 
) const
protectedvirtual

calculate the steering velocity required for the first (and optionally the 2nd) set of wheels given the current time, speed returns pair<first set speed, second set speed(or 0)>

virtual DtSkidSteeringSpeed makVrv::DtEntityWheelUpdater::calculateSkidSteeringSpeeds ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData 
) const
protectedvirtual

calculate the linear speed of the left and right side of the tracks returns pair<first set speed, >

virtual bool makVrv::DtEntityWheelUpdater::hasTracks ( DtOsgArticulatedModel model) const
protectedvirtual

does it have tracks? (sequences or scrollable uvs)

virtual float makVrv::DtEntityWheelUpdater::calculateTrackWidth ( DtOsgArticulatedModel model) const
protectedvirtual

internal function to calculate distance between the tracks of the tracked vehicle

virtual void makVrv::DtEntityWheelUpdater::printWheelDetails ( DtOsgArticulatedModel model,
const DtVector &  currVel,
int  partNum,
double  speed,
double  angVel 
) const
protectedvirtual

for debugging

virtual void makVrv::DtEntityWheelUpdater::updateWheelsAckerman ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData,
bool  vrvWheelRotationEnabled 
) const
protectedvirtual

internal

virtual void makVrv::DtEntityWheelUpdater::updateWheelsSkid ( DtTime  tNow,
DtOsgArticulatedModel model,
DtEntityWheelData wheelData,
bool  vrvWheelRotationEnabled,
DtSkidSteeringSpeed  skidSteeringSpeed 
) const
protectedvirtual

internal

virtual bool makVrv::DtEntityWheelUpdater::isReversing ( const DtVector &  entityVelocity,
const DtTaitBryan &  entityHeading 
) const
protectedvirtual

Determine if the entity is reversing.

virtual void makVrv::DtEntityWheelUpdater::slot_coordinateSystemChanged ( )
protectedvirtual

Updates the coordinate system clone when the system changes.

virtual void makVrv::DtEntityWheelUpdater::slot_sceneObjectToBeDeleted ( DtOsgArticulatedModel model)
protectedvirtual

Ensures the wheel updater does not keep references to deleted objects.

virtual void makVrv::DtEntityWheelUpdater::slot_sceneObjectUpdaterToBeDeleted ( DtOsgArticulatedModel model)
protectedvirtual

Ensures the wheel updater does not keep references to deleted objects.

virtual void makVrv::DtEntityWheelUpdater::findSceneObjectAndUpdater ( DtOsgArticulatedModel model,
DtSceneObject *&  sceneObject,
DtDeadReckonUpdater *&  updater 
)
protectedvirtual

Find the scene object and updater from the model if they exist.

virtual bool makVrv::DtEntityWheelUpdater::doesModelNeedUpdating ( DtOsgArticulatedModel model)
protectedvirtual

Helper function used by update to determine whether we need to update the wheels for the provided model Returns true if: 1) the found dead reckon updater for the model is not frozen OR 2) the 'moving' state for the model is 1 (the model is moving) Returns false otherwise.

Member Data Documentation

DtDe& makVrv::DtEntityWheelUpdater::myDe
protected
DtCoordinateSystem* makVrv::DtEntityWheelUpdater::myCoordinateSystem
protected
bool makVrv::DtEntityWheelUpdater::myShouldRotate
protected
std::unordered_map<DtOsgArticulatedModel*, DtEntityWheelData>* makVrv::DtEntityWheelUpdater::myEntityWheelMap
protected

map of entities to corresponding wheel data art parts

std::unordered_map<DtOsgArticulatedModel*, DtPerModelWheelUpdaterCache> makVrv::DtEntityWheelUpdater::myPerModelWheelUpdaterCacheMap
protected
double makVrv::DtEntityWheelUpdater::theAutoResumeTimeout
staticprotected

The amount of time before auto updates will resume after a manual/nework update has been applied to a wheel part.


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)