From 6c9bb11d4a1749360f1e3f11e198c92de8616efe Mon Sep 17 00:00:00 2001 From: Sarah Bradley Date: Wed, 17 Apr 2024 17:44:45 -0700 Subject: Bringing stuff from OnekoOnline --- Extensions.cs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Extensions.cs (limited to 'Extensions.cs') diff --git a/Extensions.cs b/Extensions.cs new file mode 100644 index 0000000..40eb72d --- /dev/null +++ b/Extensions.cs @@ -0,0 +1,40 @@ +using System.Numerics; + +namespace SarahEngine; + +public static class MathExtensions +{ + public static Vector2 LimitLength(this Vector2 toLimit, float lengthLimit) + { + float length = toLimit.Length(); + if (toLimit == Vector2.Zero) return Vector2.Zero; + return Vector2.Normalize(toLimit) * MathF.Min(length, lengthLimit); + } + + public static Vector2 Round(this Vector2 toRound) + { + return new(MathF.Round(toRound.X), MathF.Round(toRound.Y)); + } +} + +public static class StringExtensions +{ + public static string LimitLength(this string value, int maxLength) + { + if (string.IsNullOrEmpty(value)) return value; + return value.Length <= maxLength ? value : value[..maxLength]; + } +} + +public static class Directions +{ + public static readonly Vector2 Up = new(0,-1); + public static readonly Vector2 Down = new(0,1); + public static readonly Vector2 Left = new(-1,0); + public static readonly Vector2 Right = new(1,0); + + public static readonly Vector2 UpLeft = Vector2.Normalize(Up+Left); + public static readonly Vector2 UpRight = Vector2.Normalize(Up+Right); + public static readonly Vector2 DownLeft = Vector2.Normalize(Down+Left); + public static readonly Vector2 DownRight = Vector2.Normalize(Down+Right); +} \ No newline at end of file -- cgit