From 3e73f0b23c4e4d5a4d937f33ced03ac533dc3e5c Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Thu, 5 Sep 2024 21:22:29 +0100 Subject: [PATCH] [+] AuVecD2, AuVecD3, AuVecD4 --- Include/auROXTL/auVector.hpp | 58 ++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/Include/auROXTL/auVector.hpp b/Include/auROXTL/auVector.hpp index ecba4b3..29939ff 100644 --- a/Include/auROXTL/auVector.hpp +++ b/Include/auROXTL/auVector.hpp @@ -18,35 +18,55 @@ #if !defined(_AUHAS_GLM) static int AuMemcmp(const void *dest, const void *src, size_t n); - - template - struct AuFVec - { - float elements[N]; - inline bool operator ==(const AuFVec &other) const + template + struct AuGVec + { + T elements[N]; + + inline bool operator ==(const AuGVec &other) const { return AuMemcmp(other.elements, elements, sizeof(elements)) == 0; } - - inline float operator [](AuUInt idx) const + + inline T operator [](AuUInt idx) const { return elements[idx]; } - - inline float &operator [](AuUInt idx) + + inline T &operator [](AuUInt idx) { return elements[idx]; } }; - - using AuVec2 = AuFVec<2>; - using AuVec3 = AuFVec<3>; - using AuVec4 = AuFVec<4>; -#else - #include - using AuVec2 = glm::vec2; - using AuVec3 = glm::vec3; - using AuVec4 = glm::vec4; + template + using AuFVec = AuGVec; + + template + using AuDVec = AuGVec; + + using AuVecF2 = AuFVec<2>; + using AuVecF3 = AuFVec<3>; + using AuVecF4 = AuFVec<4>; + using AuVecD2 = AuDVec<2>; + using AuVecD3 = AuDVec<3>; + using AuVecD4 = AuDVec<4>; + using AuVec2 = AuVecF2; + using AuVec3 = AuVecF3; + using AuVec4 = AuVecF4; + +#else + + #include + using AuVecF2 = glm::vec2; + using AuVecF3 = glm::vec3; + using AuVecF4 = glm::vec4; + using AuVecD2 = glm::vec<2, double, glm::defaultp>; + using AuVecD3 = glm::vec<3, double, glm::defaultp>; + using AuVecD4 = glm::vec<4, double, glm::defaultp>; + using AuVec2 = AuVecF2; + using AuVec3 = AuVecF3; + using AuVec4 = AuVecF4; + #endif