I've defined our math classes like so
typedef union Vector4
{
public:
struct _Fields
{
public:
/**
This vector's X coordinate
*/
float X;
/**
This vector's Y coordinate
*/
float Y;
/**
This vector's Z coordinate
*/
float Z;
/**
This vector's W coordinate
*/
float W;
};
float Value[4];
_Fields Fields;
force_inline float X()
{
return Fields.X;
}
force_inline float X() const
{
return Fields.X;
}
force_inline void X(float value)
{
Fields.X = value;
}
...
} vec4;
You can however also add an additional field for the 3-component vector if you like, the union should do the trick