Elevate Engine 1
Loading...
Searching...
No Matches
Transform.cpp
Go to the documentation of this file.
1#include "Transform.h"
2
3// Maths
4#include <glm/gtc/matrix_transform.hpp>
5#include <glm/gtc/type_ptr.hpp>
6
8{
9 m_ModelMatrix = glm::mat4(0.0f);
10 position = glm::vec3(0.0f);
11 rotation = glm::vec3(0.0f);
12 scale = glm::vec3(1.0f);
13 m_isDirty = true;
14}
15
17{
18 return glm::normalize(glm::vec3(GetModelMatrix()[0]));
19}
20
22{
23 return glm::normalize(glm::vec3(GetModelMatrix()[1]));
24}
25
27{
28 return glm::normalize(glm::vec3(GetModelMatrix()[2]));
29}
30
32{
33 return -glm::normalize(glm::vec3(GetModelMatrix()[2]));
34}
35
37{
38 return { glm::length(GetRight()), glm::length(GetUp()), glm::length(GetBackward()) };
39}
40
41const glm::mat4& Elevate::Transform::GetModelMatrix() const
42{
43 if (m_isDirty)
44 {
45 const_cast<Transform*>(this)->UpdateModelMatrix();
46 }
47 return m_ModelMatrix;
48}
49
51{
52 glm::mat4 model = glm::mat4(1.0f);
53 model = glm::translate(model, position);
54
55 model = glm::rotate(model, glm::radians(rotation.y), { 0, 1, 0 });
56 model = glm::rotate(model, glm::radians(rotation.x), { 1, 0, 0 });
57 model = glm::rotate(model, glm::radians(rotation.z), { 0, 0, 1 });
58
59 model = glm::scale(model, scale);
60 m_ModelMatrix = model;
61 m_isDirty = false;
62}
glm::vec3 GetBackward() const
Definition Transform.cpp:26
const glm::mat4 & GetModelMatrix() const
Definition Transform.cpp:41
glm::vec3 GetForward() const
Definition Transform.cpp:31
glm::vec3 GetGlobalScale() const
Definition Transform.cpp:36
glm::vec3 GetUp() const
Definition Transform.cpp:21
glm::vec3 GetRight() const
Definition Transform.cpp:16