]> git.localhorst.tv Git - blank.git/blob - src/controller.hpp
013b3e4de3b82ef4e365f1667d9a102d70ac08c1
[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         ~FPSController();
14
15         glm::mat4 Transform() const;
16
17         void Velocity(glm::vec3 vel) { velocity = vel; }
18         void OrientationVelocity(const glm::vec3 &vel);
19         void Position(glm::vec3 pos) { position = pos; }
20         void Move(glm::vec3 delta) { position += delta; }
21
22         // all angles in radians (full circle = 2π)
23         float Pitch() const { return pitch; }
24         void Pitch(float p) { pitch = p; }
25         void RotatePitch(float delta) { pitch += delta; }
26         float Yaw() const { return yaw; }
27         void Yaw(float y) { yaw = y; }
28         void RotateYaw(float delta) { yaw += delta; }
29
30         void Update(int dt);
31
32 private:
33         glm::vec3 velocity;
34         glm::vec3 position;
35         float pitch;
36         float yaw;
37
38 };
39
40 }
41
42 #endif