@@ -16,6 +16,7 @@ GameObjectsManager::~GameObjectsManager()
1616 mProjectilesPool .cleanup ();
1717 mDecorationsPool .cleanup ();
1818 mObstaclesPool .cleanup ();
19+ mExplosionsPool .cleanup ();
1920}
2021
2122bool GameObjectsManager::InitGameObjects ()
@@ -150,6 +151,19 @@ Obstacle* GameObjectsManager::CreateObstacle(const glm::vec3& position, cxx::ang
150151 return instance;
151152}
152153
154+ Explosion* GameObjectsManager::CreateExplosion (const glm::vec3& position)
155+ {
156+ GameObjectID objectID = GenerateUniqueID ();
157+
158+ Explosion* instance = mExplosionsPool .create (objectID);
159+ debug_assert (instance);
160+
161+ mAllObjectsList .push_back (instance);
162+ // init
163+ instance->Spawn (position);
164+ return instance;
165+ }
166+
153167Decoration* GameObjectsManager::CreateDecoration (const glm::vec3& position, cxx::angle_t heading, GameObjectStyle* desc)
154168{
155169 Decoration* instance = nullptr ;
@@ -302,6 +316,13 @@ void GameObjectsManager::DestroyGameObject(GameObject* object)
302316 }
303317 break ;
304318
319+ case eGameObjectClass_Explosion:
320+ {
321+ Explosion* explosion = static_cast <Explosion*>(object);
322+ mExplosionsPool .destroy (explosion);
323+ }
324+ break ;
325+
305326 case eGameObjectClass_Powerup:
306327 default :
307328 {
@@ -397,4 +418,4 @@ bool GameObjectsManager::CreateStartupObjects()
397418 }
398419 }
399420 return true ;
400- }
421+ }
0 commit comments