3#include "plg/config.hpp"
8#if PLUGIFY_COMPILER_CLANG
9 PLUGIFY_WARN_IGNORE(
"-Wgnu-anonymous-struct")
10 PLUGIFY_WARN_IGNORE("-Wnested-anon-types")
11#elif PLUGIFY_COMPILER_GCC
12 PLUGIFY_WARN_IGNORE(
"-Wpedantic")
13#elif PLUGIFY_COMPILER_MSVC
14 PLUGIFY_WARN_IGNORE(4201)
54 float m00, m01, m02, m03;
55 float m10, m11, m12, m13;
56 float m20, m21, m22, m23;
57 float m30, m31, m32, m33;
67 constexpr
float epsilon = 1e-5f;
70 constexpr
float fabs(
float x) noexcept {
71 return x < 0 ? -x : x;
74 constexpr bool operator==(vec2 lhs, vec2 rhs) {
75 return fabs(lhs.x - rhs.x) < epsilon && fabs(lhs.y - rhs.y) < epsilon;
78 constexpr bool operator==(vec3 lhs, vec3 rhs) {
79 return fabs(lhs.x - rhs.x) < epsilon && fabs(lhs.y - rhs.y) < epsilon && fabs(lhs.z - rhs.z) < epsilon;
82 constexpr bool operator==(vec4 lhs, vec4 rhs) {
83 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;
86 constexpr bool operator==(
const mat4x4& lhs,
const mat4x4& rhs) {
87 for (
int i = 0; i < 16; ++i) {
88 if (fabs(lhs.data[i] - rhs.data[i]) > epsilon)