]> git.localhorst.tv Git - blank.git/blob - src/ai/AIController.hpp
53bdc827a5b3bc8df5b99b4c88553e6dfd5a5361
[blank.git] / src / ai / AIController.hpp
1 #ifndef BLANK_AI_AICONTROLLER_HPP_
2 #define BLANK_AI_AICONTROLLER_HPP_
3
4 #include "../world/EntityController.hpp"
5
6 #include <glm/glm.hpp>
7
8
9 namespace blank {
10
11 class GaloisLFSR;
12
13 class AIController
14 : public EntityController {
15
16 public:
17         explicit AIController(GaloisLFSR &);
18         ~AIController();
19
20         void Update(Entity &, float dt) override;
21
22         glm::vec3 ControlForce(const EntityState &) const override;
23
24         static glm::vec3 Heading(const EntityState &) noexcept;
25
26 private:
27         GaloisLFSR &random;
28
29         float chase_speed;
30         float flee_speed;
31         float stop_dist;
32         float flee_dist;
33
34         glm::vec3 wander_pos;
35         float wander_dist;
36         float wander_radius;
37         float wander_disp;
38         float wander_speed;
39
40 };
41
42 }
43
44 #endif