void CParticleManager::Cleanup (void) { WaitForEffectsThread (); int nCurrent = -1; for (CParticleSystem* systemP = GetFirst (nCurrent), * nextP = NULL; systemP; systemP = nextP) { nextP = GetNext (nCurrent); if (systemP->m_bDestroy) { systemP->Destroy (); m_systems.Push (systemP->m_nId); } } }
void CParticleManager::RebuildSystemList (void) { #if 0 m_nUsed = m_nFree = -1; CParticleSystem *systemP = m_systems; for (int i = 0; i < MAX_PARTICLE_SYSTEMS; i++, systemP++) { if (systemP->HasEmitters ()) { systemP->SetNext (m_nUsed); m_nUsed = i; } else { systemP->Destroy (); systemP->SetNext (m_nFree); m_nFree = i; } } #endif }