diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libjin/math/je_vector3.hpp | 14 | ||||
-rw-r--r-- | src/libjin/math/je_vector4.hpp | 20 |
2 files changed, 28 insertions, 6 deletions
diff --git a/src/libjin/math/je_vector3.hpp b/src/libjin/math/je_vector3.hpp index 1e8f86d..b8feb1b 100644 --- a/src/libjin/math/je_vector3.hpp +++ b/src/libjin/math/je_vector3.hpp @@ -27,8 +27,18 @@ namespace JinEngine data[2] = v.data[2]; } - T &x = data[0], &y = data[1], &z = data[2]; // xyz - T &r = data[0], &g = data[1], &b = data[2]; // rgb + #define _aliases(A, B, C) \ + T& A() { return data[0]; }\ + T& B() { return data[1]; }\ + T& C() { return data[2]; }\ + T A() const { return data[0]; }\ + T B() const { return data[1]; }\ + T C() const { return data[2]; } + + _aliases(x, y, z); + _aliases(r, g, b); + + #undef _aliases private: T data[3]; diff --git a/src/libjin/math/je_vector4.hpp b/src/libjin/math/je_vector4.hpp index 02675dd..3c0079c 100644 --- a/src/libjin/math/je_vector4.hpp +++ b/src/libjin/math/je_vector4.hpp @@ -29,10 +29,22 @@ namespace JinEngine data[3] = v.data[3]; } - T &x = data[0], &y = data[1], &z = data[2], &t = data[3]; // xyzt - T &w = data[2], &h = data[3]; // xywh - T &r = data[0], &g = data[1], &b = data[2], &a = data[3]; // rgb - T &left = data[0], &right = data[1], &top = data[2], &bottom = data[3]; // lrtb + #define _aliases(A, B, C, D) \ + T& A() { return data[0]; }\ + T& B() { return data[1]; }\ + T& C() { return data[2]; }\ + T& D() { return data[3]; }\ + T A() const { return data[0]; }\ + T B() const { return data[1]; }\ + T C() const { return data[2]; }\ + T D() const { return data[3]; } + + _aliases(x, y, z, t); + _aliases(x1, y1, w, h); + _aliases(r, g, b, a); + _aliases(left, right, top, bottom); + + #undef _aliases private: T data[4]; |