1 changed files with 80 additions and 0 deletions
@ -0,0 +1,80 @@ |
|||
namespace Avalonia.Animation.Easings; |
|||
|
|||
/// <summary>
|
|||
/// Eases a <see cref="double"/> value using a user-defined spring formula.
|
|||
/// </summary>
|
|||
public class SpringEasing : Easing |
|||
{ |
|||
private readonly Spring _internalSpring; |
|||
|
|||
/// <summary>
|
|||
/// The spring mass.
|
|||
/// </summary>
|
|||
public double Mass |
|||
{ |
|||
get => _internalSpring.Mass; |
|||
set |
|||
{ |
|||
_internalSpring.Mass = value; |
|||
} |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// The spring stiffness.
|
|||
/// </summary>
|
|||
public double Stiffness |
|||
{ |
|||
get => _internalSpring.Stiffness; |
|||
set |
|||
{ |
|||
_internalSpring.Stiffness = value; |
|||
} |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// The spring damping.
|
|||
/// </summary>
|
|||
public double Damping |
|||
{ |
|||
get => _internalSpring.Damping; |
|||
set |
|||
{ |
|||
_internalSpring.Damping = value; |
|||
} |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// The spring initial velocity.
|
|||
/// </summary>
|
|||
public double InitialVelocity |
|||
{ |
|||
get => _internalSpring.InitialVelocity; |
|||
set |
|||
{ |
|||
_internalSpring.InitialVelocity = value; |
|||
} |
|||
} |
|||
|
|||
public SpringEasing(double mass = 0d, double stiffness = 0d, double damping = 0d, double initialVelocity = 0d) |
|||
{ |
|||
_internalSpring = new Spring(); |
|||
|
|||
Mass = mass; |
|||
Stiffness = stiffness; |
|||
Damping = damping; |
|||
InitialVelocity = initialVelocity; |
|||
} |
|||
|
|||
public SpringEasing(Spring keySpline) |
|||
{ |
|||
_internalSpring = keySpline; |
|||
} |
|||
|
|||
public SpringEasing() |
|||
{ |
|||
_internalSpring = new Spring(); |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override double Ease(double progress) => _internalSpring.GetSpringProgress(progress); |
|||
} |
|||
Loading…
Reference in new issue