![]() |
VR-Forces 4.1.1 Class Documentation
|
DtGroundClampingUpdater is an updater that is given a position and orientation, and depending on how it is configured, updates a scene object with a position and orientation that are clamped to the underlying terrain. More...

Public Types | |
| enum | GroundClampingMode { ClampNone = 0, ClampOrientation = 1, ClampPosition = 2, ClampUpright = 4, ClampOrientationAndPosition = ClampOrientation | ClampPosition, ClampOrientationAndUpright = ClampOrientation | ClampUpright, ClampPositionAndUpright = ClampPosition | ClampUpright, ClampAll = ClampOrientation | ClampPosition | ClampUpright } |
| Ground Clamping Modes. More... | |
Public Member Functions | |
| DtGroundClampingUpdater (DtDe &de, DtUniqueID id, bool suppressTick=false) | |
| CTOR. | |
| virtual | ~DtGroundClampingUpdater () |
| DTOR. | |
| virtual void | update (DtTime tNow) |
| Calls doGroundClamp() followed by updateSceneObject() | |
| virtual void | setPosition (const DtVector &position) |
| Set the object's position (assumes origin, or, index 0) | |
| virtual void | setOrientation (const DtTaitBryan &ori) |
| Set the object's orientation (assumes origin, or, index 0) | |
| virtual void | setPosition (int index, const DtVector &) |
| Sets the position at the specified index. | |
| virtual void | setOrientation (int index, const DtTaitBryan &) |
| Sets the orienation at the specified index. | |
| virtual void | removeSpatial (int) |
| Removes position and orientation at specified index. | |
| virtual void | resetToUnclamped () |
| Resets all to unclamped positions. | |
| virtual void | setEnabled (bool enabled) |
| Set whether this updater is enabled. | |
| virtual void | setMode (GroundClampingMode mode) |
| Set the type of ground clamping to do. | |
| bool | isClamping () const |
| Determine if clamping is enabled, we're close enough, etc. | |
| bool | isClampingUp () const |
| Check to see if the mode supports clamping up. | |
| bool | isClampingOrientation () const |
| Check to see if the mode supports clamping orientation. | |
| bool | isClampingPosition () const |
| Check to see if the mode supports clamping position. | |
| virtual void | setCullCylinderRadiusScale (float scale) |
| Set the scale multiplier used to determine whether or not to cull the target according to its distance from the eye-point. | |
| virtual void | setClampAlways (bool enabled) |
| When enabled, this causes clamping every frame (use judiciously) | |
| virtual void | setCheckForCulling (bool) |
| When enabled check for object culling. | |
| virtual bool | doGroundClamp () |
| do the actual clamping. | |
| virtual void | setClampTimeThreshold (double) |
| Sets the threshold for ground clamping by sim time. | |
Public Member Functions inherited from makVrv::DtSceneObjectUpdater | |
| DtSceneObjectUpdater (DtDe &de, DtUniqueID id, bool suppressTick=false) | |
| CTOR. | |
| virtual | ~DtSceneObjectUpdater () |
| Virtual DTOR. | |
| virtual bool | needsUpdate (DtTime tNow) |
| The check function called by DtTickableManager to verify if an update is required. | |
| virtual DtTime | lastUpdateTime () const |
| Get the time-stamp of the last update. | |
| virtual void | setSceneObject (DtSceneObject *sceneObject) |
| Set the scene object to be updated. | |
| DtSceneObject * | findSceneObject () |
| Get the current scene object for this updater. | |
| DtUniqueID | uniqueId () const |
| Returns the distributed object id of this updater. | |
| virtual void | setUpdaterPosition (int vtx, const DtVector &pos) |
| Set the position of a scene object vertex. | |
| virtual const DtVector & | updaterPosition (int vtx) const |
| Get the position of a scene object vertex. | |
| virtual void | setUpdaterOrientation (int vtx, const DtTaitBryan &ori) |
| Set the orientation of a scene object vertex. | |
| virtual const DtTaitBryan & | updaterOrientation (int vtx) const |
| Get the orientation of a scene object vertex. | |
| void | updateSceneObject (DtTime tNow) |
| Update the scene object position and orientation at each vertex and set the last updated time-stamp. | |
| virtual void | terrainScaleTransformsIfNeeded () |
| Scales the transforms if the terrain scaling flag is set. | |
Protected Types | |
| typedef std::vector< DtVector > | Positions |
| typedef std::vector< DtTaitBryan > | Orientations |
Protected Member Functions | |
| bool | computeGroundClampingHit (const DtVector &up, const DtVector &unclampedPosition, DtVector &hitLocation, DtVector &hitNormal) |
| Compute the location and normal ground clamping hit for the current position returns true if a hit was achieved. | |
| void | computeIntersectionOrigin (const DtVector &up, const DtVector &unclampedPosition, DtVector &origin) const |
| Get the position to use as object origin when ground clamping. | |
| bool | needClampThisTick () const |
| Determine if we need to clamp this tick, or can use the last clamp. | |
| bool | targetIsMoving (const DtVector &newPos, const DtVector &lastPos) const |
| Determine if our position has changed since the last time we were clamped. | |
| bool | targetIsTurning (const DtTaitBryan &newOri, const DtTaitBryan &lastOri) const |
| Determine if our orientation has changed since the last time we were clamped. | |
| bool | checkCulling (const DtVector &up) const |
| Check to see if the object is culled. | |
Protected Member Functions inherited from makVrv::DtSceneObjectUpdater | |
| virtual void | slot_sceneObjectToBeDeleted (const DtUniqueID &id) |
| Signal that this updater is being destroyed. | |
Static Protected Member Functions | |
| static void | computePerpendicularRotation (const DtVector &pos, const DtVector &hitNormal, const DtTaitBryan &orientation, DtTaitBryan &output) |
| Find an orientation perpendicular to the normal vector. | |
| static double | angleDifference (double prev, double curr) |
| compensating for rollover issues | |
Protected Attributes | |
| Positions | myLastUnclampedPositions |
| Orientations | myLastUnclampedOrientations |
| Positions | myUnclampedPositions |
| Orientations | myUnclampedOrientations |
| double | myLastCacheUpdateTime |
| double | myLastClampTime |
| float | myCullCylinderScale |
| Object is not ground clamped if the camera is farther away than this times the object's bounding radius. | |
| GroundClampingMode | myMode |
| The type of clamping this updater is doing. | |
| DtIntersectionCache * | myIntersectionCache |
| Ground clamping optimization variables. | |
| bool | myEnabledFlag |
| Ground clamping state. | |
| bool | myClampAlwaysFlag |
| Always clamp regardless of time. | |
| bool | myClampCulledLastFrame |
| Was the unclamped position outside the cull cylinder last frame. | |
| bool | myCheckForCull |
| Whether or not to check to see if object is culled. Default is true. | |
| double | myClampTimeThreshold |
| bool | myBecameEnabledThisTick |
Protected Attributes inherited from makVrv::DtSceneObjectUpdater | |
| DtDe & | myDe |
| The display engine. | |
| DtUniqueID | myUniqueId |
| This distributed object's unique identifier. | |
| DtSceneObject * | mySceneObject |
| A pointer to the current scene object being updated. | |
| DtTime | myLastUpdateTime |
| The last time stamp when the updateSceneObject() was called. | |
| DtSceneObject::TransformList | myTransforms |
| Local copy of the vertex positions and orientations. | |
| const DtDeSharedState & | myDeSharedState |
| This is kept to make terrain scale updating cheaper ( by one virtual function call ). | |
| bool | myInManager |
| If tick was suppressed, then this updater is not on the tickableManager. | |
Static Protected Attributes | |
| static const double | theClampTimeThreshold |
| static const double | theMaxCacheInterval |
| static const double | theClampDistThreshold |
| static const double | theClampOrientThreshold |
| static const double | theIsectLength |
Additional Inherited Members | |
Public Attributes inherited from makVrv::DtSceneObjectUpdater | |
| boost::signal< void(const DtUniqueID &) > | signal_updaterToBeDeleted |
| Signal that this updater is being destroyed. | |
DtGroundClampingUpdater is an updater that is given a position and orientation, and depending on how it is configured, updates a scene object with a position and orientation that are clamped to the underlying terrain.
|
protected |
|
protected |
| makVrv::DtGroundClampingUpdater::DtGroundClampingUpdater | ( | DtDe & | de, |
| DtUniqueID | id, | ||
| bool | suppressTick = false |
||
| ) |
CTOR.
|
virtual |
DTOR.
|
virtual |
Calls doGroundClamp() followed by updateSceneObject()
Implements makVrv::DtSceneObjectUpdater.
|
virtual |
Set the object's position (assumes origin, or, index 0)
|
virtual |
Set the object's orientation (assumes origin, or, index 0)
|
virtual |
Sets the position at the specified index.
Will resize array if index is greater than current array size
|
virtual |
Sets the orienation at the specified index.
Will resize array if index is greater than current array size
|
virtual |
Removes position and orientation at specified index.
|
virtual |
Resets all to unclamped positions.
|
virtual |
Set whether this updater is enabled.
A disabled updater will not ground clamp.
|
virtual |
Set the type of ground clamping to do.
| bool makVrv::DtGroundClampingUpdater::isClamping | ( | ) | const |
Determine if clamping is enabled, we're close enough, etc.
|
inline |
Check to see if the mode supports clamping up.
|
inline |
Check to see if the mode supports clamping orientation.
|
inline |
Check to see if the mode supports clamping position.
|
virtual |
Set the scale multiplier used to determine whether or not to cull the target according to its distance from the eye-point.
Calculates a cylinder with radius equal to the target's bounding radius multiplied by the scale factor and infinite length, oriented along the local up vector. If the eye-point is outside of that cylinder, the target will not be ground clamped.
|
virtual |
When enabled, this causes clamping every frame (use judiciously)
|
virtual |
When enabled check for object culling.
|
virtual |
do the actual clamping.
Called by update() Returns true if the object was ground clamped.
|
virtual |
Sets the threshold for ground clamping by sim time.
Any number < 0 will prevent updating based purely on simtime only. Default is 3 seconds. Set time in seconds
|
staticprotected |
Find an orientation perpendicular to the normal vector.
|
protected |
Compute the location and normal ground clamping hit for the current position returns true if a hit was achieved.
|
protected |
Get the position to use as object origin when ground clamping.
|
protected |
Determine if we need to clamp this tick, or can use the last clamp.
|
protected |
Determine if our position has changed since the last time we were clamped.
|
protected |
Determine if our orientation has changed since the last time we were clamped.
Check to see if the object is culled.
|
staticprotected |
compensating for rollover issues
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Object is not ground clamped if the camera is farther away than this times the object's bounding radius.
|
protected |
The type of clamping this updater is doing.
|
protected |
Ground clamping optimization variables.
|
protected |
Ground clamping state.
|
protected |
Always clamp regardless of time.
|
protected |
Was the unclamped position outside the cull cylinder last frame.
|
protected |
Whether or not to check to see if object is culled. Default is true.
|
protected |
|
protected |