]> git.localhorst.tv Git - blank.git/blobdiff - src/controller.hpp
remove move branching from interface
[blank.git] / src / controller.hpp
index 8b2cd4eb89d0fcd9761b50ff49553241086566a4..7dd3d110181120b4f60ab5e4015d243dbc8a186a 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef BLANK_CONTROLLER_HPP_
 #define BLANK_CONTROLLER_HPP_
 
+#include "entity.hpp"
+#include "geometry.hpp"
+
 #include <glm/glm.hpp>
 
 
@@ -9,33 +12,48 @@ namespace blank {
 class FPSController {
 
 public:
-       FPSController();
-       ~FPSController();
+       explicit FPSController(Entity &);
 
-       glm::mat4 Transform() const;
+       Ray Aim() const { return entity.Aim(entity.ChunkCoords()); }
 
-       void Velocity(glm::vec3 vel) { velocity = vel; }
-       void Position(glm::vec3 pos) { position = pos; }
-       void Move(glm::vec3 delta) { position += delta; }
+       const glm::vec3 &Velocity() const { return velocity; }
+       void Velocity(const glm::vec3 &vel) { velocity = vel; }
 
        // all angles in radians (full circle = 2π)
        float Pitch() const { return pitch; }
-       void Pitch(float p) { pitch = p; }
-       void RotatePitch(float delta) { pitch += delta; }
+       void Pitch(float p);
+       void RotatePitch(float delta);
        float Yaw() const { return yaw; }
-       void Yaw(float y) { yaw = y; }
-       void RotateYaw(float delta) { yaw += delta; }
+       void Yaw(float y);
+       void RotateYaw(float delta);
 
        void Update(int dt);
 
 private:
+       Entity &entity;
+
        glm::vec3 velocity;
-       glm::vec3 position;
+
        float pitch;
        float yaw;
 
 };
 
+
+class RandomWalk {
+
+public:
+       explicit RandomWalk(Entity &);
+
+       void Update(int dt);
+
+private:
+       Entity &entity;
+
+       int time_left;
+
+};
+
 }
 
 #endif