#include "entity.hpp"
#include "geometry.hpp"
-#include <SDL.h>
#include <glm/glm.hpp>
class FPSController {
public:
- explicit FPSController(Entity &);
+ explicit FPSController(Entity &) noexcept;
- Ray Aim() const { return entity.Aim(entity.ChunkCoords()); }
+ Ray Aim() const noexcept { return entity.Aim(entity.ChunkCoords()); }
- // 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);
+ const glm::vec3 &Velocity() const noexcept { return velocity; }
+ void Velocity(const glm::vec3 &vel) noexcept { velocity = vel; }
- void HandleKeyboard(const SDL_KeyboardEvent &);
- void HandleMouse(const SDL_MouseMotionEvent &);
+ // 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);
+ void Update(int dt) noexcept;
private:
Entity &entity;
+ glm::vec3 velocity;
+
float pitch;
float yaw;
- 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;
};