class EffCoolantSteam : EffVehicleSmoke
{
	override void SetParticleStateLight()
	{
		SetParticleState( ParticleList.HATCHBACK_COOLANT_OVERHEATING );
		UpdateParticle();
	}
	
	override void SetParticleStateHeavy()
	{
		SetParticleState( ParticleList.HATCHBACK_COOLANT_OVERHEATED );
		UpdateParticle();
	}
	
	void UpdateParticle()
	{
		Car parent = Car.Cast( GetAttachmentParent() );
		Particle p = GetParticle();
		
		if (parent && p)
		{
			float speed = parent.GetSpeedometerAbsolute();
				
			float lifetime_scale = (100 - speed) / 100;
			if (lifetime_scale < 0.1)
				lifetime_scale = 0.1;
				
			float birthrate_scale = 1 + (speed * 0.02 );
				
			float speed_scale = 1 + (speed * 0.2 );
			if (speed_scale > 10)
				speed_scale = 10;
				
			float size_scale = 1 + (speed * 0.05 );
				
			if (size_scale > 2.5)
				size_scale = 2.5;
				
			float gravity_add = speed * 0.005 ;
				
			p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME, lifetime_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME_RND, lifetime_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE, birthrate_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE_RND, birthrate_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.VELOCITY, speed_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.VELOCITY_RND, speed_scale );
			p.ScaleParticleParamFromOriginal( EmitorParam.SIZE, size_scale );
			p.SetParticleParam				( EmitorParam.GRAVITY_SCALE, gravity_add );
		}
	}
}