diff --git a/LearnOpenGL/OpenGLWrapper.cpp b/LearnOpenGL/OpenGLWrapper.cpp index a55ac047ab20bf0436b141d02e62e32ab3a4d4e0..aa25f8ede05ecc7cb3521adac316041d403e727f 100644 --- a/LearnOpenGL/OpenGLWrapper.cpp +++ b/LearnOpenGL/OpenGLWrapper.cpp @@ -75,93 +75,11 @@ GLuint RenderObject::get_vertex_count() return mesh->get_vertex_count(); } -Transform::Transform() -{ - translate = glm::vec3(0.0f, 0.0f, 0.0f); - rotate = glm::vec3(0.0f, 0.0f, 0.0f); - scale = glm::vec3(1.0f, 1.0f, 1.0f); - - update_model_matrix(); - update_directional_vector(); -} - -glm::mat4 Transform::get_model_matrix() -{ - return model; -} - -void Transform::update_model_matrix() -{ - model = glm::mat4(1.0f); - model = glm::translate(model, translate); - - model = glm::rotate(model, glm::radians(rotate.x), glm::vec3(1.0f, 0.0f, 0.0f)); - model = glm::rotate(model, glm::radians(rotate.y), glm::vec3(0.0f, 1.0f, 0.0f)); - model = glm::rotate(model, glm::radians(rotate.z), glm::vec3(0.0f, 0.0f, 1.0f)); - - model = glm::scale(model, scale); -} - -void Transform::update_directional_vector() -{ - glm::vec3 front; - glm::vec3 up; - glm::vec3 right; - - glm::vec3 _front; - front.x = cos(glm::radians(rotate.y)) * cos(glm::radians(rotate.x)); - front.y = sin(glm::radians(rotate.x)); - front.z = sin(glm::radians(rotate.y)) * cos(glm::radians(rotate.x)); - front = glm::normalize(_front); - - right = glm::normalize(glm::cross(front, glm::vec3(0, 1, 0))); - - up = glm::normalize(glm::cross(right, front)); -} - Transform *RenderObject::get_transform() { return &transform; } -void Transform::set_translate(glm::vec3 _translate) -{ - translate = _translate; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::set_rotate(glm::vec3 _rotate) -{ - rotate = _rotate; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::set_scale(glm::vec3 _scale) -{ - scale = _scale; - - update_model_matrix(); -} - -void Transform::move(glm::vec3 _delta) -{ - translate += _delta; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::move(glm::vec3 _direction, glm::vec1 _velocity) -{ - translate += glm::vec3(_velocity *_direction.x, _velocity *_direction.y, _velocity *_direction.z); - - update_model_matrix(); -} - void RenderObject::set_material(Material *_material) { material = _material; @@ -214,7 +132,7 @@ void RenderObject::projective_render(Camera &camera) 0.0f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f }; - glm::mat4 projector_view = glm::lookAt(camera.Position, camera.Position + camera.Front, camera.Up); + glm::mat4 projector_view = glm::lookAt(camera.transform.get_translate(), camera.transform.get_translate() + camera.transform.get_front(), camera.transform.get_up()); glm::mat4 projector_projection = glm::perspective(glm::radians(camera.Zoom), 1.0f, 0.1f, 100.0f); auto prog = material->get_program(); diff --git a/LearnOpenGL/OpenGLWrapper.h b/LearnOpenGL/OpenGLWrapper.h index df4d0ae80cb85793a4625034c00e47666bdc29c6..15f591d24b18ced910b0399e2f07fefe0f615b81 100644 --- a/LearnOpenGL/OpenGLWrapper.h +++ b/LearnOpenGL/OpenGLWrapper.h @@ -50,35 +50,6 @@ public: GLuint get_specularMap(); }; -class Transform -{ -private: - glm::mat4 model; - - glm::vec3 translate; - glm::vec3 rotate; - glm::vec3 scale; - - glm::vec3 front; - glm::vec3 up; - glm::vec3 right; - - void update_model_matrix(); - void update_directional_vector(); - -public: - Transform(); - glm::mat4 get_model_matrix(); - glm::vec3 get_front(); - - void set_translate(glm::vec3 _translate); - void set_rotate(glm::vec3 _rotate); - void set_scale(glm::vec3 _scale); - - void move(glm::vec3 _delta); - void move(glm::vec3 _direction, glm::vec1 _velocity); -}; - class RenderObject { private: