coolantsteam.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. class EffCoolantSteam : EffVehicleSmoke
  2. {
  3. override void SetParticleStateLight()
  4. {
  5. SetParticleState( ParticleList.HATCHBACK_COOLANT_OVERHEATING );
  6. UpdateParticle();
  7. }
  8. override void SetParticleStateHeavy()
  9. {
  10. SetParticleState( ParticleList.HATCHBACK_COOLANT_OVERHEATED );
  11. UpdateParticle();
  12. }
  13. void UpdateParticle()
  14. {
  15. Car parent = Car.Cast( GetAttachmentParent() );
  16. Particle p = GetParticle();
  17. if (parent && p)
  18. {
  19. float speed = parent.GetSpeedometerAbsolute();
  20. float lifetime_scale = (100 - speed) / 100;
  21. if (lifetime_scale < 0.1)
  22. lifetime_scale = 0.1;
  23. float birthrate_scale = 1 + (speed * 0.02 );
  24. float speed_scale = 1 + (speed * 0.2 );
  25. if (speed_scale > 10)
  26. speed_scale = 10;
  27. float size_scale = 1 + (speed * 0.05 );
  28. if (size_scale > 2.5)
  29. size_scale = 2.5;
  30. float gravity_add = speed * 0.005 ;
  31. p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME, lifetime_scale );
  32. p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME_RND, lifetime_scale );
  33. p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE, birthrate_scale );
  34. p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE_RND, birthrate_scale );
  35. p.ScaleParticleParamFromOriginal( EmitorParam.VELOCITY, speed_scale );
  36. p.ScaleParticleParamFromOriginal( EmitorParam.VELOCITY_RND, speed_scale );
  37. p.ScaleParticleParamFromOriginal( EmitorParam.SIZE, size_scale );
  38. p.SetParticleParam ( EmitorParam.GRAVITY_SCALE, gravity_add );
  39. }
  40. }
  41. }