Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
transform.h
Go to the documentation of this file.
1 #pragma once
2 #include "imports.h"
3 
4 
5 // TODO: refactor this to other file
6 struct Transform2D {
7  glm::vec3 Position{0, 0, 0};
8  glm::vec2 Scale{1, 1};
9  float Rotation = 0.0f;
10 
11  glm::mat4 GetMatrix() const {
12  glm::mat4 mat(1.0f);
13  mat = glm::translate(mat, glm::vec3(Position));
14  mat = glm::rotate(mat, Rotation, glm::vec3(0, 0, 1));
15  mat = glm::scale(mat, glm::vec3(Scale, 1.0f));
16  return mat;
17  }
18 };
19 
20 struct Transform {
21 
22  glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
23  glm::vec3 rotation = glm::vec3(0.0f, 0.0f, 0.0f);
24  glm::vec3 scale = glm::vec3(1.0f, 1.0f, 1.0f);
25 
26  Transform() = default;
27  Transform(glm::vec3 position, glm::vec3 rotation, glm::vec3 scale)
29  }
30 
36  glm::mat4 GetModelMatrix2D() const;
37 
38 
43  glm::mat4 GetModelMatrix() const;
44 };
Definition: transform.h:6
float Rotation
Definition: transform.h:9
glm::vec3 Position
Definition: transform.h:7
glm::mat4 GetMatrix() const
Definition: transform.h:11
glm::vec2 Scale
Definition: transform.h:8
Definition: transform.h:20
Transform()=default
glm::mat4 GetModelMatrix2D() const
Get the model matrix 2D.
Definition: transform.cpp:7
glm::mat4 GetModelMatrix() const
Get the model matrix 3D ( TODO )
Definition: transform.cpp:3
glm::vec3 position
Definition: transform.h:22
glm::vec3 scale
Definition: transform.h:24
Transform(glm::vec3 position, glm::vec3 rotation, glm::vec3 scale)
Definition: transform.h:27
glm::vec3 rotation
Definition: transform.h:23