Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
WheelTV Class Reference

Wheel object specifically for TrackedVehicleController. More...

#include <TrackedVehicleController.h>

Inheritance diagram for WheelTV:
Wheel NonCopyable

Public Member Functions

JPH_OVERRIDE_NEW_DELETE WheelTV (const WheelSettingsTV &inWheel)
 Constructor.
 
const WheelSettingsTVGetSettings () const
 Override GetSettings and cast to the correct class.
 
void CalculateAngularVelocity (const VehicleConstraint &inConstraint)
 Update the angular velocity of the wheel based on the angular velocity of the track.
 
void Update (uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint)
 Update the wheel rotation based on the current angular velocity.
 
- Public Member Functions inherited from Wheel
JPH_OVERRIDE_NEW_DELETE Wheel (const WheelSettings &inSettings)
 Constructor / destructor.
 
virtual ~Wheel ()=default
 
const WheelSettingsGetSettings () const
 Get settings for the wheel.
 
float GetAngularVelocity () const
 Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such that the car moves forward.
 
void SetAngularVelocity (float inVel)
 Update the angular velocity (rad/s)
 
float GetRotationAngle () const
 Get the current rotation angle of the wheel in radians [0, 2 pi].
 
void SetRotationAngle (float inAngle)
 Set the current rotation angle of the wheel in radians [0, 2 pi].
 
float GetSteerAngle () const
 Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.
 
void SetSteerAngle (float inAngle)
 Set the current steer angle of the wheel in radians [-pi, pi].
 
bool HasContact () const
 Returns true if the wheel is touching an object.
 
BodyID GetContactBodyID () const
 Returns the body ID of the body that this wheel is touching.
 
SubShapeID GetContactSubShapeID () const
 Returns the sub shape ID where we're contacting the body.
 
RVec3 GetContactPosition () const
 Returns the current contact position in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactPointVelocity () const
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 GetContactNormal () const
 Returns the current contact normal in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLongitudinal () const
 Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLateral () const
 Returns lateral direction (sideways direction) in world space (note by the time you call this the vehicle has moved)
 
float GetSuspensionLength () const
 Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard point)
 
bool HasHitHardPoint () const
 Check if the suspension hit its upper limit.
 
float GetSuspensionLambda () const
 Get the total impulse (N s) that was applied by the suspension.
 
float GetLongitudinalLambda () const
 Get total impulse (N s) applied along the forward direction of the wheel.
 
float GetLateralLambda () const
 Get total impulse (N s) applied along the sideways direction of the wheel.
 
bool SolveLongitudinalConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the forward direction of the vehicle.
 
bool SolveLateralConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the sideways direction of the vehicle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 

Public Attributes

int mTrackIndex = -1
 Index in mTracks to which this wheel is attached (calculated on initialization)
 
float mCombinedLongitudinalFriction = 0.0f
 Combined friction coefficient in longitudinal direction (combines terrain and track)
 
float mCombinedLateralFriction = 0.0f
 Combined friction coefficient in lateral direction (combines terrain and track)
 
float mBrakeImpulse = 0.0f
 Amount of impulse that the brakes can apply to the floor (excluding friction), spread out from brake impulse applied on track.
 

Additional Inherited Members

- Protected Attributes inherited from Wheel
RefConst< WheelSettingsmSettings
 Configuration settings for this wheel.
 
BodyID mContactBodyID
 ID of body for ground.
 
SubShapeID mContactSubShapeID
 Sub shape ID for ground.
 
BodymContactBody = nullptr
 Body for ground.
 
float mSuspensionLength
 Current length of the suspension.
 
RVec3 mContactPosition
 Position of the contact point between wheel and ground.
 
Vec3 mContactPointVelocity
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 mContactNormal
 Normal of the contact point between wheel and ground.
 
Vec3 mContactLongitudinal
 Vector perpendicular to normal in the forward direction.
 
Vec3 mContactLateral
 Vector perpendicular to normal and longitudinal direction in the right direction.
 
Real mAxlePlaneConstant
 Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + SuspensionLength * WorldSpaceSuspensionDirection)
 
float mAntiRollBarImpulse = 0.0f
 Amount of impulse applied to the suspension from the anti-rollbars.
 
float mSteerAngle = 0.0f
 Rotation around the suspension direction, positive is to the left.
 
float mAngularVelocity = 0.0f
 Rotation speed of wheel, positive when the wheels cause the vehicle to move forwards (rad/s)
 
float mAngle = 0.0f
 Current rotation of the wheel (rad, [0, 2 pi])
 
AxisConstraintPart mSuspensionPart
 Controls movement up/down along the contact normal.
 
AxisConstraintPart mSuspensionMaxUpPart
 Adds a hard limit when reaching the minimal suspension length.
 
AxisConstraintPart mLongitudinalPart
 Controls movement forward/backward.
 
AxisConstraintPart mLateralPart
 Controls movement sideways (slip)
 

Detailed Description

Wheel object specifically for TrackedVehicleController.

Constructor & Destructor Documentation

◆ WheelTV()

WheelTV::WheelTV ( const WheelSettingsTV inWheel)
explicit

Constructor.

Member Function Documentation

◆ CalculateAngularVelocity()

void WheelTV::CalculateAngularVelocity ( const VehicleConstraint inConstraint)

Update the angular velocity of the wheel based on the angular velocity of the track.

◆ GetSettings()

const WheelSettingsTV * WheelTV::GetSettings ( ) const
inline

Override GetSettings and cast to the correct class.

◆ Update()

void WheelTV::Update ( uint  inWheelIndex,
float  inDeltaTime,
const VehicleConstraint inConstraint 
)

Update the wheel rotation based on the current angular velocity.

Member Data Documentation

◆ mBrakeImpulse

float WheelTV::mBrakeImpulse = 0.0f

Amount of impulse that the brakes can apply to the floor (excluding friction), spread out from brake impulse applied on track.

◆ mCombinedLateralFriction

float WheelTV::mCombinedLateralFriction = 0.0f

Combined friction coefficient in lateral direction (combines terrain and track)

◆ mCombinedLongitudinalFriction

float WheelTV::mCombinedLongitudinalFriction = 0.0f

Combined friction coefficient in longitudinal direction (combines terrain and track)

◆ mTrackIndex

int WheelTV::mTrackIndex = -1

Index in mTracks to which this wheel is attached (calculated on initialization)


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