  | 
  
    Grail (C++)
    1.3.0
    
   A multi-platform, modular, universal engine for embedding advanced AI in games. 
   | 
 
 
 
 
    3 #ifndef GRAIL_AI_MANAGER_H 
    4 #define GRAIL_AI_MANAGER_H 
    7 #include "EntityGroup.h" 
    8 #include "SynchronizedEntityContainer.h" 
   26         virtual void OnEntityRemoved(
const AIManager& manager, 
size_t entityId) = 0;
 
   62         void RegisterAIEntity(
const std::shared_ptr<AIEntity>& entity, 
int priority);
 
   74                               const std::shared_ptr<AIEntity>& parent,
 
   75                               int priorityOffset = 1);
 
  125         void UnsubscribeFromBlackboard(
const std::string& blackboardName, 
AIEntity& entity);
 
  139         const std::vector<std::pair<std::shared_ptr<AIEntity>, 
int>>& GetEntities() 
const;
 
  140         const std::vector<std::shared_ptr<EntityGroup>>& GetEntityGroups() 
const;
 
  141         const std::map<std::string, std::shared_ptr<Blackboard>>& GetSharedBlackboards() 
const;
 
  145         void RequestProcessingEntities();
 
  146         void ThreadUpdate(std::size_t 
id);
 
  148         void RemoveEntities();
 
  149         void RegisterEntity(
const std::shared_ptr<AIEntity>& entity, 
int priority);
 
  152                                                           const std::vector<std::pair<std::shared_ptr<AIEntity>, 
int>>&
 
  154                                                           const std::map<std::string, std::shared_ptr<Blackboard>>&
 
  155                                                           nameBlackboardPairs);
 
  157         std::vector<std::pair<std::shared_ptr<AIEntity>, 
int>> entities{};
 
  158         std::set<AIEntity*> entitiesToRemove{};
 
  159         std::map<std::string, std::shared_ptr<Blackboard>> sharedBlackboards{};
 
  162         std::atomic<bool> shouldTerminateWorkers = {0};
 
  164         std::vector<std::thread> threads{};
 
  165         std::mutex blackboardMutex{};
 
  166         mutable std::mutex entitiesMutex{};
 
  168         std::vector<std::shared_ptr<EntityGroup>> entityGroups{};
 
  169         std::vector<IEntityChangeObserver*> entityChangeObservers{};
 
  170         std::shared_ptr<EntityGroup> ungroupedEntities;
 
  173 #endif  //GRAIL_AI_MANAGER_H 
  
 
void RegisterAIEntity(const std::shared_ptr< AIEntity > &entity, int priority)
RegisterAIEntity - Manager registers an entity with a given priority. As a result entities and their ...
Definition: AIManager.cpp:143
 
void RegisterEntityGroup(const std::shared_ptr< EntityGroup > &entityGroup, int priority)
RegisterEntityGroup - Manager registers an entity group (and its entities) with the given priority....
Definition: AIManager.cpp:214
 
void RemoveAIEntity(AIEntity *entity)
RemoveAIEntity - Manager caches given entity. Later on all cached entities will be unregistered from ...
Definition: AIManager.cpp:193
 
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
 
The AIManager class - Manages registered entities and shared blackboards.
Definition: AIManager.hh:32
 
AIManager(std::size_t threadsNumber=0)
AIManager - Constructs a manager and spawns worker threads defined by the parameter....
Definition: AIManager.cpp:12
 
void UpdateEntities(float deltaTime)
UpdateEntities - Updates entities and their assigned behaviors.
Definition: AIManager.cpp:126
 
Blackboard & CreateBlackboard(const std::string &name)
CreateBlackboard - Constructs blackboard owned by this manager.
Definition: AIManager.cpp:309
 
bool ContainsEntity(const AIEntity &entity) const
ContainsEntity - Checks if a given entity is registered in the manager.
Definition: AIManager.cpp:246
 
The Blackboard class - grail's universal data container.
Definition: Blackboard.hh:15
 
void RemoveEntityChangeObserver(IEntityChangeObserver *observer)
RemoveEntityChangeObserver - Removes an entity change observer so it no longer will be notified on ad...
Definition: AIManager.cpp:349
 
void RegisterEntityChangeObserver(IEntityChangeObserver *observer)
RegisterEntityChangeObserver - Registers an entity change observer that will be notified via OnEntity...
Definition: AIManager.cpp:344
 
Definition: EntityToken.hh:8
 
Definition: AIManager.hh:15
 
void SubscribeToBlackboard(const std::string &blackboardName, AIEntity &entity)
SubscribeToBlackboard - Subscribes a given entity to a blackboard identified by the provided blackboa...
Definition: AIManager.cpp:317
 
void UpdateReasoners()
UpdateReasoners - Lets registered entities think by updating their reasoner.
Definition: AIManager.cpp:90
 
void RemoveEntityGroup(const std::shared_ptr< EntityGroup > &entityGroup)
RemoveEntityGroup - Manager removes entity group and caches its entities for removal....
Definition: AIManager.cpp:237
 
Definition: SynchronizedEntityContainer.h:15