#pragma once class HeroAgent; class BaseAgent; class BtEvent; class EventHandler; class BtContext : public std::enable_shared_from_this { public: virtual ~BtContext(); void AddHandler(CreatureWeakPtr target, std::weak_ptr handler); void AddEvent(std::shared_ptr event); bool HasEvent(); void FireEvent(BaseAgent* agent); private: std::vector> events_; std::vector>> handlers_; };