namespace Decal.Adapter.Wrappers;

public class Vector4Object
{
	private double mW;

	private double mX;

	private double mY;

	private double mZ;

	public double W => mW;

	public double X => mX;

	public double Y => mY;

	public double Z => mZ;

	public Vector4Object(double w, double x, double y, double z)
	{
		mW = w;
		mX = x;
		mY = y;
		mZ = z;
	}

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

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

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

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

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

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