collider_active_hooks
Physics hooks are user-defined callbacks used to filter-out some contact
pairs, or modify contacts, based on arbitrary user code. In order to enable a physics hook for a pair of colliders, at
least one of the involved colliders must have the corresponding hook set as active. A hook is activated for a collider
by setting its corresponding active hooks bit to 1:
-
Setting the
ActiveHooks.FILTER_CONTACT_PAIRbit to 1 enables the manual filtering of all the contact pairs involving the collider. -
Setting the
ActiveHooks.FILTER_INTERSECTION_PAIRbit to 1 enables the manual filtering of all the intersection pairs involving the collider. -
Setting the
ActiveHooks.MODIFY_SOLVER_CONTACTSbit to 1 enables the manual contact modification for all the contact manifolds involving the collider.
The active hooks of a collider can be set when the collider is created or after its creation (the callbacks themselves are given by the object assigned to the physics_hooks property of the PhysicsWorld, see physics hooks):
# Set the active hooks when the collider is created.
collider = (
rp.Collider.ball(0.5)
.active_hooks(rp.ActiveHooks.FILTER_CONTACT_PAIRS | rp.ActiveHooks.MODIFY_SOLVER_CONTACTS)
.build()
)
# Set the active hooks after the collider creation.
collider = world.colliders[collider_handle]
collider.active_hooks = rp.ActiveHooks.FILTER_CONTACT_PAIRS | rp.ActiveHooks.MODIFY_SOLVER_CONTACTS
assert collider.active_hooks.contains(rp.ActiveHooks.FILTER_CONTACT_PAIRS)
assert collider.active_hooks.contains(rp.ActiveHooks.MODIFY_SOLVER_CONTACTS)