aboutsummaryrefslogtreecommitdiffstats
path: root/src/graphics/Camera.hpp
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2021-04-11 13:06:28 +0000
committerJoursoir <chat@joursoir.net>2021-04-11 13:06:28 +0000
commite7ba13097919d96ef1a2d1da9344e2ed4595b9cc (patch)
treede760f5c6fe715758aad09612e8f6485603e9e79 /src/graphics/Camera.hpp
parenta8b3118e8305fd1c668ea25e07157b625c9747ff (diff)
downloadspace-simulator-e7ba13097919d96ef1a2d1da9344e2ed4595b9cc.tar.gz
space-simulator-e7ba13097919d96ef1a2d1da9344e2ed4595b9cc.tar.bz2
space-simulator-e7ba13097919d96ef1a2d1da9344e2ed4595b9cc.zip
Camera: refactor, make it more universal
Diffstat (limited to 'src/graphics/Camera.hpp')
-rw-r--r--src/graphics/Camera.hpp23
1 files changed, 10 insertions, 13 deletions
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();
};