33    float                       mMaxPitchRollAngle = JPH_PI;                
 
  115    void                        ResetGravityOverride()                      { mIsGravityOverridden = 
false; mBody->GetMotionProperties()->SetGravityFactor(1.0f); } 
 
  150    void                        GetWheelLocalBasis(
const Wheel *inWheel, 
Vec3 &outForward, 
Vec3 &outUp, 
Vec3 &outRight) 
const;
 
  182    virtual void                SetupVelocityConstraint(
float inDeltaTime) 
override;
 
  183    virtual void                ResetWarmStart() 
override;
 
  184    virtual void                WarmStartVelocityConstraint(
float inWarmStartImpulseRatio) 
override;
 
  185    virtual bool                SolveVelocityConstraint(
float inDeltaTime) 
override;
 
  186    virtual bool                SolvePositionConstraint(
float inDeltaTime, 
float inBaumgarte) 
override;
 
  189#ifdef JPH_DEBUG_RENDERER 
  190    virtual void                DrawConstraint(
DebugRenderer *inRenderer) 
const override;
 
  191    virtual void                DrawConstraintLimits(
DebugRenderer *inRenderer) 
const override;
 
  193    virtual void                SaveState(
StateRecorder &inStream) 
const override;
 
  199    virtual void                OnStep(
float inDeltaTime, 
PhysicsSystem &inPhysicsSystem) 
override;
 
  202    void                        CalculateSuspensionForcePoint(
const Wheel &inWheel, 
Vec3 &outR1PlusU, 
Vec3 &outR2) 
const;
 
  205    void                        CalculatePitchRollConstraintProperties(
RMat44Arg inBodyTransform);
 
  208    bool                        mIsGravityOverridden = 
false;               
 
  219    bool                        mIsActive = 
false;                          
 
  220    uint                        mNumStepsBetweenCollisionTestActive = 1;    
 
  221    uint                        mNumStepsBetweenCollisionTestInactive = 1;  
 
  222    uint                        mCurrentStep = 0;                           
 
  225    float                       mCosMaxPitchRollAngle;                      
 
  226    float                       mCosPitchRollAngle;                         
 
  227    Vec3                        mPitchRollRotationAxis { 0, 1, 0 };         
 
  232    CombineFunction             mCombineFriction = [](
uint, 
float &ioLongitudinalFriction, 
float &ioLateralFriction, 
const Body &inBody2, 
const SubShapeID &)
 
  234        float body_friction = inBody2.GetFriction();
 
  236        ioLongitudinalFriction = sqrt(ioLongitudinalFriction * body_friction);
 
  237        ioLateralFriction = sqrt(ioLateralFriction * body_friction);
 
  241    StepCallback                mPreStepCallback;
 
  242    StepCallback                mPostCollideCallback;
 
  243    StepCallback                mPostStepCallback;
 
EConstraintSubType
Enum to identify constraint sub type.
Definition: Constraint.h:34
 
#define JPH_EXPORT
Definition: Core.h:236
 
unsigned int uint
Definition: Core.h:452
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
std::uint32_t uint32
Definition: Core.h:455
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:109
 
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition: Trigonometry.h:20
 
Definition: AngleConstraintPart.h:37
 
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition: BodyID.h:13
 
Class that contains all bodies.
Definition: BodyManager.h:44
 
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition: Constraint.h:103
 
virtual bool IsActive() const
Definition: Constraint.h:171
 
Class used to store the configuration of a constraint. Allows run-time creation of constraints.
Definition: Constraint.h:65
 
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition: Constraint.cpp:26
 
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition: Constraint.cpp:36
 
Definition: DebugRenderer.h:47
 
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition: IslandBuilder.h:19
 
Definition: LargeIslandSplitter.h:25
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
A listener class that receives a callback before every physics simulation step.
Definition: PhysicsStepListener.h:13
 
Definition: PhysicsSystem.h:29
 
Definition: Reference.h:151
 
Definition: Reference.h:101
 
Definition: StateRecorder.h:48
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition: SubShapeID.h:23
 
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition: Vec3.inl:107
 
Class that does collision detection between wheels and ground.
Definition: VehicleCollisionTester.h:20
 
Definition: VehicleConstraint.h:66
 
const StepCallback & GetPreStepCallback() const
Definition: VehicleConstraint.h:96
 
void SetNumStepsBetweenCollisionTestActive(uint inSteps)
Definition: VehicleConstraint.h:168
 
