Files
sporel-lib-core.puppet/init.lua
Axel Meyer 9519897ba2 feat(puppet): procedural-locomotion layer (substrate port)
- build_rig parses optional rig.locomotion block (mode/step_trigger/
  step_placement/step_duration/step_height/idle_return_delay/legs[])
- spawn initializes per-puppet foot_state[] table (planted/stepping
  state, anchor/cur world-positions, sprite_reach from leg-texture)
- apply_locomotion (substrate puppet.c:1000-1156 port): step-trigger
  on hip-displacement > step_trigger; smoothstep step-progression with
  arc-height; leg-aim via atan2(-dx, dy); leg-stretch via scl_y clamp
  [0.2, 2.5]; foot world-pos override
- Skips legs where bone_animated is set on leg or foot (keyframe priority)
- Integrated as step 4 in M.update post-cascade
- load_textures caches texture_width/height per bone for sprite_reach

No new tests yet (added in Phase 3e). Existing 24 assertions remain
GREEN (locomotion is no-op for rigs without locomotion-block).
2026-05-18 18:29:00 +02:00

37 KiB