7public static class EasingFunctions
12 public static float Linear(
float t) => t;
17 public static float EaseInQuad(
float t) => t * t;
22 public static float EaseOutQuad(
float t) => t * (2f - t);
27 public static float EaseInOutQuad(
float t)
30 if (t < 1f)
return 0.5f * t * t;
32 return -0.5f * (t * (t - 2f) - 1f);
38 public static float EaseInCubic(
float t) => t * t * t;
43 public static float EaseOutCubic(
float t)
46 return t * t * t + 1f;
52 public static float EaseInOutCubic(
float t)
55 if (t < 1f)
return 0.5f * t * t * t;
57 return 0.5f * (t * t * t + 2f);
63 public static float EaseInQuart(
float t) => t * t * t * t;
68 public static float EaseOutQuart(
float t)
71 return 1f - t * t * t * t;
77 public static float EaseInOutQuart(
float t)
80 if (t < 1f)
return 0.5f * t * t * t * t;
82 return -0.5f * (t * t * t * t - 2f);
88 public static float EaseInQuint(
float t) => t * t * t * t * t;
93 public static float EaseOutQuint(
float t)
96 return t * t * t * t * t + 1f;
102 public static float EaseInOutQuint(
float t)
105 if (t < 1f)
return 0.5f * t * t * t * t * t;
107 return 0.5f * (t * t * t * t * t + 2f);
113 public static float SmoothStep(
float t) => t * t * (3f - 2f * t);
118 public static float SmootherStep(
float t) => t * t * t * (t * (t * 6f - 15f) + 10f);
123 public static Func<float, float> From(EasingKind kind)
127 EasingKind.Linear => Linear,
128 EasingKind.EaseInQuad => EaseInQuad,
129 EasingKind.EaseOutQuad => EaseOutQuad,
130 EasingKind.EaseInOutQuad => EaseInOutQuad,
131 EasingKind.EaseInCubic => EaseInCubic,
132 EasingKind.EaseOutCubic => EaseOutCubic,
133 EasingKind.EaseInOutCubic => EaseInOutCubic,
134 EasingKind.EaseInQuart => EaseInQuart,
135 EasingKind.EaseOutQuart => EaseOutQuart,
136 EasingKind.EaseInOutQuart => EaseInOutQuart,
137 EasingKind.EaseInQuint => EaseInQuint,
138 EasingKind.EaseOutQuint => EaseOutQuint,
139 EasingKind.EaseInOutQuint => EaseInOutQuint,
140 EasingKind.SmoothStep => SmoothStep,
141 EasingKind.SmootherStep => SmootherStep,