DepthOfFieldPane.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin
  3. {
  4. public class DepthOfFieldPane : EffectPane<DepthOfFieldEffectManager>
  5. {
  6. private readonly Slider focalLengthSlider;
  7. private readonly Slider focalSizeSlider;
  8. private readonly Slider apertureSlider;
  9. private readonly Slider blurSlider;
  10. private readonly Toggle thicknessToggle;
  11. protected override DepthOfFieldEffectManager EffectManager { get; set; }
  12. public DepthOfFieldPane(EffectManager effectManager) : base(effectManager)
  13. {
  14. focalLengthSlider = new(
  15. Translation.Get("effectDof", "focalLength"), 0f, 10f, EffectManager.FocalLength
  16. );
  17. focalLengthSlider.ControlEvent += (s, a) =>
  18. {
  19. if (updating)
  20. return;
  21. EffectManager.FocalLength = focalLengthSlider.Value;
  22. };
  23. focalSizeSlider = new(Translation.Get("effectDof", "focalArea"), 0f, 2f, EffectManager.FocalSize);
  24. focalSizeSlider.ControlEvent += (s, a) =>
  25. {
  26. if (updating)
  27. return;
  28. EffectManager.FocalSize = focalSizeSlider.Value;
  29. };
  30. apertureSlider = new(Translation.Get("effectDof", "aperture"), 0f, 60f, EffectManager.Aperture);
  31. apertureSlider.ControlEvent += (s, a) =>
  32. {
  33. if (updating)
  34. return;
  35. EffectManager.Aperture = apertureSlider.Value;
  36. };
  37. blurSlider = new(Translation.Get("effectDof", "blur"), 0f, 10f, EffectManager.MaxBlurSize);
  38. blurSlider.ControlEvent += (s, a) =>
  39. {
  40. if (updating)
  41. return;
  42. EffectManager.MaxBlurSize = blurSlider.Value;
  43. };
  44. thicknessToggle = new(Translation.Get("effectDof", "thicknessToggle"), EffectManager.VisualizeFocus);
  45. thicknessToggle.ControlEvent += (s, a) =>
  46. {
  47. if (updating)
  48. return;
  49. EffectManager.VisualizeFocus = thicknessToggle.Value;
  50. };
  51. }
  52. protected override void TranslatePane()
  53. {
  54. focalLengthSlider.Label = Translation.Get("effectDof", "focalLength");
  55. focalSizeSlider.Label = Translation.Get("effectDof", "focalArea");
  56. apertureSlider.Label = Translation.Get("effectDof", "aperture");
  57. blurSlider.Label = Translation.Get("effectDof", "blur");
  58. thicknessToggle.Label = Translation.Get("effectDof", "thicknessToggle");
  59. }
  60. protected override void UpdateControls()
  61. {
  62. focalLengthSlider.Value = EffectManager.FocalLength;
  63. focalSizeSlider.Value = EffectManager.FocalSize;
  64. apertureSlider.Value = EffectManager.Aperture;
  65. blurSlider.Value = EffectManager.MaxBlurSize;
  66. thicknessToggle.Value = EffectManager.VisualizeFocus;
  67. }
  68. protected override void DrawPane()
  69. {
  70. focalLengthSlider.Draw();
  71. var sliderWidth = MpsGui.HalfSlider;
  72. GUILayout.BeginHorizontal();
  73. focalSizeSlider.Draw(sliderWidth);
  74. apertureSlider.Draw(sliderWidth);
  75. GUILayout.EndHorizontal();
  76. GUILayout.BeginHorizontal();
  77. blurSlider.Draw(sliderWidth);
  78. GUILayout.FlexibleSpace();
  79. thicknessToggle.Draw();
  80. GUILayout.EndHorizontal();
  81. GUI.enabled = true;
  82. }
  83. }
  84. }