The body stood in an A-pose while the log said the clip was playing. Two independent defects, found by querying the imported asset instead of guessing: 1. PlayAnimation needs the component in AnimationSingleNode with a live single-node instance. The body is hidden at construction and only unhidden by the camera toggle, so the first call could land before the component was ready, and the Wanted == PlayingAnimation guard then returned forever. UpdateBodyAnimation now sets the mode, calls SetAnimation + Play, and re-asserts while the instance is missing. 2. The arms-down offsets lived only in the clip keys. The exporter writes clip data relative to the rest pose, so they arrived as a ±20 degree swing around an A-posed bind - which is exactly what the pose probe measured. apply_base_pose now bakes them into the rest pose before any clip is authored, the same trick mpfb_character_export.py --pose idle uses. The table is applied with inverted signs: as written, the FBX axis mapping produced arms raised in a V. Shot 6 confirms it: the arms hang at the sides. Still open and recorded - the idle pose reads awkwardly (arms forward, hands splayed) and the walk clip has no shot in motion; both are marked in TODO.md and Screenshots/README.md. Instrumentation removed; the diagnostics that remain are behind gigline.SetupLogs.
Game
The Unreal project lives at Game/GigLine/GigLine.uproject once created. Nothing here yet.
What gets committed
Config/— engine and project settings, including the quality presets used for release checksSource/— C++ modulesContent/—0.1.0map, materials, meshes; LFS-trackedGigLine.uproject
What does not
Binaries/, Intermediate/, Saved/, DerivedDataCache/ — all generated. .gitignore covers them; do not add exceptions.
Engine
Installed outside the repository. Its path and exact version are recorded in ../Docs/toolchain.md. Nothing in this directory may assume a machine-specific engine path; the documented build procedure is ../Docs/build.md.