53 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
 | 
						|
 | 
						|
#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 <glm/vec4.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.");
 | 
						|
 | 
						|
template<>
 | 
						|
struct Vector4Traits<glm::vec4>
 | 
						|
{
 | 
						|
    constexpr float getX(const glm::vec4& vector) const noexcept { return vector.x; }
 | 
						|
    constexpr float getY(const glm::vec4& vector) const noexcept { return vector.y; }
 | 
						|
    constexpr float getZ(const glm::vec4& vector) const noexcept { return vector.z; }
 | 
						|
    constexpr float getW(const glm::vec4& vector) const noexcept { return vector.w; }
 | 
						|
    constexpr void setX(glm::vec4& vector, float value) const noexcept { vector.x = value; }
 | 
						|
    constexpr void setY(glm::vec4& vector, float value) const noexcept { vector.y = value; }
 | 
						|
    constexpr void setZ(glm::vec4& vector, float value) const noexcept { vector.z = value; }
 | 
						|
    constexpr void setW(glm::vec4& vector, float value) const noexcept { vector.w = value; }
 | 
						|
};
 | 
						|
static_assert(Vector4<glm::vec4>, "Vector4Adapter not working.");
 | 
						|
}
 | 
						|
 | 
						|
#endif // MIJIN_GEO_GLM_ADAPTER_HPP_INCLUDED
 |