108 void OptimizeBroadPhase();
134#ifdef JPH_DEBUG_RENDERER
205#ifdef JPH_TRACK_BROADPHASE_STATS
207 void ReportBroadphaseStats() { mBroadPhase->ReportStats(); }
221 void JobBodySetIslandIndex();
241 void ProcessBodyPair(ContactAllocator &ioContactAllocator,
const BodyPair &inBodyPair);
250 static constexpr int cDetermineActiveConstraintsBatchSize = 64;
253 static constexpr int cSetupVelocityConstraintsBatchSize = 256;
256 static constexpr int cApplyGravityBatchSize = 64;
259 static constexpr int cActiveBodiesBatchSize = 16;
262 static constexpr int cIntegrateVelocityBatchSize = 64;
265 static constexpr int cNarrowPhaseBatchSize = 16;
268 static constexpr int cNumCCDBodiesPerJob = 4;
313 Mutex mStepListenersMutex;
317 StepListeners mStepListeners;
323 float mPreviousStepDeltaTime = 0.0f;
EBodyType
Type of body.
Definition BodyType.h:11
#define JPH_EXPORT
Definition Core.h:236
unsigned int uint
Definition Core.h:453
#define JPH_NAMESPACE_END
Definition Core.h:379
std::uint32_t uint32
Definition Core.h:456
#define JPH_NAMESPACE_BEGIN
Definition Core.h:373
EPhysicsUpdateError
Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call....
Definition EPhysicsUpdateError.h:11
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
uint16 ObjectLayer
Definition ObjectLayer.h:16
EStateRecorderState
A bit field that determines which aspects of the simulation to save.
Definition StateRecorder.h:18
Axis aligned box.
Definition AABox.h:16
Definition BodyActivationListener.h:14
Class function to filter out bodies for debug rendering, returns true if body should be rendered.
Definition BodyFilter.h:117
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
Definition BodyInterface.h:35
Implementation that uses the body manager to lock the correct mutex for a body.
Definition BodyLockInterface.h:78
Implementation that performs no locking (assumes the lock has already been taken)
Definition BodyLockInterface.h:58
Class that contains all bodies.
Definition BodyManager.h:44
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
Definition BroadPhaseQuery.h:29
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
A constraint manager manages all constraints of the same type.
Definition ConstraintManager.h:25
Definition DebugRenderer.h:47
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition BroadPhaseLayer.h:108
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition ObjectLayer.h:64
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
Definition JobSystem.h:70
Definition LargeIslandSplitter.h:25
Definition NarrowPhaseQuery.h:23
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
A listener class that receives a callback before every physics simulation step.
Definition PhysicsStepListener.h:23
Definition PhysicsSystem.h:29
void GetBodies(BodyIDVector &outBodyIDs) const
Definition PhysicsSystem.h:184
void DrawConstraintReferenceFrame(DebugRenderer *inRenderer)
Draw the constraint reference frames only (debugging purposes)
Definition PhysicsSystem.h:148
const NarrowPhaseQuery & GetNarrowPhaseQuery() const
Interface that allows fine collision queries against first the broad phase and then the narrow phase.
Definition PhysicsSystem.h:84
void RemoveConstraints(Constraint **inConstraints, int inNumber)
Batch remove constraints.
Definition PhysicsSystem.h:97
uint GetNumBodies() const
Gets the current amount of bodies that are in the body manager.
Definition PhysicsSystem.h:168
uint32 GetNumActiveBodies(EBodyType inType) const
Gets the current amount of active bodies that are in the body manager.
Definition PhysicsSystem.h:171
void SetPhysicsSettings(const PhysicsSettings &inSettings)
Control the main constants of the physics simulation.
Definition PhysicsSystem.h:71
void SetSoftBodyContactListener(SoftBodyContactListener *inListener)
Listener that is notified whenever a contact point between a soft body and another body.
Definition PhysicsSystem.h:57
const BodyInterface & GetBodyInterface() const
Access to the body interface. This interface allows to to create / remove bodies and to change their ...
Definition PhysicsSystem.h:75
const BroadPhaseQuery & GetBroadPhaseQuery() const
Access to the broadphase interface that allows coarse collision queries.
Definition PhysicsSystem.h:81
const BodyLockInterfaceLocking & GetBodyLockInterface() const
Returns a locking interface that locks the body so other threads cannot modify it.
Definition PhysicsSystem.h:159
const NarrowPhaseQuery & GetNarrowPhaseQueryNoLock() const
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:85
void DrawConstraints(DebugRenderer *inRenderer)
Draw the constraints only (debugging purposes)
Definition PhysicsSystem.h:142
const PhysicsSettings & GetPhysicsSettings() const
Definition PhysicsSystem.h:72
const BodyInterface & GetBodyInterfaceNoLock() const
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:77
BodyInterface & GetBodyInterface()
Definition PhysicsSystem.h:76
void DrawConstraintLimits(DebugRenderer *inRenderer)
Draw the constraint limits only (debugging purposes)
Definition PhysicsSystem.h:145
Constraints GetConstraints() const
Get a list of all constraints.
Definition PhysicsSystem.h:100
void AddConstraint(Constraint *inConstraint)
Add constraint to the world.
Definition PhysicsSystem.h:88
Vec3 GetGravity() const
Definition PhysicsSystem.h:153
uint GetMaxBodies() const
Get the maximum amount of bodies that this physics system supports.
Definition PhysicsSystem.h:174
void RemoveConstraint(Constraint *inConstraint)
Remove constraint from the world.
Definition PhysicsSystem.h:91
AABox GetBounds() const
Get the bounding box of all bodies in the physics system.
Definition PhysicsSystem.h:203
void DrawBodies(const BodyManager::DrawSettings &inSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)
Draw the state of the bodies (debugging purposes)
Definition PhysicsSystem.h:139
BodyActivationListener * GetBodyActivationListener() const
Definition PhysicsSystem.h:49
DefaultBroadPhaseLayerFilter GetDefaultBroadPhaseLayerFilter(ObjectLayer inLayer) const
Get an broadphase layer filter that uses the default pair filter and a specified object layer to dete...
Definition PhysicsSystem.h:162
BodyInterface & GetBodyInterfaceNoLock()
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:78
void GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) const
Definition PhysicsSystem.h:189
ContactConstraintManager::CombineFunction GetCombineRestitution() const
Definition PhysicsSystem.h:68
void SetCombineRestitution(ContactConstraintManager::CombineFunction inCombineRestition)
Definition PhysicsSystem.h:67
JPH_OVERRIDE_NEW_DELETE PhysicsSystem()
Constructor / Destructor.
Definition PhysicsSystem.h:34
static bool sDrawMotionQualityLinearCast
Draw debug info for objects that perform continuous collision detection through the linear cast motio...
Definition PhysicsSystem.h:136
void SetGravity(Vec3Arg inGravity)
Set gravity value.
Definition PhysicsSystem.h:152
const BodyLockInterfaceNoLock & GetBodyLockInterfaceNoLock() const
Returns a locking interface that won't actually lock the body. Use with great care!
Definition PhysicsSystem.h:156
BodyStats GetBodyStats() const
Get stats about the bodies in the body manager (slow, iterates through all bodies)
Definition PhysicsSystem.h:180
void AddConstraints(Constraint **inConstraints, int inNumber)
Batch add constraints.
Definition PhysicsSystem.h:94
bool WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) const
Definition PhysicsSystem.h:200
DefaultObjectLayerFilter GetDefaultLayerFilter(ObjectLayer inLayer) const
Get an object layer filter that uses the default pair filter and a specified layer to determine if la...
Definition PhysicsSystem.h:165
void SetContactListener(ContactListener *inListener)
Definition PhysicsSystem.h:53
SoftBodyContactListener * GetSoftBodyContactListener() const
Definition PhysicsSystem.h:58
ContactConstraintManager::CombineFunction GetCombineFriction() const
Definition PhysicsSystem.h:63
void SetCombineFriction(ContactConstraintManager::CombineFunction inCombineFriction)
Definition PhysicsSystem.h:62
const BodyID * GetActiveBodiesUnsafe(EBodyType inType) const
Definition PhysicsSystem.h:193
void SetBodyActivationListener(BodyActivationListener *inListener)
Listener that is notified whenever a body is activated/deactivated.
Definition PhysicsSystem.h:48
ContactListener * GetContactListener() const
Definition PhysicsSystem.h:54
Information used during the Update call.
Definition PhysicsUpdateContext.h:24
Definition SoftBodyContactListener.h:33
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:74
Definition StateRecorder.h:105
Definition TempAllocator.h:16
Helper struct that counts the number of bodies of each type.
Definition BodyManager.h:62
Draw settings.
Definition BodyManager.h:231
Structure that holds a body pair.
Definition BodyPair.h:14
Definition PhysicsSettings.h:28
Contains the information needed to cast a body through the scene to do continuous collision detection...
Definition PhysicsUpdateContext.h:97
Structure that contains data needed for each collision step.
Definition PhysicsUpdateContext.h:52