namespace Decal.Adapter.Wrappers;

public class Vector3Object
{
	private double mX;

	private double mY;

	private double mZ;

	public double X => mX;

	public double Y => mY;

	public double Z => mZ;

	public Vector3Object(double x, double y, double z)
	{
		mX = x;
		mY = y;
		mZ = z;
	}

	public override string ToString()
	{
		return "{X = " + mX + ", Y = " + mY + ", Z = " + mZ + "}";
	}

	public override bool Equals(object obj)
	{
		if (obj is Vector3Object)
		{
			Vector3Object vector3Object = (Vector3Object)obj;
			if (mX == vector3Object.mX && mY == vector3Object.mY)
			{
				return mZ == vector3Object.mZ;
			}
			return false;
		}
		return false;
	}

	public bool Equals(Vector3Object obj)
	{
		if (obj == null)
		{
			return false;
		}
		if (mX == obj.mX && mY == obj.mY)
		{
			return mZ == obj.mZ;
		}
		return false;
	}

	public override int GetHashCode()
	{
		return mX.GetHashCode() ^ mY.GetHashCode() ^ mZ.GetHashCode();
	}

	public static bool operator ==(Vector3Object a, Vector3Object b)
	{
		if (object.Equals(a, null))
		{
			return object.Equals(b, null);
		}
		return a.Equals(b);
	}

	public static bool operator !=(Vector3Object a, Vector3Object b)
	{
		return !(a == b);
	}
}
