| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | using System.Collections;using UnityEngine;using UnityEngine.Rendering.PostProcessing;namespace HQFPSWeapons{    public class PostProcessingManager : Singleton<PostProcessingManager>    {        [SerializeField]        private PostProcessVolume m_PPVolume = null;        [BHeader("DeathAnim")]        [SerializeField]        private float m_DeathAnimSpeed = 1f;        [SerializeField]        [Range(-1,0)]        private float m_MinSaturationAmount = -1f;        private PostProcessProfile m_EditorProfile;        private PostProcessProfile m_Profile;        private float m_DefaultSaturation;        private ColorGrading m_ColorGrading;        private bool m_PlayerDead;        public void EnableAimBlur(bool enable)        {            var depthOfField = m_Profile.GetSetting<DepthOfField>();                        depthOfField.active = enable;        }        public void DoDeathAnim()         {            m_PlayerDead = true;            StartCoroutine(C_DoDeathAnim());        }        public void RestoreDefaultProfile()         {            m_PlayerDead = false;        }        private void Awake()        {            m_EditorProfile = m_PPVolume.profile;            m_Profile = Instantiate(m_EditorProfile);            m_PPVolume.profile = m_Profile;            m_ColorGrading = m_PPVolume.profile.GetSetting<ColorGrading>();            m_DefaultSaturation = m_ColorGrading.saturation;        }        private void OnDestroy()        {            m_PPVolume.profile = m_EditorProfile;        }        private IEnumerator C_DoDeathAnim()         {            float saturation = m_ColorGrading.saturation.value;            float requiredSaturation = m_MinSaturationAmount * 100;            while (m_PlayerDead)             {                saturation = Mathf.Lerp(saturation, requiredSaturation, Time.deltaTime * m_DeathAnimSpeed);                m_ColorGrading.saturation.value = saturation;                yield return null;            }            if(!m_PlayerDead)                m_ColorGrading.saturation.value = m_DefaultSaturation;        }    }}
 |