PostProcessingManager.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.Rendering.PostProcessing;
  4. namespace HQFPSWeapons
  5. {
  6. public class PostProcessingManager : Singleton<PostProcessingManager>
  7. {
  8. [SerializeField]
  9. private PostProcessVolume m_PPVolume = null;
  10. [BHeader("DeathAnim")]
  11. [SerializeField]
  12. private float m_DeathAnimSpeed = 1f;
  13. [SerializeField]
  14. [Range(-1,0)]
  15. private float m_MinSaturationAmount = -1f;
  16. private PostProcessProfile m_EditorProfile;
  17. private PostProcessProfile m_Profile;
  18. private float m_DefaultSaturation;
  19. private ColorGrading m_ColorGrading;
  20. private bool m_PlayerDead;
  21. public void EnableAimBlur(bool enable)
  22. {
  23. var depthOfField = m_Profile.GetSetting<DepthOfField>();
  24. depthOfField.active = enable;
  25. }
  26. public void DoDeathAnim()
  27. {
  28. m_PlayerDead = true;
  29. StartCoroutine(C_DoDeathAnim());
  30. }
  31. public void RestoreDefaultProfile()
  32. {
  33. m_PlayerDead = false;
  34. }
  35. private void Awake()
  36. {
  37. m_EditorProfile = m_PPVolume.profile;
  38. m_Profile = Instantiate(m_EditorProfile);
  39. m_PPVolume.profile = m_Profile;
  40. m_ColorGrading = m_PPVolume.profile.GetSetting<ColorGrading>();
  41. m_DefaultSaturation = m_ColorGrading.saturation;
  42. }
  43. private void OnDestroy()
  44. {
  45. m_PPVolume.profile = m_EditorProfile;
  46. }
  47. private IEnumerator C_DoDeathAnim()
  48. {
  49. float saturation = m_ColorGrading.saturation.value;
  50. float requiredSaturation = m_MinSaturationAmount * 100;
  51. while (m_PlayerDead)
  52. {
  53. saturation = Mathf.Lerp(saturation, requiredSaturation, Time.deltaTime * m_DeathAnimSpeed);
  54. m_ColorGrading.saturation.value = saturation;
  55. yield return null;
  56. }
  57. if(!m_PlayerDead)
  58. m_ColorGrading.saturation.value = m_DefaultSaturation;
  59. }
  60. }
  61. }