#pragma once namespace rage { template union vector2 { T data[2]; struct { T x, y; }; }; template union vector3 { T data[3]; struct { T x, y, z; }; }; template union vector4 { T data[4]; struct { T x, y, z, w; }; }; template union matrix34 { T data[3][4]; struct { struct {T x, y, z, w; } rows[3];}; }; template union matrix44 { T data[4][4]; struct { struct {T x, y, z, w; } rows[4];}; }; typedef vector2 fvector2; typedef vector3 fvector3; typedef vector4 fvector4; typedef matrix34 fmatrix34; typedef matrix44 fmatrix44; }