Grail (C++)
1.4.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
{
17
class
ObjectIndexBinding
18
{
19
friend
class
DomainTranslator
;
20
21
public
:
24
bool
TryGetIndexOfObject
(
const
IPlannerObject
*
object
,
unsigned
int
& outIndex)
const
;
25
30
template
<
class
ObjectClass>
31
ObjectClass*
GetObjectByIndex
(
unsigned
int
index)
const
32
{
33
auto
iter = indexToObjectBinding.find(index);
34
if
(iter == indexToObjectBinding.end())
35
{
36
return
nullptr
;
37
}
38
return
static_cast<
ObjectClass*
>
(iter->second);
39
}
40
41
private
:
42
ObjectIndexBinding
();
43
void
CreateBinding(
const
std::vector<IPlannerObject*>& plannerObjects);
44
45
std::map<const IPlannerObject*, unsigned int> objectToIndexBinding{};
46
std::map<unsigned int, IPlannerObject*> indexToObjectBinding{};
47
};
48
}
49
}
50
#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:20
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:31
grail::planner::ObjectIndexBinding
Definition:
ObjectIndexBinding.hh:17
GrailPlanners
ObjectIndexBinding.hh
Generated by
1.8.17