GameKit  0.0.1a
C++ gamedev tools
LifetimeController.cpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: LifetimeController.cpp
5  *
6  * Description:
7  *
8  * Created: 26/01/2018 01:20:41
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
16 
17 namespace gk {
18 
20  for(size_t i = 0 ; i < objects.size() ; i++) {
21  if (objects[i].has<SceneObjectList>())
22  update(objects[i].get<SceneObjectList>());
23 
24  if(objects[i].has<LifetimeComponent>()) {
25  auto &lifetimeComponent = objects[i].get<LifetimeComponent>();
26  if (lifetimeComponent.dead(objects[i]) && lifetimeComponent.areClientsNotified()) {
27  bool canDelete = true;
28  if (objects[i].has<SceneObjectList>()) {
29  for (SceneObject &object : objects[i].get<SceneObjectList>()) {
30  if (object.has<LifetimeComponent>() && !object.get<LifetimeComponent>().dead(object)) {
31  canDelete = false;
32  break;
33  }
34  }
35  }
36 
37  if (canDelete)
38  objects.remove(i--);
39  }
40  }
41  }
42 }
43 
44 } // namespace gk
45 
void update(SceneObjectList &objectList) override
void remove(size_t n)