PropManagerPane.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. internal class PropManagerPane : BasePane
  5. {
  6. private PropManager propManager;
  7. private Dropdown propDropdown;
  8. private Button previousPropButton;
  9. private Button nextPropButton;
  10. private Toggle dragPointToggle;
  11. private Toggle gizmoToggle;
  12. private Button deletePropButton;
  13. private Button copyPropButton;
  14. private int CurrentDoguIndex => this.propManager.CurrentDoguIndex;
  15. public PropManagerPane(PropManager propManager)
  16. {
  17. this.propManager = propManager;
  18. this.propManager.DoguListChange += (s, a) =>
  19. {
  20. UpdatePropList();
  21. UpdateToggles();
  22. };
  23. this.propManager.DoguSelectChange += (s, a) =>
  24. {
  25. this.updating = true;
  26. this.propDropdown.SelectedItemIndex = CurrentDoguIndex;
  27. this.updating = false;
  28. UpdateToggles();
  29. };
  30. this.propDropdown = new Dropdown(this.propManager.PropNameList);
  31. this.propDropdown.SelectionChange += (s, a) =>
  32. {
  33. if (updating) return;
  34. this.propManager.SetCurrentDogu(this.propDropdown.SelectedItemIndex);
  35. UpdateToggles();
  36. };
  37. this.previousPropButton = new Button("<");
  38. this.previousPropButton.ControlEvent += (s, a) => this.propDropdown.Step(-1);
  39. this.nextPropButton = new Button(">");
  40. this.nextPropButton.ControlEvent += (s, a) => this.propDropdown.Step(1);
  41. this.dragPointToggle = new Toggle("Cube");
  42. this.dragPointToggle.ControlEvent += (s, a) =>
  43. {
  44. if (this.updating || this.propManager.DoguCount == 0) return;
  45. this.propManager.CurrentDogu.DragPointEnabled = dragPointToggle.Value;
  46. };
  47. this.gizmoToggle = new Toggle("Gizmo");
  48. this.gizmoToggle.ControlEvent += (s, a) =>
  49. {
  50. if (this.updating || this.propManager.DoguCount == 0) return;
  51. this.propManager.CurrentDogu.GizmoEnabled = gizmoToggle.Value;
  52. };
  53. this.copyPropButton = new Button("Copy");
  54. this.copyPropButton.ControlEvent += (s, a) => this.propManager.CopyDogu(CurrentDoguIndex);
  55. this.deletePropButton = new Button("Delete");
  56. this.deletePropButton.ControlEvent += (s, a) => this.propManager.RemoveDogu(CurrentDoguIndex);
  57. }
  58. public override void Draw()
  59. {
  60. float arrowButtonSize = 30;
  61. GUILayoutOption[] arrowLayoutOptions = {
  62. GUILayout.Width(arrowButtonSize),
  63. GUILayout.Height(arrowButtonSize)
  64. };
  65. float dropdownButtonHeight = arrowButtonSize;
  66. float dropdownButtonWidth = 140f;
  67. GUILayoutOption[] dropdownLayoutOptions = new GUILayoutOption[] {
  68. GUILayout.Height(dropdownButtonHeight),
  69. GUILayout.Width(dropdownButtonWidth)
  70. };
  71. MiscGUI.WhiteLine();
  72. GUI.enabled = this.propManager.DoguCount > 0;
  73. GUILayout.BeginHorizontal();
  74. this.propDropdown.Draw(dropdownLayoutOptions);
  75. this.previousPropButton.Draw(arrowLayoutOptions);
  76. this.nextPropButton.Draw(arrowLayoutOptions);
  77. GUILayout.EndHorizontal();
  78. GUILayoutOption noExpandWidth = GUILayout.ExpandWidth(false);
  79. GUILayout.BeginHorizontal();
  80. this.dragPointToggle.Draw(noExpandWidth);
  81. this.gizmoToggle.Draw(noExpandWidth);
  82. this.copyPropButton.Draw(noExpandWidth);
  83. this.deletePropButton.Draw(noExpandWidth);
  84. GUILayout.EndHorizontal();
  85. GUI.enabled = true;
  86. }
  87. private void UpdatePropList()
  88. {
  89. this.updating = true;
  90. this.propDropdown.SetDropdownItems(this.propManager.PropNameList, CurrentDoguIndex);
  91. this.updating = false;
  92. }
  93. private void UpdateToggles()
  94. {
  95. DragPointDogu dogu = this.propManager.CurrentDogu;
  96. if (dogu == null) return;
  97. this.updating = true;
  98. this.dragPointToggle.Value = dogu.DragPointEnabled;
  99. this.gizmoToggle.Value = dogu.GizmoEnabled;
  100. this.updating = false;
  101. }
  102. }
  103. }