Body of shape1.
Body of shape2.
Cast to CollisionArbiter if this is a collision, else null.
Cast to FluidArbiter if this is a fluid interaction, else null.
Whether both interacting bodies are currently sleeping. Throws if the arbiter is not active.
First shape (lower id).
Second shape (higher id).
The pre-handler state of this arbiter.
Whether this is a collision arbiter.
Whether this is a fluid arbiter.
Whether this is a sensor arbiter.
Total impulse applied by this arbiter in the last step as (fx, fy, torque).
Pass a body to get the impulse applied specifically to that body.
Pass freshOnly = true to include only new contact points (not persistent ones).
Overridden by CollisionArbiter and FluidArbiter.
One of the two interacting bodies, or null for the combined impulse.
When true, only count fresh (new) contacts. Default false.
Represents an active interaction between two shapes.
Arbiters are created and pooled internally by the engine — they cannot be instantiated directly. Access them via:
space.arbiters— all active arbiters in the simulationbody.arbiters— arbiters involving a specific bodyInteractionCallback.arbiters— arbiters in an interaction callbackPreCallback.arbiter— the arbiter in a pre-handlerUse Arbiter.collisionArbiter or Arbiter.fluidArbiter to cast to a subtype for type-specific properties.
Warning: do not hold references to
Arbiterobjects after the current simulation step — they are pooled and may be reused.Fully modernized — uses extracted ZPP_Arbiter directly.