GazePointer class

Gaze-based pointer for VR interaction (look to select). Fires a ray from the camera center forward direction.

Supports adaptive dwell timing (repeated selections of the same target become faster), a grace period that tolerates brief gaze slips, tactile haptic feedback on selection, and a richer reticle with progress feedback states.

Constructors

GazePointer({required CameraRig cameraRig, double dwellDuration = 2.0, double minDwellDuration = 0.6, double dwellAcceleration = 0.8, bool adaptiveDwell = true, double gazeGracePeriod = 0.15, bool enableHaptics = true, void onDwellSelect(String nodeId)?, void onTap(String nodeId)?, void onGazeEnter(String nodeId)?, void onGazeExit(String nodeId)?, void onDwellProgress(String nodeId, double progress)?})

Properties

adaptiveDwell ↔ bool
Whether repeated selections of the same target shrink the dwell time.
getter/setter pair
cameraRig → CameraRig
final
dwellAcceleration ↔ double
Dwell acceleration factor applied each time the same target is dwell-selected consecutively (0.8 = 20% faster each time).
getter/setter pair
dwellDuration ↔ double
Duration in seconds to dwell-select a fresh target.
getter/setter pair
dwellProgress ↔ double
Current dwell progress (0 to 1).
getter/setter pair
effectiveDwellDuration → double
The effective dwell duration currently in use (after adaptation).
no setter
enableHaptics ↔ bool
Whether to trigger subtle tactile haptic feedback on gaze enter and dwell selection.
getter/setter pair
gazeGracePeriod ↔ double
Grace period in seconds: if the gaze briefly leaves the target for less than this, the dwell timer is preserved instead of reset.
getter/setter pair
gazeTargetId → String?
ID of the node currently being gazed at.
no setter
hashCode → int
The hash code for this object.
no setterinherited
minDwellDuration ↔ double
Minimum dwell duration when adaptiveDwell accelerates repeated selections of the same target.
getter/setter pair
onDwellProgress ↔ void Function(String nodeId, double progress)?
Callback with dwell progress updates (nodeId, progress 0..1).
getter/setter pair
onDwellSelect ↔ void Function(String nodeId)?
Callback when a target is selected via dwell.
getter/setter pair
onGazeEnter ↔ void Function(String nodeId)?
Callback when gaze enters a target.
getter/setter pair
onGazeExit ↔ void Function(String nodeId)?
Callback when gaze exits a target.
getter/setter pair
onGazeSelect ↔ void Function(String nodeId)?
Alias for onDwellSelect.
getter/setter pair
onTap ↔ void Function(String nodeId)?
Callback when a target is tapped/clicked.
getter/setter pair
ray → Ray
The ray from camera center in forward direction.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
renderReticle(Canvas canvas, Size viewportSize) → void
Renders the reticle (crosshair) at screen center with dwell feedback: an accent progress ring, tick marks, and a selection flash.
resetAdaptation() → void
Resets adaptive dwell acceleration (e.g. when the scene changes).
toString() → String
A string representation of this object.
inherited
triggerTap(RaycastHit? hit) → void
Manually trigger a tap/click event on the currently gazed target.
update(double dt, String? hitNodeId, {bool dwellEnabled = true, bool allowGrace = true}) → void
Call each frame with the currently gazed node ID (or null).

Operators

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