Vulkan Schnee 0.0.1 (22840dc8)
High-performance rendering engine
Loading...
Searching...
No Matches
Transform.h
1#pragma once
2
3#include <glm/glm.hpp>
4#include <glm/gtc/quaternion.hpp>
5
6namespace Engine::Ecs
7{
8 struct Transform;
9
14 {
15 private:
17 glm::vec3 skew;
18 glm::vec4 perspective;
19 glm::vec3 translation;
20 glm::vec3 scale;
21 glm::quat rotation;
22 };
23
24 static MatrixTransformComponent extractComponents(const glm::mat4& matrix);
25
26 public:
30 static glm::vec3 getPosition(const glm::mat4& matrix);
31
35 static glm::quat getRotation(const glm::mat4& matrix);
36
40 static glm::vec3 getRotationEuler(const glm::mat4& matrix);
41
45 static glm::vec3 getScale(const glm::mat4& matrix);
46
50 static glm::vec3 getForwardVector(const glm::mat4& matrix);
51
55 static glm::vec3 getUpVector(const glm::mat4& matrix);
56
60 static glm::vec3 getRightVector(const glm::mat4& matrix);
61
65 static void setPosition(Ecs::Transform& transform, const glm::vec3& newPosition);
66
70 static void setRotation(Ecs::Transform& transform, const glm::vec3& newRotation);
71
75 static void setRotation(Ecs::Transform& transform, const glm::quat& newQuaternion);
76
80 static void setScale(Ecs::Transform& transform, const glm::vec3& newScale);
81
85 static void setFacing(Ecs::Transform& transform, const glm::vec3& newFacing);
86 };
87}
Static helpers for reading and mutating Transform matrices.
Definition Transform.h:14
static glm::vec3 getPosition(const glm::mat4 &matrix)
Extracts the translation component from a transform matrix.
static void setRotation(Ecs::Transform &transform, const glm::vec3 &newRotation)
Replaces a transform's rotation from Euler angles in degrees.
static glm::quat getRotation(const glm::mat4 &matrix)
Extracts the rotation component from a transform matrix.
static void setScale(Ecs::Transform &transform, const glm::vec3 &newScale)
Replaces a transform's scale while preserving axis directions.
static void setFacing(Ecs::Transform &transform, const glm::vec3 &newFacing)
Rotates a transform so its forward axis faces the supplied direction.
static glm::vec3 getRightVector(const glm::mat4 &matrix)
Returns the normalized right vector for a transform matrix.
static void setPosition(Ecs::Transform &transform, const glm::vec3 &newPosition)
Replaces a transform's translation while preserving rotation and scale.
static glm::vec3 getForwardVector(const glm::mat4 &matrix)
Returns the normalized forward vector for a transform matrix.
static glm::vec3 getScale(const glm::mat4 &matrix)
Extracts the scale component from a transform matrix.
static MatrixTransformComponent extractComponents(const glm::mat4 &matrix)
static void setRotation(Ecs::Transform &transform, const glm::quat &newQuaternion)
Replaces a transform's rotation from a quaternion while preserving scale.
static glm::vec3 getUpVector(const glm::mat4 &matrix)
Returns the normalized up vector for a transform matrix.
static glm::vec3 getRotationEuler(const glm::mat4 &matrix)
Extracts the rotation component as Euler angles in degrees.
EnTT component data used by engine systems.
Local transform matrix and helpers for translation, rotation, and scale.
Definition EcsData.h:476