You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# PR_26161_034 Controls Axis Direction And Input Events
2
+
3
+
## Branch Validation
4
+
- PASS: Current git branch was verified as `main` before edits.
5
+
6
+
## Impacted Lane
7
+
- Controls / Input Mapping
8
+
-`src/engine/input` normalized input registry
9
+
- Shared DB/mock adapter Controls tables
10
+
11
+
## Playwright Impacted
12
+
- Yes.
13
+
14
+
## Requirement Checklist
15
+
- PASS: Controls status remains Wireframe. Playwright validates registry metadata for `controls` remains `wireframe`.
16
+
- PASS: Controls data remains DB-backed through the shared DB/mock adapter. Mappings persist through `game_input_mappings`; player input mappings persist through `player_controller_profiles`.
17
+
- PASS: Normalized axis choices are split into `move.x-`, `move.x+`, `move.y-`, `move.y+`, `aim.x-`, `aim.x+`, `aim.y-`, `aim.y+`.
18
+
- PASS: Axis +/- directions use separate normalized input dropdown choices in Player Input Mapping.
19
+
- PASS: Deadzone belongs to the physical axis and is shared by both +/- directions; Playwright verifies one Axis0 row with one Deadzone control and both direction dropdowns.
20
+
- PASS: Invert belongs to the physical axis; engine normalization test validates invert changes axis direction resolution.
21
+
- PASS: User-facing `Assigned Normalized Input` copy is removed; Playwright verifies it is absent.
22
+
- PASS: Dropdown/list heights are consistent; Playwright compares generated select heights in Game Input Mapping and Player Input Mapping edit rows.
23
+
- PASS: Game Input Mapping includes an Input Event column with `Press`, `Down`, and `Release`.
24
+
- PASS: Game Input Mapping includes an Input Family column with `Keyboard`, `Mouse`, `Gamepad`, and `Joystick`.
25
+
- PASS: Input Family stores only the family value; Playwright verifies `game_input_mappings` does not store controller name/id, binding, input device, or raw physical input.
26
+
- PASS: Normalized architecture is preserved: Player Input Mapping maps physical input to normalized input; Game Input Mapping maps normalized input to game action.
27
+
- PASS: Default fallback profiles, reset confirmation, accordions, status logging, and DB persistence are preserved by targeted Playwright.
28
+
- PASS: No sample JSON alignment, auth behavior, production account system, or unrelated rewrites were added.
- PASS: `npx playwright test tests/playwright/tools/InputMappingV2Tool.spec.mjs`
40
+
41
+
## Manual Validation Steps
42
+
1. Open `/toolbox/controls/index.html`.
43
+
2. In Game Input Mapping, click Add Game Control and confirm columns include Normalized Input, Input Family, Input Event, Game Action, Object, State, and Actions.
44
+
3. Select `move.x-`, `Gamepad`, and `Release`, save, reload, and confirm the row persists.
45
+
4. Inspect the mock DB snapshot and confirm `game_input_mappings` stores `inputFamily` and `inputEventPhase` without controller id/name or raw physical input.
46
+
5. Create a gamepad Player Input Mapping and edit `Axis0`.
47
+
6. Confirm `Axis0` has separate Negative and Positive normalized input dropdowns, one Deadzone field, and one Invert checkbox.
48
+
7. Confirm `Assigned Normalized Input` does not appear.
49
+
8. Save, reload, and confirm the Axis0 mapping persists with one shared deadzone/invert pair and both direction values.
50
+
51
+
## Skipped Lanes
52
+
- Full samples validation was skipped by request.
53
+
- Full repository Playwright was skipped because the impacted browser lane is Controls/Input Mapping.
54
+
- Project Workspace validation was skipped because this PR does not change Project Workspace behavior.
55
+
56
+
## Runtime Engine Behavior
57
+
- No production game runtime behavior was added.
58
+
-`src/engine/input/NormalizedInputRegistry.js` received the smallest shared input extension required for directional normalized axes and deadzone/invert direction resolution.
(0%) src/dev-runtime/persistence/mock-db-store.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
10
10
(0%) src/dev-runtime/persistence/tool-repositories/input-mapping-mock-repository.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
(0%) src/dev-runtime/persistence/mock-db-store.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
21
21
(0%) src/dev-runtime/persistence/tool-repositories/input-mapping-mock-repository.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only
0 commit comments