File tree 1 file changed +28
-1
lines changed 1 file changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -37,7 +37,19 @@ GameObject::~GameObject()
37
37
for (Component* component : m_components)
38
38
delete component;
39
39
40
- // TODO: Falta quitar el objeto de la pool cuando se destruye
40
+ s_game_objects_by_id.erase (m_identifier);
41
+ auto s = s_game_objects_by_name.find (m_name);
42
+ if (s != s_game_objects_by_name.end ())
43
+ {
44
+ for (std::vector<GameObject*>::iterator i = s->second .begin (); i != s->second .end (); ++i)
45
+ {
46
+ if (*i == this )
47
+ {
48
+ s->second .erase (i);
49
+ i = s->second .end ();
50
+ }
51
+ }
52
+ }
41
53
}
42
54
43
55
@@ -55,6 +67,21 @@ const std::string& GameObject::getName() const
55
67
56
68
void GameObject::setName (const std::string& name)
57
69
{
70
+ // Remove from existing name group
71
+ auto s = s_game_objects_by_name.find (m_name);
72
+ if (s != s_game_objects_by_name.end ())
73
+ {
74
+ for (std::vector<GameObject*>::iterator i = s->second .begin (); i != s->second .end (); ++i)
75
+ {
76
+ if (*i == this )
77
+ {
78
+ s->second .erase (i);
79
+ i = s->second .end ();
80
+ }
81
+ }
82
+ }
83
+
84
+ // Add to new name group
58
85
m_name = name;
59
86
auto go_group = s_game_objects_by_name.find (name);
60
87
if (go_group == s_game_objects_by_name.end ())
You can’t perform that action at this time.
0 commit comments