using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; namespace Ilumisoft.GraphicsControl.Rendering.Universal { [RequireComponent(typeof(Volume))] public class PostProcessSettingsApplierURP : GraphicSettingsApplier { Volume PostProcessVolume { get; set; } GraphicSettingsManager GraphicSettingsManager { get; set; } private void Awake() { GraphicSettingsManager = FindObjectOfType(); PostProcessVolume = GetComponent(); } void Start() { ApplySettings(); } public override void ApplySettings() { ApplySetting(); ApplySetting(); ApplySetting(); ApplySetting(); } void ApplySetting() where TGraphicSetting : ToggleGraphicSetting where TPostProcessEffect : VolumeComponent { // Settings cannot be applied when no profile has been set if (PostProcessVolume.profile == null) { return; } // Try to get the effect and the settings and enable/disable effect depending on the settings if (PostProcessVolume.profile.TryGet(out var effect) && GraphicSettingsManager.TryGet(out var setting)) { effect.active = setting.IsEnabled(); } } } }