class SmokeSimulation : Managed
{
	protected Particle 			m_ParMainSmoke;
	int particle_id;
	
	void SmokeSimulation()
	{
		particle_id = ParticleList.GRENADE_M18_PURPLE_LOOP;
	}

	void OnFire( Entity flare)
	{
		m_ParMainSmoke = ParticleManager.GetInstance().PlayOnObject( particle_id, flare);
		m_ParMainSmoke.SetWiggle( 7, 0.3);
	}

	void ~SmokeSimulation()
	{
		if (m_ParMainSmoke)
			m_ParMainSmoke.Stop();
	}
}

class SmokeSimulation_Black : SmokeSimulation
{
	void SmokeSimulation_Black()
	{
		particle_id = ParticleList.GRENADE_M18_BLACK_LOOP;
	}
}
class SmokeSimulation_White : SmokeSimulation
{
	void SmokeSimulation_White()
	{
		particle_id = ParticleList.GRENADE_M18_WHITE_LOOP;
	}
}
class SmokeSimulation_Red : SmokeSimulation
{
	void SmokeSimulation_Red()
	{
		particle_id = ParticleList.GRENADE_M18_RED_LOOP;
	}
}
class SmokeSimulation_Green : SmokeSimulation
{
	void SmokeSimulation_Green()
	{
		particle_id = ParticleList.GRENADE_M18_GREEN_LOOP;
	}
}
