Skip to content

Commit 6d8c833

Browse files
author
Alessio Linares
committed
GameObject pool done
1 parent db18008 commit 6d8c833

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

GameObject.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,19 @@ GameObject::~GameObject()
3737
for (Component* component : m_components)
3838
delete component;
3939

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+
}
4153
}
4254

4355

@@ -55,6 +67,21 @@ const std::string& GameObject::getName() const
5567

5668
void GameObject::setName(const std::string& name)
5769
{
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
5885
m_name = name;
5986
auto go_group = s_game_objects_by_name.find(name);
6087
if (go_group == s_game_objects_by_name.end())

0 commit comments

Comments
 (0)