Beispiel #1
0
//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();
}
Beispiel #2
0
//------------------------------------------------------------------------
void CWeaponSystem::RemoveProjectile(CProjectile *pProjectile)
{
	m_projectiles.erase(pProjectile->GetEntity()->GetId());

	RemoveFromPool(pProjectile);
}