| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | union v4
{
	struct
	{
		real32 x, y, z, w;
	};
	struct
	{
		v3 xyz;
	};
	struct
	{
		real32 r, g, b, a;
	};
	struct
	{
		v3 rgb;
	};
	real32 E[4];
};
 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | union v4
{
    struct
    {
        union
        {
            v3 xyz;
            struct
            {
                real32 x, y, z;
            };
        };
        
        real32 w;        
    };
    struct
    {
        union
        {
            v3 rgb;
            struct
            {
                real32 r, g, b;
            };
        };
        
        real32 a;        
    };
    real32 E[4];
};
 | 
| 1 | v4 foo = {1, 2, 3, 4};
 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | union v4
{
	struct
	{
		real32 x, y, z, w;
	};
	v3 xyz;
	v2 xy;
	struct
	{
		real32 r, g, b, a;
	};
	v3 rgb;
	real32 E[4];
};
 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | inline v3
V3(v2 XY, real32 Z)
{
    v3 Result;
    Result.x = XY.x;
    Result.y = XY.y;
    Result.z = Z;
    return(Result);
}
inline v3
ToV3(v2 XY, real32 Z)
{
    v3 Result;
    Result.xy = XY;
    Result.z = Z;
    return(Result);
}
 |