1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-25 22:18:34 +01:00

Added Zero, One, Linear and Clamp to Easings

This commit is contained in:
Ell 2023-08-03 11:29:51 +02:00
parent 62a7a89834
commit 2c7ffee427
2 changed files with 28 additions and 0 deletions

View file

@ -16,6 +16,7 @@ Jump to version:
### MLEM ### MLEM
Additions Additions
- Added GraphicsExtensions.WithRenderTargets, a multi-target version of WithRenderTarget - Added GraphicsExtensions.WithRenderTargets, a multi-target version of WithRenderTarget
- Added Zero, One, Linear and Clamp to Easings
Fixes Fixes
- Fixed TextInput not working correctly when using surrogate pairs - Fixed TextInput not working correctly when using surrogate pairs

View file

@ -1,4 +1,5 @@
using System; using System;
using Microsoft.Xna.Framework;
namespace MLEM.Misc { namespace MLEM.Misc {
/// <summary> /// <summary>
@ -8,6 +9,21 @@ namespace MLEM.Misc {
/// </summary> /// </summary>
public static class Easings { public static class Easings {
/// <summary>
/// An easing function that constantly returns 0, regardless of the input percentage.
/// This is useful for chaining using <see cref="AndThen(MLEM.Misc.Easings.Easing,MLEM.Misc.Easings.Easing)"/>.
/// </summary>
public static readonly Easing Zero = p => 0;
/// <summary>
/// An easing function that constantly returns 1, regardless of the input percentage.
/// This is useful for chaining using <see cref="AndThen(MLEM.Misc.Easings.Easing,MLEM.Misc.Easings.Easing)"/>.
/// </summary>
public static readonly Easing One = p => 1;
/// <summary>
/// A linear easing function that returns the input percentage without modifying it.
/// </summary>
public static readonly Easing Linear = p => p;
/// <summary>https://easings.net/#easeInSine</summary> /// <summary>https://easings.net/#easeInSine</summary>
public static readonly Easing InSine = p => 1 - (float) Math.Cos(p * Math.PI / 2); public static readonly Easing InSine = p => 1 - (float) Math.Cos(p * Math.PI / 2);
/// <summary>https://easings.net/#easeOutSine</summary> /// <summary>https://easings.net/#easeOutSine</summary>
@ -170,6 +186,17 @@ namespace MLEM.Misc {
}; };
} }
/// <summary>
/// Causes output from the easing function to be clamped between the <paramref name="min"/> and <paramref name="max"/> values passed.
/// </summary>
/// <param name="easing">The easing function to clamp.</param>
/// <param name="min">The minimum output value to clamp to, defaults to 0.</param>
/// <param name="max">The maximum output value to clamp to, defaults to 1.</param>
/// <returns>A clamped easing function.</returns>
public static Easing Clamp(this Easing easing, float min = 0, float max = 1) {
return p => MathHelper.Clamp(easing(p), min, max);
}
/// <summary> /// <summary>
/// A delegate method used by <see cref="Easings"/>. /// A delegate method used by <see cref="Easings"/>.
/// </summary> /// </summary>