void ResetGravityOverride()
Note that resetting the gravity override will restore the gravity factor of the vehicle body to 1.
Definition: VehicleConstraint.h:115
 
void SetCombineFriction(const CombineFunction &inCombineFriction)
Definition: VehicleConstraint.h:87
 
const Wheel * GetWheel(uint inIdx) const
Definition: VehicleConstraint.h:143
 
uint GetNumStepsBetweenCollisionTestInactive() const
Definition: VehicleConstraint.h:177
 
const CombineFunction & GetCombineFriction() const
Definition: VehicleConstraint.h:88
 
Body * GetVehicleBody() const
Access to the vehicle body.
Definition: VehicleConstraint.h:127
 
void SetNumStepsBetweenCollisionTestInactive(uint inSteps)
Definition: VehicleConstraint.h:176
 
virtual bool IsActive() const override
Definition: VehicleConstraint.h:180
 
bool IsGravityOverridden() const
Definition: VehicleConstraint.h:113
 
VehicleController * GetController()
Access to the vehicle controller interface (determines acceleration / deceleration)
Definition: VehicleConstraint.h:133
 
void SetVehicleCollisionTester(const VehicleCollisionTester *inTester)
Set the interface that tests collision between wheel and ground.
Definition: VehicleConstraint.h:79
 
void SetMaxPitchRollAngle(float inMaxPitchRollAngle)
Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down....
Definition: VehicleConstraint.h:76
 
Vec3 GetGravityOverride() const
Definition: VehicleConstraint.h:114
 
const StepCallback & GetPostStepCallback() const
Definition: VehicleConstraint.h:108
 
Vec3 GetLocalForward() const
Get the local space forward vector of the vehicle.
Definition: VehicleConstraint.h:118
 
Wheels & GetWheels()
Get the state of a wheels (writable interface, allows you to make changes to the configuration which ...
Definition: VehicleConstraint.h:139
 
Wheel * GetWheel(uint inIdx)
Get the state of a wheel.
Definition: VehicleConstraint.h:142
 
Vec3 GetWorldUp() const
Vector indicating the world space up direction (used to limit vehicle pitch/roll),...
Definition: VehicleConstraint.h:124
 
virtual EConstraintSubType GetSubType() const override
Get the type of a constraint.
Definition: VehicleConstraint.h:73
 
function< void(uint inWheelIndex, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &inSubShapeID2)> CombineFunction
Definition: VehicleConstraint.h:83
 
Vec3 GetLocalUp() const
Get the local space up vector of the vehicle.
Definition: VehicleConstraint.h:121
 
uint GetNumStepsBetweenCollisionTestActive() const
Definition: VehicleConstraint.h:169
 
const StepCallback & GetPostCollideCallback() const
Definition: VehicleConstraint.h:102
 
const VehicleController * GetController() const
Access to the vehicle controller interface (determines acceleration / deceleration)
Definition: VehicleConstraint.h:130
 
void SetPostCollideCallback(const StepCallback &inPostCollideCallback)
Definition: VehicleConstraint.h:103
 
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
Definition: VehicleConstraint.h:181
 
void OverrideGravity(Vec3Arg inGravity)
Override gravity for this vehicle. Note that overriding gravity will set the gravity factor of the ve...
Definition: VehicleConstraint.h:112
 
void SetPreStepCallback(const StepCallback &inPreStepCallback)
Definition: VehicleConstraint.h:97
 
const Wheels & GetWheels() const
Get the state of the wheels.
Definition: VehicleConstraint.h:136
 
void SetPostStepCallback(const StepCallback &inPostStepCallback)
Definition: VehicleConstraint.h:109
 
function< void(VehicleConstraint &inVehicle, float inDeltaTime, PhysicsSystem &inPhysicsSystem)> StepCallback
Callback function to notify of current stage in PhysicsStepListener::OnStep.
Definition: VehicleConstraint.h:91
 
Definition: VehicleConstraint.h:24
 
Ref< VehicleControllerSettings > mController
Defines how the vehicle can accelerate / decelerate.
Definition: VehicleConstraint.h:36
 
Array< Ref< WheelSettings > > mWheels
List of wheels and their properties.
Definition: VehicleConstraint.h:34
 
Array< VehicleAntiRollBar > mAntiRollBars
List of anti rollbars and their properties.
Definition: VehicleConstraint.h:35
 
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition: VehicleController.h:41
 
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition: Wheel.h:46