Example #1
0
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);
}
Example #2
0
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);
}