+ glm::vec3 GetSeekForce(const Entity &, const EntityState &) const noexcept;
+
+ void StartEvading() noexcept;
+ void StopEvading() noexcept;
+ bool IsEvading() const noexcept;
+ void SetEvadeTarget(Entity &) noexcept;
+ void SetEvadeSpeed(float) noexcept;
+ Entity &GetEvadeTarget() noexcept;
+ const Entity &GetEvadeTarget() const noexcept;
+ glm::vec3 GetEvadeForce(const Entity &, const EntityState &) const noexcept;
+
+ void StartPursuing() noexcept;
+ void StopPursuing() noexcept;
+ bool IsPursuing() const noexcept;
+ void SetPursuitTarget(Entity &) noexcept;
+ void SetPursuitSpeed(float) noexcept;
+ Entity &GetPursuitTarget() noexcept;
+ const Entity &GetPursuitTarget() const noexcept;
+ glm::vec3 GetPursuitForce(const Entity &, const EntityState &) const noexcept;
+
+ /// start wandering randomly
+ void StartWandering() noexcept;
+ void StopWandering() noexcept;
+ bool IsWandering() const noexcept;
+ /// change how wandering is performed