![]() |
Jolt Physics
A multi core friendly Game Physics Engine
|
Structure that contains data needed for each collision step. More...
#include <PhysicsUpdateContext.h>
Classes | |
| struct | CCDBody |
| Contains the information needed to cast a body through the scene to do continuous collision detection. More... | |
Public Member Functions | |
| Step ()=default | |
| Step (const Step &) | |
Public Attributes | |
| PhysicsUpdateContext * | mContext |
| The physics update context. More... | |
| bool | mIsFirst |
| If this is the first step. More... | |
| bool | mIsLast |
| If this is the last step. More... | |
| BroadPhase::UpdateState | mBroadPhaseUpdateState |
| Handle returned by Broadphase::UpdatePrepare. More... | |
| uint32 | mNumActiveBodiesAtStepStart |
| Number of bodies that were active at the start of the physics update step. Only these bodies will receive gravity (they are the first N in the active body list). More... | |
| atomic< uint32 > | mConstraintReadIdx { 0 } |
| Next constraint for determine active constraints. More... | |
| uint8 | mPadding1 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
| Padding to avoid sharing cache line with the next atomic. More... | |
| atomic< uint32 > | mNumActiveConstraints { 0 } |
| Number of constraints in the mActiveConstraints array. More... | |
| uint8 | mPadding2 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
| Padding to avoid sharing cache line with the next atomic. More... | |
| atomic< uint32 > | mStepListenerReadIdx { 0 } |
| Next step listener to call. More... | |
| uint8 | mPadding3 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
| Padding to avoid sharing cache line with the next atomic. More... | |
| atomic< uint32 > | mApplyGravityReadIdx { 0 } |
| Next body to apply gravity to. More... | |
| uint8 | mPadding4 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
| Padding to avoid sharing cache line with the next atomic. More... | |
| atomic< uint32 > | mActiveBodyReadIdx { 0 } |
| Index of fist active body that has not yet been processed by the broadphase. More... | |
| uint8 | mPadding5 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
| Padding to avoid sharing cache line with the next atomic. More... | |
| BodyPairQueues | mBodyPairQueues |
| Queues in which to put body pairs that need to be tested by the narrowphase. More... | |
| uint32 | mMaxBodyPairsPerQueue |
| Amount of body pairs that we can queue per queue. More... | |
| atomic< JobMask > | mActiveFindCollisionJobs |
| A bitmask that indicates which jobs are still active. More... | |
| atomic< uint > | mNumBodyPairs { 0 } |
| The number of body pairs found in this step (used to size the contact cache in the next step) More... | |
| atomic< uint > | mNumManifolds { 0 } |
| The number of manifolds found in this step (used to size the contact cache in the next step) More... | |
| atomic< uint32 > | mSolveVelocityConstraintsNextIsland { 0 } |
| Next island that needs to be processed for the solve velocity constraints step (doesn't need own cache line since position jobs don't run at same time) More... | |
| atomic< uint32 > | mSolvePositionConstraintsNextIsland { 0 } |
| Next island that needs to be processed for the solve position constraints step (doesn't need own cache line since velocity jobs don't run at same time) More... | |
| atomic< uint32 > | mIntegrateVelocityReadIdx { 0 } |
| Next active body index to take when integrating velocities. More... | |
| CCDBody * | mCCDBodies = nullptr |
| List of bodies that need to do continuous collision detection. More... | |
| uint32 | mCCDBodiesCapacity = 0 |
| Capacity of the mCCDBodies list. More... | |
| atomic< uint32 > | mNumCCDBodies = 0 |
| Number of CCD bodies in mCCDBodies. More... | |
| atomic< uint32 > | mNextCCDBody { 0 } |
| Next unprocessed body index in mCCDBodies. More... | |
| int * | mActiveBodyToCCDBody = nullptr |
| A mapping between an index in BodyManager::mActiveBodies and the index in mCCDBodies. More... | |
| uint32 | mNumActiveBodyToCCDBody = 0 |
| Number of indices in mActiveBodyToCCDBody. More... | |
| JobHandle | mBroadPhasePrepare |
| Prepares the new tree in the background. More... | |
| JobHandleArray | mStepListeners |
| Listeners to notify of the beginning of a physics step. More... | |
| JobHandleArray | mDetermineActiveConstraints |
| Determine which constraints will be active during this step. More... | |
| JobHandleArray | mApplyGravity |
| Update velocities of bodies with gravity. More... | |
| JobHandleArray | mFindCollisions |
| Find all collisions between active bodies an the world. More... | |
| JobHandle | mUpdateBroadphaseFinalize |
| Swap the newly built tree with the current tree. More... | |
| JobHandle | mSetupVelocityConstraints |
| Calculate properties for all constraints in the constraint manager. More... | |
| JobHandle | mBuildIslandsFromConstraints |
| Go over all constraints and assign the bodies they're attached to to an island. More... | |
| JobHandle | mFinalizeIslands |
| Finalize calculation simulation islands. More... | |
| JobHandle | mBodySetIslandIndex |
| Set the current island index on each body (not used by the simulation, only for drawing purposes) More... | |
| JobHandleArray | mSolveVelocityConstraints |
| Solve the constraints in the velocity domain. More... | |
| JobHandle | mPreIntegrateVelocity |
| Setup integration of all body positions. More... | |
| JobHandleArray | mIntegrateVelocity |
| Integrate all body positions. More... | |
| JobHandle | mPostIntegrateVelocity |
| Finalize integration of all body positions. More... | |
| JobHandle | mResolveCCDContacts |
| Updates the positions and velocities for all bodies that need continuous collision detection. More... | |
| JobHandleArray | mSolvePositionConstraints |
| Solve all constraints in the position domain. More... | |
| JobHandle | mContactRemovedCallbacks |
| Calls the contact removed callbacks. More... | |
| JobHandle | mSoftBodyPrepare |
| Prepares updating the soft bodies. More... | |
| JobHandleArray | mSoftBodyCollide |
| Finds all colliding shapes for soft bodies. More... | |
| JobHandleArray | mSoftBodySimulate |
| Simulates all particles. More... | |
| JobHandle | mSoftBodyFinalize |
| Finalizes the soft body update. More... | |
| JobHandle | mStartNextStep |
| Job that kicks the next step (empty for the last step) More... | |
Structure that contains data needed for each collision step.
|
default |
|
inline |
| atomic<uint32> PhysicsUpdateContext::Step::mActiveBodyReadIdx { 0 } |
Index of fist active body that has not yet been processed by the broadphase.
| int* PhysicsUpdateContext::Step::mActiveBodyToCCDBody = nullptr |
A mapping between an index in BodyManager::mActiveBodies and the index in mCCDBodies.
| atomic<JobMask> PhysicsUpdateContext::Step::mActiveFindCollisionJobs |
A bitmask that indicates which jobs are still active.
| JobHandleArray PhysicsUpdateContext::Step::mApplyGravity |
Update velocities of bodies with gravity.
| atomic<uint32> PhysicsUpdateContext::Step::mApplyGravityReadIdx { 0 } |
Next body to apply gravity to.
| BodyPairQueues PhysicsUpdateContext::Step::mBodyPairQueues |
Queues in which to put body pairs that need to be tested by the narrowphase.
| JobHandle PhysicsUpdateContext::Step::mBodySetIslandIndex |
Set the current island index on each body (not used by the simulation, only for drawing purposes)
| JobHandle PhysicsUpdateContext::Step::mBroadPhasePrepare |
Prepares the new tree in the background.
| BroadPhase::UpdateState PhysicsUpdateContext::Step::mBroadPhaseUpdateState |
Handle returned by Broadphase::UpdatePrepare.
| JobHandle PhysicsUpdateContext::Step::mBuildIslandsFromConstraints |
Go over all constraints and assign the bodies they're attached to to an island.
| CCDBody* PhysicsUpdateContext::Step::mCCDBodies = nullptr |
List of bodies that need to do continuous collision detection.
| uint32 PhysicsUpdateContext::Step::mCCDBodiesCapacity = 0 |
Capacity of the mCCDBodies list.
| atomic<uint32> PhysicsUpdateContext::Step::mConstraintReadIdx { 0 } |
Next constraint for determine active constraints.
| JobHandle PhysicsUpdateContext::Step::mContactRemovedCallbacks |
Calls the contact removed callbacks.
| PhysicsUpdateContext* PhysicsUpdateContext::Step::mContext |
The physics update context.
| JobHandleArray PhysicsUpdateContext::Step::mDetermineActiveConstraints |
Determine which constraints will be active during this step.
| JobHandle PhysicsUpdateContext::Step::mFinalizeIslands |
Finalize calculation simulation islands.
| JobHandleArray PhysicsUpdateContext::Step::mFindCollisions |
Find all collisions between active bodies an the world.
| JobHandleArray PhysicsUpdateContext::Step::mIntegrateVelocity |
Integrate all body positions.
| atomic<uint32> PhysicsUpdateContext::Step::mIntegrateVelocityReadIdx { 0 } |
Next active body index to take when integrating velocities.
| bool PhysicsUpdateContext::Step::mIsFirst |
If this is the first step.
| bool PhysicsUpdateContext::Step::mIsLast |
If this is the last step.
| uint32 PhysicsUpdateContext::Step::mMaxBodyPairsPerQueue |
Amount of body pairs that we can queue per queue.
| atomic<uint32> PhysicsUpdateContext::Step::mNextCCDBody { 0 } |
Next unprocessed body index in mCCDBodies.
| uint32 PhysicsUpdateContext::Step::mNumActiveBodiesAtStepStart |
Number of bodies that were active at the start of the physics update step. Only these bodies will receive gravity (they are the first N in the active body list).
| uint32 PhysicsUpdateContext::Step::mNumActiveBodyToCCDBody = 0 |
Number of indices in mActiveBodyToCCDBody.
| atomic<uint32> PhysicsUpdateContext::Step::mNumActiveConstraints { 0 } |
Number of constraints in the mActiveConstraints array.
| atomic<uint> PhysicsUpdateContext::Step::mNumBodyPairs { 0 } |
The number of body pairs found in this step (used to size the contact cache in the next step)
| atomic<uint32> PhysicsUpdateContext::Step::mNumCCDBodies = 0 |
Number of CCD bodies in mCCDBodies.
| atomic<uint> PhysicsUpdateContext::Step::mNumManifolds { 0 } |
The number of manifolds found in this step (used to size the contact cache in the next step)
| uint8 PhysicsUpdateContext::Step::mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
Padding to avoid sharing cache line with the next atomic.
| uint8 PhysicsUpdateContext::Step::mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
Padding to avoid sharing cache line with the next atomic.
| uint8 PhysicsUpdateContext::Step::mPadding3[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
Padding to avoid sharing cache line with the next atomic.
| uint8 PhysicsUpdateContext::Step::mPadding4[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
Padding to avoid sharing cache line with the next atomic.
| uint8 PhysicsUpdateContext::Step::mPadding5[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)] |
Padding to avoid sharing cache line with the next atomic.
| JobHandle PhysicsUpdateContext::Step::mPostIntegrateVelocity |
Finalize integration of all body positions.
| JobHandle PhysicsUpdateContext::Step::mPreIntegrateVelocity |
Setup integration of all body positions.
| JobHandle PhysicsUpdateContext::Step::mResolveCCDContacts |
Updates the positions and velocities for all bodies that need continuous collision detection.
| JobHandle PhysicsUpdateContext::Step::mSetupVelocityConstraints |
Calculate properties for all constraints in the constraint manager.
| JobHandleArray PhysicsUpdateContext::Step::mSoftBodyCollide |
Finds all colliding shapes for soft bodies.
| JobHandle PhysicsUpdateContext::Step::mSoftBodyFinalize |
Finalizes the soft body update.
| JobHandle PhysicsUpdateContext::Step::mSoftBodyPrepare |
Prepares updating the soft bodies.
| JobHandleArray PhysicsUpdateContext::Step::mSoftBodySimulate |
Simulates all particles.
| JobHandleArray PhysicsUpdateContext::Step::mSolvePositionConstraints |
Solve all constraints in the position domain.
| atomic<uint32> PhysicsUpdateContext::Step::mSolvePositionConstraintsNextIsland { 0 } |
Next island that needs to be processed for the solve position constraints step (doesn't need own cache line since velocity jobs don't run at same time)
| JobHandleArray PhysicsUpdateContext::Step::mSolveVelocityConstraints |
Solve the constraints in the velocity domain.
| atomic<uint32> PhysicsUpdateContext::Step::mSolveVelocityConstraintsNextIsland { 0 } |
Next island that needs to be processed for the solve velocity constraints step (doesn't need own cache line since position jobs don't run at same time)
| JobHandle PhysicsUpdateContext::Step::mStartNextStep |
Job that kicks the next step (empty for the last step)
| atomic<uint32> PhysicsUpdateContext::Step::mStepListenerReadIdx { 0 } |
Next step listener to call.
| JobHandleArray PhysicsUpdateContext::Step::mStepListeners |
Listeners to notify of the beginning of a physics step.
| JobHandle PhysicsUpdateContext::Step::mUpdateBroadphaseFinalize |
Swap the newly built tree with the current tree.