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.