#pragma once #include #include #include #include #if defined(_MSC_VER) && _MSC_VER >= 1900 # define MATH_RESTRICT __restrict #elif (defined(__clang__) || defined(__GNUC__)) # define MATH_RESTRICT __restrict__ #else # define MATH_RESTRICT #endif namespace math { static struct ZUninitialized {} uninitialized; //standard precision struct standard {}; //fast but less precise struct fast {}; //standard precision but safe assumptions struct safe {}; } #include "VMath/angle.h" #include "VMath/vec2.h" #include "VMath/vec3.h" #include "VMath/vec4.h" #include "VMath/rect.h" #include "VMath/mat2.h" #include "VMath/mat3.h" #include "VMath/mat4.h" #include "VMath/trans2.h" #include "VMath/trans3.h" #include "VMath/rigid2.h" #include "VMath/rigid3.h" #include "VMath/quat.h" #include "VMath/plane.h" #include "VMath/line2.h" #include "VMath/line3.h" #include "VMath/ray2.h" #include "VMath/ray3.h" #include "VMath/segment2.h" #include "VMath/segment3.h" #include "VMath/circle2.h" #include "VMath/triangle3.h" #include "VMath/aabb3.h" #include "VMath/aabb2.h" #include "VMath/range.h" #include "VMath/clamped_value.h" namespace math { typedef angle anglef; typedef angle angled; typedef vec2 byte2; typedef vec2 ubyte2; typedef vec2 short2; typedef vec2 ushort2; typedef vec2 int2; typedef vec2 uint2; typedef vec2 float2; typedef vec2 double2; typedef vec2 vec2b; typedef vec2 vec2ub; typedef vec2 vec2s; typedef vec2 vec2us; typedef vec2 vec2i; typedef vec2 vec2u; typedef vec2 vec2f; typedef vec2 vec2d; typedef vec3 byte3; typedef vec3 ubyte3; typedef vec3 short3; typedef vec3 ushort3; typedef vec3 int3; typedef vec3 uint3; typedef vec3 float3; typedef vec3 double3; typedef vec3 vec3b; typedef vec3 vec3ub; typedef vec3 vec3s; typedef vec3 vec3us; typedef vec3 vec3i; typedef vec3 vec3u; typedef vec3 vec3f; typedef vec3 vec3d; typedef vec4 byte4; typedef vec4 ubyte4; typedef vec4 short4; typedef vec4 ushort4; typedef vec4 int4; typedef vec4 uint4; typedef vec4 float4; typedef vec4 double4; typedef vec4 vec4b; typedef vec4 vec4ub; typedef vec4 vec4s; typedef vec4 vec4us; typedef vec4 vec4i; typedef vec4 vec4u; typedef vec4 vec4f; typedef vec4 vec4d; typedef quat quatf; typedef quat quatd; typedef mat2 mat2f; typedef mat2 mat2d; typedef mat3 mat3f; typedef mat3 mat3d; typedef mat4 mat4f; typedef mat4 mat4d; typedef trans2 trans2f; typedef trans2 trans2d; typedef trans3 trans3f; typedef trans3 trans3d; typedef rigid2 rigid2f; typedef rigid2 rigid2d; typedef rigid3 rigid3f; typedef rigid3 rigid3d; typedef line2 line2f; typedef line2 line2d; typedef line3 line3f; typedef line3 line3d; typedef ray2 ray2f; typedef ray2 ray2d; typedef ray3 ray3f; typedef ray3 ray3d; typedef segment2 segment2f; typedef segment2 segment2d; typedef segment3 segment3f; typedef segment3 segment3d; typedef rect recti; typedef rect rectu; typedef rect rectf; typedef rect rectd; typedef aabb2 aabb2f; typedef aabb2 aabb2d; typedef aabb3 aabb3f; typedef aabb3 aabb3d; typedef triangle3 triangle3f; typedef triangle3 triangle3d; typedef circle2 circle2f; typedef circle2 circle2d; typedef plane planef; typedef plane planed; typedef range rangef; typedef range range2f; typedef range range3f; typedef range range4f; typedef range ranged; typedef range range2d; typedef range range3d; typedef range range4d; typedef range rangei; typedef range range2i; typedef range range3i; typedef range range4i; namespace detail { template struct UValue_Traits { static constexpr T max = tl::numeric_limits::max(); static constexpr T min = T(0); }; template struct Mu_Traits { static constexpr T min = T(0); static constexpr T max = T(1); }; template struct Smu_Traits { static constexpr T min = T(-1); static constexpr T max = T(1); }; } typedef clamped_value> ufloat; typedef clamped_value> udouble; typedef clamped_value> muf; typedef clamped_value> mud; typedef clamped_value> smuf; typedef clamped_value> smud; }//namespace math #include "VMath/func_test.h" #include "VMath/func_common.h" #include "VMath/func_range.h" #include "VMath/func_trig.h" #include "VMath/func_interp.h" #include "VMath/func_projection.h" #include "VMath/func_transform.h" #include "VMath/func_binary.h" #include "VMath/func_string.h" #include "VMath/func_cast.h" #include "VMath/func_interpolation.h" #include "VMath/func_intersect.h" #include "VMath/angle.inl" #include "VMath/circle2.inl" #include "VMath/vec2.inl" #include "VMath/vec3.inl" #include "VMath/vec4.inl" #include "VMath/rect.inl" #include "VMath/mat2.inl" #include "VMath/mat3.inl" #include "VMath/mat4.inl" #include "VMath/trans2.inl" #include "VMath/trans3.inl" #include "VMath/rigid2.inl" #include "VMath/rigid3.inl" #include "VMath/quat.inl" #include "VMath/plane.inl" #include "VMath/line2.inl" #include "VMath/line3.inl" #include "VMath/ray2.inl" #include "VMath/ray3.inl" #include "VMath/segment2.inl" #include "VMath/segment3.inl" #include "VMath/triangle3.inl" #include "VMath/aabb3.inl" #include "VMath/aabb2.inl" #include "VMath/range.inl" #include "VMath/clamped_value.inl" #include "VMath/func_cast.inl" #include "VMath/func_range.inl" #include "VMath/func_test.inl" #include "VMath/func_common.inl" #include "VMath/func_trig.inl" #include "VMath/func_interp.inl" #include "VMath/func_projection.inl" #include "VMath/func_transform.inl" #include "VMath/func_binary.inl" #include "VMath/func_interpolation.inl" #include "VMath/func_intersect.inl" #undef MATH_RESTRICT