//Data driven approach - objects ask modules for initialization void SceneModule::ProcessQueuedObjects() { //Remove deleted objects m_GameObjectsJustRemoved.ProcessQueued(); //Remove objects from the pool DestroyRemovedObjects(); Application::ProcessQeuedObjectsInModules(); RemoveFromPool(); m_GameObjectsJustRemoved.Clear(); //Init added objects m_GameObjectsJustAdded.ProcessQueued(); for (int i = 0; i < m_GameObjectsJustAdded.Size(); ++i) { m_GameObjectsJustAdded[i]->SignalInitialization(); } //Add to the pool and call Awake() on each component for (int i = 0; i < m_GameObjectsJustAdded.Size(); ++i) { m_GameObjects.push_back(std::unique_ptr<GameObject>(m_GameObjectsJustAdded[i])); } for (int i = 0; i < m_GameObjectsJustAdded.Size(); ++i) { m_GameObjectsJustAdded[i]->Initialize(); } Application::ProcessQeuedObjectsInModules(); m_GameObjectsJustAdded.Clear(); }
//------------------------------------------------------------------------ void CWeaponSystem::RemoveProjectile(CProjectile *pProjectile) { m_projectiles.erase(pProjectile->GetEntity()->GetId()); RemoveFromPool(pProjectile); }