using System.Numerics; namespace OnekoOnline; 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 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); public static readonly Vector2[] AllDirections = [Up,Down,Left,Right,UpLeft,UpRight,DownLeft,DownRight]; }