MaidFreeLookPane.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class MaidFreeLookPane : BasePane
  4. {
  5. private readonly MeidoManager meidoManager;
  6. private readonly Slider lookXSlider;
  7. private readonly Slider lookYSlider;
  8. private readonly Toggle headToCamToggle;
  9. private readonly Toggle eyeToCamToggle;
  10. private string bindLabel;
  11. public MaidFreeLookPane(MeidoManager meidoManager)
  12. {
  13. this.meidoManager = meidoManager;
  14. lookXSlider = new(Translation.Get("freeLookPane", "xSlider"), -0.6f, 0.6f);
  15. lookXSlider.ControlEvent += (_, _) =>
  16. SetMaidLook();
  17. lookYSlider = new(Translation.Get("freeLookPane", "ySlider"), 0.5f, -0.55f);
  18. lookYSlider.ControlEvent += (_, _) =>
  19. SetMaidLook();
  20. headToCamToggle = new(Translation.Get("freeLookPane", "headToCamToggle"));
  21. headToCamToggle.ControlEvent += (_, _) =>
  22. SetHeadToCam(headToCamToggle.Value, eye: false);
  23. eyeToCamToggle = new(Translation.Get("freeLookPane", "eyeToCamToggle"));
  24. eyeToCamToggle.ControlEvent += (_, _) =>
  25. SetHeadToCam(eyeToCamToggle.Value, eye: true);
  26. bindLabel = Translation.Get("freeLookPane", "bindLabel");
  27. }
  28. public override void Draw()
  29. {
  30. GUI.enabled = meidoManager.HasActiveMeido && meidoManager.ActiveMeido.FreeLook;
  31. GUILayout.BeginHorizontal();
  32. lookXSlider.Draw();
  33. lookYSlider.Draw();
  34. GUILayout.EndHorizontal();
  35. GUI.enabled = meidoManager.HasActiveMeido;
  36. GUILayout.BeginHorizontal();
  37. GUILayout.Label(bindLabel, GUILayout.ExpandWidth(false));
  38. eyeToCamToggle.Draw();
  39. headToCamToggle.Draw();
  40. GUILayout.EndHorizontal();
  41. GUI.enabled = true;
  42. }
  43. public override void UpdatePane()
  44. {
  45. var meido = meidoManager.ActiveMeido;
  46. updating = true;
  47. SetBounds();
  48. lookXSlider.Value = meido.Body.offsetLookTarget.z;
  49. lookYSlider.Value = meido.Body.offsetLookTarget.x;
  50. eyeToCamToggle.Value = meido.EyeToCam;
  51. headToCamToggle.Value = meido.HeadToCam;
  52. updating = false;
  53. }
  54. public void SetHeadToCam(bool value, bool eye = false)
  55. {
  56. if (updating)
  57. return;
  58. var meido = meidoManager.ActiveMeido;
  59. if (eye)
  60. meido.EyeToCam = value;
  61. else
  62. meido.HeadToCam = value;
  63. }
  64. public void SetMaidLook()
  65. {
  66. if (updating)
  67. return;
  68. var body = meidoManager.ActiveMeido.Body;
  69. body.offsetLookTarget = new(lookYSlider.Value, 1f, lookXSlider.Value);
  70. }
  71. public void SetBounds()
  72. {
  73. var left = 0.5f;
  74. var right = -0.55f;
  75. if (meidoManager.ActiveMeido.Stop)
  76. {
  77. left *= 0.6f;
  78. right *= 0.6f;
  79. }
  80. lookYSlider.SetBounds(left, right);
  81. }
  82. protected override void ReloadTranslation()
  83. {
  84. lookXSlider.Label = Translation.Get("freeLookPane", "xSlider");
  85. lookYSlider.Label = Translation.Get("freeLookPane", "ySlider");
  86. headToCamToggle.Label = Translation.Get("freeLookPane", "headToCamToggle");
  87. eyeToCamToggle.Label = Translation.Get("freeLookPane", "eyeToCamToggle");
  88. bindLabel = Translation.Get("freeLookPane", "bindLabel");
  89. }
  90. }