#include "camera.hpp" #include #include glm::mat4 Camera::look_at() { return glm::lookAt(position, position + front, up); } void Camera::forward() { dirty = true; position += speed * front; } void Camera::back() { dirty = true; position -= speed * front; } void Camera::left() { dirty = true; position -= glm::normalize(glm::cross(front, up)) * speed; } void Camera::right() { dirty = true; position += glm::normalize(glm::cross(front, up)) * speed; } void Camera::update(float deltaTime) { speed = movement_speed * deltaTime; } void Camera::mouse_move(double xpos, double ypos) { dirty = true; if(firstMouse) { lastX = xpos; lastY = ypos; firstMouse = false; } float xoffset = xpos - lastX; float yoffset = lastY - ypos; lastX = xpos; lastY = ypos; const float sensitivity = 0.1f; xoffset *= sensitivity; yoffset *= sensitivity; yaw += xoffset; pitch += yoffset; if(pitch > 89.0f) pitch = 89.0f; if(pitch < -89.0f) pitch = -89.0f; direction.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch)); direction.y = sin(glm::radians(pitch)); direction.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch)); front = glm::normalize(direction); } void Camera::mouse_scroll(double xoffset, double yoffset) { dirty = true; fov -= (float)yoffset; if(fov < 1.0f) fov = 1.0f; if(fov > 90.0f) fov = 90.0f; }