4#include <glm/gtc/quaternion.hpp>
9namespace pixelbullet::math
11template <std::
floating_po
int T>
12[[nodiscard]]
inline bool is_finite(
const T value)
noexcept
14 return std::isfinite(value);
17template <glm::length_t Length, std::
floating_po
int T, glm::qualifier Qualifier>
18[[nodiscard]]
inline bool is_finite(
const glm::vec<Length, T, Qualifier>& value)
noexcept
20 for (glm::length_t index = 0; index < Length; ++index)
22 if (!is_finite(value[index]))
31template <std::
floating_po
int T, glm::qualifier Qualifier>
32[[nodiscard]]
inline bool is_finite(
const glm::qua<T, Qualifier>& value)
noexcept
34 return is_finite(value.x) && is_finite(value.y) && is_finite(value.z) && is_finite(value.w);
37template <glm::length_t Columns, glm::length_t Rows, std::
floating_po
int T, glm::qualifier Qualifier>
38[[nodiscard]]
inline bool is_finite(
const glm::mat<Columns, Rows, T, Qualifier>& value)
noexcept
40 for (glm::length_t column = 0; column < Columns; ++column)
42 if (!is_finite(value[column]))