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
{
12
class
ObjectIndexBinding
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
:
37
ObjectIndexBinding
();
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
GrailPlanners
ObjectIndexBinding.hh
Generated by
1.8.17