MaidPoseWindow.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 poseSelectorPane;
  12. private MaidFaceLookPane maidFaceLookPane;
  13. private MaidDressingPane maidDressingPane;
  14. private Toggle freeLookToggle;
  15. public MaidPoseWindow(MeidoManager meidoManager)
  16. {
  17. this.meidoManager = meidoManager;
  18. this.meidoManager.SelectMeido += OnMeidoSelect;
  19. this.poseSelectorPane = new MaidPoseSelectorPane(meidoManager);
  20. this.maidFaceLookPane = new MaidFaceLookPane(meidoManager);
  21. this.maidFaceLookPane.Enabled = false;
  22. this.maidDressingPane = new MaidDressingPane(meidoManager);
  23. TabsPane.TabChange += OnTabChange;
  24. this.freeLookToggle = new Toggle(Translation.Get("freeLook", "freeLookToggle"), false);
  25. this.freeLookToggle.ControlEvent += (s, a) =>
  26. {
  27. TBody body = this.meidoManager.ActiveMeido.Maid.body0;
  28. body.trsLookTarget = this.freeLookToggle.Value ? null : GameMain.Instance.MainCamera.transform;
  29. this.maidFaceLookPane.Enabled = this.freeLookToggle.Value;
  30. if (this.freeLookToggle.Value) this.maidFaceLookPane.SetMaidLook();
  31. };
  32. }
  33. ~MaidPoseWindow()
  34. {
  35. TabsPane.TabChange -= OnTabChange;
  36. }
  37. public override void Draw(params GUILayoutOption[] layoutOptions)
  38. {
  39. MaidSwitcherPane.Draw();
  40. poseSelectorPane.Draw();
  41. GUILayout.BeginScrollView(this.scrollPos);
  42. GUILayout.BeginHorizontal();
  43. GUI.enabled = this.meidoManager.HasActiveMeido;
  44. freeLookToggle.Draw();
  45. GUILayout.EndHorizontal();
  46. maidFaceLookPane.Draw();
  47. maidDressingPane.Draw();
  48. GUILayout.EndScrollView();
  49. }
  50. private void UpdatePanes()
  51. {
  52. if (!this.meidoManager.HasActiveMeido) return;
  53. if (TabsPane.SelectedTab == Constants.Window.Pose)
  54. {
  55. maidFaceLookPane.Update();
  56. maidDressingPane.Update();
  57. }
  58. }
  59. private void OnMeidoSelect(object sender, MeidoChangeEventArgs args)
  60. {
  61. UpdatePanes();
  62. }
  63. private void OnTabChange(object sender, EventArgs args)
  64. {
  65. UpdatePanes();
  66. }
  67. }
  68. }