Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
ObjectIndexBinding.hh
1 #ifndef GRAIL_OBJECT_INDEX_BINDING_H
2 #define GRAIL_OBJECT_INDEX_BINDING_H
3 
4 #include "IPlannerObject.hh"
5 
6 namespace grail
7 {
8  namespace planning
9  {
13  {
14  friend class DomainTranslator;
15 
16  public:
19  bool TryGetIndexOfObject(const IPlannerObject* object, unsigned int& outIndex) const;
20 
25  template <class ObjectClass>
26  ObjectClass* GetObjectByIndex(unsigned int index) const
27  {
28  auto iter = indexToObjectBinding.find(index);
29  if(iter == indexToObjectBinding.end())
30  {
31  return nullptr;
32  }
33  return static_cast<ObjectClass*>(iter->second);
34  }
35 
36  private:
38  void CreateBinding(const std::vector<IPlannerObject*>& plannerObjects);
39 
40  std::map<const IPlannerObject*, unsigned int> objectToIndexBinding{};
41  std::map<unsigned int, IPlannerObject*> indexToObjectBinding{};
42  };
43  }
44 }
45 #endif //GRAIL_OBJECT_INDEX_BINDING_H
grail::planning::IPlannerObject
The interface to be implemented by classes that should be converted and bound to plan-space WorldObje...
Definition: IPlannerObject.hh:14
grail::planning::DomainTranslator
Definition: DomainTranslator.hh:17
grail::planning::ObjectIndexBinding::TryGetIndexOfObject
bool TryGetIndexOfObject(const IPlannerObject *object, unsigned int &outIndex) const
Definition: ObjectIndexBinding.cpp:11
grail::planning::ObjectIndexBinding
Definition: ObjectIndexBinding.hh:12
grail::planning::ObjectIndexBinding::GetObjectByIndex
ObjectClass * GetObjectByIndex(unsigned int index) const
Definition: ObjectIndexBinding.hh:26