Jolt Physics
A multi core friendly Game Physics Engine
|
Runtime controller class. More...
#include <WheeledVehicleController.h>
Public Types | |
using | Differentials = Array< VehicleDifferentialSettings > |
Typedefs. More... | |
using | TireMaxImpulseCallback = function< void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)> |
Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0). More... | |
Public Member Functions | |
JPH_OVERRIDE_NEW_DELETE | WheeledVehicleController (const WheeledVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint) |
Constructor. More... | |
void | SetDriverInput (float inForward, float inRight, float inBrake, float inHandBrake) |
void | SetForwardInput (float inForward) |
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed. More... | |
float | GetForwardInput () const |
void | SetRightInput (float inRight) |
Value between -1 and 1 indicating desired steering angle (1 = right) More... | |
float | GetRightInput () const |
void | SetBrakeInput (float inBrake) |
Value between 0 and 1 indicating how strong the brake pedal is pressed. More... | |
float | GetBrakeInput () const |
void | SetHandBrakeInput (float inHandBrake) |
Value between 0 and 1 indicating how strong the hand brake is pulled. More... | |
float | GetHandBrakeInput () const |
const VehicleEngine & | GetEngine () const |
Get current engine state. More... | |
VehicleEngine & | GetEngine () |
Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step) More... | |
const VehicleTransmission & | GetTransmission () const |
Get current transmission state. More... | |
VehicleTransmission & | GetTransmission () |
Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step) More... | |
const Differentials & | GetDifferentials () const |
Get the differentials this vehicle has. More... | |
Differentials & | GetDifferentials () |
Get the differentials this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step) More... | |
float | GetDifferentialLimitedSlipRatio () const |
Ratio max / min average wheel speed of each differential (measured at the clutch). More... | |
void | SetDifferentialLimitedSlipRatio (float inV) |
float | GetWheelSpeedAtClutch () const |
Get the average wheel speed of all driven wheels (measured at the clutch) More... | |
const TireMaxImpulseCallback & | GetTireMaxImpulseCallback () const |
void | SetTireMaxImpulseCallback (const TireMaxImpulseCallback &inTireMaxImpulseCallback) |
void | SetRPMMeter (Vec3Arg inPosition, float inSize) |
Debug drawing of RPM meter. More... | |
Public Member Functions inherited from VehicleController | |
JPH_OVERRIDE_NEW_DELETE | VehicleController (VehicleConstraint &inConstraint) |
Constructor / destructor. More... | |
virtual | ~VehicleController ()=default |
Public Member Functions inherited from RefTarget< VehicleController > | |
RefTarget ()=default | |
Constructor. More... | |
RefTarget (const RefTarget &) | |
~RefTarget () | |
assert no one is referencing us More... | |
void | SetEmbedded () const |
RefTarget & | operator= (const RefTarget &) |
Assignment operator. More... | |
uint32 | GetRefCount () const |
Get current refcount of this object. More... | |
void | AddRef () const |
Add or release a reference to this object. More... | |
void | Release () const |
Public Member Functions inherited from NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Protected Member Functions | |
virtual Wheel * | ConstructWheel (const WheelSettings &inWheel) const override |
virtual bool | AllowSleep () const override |
virtual void | PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override |
virtual void | PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override |
virtual bool | SolveLongitudinalAndLateralConstraints (float inDeltaTime) override |
virtual void | SaveState (StateRecorder &inStream) const override |
virtual void | RestoreState (StateRecorder &inStream) override |
virtual void | Draw (DebugRenderer *inRenderer) const override |
virtual Wheel * | ConstructWheel (const WheelSettings &inWheel) const =0 |
virtual bool | AllowSleep () const =0 |
virtual void | PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0 |
virtual void | PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0 |
virtual bool | SolveLongitudinalAndLateralConstraints (float inDeltaTime)=0 |
virtual void | SaveState (StateRecorder &inStream) const =0 |
virtual void | RestoreState (StateRecorder &inStream)=0 |
virtual void | Draw (DebugRenderer *inRenderer) const =0 |
Protected Attributes | |
float | mForwardInput = 0.0f |
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed. More... | |
float | mRightInput = 0.0f |
Value between -1 and 1 indicating desired steering angle. More... | |
float | mBrakeInput = 0.0f |
Value between 0 and 1 indicating how strong the brake pedal is pressed. More... | |
float | mHandBrakeInput = 0.0f |
Value between 0 and 1 indicating how strong the hand brake is pulled. More... | |
VehicleEngine | mEngine |
Engine state of the vehicle. More... | |
VehicleTransmission | mTransmission |
Transmission state of the vehicle. More... | |
Differentials | mDifferentials |
Differential states of the vehicle. More... | |
float | mDifferentialLimitedSlipRatio |
Ratio max / min average wheel speed of each differential (measured at the clutch). More... | |
float | mPreviousDeltaTime = 0.0f |
Delta time of the last step. More... | |
TireMaxImpulseCallback | mTireMaxImpulseCallback |
Vec3 | mRPMMeterPosition { 0, 1, 0 } |
Position (in local space of the body) of the RPM meter when drawing the constraint. More... | |
float | mRPMMeterSize = 0.5f |
Size of the RPM meter when drawing the constraint. More... | |
Protected Attributes inherited from VehicleController | |
VehicleConstraint & | mConstraint |
The vehicle constraint we belong to. More... | |
Protected Attributes inherited from RefTarget< VehicleController > | |
atomic< uint32 > | mRefCount |
Current reference count. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from RefTarget< VehicleController > | |
static int | sInternalGetRefCountOffset () |
INTERNAL HELPER FUNCTION USED BY SERIALIZATION. More... | |
Static Protected Attributes inherited from RefTarget< VehicleController > | |
static constexpr uint32 | cEmbedded |
A large value that gets added to the refcount to mark the object as embedded. More... | |
Runtime controller class.
Typedefs.
using WheeledVehicleController::TireMaxImpulseCallback = function<void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)> |
Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0).
WheeledVehicleController::WheeledVehicleController | ( | const WheeledVehicleControllerSettings & | inSettings, |
VehicleConstraint & | inConstraint | ||
) |
Constructor.
|
overrideprotectedvirtual |
Implements VehicleController.
|
inlineoverrideprotectedvirtual |
Implements VehicleController.
|
overrideprotectedvirtual |
Implements VehicleController.
Reimplemented in MotorcycleController.
|
inline |
|
inline |
Ratio max / min average wheel speed of each differential (measured at the clutch).
|
inline |
Get the differentials this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)
|
inline |
Get the differentials this vehicle has.
|
inline |
Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
|
inline |
Get current engine state.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
|
inline |
Get current transmission state.
float WheeledVehicleController::GetWheelSpeedAtClutch | ( | ) | const |
Get the average wheel speed of all driven wheels (measured at the clutch)
|
overrideprotectedvirtual |
Implements VehicleController.
|
overrideprotectedvirtual |
Implements VehicleController.
Reimplemented in MotorcycleController.
|
overrideprotectedvirtual |
Implements VehicleController.
Reimplemented in MotorcycleController.
|
overrideprotectedvirtual |
Implements VehicleController.
Reimplemented in MotorcycleController.
|
inline |
Value between 0 and 1 indicating how strong the brake pedal is pressed.
|
inline |
|
inline |
Set input from driver
inForward | Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed |
inRight | Value between -1 and 1 indicating desired steering angle (1 = right) |
inBrake | Value between 0 and 1 indicating how strong the brake pedal is pressed |
inHandBrake | Value between 0 and 1 indicating how strong the hand brake is pulled |
|
inline |
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
|
inline |
Value between 0 and 1 indicating how strong the hand brake is pulled.
|
inline |
Value between -1 and 1 indicating desired steering angle (1 = right)
|
inline |
Debug drawing of RPM meter.
|
inline |
|
overrideprotectedvirtual |
Implements VehicleController.
Reimplemented in MotorcycleController.
|
protected |
Value between 0 and 1 indicating how strong the brake pedal is pressed.
|
protected |
Ratio max / min average wheel speed of each differential (measured at the clutch).
|
protected |
Differential states of the vehicle.
|
protected |
Engine state of the vehicle.
|
protected |
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
|
protected |
Value between 0 and 1 indicating how strong the hand brake is pulled.
|
protected |
Delta time of the last step.
|
protected |
Value between -1 and 1 indicating desired steering angle.
|
protected |
Position (in local space of the body) of the RPM meter when drawing the constraint.
|
protected |
Size of the RPM meter when drawing the constraint.
|
protected |
|
protected |
Transmission state of the vehicle.