diff options
Diffstat (limited to 'external/include/glm/gtx/scalar_multiplication.hpp')
-rw-r--r-- | external/include/glm/gtx/scalar_multiplication.hpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/external/include/glm/gtx/scalar_multiplication.hpp b/external/include/glm/gtx/scalar_multiplication.hpp index 695e841..b73edf6 100644 --- a/external/include/glm/gtx/scalar_multiplication.hpp +++ b/external/include/glm/gtx/scalar_multiplication.hpp @@ -2,7 +2,9 @@ /// @file glm/gtx/scalar_multiplication.hpp /// @author Joshua Moerman /// -/// @brief Enables scalar multiplication for all types +/// Include <glm/gtx/scalar_multiplication.hpp> to use the features of this extension. +/// +/// Enables scalar multiplication for all types /// /// Since GLSL is very strict about types, the following (often used) combinations do not work: /// double * vec4 @@ -14,6 +16,10 @@ #include "../detail/setup.hpp" +#ifndef GLM_ENABLE_EXPERIMENTAL +# error "GLM: GLM_GTX_scalar_multiplication is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it." +#endif + #if !GLM_HAS_TEMPLATE_ALIASES && !(GLM_COMPILER & GLM_COMPILER_GCC) # error "GLM_GTX_scalar_multiplication requires C++11 support or alias templates and if not support for GCC" #endif @@ -26,28 +32,28 @@ namespace glm { - template <typename T, typename Vec> + template<typename T, typename Vec> using return_type_scalar_multiplication = typename std::enable_if< !std::is_same<T, float>::value // T may not be a float && std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...) >::type; #define GLM_IMPLEMENT_SCAL_MULT(Vec) \ - template <typename T> \ + template<typename T> \ return_type_scalar_multiplication<T, Vec> \ - operator*(T const & s, Vec rh){ \ + operator*(T const& s, Vec rh){ \ return rh *= static_cast<float>(s); \ } \ \ - template <typename T> \ + template<typename T> \ return_type_scalar_multiplication<T, Vec> \ - operator*(Vec lh, T const & s){ \ + operator*(Vec lh, T const& s){ \ return lh *= static_cast<float>(s); \ } \ \ - template <typename T> \ + template<typename T> \ return_type_scalar_multiplication<T, Vec> \ - operator/(Vec lh, T const & s){ \ + operator/(Vec lh, T const& s){ \ return lh *= 1.0f / s; \ } |