namespace blobs {
namespace creature {
+class Creature;
+
class Steering {
public:
- Steering();
+ explicit Steering(const Creature &);
~Steering();
public:
double MaxSpeed() const noexcept { return max_speed; }
public:
+ void Separate(double min_distance, double max_lookaround) noexcept;
+ void DontSeparate() noexcept;
void Halt() noexcept;
+ void Pass(const glm::dvec3 &) noexcept;
void GoTo(const glm::dvec3 &) noexcept;
glm::dvec3 Acceleration(const Situation::State &) const noexcept;
private:
bool SumForce(glm::dvec3 &out, const glm::dvec3 &in) const noexcept;
+ glm::dvec3 TargetVelocity(const Situation::State &, const glm::dvec3 &) const noexcept;
private:
- glm::dvec3 seek_target;
+ const Creature &c;
+ glm::dvec3 target;
- double max_accel = 1.0;
- double max_speed = 1.0;
+ double max_accel;
+ double max_speed;
+ double min_dist;
+ double max_look;
+ bool separating;
bool halting;
bool seeking;
+ bool arriving;
};