update method
Call each frame to translate walk-in-place cadence into movement.
Implementation
void update(double dt) {
final detector = walkInPlace;
if (detector == null) return;
final cadence = detector.cadence;
final speed = cadence >= minMoveCadence
? (cadence / 120).clamp(0.0, 1.5)
: 0.0;
// Emit only on meaningful change to avoid flooding the stream.
if ((speed - _lastMoveSpeed).abs() > 0.05 ||
(speed == 0 && _lastMoveSpeed != 0)) {
_lastMoveSpeed = speed.toDouble();
_actions.add(MoveAction(speed: _lastMoveSpeed));
}
}