Files
DanhengServer-OpenSource/Common/Util/Position.cs
2024-03-10 16:55:50 +08:00

139 lines
2.7 KiB
C#

using EggLink.DanhengServer.Proto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EggLink.DanhengServer.Util
{
public class Position
{
public int X { get; set; }
public int Y { get; set; }
public int Z { get; set; }
public Position(int x, int y, int z)
{
X = x;
Y = y;
Z = z;
}
public Position(Vector vector)
{
X = vector.X;
Y = vector.Y;
Z = vector.Z;
}
public Position()
{
X = 0;
Y = 0;
Z = 0;
}
public Position(Position position)
{
X = position.X;
Y = position.Y;
Z = position.Z;
}
public void Set(int x, int y, int z)
{
X = x;
Y = y;
Z = z;
}
public void Set(Position position)
{
X = position.X;
Y = position.Y;
Z = position.Z;
}
public void Set(Vector vector)
{
X = vector.X;
Y = vector.Y;
Z = vector.Z;
}
public void Add(int x, int y, int z)
{
X += x;
Y += y;
Z += z;
}
public void Add(Position position)
{
X += position.X;
Y += position.Y;
Z += position.Z;
}
public void Sub(int x, int y, int z)
{
X -= x;
Y -= y;
Z -= z;
}
public void Sub(Position position)
{
X -= position.X;
Y -= position.Y;
Z -= position.Z;
}
public void Mul(int x, int y, int z)
{
X *= x;
Y *= y;
Z *= z;
}
public void Mul(Position position)
{
X *= position.X;
Y *= position.Y;
Z *= position.Z;
}
public void Div(int x, int y, int z)
{
X /= x;
Y /= y;
Z /= z;
}
public void Div(Position position)
{
X /= position.X;
Y /= position.Y;
Z /= position.Z;
}
public Vector ToProto()
{
return new()
{
X = X,
Y = Y,
Z = Z
};
}
public long GetFast2dDist(Position pos)
{
long x = X - pos.X;
long z = Z - pos.Z;
return (x * x) + (z * z);
}
}
}