mirror of
https://github.com/encounter/engine.git
synced 2026-03-30 11:09:55 -07:00
Adjust the SpringForce tolerance, used by Drawer and Dismissable.
They settle much faster after you fling them now.
This commit is contained in:
@@ -13,22 +13,25 @@ abstract class Force {
|
||||
class SpringForce extends Force {
|
||||
SpringForce(this.spring, {this.left: 0.0, this.right: 1.0});
|
||||
|
||||
// We overshoot the target by this distance, but stop the simulation when
|
||||
// the spring gets within this distance (regardless of how fast it's moving).
|
||||
// This causes the spring to settle a bit faster than it otherwise would.
|
||||
static final Tolerance tolerance =
|
||||
new Tolerance(velocity: double.INFINITY, distance: 0.01);
|
||||
|
||||
final SpringDescription spring;
|
||||
// Where to put the spring's resting point when releasing left or right,
|
||||
// respectively.
|
||||
final double left, right;
|
||||
|
||||
Simulation release(double position, double velocity, Direction direction) {
|
||||
// Target just past the endpoint, because the animation will stop once the
|
||||
// Spring gets within the epsilon, and we want to stop at the endpoint.
|
||||
double target = direction == Direction.reverse ?
|
||||
this.left - _kEpsilon : this.right + _kEpsilon;
|
||||
return new SpringSimulation(spring, position, target, velocity);
|
||||
this.left - tolerance.distance : this.right + tolerance.distance;
|
||||
return new SpringSimulation(spring, position, target, velocity)
|
||||
..tolerance = tolerance;
|
||||
}
|
||||
}
|
||||
|
||||
final SpringDescription _kDefaultSpringDesc =
|
||||
new SpringDescription.withDampingRatio(mass: 1.0, springConstant: 500.0, ratio: 1.0);
|
||||
final SpringForce kDefaultSpringForce = new SpringForce(_kDefaultSpringDesc);
|
||||
|
||||
const double _kEpsilon = 0.001;
|
||||
|
||||
Reference in New Issue
Block a user