Added some basic geometry functionality (only tangent generation for now).
This commit is contained in:
37
source/mijin/geo/glm_traits.hpp
Normal file
37
source/mijin/geo/glm_traits.hpp
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#if !defined(MIJIN_GEO_GLM_ADAPTER_HPP_INCLUDED)
|
||||
#define MIJIN_GEO_GLM_ADAPTER_HPP_INCLUDED 1
|
||||
|
||||
#include <glm/vec2.hpp>
|
||||
#include <glm/vec3.hpp>
|
||||
#include "./geometry_traits.hpp"
|
||||
|
||||
namespace mijin
|
||||
{
|
||||
template<>
|
||||
struct Vector2Traits<glm::vec2>
|
||||
{
|
||||
constexpr float getX(const glm::vec2& vector) const noexcept { return vector.x; }
|
||||
constexpr float getY(const glm::vec2& vector) const noexcept { return vector.y; }
|
||||
constexpr void setX(glm::vec2& vector, float value) const noexcept { vector.x = value; }
|
||||
constexpr void setY(glm::vec2& vector, float value) const noexcept { vector.y = value; }
|
||||
};
|
||||
static_assert(Vector2<glm::vec2>, "Vector2Adapter not working.");
|
||||
|
||||
template<>
|
||||
struct Vector3Traits<glm::vec3>
|
||||
{
|
||||
constexpr float getX(const glm::vec3& vector) const noexcept { return vector.x; }
|
||||
constexpr float getY(const glm::vec3& vector) const noexcept { return vector.y; }
|
||||
constexpr float getZ(const glm::vec3& vector) const noexcept { return vector.z; }
|
||||
constexpr void setX(glm::vec3& vector, float value) const noexcept { vector.x = value; }
|
||||
constexpr void setY(glm::vec3& vector, float value) const noexcept { vector.y = value; }
|
||||
constexpr void setZ(glm::vec3& vector, float value) const noexcept { vector.z = value; }
|
||||
};
|
||||
static_assert(Vector3<glm::vec3>, "Vector3Adapter not working.");
|
||||
}
|
||||
|
||||
#endif // MIJIN_GEO_GLM_ADAPTER_HPP_INCLUDED
|
||||
Reference in New Issue
Block a user