diff --git a/CS2-SimpleAdminApi/QAngle_t.cs b/CS2-SimpleAdminApi/QAngle_t.cs deleted file mode 100644 index 4245728..0000000 --- a/CS2-SimpleAdminApi/QAngle_t.cs +++ /dev/null @@ -1,123 +0,0 @@ -using CounterStrikeSharp.API.Core; -using System.Numerics; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace CS2_SimpleAdminApi; - -public struct QAngle_t : IAdditionOperators, - ISubtractionOperators, - IMultiplyOperators, - IDivisionOperators -{ - public float X, Y, Z; - - public const int SIZE = 3; - - public unsafe float this[int i] - { - readonly get - { - if (i < 0 || i > SIZE) - { - throw new IndexOutOfRangeException(); - } - - fixed (void* ptr = &this) - { - return Unsafe.Read(Unsafe.Add(ptr, i)); - } - } - set - { - if (i < 0 || i > SIZE) - { - throw new IndexOutOfRangeException(); - } - - fixed (void* ptr = &this) - { - Unsafe.Write(Unsafe.Add(ptr, i), value); - } - } - } - - public QAngle_t() - { - } - - public unsafe QAngle_t(nint ptr) : this(MemoryMarshal.CreateReadOnlySpan(ref Unsafe.AsRef((void*)ptr), SIZE)) - { - } - - public QAngle_t(float x, float y, float z) - { - X = x; - Y = y; - Z = z; - } - - public QAngle_t(ReadOnlySpan values) - { - if (values.Length < SIZE) - { - throw new ArgumentOutOfRangeException(nameof(values)); - } - - this = Unsafe.ReadUnaligned(ref Unsafe.As(ref MemoryMarshal.GetReference(values))); - } - - public unsafe (Vector_t fwd, Vector_t right, Vector_t up) AngleVectors() - { - Vector_t fwd = default, right = default, up = default; - - nint pFwd = (nint)Unsafe.AsPointer(ref fwd); - nint pRight = (nint)Unsafe.AsPointer(ref right); - nint pUp = (nint)Unsafe.AsPointer(ref up); - - fixed (void* ptr = &this) - { - NativeAPI.AngleVectors((nint)ptr, pFwd, pRight, pUp); - } - - return ( fwd, right, up ); - } - - public unsafe void AngleVectors(out Vector_t fwd, out Vector_t right, out Vector_t up) - { - fixed (void* ptr = &this, pFwd = &fwd, pRight = &right, pUp = &up) - { - NativeAPI.AngleVectors((nint)ptr, (nint)pFwd, (nint)pRight, (nint)pUp); - } - } - - public readonly override string ToString() - { - return $"{X:n2} {Y:n2} {Z:n2}"; - } - - public static QAngle_t operator +(QAngle_t a, QAngle_t b) - { - return new QAngle_t(a.X + b.X, a.Y + b.Y, a.Z + b.Z); - } - - public static QAngle_t operator -(QAngle_t a, QAngle_t b) - { - return new QAngle_t(a.X - b.X, a.Y - b.Y, a.Z - b.Z); - } - - public static QAngle_t operator -(QAngle_t a) - { - return new QAngle_t(-a.X, -a.Y, -a.Z); - } - - public static QAngle_t operator *(QAngle_t a, float b) - { - return new QAngle_t(a.X * b, a.Y * b, a.Z * b); - } - - public static QAngle_t operator /(QAngle_t a, float b) - { - return new QAngle_t(a.X / b, a.Y / b, a.Z / b); - } -} \ No newline at end of file