PoseWindowPane.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using UnityEngine;
  3. namespace COM3D2.MeidoPhotoStudio.Plugin
  4. {
  5. internal class PoseWindowPane : BaseWindowPane
  6. {
  7. private MeidoManager meidoManager;
  8. private MaidPoseSelectorPane maidPosePane;
  9. private MaidSwitcherPane maidSwitcherPane;
  10. private MaidFaceLookPane maidFaceLookPane;
  11. private MaidDressingPane maidDressingPane;
  12. private MaidIKPane maidIKPane;
  13. private Toggle freeLookToggle;
  14. public PoseWindowPane(MeidoManager meidoManager, MaidSwitcherPane maidSwitcherPane)
  15. {
  16. this.meidoManager = meidoManager;
  17. this.maidSwitcherPane = maidSwitcherPane;
  18. // this.meidoManager.UpdateMeido += UpdateMeido;
  19. // this.meidoManager.FreeLookChange += UpdateMeido;
  20. this.maidPosePane = new MaidPoseSelectorPane(meidoManager);
  21. this.maidFaceLookPane = new MaidFaceLookPane(meidoManager);
  22. this.maidFaceLookPane.Enabled = false;
  23. this.maidDressingPane = new MaidDressingPane(meidoManager);
  24. this.maidIKPane = new MaidIKPane(meidoManager);
  25. this.freeLookToggle = new Toggle(Translation.Get("freeLook", "freeLookToggle"), false);
  26. this.freeLookToggle.ControlEvent += (s, a) => SetMaidFreeLook();
  27. }
  28. protected override void ReloadTranslation()
  29. {
  30. this.freeLookToggle.Label = Translation.Get("freeLook", "freeLookToggle");
  31. }
  32. public override void Draw()
  33. {
  34. this.maidSwitcherPane.Draw();
  35. maidPosePane.Draw();
  36. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  37. GUILayout.BeginHorizontal();
  38. GUI.enabled = this.meidoManager.HasActiveMeido;
  39. freeLookToggle.Draw();
  40. GUILayout.EndHorizontal();
  41. maidFaceLookPane.Draw();
  42. maidDressingPane.Draw();
  43. MiscGUI.WhiteLine();
  44. maidIKPane.Draw();
  45. GUILayout.EndScrollView();
  46. }
  47. private void SetMaidFreeLook()
  48. {
  49. if (this.updating) return;
  50. this.meidoManager.ActiveMeido.IsFreeLook = this.freeLookToggle.Value;
  51. }
  52. public override void UpdatePanes()
  53. {
  54. if (this.meidoManager.ActiveMeido == null) return;
  55. if (ActiveWindow)
  56. {
  57. this.updating = true;
  58. this.freeLookToggle.Value = this.meidoManager.ActiveMeido?.IsFreeLook ?? false;
  59. this.updating = false;
  60. maidPosePane.UpdatePane();
  61. maidFaceLookPane.UpdatePane();
  62. maidDressingPane.UpdatePane();
  63. maidIKPane.UpdatePane();
  64. }
  65. }
  66. private void UpdateMeido(object sender, EventArgs args)
  67. {
  68. this.UpdatePanes();
  69. }
  70. }
  71. }