2 #include "Controller.hpp"
3 #include "RandomWalk.hpp"
5 #include "../world/Entity.hpp"
12 Chaser::Chaser(Entity &ctrl, Entity &tgt) noexcept
25 void Chaser::Update(int dt) {
26 glm::vec3 diff(Target().AbsoluteDifference(Controlled()));
27 float dist = dot (diff, diff);
28 // TODO: line of sight test
29 if (dist > stop_dist) {
30 Controlled().Velocity(normalize(diff) * speed);
31 } else if (dist < flee_dist) {
32 Controlled().Velocity(normalize(diff) * -speed);
34 Controlled().Velocity(glm::vec3(0.0f));
39 Controller::Controller(Entity &e) noexcept
44 Controller::~Controller() {
49 RandomWalk::RandomWalk(Entity &e) noexcept
55 RandomWalk::~RandomWalk() {
59 void RandomWalk::Update(int dt) {
61 if (time_left > 0) return;
62 time_left += 2500 + (rand() % 5000);
64 constexpr float move_vel = 0.0005f;
66 glm::vec3 new_vel = Controlled().Velocity();
70 new_vel.x = -move_vel;
79 new_vel.y = -move_vel;
88 new_vel.z = -move_vel;
98 Controlled().Velocity(new_vel);