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_PAIR
bit to 1 enables the manual filtering of all the contact pairs involving the collider. - Setting the
ActiveHooks::FILTER_INTERSECTION_PAIR
bit to 1 enables the manual filtering of all the contact pairs involving the collider. - Setting the
ActiveHooks::MODIFY_SOLVER_CONTACTS
bit 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:
/* Set the active hooks when the collider is created. */
let collider = ColliderBuilder::ball(0.5)
.active_hooks(ActiveHooks::FILTER_CONTACT_PAIRS | ActiveHooks::MODIFY_SOLVER_CONTACTS)
.build();
/* Set the active hooks after the collider creation. */
let collider = collider_set.get_mut(collider_handle).unwrap();
collider
.set_active_hooks(ActiveHooks::FILTER_CONTACT_PAIRS | ActiveHooks::MODIFY_SOLVER_CONTACTS);
assert!(collider
.active_hooks()
.contains(ActiveHooks::FILTER_CONTACT_PAIRS));
assert!(collider
.active_hooks()
.contains(ActiveHooks::MODIFY_SOLVER_CONTACTS));