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); } } }