aboutsummaryrefslogtreecommitdiff
path: root/core/src/Utils/Vector.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-05-26 15:31:12 -0700
committerrtk0c <[email protected]>2021-05-29 13:34:43 -0700
commitf957f4094a8d98ad0de294c3e6325ce9a860994e (patch)
treedb5caa6fbefa1699149e974448fd4dab6b2535b1 /core/src/Utils/Vector.hpp
parenta611b22650d1e40593db4fb1bce29d925e49e932 (diff)
More work on TableTemplate
Diffstat (limited to 'core/src/Utils/Vector.hpp')
-rw-r--r--core/src/Utils/Vector.hpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/core/src/Utils/Vector.hpp b/core/src/Utils/Vector.hpp
index f49965e..7e71b73 100644
--- a/core/src/Utils/Vector.hpp
+++ b/core/src/Utils/Vector.hpp
@@ -6,6 +6,15 @@ struct Vec2
T x = 0;
T y = 0;
+ template <class TTarget>
+ Vec2<TTarget> Cast() const
+ {
+ return {
+ static_cast<TTarget>(x),
+ static_cast<TTarget>(y),
+ };
+ }
+
friend constexpr bool operator==(const Vec2& a, const Vec2& b) = default;
friend constexpr Vec2 operator+(const Vec2& a, const Vec2& b) { return { a.x + b.x, a.y + b.y }; }
@@ -29,6 +38,16 @@ struct Vec3
T y = 0;
T z = 0;
+ template <class TTarget>
+ Vec3<TTarget> Cast() const
+ {
+ return {
+ static_cast<TTarget>(x),
+ static_cast<TTarget>(y),
+ static_cast<TTarget>(z),
+ };
+ }
+
friend constexpr bool operator==(const Vec3& a, const Vec3& b) = default;
friend constexpr Vec3 operator+(const Vec3& a, const Vec3& b) { return { a.x + b.x, a.y + b.y, a.z + b.z }; }
@@ -53,6 +72,17 @@ struct Vec4
T z = 0;
T w = 0;
+ template <class TTarget>
+ Vec4<TTarget> Cast() const
+ {
+ return {
+ static_cast<TTarget>(x),
+ static_cast<TTarget>(y),
+ static_cast<TTarget>(z),
+ static_cast<TTarget>(w),
+ };
+ }
+
friend constexpr bool operator==(const Vec4& a, const Vec4& b) = default;
friend constexpr Vec4 operator+(const Vec4& a, const Vec4& b) { return { a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w }; }