MaidPoseWindow.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnityEngine;
  6. namespace COM3D2.MeidoPhotoStudio.Plugin
  7. {
  8. public class MaidPoseWindow : BaseMainWindow
  9. {
  10. private MeidoManager meidoManager;
  11. private MaidPoseSelectorPane maidPosePane;
  12. private MaidFaceLookPane maidFaceLookPane;
  13. private MaidDressingPane maidDressingPane;
  14. private MaidIKPane maidIKPane;
  15. private Toggle freeLookToggle;
  16. public MaidPoseWindow(MeidoManager meidoManager)
  17. {
  18. this.meidoManager = meidoManager;
  19. this.meidoManager.SelectMeido += (s, a) => UpdatePanes();
  20. this.meidoManager.FreeLookChange += (s, a) => UpdatePanes();
  21. this.maidPosePane = new MaidPoseSelectorPane(meidoManager);
  22. this.maidFaceLookPane = new MaidFaceLookPane(meidoManager);
  23. this.maidFaceLookPane.Enabled = false;
  24. this.maidDressingPane = new MaidDressingPane(meidoManager);
  25. this.maidIKPane = new MaidIKPane(meidoManager);
  26. TabsPane.TabChange += OnTabChange;
  27. this.freeLookToggle = new Toggle(Translation.Get("freeLook", "freeLookToggle"), false);
  28. this.freeLookToggle.ControlEvent += (s, a) => SetMaidFreeLook();
  29. }
  30. ~MaidPoseWindow()
  31. {
  32. TabsPane.TabChange -= OnTabChange;
  33. }
  34. public override void Draw(params GUILayoutOption[] layoutOptions)
  35. {
  36. MaidSwitcherPane.Draw();
  37. maidPosePane.Draw();
  38. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  39. GUILayout.BeginHorizontal();
  40. GUI.enabled = this.meidoManager.HasActiveMeido;
  41. freeLookToggle.Draw();
  42. GUILayout.EndHorizontal();
  43. maidFaceLookPane.Draw();
  44. maidDressingPane.Draw();
  45. MiscGUI.WhiteLine();
  46. maidIKPane.Draw();
  47. GUILayout.EndScrollView();
  48. }
  49. private void SetMaidFreeLook()
  50. {
  51. if (this.updating) return;
  52. this.meidoManager.ActiveMeido.IsFreeLook = this.freeLookToggle.Value;
  53. }
  54. private void UpdatePanes()
  55. {
  56. if (this.meidoManager.ActiveMeido == null)
  57. {
  58. this.updating = true;
  59. this.freeLookToggle.Value = false;
  60. this.updating = false;
  61. return;
  62. }
  63. if (TabsPane.SelectedTab == Constants.Window.Pose)
  64. {
  65. this.updating = true;
  66. this.freeLookToggle.Value = this.meidoManager.ActiveMeido?.IsFreeLook ?? false;
  67. this.updating = false;
  68. maidPosePane.Update();
  69. maidFaceLookPane.Update();
  70. maidDressingPane.Update();
  71. maidIKPane.Update();
  72. }
  73. }
  74. private void OnTabChange(object sender, EventArgs args)
  75. {
  76. UpdatePanes();
  77. }
  78. }
  79. }