blob: 85ad90515717be8facd0baafa1787e66b4353c56 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/** ---------------------------------------------------------------------------
* @file: entitymanager.h
*
* Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com>
* MIT License, see LICENSE file for more details.
* ----------------------------------------------------------------------------
*/
#ifndef YAGE_ENGINE_ENTITYMANAGER_H
#define YAGE_ENGINE_ENTITYMANAGER_H
#include "entity.h"
#include <vector>
namespace yage
{
class Space;
/**
* Manages entities in a space.
*/
class EntityManager
{
public:
/**
* Default instance of an EntityManager.
*/
EntityManager() = default;
/**
* Creates an instance of the entity manager, which refers back to the space
* it was created in and belongs to.
*
* @param space Current space that the EntityManager belongs to.
*/
EntityManager(Space *space);
/**
* Creates an instance of the entitiy manager with an initial size.
*
* @param space Current space that the EntityManager belongs to.
* @param n Initial size of the EntityManager.
*/
EntityManager(Space *space, std::size_t n);
/**
* Creates an Entity and returns the handle to the entity, which can then be
* used by the user to do operations on it.
*
* @return The handle to the entity that was created in the space.
*/
unsigned createEntity();
private:
/**
* The next available handle to give to the user.
*/
Entity next_entity_ = 0;
/**
* The space that the entity manager belongs to.
*/
Space *space_;
/**
* The entities in the current space.
*/
std::vector<Entity> entities_;
};
} // namespace yage
#endif
|