Type
Overview
Add first-class gamepad and 3D mouse (six-degree-of-freedom) input to editor camera navigation, with deterministic mappings, dead zones, device detection, and user-configurable sensitivity.
Context
The FlyCamera input layer now accepts semantic commands and #784 owns keyboard/mouse profiles and preferences. Device input must feed those semantics rather than introducing a second controller path. It must obey viewport focus and UI capture so text editing and overlays remain safe.
What needs to be done
- Audit the existing platform input backends and select supported gamepad and 3D-mouse APIs per platform.
- Extend the input abstraction with allocation-free device state/events and connect them to FlyCamera semantic input.
- Define default gamepad mappings for fly, orbit, pan, zoom, speed, focus, and mode toggle.
- Define 3D-mouse translation/rotation mappings, axis inversion, response curves, dead zones, and sensitivity.
- Add device-specific preferences, persistence, discovery/connect-disconnect handling, and a user-visible mapping/help surface.
- Ensure UI capture, inactive viewport state, and editor focus correctly suppress camera device motion.
Resources
Testing
- Unit-test normalization, dead zone, sensitivity, and command mapping with synthetic device samples.
- Add input-routing tests for focus and UI capture suppression.
- Manually test representative supported gamepad and 3D-mouse devices on macOS, Windows, and Linux.
Acceptance criteria
Estimated effort
1–2 weeks, depending on platform backend support
Type
Overview
Add first-class gamepad and 3D mouse (six-degree-of-freedom) input to editor camera navigation, with deterministic mappings, dead zones, device detection, and user-configurable sensitivity.
Context
The FlyCamera input layer now accepts semantic commands and #784 owns keyboard/mouse profiles and preferences. Device input must feed those semantics rather than introducing a second controller path. It must obey viewport focus and UI capture so text editing and overlays remain safe.
What needs to be done
Resources
ZEngine/ZEngine/Controllers/FlyCameraController.*ZEngine/ZEngine/Rendering/Cameras/FlyCameraInput.*Testing
Acceptance criteria
Estimated effort
1–2 weeks, depending on platform backend support