Jolt Physics
A multi core friendly Game Physics Engine
|
A constraint manager manages all constraints of the same type. More...
#include <ConstraintManager.h>
Public Member Functions | |
JPH_OVERRIDE_NEW_DELETE void | Add (Constraint **inConstraints, int inNumber) |
void | Remove (Constraint **inConstraint, int inNumber) |
Constraints | GetConstraints () const |
Get a list of all constraints. More... | |
uint32 | GetNumConstraints () const |
Get total number of constraints. More... | |
void | GetActiveConstraints (uint32 inStartConstraintIdx, uint32 inEndConstraintIdx, Constraint **outActiveConstraints, uint32 &outNumActiveConstraints) const |
Determine the active constraints of a subset of the constraints. More... | |
void | DrawConstraints (DebugRenderer *inRenderer) const |
Draw all constraints. More... | |
void | DrawConstraintLimits (DebugRenderer *inRenderer) const |
Draw all constraint limits. More... | |
void | DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const |
Draw all constraint reference frames. More... | |
void | SaveState (StateRecorder &inStream, const StateRecorderFilter *inFilter) const |
Save state of constraints. More... | |
bool | RestoreState (StateRecorder &inStream) |
Restore the state of constraints. Returns false if failed. More... | |
void | LockAllConstraints () |
Lock all constraints. This should only be done during PhysicsSystem::Update(). More... | |
void | UnlockAllConstraints () |
Public Member Functions inherited from NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Static Public Member Functions | |
static void | sBuildIslands (Constraint **inActiveConstraints, uint32 inNumActiveConstraints, IslandBuilder &ioBuilder, BodyManager &inBodyManager) |
Link bodies to form islands. More... | |
static void | sSortConstraints (Constraint **inActiveConstraints, uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd) |
In order to have a deterministic simulation, we need to sort the constraints of an island before solving them. More... | |
static void | sSetupVelocityConstraints (Constraint **inActiveConstraints, uint32 inNumActiveConstraints, float inDeltaTime) |
Prior to solving the velocity constraints, you must call SetupVelocityConstraints once to precalculate values that are independent of velocity. More... | |
template<class ConstraintCallback > | |
static void | sWarmStartVelocityConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, ConstraintCallback &ioCallback) |
Apply last frame's impulses, must be called prior to SolveVelocityConstraints. More... | |
static bool | sSolveVelocityConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime) |
This function is called multiple times to iteratively come to a solution that meets all velocity constraints. More... | |
static bool | sSolvePositionConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime, float inBaumgarte) |
This function is called multiple times to iteratively come to a solution that meets all position constraints. More... | |
A constraint manager manages all constraints of the same type.
JPH_NAMESPACE_BEGIN void ConstraintManager::Add | ( | Constraint ** | inConstraints, |
int | inNumber | ||
) |
Add a new constraint. This is thread safe. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.
void ConstraintManager::DrawConstraintLimits | ( | DebugRenderer * | inRenderer | ) | const |
Draw all constraint limits.
void ConstraintManager::DrawConstraintReferenceFrame | ( | DebugRenderer * | inRenderer | ) | const |
Draw all constraint reference frames.
void ConstraintManager::DrawConstraints | ( | DebugRenderer * | inRenderer | ) | const |
Draw all constraints.
void ConstraintManager::GetActiveConstraints | ( | uint32 | inStartConstraintIdx, |
uint32 | inEndConstraintIdx, | ||
Constraint ** | outActiveConstraints, | ||
uint32 & | outNumActiveConstraints | ||
) | const |
Determine the active constraints of a subset of the constraints.
Constraints ConstraintManager::GetConstraints | ( | ) | const |
Get a list of all constraints.
|
inline |
Get total number of constraints.
|
inline |
Lock all constraints. This should only be done during PhysicsSystem::Update().
void ConstraintManager::Remove | ( | Constraint ** | inConstraint, |
int | inNumber | ||
) |
Remove a constraint. This is thread safe. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.
bool ConstraintManager::RestoreState | ( | StateRecorder & | inStream | ) |
Restore the state of constraints. Returns false if failed.
void ConstraintManager::SaveState | ( | StateRecorder & | inStream, |
const StateRecorderFilter * | inFilter | ||
) | const |
Save state of constraints.
|
static |
Link bodies to form islands.
|
static |
Prior to solving the velocity constraints, you must call SetupVelocityConstraints once to precalculate values that are independent of velocity.
|
static |
This function is called multiple times to iteratively come to a solution that meets all position constraints.
|
static |
This function is called multiple times to iteratively come to a solution that meets all velocity constraints.
|
static |
In order to have a deterministic simulation, we need to sort the constraints of an island before solving them.
|
static |
Apply last frame's impulses, must be called prior to SolveVelocityConstraints.
|
inline |