VignetteEffectManager.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. namespace COM3D2.MeidoPhotoStudio.Plugin
  2. {
  3. internal class VignetteEffectManager : IEffectManager
  4. {
  5. private Vignetting Vignette { get; set; }
  6. private float initialIntensity;
  7. private float initialBlur;
  8. private float initialBlurSpread;
  9. private float initialChromaticAberration;
  10. public bool IsReady { get; private set; }
  11. public bool IsActive { get; private set; }
  12. private float intensity;
  13. public float Intensity
  14. {
  15. get => intensity;
  16. set => intensity = Vignette.intensity = value;
  17. }
  18. private float blur;
  19. public float Blur
  20. {
  21. get => blur;
  22. set => blur = Vignette.blur = value;
  23. }
  24. private float blurSpread;
  25. public float BlurSpread
  26. {
  27. get => blurSpread;
  28. set => blurSpread = Vignette.blurSpread = value;
  29. }
  30. private float chromaticAberration;
  31. public float ChromaticAberration
  32. {
  33. get => chromaticAberration;
  34. set => chromaticAberration = Vignette.chromaticAberration = value;
  35. }
  36. public void Activate()
  37. {
  38. if (Vignette == null)
  39. {
  40. IsReady = 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. }
  49. public void Deactivate()
  50. {
  51. Intensity = initialIntensity;
  52. Blur = initialBlur;
  53. BlurSpread = initialBlurSpread;
  54. ChromaticAberration = initialChromaticAberration;
  55. Vignette.enabled = false;
  56. IsActive = false;
  57. }
  58. public void Reset()
  59. {
  60. Vignette.intensity = initialIntensity;
  61. Vignette.blur = initialBlur;
  62. Vignette.blurSpread = initialBlurSpread;
  63. Vignette.chromaticAberration = initialChromaticAberration;
  64. }
  65. public void SetEffectActive(bool active)
  66. {
  67. Vignette.enabled = active;
  68. IsActive = active;
  69. if (this.IsActive)
  70. {
  71. Vignette.intensity = Intensity;
  72. Vignette.blur = Blur;
  73. Vignette.blurSpread = BlurSpread;
  74. Vignette.chromaticAberration = ChromaticAberration;
  75. }
  76. else Reset();
  77. }
  78. public void Update() { }
  79. }
  80. }