From e7ba13097919d96ef1a2d1da9344e2ed4595b9cc Mon Sep 17 00:00:00 2001 From: Joursoir Date: Sun, 11 Apr 2021 13:06:28 +0000 Subject: Camera: refactor, make it more universal --- src/graphics/Camera.hpp | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'src/graphics/Camera.hpp') diff --git a/src/graphics/Camera.hpp b/src/graphics/Camera.hpp index 6182b5f..fe8be22 100644 --- a/src/graphics/Camera.hpp +++ b/src/graphics/Camera.hpp @@ -11,18 +11,9 @@ enum camera_move { RIGHT }; -const GLfloat - init_yaw = -90.0f, - init_pitch = 0.0f, - init_speed = 2.5f, - init_sensitivity = 0.25f, - init_fov = glm::radians(45.0f); - class Camera { glm::vec3 position; - glm::vec3 front; - glm::vec3 up; - glm::vec3 right; + glm::vec3 front, up, right; glm::vec3 world_up; GLfloat yaw; // around x @@ -30,18 +21,24 @@ class Camera { GLfloat move_speed; GLfloat mouse_sensitivity; + GLfloat fov; + GLfloat near, far; public: Camera(glm::vec3 a_pos = glm::vec3(0.0f, 0.0f, 5.0f), glm::vec3 a_front = glm::vec3(0.0f, 0.0f, -1.0f), glm::vec3 a_up = glm::vec3(0.0f, 1.0f, 0.0f), - GLfloat a_yaw = init_yaw, GLfloat a_pitch = init_pitch); + GLfloat a_yaw = -90.0f, GLfloat a_pitch = 0.0f); + void SetSpeed(GLfloat a_speed) { move_speed = a_speed; } + void SetSensitivity(GLfloat a_sens) { mouse_sensitivity = a_sens; } + void SetPerspective(GLfloat a_fov, GLfloat a_near, GLfloat a_far) + { fov = a_fov; near = a_near; far = a_far; } glm::mat4 GetProjViewMatrix(int w_width, int w_height); glm::mat4 GetSkyboxMatrix(int w_width, int w_height); void Movement(camera_move direction, GLfloat deltaTime); - void View(GLfloat delta_x, GLfloat delta_y); - void Fov(GLfloat delta_y); + void UpdateView(GLfloat delta_x, GLfloat delta_y); + void UpdateFov(GLfloat delta_y); private: void UpdateVectors(); }; -- cgit v1.2.3-18-g5258