using UnityEngine; using UnityEngine.Rendering.PostProcessing; namespace Ilumisoft.GraphicsControl.Rendering { [RequireComponent(typeof(PostProcessVolume))] public class PostProcessSettingsApplierBuiltIn : GraphicSettingsApplier { PostProcessVolume 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(); ApplySetting(); } void ApplySetting() where TGraphicSetting : ToggleGraphicSetting where TPostProcessEffect : PostProcessEffectSettings { // 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.TryGetSettings(out var effect) && GraphicSettingsManager.TryGet(out var setting)) { effect.enabled.value = setting.IsEnabled(); } } } }