const PI = 3.141593
const PI_2 = 1.570796
const VEC2_LEN = 2
const VEC3_LEN = 3
const VEC4_LEN = 4
@cenum(EulerOrder::UInt16, EulerOrder_DEFAULT = 0xffff, EulerOrder_XYZ = 0x0000, EulerOrder_YZX = 0x0001, EulerOrder_ZXY = 0x0002, EulerOrder_XZY = 0x0003, EulerOrder_YXZ = 0x0004, EulerOrder_ZYX = 0x0005, EulerOrder_SXYZ = 0x0006, EulerOrder_SXYX = 0x0007, EulerOrder_SXZY = 0x0008, EulerOrder_SXZX = 0x0009, EulerOrder_SYZX = 0x000a, EulerOrder_SYZY = 0x000b, EulerOrder_SYXZ = 0x000c, EulerOrder_SYXY = 0x000d, EulerOrder_SZXY = 0x000e, EulerOrder_SZXZ = 0x000f, EulerOrder_SZYX = 0x0010, EulerOrder_SZYZ = 0x0011, EulerOrder_RZYX = 0x0012, EulerOrder_RXYX = 0x0013, EulerOrder_RYZX = 0x0014, EulerOrder_RXZX = 0x0015, EulerOrder_RXZY = 0x0016, EulerOrder_RYZY = 0x0017, EulerOrder_RZXY = 0x0018, EulerOrder_RYXY = 0x0019, EulerOrder_RYXZ = 0x001a, EulerOrder_RZXZ = 0x001b, EulerOrder_RXYZ = 0x001c, EulerOrder_RZYZ = 0x001d)
@cenum(RayIntersectionKind::Int32, RayIntersectionKind_NONE = 0, RayIntersectionKind_ENTER = 1, RayIntersectionKind_LEAVE = 2)
