SoA world: joints, force/torque lanes, capsules and boxes #2
Loading…
Reference in a new issue
No description provided.
Delete branch "nibu/soa-joints"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stacked on #1 (base
nibu/soa-world; retarget tomainafter #1 merges). Do not merge before #1. Rung 1 of the Bad Day Simulator ladder, Ymir half. Follow-upnibu-body:follow_up:ymir-soa-lodur-needs, items 1-3 and the body layout; items 4 (contact facts) and 5 (public surface inYmir.Core) are not done.Added (ABI 2;
docs/soa-world.mdhas the contract)ymir_box3d_soa_add_body, replacesadd_sphere/add_static_box: sphere, capsule (segment along local Y), dynamic box, static box; rotation, density, friction, restitution, rolling resistance, parent and limb index lanes (set at creation, not read by Box3D).ymir_box3d_soa_add_joint, revolute, spherical, weld, from a world anchor and axis (creation pose is zero), optional limits. Joint state lanes: angle (Box3D's), world orientation of frame A, relative rotation (w >= 0), relative angular velocity in frame A.stepapplies them to dynamic bodies and clears them (one step of intent). A non-finite value refuses the whole step before any body is touched.Found while testing: creating Box3D worlds from two threads at once aborts the host (
b3CreateWorld, SIGILL). xunit ran two test classes in parallel; the test assembly is now serial. Not a Ymir fix, a constraint to know.Not measured: Windows build, Unity consumption (unrun); cross-platform and cross-process bit-identity (unclaimed; repeat runs are in-process). Joint motors and springs are not exposed: Lodur drives joints from torque lanes, which limits stable stiffness (see Lodur's
docs/first-slice.md).Box3DSoaWorldis still internal;InternalsVisibleTolistsLodur.Body.YmirandLodur.Testsuntil a public surface exists.Consumer: GameCult/Lodur
nibu/first-slice.Merge nothing.
🤖 Generated with Claude Code
Draft: SoA world: joints, force/torque lanes, capsules and boxes (stacked on #1)to SoA world: joints, force/torque lanes, capsules and boxesSteward check before merge (nibu, 2026-11-10). Retargeted from
nibu/soa-worldto main after #1 merged; 0 conflicts.dotnet test tests/Ymir.Box3D.Soa.Testsat the head: 16/16 pass.tests/Ymir.Box3D.Parity: 20/20 pass.lane[k][i] = lane[k][i]) fails 1 test ("lanes act before the step and clear after"), so the clear is pinned.