[feat] roadmap 13 batch C - physics usability + car playability - #35
Merged
Conversation
- Inspector scene mode gains a Physics section: rows for every object that gets a body at sim start (userData.physics + flow Mass overrides, provenance-flagged via collectParams), row click selects - Enable physics on selection quick action: dynamic mass 1 through the existing objectParameters replication + a props undo entry per object - clearer startSimulation fallback toasts: say WHY and point at the Inspector Physics section - new e2e suite physics-discoverability (11 checks) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- new Physics nodes: angularvelocity (axis + rad/s, setAngvel at sim start, wiring it alone implies dynamic mass 1) and motor (drives every revolute joint touching the selected object, wins over the joint def) - node param edits re-apply LIVE mid-sim on the stepping peer (change-detected flowNodes/flowEdges subscriptions, cleared on stop) - api.physics.applyTorqueImpulse(uuid, torque) - initiator-only spin - authoritative sync: initiator applies, motion rides move broadcasts - new two-peer e2e suite flow-physics-nodes (10 checks) - physics-joints motor phase made robust: wheel hinged in the air (the grounded layout could contact-lock and stall the motor) + polled read - NODES.md / MODULES.md documented Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ROOT CAUSE of the car blow-up found and fixed: rapier revolute() takes ONE axis interpreted in BOTH bodies LOCAL frames; hull bodies carried the object rotation, so the z-rotated wheel hulls hinged about an axis 90 degrees off the body half and the solver launched the assembly. Hull colliders now bake rotation into their vertices (like scale) so EVERY body starts world-aligned - one world axis is valid everywhere, and the hull special-case in the joint anchor math is gone - play-gate: claims work anytime, but driving + the chase camera engage only in Play mode with a running simulation; engagement claims keys (pausing play-mode walking) and disengages on exit/release - chase cam reuses the possess path: chaseCamera() extracted, new camera-only startFollowCam/stopFollowCam + followingCam store (stops on VR entry like possess) - tuning: FORCE 300->120, MAX_VEL 14->10, STEER_VEL 8->6, wheel friction 1.4->1.1, body mass 20->30, stance 1.15->1.3 (stable and grippy) - car-module e2e extended: no-keys-outside-play gate, engagement claims, chase-cam follow + restore, upright-through-drive check (16 checks) - MODULES.md car recipe updated Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch C - Physics usability + car playability (roadmap #13, lane 1)
C1 - physics discoverability (1edf8be)
C2 - angular velocity + motor nodes, torque SDK (0a795ce)
api.physics.applyTorqueImpulse(uuid, torque)(initiator-only). NODES.md / MODULES.md updated.C3 - car playability + blow-up ROOT FIX (9751d0a)
revolute()takes ONE axis interpreted in BOTH bodies local frames; hull bodies carried the object rotation, so the z-rotated wheel hulls hinged about an axis 90 degrees off the body half and the solver launched the assembly. Hull colliders now bake rotation into their vertices (like scale) so every body starts world-aligned; the hull special-case in the joint anchor math is gone. The car now sits perfectly still and drives upright.keys(kills WASD-flies-camera / pauses play-mode walking) and disengages on exit/release.chaseCamera()extracted, new camera-onlystartFollowCam/stopFollowCam+followingCamstore.Verification
physics-discoverability(11 checks),flow-physics-nodes(two-peer, 10 checks);car-moduleextended to 16 checks (gate, engagement, chase cam, upright-through-drive).physics,physics-kinematic,physics-joints,possesssuites green;physics-jointsmotor phase made robust (wheel hinged in the air + polled read - the grounded layout could contact-lock and stall).npm run buildgreen; svelte-check holds the 501/77 baseline on all three commits.🤖 Generated with Claude Code