66 lines
981 B
C#
66 lines
981 B
C#
namespace Fermion
|
|
{
|
|
public struct Vector4
|
|
{
|
|
public float X, Y, Z, W;
|
|
|
|
public static Vector4 Zero => new Vector4(0.0f);
|
|
|
|
public Vector4(float scalar)
|
|
{
|
|
X = scalar;
|
|
Y = scalar;
|
|
Z = scalar;
|
|
W = scalar;
|
|
}
|
|
|
|
public Vector4(float x, float y, float z, float w)
|
|
{
|
|
X = x;
|
|
Y = y;
|
|
Z = z;
|
|
W = w;
|
|
}
|
|
|
|
public Vector4(Vector3 xyz, float w)
|
|
{
|
|
X = xyz.X;
|
|
Y = xyz.Y;
|
|
Z = xyz.Z;
|
|
W = w;
|
|
}
|
|
|
|
public Vector2 XY
|
|
{
|
|
get => new Vector2(X, Y);
|
|
set
|
|
{
|
|
X = value.X;
|
|
Y = value.Y;
|
|
}
|
|
}
|
|
|
|
public Vector3 XYZ
|
|
{
|
|
get => new Vector3(X, Y, Z);
|
|
set
|
|
{
|
|
X = value.X;
|
|
Y = value.Y;
|
|
Z = value.Z;
|
|
}
|
|
}
|
|
|
|
public static Vector4 operator +(Vector4 a, Vector4 b)
|
|
{
|
|
return new Vector4(a.X + b.X, a.Y + b.Y, a.Z + b.Z, a.W + b.W);
|
|
}
|
|
|
|
public static Vector4 operator *(Vector4 vector, float scalar)
|
|
{
|
|
return new Vector4(vector.X * scalar, vector.Y * scalar, vector.Z * scalar, vector.W * scalar);
|
|
}
|
|
|
|
}
|
|
}
|