enginesmoke.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. class EffEngineSmoke : EffVehicleSmoke
  2. {
  3. private float m_Time;
  4. static private float m_UpdateInterval = 2;
  5. void EffEngineSmoke()
  6. {
  7. SetEnableEventFrame(true);
  8. }
  9. override void SetParticleStateLight()
  10. {
  11. SetParticleState( ParticleList.HATCHBACK_ENGINE_OVERHEATING );
  12. }
  13. override void SetParticleStateHeavy()
  14. {
  15. SetParticleState( ParticleList.HATCHBACK_ENGINE_OVERHEATED );
  16. }
  17. override void Event_OnFrameUpdate(float time_delta)
  18. {
  19. m_Time += time_delta;
  20. if (m_Time >= m_UpdateInterval)
  21. {
  22. m_Time = 0;
  23. Car parent = Car.Cast( GetAttachmentParent() );
  24. if (parent)
  25. {
  26. Particle p = GetParticle();
  27. if (p)
  28. {
  29. SetParticleState( p.GetParticleID() );
  30. float speed = parent.GetSpeedometerAbsolute();
  31. float lifetime_scale;
  32. if (speed < 100)
  33. lifetime_scale = (100 - speed) / 100;
  34. else
  35. lifetime_scale = 0.1;
  36. float birthrate_scale = 1 + (speed * 0.02 );
  37. p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME, lifetime_scale );
  38. p.ScaleParticleParamFromOriginal( EmitorParam.LIFETIME_RND, lifetime_scale );
  39. p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE, birthrate_scale );
  40. p.ScaleParticleParamFromOriginal( EmitorParam.BIRTH_RATE_RND, birthrate_scale );
  41. }
  42. }
  43. }
  44. }
  45. }