PoseWindowPane.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.maidPosePane = new MaidPoseSelectorPane(meidoManager);
  19. this.maidFaceLookPane = new MaidFaceLookPane(meidoManager);
  20. this.maidFaceLookPane.Enabled = false;
  21. this.maidDressingPane = new MaidDressingPane(meidoManager);
  22. this.maidIKPane = new MaidIKPane(meidoManager);
  23. this.freeLookToggle = new Toggle(Translation.Get("freeLook", "freeLookToggle"), false);
  24. this.freeLookToggle.ControlEvent += (s, a) => SetMaidFreeLook();
  25. }
  26. protected override void ReloadTranslation()
  27. {
  28. this.freeLookToggle.Label = Translation.Get("freeLook", "freeLookToggle");
  29. }
  30. public override void Draw()
  31. {
  32. this.maidSwitcherPane.Draw();
  33. maidPosePane.Draw();
  34. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  35. GUILayout.BeginHorizontal();
  36. GUI.enabled = this.meidoManager.HasActiveMeido;
  37. freeLookToggle.Draw();
  38. GUILayout.EndHorizontal();
  39. maidFaceLookPane.Draw();
  40. maidDressingPane.Draw();
  41. MiscGUI.WhiteLine();
  42. maidIKPane.Draw();
  43. GUILayout.EndScrollView();
  44. }
  45. private void SetMaidFreeLook()
  46. {
  47. if (this.updating) return;
  48. this.meidoManager.ActiveMeido.IsFreeLook = this.freeLookToggle.Value;
  49. }
  50. public override void UpdatePanes()
  51. {
  52. if (this.meidoManager.ActiveMeido == null) return;
  53. if (ActiveWindow)
  54. {
  55. this.updating = true;
  56. this.freeLookToggle.Value = this.meidoManager.ActiveMeido?.IsFreeLook ?? false;
  57. this.updating = false;
  58. maidPosePane.UpdatePane();
  59. maidFaceLookPane.UpdatePane();
  60. maidDressingPane.UpdatePane();
  61. maidIKPane.UpdatePane();
  62. }
  63. }
  64. private void UpdateMeido(object sender, EventArgs args)
  65. {
  66. this.UpdatePanes();
  67. }
  68. }
  69. }