MaidIKPane.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. public class MaidIKPane : BasePane
  5. {
  6. private MeidoManager meidoManager;
  7. private Toggle ikToggle;
  8. private Toggle releaseIKToggle;
  9. private Toggle boneIKToggle;
  10. private enum IKToggle
  11. {
  12. IK, Release, Bone
  13. }
  14. public MaidIKPane(MeidoManager meidoManager)
  15. {
  16. this.meidoManager = meidoManager;
  17. this.meidoManager.AnimeChange += (s, a) =>
  18. {
  19. if (!this.meidoManager.HasActiveMeido) return;
  20. if (TabsPane.SelectedTab == Constants.Window.Pose) Update();
  21. };
  22. this.ikToggle = new Toggle(Translation.Get("maidPoseWindow", "ikToggle"), true);
  23. this.ikToggle.ControlEvent += (s, a) => SetIK(IKToggle.IK, this.ikToggle.Value);
  24. this.releaseIKToggle = new Toggle(Translation.Get("maidPoseWindow", "releaseToggle"));
  25. this.releaseIKToggle.ControlEvent += (s, a) => SetIK(IKToggle.Release, this.releaseIKToggle.Value);
  26. this.boneIKToggle = new Toggle(Translation.Get("maidPoseWindow", "boneToggle"));
  27. this.boneIKToggle.ControlEvent += (s, a) => SetIK(IKToggle.Bone, this.boneIKToggle.Value);
  28. }
  29. protected override void ReloadTranslation()
  30. {
  31. this.ikToggle.Label = Translation.Get("maidPoseWindow", "ikToggle");
  32. this.releaseIKToggle.Label = Translation.Get("maidPoseWindow", "releaseToggle");
  33. this.boneIKToggle.Label = Translation.Get("maidPoseWindow", "boneToggle");
  34. }
  35. private void SetIK(IKToggle toggle, bool value)
  36. {
  37. if (updating) return;
  38. if (toggle == IKToggle.IK) this.meidoManager.ActiveMeido.SetIKActive(value);
  39. else if (toggle == IKToggle.Release) this.meidoManager.ActiveMeido.IsStop = false;
  40. else if (toggle == IKToggle.Bone) this.meidoManager.ActiveMeido.IsBone = value;
  41. }
  42. public override void Update()
  43. {
  44. this.updating = true;
  45. this.ikToggle.Value = this.meidoManager.ActiveMeido.IsIK;
  46. this.releaseIKToggle.Value = this.meidoManager.ActiveMeido.IsStop;
  47. this.boneIKToggle.Value = this.meidoManager.ActiveMeido.IsBone;
  48. this.updating = false;
  49. }
  50. public override void Draw(params GUILayoutOption[] layoutOptions)
  51. {
  52. bool active = this.meidoManager.HasActiveMeido;
  53. GUILayout.BeginHorizontal();
  54. GUI.enabled = active;
  55. this.ikToggle.Draw();
  56. GUI.enabled = active ? this.meidoManager.ActiveMeido.IsStop : false;
  57. this.releaseIKToggle.Draw();
  58. GUI.enabled = active ? this.ikToggle.Value : false;
  59. this.boneIKToggle.Draw();
  60. GUILayout.EndHorizontal();
  61. }
  62. }
  63. }