step method

bool step(
  1. double deltaTime
)

推进一帧;返回 true 表示已到达平衡位置。

Implementation

bool step(double deltaTime) {
  final operator = _springOperator;
  if (operator == null) return false;
  final dt = deltaTime.clamp(
    MiuixSpringDefaults.minFrameDeltaSeconds,
    MiuixSpringDefaults.maxFrameDeltaSeconds,
  );
  velocity = operator.updateVelocity(
    currentVelocity: velocity,
    deltaTime: dt,
    currentPosition: currentPosition,
    targetPosition: _targetPosition,
  );
  currentPosition += dt * velocity;
  if (_isAtEquilibrium()) {
    currentPosition = _targetPosition;
    velocity = 0;
    return true;
  }
  return false;
}