]> git.localhorst.tv Git - blank.git/blobdiff - src/app/FPSController.hpp
some code reorganization
[blank.git] / src / app / FPSController.hpp
diff --git a/src/app/FPSController.hpp b/src/app/FPSController.hpp
new file mode 100644 (file)
index 0000000..88dca64
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef BLANK_APP_FPSCONTROLLER_HPP_
+#define BLANK_APP_FPSCONTROLLER_HPP_
+
+#include "../model/geometry.hpp"
+#include "../world/Entity.hpp"
+
+#include <glm/glm.hpp>
+
+
+namespace blank {
+
+class FPSController {
+
+public:
+       explicit FPSController(Entity &) noexcept;
+
+       Ray Aim() const noexcept { return entity.Aim(entity.ChunkCoords()); }
+
+       const glm::vec3 &Velocity() const noexcept { return velocity; }
+       void Velocity(const glm::vec3 &vel) noexcept { velocity = vel; }
+
+       // all angles in radians (full circle = 2π)
+       float Pitch() const noexcept { return pitch; }
+       void Pitch(float p) noexcept;
+       void RotatePitch(float delta) noexcept;
+       float Yaw() const noexcept { return yaw; }
+       void Yaw(float y) noexcept;
+       void RotateYaw(float delta) noexcept;
+
+       void Update(int dt) noexcept;
+
+private:
+       Entity &entity;
+
+       glm::vec3 velocity;
+
+       float pitch;
+       float yaw;
+
+};
+
+}
+
+#endif