pperunconeffects.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class PPERequester_UnconEffects extends PPERequester_GameplayBase
  2. {
  3. protected const float FADING_TIME_DEFAULT = 3.0;
  4. protected float m_Intensity;
  5. protected float m_FadeoutStartIntensity;
  6. protected bool m_Stopping;
  7. protected bool m_StopNext;
  8. protected float m_FadeOutTimeTarget;
  9. protected float m_FadingTimeElapsed;
  10. protected float m_FadingProgress;
  11. override protected void OnStart(Param par = null)
  12. {
  13. super.OnStart();
  14. m_Intensity = Param1<float>.Cast(par).param1;
  15. m_Stopping = false;
  16. m_StopNext = false;
  17. SetTargetValueFloat(PostProcessEffectType.Glow,PPEGlow.PARAM_VIGNETTE,false,m_Intensity,PPEGlow.L_25_UNCON,PPOperators.HIGHEST);
  18. SetTargetValueColor(PostProcessEffectType.Glow,PPEGlow.PARAM_VIGNETTECOLOR,{0.0,0.0,0.0,0.0},PPEGlow.L_26_UNCON,PPOperators.LOWEST);
  19. }
  20. override protected void OnStop(Param par = null)
  21. {
  22. super.OnStop(par);
  23. m_FadingProgress = 0.0;
  24. m_Stopping = false;
  25. m_StopNext = false;
  26. }
  27. override protected void OnUpdate(float delta)
  28. {
  29. if (m_StopNext)
  30. {
  31. if (m_IsRunning)
  32. Stop();
  33. return;
  34. }
  35. if (m_IsRunning && m_Stopping)
  36. ProcessFading(delta);
  37. super.OnUpdate(delta);
  38. if (m_IsRunning && m_Stopping)
  39. SetRequesterUpdating(true);
  40. }
  41. void FadeOutEffect(float targetTime = FADING_TIME_DEFAULT)
  42. {
  43. m_Stopping = true;
  44. m_FadeoutStartIntensity = m_Intensity;
  45. m_FadeOutTimeTarget = targetTime;
  46. m_FadingTimeElapsed = 0.0;
  47. if (m_IsRunning)
  48. SetRequesterUpdating(true);
  49. }
  50. protected void ProcessFading(float delta)
  51. {
  52. m_FadingTimeElapsed += delta;
  53. m_FadingProgress = m_FadingTimeElapsed/m_FadeOutTimeTarget;
  54. m_StopNext = m_FadingProgress >= 1.0;
  55. m_Intensity = Math.Lerp(0,m_FadeoutStartIntensity,Easing.EaseInOutQuad(1 - m_FadingProgress));
  56. SetTargetValueFloat(PostProcessEffectType.Glow,PPEGlow.PARAM_VIGNETTE,false,m_Intensity,PPEGlow.L_25_UNCON,PPOperators.HIGHEST);
  57. }
  58. }