9#if PLUGIFY_COMPILER_CLANG
10 PLUGIFY_WARN_IGNORE(
"-Wgnu-anonymous-struct")
11 PLUGIFY_WARN_IGNORE("-Wnested-anon-types")
12#elif PLUGIFY_COMPILER_GCC
13 PLUGIFY_WARN_IGNORE(
"-Wpedantic")
14#elif PLUGIFY_COMPILER_MSVC
15 PLUGIFY_WARN_IGNORE(4201)
55 float m00, m01, m02, m03;
56 float m10, m11, m12, m13;
57 float m20, m21, m22, m23;
58 float m30, m31, m32, m33;
68 constexpr
float epsilon = 1e-5f;
71 constexpr
float fabs(
float x) noexcept {
72 return x < 0 ? -x : x;
75 constexpr bool operator==(vec2 lhs, vec2 rhs) {
76 return fabs(lhs.x - rhs.x) < epsilon && fabs(lhs.y - rhs.y) < epsilon;
79 constexpr bool operator==(vec3 lhs, vec3 rhs) {
80 return fabs(lhs.x - rhs.x) < epsilon && fabs(lhs.y - rhs.y) < epsilon && fabs(lhs.z - rhs.z) < epsilon;
83 constexpr bool operator==(vec4 lhs, vec4 rhs) {
84 return fabs(lhs.x - rhs.x) < epsilon && fabs(lhs.y - rhs.y) < epsilon && fabs(lhs.z - rhs.z) < epsilon && fabs(lhs.w - rhs.w) < epsilon;
87 constexpr bool operator==(
const mat4x4& lhs,
const mat4x4& rhs) {
88 for (
int i = 0; i < 16; ++i) {
89 if (fabs(lhs.data[i] - rhs.data[i]) > epsilon)