update method
Call each frame with the currently gazed node ID (or null).
Implementation
void update(double dt, String? hitNodeId) {
if (hitNodeId != _gazeTargetId) {
// Gaze changed target
if (_gazeTargetId != null) onGazeExit?.call(_gazeTargetId!);
_gazeTargetId = hitNodeId;
_gazeTimer = 0;
_selected = false;
dwellProgress = 0;
if (hitNodeId != null) onGazeEnter?.call(hitNodeId);
return;
}
if (hitNodeId == null) {
dwellProgress = 0;
return;
}
_gazeTimer += dt;
dwellProgress = (_gazeTimer / dwellDuration).clamp(0, 1);
if (dwellProgress >= 1.0 && !_selected) {
_selected = true;
onDwellSelect?.call(hitNodeId);
}
}