]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/camera.cpp
Set antialiasing to 8
[dragonblocks3d.git] / src / 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::toggleMode()
13 {
14         m_third_person = ! m_third_person;
15 }
16
17 void Camera::update(double yaw, double pitch, const vec3 &p)
18 {
19         yaw = radians(yaw);
20         pitch = radians(pitch);
21         
22         m_front = normalize(vec3(cos(yaw) * cos(pitch), sin(pitch), sin(yaw) * cos(pitch)));
23         m_right = normalize(cross(m_front, m_world_up));
24         m_up = normalize(cross(m_right, m_front));
25         
26         pos = p;
27         
28         if (m_third_person) {
29                 pos -= m_front * 2.0f;
30         }
31 }
32
33 vec3 Camera::up() const
34 {
35         return m_up;
36 }
37
38 vec3 Camera::front() const
39 {
40         return m_front;
41 }
42
43 vec3 Camera::right() const
44 {
45         return m_right;
46 }
47
48 bool Camera::thirdPerson() const
49 {
50         return m_third_person;
51 }
52
53 Camera::Camera() : pos(0, 0, 0), m_up(0, 1, 0), m_world_up(0, 1, 0), m_front(0, 0, -1)
54 {
55 }