-#ifndef BLANK_APP_RANDOMWALK_HPP_
-#define BLANK_APP_RANDOMWALK_HPP_
+#ifndef BLANK_AI_RANDOMWALK_HPP_
+#define BLANK_AI_RANDOMWALK_HPP_
+
+#include "Controller.hpp"
+
+#include "../rand/GaloisLFSR.hpp"
#include <glm/glm.hpp>
namespace blank {
-class Entity;
-
/// Randomly start or stop moving in axis directions every now and then.
-class RandomWalk {
+class RandomWalk
+: public Controller {
public:
- explicit RandomWalk(Entity &) noexcept;
+ RandomWalk(Entity &, std::uint64_t seed) noexcept;
+ ~RandomWalk();
- void Update(int dt) noexcept;
+ void Update(int dt) override;
private:
- Entity &entity;
+ void Change() noexcept;
+
+private:
+ GaloisLFSR random;
+
+ glm::vec3 start_vel;
+ glm::vec3 target_vel;
+
+ glm::vec3 start_rot;
+ glm::vec3 target_rot;
- int time_left;
+ int switch_time;
+ float lerp_max;
+ float lerp_time;
};