VignetteEffectManager.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. namespace MeidoPhotoStudio.Plugin;
  2. public class VignetteEffectManager : IEffectManager
  3. {
  4. public const string Header = "EFFECT_VIGNETTE";
  5. private float initialIntensity;
  6. private float initialBlur;
  7. private float initialBlurSpread;
  8. private float initialChromaticAberration;
  9. private float blur;
  10. private float blurSpread;
  11. private float chromaticAberration;
  12. private float intensity;
  13. public bool Ready { get; private set; }
  14. public bool Active { get; private set; }
  15. public float Intensity
  16. {
  17. get => intensity;
  18. set => intensity = Vignette.intensity = value;
  19. }
  20. public float Blur
  21. {
  22. get => blur;
  23. set => blur = Vignette.blur = value;
  24. }
  25. public float BlurSpread
  26. {
  27. get => blurSpread;
  28. set => blurSpread = Vignette.blurSpread = value;
  29. }
  30. public float ChromaticAberration
  31. {
  32. get => chromaticAberration;
  33. set => chromaticAberration = Vignette.chromaticAberration = value;
  34. }
  35. private Vignetting Vignette { get; set; }
  36. public void Activate()
  37. {
  38. if (!Vignette)
  39. {
  40. Ready = true;
  41. Vignette = GameMain.Instance.MainCamera.GetOrAddComponent<Vignetting>();
  42. Vignette.mode = Vignetting.AberrationMode.Simple;
  43. initialIntensity = Vignette.intensity;
  44. initialBlur = Vignette.blur;
  45. initialBlurSpread = Vignette.blurSpread;
  46. initialChromaticAberration = Vignette.chromaticAberration;
  47. }
  48. SetEffectActive(false);
  49. }
  50. public void Deactivate()
  51. {
  52. Intensity = initialIntensity;
  53. Blur = initialBlur;
  54. BlurSpread = initialBlurSpread;
  55. ChromaticAberration = initialChromaticAberration;
  56. Vignette.enabled = false;
  57. Active = false;
  58. }
  59. public void Reset()
  60. {
  61. Vignette.intensity = initialIntensity;
  62. Vignette.blur = initialBlur;
  63. Vignette.blurSpread = initialBlurSpread;
  64. Vignette.chromaticAberration = initialChromaticAberration;
  65. }
  66. public void SetEffectActive(bool active)
  67. {
  68. Vignette.enabled = active;
  69. if (Active = active)
  70. {
  71. Vignette.intensity = Intensity;
  72. Vignette.blur = Blur;
  73. Vignette.blurSpread = BlurSpread;
  74. Vignette.chromaticAberration = ChromaticAberration;
  75. }
  76. else
  77. {
  78. Reset();
  79. }
  80. }
  81. public void Update()
  82. {
  83. }
  84. }