Class CollisionScene¶
-
class CollisionScene¶
Public Functions
-
void debugDraw(bool showMeshColliders, bool showRigidBodies)¶
-
void reset()¶
-
void disableRigidBody(RigidBody *rigidBody)¶
Temporarily exclude the given RigidBody from the simulation.
While disabled, the body will be immune to collision (allowing it to pass through objects) and will not receive changes to force, velocity, or acceleration. Manually moving the body (via RigidBody::setPosition()/RigidBody::setRotation()) is still allowed. Call enableRigidBody() to re-enable the RigidBody.
-
void addMeshCollider(MeshCollider *mesh)¶
-
void removeMeshCollider(MeshCollider *mesh)¶
- void configureSimulation(
- float fixedDt,
- const fm_vec3_t &gravity,
- uint8_t velocityIterations,
- uint8_t positionIterations,
- float gfxScale
-
void step()¶
-
int getCachedConstraintCount() const¶
-
ContactConstraint &getCachedConstraint(int index)¶
-
const ContactConstraint &getCachedConstraint(int index) const¶
- ContactConstraint *createCachedConstraint(
- const ContactConstraintKey &key,
- RigidBody *rigidBodyA,
- Collider *colliderA,
- MeshCollider *meshColliderA,
- Object *objectA,
- RigidBody *rigidBodyB,
- Collider *colliderB,
- MeshCollider *meshColliderB,
- Object *objectB
-
ContactConstraint *findCachedConstraint(const ContactConstraintKey &key)¶
-
bool raycast(Raycast &ray, RaycastHit &hit) const¶
- bool capsuleSweep(
- const fm_vec3_t ¢er,
- const fm_vec3_t &axisUp,
- float radius,
- float innerHalfHeight,
- const fm_vec3_t &displacement,
- RaycastColliderTypeFlags collTypes,
- uint8_t readMask,
- CapsuleSweepHit &hit,
- const Object *ignoreOwner = nullptr
Sweeps a capsule through the scene and returns the earliest contact.
- Todo:
: not implemented)
- Parameters:
center – Capsule center in physics space
axisUp – Normalized capsule-axis direction
radius – Capsule radius
innerHalfHeight – Half-length of the cylindrical section (not including sphere caps)
displacement – Displacement vector in physics space (not normalized)
collTypes – Which collider types to test against
readMask – Collision read mask (
hit – Output contact result
- Returns:
true if any contact was found
Public Members
-
uint64_t ticksWakePrep = {0}¶
-
uint64_t ticksWorldUpdate = {0}¶
-
uint64_t ticksIntegrateVel = {0}¶
-
uint64_t ticksDetect = {0}¶
-
uint64_t ticksDetectBodyPairs = {0}¶
-
uint64_t ticksDetectMeshPairs = {0}¶
-
uint64_t ticksRefreshCallbacks = {0}¶
-
uint64_t ticksPreSolve = {0}¶
-
uint64_t ticksWarmStart = {0}¶
-
uint64_t ticksVelocitySolve = {0}¶
-
uint64_t ticksIntegration = {0}¶
-
uint64_t ticksPositionSolve = {0}¶
-
uint64_t ticksFinalize = {0}¶
-
uint64_t ticksTotal = {0}¶
-
void debugDraw(bool showMeshColliders, bool showRigidBodies)¶