2024-10-30 19:01:58 +03:00

63 lines
1.1 KiB
C#

namespace SWB.Base;
public struct AngPos
{
[KeyProperty] public Angles Angle { get; set; } = Angles.Zero;
[KeyProperty] public Vector3 Pos { get; set; } = Vector3.Zero;
public static readonly AngPos Zero = new();
public AngPos()
{
}
public AngPos( Angles angle, Vector3 pos )
{
Angle = angle;
Pos = pos;
}
public bool Equals( AngPos angPos )
{
return Angle == angPos.Angle && Pos == angPos.Pos;
}
public static AngPos operator +( AngPos x, AngPos y )
{
return new AngPos( x.Angle + y.Angle, x.Pos + y.Pos );
}
public static AngPos operator -( AngPos x, AngPos y )
{
return new AngPos( x.Angle - y.Angle, x.Pos - y.Pos );
}
public static AngPos operator -( AngPos x )
{
return new AngPos( x.Angle * -1, -x.Pos );
}
public static bool operator ==( AngPos x, AngPos y )
{
return x.Equals( y );
}
public static bool operator !=( AngPos x, AngPos y )
{
return !x.Equals( y );
}
public override bool Equals( object obj )
{
if ( obj is AngPos angPos )
return Equals( angPos );
return false;
}
public override int GetHashCode()
{
return Angle.GetHashCode() + Pos.GetHashCode();
}
}