control-input
Universal input abstraction for controllable entities. Any entity (biped, car, helicopter, etc.)
consumes a ControlInput, and any input source (keyboard, gamepad, XR controllers, AI) produces one.
ControlInput
| Field | Range | Purpose |
|---|---|---|
forward |
-1..1 | Forward/backward movement |
strafe |
-1..1 | Left/right strafe |
turn |
-1..1 | Turning |
pitch |
-1..1 | Pitch (aircraft) |
throttle |
0..1 | Continuous throttle |
jump |
0..1 | Jump |
shoot |
0..1 | Fire weapon |
sprint |
0..1 | Sprint modifier |
interact |
0..1 | Enter vehicle / pick up / use |
aim |
0..1 | Aim down sights |
cameraZoom |
-1..1 | Camera zoom |
sneak |
0|1 | Sneak toggle |
InputProvider
Any input source implements InputProvider:
interface InputProvider {
poll(deltaTime: number): ControlInput
activate?(): void
deactivate?(): void
}
CompositeInputProvider
Merges multiple providers (e.g. keyboard + XR sticks). Axes use max-abs (preserves sign), buttons use max.