A §24 collision shape as JSON — every shape this build ships, discriminated by
the same type tag the union uses.
Written as an exhaustive switch so that adding a shape to
CollisionShape fails to compile here (shape narrows to never in
the default branch) instead of silently saving it as an unreadable {}. The
default branch is unreachable from TypeScript and exists for JavaScript
callers and for a shape assembled from untyped data.
A §24 collision shape as JSON — every shape this build ships, discriminated by the same
typetag the union uses.Written as an exhaustive
switchso that adding a shape to CollisionShape fails to compile here (shapenarrows toneverin the default branch) instead of silently saving it as an unreadable{}. The default branch is unreachable from TypeScript and exists for JavaScript callers and for a shape assembled from untyped data.