X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcontroller.hpp;fp=src%2Fcontroller.hpp;h=8b2cd4eb89d0fcd9761b50ff49553241086566a4;hb=81531352f0af10ef357e82595098fa596795f000;hp=0000000000000000000000000000000000000000;hpb=49c81f76b80e0de99ca57db49510eb5e3385e1d1;p=blank.git diff --git a/src/controller.hpp b/src/controller.hpp new file mode 100644 index 0000000..8b2cd4e --- /dev/null +++ b/src/controller.hpp @@ -0,0 +1,41 @@ +#ifndef BLANK_CONTROLLER_HPP_ +#define BLANK_CONTROLLER_HPP_ + +#include + + +namespace blank { + +class FPSController { + +public: + FPSController(); + ~FPSController(); + + glm::mat4 Transform() const; + + void Velocity(glm::vec3 vel) { velocity = vel; } + void Position(glm::vec3 pos) { position = pos; } + void Move(glm::vec3 delta) { position += delta; } + + // all angles in radians (full circle = 2π) + float Pitch() const { return pitch; } + void Pitch(float p) { pitch = p; } + void RotatePitch(float delta) { pitch += delta; } + float Yaw() const { return yaw; } + void Yaw(float y) { yaw = y; } + void RotateYaw(float delta) { yaw += delta; } + + void Update(int dt); + +private: + glm::vec3 velocity; + glm::vec3 position; + float pitch; + float yaw; + +}; + +} + +#endif