void ParticleSystemManager::UpdateSystems( float frametime ) //LRC - now with added time! { // gEngfuncs.pTriAPI->RenderMode(kRenderTransAdd); // gEngfuncs.pTriAPI->RenderMode(kRenderTransAlpha); ParticleSystem* pSystem; ParticleSystem* pLast = NULL; ParticleSystem*pLastSorted = NULL; cl_entity_t *localPlayer = gEngfuncs.GetLocalPlayer(); // vec3_t normal, forward, right, up; // gEngfuncs.GetViewAngles((float*)normal); // AngleVectors(normal,forward,right,up); //SortSystems(); pSystem = m_pFirstSystem; while( pSystem ) { if( pSystem->UpdateSystem(frametime, /*right, up,*/ localPlayer->curstate.messagenum) ) { pSystem->DrawSystem(); pLast = pSystem; pSystem = pSystem->m_pNextSystem; } else // delete this system { if (pLast) { pLast->m_pNextSystem = pSystem->m_pNextSystem; delete pSystem; pSystem = pLast->m_pNextSystem; } else // deleting the first system { m_pFirstSystem = pSystem->m_pNextSystem; delete pSystem; pSystem = m_pFirstSystem; } } } gEngfuncs.pTriAPI->RenderMode(kRenderNormal); }
void ParticleSystemManager::UpdateSystems( void ) { static float fOldTime, fTime; fOldTime = fTime; fTime = GetClientTime(); float frametime = fTime - fOldTime; ParticleSystem* pSystem; ParticleSystem* pLast = NULL; ParticleSystem*pLastSorted = NULL; SortSystems(); pSystem = m_pFirstSystem; while( pSystem ) { if( pSystem->UpdateSystem( frametime )) { pSystem->DrawSystem(); pLast = pSystem; pSystem = pSystem->m_pNextSystem; } else // delete this system { if (pLast) { pLast->m_pNextSystem = pSystem->m_pNextSystem; delete pSystem; pSystem = pLast->m_pNextSystem; } else // deleting the first system { m_pFirstSystem = pSystem->m_pNextSystem; delete pSystem; pSystem = m_pFirstSystem; } } } g_engfuncs.pTriAPI->RenderMode(kRenderNormal); }