Why
Split from #493 (~950 lines): once the compiler cooks declared bodies (#493), the page restores them as world bodies.
To do
Code context
#493's cooked bodies in physics.json, physics/bodySlots.ts (#752), #711's restore path for cooked soft bodies (reuse it).
Proof
Tests by behaviour: a model with declared bodies restores them with the cooked hull, mass, centre of mass and inertia; a removed model releases their slots.
Links
Blocked by #493. Split from #493.
Narrowed (lead physics, 28 Sept.: one issue = one PR)
This issue closes with five To-dos: declared centre without declared inertia, retry after a rescale refusal, one per-model bookkeeping, kinematic child of a dynamic body, collider node outside the subtree recorded. "Mesh children of a dynamic body collide" (~250 lines, a new native cook) moved to #354.
Why
Split from #493 (~950 lines): once the compiler cooks declared bodies (#493), the page restores them as world bodies.
To do
Code context
#493's cooked bodies in physics.json,
physics/bodySlots.ts(#752), #711's restore path for cooked soft bodies (reuse it).Proof
Tests by behaviour: a model with declared bodies restores them with the cooked hull, mass, centre of mass and inertia; a removed model releases their slots.
Links
Blocked by #493. Split from #493.
Narrowed (lead physics, 28 Sept.: one issue = one PR)
This issue closes with five To-dos: declared centre without declared inertia, retry after a rescale refusal, one per-model bookkeeping, kinematic child of a dynamic body, collider node outside the subtree recorded. "Mesh children of a dynamic body collide" (~250 lines, a new native cook) moved to #354.