Add operators
This commit is contained in:
@@ -61,25 +61,25 @@ namespace OpenVulkano::Math
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
T maxVal(const glm::tvec3<T, Q>& vec)
|
||||
T maxVal(const tvec3<T, Q>& vec)
|
||||
{
|
||||
return std::max(vec.x, std::max(vec.y, vec.z));
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
T maxVal(const glm::tvec4<T, Q>& vec)
|
||||
T maxVal(const tvec4<T, Q>& vec)
|
||||
{
|
||||
return std::max(std::max(vec.x, vec.y), std::max(vec.z, vec.w));
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
T minVal(const glm::tvec3<T, Q>& vec)
|
||||
T minVal(const tvec3<T, Q>& vec)
|
||||
{
|
||||
return std::min(vec.x, std::min(vec.y, vec.z));
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
T minVal(const glm::tvec4<T, Q>& vec)
|
||||
T minVal(const tvec4<T, Q>& vec)
|
||||
{
|
||||
return std::min(std::min(vec.x, vec.y), std::min(vec.z, vec.w));
|
||||
}
|
||||
@@ -203,20 +203,33 @@ namespace OpenVulkano::Math
|
||||
typedef Quaternion<int> QuaternionI;
|
||||
}
|
||||
|
||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
||||
glm::vec<L, float, Q> operator / (const float lhs, const glm::vec<L, T, Q>& rhs)
|
||||
namespace glm
|
||||
{
|
||||
return lhs / glm::vec<L, float, Q>(rhs);
|
||||
}
|
||||
template<length_t L, typename T, typename F, qualifier Q>
|
||||
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||
vec<L, F, Q> operator / (const F lhs, const vec<L, T, Q>& rhs)
|
||||
{
|
||||
return lhs / glm::vec<L, F, Q>(rhs);
|
||||
}
|
||||
|
||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
||||
glm::vec<L, float, Q> operator * (const float lhs, const glm::vec<L, T, Q>& rhs)
|
||||
{
|
||||
return lhs * glm::vec<L, float, Q>(rhs);
|
||||
}
|
||||
template<length_t L, typename T, typename F, qualifier Q>
|
||||
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||
vec<L, F, Q> operator / (const vec<L, F, Q>& lhs, const T rhs)
|
||||
{
|
||||
return lhs / static_cast<F>(rhs);
|
||||
}
|
||||
|
||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
||||
glm::vec<L, float, Q> operator * (const glm::vec<L, float, Q>& lhs, const T rhs)
|
||||
{
|
||||
return lhs * static_cast<float>(rhs);
|
||||
template<length_t L, typename T, typename F, qualifier Q>
|
||||
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||
vec<L, F, Q> operator * (const F lhs, const vec<L, T, Q>& rhs)
|
||||
{
|
||||
return lhs * glm::vec<L, F, Q>(rhs);
|
||||
}
|
||||
|
||||
template<length_t L, typename F, typename T, qualifier Q>
|
||||
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||
vec<L, F, Q> operator * (const vec<L, F, Q>& lhs, const T rhs)
|
||||
{
|
||||
return lhs * static_cast<F>(rhs);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user