]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/dragonblocks/camera.cpp
Multithreading
[dragonblocks3d.git] / src / dragonblocks / camera.cpp
1 #include <glm/gtc/matrix_transform.hpp>
2 #include "camera.hpp" 
3
4 using namespace glm;
5 using namespace dragonblocks;
6
7 mat4 Camera::getViewMatrix() const
8 {
9         return lookAt(pos, pos + m_front, m_up);
10 }
11
12 void Camera::update(double yaw, double pitch)
13 {
14         yaw = radians(yaw);
15         pitch = radians(pitch);
16         
17         m_front = normalize(vec3(cos(yaw) * cos(pitch), sin(pitch), sin(yaw) * cos(pitch)));
18         m_right = normalize(cross(m_front, m_world_up));
19         m_up = normalize(cross(m_right, m_front));
20 }
21
22 vec3 Camera::up() const
23 {
24         return m_up;
25 }
26
27 vec3 Camera::front() const
28 {
29         return m_front;
30 }
31
32 vec3 Camera::right() const
33 {
34         return m_right;
35 }
36
37 Camera::Camera() : pos(0, 0, 0), m_up(0, 1, 0), m_world_up(0, 1, 0), m_front(0, 0, -1)
38 {
39 }