Jolt Physics
A multi core friendly Game Physics Engine
|
Information used during the Update call. More...
#include <PhysicsUpdateContext.h>
Classes | |
struct | BodyPairQueue |
struct | Step |
Structure that contains data needed for each collision step. More... | |
Public Types | |
using | JobHandleArray = StaticArray< JobHandle, cMaxConcurrency > |
using | BodyPairQueues = StaticArray< BodyPairQueue, cMaxConcurrency > |
using | JobMask = uint32 |
A mask that has as many bits as we can have concurrent jobs. More... | |
using | Steps = Array< Step, STLTempAllocator< Step > > |
Public Member Functions | |
PhysicsUpdateContext (TempAllocator &inTempAllocator) | |
Destructor. More... | |
~PhysicsUpdateContext () | |
int | GetMaxConcurrency () const |
Maximum amount of concurrent jobs on this machine. More... | |
Public Member Functions inherited from NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Public Attributes | |
PhysicsSystem * | mPhysicsSystem |
The physics system we belong to. More... | |
TempAllocator * | mTempAllocator |
Temporary allocator used during the update. More... | |
JobSystem * | mJobSystem |
Job system that processes jobs. More... | |
JobSystem::Barrier * | mBarrier |
Barrier used to wait for all physics jobs to complete. More... | |
float | mStepDeltaTime |
Delta time for a simulation step (collision step) More... | |
float | mWarmStartImpulseRatio |
Ratio of this step delta time vs last step. More... | |
atomic< uint32 > | mErrors { 0 } |
Errors that occurred during the update, actual type is EPhysicsUpdateError. More... | |
Constraint ** | mActiveConstraints = nullptr |
Constraints that were active at the start of the physics update step (activating bodies can activate constraints and we need a consistent snapshot). Only these constraints will be resolved. More... | |
BodyPair * | mBodyPairs = nullptr |
A list of body pairs found by the broadphase. More... | |
IslandBuilder * | mIslandBuilder |
Keeps track of connected bodies and builds islands for multithreaded velocity/position update. More... | |
Steps | mSteps |
uint | mNumSoftBodies |
Number of active soft bodies in the simulation. More... | |
SoftBodyUpdateContext * | mSoftBodyUpdateContexts = nullptr |
Contexts for updating soft bodies. More... | |
atomic< uint > | mSoftBodyToCollide { 0 } |
Next soft body to take when running SoftBodyCollide jobs. More... | |
Static Public Attributes | |
static constexpr int | cMaxConcurrency = 32 |
Maximum supported amount of concurrent jobs. More... | |
Information used during the Update call.
using PhysicsUpdateContext::JobMask = uint32 |
A mask that has as many bits as we can have concurrent jobs.
using PhysicsUpdateContext::Steps = Array<Step, STLTempAllocator<Step> > |
|
explicit |
Destructor.
PhysicsUpdateContext::~PhysicsUpdateContext | ( | ) |
|
inline |
Maximum amount of concurrent jobs on this machine.
Need to put max concurrency in temp var as min requires a reference
|
staticconstexpr |
Maximum supported amount of concurrent jobs.
Constraint** PhysicsUpdateContext::mActiveConstraints = nullptr |
Constraints that were active at the start of the physics update step (activating bodies can activate constraints and we need a consistent snapshot). Only these constraints will be resolved.
JobSystem::Barrier* PhysicsUpdateContext::mBarrier |
Barrier used to wait for all physics jobs to complete.
BodyPair* PhysicsUpdateContext::mBodyPairs = nullptr |
A list of body pairs found by the broadphase.
atomic<uint32> PhysicsUpdateContext::mErrors { 0 } |
Errors that occurred during the update, actual type is EPhysicsUpdateError.
IslandBuilder* PhysicsUpdateContext::mIslandBuilder |
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
JobSystem* PhysicsUpdateContext::mJobSystem |
Job system that processes jobs.
uint PhysicsUpdateContext::mNumSoftBodies |
Number of active soft bodies in the simulation.
PhysicsSystem* PhysicsUpdateContext::mPhysicsSystem |
The physics system we belong to.
atomic<uint> PhysicsUpdateContext::mSoftBodyToCollide { 0 } |
Next soft body to take when running SoftBodyCollide jobs.
SoftBodyUpdateContext* PhysicsUpdateContext::mSoftBodyUpdateContexts = nullptr |
Contexts for updating soft bodies.
float PhysicsUpdateContext::mStepDeltaTime |
Delta time for a simulation step (collision step)
Steps PhysicsUpdateContext::mSteps |
TempAllocator* PhysicsUpdateContext::mTempAllocator |
Temporary allocator used during the update.
float PhysicsUpdateContext::mWarmStartImpulseRatio |
Ratio of this step delta time vs last step.