3 #ifndef GRAIL_ENTITY_GROUP_H
4 #define GRAIL_ENTITY_GROUP_H
7 #include "Blackboard.hh"
17 std::shared_ptr<AIEntity> entity;
20 EntityEntry(
const std::shared_ptr<AIEntity>& entity,
int relativePriority);
27 EntityGroup(
const std::string& name,
const std::vector<EntityEntry>& entityEntries);
29 const std::string& GetName()
const;
31 void SetId(
size_t id);
34 void AddEntityEntry(
const std::shared_ptr<AIEntity>& entity,
int relativePriority);
35 void RemoveEntityEntry(
const AIEntity& entity);
36 void AddGroupBlackboard(
const std::string& name,
const std::shared_ptr<Blackboard>& blackboard);
37 void AddGlobalBlackboardMapping(std::shared_ptr<AIEntity> entity,
38 const std::vector<std::string>& blackboardNames);
40 std::shared_ptr<AIEntity> GetEntity(
const std::string& name)
const;
41 const std::vector<EntityEntry>& GetEntityEntries()
const;
42 const std::vector<std::pair<std::string, std::shared_ptr<Blackboard>>>& GetGroupBlackboards()
const;
43 const std::vector<std::pair<std::shared_ptr<AIEntity>, std::vector<std::string>>>&
44 GetGlobalBlackboardMapping()
const;
47 size_t id = std::numeric_limits<size_t>::max();
48 std::vector<EntityEntry> entityEntries{};
49 std::vector<std::pair<std::string, std::shared_ptr<Blackboard>>> groupBlackboards{};
50 std::vector<std::pair<std::shared_ptr<AIEntity>, std::vector<std::string>>> globalBlackboardMapping{};