summaryrefslogtreecommitdiff
path: root/Extensions.cs
diff options
context:
space:
mode:
authorSarah Bradley <git@sarahduck.ca>2024-04-17 17:44:45 -0700
committerSarah Bradley <git@sarahduck.ca>2024-04-17 17:44:45 -0700
commit6c9bb11d4a1749360f1e3f11e198c92de8616efe (patch)
tree59c9b48342e823f36577b62c8f2442e2dd60e6c4 /Extensions.cs
parent7032958d5b38cf70c4f5b0765529a9160a4a75e9 (diff)
Bringing stuff from OnekoOnline
Diffstat (limited to 'Extensions.cs')
-rw-r--r--Extensions.cs40
1 files changed, 40 insertions, 0 deletions
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