DesktopInputDriver class

Desktop input driver: mouse-look, WASD locomotion, and mouse-picking.

Designed for macOS / Windows / Linux targets where no gyroscope exists. The driver is UI-toolkit agnostic: forward KeyEvents and pointer deltas from your widget tree (or use the included DesktopInputRegion wrapper), and call update every frame (VREngine does this automatically when enabled via engine.enableDesktopInput()).

final driver = engine.enableDesktopInput();

DesktopInputRegion(
  driver: driver,
  child: CustomPaint(painter: engine.monoPainter),
);

Constructors

DesktopInputDriver({required CameraRig cameraRig, double lookSensitivity = 0.0035, double moveSpeed = 3.0, double sprintMultiplier = 2.5, bool snapTurn = false, double snapTurnAngle = 0.5235987755982988, bool invertY = false, bool enabled = true, LogicalKeyboardKey keyForward = LogicalKeyboardKey.keyW, LogicalKeyboardKey keyBackward = LogicalKeyboardKey.keyS, LogicalKeyboardKey keyLeft = LogicalKeyboardKey.keyA, LogicalKeyboardKey keyRight = LogicalKeyboardKey.keyD, LogicalKeyboardKey keyUp = LogicalKeyboardKey.keyE, LogicalKeyboardKey keyDown = LogicalKeyboardKey.keyQ, LogicalKeyboardKey keySnapTurnLeft = LogicalKeyboardKey.arrowLeft, LogicalKeyboardKey keySnapTurnRight = LogicalKeyboardKey.arrowRight, LogicalKeyboardKey keyRecenter = LogicalKeyboardKey.keyR})

Properties

cameraRig CameraRig
final
enabled bool
Master switch — when false all input is ignored.
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
invertY bool
Inverts vertical mouse-look.
getter/setter pair
keyBackward LogicalKeyboardKey
getter/setter pair
keyDown LogicalKeyboardKey
getter/setter pair
keyForward LogicalKeyboardKey
getter/setter pair
keyLeft LogicalKeyboardKey
getter/setter pair
keyRecenter LogicalKeyboardKey
getter/setter pair
keyRight LogicalKeyboardKey
getter/setter pair
keySnapTurnLeft LogicalKeyboardKey
getter/setter pair
keySnapTurnRight LogicalKeyboardKey
getter/setter pair
keyUp LogicalKeyboardKey
getter/setter pair
lookSensitivity double
Mouse-look sensitivity in radians per pixel dragged.
getter/setter pair
moveSpeed double
Locomotion speed in meters per second.
getter/setter pair
pressedKeys Set<LogicalKeyboardKey>
Currently pressed movement keys (read-only view).
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
snapTurn bool
Whether snap turning is enabled (turns in discrete angles to prevent motion sickness).
getter/setter pair
snapTurnAngle double
Snap turning angle in radians (defaults to ~30° or 0.5236 rad).
getter/setter pair
sprintMultiplier double
Speed multiplier while a sprint key (Shift) is held.
getter/setter pair

Methods

handleKeyEvent(KeyEvent event) bool
Tracks a key event. Returns true if the key is managed by this driver (movement, sprint, snap-turn, or recenter keys), so the widget layer can mark it handled.
handlePointerDelta(Offset delta) → void
Applies a mouse pointer delta (in logical pixels) as camera rotation.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pick(Offset point, Size viewport, Node root, {double maxDistance = double.infinity}) RaycastHit?
Picks the nearest scene node under the mouse cursor.
recenter() → void
Recenters the camera gaze.
releaseAllKeys() → void
Releases all pressed keys (call when the window loses focus).
screenPointToRay(Offset point, Size viewport) → Ray
Unprojects a screen point (logical pixels within viewport) into a world-space ray using the monoscopic view-projection — the desktop equivalent of GazePointer.ray.
toString() String
A string representation of this object.
inherited
update(double dt) → void
Applies WASD locomotion for frame time dt (seconds). Movement is relative to the camera's yaw (ground-plane projection). Called automatically by VREngine each tick when enabled.

Operators

operator ==(Object other) bool
The equality operator.
inherited