fix(input): restore working controls + add input harness + build fixes #8

Merged
zwitschi merged 1 commits from qa-input-collision-fix-0.1.0-clean into main 2026-11-08 13:45:47 +01:00
Owner

Summary

Restores working input controls on the packaged/PIE build and fixes the build blockers that were preventing the game module from compiling.

Root cause of "no controls work": ue_create_input_assets.py wrote the IMC key bindings to the deprecated mappings array. In UE 5.8 the runtime reads GetMappings() -> FInputMappingContextMappingData.DefaultKeyMappings.Mappings, so the cooked game loaded 0 runtime mappings even though the editor showed 13 — every key silently resolved to nothing (in packaged AND PIE). Fixed by populating the new DefaultKeyMappings field (and mirroring the deprecated array for the editor), then regenerating IMC_Default.uasset.

Verified: packaged build + injected OS input moves the pawn; user confirmed WASD moves, mouse looks, Space jumps, R resets, Escape pauses and releases the mouse.

Changes

  • Tools/ue_create_input_assets.py — write key->action mappings to DefaultKeyMappings (UE 5.8) in addition to the deprecated array.
  • Game/GigLine/Content/Input/IMC_Default.uasset — regenerated with 13 runtime mappings.
  • GigLineAssetTools.cpp — remove editor-only UStaticMesh::PostEditChange() calls that broke the game-target build.
  • GigLineCharacter.cpp — remove editor-only AActor::GetActorLabel() (game-target build break) and the temporary SIM/EI/screenshot diagnostics.
  • Tools/input_emulation.py + Tools/input_test.py — new OS-level uinput input harness (keyboard + mouse) for reproducible input QA.
  • Tools/run_pie.sh — one-click editor open for PIE input isolation.
  • Docs/build.md — document the PIE-vs-packaged input test.

Build status

  • GigLine (game) and GigLineEditor targets both compile clean.

Note for the coordinator

  • Applied onto current main as a single clean commit; the old qa-input-collision-fix-0.1.0 branch (24 history-heavy commits overlapping main's already-merged walkable-demo work) is superseded by this branch and can be deleted.
  • I did not merge into main (integration is coordinator-owned, per AGENTS.md).
## Summary Restores working input controls on the packaged/PIE build and fixes the build blockers that were preventing the game module from compiling. **Root cause of "no controls work":** `ue_create_input_assets.py` wrote the IMC key bindings to the **deprecated `mappings` array**. In UE 5.8 the runtime reads `GetMappings() -> FInputMappingContextMappingData.DefaultKeyMappings.Mappings`, so the **cooked game loaded 0 runtime mappings** even though the editor showed 13 — every key silently resolved to nothing (in packaged AND PIE). Fixed by populating the new `DefaultKeyMappings` field (and mirroring the deprecated array for the editor), then regenerating `IMC_Default.uasset`. **Verified:** packaged build + injected OS input moves the pawn; user confirmed **WASD moves, mouse looks, Space jumps, R resets, Escape pauses and releases the mouse.** ## Changes - `Tools/ue_create_input_assets.py` — write key->action mappings to `DefaultKeyMappings` (UE 5.8) in addition to the deprecated array. - `Game/GigLine/Content/Input/IMC_Default.uasset` — regenerated with 13 runtime mappings. - `GigLineAssetTools.cpp` — remove editor-only `UStaticMesh::PostEditChange()` calls that broke the game-target build. - `GigLineCharacter.cpp` — remove editor-only `AActor::GetActorLabel()` (game-target build break) and the temporary SIM/EI/screenshot diagnostics. - `Tools/input_emulation.py` + `Tools/input_test.py` — new OS-level uinput input harness (keyboard + mouse) for reproducible input QA. - `Tools/run_pie.sh` — one-click editor open for PIE input isolation. - `Docs/build.md` — document the PIE-vs-packaged input test. ## Build status - `GigLine` (game) and `GigLineEditor` targets both compile clean. ## Note for the coordinator - Applied onto current `main` as a single clean commit; the old `qa-input-collision-fix-0.1.0` branch (24 history-heavy commits overlapping main's already-merged walkable-demo work) is superseded by this branch and can be deleted. - I did not merge into `main` (integration is coordinator-owned, per AGENTS.md).
zwitschi added 1 commit 2026-11-08 13:45:13 +01:00
Consolidated from the qa-input-collision-fix-0.1.0 work, applied onto main so
only the changes main genuinely lacks are carried (main already merged the
walkable-demo/collision work independently).

- fix(input): populate the UE 5.8 FInputMappingContextMappingData
  DefaultKeyMappings field in ue_create_input_assets.py (the runtime reads
  GetMappings()->DefaultKeyMappings.Mappings; the script previously wrote only
  the deprecated 'mappings' array, so the cooked game had 0 runtime mappings
  and every key silently did nothing — in packaged AND PIE). Regenerated
  IMC_Default.uasset. WASD/mouse/Space/R/Escape verified working.
- fix(build): drop editor-only APIs that break the game target build —
  UStaticMesh::PostEditChange() (GigLineAssetTools) and AActor::GetActorLabel()
  (character ground probe). GigLine and GigLineEditor now both compile clean.
- tools: OS-level uinput input harness (input_emulation.py + input_test.py) and
  run_pie.sh for PIE isolation; document the PIE-vs-packaged input test in
  Docs/build.md. Removed the temporary SIM/EI/screenshot diagnostics from the
  character.
zwitschi merged commit 37a3bfbc3d into main 2026-11-08 13:45:47 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: zwitschi/gig-line#8