diff options
author | majortom6 <tombarrett@siu.edu> | 2017-02-19 09:17:35 -0600 |
---|---|---|
committer | Tom Barrett <tombarrett@siu.edu> | 2017-03-07 13:23:41 -0600 |
commit | 5c46e0f0a924989201c6784b0f956bc442f14a7e (patch) | |
tree | 33b5889b872023bd7d414f7baec45706330813b3 /inc/opengl/transform.hpp | |
parent | 2cc21176467d4501adb7bfb9ee03eb9a2a7d14f2 (diff) |
-removed glm library, its in the debian repos
-made opengl and sdl folders in includes, moved various *hpps to them
Diffstat (limited to 'inc/opengl/transform.hpp')
-rw-r--r-- | inc/opengl/transform.hpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/inc/opengl/transform.hpp b/inc/opengl/transform.hpp new file mode 100644 index 0000000..9d0988c --- /dev/null +++ b/inc/opengl/transform.hpp @@ -0,0 +1,52 @@ +#ifndef transform_h +#define transform_h + +#include <glm/glm.hpp> +#include <glm/gtx/transform.hpp> + +#include "camera.hpp" + +struct Transform +{ +public: + Transform(const glm::vec3& pos = glm::vec3(), const glm::vec3& rot = glm::vec3(), const glm::vec3& scale = glm::vec3(1.0f, 1.0f, 1.0f)) + { + this->pos = pos; + this->rot = rot; + this->scale = scale; + } + + inline glm::mat4 GetModel() const + { + glm::mat4 posMat = glm::translate(pos); + glm::mat4 scaleMat = glm::scale(scale); + glm::mat4 rotX = glm::rotate(rot.x, glm::vec3(1.0, 0.0, 0.0)); + glm::mat4 rotY = glm::rotate(rot.y, glm::vec3(0.0, 1.0, 0.0)); + glm::mat4 rotZ = glm::rotate(rot.z, glm::vec3(0.0, 0.0, 1.0)); + glm::mat4 rotMat = rotX * rotY * rotZ; + + return posMat * rotMat * scaleMat; + } + + inline glm::mat4 GetMVP(const Camera& camera) const + { + glm::mat4 VP = camera.GetViewProjection(); + glm::mat4 M = GetModel(); + + return VP * M; + } + + inline glm::vec3* GetPos() { return &pos; } + inline glm::vec3* GetRot() { return &rot; } + inline glm::vec3* GetScale() { return &scale; } + + inline void SetPos(glm::vec3& pos) { this->pos = pos; } + inline void SetRot(glm::vec3& rot) { this->rot = rot; } + inline void SetScale(glm::vec3& scale) { this->scale = scale; } +private: + glm::vec3 pos; + glm::vec3 rot; + glm::vec3 scale; +}; + +#endif |