summaryrefslogtreecommitdiff
path: root/inc/opengl/camera.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'inc/opengl/camera.hpp')
-rw-r--r--inc/opengl/camera.hpp39
1 files changed, 20 insertions, 19 deletions
diff --git a/inc/opengl/camera.hpp b/inc/opengl/camera.hpp
index 62ae837..06a5a88 100644
--- a/inc/opengl/camera.hpp
+++ b/inc/opengl/camera.hpp
@@ -1,57 +1,58 @@
#ifndef camera_h
#define camera_h
+#include "constants.hpp"
+
struct Camera
{
public:
Camera(const glm::vec3& pos, float fov, float aspect, float zNear, float zFar){
- this->pos = pos;
- this->forward = glm::vec3(0.0f, 0.0f, -1.0f);
- this->up = glm::vec3(0.0f, 1.0f, 0.0f);
- this->projection = glm::perspective(fov, aspect, zNear, zFar);
+ this->pos = pos;
+ this->forward = glm::vec3(0.0f, 0.0f, -1.0f);
+ this->up = glm::vec3(0.0f, 1.0f, 0.0f);
+ this->projection = glm::perspective(fov, aspect, zNear, zFar);
}
inline glm::mat4 GetViewProjection() const {
- return projection * glm::lookAt(pos, pos + forward, up);
+ return projection * glm::lookAt(pos, pos + forward, up);
}
void MoveForward(){
- pos += forward * amt;
+ pos += forward * MOVE_AMOUNT;
}
void MoveBackward(){
- pos += forward * -amt;
+ pos += forward * -MOVE_AMOUNT;
}
void MoveRight(){
- pos += -glm::cross(up, forward) * amt;
+ pos += -glm::cross(up, forward) * MOVE_AMOUNT;
}
void MoveLeft(){
- pos += glm::cross(up, forward) * amt;
+ pos += glm::cross(up, forward) * MOVE_AMOUNT;
}
void MoveUp(){
- pos += glm::vec3(0,.2,0);
+ pos += glm::vec3(0,MOVE_AMOUNT,0);
}
void MoveDown(){
- pos -= glm::vec3(0,.2,0);
+ pos -= glm::vec3(0,MOVE_AMOUNT,0);
}
void Pitch(float angle){
- glm::vec3 right = glm::normalize(glm::cross(up, forward));
+ glm::vec3 right = glm::normalize(glm::cross(up, forward));
- forward = glm::vec3(glm::normalize(glm::rotate(angle, right) * glm::vec4(forward, 0.0)));
- up = glm::normalize(glm::cross(forward, right));
+ forward = glm::vec3(glm::normalize(glm::rotate(angle, right) * glm::vec4(forward, 0.0)));
+ up = glm::normalize(glm::cross(forward, right));
}
private:
- float amt = .2;
- glm::mat4 projection;
- glm::vec3 pos;
- glm::vec3 forward;
- glm::vec3 up;
+ glm::mat4 projection;
+ glm::vec3 pos;
+ glm::vec3 forward;
+ glm::vec3 up;
};
#endif