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).
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.pywrote the IMC key bindings to the deprecatedmappingsarray. In UE 5.8 the runtime readsGetMappings() -> 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 newDefaultKeyMappingsfield (and mirroring the deprecated array for the editor), then regeneratingIMC_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 toDefaultKeyMappings(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-onlyUStaticMesh::PostEditChange()calls that broke the game-target build.GigLineCharacter.cpp— remove editor-onlyAActor::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) andGigLineEditortargets both compile clean.Note for the coordinator
mainas a single clean commit; the oldqa-input-collision-fix-0.1.0branch (24 history-heavy commits overlapping main's already-merged walkable-demo work) is superseded by this branch and can be deleted.main(integration is coordinator-owned, per AGENTS.md).