BloomEffectManager.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. internal class BloomEffectManager : IEffectManager
  5. {
  6. private Bloom Bloom { get; set; }
  7. private float initialIntensity;
  8. private int initialBlurIterations;
  9. private Color initialThresholdColour;
  10. private Bloom.HDRBloomMode initialHDRBloomMode;
  11. public bool IsReady { get; private set; }
  12. public bool IsActive { get; private set; }
  13. private float intensity;
  14. public float Intensity
  15. {
  16. get => intensity;// m_gcBloom.GetValue();
  17. set => intensity = value;
  18. }
  19. private int blurIterations;
  20. public int BlurIterations
  21. {
  22. get => blurIterations;
  23. set => blurIterations = Bloom.bloomBlurIterations = value;
  24. }
  25. public float BloomThresholdColorRed
  26. {
  27. get => BloomThresholdColour.r;
  28. set
  29. {
  30. Color colour = Bloom.bloomThreshholdColor;
  31. BloomThresholdColour = new Color(value, colour.g, colour.b);
  32. }
  33. }
  34. public float BloomThresholdColorGreen
  35. {
  36. get => BloomThresholdColour.g;
  37. set
  38. {
  39. Color colour = Bloom.bloomThreshholdColor;
  40. BloomThresholdColour = new Color(colour.r, value, colour.b);
  41. }
  42. }
  43. public float BloomThresholdColorBlue
  44. {
  45. get => BloomThresholdColour.b;
  46. set
  47. {
  48. Color colour = Bloom.bloomThreshholdColor;
  49. BloomThresholdColour = new Color(colour.r, colour.g, value);
  50. }
  51. }
  52. private Color bloomThresholdColour;
  53. public Color BloomThresholdColour
  54. {
  55. get => bloomThresholdColour;
  56. set => bloomThresholdColour = Bloom.bloomThreshholdColor = value;
  57. }
  58. private bool HDRBloomMode;
  59. public bool BloomHDR
  60. {
  61. get => HDRBloomMode;
  62. set
  63. {
  64. Bloom.hdr = value ? Bloom.HDRBloomMode.On : Bloom.HDRBloomMode.Auto;
  65. HDRBloomMode = value;
  66. }
  67. }
  68. public void Activate()
  69. {
  70. if (Bloom == null)
  71. {
  72. IsReady = true;
  73. Bloom = GameMain.Instance.MainCamera.GetOrAddComponent<Bloom>();
  74. initialIntensity = Intensity = Bloom.bloomIntensity;
  75. initialBlurIterations = BlurIterations = Bloom.bloomBlurIterations;
  76. initialThresholdColour = BloomThresholdColour = Bloom.bloomThreshholdColor;
  77. initialHDRBloomMode = Bloom.hdr;
  78. BloomHDR = initialHDRBloomMode == Bloom.HDRBloomMode.On;
  79. }
  80. }
  81. public void Deactivate()
  82. {
  83. Intensity = initialIntensity;
  84. BlurIterations = initialBlurIterations;
  85. BloomThresholdColour = initialThresholdColour;
  86. BloomHDR = initialHDRBloomMode == Bloom.HDRBloomMode.On;
  87. BloomHDR = false;
  88. Bloom.enabled = true;
  89. IsActive = false;
  90. }
  91. public void Reset()
  92. {
  93. Bloom.bloomIntensity = initialIntensity;
  94. Bloom.bloomBlurIterations = initialBlurIterations;
  95. Bloom.bloomThreshholdColor = initialThresholdColour;
  96. Bloom.hdr = initialHDRBloomMode;
  97. }
  98. public void SetEffectActive(bool active)
  99. {
  100. Bloom.enabled = active;
  101. IsActive = active;
  102. if (this.IsActive)
  103. {
  104. Bloom.bloomIntensity = Intensity;
  105. Bloom.bloomBlurIterations = BlurIterations;
  106. Bloom.bloomThreshholdColor = BloomThresholdColour;
  107. Bloom.hdr = BloomHDR ? Bloom.HDRBloomMode.On : Bloom.HDRBloomMode.Auto;
  108. }
  109. else Reset();
  110. }
  111. public void Update()
  112. {
  113. if (IsActive)
  114. {
  115. // Fuck this stupid shit
  116. Bloom.enabled = true;
  117. Bloom.bloomIntensity = intensity;
  118. }
  119. }
  120. }
  121. }