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); }