math::AABB CollisionBounds() const noexcept;
glm::dmat4 CollisionTransform() const noexcept;
+ void OnCollide(Creature &other);
+
glm::dmat4 LocalTransform() noexcept;
void BuildVAO();
void Draw(graphics::Viewport &);
private:
+ void Cache() noexcept;
void TickState(double dt);
void TickStats(double dt);
void TickBrain(double dt);
Situation situation;
Steering steering;
+ // cached because steering makes heavy use of this
+ double perception_range;
+ double perception_range_squared;
+ double perception_omni_range;
+ double perception_omni_range_squared;
+ double perception_field;
+
struct Attributes {
glm::vec3 position;
glm::vec3 normal;