]> git.localhorst.tv Git - blank.git/blob - src/controller.hpp
f636bcdccd15bc64339a287044a32cabae9fc45a
[blank.git] / src / controller.hpp
1 #ifndef BLANK_CONTROLLER_HPP_
2 #define BLANK_CONTROLLER_HPP_
3
4 #include <glm/glm.hpp>
5
6
7 namespace blank {
8
9 class FPSController {
10
11 public:
12         FPSController();
13
14         glm::mat4 Transform() const;
15
16         void Velocity(glm::vec3 vel) { velocity = vel; }
17         void OrientationVelocity(const glm::vec3 &vel);
18         void Position(glm::vec3 pos) { position = pos; }
19         void Move(glm::vec3 delta) { position += delta; }
20
21         // all angles in radians (full circle = 2π)
22         float Pitch() const { return pitch; }
23         void Pitch(float p) { pitch = p; }
24         void RotatePitch(float delta) { pitch += delta; }
25         float Yaw() const { return yaw; }
26         void Yaw(float y) { yaw = y; }
27         void RotateYaw(float delta) { yaw += delta; }
28
29         void Update(int dt);
30
31 private:
32         glm::vec3 velocity;
33         glm::vec3 position;
34         float pitch;
35         float yaw;
36
37 };
38
39 }
40
41 #endif