66 void DestroyBodyWithoutID(
Body *inBody)
const;
70 bool AssignBodyID(
Body *ioBody);
74 bool AssignBodyID(
Body *ioBody,
const BodyID &inBodyID);
84 void UnassignBodyIDs(
const BodyID *inBodyIDs,
int inNumber,
Body **outBodies);
88 void DestroyBody(
const BodyID &inBodyID);
92 void DestroyBodies(
const BodyID *inBodyIDs,
int inNumber);
101 void RemoveBody(
const BodyID &inBodyID);
104 bool IsAdded(
const BodyID &inBodyID)
const;
122 void AddBodiesAbort(
BodyID *ioBodies,
int inNumber,
AddState inAddState);
123 void RemoveBodies(
BodyID *ioBodies,
int inNumber);
128 void ActivateBody(
const BodyID &inBodyID);
129 void ActivateBodies(
const BodyID *inBodyIDs,
int inNumber);
131 void DeactivateBody(
const BodyID &inBodyID);
132 void DeactivateBodies(
const BodyID *inBodyIDs,
int inNumber);
133 bool IsActive(
const BodyID &inBodyID)
const;
134 void ResetSleepTimer(
const BodyID &inBodyID);
154 void SetShape(
const BodyID &inBodyID,
const Shape *inShape,
bool inUpdateMassProperties,
EActivation inActivationMode)
const;
161 void NotifyShapeChanged(
const BodyID &inBodyID,
Vec3Arg inPreviousCenterOfMass,
bool inUpdateMassProperties,
EActivation inActivationMode)
const;
174 void GetPositionAndRotation(
const BodyID &inBodyID,
RVec3 &outPosition,
Quat &outRotation)
const;
177 RVec3 GetCenterOfMassPosition(
const BodyID &inBodyID)
const;
179 Quat GetRotation(
const BodyID &inBodyID)
const;
181 RMat44 GetCenterOfMassTransform(
const BodyID &inBodyID)
const;
185 void MoveKinematic(
const BodyID &inBodyID,
RVec3Arg inTargetPosition,
QuatArg inTargetRotation,
float inDeltaTime);
189 void SetLinearAndAngularVelocity(
const BodyID &inBodyID,
Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity);
190 void GetLinearAndAngularVelocity(
const BodyID &inBodyID,
Vec3 &outLinearVelocity,
Vec3 &outAngularVelocity)
const;
191 void SetLinearVelocity(
const BodyID &inBodyID,
Vec3Arg inLinearVelocity);
192 Vec3 GetLinearVelocity(
const BodyID &inBodyID)
const;
193 void AddLinearVelocity(
const BodyID &inBodyID,
Vec3Arg inLinearVelocity);
194 void AddLinearAndAngularVelocity(
const BodyID &inBodyID,
Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity);
195 void SetAngularVelocity(
const BodyID &inBodyID,
Vec3Arg inAngularVelocity);
196 Vec3 GetAngularVelocity(
const BodyID &inBodyID)
const;
215 void AddAngularImpulse(
const BodyID &inBodyID,
Vec3Arg inAngularImpulse);
216 bool ApplyBuoyancyImpulse(
const BodyID &inBodyID,
RVec3Arg inSurfacePosition,
Vec3Arg inSurfaceNormal,
float inBuoyancy,
float inLinearDrag,
float inAngularDrag,
Vec3Arg inFluidVelocity,
Vec3Arg inGravity,
float inDeltaTime);
237 Mat44 GetInverseInertia(
const BodyID &inBodyID)
const;
241 void SetRestitution(
const BodyID &inBodyID,
float inRestitution);
242 float GetRestitution(
const BodyID &inBodyID)
const;
247 void SetFriction(
const BodyID &inBodyID,
float inFriction);
248 float GetFriction(
const BodyID &inBodyID)
const;
253 void SetGravityFactor(
const BodyID &inBodyID,
float inGravityFactor);
254 float GetGravityFactor(
const BodyID &inBodyID)
const;
259 void SetUseManifoldReduction(
const BodyID &inBodyID,
bool inUseReduction);
260 bool GetUseManifoldReduction(
const BodyID &inBodyID)
const;
268 void SetUserData(
const BodyID &inBodyID,
uint64 inUserData)
const;
274 void InvalidateContactCache(
const BodyID &inBodyID);
278 JPH_INLINE
void ActivateBodyInternal(
Body &ioBody)
const;
EBodyType
Type of body.
Definition: BodyType.h:11
#define JPH_EXPORT
Definition: Core.h:236
std::uint64_t uint64
Definition: Core.h:456
#define JPH_NAMESPACE_END
Definition: Core.h:378
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
EActivation
Enum used by AddBody to determine if the body needs to be initially active.
Definition: EActivation.h:11
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition: MotionQuality.h:11
EMotionType
Motion type of a physics body.
Definition: MotionType.h:11
uint16 ObjectLayer
Definition: ObjectLayer.h:16
Axis aligned box.
Definition: AABox.h:16
Settings for constructing a rigid body.
Definition: BodyCreationSettings.h:31
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
void Init(BodyLockInterface &inBodyLockInterface, BodyManager &inBodyManager, BroadPhase &inBroadPhase)
Initialize the interface (should only be called by PhysicsSystem)
Definition: BodyInterface.h:38
void * AddState
Broadphase add state handle, used to keep track of a batch while adding to the broadphase.
Definition: BodyInterface.h:115
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition: BodyLockInterface.h:17
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
Filter class for broadphase layers.
Definition: BroadPhaseLayer.h:94
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition: NonCopyable.h:11
Filter class for object layers.
Definition: ObjectLayer.h:28
Definition: PhysicsMaterial.h:23
Definition: Reference.h:151
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition: Shape.h:178
Definition: SoftBodyCreationSettings.h:18
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition: SubShapeID.h:23
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition: TwoBodyConstraint.h:27
Base class for settings for all constraints that involve 2 bodies.
Definition: TwoBodyConstraint.h:16