diff --git a/Engine/Source/Runtime/Core/public/Math/Detail/IntVector4Decl.inl b/Engine/Source/Runtime/Core/public/Math/Detail/IntVector4Decl.inl index 46aad0f..7ef1112 100644 --- a/Engine/Source/Runtime/Core/public/Math/Detail/IntVector4Decl.inl +++ b/Engine/Source/Runtime/Core/public/Math/Detail/IntVector4Decl.inl @@ -90,7 +90,7 @@ namespace Phanes::Core::Math::Detail v1.w = comp[3]; } - static constexpr void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) + static constexpr void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) { r.x = v1.x; r.y = v1.y; diff --git a/Engine/Source/Runtime/Core/public/Math/Include.h b/Engine/Source/Runtime/Core/public/Math/Include.h index 460ac8c..7fd5077 100644 --- a/Engine/Source/Runtime/Core/public/Math/Include.h +++ b/Engine/Source/Runtime/Core/public/Math/Include.h @@ -3,6 +3,10 @@ // --- Vectors ------------------------ #include "Core/public/Math/Vector2.hpp" // <-- Includes Vector3/4 automatically +#include "Core/public/Math/Vector3.hpp" // <-- Includes Vector3/4 automatically +#include "Core/public/Math/Vector4.hpp" // <-- Includes Vector3/4 automatically + + #include "Core/public/Math/IntVector2.hpp" #include "Core/public/Math/IntVector3.hpp" #include "Core/public/Math/IntVector4.hpp" \ No newline at end of file diff --git a/Engine/Source/Runtime/Core/public/Math/IntVector2.inl b/Engine/Source/Runtime/Core/public/Math/IntVector2.inl index 6cd2d0f..64a9f59 100644 --- a/Engine/Source/Runtime/Core/public/Math/IntVector2.inl +++ b/Engine/Source/Runtime/Core/public/Math/IntVector2.inl @@ -9,181 +9,181 @@ namespace Phanes::Core::Math { - template - TIntVector2::TIntVector2(const TIntVector2& v) + template + TIntVector2::TIntVector2(const TIntVector2& v) { - Detail::construct_ivec2::value>::map(*this, v); + Detail::construct_ivec2::map(*this, v); } - template - TIntVector2::TIntVector2(const T _x, const T _y) + template + TIntVector2::TIntVector2(const T _x, const T _y) { - Detail::construct_ivec2::value>::map(*this, _x, _y); + Detail::construct_ivec2::map(*this, _x, _y); } - template - TIntVector2::TIntVector2(const T s) + template + TIntVector2::TIntVector2(const T s) { - Detail::construct_ivec2::value>::map(*this, s); + Detail::construct_ivec2::map(*this, s); } - template - TIntVector2::TIntVector2(const T* comp) + template + TIntVector2::TIntVector2(const T* comp) { - Detail::construct_ivec2::value>::map(*this, comp); + Detail::construct_ivec2::map(*this, comp); } - template - TIntVector2 operator+=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator+=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_add::value>::map(v1, v1, v2); + Detail::compute_ivec2_add::map(v1, v1, v2); return v1; } - template - TIntVector2 operator+=(TIntVector2& v1, T s) + template + TIntVector2 operator+=(TIntVector2& v1, T s) { - Detail::compute_ivec2_add::value>::map(v1, v1, s); + Detail::compute_ivec2_add::map(v1, v1, s); return v1; } - template - TIntVector2 operator-=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator-=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_sub::value>::map(v1, v1, v2); + Detail::compute_ivec2_sub::map(v1, v1, v2); return v1; } - template - TIntVector2 operator-=(TIntVector2& v1, T s) + template + TIntVector2 operator-=(TIntVector2& v1, T s) { - Detail::compute_ivec2_sub::value>::map(v1, v1, s); + Detail::compute_ivec2_sub::map(v1, v1, s); return v1; } - template - TIntVector2 operator*=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator*=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_mul::value>::map(v1, v1, v2); + Detail::compute_ivec2_mul::map(v1, v1, v2); return v1; } - template - TIntVector2 operator*=(TIntVector2& v1, T s) + template + TIntVector2 operator*=(TIntVector2& v1, T s) { - Detail::compute_ivec2_mul::value>::map(v1, v1, s); + Detail::compute_ivec2_mul::map(v1, v1, s); return v1; } - template - TIntVector2 operator/=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator/=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_div::value>::map(v1, v1, v2); + Detail::compute_ivec2_div::map(v1, v1, v2); return v1; } - template - TIntVector2 operator/=(TIntVector2& v1, T s) + template + TIntVector2 operator/=(TIntVector2& v1, T s) { - Detail::compute_ivec2_div::value>::map(v1, v1, s); + Detail::compute_ivec2_div::map(v1, v1, s); return v1; } - template - TIntVector2 operator%=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator%=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_mod::value>::map(v1, v1, v2); + Detail::compute_ivec2_mod::map(v1, v1, v2); return v1; } - template - TIntVector2 operator%=(TIntVector2& v1, T s) + template + TIntVector2 operator%=(TIntVector2& v1, T s) { - Detail::compute_ivec2_mod::value>::map(v1, v1, s); + Detail::compute_ivec2_mod::map(v1, v1, s); return v1; } - template - TIntVector2 operator+(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator+(TIntVector2& v1, const TIntVector2& v2) { - TIntVector2 r; - Detail::compute_ivec2_add::value>::map(r, v1, v2); + TIntVector2 r; + Detail::compute_ivec2_add::map(r, v1, v2); return r; } - template - TIntVector2 operator+(TIntVector2& v1, T s) + template + TIntVector2 operator+(TIntVector2& v1, T s) { - TIntVector2 r; - Detail::compute_ivec2_add::value>::map(r, v1, s); + TIntVector2 r; + Detail::compute_ivec2_add::map(r, v1, s); return r; } - template - TIntVector2 operator-(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator-(TIntVector2& v1, const TIntVector2& v2) { - TIntVector2 r; - Detail::compute_ivec2_sub::value>::map(r, v1, v2); + TIntVector2 r; + Detail::compute_ivec2_sub::map(r, v1, v2); return r; } - template - TIntVector2 operator-(TIntVector2& v1, T s) + template + TIntVector2 operator-(TIntVector2& v1, T s) { - TIntVector2 r; - Detail::compute_ivec2_sub::value>::map(r, v1, s); + TIntVector2 r; + Detail::compute_ivec2_sub::map(r, v1, s); return r; } - template - TIntVector2 operator*(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator*(TIntVector2& v1, const TIntVector2& v2) { - TIntVector2 r; - Detail::compute_ivec2_mul::value>::map(r, v1, v2); + TIntVector2 r; + Detail::compute_ivec2_mul::map(r, v1, v2); return r; } - template - TIntVector2 operator*(TIntVector2& v1, T s) + template + TIntVector2 operator*(TIntVector2& v1, T s) { - TIntVector2 r; - Detail::compute_ivec2_mul::value>::map(r, v1, s); + TIntVector2 r; + Detail::compute_ivec2_mul::map(r, v1, s); return r; } - template - TIntVector2 operator/(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator/(TIntVector2& v1, const TIntVector2& v2) { - TIntVector2 r; - Detail::compute_ivec2_div::value>::map(r, v1, v2); + TIntVector2 r; + Detail::compute_ivec2_div::map(r, v1, v2); return r; } - template - TIntVector2 operator/(TIntVector2& v1, T s) + template + TIntVector2 operator/(TIntVector2& v1, T s) { - TIntVector2 r; - Detail::compute_ivec2_div::value>::map(r, v1, s); + TIntVector2 r; + Detail::compute_ivec2_div::map(r, v1, s); return r; } - template - TIntVector2 operator%(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator%(TIntVector2& v1, const TIntVector2& v2) { - TIntVector2 r; - Detail::compute_ivec2_mod::value>::map(r, v1, v2); + TIntVector2 r; + Detail::compute_ivec2_mod::map(r, v1, v2); return r; } - template - TIntVector2 operator%(TIntVector2& v1, T s) + template + TIntVector2 operator%(TIntVector2& v1, T s) { - TIntVector2 r; - Detail::compute_ivec2_mod::value>::map(r, v1, s); + TIntVector2 r; + Detail::compute_ivec2_mod::map(r, v1, s); return r; } @@ -192,163 +192,163 @@ namespace Phanes::Core::Math // Bitwise operators - template - TIntVector2 operator&=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator&=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_and::value>::map(v1, v1, v2); + Detail::compute_ivec2_and::map(v1, v1, v2); return v1; } - template - TIntVector2 operator&=(TIntVector2& v1, T s) + template + TIntVector2 operator&=(TIntVector2& v1, T s) { - Detail::compute_ivec2_and::value>::map(v1, v1, s); + Detail::compute_ivec2_and::map(v1, v1, s); return v1; } - template - TIntVector2 operator|=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator|=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_or::value>::map(v1, v1, v2); + Detail::compute_ivec2_or::map(v1, v1, v2); return v1; } - template - TIntVector2 operator|=(TIntVector2& v1, T s) + template + TIntVector2 operator|=(TIntVector2& v1, T s) { - Detail::compute_ivec2_or::value>::map(v1, v1, s); + Detail::compute_ivec2_or::map(v1, v1, s); return v1; } - template - TIntVector2 operator^=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator^=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_xor::value>::map(v1, v1, v2); + Detail::compute_ivec2_xor::map(v1, v1, v2); return v1; } - template - TIntVector2 operator^=(TIntVector2& v1, T s) + template + TIntVector2 operator^=(TIntVector2& v1, T s) { - Detail::compute_ivec2_xor::value>::map(v1, v1, s); + Detail::compute_ivec2_xor::map(v1, v1, s); return v1; } - template - TIntVector2 operator<<=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator<<=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_left_shift::value>::map(v1, v1, v2); + Detail::compute_ivec2_left_shift::map(v1, v1, v2); return v1; } - template - TIntVector2 operator<<=(TIntVector2& v1, T s) + template + TIntVector2 operator<<=(TIntVector2& v1, T s) { - Detail::compute_ivec2_left_shift::value>::map(v1, v1, s); + Detail::compute_ivec2_left_shift::map(v1, v1, s); return v1; } - template - TIntVector2 operator>>=(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator>>=(TIntVector2& v1, const TIntVector2& v2) { - Detail::compute_ivec2_right_shift::value>::map(v1, v1, v2); + Detail::compute_ivec2_right_shift::map(v1, v1, v2); return v1; } - template - TIntVector2 operator>>=(TIntVector2& v1, T s) + template + TIntVector2 operator>>=(TIntVector2& v1, T s) { - Detail::compute_ivec2_right_shift::value>::map(v1, v1, s); + Detail::compute_ivec2_right_shift::map(v1, v1, s); return v1; } - template - TIntVector2 operator&(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator&(TIntVector2& v1, const TIntVector2& v2) { - TVector2 r; - Detail::compute_ivec2_and::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec2_and::map(r, v1, v2); return r; } - template - TIntVector2 operator&(TIntVector2& v1, T s) + template + TIntVector2 operator&(TIntVector2& v1, T s) { - TVector2 r; - Detail::compute_ivec2_and::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec2_and::map(r, v1, s); return r; } - template - TIntVector2 operator|(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator|(TIntVector2& v1, const TIntVector2& v2) { - TVector2 r; - Detail::compute_ivec2_or::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec2_or::map(r, v1, v2); return r; } - template - TIntVector2 operator|(TIntVector2& v1, T s) + template + TIntVector2 operator|(TIntVector2& v1, T s) { - TVector2 r; - Detail::compute_ivec2_or::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec2_or::map(r, v1, s); return r; } - template - TIntVector2 operator^(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator^(TIntVector2& v1, const TIntVector2& v2) { - TVector2 r; - Detail::compute_ivec2_xor::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec2_xor::map(r, v1, v2); return r; } - template - TIntVector2 operator^(TIntVector2& v1, T s) + template + TIntVector2 operator^(TIntVector2& v1, T s) { - TVector2 r; - Detail::compute_ivec2_xor::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec2_xor::map(r, v1, s); return r; } - template - TIntVector2 operator<<(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator<<(TIntVector2& v1, const TIntVector2& v2) { - TVector2 r; - Detail::compute_ivec2_left_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec2_left_shift::map(r, v1, v2); return r; } - template - TIntVector2 operator<<(TIntVector2& v1, T s) + template + TIntVector2 operator<<(TIntVector2& v1, T s) { - TVector2 r; - Detail::compute_ivec2_left_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec2_left_shift::map(r, v1, s); return r; } - template - TIntVector2 operator>>(TIntVector2& v1, const TIntVector2& v2) + template + TIntVector2 operator>>(TIntVector2& v1, const TIntVector2& v2) { - TVector2 r; - Detail::compute_ivec2_right_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec2_right_shift::map(r, v1, v2); return r; } - template - TIntVector2 operator>>(TIntVector2& v1, T s) + template + TIntVector2 operator>>(TIntVector2& v1, T s) { - TVector2 r; - Detail::compute_ivec2_right_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec2_right_shift::map(r, v1, s); return r; } - template - TIntVector2 operator~(TIntVector2& v1) + template + TIntVector2 operator~(TIntVector2& v1) { - TVector2 r; - Detail::compute_ivec2_bnot::value>::map(r, v1); + TVector2 r; + Detail::compute_ivec2_bnot::map(r, v1); return r; } @@ -356,16 +356,16 @@ namespace Phanes::Core::Math // Comparision - template - bool operator==(const TIntVector2& v1, const TIntVector2& v2) + template + bool operator==(const TIntVector2& v1, const TIntVector2& v2) { - return Detail::compute_ivec2_eq::value>::map(v1, v2); + return Detail::compute_ivec2_eq::map(v1, v2); } - template - bool operator!=(const TIntVector2& v1, const TIntVector2& v2) + template + bool operator!=(const TIntVector2& v1, const TIntVector2& v2) { - return Detail::compute_ivec2_ieq::value>::map(v1, v2); + return Detail::compute_ivec2_ieq::map(v1, v2); } @@ -373,28 +373,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TIntVector2& operator++(TIntVector2& v1) + template + TIntVector2& operator++(TIntVector2& v1) { - Detail::compute_ivec2_inc::value>::map(v1); + Detail::compute_ivec2_inc::map(v1); return v1; } - template - TIntVector2& operator--(TIntVector2& v1) + template + TIntVector2& operator--(TIntVector2& v1) { - Detail::compute_ivec2_inc::value>::map(v1); + Detail::compute_ivec2_inc::map(v1); return v1; } - template - TIntVector2& operator++(TIntVector2& v1, int) + template + TIntVector2& operator++(TIntVector2& v1, int) { return ++v1; } - template - TIntVector2& operator--(TIntVector2& v1, int) + template + TIntVector2& operator--(TIntVector2& v1, int) { return --v1; } diff --git a/Engine/Source/Runtime/Core/public/Math/IntVector3.inl b/Engine/Source/Runtime/Core/public/Math/IntVector3.inl index 26daf56..149f296 100644 --- a/Engine/Source/Runtime/Core/public/Math/IntVector3.inl +++ b/Engine/Source/Runtime/Core/public/Math/IntVector3.inl @@ -10,187 +10,187 @@ namespace Phanes::Core::Math { - template - TIntVector3::TIntVector3(const TIntVector3& v) + template + TIntVector3::TIntVector3(const TIntVector3& v) { - Detail::construct_ivec3::value>::map(*this, v); + Detail::construct_ivec3::map(*this, v); } - template - TIntVector3::TIntVector3(const T _x, const T _y, const T _z) + template + TIntVector3::TIntVector3(const T _x, const T _y, const T _z) { - Detail::construct_ivec3::value>::map(*this, _x, _y, _z); + Detail::construct_ivec3::map(*this, _x, _y, _z); } - template - TIntVector3::TIntVector3(const T s) + template + TIntVector3::TIntVector3(const T s) { - Detail::construct_ivec3::value>::map(*this, s); + Detail::construct_ivec3::map(*this, s); } - template - TIntVector3::TIntVector3(const T* comp) + template + TIntVector3::TIntVector3(const T* comp) { - Detail::construct_ivec3::value>::map(*this, comp); + Detail::construct_ivec3::map(*this, comp); } - template - TIntVector3::TIntVector3(const TIntVector2& v1, const T s) + template + TIntVector3::TIntVector3(const TIntVector2& v1, const T s) { - Detail::construct_ivec3::value>::map(*this, v1, s); + Detail::construct_ivec3::map(*this, v1, s); } - template - TIntVector3 operator+=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator+=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_add::value>::map(v1, v1, v2); + Detail::compute_ivec3_add::map(v1, v1, v2); return v1; } - template - TIntVector3 operator+=(TIntVector3& v1, T s) + template + TIntVector3 operator+=(TIntVector3& v1, T s) { - Detail::compute_ivec3_add::value>::map(v1, v1, s); + Detail::compute_ivec3_add::map(v1, v1, s); return v1; } - template - TIntVector3 operator-=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator-=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_sub::value>::map(v1, v1, v2); + Detail::compute_ivec3_sub::map(v1, v1, v2); return v1; } - template - TIntVector3 operator-=(TIntVector3& v1, T s) + template + TIntVector3 operator-=(TIntVector3& v1, T s) { - Detail::compute_ivec3_sub::value>::map(v1, v1, s); + Detail::compute_ivec3_sub::map(v1, v1, s); return v1; } - template - TIntVector3 operator*=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator*=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_mul::value>::map(v1, v1, v2); + Detail::compute_ivec3_mul::map(v1, v1, v2); return v1; } - template - TIntVector3 operator*=(TIntVector3& v1, T s) + template + TIntVector3 operator*=(TIntVector3& v1, T s) { - Detail::compute_ivec3_mul::value>::map(v1, v1, s); + Detail::compute_ivec3_mul::map(v1, v1, s); return v1; } - template - TIntVector3 operator/=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator/=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_div::value>::map(v1, v1, v2); + Detail::compute_ivec3_div::map(v1, v1, v2); return v1; } - template - TIntVector3 operator/=(TIntVector3& v1, T s) + template + TIntVector3 operator/=(TIntVector3& v1, T s) { - Detail::compute_ivec3_div::value>::map(v1, v1, s); + Detail::compute_ivec3_div::map(v1, v1, s); return v1; } - template - TIntVector3 operator%=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator%=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_mod::value>::map(v1, v1, v2); + Detail::compute_ivec3_mod::map(v1, v1, v2); return v1; } - template - TIntVector3 operator%=(TIntVector3& v1, T s) + template + TIntVector3 operator%=(TIntVector3& v1, T s) { - Detail::compute_ivec3_mod::value>::map(v1, v1, s); + Detail::compute_ivec3_mod::map(v1, v1, s); return v1; } - template - TIntVector3 operator+(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator+(TIntVector3& v1, const TIntVector3& v2) { - TIntVector3 r; - Detail::compute_ivec3_add::value>::map(r, v1, v2); + TIntVector3 r; + Detail::compute_ivec3_add::map(r, v1, v2); return r; } - template - TIntVector3 operator+(TIntVector3& v1, T s) + template + TIntVector3 operator+(TIntVector3& v1, T s) { - TIntVector3 r; - Detail::compute_ivec3_add::value>::map(r, v1, s); + TIntVector3 r; + Detail::compute_ivec3_add::map(r, v1, s); return r; } - template - TIntVector3 operator-(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator-(TIntVector3& v1, const TIntVector3& v2) { - TIntVector3 r; - Detail::compute_ivec3_sub::value>::map(r, v1, v2); + TIntVector3 r; + Detail::compute_ivec3_sub::map(r, v1, v2); return r; } - template - TIntVector3 operator-(TIntVector3& v1, T s) + template + TIntVector3 operator-(TIntVector3& v1, T s) { - TIntVector3 r; - Detail::compute_ivec3_sub::value>::map(r, v1, s); + TIntVector3 r; + Detail::compute_ivec3_sub::map(r, v1, s); return r; } - template - TIntVector3 operator*(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator*(TIntVector3& v1, const TIntVector3& v2) { - TIntVector3 r; - Detail::compute_ivec3_mul::value>::map(r, v1, v2); + TIntVector3 r; + Detail::compute_ivec3_mul::map(r, v1, v2); return r; } - template - TIntVector3 operator*(TIntVector3& v1, T s) + template + TIntVector3 operator*(TIntVector3& v1, T s) { - TIntVector3 r; - Detail::compute_ivec3_mul::value>::map(r, v1, s); + TIntVector3 r; + Detail::compute_ivec3_mul::map(r, v1, s); return r; } - template - TIntVector3 operator/(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator/(TIntVector3& v1, const TIntVector3& v2) { - TIntVector3 r; - Detail::compute_ivec3_div::value>::map(r, v1, v2); + TIntVector3 r; + Detail::compute_ivec3_div::map(r, v1, v2); return r; } - template - TIntVector3 operator/(TIntVector3& v1, T s) + template + TIntVector3 operator/(TIntVector3& v1, T s) { - TIntVector3 r; - Detail::compute_ivec3_div::value>::map(r, v1, s); + TIntVector3 r; + Detail::compute_ivec3_div::map(r, v1, s); return r; } - template - TIntVector3 operator%(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator%(TIntVector3& v1, const TIntVector3& v2) { - TIntVector3 r; - Detail::compute_ivec3_mod::value>::map(r, v1, v2); + TIntVector3 r; + Detail::compute_ivec3_mod::map(r, v1, v2); return r; } - template - TIntVector3 operator%(TIntVector3& v1, T s) + template + TIntVector3 operator%(TIntVector3& v1, T s) { - TIntVector3 r; - Detail::compute_ivec3_mod::value>::map(r, v1, s); + TIntVector3 r; + Detail::compute_ivec3_mod::map(r, v1, s); return r; } @@ -199,163 +199,163 @@ namespace Phanes::Core::Math // Bitwise operators - template - TIntVector3 operator&=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator&=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_and::value>::map(v1, v1, v2); + Detail::compute_ivec3_and::map(v1, v1, v2); return v1; } - template - TIntVector3 operator&=(TIntVector3& v1, T s) + template + TIntVector3 operator&=(TIntVector3& v1, T s) { - Detail::compute_ivec3_and::value>::map(v1, v1, s); + Detail::compute_ivec3_and::map(v1, v1, s); return v1; } - template - TIntVector3 operator|=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator|=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_or::value>::map(v1, v1, v2); + Detail::compute_ivec3_or::map(v1, v1, v2); return v1; } - template - TIntVector3 operator|=(TIntVector3& v1, T s) + template + TIntVector3 operator|=(TIntVector3& v1, T s) { - Detail::compute_ivec3_or::value>::map(v1, v1, s); + Detail::compute_ivec3_or::map(v1, v1, s); return v1; } - template - TIntVector3 operator^=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator^=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_xor::value>::map(v1, v1, v2); + Detail::compute_ivec3_xor::map(v1, v1, v2); return v1; } - template - TIntVector3 operator^=(TIntVector3& v1, T s) + template + TIntVector3 operator^=(TIntVector3& v1, T s) { - Detail::compute_ivec3_xor::value>::map(v1, v1, s); + Detail::compute_ivec3_xor::map(v1, v1, s); return v1; } - template - TIntVector3 operator<<=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator<<=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_left_shift::value>::map(v1, v1, v2); + Detail::compute_ivec3_left_shift::map(v1, v1, v2); return v1; } - template - TIntVector3 operator<<=(TIntVector3& v1, T s) + template + TIntVector3 operator<<=(TIntVector3& v1, T s) { - Detail::compute_ivec3_left_shift::value>::map(v1, v1, s); + Detail::compute_ivec3_left_shift::map(v1, v1, s); return v1; } - template - TIntVector3 operator>>=(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator>>=(TIntVector3& v1, const TIntVector3& v2) { - Detail::compute_ivec3_right_shift::value>::map(v1, v1, v2); + Detail::compute_ivec3_right_shift::map(v1, v1, v2); return v1; } - template - TIntVector3 operator>>=(TIntVector3& v1, T s) + template + TIntVector3 operator>>=(TIntVector3& v1, T s) { - Detail::compute_ivec3_right_shift::value>::map(v1, v1, s); + Detail::compute_ivec3_right_shift::map(v1, v1, s); return v1; } - template - TIntVector3 operator&(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator&(TIntVector3& v1, const TIntVector3& v2) { - TVector2 r; - Detail::compute_ivec3_and::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec3_and::map(r, v1, v2); return r; } - template - TIntVector3 operator&(TIntVector3& v1, T s) + template + TIntVector3 operator&(TIntVector3& v1, T s) { - TVector2 r; - Detail::compute_ivec3_and::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec3_and::map(r, v1, s); return r; } - template - TIntVector3 operator|(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator|(TIntVector3& v1, const TIntVector3& v2) { - TVector2 r; - Detail::compute_ivec3_or::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec3_or::map(r, v1, v2); return r; } - template - TIntVector3 operator|(TIntVector3& v1, T s) + template + TIntVector3 operator|(TIntVector3& v1, T s) { - TVector2 r; - Detail::compute_ivec3_or::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec3_or::map(r, v1, s); return r; } - template - TIntVector3 operator^(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator^(TIntVector3& v1, const TIntVector3& v2) { - TVector2 r; - Detail::compute_ivec3_xor::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec3_xor::map(r, v1, v2); return r; } - template - TIntVector3 operator^(TIntVector3& v1, T s) + template + TIntVector3 operator^(TIntVector3& v1, T s) { - TVector2 r; - Detail::compute_ivec3_xor::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec3_xor::map(r, v1, s); return r; } - template - TIntVector3 operator<<(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator<<(TIntVector3& v1, const TIntVector3& v2) { - TVector2 r; - Detail::compute_ivec3_left_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec3_left_shift::map(r, v1, v2); return r; } - template - TIntVector3 operator<<(TIntVector3& v1, T s) + template + TIntVector3 operator<<(TIntVector3& v1, T s) { - TVector2 r; - Detail::compute_ivec3_left_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec3_left_shift::map(r, v1, s); return r; } - template - TIntVector3 operator>>(TIntVector3& v1, const TIntVector3& v2) + template + TIntVector3 operator>>(TIntVector3& v1, const TIntVector3& v2) { - TVector2 r; - Detail::compute_ivec3_right_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec3_right_shift::map(r, v1, v2); return r; } - template - TIntVector3 operator>>(TIntVector3& v1, T s) + template + TIntVector3 operator>>(TIntVector3& v1, T s) { - TVector2 r; - Detail::compute_ivec3_right_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec3_right_shift::map(r, v1, s); return r; } - template - TIntVector3 operator~(TIntVector3& v1) + template + TIntVector3 operator~(TIntVector3& v1) { - TVector2 r; - Detail::compute_ivec3_bnot::value>::map(r, v1); + TVector2 r; + Detail::compute_ivec3_bnot::map(r, v1); return r; } @@ -363,16 +363,16 @@ namespace Phanes::Core::Math // Comparision - template - bool operator==(const TIntVector3& v1, const TIntVector3& v2) + template + bool operator==(const TIntVector3& v1, const TIntVector3& v2) { - return Detail::compute_ivec3_eq::value>::map(v1, v2); + return Detail::compute_ivec3_eq::map(v1, v2); } - template - bool operator!=(const TIntVector3& v1, const TIntVector3& v2) + template + bool operator!=(const TIntVector3& v1, const TIntVector3& v2) { - return Detail::compute_ivec3_ieq::value>::map(v1, v2); + return Detail::compute_ivec3_ieq::map(v1, v2); } @@ -380,28 +380,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TIntVector3& operator++(TIntVector3& v1) + template + TIntVector3& operator++(TIntVector3& v1) { - Detail::compute_ivec3_inc::value>::map(v1); + Detail::compute_ivec3_inc::map(v1); return v1; } - template - TIntVector3& operator--(TIntVector3& v1) + template + TIntVector3& operator--(TIntVector3& v1) { - Detail::compute_ivec3_inc::value>::map(v1); + Detail::compute_ivec3_inc::map(v1); return v1; } - template - TIntVector3& operator++(TIntVector3& v1, int) + template + TIntVector3& operator++(TIntVector3& v1, int) { return ++v1; } - template - TIntVector3& operator--(TIntVector3& v1, int) + template + TIntVector3& operator--(TIntVector3& v1, int) { return --v1; } diff --git a/Engine/Source/Runtime/Core/public/Math/IntVector4.hpp b/Engine/Source/Runtime/Core/public/Math/IntVector4.hpp index 037277b..e14f1ca 100644 --- a/Engine/Source/Runtime/Core/public/Math/IntVector4.hpp +++ b/Engine/Source/Runtime/Core/public/Math/IntVector4.hpp @@ -7,6 +7,7 @@ #include "Core/public/Math/SIMD/Storage.h" +#include "Core/public/Math/IntVector2.hpp" #ifndef P_DEBUG #pragma warning(disable : 4244) diff --git a/Engine/Source/Runtime/Core/public/Math/IntVector4.inl b/Engine/Source/Runtime/Core/public/Math/IntVector4.inl index e92c105..e095540 100644 --- a/Engine/Source/Runtime/Core/public/Math/IntVector4.inl +++ b/Engine/Source/Runtime/Core/public/Math/IntVector4.inl @@ -9,187 +9,187 @@ namespace Phanes::Core::Math { - template - TIntVector4::TIntVector4(const TIntVector4& v) + template + TIntVector4::TIntVector4(const TIntVector4& v) { - Detail::construct_ivec4::value>::map(*this, v); + Detail::construct_ivec4::map(*this, v); } - template - TIntVector4::TIntVector4(const T _x, const T _y, const T _z, const T _w) + template + TIntVector4::TIntVector4(const T _x, const T _y, const T _z, const T _w) { - Detail::construct_ivec4::value>::map(*this, _x, _y, _z, _w); + Detail::construct_ivec4::map(*this, _x, _y, _z, _w); } - template - TIntVector4::TIntVector4(const T s) + template + TIntVector4::TIntVector4(const T s) { - Detail::construct_ivec4::value>::map(*this, s); + Detail::construct_ivec4::map(*this, s); } - template - TIntVector4::TIntVector4(const T* comp) + template + TIntVector4::TIntVector4(const T* comp) { - Detail::construct_ivec4::value>::map(*this, comp); + Detail::construct_ivec4::map(*this, comp); } - template - TIntVector4::TIntVector4(const TIntVector2& v1, const TIntVector2& v2) + template + TIntVector4::TIntVector4(const TIntVector2& v1, const TIntVector2& v2) { - Detail::construct_ivec4::value>::map(*this, v1, v2); + Detail::construct_ivec4::map(*this, v1, v2); } - template - TIntVector4 operator+=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator+=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_add::value>::map(v1, v1, v2); + Detail::compute_ivec4_add::map(v1, v1, v2); return v1; } - template - TIntVector4 operator+=(TIntVector4& v1, T s) + template + TIntVector4 operator+=(TIntVector4& v1, T s) { - Detail::compute_ivec4_add::value>::map(v1, v1, s); + Detail::compute_ivec4_add::map(v1, v1, s); return v1; } - template - TIntVector4 operator-=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator-=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_sub::value>::map(v1, v1, v2); + Detail::compute_ivec4_sub::map(v1, v1, v2); return v1; } - template - TIntVector4 operator-=(TIntVector4& v1, T s) + template + TIntVector4 operator-=(TIntVector4& v1, T s) { - Detail::compute_ivec4_sub::value>::map(v1, v1, s); + Detail::compute_ivec4_sub::map(v1, v1, s); return v1; } - template - TIntVector4 operator*=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator*=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_mul::value>::map(v1, v1, v2); + Detail::compute_ivec4_mul::map(v1, v1, v2); return v1; } - template - TIntVector4 operator*=(TIntVector4& v1, T s) + template + TIntVector4 operator*=(TIntVector4& v1, T s) { - Detail::compute_ivec4_mul::value>::map(v1, v1, s); + Detail::compute_ivec4_mul::map(v1, v1, s); return v1; } - template - TIntVector4 operator/=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator/=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_div::value>::map(v1, v1, v2); + Detail::compute_ivec4_div::map(v1, v1, v2); return v1; } - template - TIntVector4 operator/=(TIntVector4& v1, T s) + template + TIntVector4 operator/=(TIntVector4& v1, T s) { - Detail::compute_ivec4_div::value>::map(v1, v1, s); + Detail::compute_ivec4_div::map(v1, v1, s); return v1; } - template - TIntVector4 operator%=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator%=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_mod::value>::map(v1, v1, v2); + Detail::compute_ivec4_mod::map(v1, v1, v2); return v1; } - template - TIntVector4 operator%=(TIntVector4& v1, T s) + template + TIntVector4 operator%=(TIntVector4& v1, T s) { - Detail::compute_ivec4_mod::value>::map(v1, v1, s); + Detail::compute_ivec4_mod::map(v1, v1, s); return v1; } - template - TIntVector4 operator+(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator+(TIntVector4& v1, const TIntVector4& v2) { - TIntVector4 r; - Detail::compute_ivec4_add::value>::map(r, v1, v2); + TIntVector4 r; + Detail::compute_ivec4_add::map(r, v1, v2); return r; } - template - TIntVector4 operator+(TIntVector4& v1, T s) + template + TIntVector4 operator+(TIntVector4& v1, T s) { - TIntVector4 r; - Detail::compute_ivec4_add::value>::map(r, v1, s); + TIntVector4 r; + Detail::compute_ivec4_add::map(r, v1, s); return r; } - template - TIntVector4 operator-(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator-(TIntVector4& v1, const TIntVector4& v2) { - TIntVector4 r; - Detail::compute_ivec4_sub::value>::map(r, v1, v2); + TIntVector4 r; + Detail::compute_ivec4_sub::map(r, v1, v2); return r; } - template - TIntVector4 operator-(TIntVector4& v1, T s) + template + TIntVector4 operator-(TIntVector4& v1, T s) { - TIntVector4 r; - Detail::compute_ivec4_sub::value>::map(r, v1, s); + TIntVector4 r; + Detail::compute_ivec4_sub::map(r, v1, s); return r; } - template - TIntVector4 operator*(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator*(TIntVector4& v1, const TIntVector4& v2) { - TIntVector4 r; - Detail::compute_ivec4_mul::value>::map(r, v1, v2); + TIntVector4 r; + Detail::compute_ivec4_mul::map(r, v1, v2); return r; } - template - TIntVector4 operator*(TIntVector4& v1, T s) + template + TIntVector4 operator*(TIntVector4& v1, T s) { - TIntVector4 r; - Detail::compute_ivec4_mul::value>::map(r, v1, s); + TIntVector4 r; + Detail::compute_ivec4_mul::map(r, v1, s); return r; } - template - TIntVector4 operator/(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator/(TIntVector4& v1, const TIntVector4& v2) { - TIntVector4 r; - Detail::compute_ivec4_div::value>::map(r, v1, v2); + TIntVector4 r; + Detail::compute_ivec4_div::map(r, v1, v2); return r; } - template - TIntVector4 operator/(TIntVector4& v1, T s) + template + TIntVector4 operator/(TIntVector4& v1, T s) { - TIntVector4 r; - Detail::compute_ivec4_div::value>::map(r, v1, s); + TIntVector4 r; + Detail::compute_ivec4_div::map(r, v1, s); return r; } - template - TIntVector4 operator%(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator%(TIntVector4& v1, const TIntVector4& v2) { - TIntVector4 r; - Detail::compute_ivec4_mod::value>::map(r, v1, v2); + TIntVector4 r; + Detail::compute_ivec4_mod::map(r, v1, v2); return r; } - template - TIntVector4 operator%(TIntVector4& v1, T s) + template + TIntVector4 operator%(TIntVector4& v1, T s) { - TIntVector4 r; - Detail::compute_ivec4_mod::value>::map(r, v1, s); + TIntVector4 r; + Detail::compute_ivec4_mod::map(r, v1, s); return r; } @@ -198,163 +198,163 @@ namespace Phanes::Core::Math // Bitwise operators - template - TIntVector4 operator&=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator&=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_and::value>::map(v1, v1, v2); + Detail::compute_ivec4_and::map(v1, v1, v2); return v1; } - template - TIntVector4 operator&=(TIntVector4& v1, T s) + template + TIntVector4 operator&=(TIntVector4& v1, T s) { - Detail::compute_ivec4_and::value>::map(v1, v1, s); + Detail::compute_ivec4_and::map(v1, v1, s); return v1; } - template - TIntVector4 operator|=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator|=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_or::value>::map(v1, v1, v2); + Detail::compute_ivec4_or::map(v1, v1, v2); return v1; } - template - TIntVector4 operator|=(TIntVector4& v1, T s) + template + TIntVector4 operator|=(TIntVector4& v1, T s) { - Detail::compute_ivec4_or::value>::map(v1, v1, s); + Detail::compute_ivec4_or::map(v1, v1, s); return v1; } - template - TIntVector4 operator^=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator^=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_xor::value>::map(v1, v1, v2); + Detail::compute_ivec4_xor::map(v1, v1, v2); return v1; } - template - TIntVector4 operator^=(TIntVector4& v1, T s) + template + TIntVector4 operator^=(TIntVector4& v1, T s) { - Detail::compute_ivec4_xor::value>::map(v1, v1, s); + Detail::compute_ivec4_xor::map(v1, v1, s); return v1; } - template - TIntVector4 operator<<=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator<<=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_left_shift::value>::map(v1, v1, v2); + Detail::compute_ivec4_left_shift::map(v1, v1, v2); return v1; } - template - TIntVector4 operator<<=(TIntVector4& v1, T s) + template + TIntVector4 operator<<=(TIntVector4& v1, T s) { - Detail::compute_ivec4_left_shift::value>::map(v1, v1, s); + Detail::compute_ivec4_left_shift::map(v1, v1, s); return v1; } - template - TIntVector4 operator>>=(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator>>=(TIntVector4& v1, const TIntVector4& v2) { - Detail::compute_ivec4_right_shift::value>::map(v1, v1, v2); + Detail::compute_ivec4_right_shift::map(v1, v1, v2); return v1; } - template - TIntVector4 operator>>=(TIntVector4& v1, T s) + template + TIntVector4 operator>>=(TIntVector4& v1, T s) { - Detail::compute_ivec4_right_shift::value>::map(v1, v1, s); + Detail::compute_ivec4_right_shift::map(v1, v1, s); return v1; } - template - TIntVector4 operator&(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator&(TIntVector4& v1, const TIntVector4& v2) { - TVector2 r; - Detail::compute_ivec4_and::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec4_and::map(r, v1, v2); return r; } - template - TIntVector4 operator&(TIntVector4& v1, T s) + template + TIntVector4 operator&(TIntVector4& v1, T s) { - TVector2 r; - Detail::compute_ivec4_and::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec4_and::map(r, v1, s); return r; } - template - TIntVector4 operator|(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator|(TIntVector4& v1, const TIntVector4& v2) { - TVector2 r; - Detail::compute_ivec4_or::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec4_or::map(r, v1, v2); return r; } - template - TIntVector4 operator|(TIntVector4& v1, T s) + template + TIntVector4 operator|(TIntVector4& v1, T s) { - TVector2 r; - Detail::compute_ivec4_or::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec4_or::map(r, v1, s); return r; } - template - TIntVector4 operator^(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator^(TIntVector4& v1, const TIntVector4& v2) { - TVector2 r; - Detail::compute_ivec4_xor::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec4_xor::map(r, v1, v2); return r; } - template - TIntVector4 operator^(TIntVector4& v1, T s) + template + TIntVector4 operator^(TIntVector4& v1, T s) { - TVector2 r; - Detail::compute_ivec4_xor::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec4_xor::map(r, v1, s); return r; } - template - TIntVector4 operator<<(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator<<(TIntVector4& v1, const TIntVector4& v2) { - TVector2 r; - Detail::compute_ivec4_left_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec4_left_shift::map(r, v1, v2); return r; } - template - TIntVector4 operator<<(TIntVector4& v1, T s) + template + TIntVector4 operator<<(TIntVector4& v1, T s) { - TVector2 r; - Detail::compute_ivec4_left_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec4_left_shift::map(r, v1, s); return r; } - template - TIntVector4 operator>>(TIntVector4& v1, const TIntVector4& v2) + template + TIntVector4 operator>>(TIntVector4& v1, const TIntVector4& v2) { - TVector2 r; - Detail::compute_ivec4_right_shift::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_ivec4_right_shift::map(r, v1, v2); return r; } - template - TIntVector4 operator>>(TIntVector4& v1, T s) + template + TIntVector4 operator>>(TIntVector4& v1, T s) { - TVector2 r; - Detail::compute_ivec4_right_shift::value>::map(r, v1, s); + TVector2 r; + Detail::compute_ivec4_right_shift::map(r, v1, s); return r; } - template - TIntVector4 operator~(TIntVector4& v1) + template + TIntVector4 operator~(TIntVector4& v1) { - TVector2 r; - Detail::compute_ivec4_bnot::value>::map(r, v1); + TVector2 r; + Detail::compute_ivec4_bnot::map(r, v1); return r; } @@ -362,16 +362,16 @@ namespace Phanes::Core::Math // Comparision - template - bool operator==(const TIntVector4& v1, const TIntVector4& v2) + template + bool operator==(const TIntVector4& v1, const TIntVector4& v2) { - return Detail::compute_ivec4_eq::value>::map(v1, v2); + return Detail::compute_ivec4_eq::map(v1, v2); } - template - bool operator!=(const TIntVector4& v1, const TIntVector4& v2) + template + bool operator!=(const TIntVector4& v1, const TIntVector4& v2) { - return Detail::compute_ivec4_ieq::value>::map(v1, v2); + return Detail::compute_ivec4_ieq::map(v1, v2); } @@ -379,28 +379,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TIntVector4& operator++(TIntVector4& v1) + template + TIntVector4& operator++(TIntVector4& v1) { - Detail::compute_ivec4_inc::value>::map(v1); + Detail::compute_ivec4_inc::map(v1); return v1; } - template - TIntVector4& operator--(TIntVector4& v1) + template + TIntVector4& operator--(TIntVector4& v1) { - Detail::compute_ivec4_inc::value>::map(v1); + Detail::compute_ivec4_inc::map(v1); return v1; } - template - TIntVector4& operator++(TIntVector4& v1, int) + template + TIntVector4& operator++(TIntVector4& v1, int) { return ++v1; } - template - TIntVector4& operator--(TIntVector4& v1, int) + template + TIntVector4& operator--(TIntVector4& v1, int) { return --v1; } diff --git a/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathFPU.hpp b/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathFPU.hpp index 853d748..e69de29 100644 --- a/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathFPU.hpp +++ b/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathFPU.hpp @@ -1,946 +0,0 @@ -#pragma once - -#include - -#include "Core/public/Math/SIMD/PhanesSIMDTypes.h" -#include "Core/public/Math/Boilerplate.h" -#include "Core/public/Math/MathCommon.hpp" - - -// Required includes -#include "Core/public/Math/Vector3.hpp" -#include "Core/public/Math/Vector4.hpp" - -// ========== // -// Common // -// ========== // - -namespace Phanes::Core::Math::SIMD -{ - /// - /// Adds all scalars of the vector. - /// - /// Vector - /// Sum stored in v[0:31]. - Phanes::Core::Types::Vec4f32Reg vec4_hadd(const Phanes::Core::Types::Vec4f32Reg v) - { - Phanes::Core::Types::Vec4f32Reg r; - r.data[0] = (v.data[0] + v.data[1] + v.data[2] + v.data[3]); - return r; - } - - /// - /// Adds all scalars of the vector. - /// - /// Vector - /// Sum of components. - float vec4_hadd_cvtf32(const Phanes::Core::Types::Vec4f32Reg v) - { - return (v.data[0] + v.data[1] + v.data[2] + v.data[3]); - } - - /// - /// Gets the absolute value of each scalar in the vector. - /// - /// Vector - /// Vector with all components positive. - Phanes::Core::Types::Vec4f32Reg vec4_abs(const Phanes::Core::Types::Vec4f32Reg v) - { - Phanes::Core::Types::Vec4f32Reg r; - r.data[0] = Phanes::Core::Math::Abs(v.data[0]); - r.data[1] = Phanes::Core::Math::Abs(v.data[1]); - r.data[2] = Phanes::Core::Math::Abs(v.data[2]); - r.data[3] = Phanes::Core::Math::Abs(v.data[3]); - - return r; - } - - /// - /// Gets the dot product of the - /// - /// - /// - /// - Phanes::Core::Types::Vec4f32Reg vec4_dot(const Phanes::Core::Types::Vec4f32Reg v1, const Phanes::Core::Types::Vec4f32Reg v2) - { - Phanes::Core::Types::Vec4f32Reg r; - r.data[0] = (v1.data[0] * v2.data[0] + v1.data[1] * v2.data[1] + v1.data[2] * v2.data[2] + v1.data[3] * v2.data[3]); - return r; - } - - /// - /// Gets the dot product of the - /// - /// - /// - /// - float vec4_dot_cvtf32(const Phanes::Core::Types::Vec4f32Reg v1, const Phanes::Core::Types::Vec4f32Reg v2) - { - return (v1.data[0] * v2.data[0] + v1.data[1] * v2.data[1] + v1.data[2] * v2.data[2] + v1.data[3] * v2.data[3]); - } -} - - - - -// ============ // -// TVector4 // -// ============ // - - -namespace Phanes::Core::Math::Detail -{ - // Template class has already been defined and is included through: Storage.h -> Vector4.hpp -> SIMDIntrinsics.h -> PhanesVectorMathSEE.hpp - - - template<> - struct construct_vec4 - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& v1, const TVector4& v2) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = v2.z; - v1.w = v2.w; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& v1, float s) - { - v1.x = s; - v1.y = s; - v1.z = s; - v1.w = s; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& v1, float x, float y, float z, float w) - { - v1.x = x; - v1.y = y; - v1.z = z; - v1.w = w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector2& v2, const Phanes::Core::Math::TVector2& v3) - { - v1.x = v2.x; - v1.y = v2.y; - v1.x = v3.x; - v1.y = v3.y; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& v1, const float* s) - { - v1.x = s[0]; - v1.y = s[1]; - v1.z = s[2]; - v1.w = s[3]; - - } - - }; - - - template<> - struct compute_vec4_add - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - r.x = v1.x + v2.x; - r.y = v1.y + v2.y; - r.z = v1.z + v2.z; - r.w = v1.w + v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, float s) - { - r.x = v1.x + s; - r.y = v1.y + s; - r.z = v1.z + s; - r.w = v1.w + s; - } - }; - - template<> - struct compute_vec4_sub - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - r.x = v1.x - v2.x; - r.y = v1.y - v2.y; - r.z = v1.z - v2.z; - r.w = v1.w - v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, float s) - { - r.x = v1.x - s; - r.y = v1.y - s; - r.z = v1.z - s; - r.w = v1.w - s; - } - }; - - template<> - struct compute_vec4_mul - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - r.x = v1.x * v2.x; - r.y = v1.y * v2.y; - r.z = v1.z * v2.z; - r.w = v1.w * v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, float s) - { - r.x = v1.x * s; - r.y = v1.y * s; - r.z = v1.z * s; - r.w = v1.w * s; - } - }; - - template<> - struct compute_vec4_div - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - r.x = v1.x / v2.x; - r.y = v1.y / v2.y; - r.z = v1.z / v2.z; - r.w = v1.w / v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1, float s) - { - s = 1.0f / s; - - r.x = v1.x * s; - r.y = v1.y * s; - r.z = v1.z * s; - r.w = v1.w * s; - } - }; - - template<> - struct compute_vec4_inc - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1) - { - r.x = v1.x + 1; - r.y = v1.y + 1; - r.z = v1.z + 1; - r.w = v1.w + 1; - } - }; - - template<> - struct compute_vec4_dec - { - static FORCEINLINE void map(Phanes::Core::Math::TVector4& r, const Phanes::Core::Math::TVector4& v1) - { - r.x = v1.x - 1; - r.y = v1.y - 1; - r.z = v1.z - 1; - r.w = v1.w - 1; - } - }; - - template<> - struct compute_vec4_eq - { - static FORCEINLINE bool map(const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.y - v2.y) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.z - v2.z) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.w - v2.w) < P_FLT_INAC); - } - }; - - template<> - struct compute_vec4_ieq - { - static FORCEINLINE bool map(const Phanes::Core::Math::TVector4& v1, const Phanes::Core::Math::TVector4& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.y - v2.y) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.z - v2.z) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.w - v2.w) > P_FLT_INAC); - } - }; - - - // ============ // - // TVector3 // - // ============ // - - - template<> - struct construct_vec3 - { - static FORCEINLINE void map(Phanes::Core::Math::TVector3& v1, const TVector3& v2) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = v2.z; - v1.w = 0.0f; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TVector3& v1, float s) - { - v1.x = s; - v1.y = s; - v1.z = s; - v1.w = 0.0f; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector3& v1, float x, float y, float z) - { - v1.x = x; - v1.y = y; - v1.z = z; - v1.w = 0.0f; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector3& v1, const Phanes::Core::Math::TVector2& v2, float s) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = s; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector3& v1, const float* comp) - { - v1.x = comp[0]; - v1.y = comp[1]; - v1.z = comp[2]; - v1.w = 0.0f; - - } - }; - - - - template<> struct compute_vec3_eq : public compute_vec4_eq - { - static FORCEINLINE bool map(Phanes::Core::Math::TVector3& v1, Phanes::Core::Math::TVector3& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.y - v2.y) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.z - v2.z) < P_FLT_INAC); - } - }; - - template<> struct compute_vec3_ieq : public compute_vec4_ieq - { - static FORCEINLINE bool map(Phanes::Core::Math::TVector3& v1, Phanes::Core::Math::TVector3& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.y - v2.y) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.z - v2.z) > P_FLT_INAC); - } - }; - - - template<> struct compute_vec3_add : public compute_vec4_add {}; - template<> struct compute_vec3_sub : public compute_vec4_sub {}; - template<> struct compute_vec3_mul : public compute_vec4_mul {}; - template<> struct compute_vec3_div : public compute_vec4_div {}; - template<> struct compute_vec3_inc : public compute_vec4_inc {}; - template<> struct compute_vec3_dec : public compute_vec4_dec {}; - - // ============ // - // TVector2 // - // ============ // - - - template<> - struct construct_vec2 - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - v1.x = v2.x; - v1.y = v2.y; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& v1, double s) - { - v1.x = s; - v1.y = s; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& v1, double x, double y) - { - v1.x = x; - v1.y = y; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& v1, const double* comp) - { - v1.x = comp[0]; - v1.y = comp[1]; - } - }; - - - template<> - struct compute_vec2_add - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - r.x = v1.x + v2.x; - r.y = v1.y + v2.y; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, double s) - { - r.x = v1.x + s; - r.y = v1.y + s; - } - }; - - template<> - struct compute_vec2_sub - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - r.x = v1.x - v2.x; - r.y = v1.y - v2.y; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, double s) - { - r.x = v1.x - s; - r.y = v1.y - s; - } - }; - - template<> - struct compute_vec2_mul - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - r.x = v1.x * v2.x; - r.y = v1.y * v2.y; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, double s) - { - r.x = v1.x * s; - r.y = v1.y * s; - } - }; - - template<> - struct compute_vec2_div - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - r.x = v1.x / v2.x; - r.y = v1.y / v2.y; - } - - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1, double s) - { - s = 1.0f / s; - - r.x = v1.x * s; - r.y = v1.y * s; - } - }; - - template<> - struct compute_vec2_inc - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1) - { - r.x = v1.x + 1; - r.y = v1.y + 1; - } - }; - - template<> - struct compute_vec2_dec - { - static FORCEINLINE void map(Phanes::Core::Math::TVector2& r, const Phanes::Core::Math::TVector2& v1) - { - r.x = v1.x - 1; - r.y = v1.y - 1; - } - }; - - template<> - struct compute_vec2_eq - { - static FORCEINLINE bool map(const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) < P_FLT_INAC && - Phanes::Core::Math::Abs(v1.y - v2.y) < P_FLT_INAC); - } - }; - - template<> - struct compute_vec2_ieq - { - static FORCEINLINE bool map(const Phanes::Core::Math::TVector2& v1, const Phanes::Core::Math::TVector2& v2) - { - return (Phanes::Core::Math::Abs(v1.x - v2.x) > P_FLT_INAC || - Phanes::Core::Math::Abs(v1.y - v2.y) > P_FLT_INAC); - } - }; - - - // =============== // - // TIntVector4 // - // =============== // - - template<> - struct construct_ivec4 - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& v1, const TIntVector4& v2) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = v2.z; - v1.w = v2.w; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& v1, int s) - { - v1.x = s; - v1.y = s; - v1.z = s; - v1.w = s; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& v1, int x, int y, int z, int w) - { - v1.x = x; - v1.y = y; - v1.y = z; - v1.y = w; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& v1, const int* comp) - { - v1.x = comp[0]; - v1.y = comp[1]; - v1.z = comp[2]; - v1.w = comp[3]; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.x = v1.x; - r.y = v1.y; - r.x = v2.x; - r.y = v2.y; - } - }; - - template<> - struct compute_ivec4_add - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x + v2.x; - r.y = v1.y + v2.y; - r.z = v1.z + v2.z; - r.w = v1.w + v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x + s; - r.y = v1.y + s; - r.z = v1.z + s; - r.w = v1.w + s; - } - }; - - template<> - struct compute_ivec4_sub - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x - v2.x; - r.y = v1.y - v2.y; - r.z = v1.z - v2.z; - r.w = v1.w - v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x - s; - r.y = v1.y - s; - r.z = v1.z - s; - r.w = v1.w - s; - } - }; - - template<> - struct compute_ivec4_mul - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x * v2.x; - r.y = v1.y * v2.y; - r.z = v1.z * v2.z; - r.w = v1.w * v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x * s; - r.y = v1.y * s; - r.z = v1.z * s; - r.w = v1.w * s; - } - }; - - template<> - struct compute_ivec4_inc - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1) - { - r.x = v1.x + 1; - r.y = v1.y + 1; - r.z = v1.z + 1; - r.w = v1.w + 1; - } - }; - - template<> - struct compute_ivec4_dec - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1) - { - r.x = v1.x - 1; - r.y = v1.y - 1; - r.z = v1.z - 1; - r.w = v1.w - 1; - } - }; - - template<> - struct compute_ivec4_and - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x & v2.x; - r.y = v1.y & v2.y; - r.z = v1.z & v2.z; - r.w = v1.w & v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x & s; - r.y = v1.y & s; - r.z = v1.z & s; - r.w = v1.w & s; - } - }; - - template<> - struct compute_ivec4_or - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x | v2.x; - r.y = v1.y | v2.y; - r.z = v1.z | v2.z; - r.w = v1.w | v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x | s; - r.y = v1.y | s; - r.z = v1.z | s; - r.w = v1.w | s; - } - }; - - template<> - struct compute_ivec4_xor - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x ^ v2.x; - r.y = v1.y ^ v2.y; - r.z = v1.z ^ v2.z; - r.w = v1.w ^ v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x ^ s; - r.y = v1.y ^ s; - r.z = v1.z ^ s; - r.w = v1.w ^ s; - } - }; - - template<> - struct compute_ivec4_left_shift - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x << v2.x; - r.y = v1.y << v2.y; - r.z = v1.z << v2.z; - r.w = v1.w << v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x << s; - r.y = v1.y << s; - r.z = v1.z << s; - r.w = v1.w << s; - } - }; - - template<> - struct compute_ivec4_right_shift - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, const Phanes::Core::Math::TIntVector4& v2) - { - r.x = v1.x >> v2.x; - r.y = v1.y >> v2.y; - r.z = v1.z >> v2.z; - r.w = v1.w >> v2.w; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector4& r, const Phanes::Core::Math::TIntVector4& v1, int s) - { - r.x = v1.x >> s; - r.y = v1.y >> s; - r.z = v1.z >> s; - r.w = v1.w >> s; - } - }; - - - // =============== // - // TIntVector3 // - // =============== // - - - template<> - struct construct_ivec3 - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector3& v1, const TIntVector3& v2) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = v2.z; - v1.w = (T)0; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector3& v1, int s) - { - v1.x = s; - v1.y = s; - v1.z = s; - v1.w = (T)0; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector3& v1, int x, int y, int z) - { - v1.x = x; - v1.y = y; - v1.y = z; - v1.w = (T)0; - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector3& v1, const int* comp) - { - v1.x = comp[0]; - v1.y = comp[1]; - v1.z = comp[2]; - v1.w = (T)0; - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector3& r, const Phanes::Core::Math::TIntVector2& v1, const int s) - { - v1.x = v2.x; - v1.y = v2.y; - v1.z = s; - v1.w = (T)0; - } - }; - - - template<> struct compute_ivec3_add : public compute_ivec4_add {}; - template<> struct compute_ivec3_sub : public compute_ivec4_sub {}; - template<> struct compute_ivec3_mul : public compute_ivec4_mul {}; - template<> struct compute_ivec3_div : public compute_ivec4_div {}; - template<> struct compute_ivec3_inc : public compute_ivec4_inc {}; - template<> struct compute_ivec3_dec : public compute_ivec4_dec {}; - - - template<> struct compute_ivec3_and : public compute_ivec4_and {}; - template<> struct compute_ivec3_or : public compute_ivec4_or {}; - template<> struct compute_ivec3_xor : public compute_ivec4_xor {}; - template<> struct compute_ivec3_left_shift : public compute_ivec4_left_shift {}; - template<> struct compute_ivec3_right_shift : public compute_ivec4_right_shift {}; - - - // =============== // - // TIntVector2 // - // =============== // - - template<> - struct construct_ivec2 - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, const TIntVector2& v2) - { - v1.comp = _mm_setr_epi64x(v2.x, v2.y); - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) - { - v1.comp = _mm_set1_epi64x(s); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 x, Phanes::Core::Types::int64 y) - { - v1.comp = _mm_setr_epi64x(x, y); - } - - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Types::int64* comp) - { - v1.comp = _mm_loadu_epi64(comp); - } - }; - - template<> - struct compute_ivec2_add - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_add_epi64(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_add_epi64(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_sub - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_sub_epi64(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_sub_epi64(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_inc - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1) - { - r.comp = _mm_add_epi64(v1.comp, _mm_set1_epi64x(1)); - } - }; - - template<> - struct compute_ivec2_dec - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1) - { - r.comp = _mm_sub_epi64(v1.comp, _mm_set1_epi64x(1)); - } - }; - - template<> - struct compute_ivec2_and - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_and_si128(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_and_si128(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_or - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_or_si128(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_or_si128(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_xor - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_xor_si128(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_xor_si128(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_left_shift - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_sll_epi64(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_sll_epi64(v1.comp, _mm_set1_epi64x(s)); - } - }; - - template<> - struct compute_ivec2_right_shift - { - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, const Phanes::Core::Math::TIntVector2& v2) - { - r.comp = _mm_srl_epi64(v1.comp, v2.comp); - } - - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) - { - r.comp = _mm_srl_epi64(v1.comp, _mm_set1_epi64x(s)); - } - }; - -} \ No newline at end of file diff --git a/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathSSE.hpp b/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathSSE.hpp index 440f5dd..c3ddc84 100644 --- a/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathSSE.hpp +++ b/Engine/Source/Runtime/Core/public/Math/SIMD/PhanesVectorMathSSE.hpp @@ -7,10 +7,15 @@ #include "Core/public/Math/MathCommon.hpp" -// Required includes +#include "Core/public/Math/Vector2.hpp" #include "Core/public/Math/Vector3.hpp" #include "Core/public/Math/Vector4.hpp" +#include "Core/public/Math/IntVector2.hpp" +#include "Core/public/Math/IntVector3.hpp" +#include "Core/public/Math/IntVector4.hpp" + + // ========== // // Common // // ========== // @@ -576,7 +581,7 @@ namespace Phanes::Core::Math::Detail { static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, const TIntVector2& v2) { - v1.comp = _mm_setr_epi64x(v2.x, v2.y); + v1.comp = _mm_set_epi64x(v2.y, v2.x); } @@ -587,7 +592,7 @@ namespace Phanes::Core::Math::Detail static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 x, Phanes::Core::Types::int64 y) { - v1.comp = _mm_setr_epi64x(x, y); + v1.comp = _mm_set_epi64x(y, x); } @@ -605,7 +610,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_add_epi64(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_add_epi64(v1.comp, _mm_set1_epi64x(s)); } @@ -619,7 +624,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_sub_epi64(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_sub_epi64(v1.comp, _mm_set1_epi64x(s)); } @@ -651,7 +656,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_and_si128(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_and_si128(v1.comp, _mm_set1_epi64x(s)); } @@ -665,7 +670,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_or_si128(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_or_si128(v1.comp, _mm_set1_epi64x(s)); } @@ -679,7 +684,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_xor_si128(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_xor_si128(v1.comp, _mm_set1_epi64x(s)); } @@ -693,7 +698,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_sll_epi64(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_sll_epi64(v1.comp, _mm_set1_epi64x(s)); } @@ -707,7 +712,7 @@ namespace Phanes::Core::Math::Detail r.comp = _mm_srl_epi64(v1.comp, v2.comp); } - static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, T s) + static FORCEINLINE void map(Phanes::Core::Math::TIntVector2& r, const Phanes::Core::Math::TIntVector2& v1, Phanes::Core::Types::int64 s) { r.comp = _mm_srl_epi64(v1.comp, _mm_set1_epi64x(s)); } diff --git a/Engine/Source/Runtime/Core/public/Math/SIMD/SIMDIntrinsics.h b/Engine/Source/Runtime/Core/public/Math/SIMD/SIMDIntrinsics.h index 6784627..e37d255 100644 --- a/Engine/Source/Runtime/Core/public/Math/SIMD/SIMDIntrinsics.h +++ b/Engine/Source/Runtime/Core/public/Math/SIMD/SIMDIntrinsics.h @@ -11,7 +11,5 @@ # include "PhanesVectorMathSSE.hpp" #elif P_INTRINSICS == P_INTRINSICS_NEON # include "PhanesVectorMathNeon.hpp" -#elif P_INTRINSICS == P_INTRINSICS_FPU -# include "PhanesVectorMathFPU.hpp" #endif diff --git a/Engine/Source/Runtime/Core/public/Math/Vector2.inl b/Engine/Source/Runtime/Core/public/Math/Vector2.inl index afe1db0..82e1e08 100644 --- a/Engine/Source/Runtime/Core/public/Math/Vector2.inl +++ b/Engine/Source/Runtime/Core/public/Math/Vector2.inl @@ -11,165 +11,165 @@ namespace Phanes::Core::Math { - template - TVector2::TVector2(const TVector2& v) + template + TVector2::TVector2(const TVector2& v) { - Detail::construct_vec2::value>::map(*this, v); + Detail::construct_vec2::map(*this, v); } - template - TVector2::TVector2(Real _x, Real _y) + template + TVector2::TVector2(Real _x, Real _y) { - Detail::construct_vec2::value>::map(*this, _x, _y); + Detail::construct_vec2::map(*this, _x, _y); } - template - TVector2::TVector2(Real s) + template + TVector2::TVector2(Real s) { - Detail::construct_vec2::value>::map(*this, s); + Detail::construct_vec2::map(*this, s); } - template - TVector2::TVector2(const Real* comp) + template + TVector2::TVector2(const Real* comp) { - Detail::construct_vec2::value>::map(*this, comp); + Detail::construct_vec2::map(*this, comp); } - template - TVector2 operator+=(TVector2& v1, const TVector2& v2) + template + TVector2 operator+=(TVector2& v1, const TVector2& v2) { - Detail::compute_vec2_add::value>::map(v1, v1, v2); + Detail::compute_vec2_add::map(v1, v1, v2); return v1; } - template - TVector2 operator+=(TVector2& v1, T s) + template + TVector2 operator+=(TVector2& v1, T s) { - Detail::compute_vec2_add::value>::map(v1, v1, s); + Detail::compute_vec2_add::map(v1, v1, s); return v1; } - template - TVector2 operator-=(TVector2& v1, const TVector2& v2) + template + TVector2 operator-=(TVector2& v1, const TVector2& v2) { - Detail::compute_vec2_sub::value>::map(v1, v1, v2); + Detail::compute_vec2_sub::map(v1, v1, v2); return v1; } - template - TVector2 operator-=(TVector2& v1, T s) + template + TVector2 operator-=(TVector2& v1, T s) { - Detail::compute_vec2_sub::value>::map(v1, v1, s); + Detail::compute_vec2_sub::map(v1, v1, s); return v1; } - template - TVector2 operator*=(TVector2& v1, const TVector2& v2) + template + TVector2 operator*=(TVector2& v1, const TVector2& v2) { - Detail::compute_vec2_mul::value>::map(v1, v1, v2); + Detail::compute_vec2_mul::map(v1, v1, v2); return v1; } - template - TVector2 operator*=(TVector2& v1, T s) + template + TVector2 operator*=(TVector2& v1, T s) { - Detail::compute_vec2_mul::value>::map(v1, v1, s); + Detail::compute_vec2_mul::map(v1, v1, s); return v1; } - template - TVector2 operator/=(TVector2& v1, const TVector2& v2) + template + TVector2 operator/=(TVector2& v1, const TVector2& v2) { - Detail::compute_vec2_div::value>::map(v1, v1, v2); + Detail::compute_vec2_div::map(v1, v1, v2); return v1; } - template - TVector2 operator/=(TVector2& v1, T s) + template + TVector2 operator/=(TVector2& v1, T s) { - Detail::compute_vec2_div::value>::map(v1, v1, s); + Detail::compute_vec2_div::map(v1, v1, s); return v1; } - template - TVector2 operator+(TVector2& v1, const TVector2& v2) + template + TVector2 operator+(TVector2& v1, const TVector2& v2) { - TVector2 r; - Detail::compute_vec2_add::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_vec2_add::map(r, v1, v2); return r; } - template - TVector2 operator+(TVector2& v1, T s) + template + TVector2 operator+(TVector2& v1, T s) { - TVector2 r; - Detail::compute_vec2_add::value>::map(r, v1, s); + TVector2 r; + Detail::compute_vec2_add::map(r, v1, s); return r; } - template - TVector2 operator-(TVector2& v1, const TVector2& v2) + template + TVector2 operator-(TVector2& v1, const TVector2& v2) { - TVector2 r; - Detail::compute_vec2_sub::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_vec2_sub::map(r, v1, v2); return r; } - template - TVector2 operator-(TVector2& v1, T s) + template + TVector2 operator-(TVector2& v1, T s) { - TVector2 r; - Detail::compute_vec2_sub::value>::map(r, v1, s); + TVector2 r; + Detail::compute_vec2_sub::map(r, v1, s); return r; } - template - TVector2 operator*(TVector2& v1, const TVector2& v2) + template + TVector2 operator*(TVector2& v1, const TVector2& v2) { - TVector2 r; - Detail::compute_vec2_mul::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_vec2_mul::map(r, v1, v2); return r; } - template - TVector2 operator*(TVector2& v1, T s) + template + TVector2 operator*(TVector2& v1, T s) { - TVector2 r; - Detail::compute_vec2_mul::value>::map(r, v1, s); + TVector2 r; + Detail::compute_vec2_mul::map(r, v1, s); return r; } - template - TVector2 operator/(TVector2& v1, const TVector2& v2) + template + TVector2 operator/(TVector2& v1, const TVector2& v2) { - TVector2 r; - Detail::compute_vec2_div::value>::map(r, v1, v2); + TVector2 r; + Detail::compute_vec2_div::map(r, v1, v2); return r; } - template - TVector2 operator/(TVector2& v1, T s) + template + TVector2 operator/(TVector2& v1, T s) { - TVector2 r; - Detail::compute_vec2_div::value>::map(r, v1, s); + TVector2 r; + Detail::compute_vec2_div::map(r, v1, s); return r; } // Comparision - template - bool operator==(const TVector2& v1, const TVector2& v2) + template + bool operator==(const TVector2& v1, const TVector2& v2) { - return Detail::compute_vec2_eq::value>::map(v1, v2); + return Detail::compute_vec2_eq::map(v1, v2); } - template - bool operator!=(const TVector2& v1, const TVector2& v2) + template + bool operator!=(const TVector2& v1, const TVector2& v2) { - return Detail::compute_vec2_ieq::value>::map(v1, v2); + return Detail::compute_vec2_ieq::map(v1, v2); } @@ -177,28 +177,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TVector2& operator++(TVector2& v1) + template + TVector2& operator++(TVector2& v1) { - Detail::compute_vec2_inc::value>::map(v1); + Detail::compute_vec2_inc::map(v1); return v1; } - template - TVector2& operator--(TVector2& v1) + template + TVector2& operator--(TVector2& v1) { - Detail::compute_vec2_inc::value>::map(v1); + Detail::compute_vec2_inc::map(v1); return v1; } - template - TVector2& operator++(TVector2& v1, int) + template + TVector2& operator++(TVector2& v1, int) { return ++v1; } - template - TVector2& operator--(TVector2& v1, int) + template + TVector2& operator--(TVector2& v1, int) { return --v1; } diff --git a/Engine/Source/Runtime/Core/public/Math/Vector3.inl b/Engine/Source/Runtime/Core/public/Math/Vector3.inl index 3d82ee2..6702ac1 100644 --- a/Engine/Source/Runtime/Core/public/Math/Vector3.inl +++ b/Engine/Source/Runtime/Core/public/Math/Vector3.inl @@ -11,171 +11,171 @@ namespace Phanes::Core::Math { - template - TVector3::TVector3(const TVector3& v) + template + TVector3::TVector3(const TVector3& v) { - Detail::construct_vec3::value>::map(*this, v); + Detail::construct_vec3::map(*this, v); } - template - TVector3::TVector3(Real _x, Real _y, Real _z) + template + TVector3::TVector3(Real _x, Real _y, Real _z) { - Detail::construct_vec3::value>::map(*this, _x, _y, _z); + Detail::construct_vec3::map(*this, _x, _y, _z); } - template - TVector3::TVector3(Real s) + template + TVector3::TVector3(Real s) { - Detail::construct_vec3::value>::map(*this, s); + Detail::construct_vec3::map(*this, s); } - template - TVector3::TVector3(const TVector2& v1, Real s) + template + TVector3::TVector3(const TVector2& v1, Real s) { - Detail::construct_vec3::value>::map(*this, v1, s); + Detail::construct_vec3::map(*this, v1, s); } - template - TVector3::TVector3(const Real* comp) + template + TVector3::TVector3(const Real* comp) { - Detail::construct_vec3::value>::map(*this, comp); + Detail::construct_vec3::map(*this, comp); } - template - TVector3 operator+=(TVector3& v1, const TVector3& v2) + template + TVector3 operator+=(TVector3& v1, const TVector3& v2) { - Detail::compute_vec3_add::value>::map(v1, v1, v2); + Detail::compute_vec3_add::map(v1, v1, v2); return v1; } - template - TVector3 operator+=(TVector3& v1, T s) + template + TVector3 operator+=(TVector3& v1, T s) { - Detail::compute_vec3_add::value>::map(v1, v1, s); + Detail::compute_vec3_add::map(v1, v1, s); return v1; } - template - TVector3 operator-=(TVector3& v1, const TVector3& v2) + template + TVector3 operator-=(TVector3& v1, const TVector3& v2) { - Detail::compute_vec3_sub::value>::map(v1, v1, v2); + Detail::compute_vec3_sub::map(v1, v1, v2); return v1; } - template - TVector3 operator-=(TVector3& v1, T s) + template + TVector3 operator-=(TVector3& v1, T s) { - Detail::compute_vec3_sub::value>::map(v1, v1, s); + Detail::compute_vec3_sub::map(v1, v1, s); return v1; } - template - TVector3 operator*=(TVector3& v1, const TVector3& v2) + template + TVector3 operator*=(TVector3& v1, const TVector3& v2) { - Detail::compute_vec3_mul::value>::map(v1, v1, v2); + Detail::compute_vec3_mul::map(v1, v1, v2); return v1; } - template - TVector3 operator*=(TVector3& v1, T s) + template + TVector3 operator*=(TVector3& v1, T s) { - Detail::compute_vec3_mul::value>::map(v1, v1, s); + Detail::compute_vec3_mul::map(v1, v1, s); return v1; } - template - TVector3 operator/=(TVector3& v1, const TVector3& v2) + template + TVector3 operator/=(TVector3& v1, const TVector3& v2) { - Detail::compute_vec3_div::value>::map(v1, v1, v2); + Detail::compute_vec3_div::map(v1, v1, v2); return v1; } - template - TVector3 operator/=(TVector3& v1, T s) + template + TVector3 operator/=(TVector3& v1, T s) { - Detail::compute_vec3_div::value>::map(v1, v1, s); + Detail::compute_vec3_div::map(v1, v1, s); return v1; } - template - TVector3 operator+(TVector3& v1, const TVector3& v2) + template + TVector3 operator+(TVector3& v1, const TVector3& v2) { - TVector3 r; - Detail::compute_vec3_add::value>::map(r, v1, v2); + TVector3 r; + Detail::compute_vec3_add::map(r, v1, v2); return r; } - template - TVector3 operator+(TVector3& v1, T s) + template + TVector3 operator+(TVector3& v1, T s) { - TVector3 r; - Detail::compute_vec3_add::value>::map(r, v1, s); + TVector3 r; + Detail::compute_vec3_add::map(r, v1, s); return r; } - template - TVector3 operator-(TVector3& v1, const TVector3& v2) + template + TVector3 operator-(TVector3& v1, const TVector3& v2) { - TVector3 r; - Detail::compute_vec3_sub::value>::map(r, v1, v2); + TVector3 r; + Detail::compute_vec3_sub::map(r, v1, v2); return r; } - template - TVector3 operator-(TVector3& v1, T s) + template + TVector3 operator-(TVector3& v1, T s) { - TVector3 r; - Detail::compute_vec3_sub::value>::map(r, v1, s); + TVector3 r; + Detail::compute_vec3_sub::map(r, v1, s); return r; } - template - TVector3 operator*(TVector3& v1, const TVector3& v2) + template + TVector3 operator*(TVector3& v1, const TVector3& v2) { - TVector3 r; - Detail::compute_vec3_mul::value>::map(r, v1, v2); + TVector3 r; + Detail::compute_vec3_mul::map(r, v1, v2); return r; } - template - TVector3 operator*(TVector3& v1, T s) + template + TVector3 operator*(TVector3& v1, T s) { - TVector3 r; - Detail::compute_vec3_mul::value>::map(r, v1, s); + TVector3 r; + Detail::compute_vec3_mul::map(r, v1, s); return r; } - template - TVector3 operator/(TVector3& v1, const TVector3& v2) + template + TVector3 operator/(TVector3& v1, const TVector3& v2) { - TVector3 r; - Detail::compute_vec3_div::value>::map(r, v1, v2); + TVector3 r; + Detail::compute_vec3_div::map(r, v1, v2); return r; } - template - TVector3 operator/(TVector3& v1, T s) + template + TVector3 operator/(TVector3& v1, T s) { - TVector3 r; - Detail::compute_vec3_div::value>::map(r, v1, s); + TVector3 r; + Detail::compute_vec3_div::map(r, v1, s); return r; } // Comparision - template - bool operator==(const TVector3& v1, const TVector3& v2) + template + bool operator==(const TVector3& v1, const TVector3& v2) { - return Detail::compute_vec3_eq::value>::map(v1, v2); + return Detail::compute_vec3_eq::map(v1, v2); } - template - bool operator!=(const TVector3& v1, const TVector3& v2) + template + bool operator!=(const TVector3& v1, const TVector3& v2) { - return Detail::compute_vec3_ieq::value>::map(v1, v2); + return Detail::compute_vec3_ieq::map(v1, v2); } @@ -183,28 +183,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TVector3& operator++(TVector3& v1) + template + TVector3& operator++(TVector3& v1) { - Detail::compute_vec3_inc::value>::map(v1); + Detail::compute_vec3_inc::map(v1); return v1; } - template - TVector3& operator--(TVector3& v1) + template + TVector3& operator--(TVector3& v1) { - Detail::compute_vec3_inc::value>::map(v1); + Detail::compute_vec3_inc::map(v1); return v1; } - template - TVector3& operator++(TVector3& v1, int) + template + TVector3& operator++(TVector3& v1, int) { return ++v1; } - template - TVector3& operator--(TVector3& v1, int) + template + TVector3& operator--(TVector3& v1, int) { return --v1; } diff --git a/Engine/Source/Runtime/Core/public/Math/Vector4.inl b/Engine/Source/Runtime/Core/public/Math/Vector4.inl index f39d685..1b1a2db 100644 --- a/Engine/Source/Runtime/Core/public/Math/Vector4.inl +++ b/Engine/Source/Runtime/Core/public/Math/Vector4.inl @@ -10,169 +10,169 @@ namespace Phanes::Core::Math { - template - TVector4::TVector4(const TVector4& v) + template + TVector4::TVector4(const TVector4& v) { - Detail::construct_vec4::value>::map(*this, v); + Detail::construct_vec4::map(*this, v); } - template - TVector4::TVector4(Real _x, Real _y, Real _z, Real _w) + template + TVector4::TVector4(Real _x, Real _y, Real _z, Real _w) { - Detail::construct_vec4::value>::map(*this, _x, _y, _z, _w); + Detail::construct_vec4::map(*this, _x, _y, _z, _w); } - template - Phanes::Core::Math::TVector4::TVector4(Real s) + template + Phanes::Core::Math::TVector4::TVector4(Real s) { - Detail::construct_vec4::value>::map(*this, s); + Detail::construct_vec4::map(*this, s); } - template - Phanes::Core::Math::TVector4::TVector4(const TVector2& v1, const TVector2& v2) + template + Phanes::Core::Math::TVector4::TVector4(const TVector2& v1, const TVector2& v2) { - Detail::construct_vec4::value>::map(*this, v1, v2); + Detail::construct_vec4::map(*this, v1, v2); } - template - Phanes::Core::Math::TVector4::TVector4(const Real* comp) + template + Phanes::Core::Math::TVector4::TVector4(const Real* comp) { - Detail::construct_vec4::value>::map(*this, comp); + Detail::construct_vec4::map(*this, comp); } - template - TVector4 operator+=(TVector4& v1, const TVector4& v2) + template + TVector4 operator+=(TVector4& v1, const TVector4& v2) { - Detail::compute_vec4_add::value>::map(v1, v1, v2); + Detail::compute_vec4_add::map(v1, v1, v2); return v1; } - template - TVector4 operator+=(TVector4& v1, T s) + template + TVector4 operator+=(TVector4& v1, T s) { - Detail::compute_vec4_add::value>::map(v1, v1, s); + Detail::compute_vec4_add::map(v1, v1, s); return v1; } - template - TVector4 operator-=(TVector4& v1, const TVector4& v2) + template + TVector4 operator-=(TVector4& v1, const TVector4& v2) { - Detail::compute_vec4_sub::value>::map(v1, v1, v2); + Detail::compute_vec4_sub::map(v1, v1, v2); return v1; } - template - TVector4 operator-=(TVector4& v1, T s) + template + TVector4 operator-=(TVector4& v1, T s) { - Detail::compute_vec4_sub::value>::map(v1, v1, s); + Detail::compute_vec4_sub::map(v1, v1, s); return v1; } - template - TVector4 operator*=(TVector4& v1, const TVector4& v2) + template + TVector4 operator*=(TVector4& v1, const TVector4& v2) { - Detail::compute_vec4_mul::value>::map(v1, v1, v2); + Detail::compute_vec4_mul::map(v1, v1, v2); return v1; } - template - TVector4 operator*=(TVector4& v1, T s) + template + TVector4 operator*=(TVector4& v1, T s) { - Detail::compute_vec4_mul::value>::map(v1, v1, s); + Detail::compute_vec4_mul::map(v1, v1, s); return v1; } - template - TVector4 operator/=(TVector4& v1, const TVector4& v2) + template + TVector4 operator/=(TVector4& v1, const TVector4& v2) { - Detail::compute_vec4_div::value>::map(v1, v1, v2); + Detail::compute_vec4_div::map(v1, v1, v2); return v1; } - template - TVector4 operator/=(TVector4& v1, T s) + template + TVector4 operator/=(TVector4& v1, T s) { - Detail::compute_vec4_div::value>::map(v1, v1, s); + Detail::compute_vec4_div::map(v1, v1, s); return v1; } - template - TVector4 operator+(TVector4& v1, const TVector4& v2) + template + TVector4 operator+(TVector4& v1, const TVector4& v2) { - TVector4 r; - Detail::compute_vec4_add::value>::map(r, v1, v2); + TVector4 r; + Detail::compute_vec4_add::map(r, v1, v2); return r; } - template - TVector4 operator+(TVector4& v1, T s) + template + TVector4 operator+(TVector4& v1, T s) { - TVector4 r; - Detail::compute_vec4_add::value>::map(r, v1, s); + TVector4 r; + Detail::compute_vec4_add::map(r, v1, s); return r; } - template - TVector4 operator-(TVector4& v1, const TVector4& v2) + template + TVector4 operator-(TVector4& v1, const TVector4& v2) { - TVector4 r; - Detail::compute_vec4_sub::value>::map(r, v1, v2); + TVector4 r; + Detail::compute_vec4_sub::map(r, v1, v2); return r; } - template - TVector4 operator-(TVector4& v1, T s) + template + TVector4 operator-(TVector4& v1, T s) { - TVector4 r; - Detail::compute_vec4_sub::value>::map(r, v1, s); + TVector4 r; + Detail::compute_vec4_sub::map(r, v1, s); return r; } - template - TVector4 operator*(TVector4& v1, const TVector4& v2) + template + TVector4 operator*(TVector4& v1, const TVector4& v2) { - TVector4 r; - Detail::compute_vec4_mul::value>::map(r, v1, v2); + TVector4 r; + Detail::compute_vec4_mul::map(r, v1, v2); return r; } - template - TVector4 operator*(TVector4& v1, T s) + template + TVector4 operator*(TVector4& v1, T s) { - TVector4 r; - Detail::compute_vec4_mul::value>::map(r, v1, s); + TVector4 r; + Detail::compute_vec4_mul::map(r, v1, s); return r; } - template - TVector4 operator/(TVector4& v1, const TVector4& v2) + template + TVector4 operator/(TVector4& v1, const TVector4& v2) { - TVector4 r; - Detail::compute_vec4_div::value>::map(r, v1, v2); + TVector4 r; + Detail::compute_vec4_div::map(r, v1, v2); return r; } - template - TVector4 operator/(TVector4& v1, T s) + template + TVector4 operator/(TVector4& v1, T s) { - TVector4 r; - Detail::compute_vec4_div::value>::map(r, v1, s); + TVector4 r; + Detail::compute_vec4_div::map(r, v1, s); return r; } // Comparision - template - bool operator==(const TVector4& v1, const TVector4& v2) + template + bool operator==(const TVector4& v1, const TVector4& v2) { - return Detail::compute_vec4_eq::value>::map(v1, v2); + return Detail::compute_vec4_eq::map(v1, v2); } - template - bool operator!=(const TVector4& v1, const TVector4& v2) + template + bool operator!=(const TVector4& v1, const TVector4& v2) { - return Detail::compute_vec4_ieq::value>::map(v1, v2); + return Detail::compute_vec4_ieq::map(v1, v2); } @@ -180,28 +180,28 @@ namespace Phanes::Core::Math // Inc- / Decrement - template - TVector4& operator++(TVector4& v1) + template + TVector4& operator++(TVector4& v1) { - Detail::compute_vec4_inc::value>::map(v1); + Detail::compute_vec4_inc::map(v1); return v1; } - template - TVector4& operator--(TVector4& v1) + template + TVector4& operator--(TVector4& v1) { - Detail::compute_vec4_dec::value>::map(v1); + Detail::compute_vec4_dec::map(v1); return v1; } - template - TVector4& operator++(TVector4& v1, int) + template + TVector4& operator++(TVector4& v1, int) { return ++v1; } - template - TVector4& operator--(TVector4& v1, int) + template + TVector4& operator--(TVector4& v1, int) { return --v1; }