- 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).
37 KiB
37 KiB