light/modules/engine/include/engine/scene/components/transform.hpp

45 lines
908 B
C++
Raw Normal View History

2025-07-05 13:28:41 +03:30
#pragma once
#define GLM_ENABLE_EXPERIMENTAL
#include <engine/base/base.hpp>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtx/transform.hpp>
namespace Light {
struct TransformComponent
{
glm::vec3 translation;
glm::vec3 scale;
glm::vec3 rotation;
TransformComponent(const TransformComponent &) = default;
TransformComponent(
const glm::vec3 &_translation = glm::vec3(0.0f, 0.0f, 0.0f),
const glm::vec3 &_scale = glm::vec3(1.0f, 1.0f, 1.0f),
const glm::vec3 &_rotation = glm::vec3(0.0f, 0.0f, 0.0f)
)
: translation(_translation)
, scale(_scale)
, rotation(_rotation)
{
}
inline glm::mat4 get_transform() const
2025-07-05 13:28:41 +03:30
{
return glm::translate(translation) * glm::rotate(rotation.z, glm::vec3(0.0f, 0.0f, 1.0f))
* glm::scale(scale);
}
operator const glm::mat4() const
{
return get_transform();
2025-07-05 13:28:41 +03:30
}
};
} // namespace Light