forked from bit/DotRecastNetSim
60 lines
1.5 KiB
C#
60 lines
1.5 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace DotRecast.Core.Numerics
|
|
{
|
|
public struct RcVec2f
|
|
{
|
|
public float X;
|
|
public float Y;
|
|
|
|
public static RcVec2f Zero { get; } = new RcVec2f { X = 0, Y = 0 };
|
|
|
|
public RcVec2f(float x, float y)
|
|
{
|
|
X = x;
|
|
Y = y;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (!(obj is RcVec2f))
|
|
return false;
|
|
|
|
return Equals((RcVec2f)obj);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public bool Equals(RcVec2f other)
|
|
{
|
|
return X.Equals(other.X) &&
|
|
Y.Equals(other.Y);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public override int GetHashCode()
|
|
{
|
|
int hash = X.GetHashCode();
|
|
hash = RcHashCodes.CombineHashCodes(hash, Y.GetHashCode());
|
|
return hash;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static bool operator ==(RcVec2f left, RcVec2f right)
|
|
{
|
|
return left.Equals(right);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static bool operator !=(RcVec2f left, RcVec2f right)
|
|
{
|
|
return !left.Equals(right);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public override string ToString()
|
|
{
|
|
return $"{X}, {Y}";
|
|
}
|
|
}
|
|
} |