pperflashbangeffects.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. class PPERequester_FlashbangEffects extends PPERequester_GameplayBase
  2. {
  3. const float VAL_FACTOR = 0.85;
  4. const float EXPOSURE_MAX = 50;
  5. protected float m_Exposure;
  6. protected float m_Intensity;
  7. override protected void OnStart(Param par = null)
  8. {
  9. if (!m_IsRunning)
  10. {
  11. if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets())
  12. GetGame().GetMission().GetEffectWidgets().AddActiveEffects({EffectWidgetsTypes.COVER_FLASHBANG});
  13. }
  14. super.OnStart();
  15. }
  16. override protected void OnStop(Param par = null)
  17. {
  18. super.OnStop();
  19. m_Intensity = 0.0;
  20. m_Exposure = 0.0;
  21. if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets())
  22. GetGame().GetMission().GetEffectWidgets().RemoveActiveEffects({EffectWidgetsTypes.COVER_FLASHBANG});
  23. }
  24. override protected void OnUpdate(float delta)
  25. {
  26. super.OnUpdate(delta);
  27. if (GetGame() && GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets())
  28. {
  29. Param1<float> par = new Param1<float>(1 - m_Intensity);
  30. GetGame().GetMission().GetEffectWidgets().UpdateWidgets(EffectWidgetsTypes.COVER_FLASHBANG,0,par,EffectWidgetHandles.FLASHBANG);
  31. }
  32. }
  33. void SetFlashbangIntensity(float intensity, float daytime_toggle)
  34. {
  35. m_Intensity = intensity;
  36. array<float> overlay_color = {1.0, 1.0, 1.0, intensity};
  37. if (daytime_toggle <= 5.0)
  38. {
  39. m_Exposure = Math.Clamp(intensity * daytime_toggle,0.0,EXPOSURE_MAX);
  40. }
  41. else
  42. {
  43. m_Exposure = Easing.EaseInQuart(intensity);
  44. m_Exposure = Math.Clamp(EXPOSURE_MAX * m_Exposure,0.0,EXPOSURE_MAX);
  45. }
  46. overlay_color[3] = intensity;
  47. //blur
  48. SetTargetValueFloat(PostProcessEffectType.GaussFilter,PPEGaussFilter.PARAM_INTENSITY,true,intensity,PPEGaussFilter.L_0_FLASHBANG,PPOperators.ADD_RELATIVE);
  49. //overlay
  50. SetTargetValueFloat(PostProcessEffectType.Glow,PPEGlow.PARAM_OVERLAYFACTOR,true,intensity,PPEGlow.L_20_FLASHBANG,PPOperators.HIGHEST);
  51. SetTargetValueColor(PostProcessEffectType.Glow,PPEGlow.PARAM_OVERLAYCOLOR,overlay_color,PPEGlow.L_21_FLASHBANG,PPOperators.SET);
  52. //exposure
  53. SetTargetValueFloat(PPEExceptions.EXPOSURE,PPEExposureNative.PARAM_INTENSITY,false,m_Exposure,PPEExposureNative.L_0_FLASHBANG,PPOperators.ADD);
  54. }
  55. }