class PPERequester_FlashbangEffects extends PPERequester_GameplayBase { const float VAL_FACTOR = 0.85; const float EXPOSURE_MAX = 50; protected float m_Exposure; protected float m_Intensity; override protected void OnStart(Param par = null) { if (!m_IsRunning) { if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets()) GetGame().GetMission().GetEffectWidgets().AddActiveEffects({EffectWidgetsTypes.COVER_FLASHBANG}); } super.OnStart(); } override protected void OnStop(Param par = null) { super.OnStop(); m_Intensity = 0.0; m_Exposure = 0.0; if (GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets()) GetGame().GetMission().GetEffectWidgets().RemoveActiveEffects({EffectWidgetsTypes.COVER_FLASHBANG}); } override protected void OnUpdate(float delta) { super.OnUpdate(delta); if (GetGame() && GetGame().GetMission() && GetGame().GetMission().GetEffectWidgets()) { Param1 par = new Param1(1 - m_Intensity); GetGame().GetMission().GetEffectWidgets().UpdateWidgets(EffectWidgetsTypes.COVER_FLASHBANG,0,par,EffectWidgetHandles.FLASHBANG); } } void SetFlashbangIntensity(float intensity, float daytime_toggle) { m_Intensity = intensity; array overlay_color = {1.0, 1.0, 1.0, intensity}; if (daytime_toggle <= 5.0) { m_Exposure = Math.Clamp(intensity * daytime_toggle,0.0,EXPOSURE_MAX); } else { m_Exposure = Easing.EaseInQuart(intensity); m_Exposure = Math.Clamp(EXPOSURE_MAX * m_Exposure,0.0,EXPOSURE_MAX); } overlay_color[3] = intensity; //blur SetTargetValueFloat(PostProcessEffectType.GaussFilter,PPEGaussFilter.PARAM_INTENSITY,true,intensity,PPEGaussFilter.L_0_FLASHBANG,PPOperators.ADD_RELATIVE); //overlay SetTargetValueFloat(PostProcessEffectType.Glow,PPEGlow.PARAM_OVERLAYFACTOR,true,intensity,PPEGlow.L_20_FLASHBANG,PPOperators.HIGHEST); SetTargetValueColor(PostProcessEffectType.Glow,PPEGlow.PARAM_OVERLAYCOLOR,overlay_color,PPEGlow.L_21_FLASHBANG,PPOperators.SET); //exposure SetTargetValueFloat(PPEExceptions.EXPOSURE,PPEExposureNative.PARAM_INTENSITY,false,m_Exposure,PPEExposureNative.L_0_FLASHBANG,PPOperators.ADD); } }