feat(physics): phase 16 - ludic.physics over Jolt Physics v5.6.0

Our own shim (native/shim/jph_shim.cpp) over Jolt built from the pinned tag with cross-platform
determinism and no fp contraction: shapes as handles (box, sphere, capsule, cylinder, dome,
offset, heightfield, mesh), still/kinematic/dynamic bodies by id with real removal, rays,
top_at and push (what CharacterGround asks), overlaps, buoyancy against the PhysWater port,
contacts recorded in C and drained as PHYS_HIT / PHYS_SPLASH facts. Fixed 1/60 steps, at most four
a frame. Nine tests against the real library, including a pile run twice to the bit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-26 23:41:37 +03:00
parent 5d3a799e33
commit 72dbdca1f3
21 changed files with 1152 additions and 0 deletions

View file

@ -0,0 +1,12 @@
# ludic.physics - a physics world over Jolt: shapes as handles it keeps, bodies by id, queries,
# water that floats a body, and the contacts that matter as facts. Fixed 1/60 steps.
module ludic_physics uses ludic_base
numbers float
import "ludic.base"
import "native.ludic"
import "state.ludic"
import "shapes.ludic"
import "bodies.ludic"
import "queries.ludic"
import "water.ludic"
import "system.ludic"