aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libjin/math/je_vector3.hpp14
-rw-r--r--src/libjin/math/je_vector4.hpp20
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];