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