§113 "collision visualization": a cross at every contact point, plus the
contact normal as a segment from pointOnA.
events is anything iterable of §29-shaped events — world.queuedEvents
passes directly. Entries without a contacts array (trigger, sleep, and
joint-break events) are skipped, and "collisionend" carries an empty
manifold by §29's definition, so it contributes nothing without being a
special case. Order follows the adapter's drainEvents order, which §33
requires to be deterministic.
Contacts are a per-step quantity: the events must be collected from the
step being visualized, and the buffer cleared per frame, or the overlay shows
history.
§113 "collision visualization": a cross at every contact point, plus the contact normal as a segment from
pointOnA.eventsis anything iterable of §29-shaped events —world.queuedEventspasses directly. Entries without acontactsarray (trigger, sleep, and joint-break events) are skipped, and"collisionend"carries an empty manifold by §29's definition, so it contributes nothing without being a special case. Order follows the adapter'sdrainEventsorder, which §33 requires to be deterministic.Contacts are a per-step quantity: the events must be collected from the step being visualized, and the buffer cleared per frame, or the overlay shows history.
Returns the number of segments appended.