]> git.localhorst.tv Git - blank.git/blobdiff - src/controller.hpp
minor optimizations in chunk
[blank.git] / src / controller.hpp
index 853eeff3bd244603727866d03df28f0f858621b7..f674e23df9a0a9375c14bc56838acf8279881594 100644 (file)
@@ -1,9 +1,9 @@
 #ifndef BLANK_CONTROLLER_HPP_
 #define BLANK_CONTROLLER_HPP_
 
+#include "entity.hpp"
 #include "geometry.hpp"
 
-#include <SDL.h>
 #include <glm/glm.hpp>
 
 
@@ -12,43 +12,45 @@ namespace blank {
 class FPSController {
 
 public:
-       FPSController();
+       explicit FPSController(Entity &) noexcept;
 
-       const glm::mat4 &Transform() const;
-       Ray Aim() const;
+       Ray Aim() const noexcept { return entity.Aim(entity.ChunkCoords()); }
 
-       void Velocity(glm::vec3 vel) { velocity = vel; dirty = true; }
-       void OrientationVelocity(const glm::vec3 &vel);
-       void Position(glm::vec3 pos) { position = pos; dirty = true; }
-       void Move(glm::vec3 delta) { Position(position + delta); }
+       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 { return pitch; }
-       void Pitch(float p);
-       void RotatePitch(float delta);
-       float Yaw() const { return yaw; }
-       void Yaw(float y);
-       void RotateYaw(float delta);
+       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 HandleKeyboard(const SDL_KeyboardEvent &);
-       void HandleMouse(const SDL_MouseMotionEvent &);
-
-       void Update(int dt);
+       void Update(int dt) noexcept;
 
 private:
+       Entity &entity;
+
        glm::vec3 velocity;
-       glm::vec3 position;
+
        float pitch;
        float yaw;
 
-       mutable glm::mat4 transform;
-       mutable bool dirty;
+};
+
 
-       float move_velocity;
-       float pitch_sensitivity;
-       float yaw_sensitivity;
+class RandomWalk {
+
+public:
+       explicit RandomWalk(Entity &) noexcept;
+
+       void Update(int dt) noexcept;
+
+private:
+       Entity &entity;
 
-       bool front, back, left, right, up, down;
+       int time_left;
 
 };