fekalnigtacko/src/game/transform_node.hpp

34 lines
444 B
C++

#pragma once
#include "utils/transform.hpp"
namespace game
{
struct TransformNode
{
const TransformNode* parent = nullptr;
Transform local;
glm::mat4 matrix = glm::mat4(1.0f); // Global
TransformNode()
{
UpdateMatrix();
}
void UpdateMatrix()
{
matrix = local.ToMatrix();
if (parent)
{
matrix = parent->matrix * matrix;
}
}
glm::vec3 GetGlobalPosition() const
{
return matrix[3];
}
};
}