diff --git a/openVulkanoCpp/Math/Math.hpp b/openVulkanoCpp/Math/Math.hpp index d8a4d7e..1927f64 100644 --- a/openVulkanoCpp/Math/Math.hpp +++ b/openVulkanoCpp/Math/Math.hpp @@ -61,25 +61,25 @@ namespace OpenVulkano::Math } template - T maxVal(const glm::tvec3& vec) + T maxVal(const tvec3& vec) { return std::max(vec.x, std::max(vec.y, vec.z)); } template - T maxVal(const glm::tvec4& vec) + T maxVal(const tvec4& vec) { return std::max(std::max(vec.x, vec.y), std::max(vec.z, vec.w)); } template - T minVal(const glm::tvec3& vec) + T minVal(const tvec3& vec) { return std::min(vec.x, std::min(vec.y, vec.z)); } template - T minVal(const glm::tvec4& vec) + T minVal(const tvec4& 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 QuaternionI; } -template>> -glm::vec operator / (const float lhs, const glm::vec& rhs) +namespace glm { - return lhs / glm::vec(rhs); -} + template + requires (std::is_integral_v && std::is_floating_point_v) + vec operator / (const F lhs, const vec& rhs) + { + return lhs / glm::vec(rhs); + } -template>> -glm::vec operator * (const float lhs, const glm::vec& rhs) -{ - return lhs * glm::vec(rhs); -} + template + requires (std::is_integral_v && std::is_floating_point_v) + vec operator / (const vec& lhs, const T rhs) + { + return lhs / static_cast(rhs); + } -template>> -glm::vec operator * (const glm::vec& lhs, const T rhs) -{ - return lhs * static_cast(rhs); -} + template + requires (std::is_integral_v && std::is_floating_point_v) + vec operator * (const F lhs, const vec& rhs) + { + return lhs * glm::vec(rhs); + } + + template + requires (std::is_integral_v && std::is_floating_point_v) + vec operator * (const vec& lhs, const T rhs) + { + return lhs * static_cast(rhs); + } +} \ No newline at end of file