63 lines
1.1 KiB
C#
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();
|
|||
|
}
|
|||
|
}
|