Browse Source

Add spring easing

pull/8992/head
Wiesław Šoltés 4 years ago
parent
commit
78f5855b87
  1. 80
      src/Avalonia.Base/Animation/Easings/SpringEasing.cs

80
src/Avalonia.Base/Animation/Easings/SpringEasing.cs

@ -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…
Cancel
Save