#ifndef BLANK_CONTROLLER_HPP_
#define BLANK_CONTROLLER_HPP_
+#include "entity.hpp"
+#include "geometry.hpp"
+
#include <glm/glm.hpp>
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 OrientationVelocity(const glm::vec3 &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