|
|
@@ -42,8 +42,20 @@
|
|
|
#pragma once
|
|
|
|
|
|
// Dependency:
|
|
|
-#include "../detail/precision.hpp"
|
|
|
-#include "../detail/setup.hpp"
|
|
|
+#include "../detail/type_vec2.hpp"
|
|
|
+#include "../detail/type_vec3.hpp"
|
|
|
+#include "../detail/type_vec4.hpp"
|
|
|
+#include "../detail/type_mat2x2.hpp"
|
|
|
+#include "../detail/type_mat2x3.hpp"
|
|
|
+#include "../detail/type_mat2x4.hpp"
|
|
|
+#include "../detail/type_mat3x2.hpp"
|
|
|
+#include "../detail/type_mat3x3.hpp"
|
|
|
+#include "../detail/type_mat3x4.hpp"
|
|
|
+#include "../detail/type_mat4x2.hpp"
|
|
|
+#include "../detail/type_mat4x3.hpp"
|
|
|
+#include "../detail/type_mat4x4.hpp"
|
|
|
+#include "../gtc/quaternion.hpp"
|
|
|
+#include "../gtx/dual_quaternion.hpp"
|
|
|
|
|
|
#if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
|
|
|
# pragma message("GLM: GLM_GTX_type_trait extension included")
|
|
|
@@ -54,188 +66,213 @@ namespace glm
|
|
|
/// @addtogroup gtx_type_trait
|
|
|
/// @{
|
|
|
|
|
|
- template <typename T, precision P> struct tvec1;
|
|
|
- template <typename T, precision P> struct tvec2;
|
|
|
- template <typename T, precision P> struct tvec3;
|
|
|
- template <typename T, precision P> struct tvec4;
|
|
|
-
|
|
|
- template <typename T, precision P> struct tmat2x2;
|
|
|
- template <typename T, precision P> struct tmat2x3;
|
|
|
- template <typename T, precision P> struct tmat2x4;
|
|
|
- template <typename T, precision P> struct tmat3x2;
|
|
|
- template <typename T, precision P> struct tmat3x3;
|
|
|
- template <typename T, precision P> struct tmat3x4;
|
|
|
- template <typename T, precision P> struct tmat4x2;
|
|
|
- template <typename T, precision P> struct tmat4x3;
|
|
|
- template <typename T, precision P> struct tmat4x4;
|
|
|
-
|
|
|
- template <typename T, precision P> struct tquat;
|
|
|
- template <typename T, precision P> struct tdualquat;
|
|
|
-
|
|
|
- template <template <typename, precision> class genType>
|
|
|
+ template <template <typename, precision> class genType, typename T, precision P>
|
|
|
struct type
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 0;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 0;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 0;
|
|
|
+ static length_t const components = 0;
|
|
|
+ static length_t const cols = 0;
|
|
|
+ static length_t const rows = 0;
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tvec1>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tvec1, T, P>
|
|
|
{
|
|
|
static bool const is_vec = true;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 1;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 1;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 1;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 1
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tvec2>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tvec2, T, P>
|
|
|
{
|
|
|
static bool const is_vec = true;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 2;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 2
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tvec3>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tvec3, T, P>
|
|
|
{
|
|
|
static bool const is_vec = true;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 3;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 3
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tvec4>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tvec4, T, P>
|
|
|
{
|
|
|
static bool const is_vec = true;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 4;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 4
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat2x2>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat2x2, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 2;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 2,
|
|
|
+ cols = 2,
|
|
|
+ rows = 2
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat2x3>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat2x3, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 3;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 2,
|
|
|
+ cols = 2,
|
|
|
+ rows = 3
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat2x4>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat2x4, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 2;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 4;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 2,
|
|
|
+ cols = 2,
|
|
|
+ rows = 4
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat3x2>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat3x2, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 2;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 3,
|
|
|
+ cols = 3,
|
|
|
+ rows = 2
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat3x3>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat3x3, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 3;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 3,
|
|
|
+ cols = 3,
|
|
|
+ rows = 3
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat3x4>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat3x4, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 3;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 4;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 3,
|
|
|
+ cols = 3,
|
|
|
+ rows = 4
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat4x2>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat4x2, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 2;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 4,
|
|
|
+ cols = 4,
|
|
|
+ rows = 2
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat4x3>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat4x3, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 3;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 4,
|
|
|
+ cols = 4,
|
|
|
+ rows = 3
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tmat4x4>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tmat4x4, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = true;
|
|
|
static bool const is_quat = false;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t cols = 4;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t rows = 4;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 4,
|
|
|
+ cols = 4,
|
|
|
+ rows = 4
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tquat>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tquat, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = true;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 4;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 4
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
- template <>
|
|
|
- struct type<tdualquat>
|
|
|
+ template <typename T, precision P>
|
|
|
+ struct type<tdualquat, T, P>
|
|
|
{
|
|
|
static bool const is_vec = false;
|
|
|
static bool const is_mat = false;
|
|
|
static bool const is_quat = true;
|
|
|
- static GLM_RELAXED_CONSTEXPR length_t components = 8;
|
|
|
+ enum
|
|
|
+ {
|
|
|
+ components = 8
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
/// @}
|