PropManagerPane.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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(Translation.Get("propManagerPane", "dragPointToggle"));
  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(Translation.Get("propManagerPane", "gizmoToggle"));
  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(Translation.Get("propManagerPane", "copyButton"));
  54. this.copyPropButton.ControlEvent += (s, a) => this.propManager.CopyDogu(CurrentDoguIndex);
  55. this.deletePropButton = new Button(Translation.Get("propManagerPane", "deleteButton"));
  56. this.deletePropButton.ControlEvent += (s, a) => this.propManager.RemoveDogu(CurrentDoguIndex);
  57. }
  58. protected override void ReloadTranslation()
  59. {
  60. this.dragPointToggle.Label = Translation.Get("propManagerPane", "dragPointToggle");
  61. this.gizmoToggle.Label = Translation.Get("propManagerPane", "gizmoToggle");
  62. this.copyPropButton.Label = Translation.Get("propManagerPane", "copyButton");
  63. this.deletePropButton.Label = Translation.Get("propManagerPane", "deleteButton");
  64. }
  65. public override void Draw()
  66. {
  67. float arrowButtonSize = 30;
  68. GUILayoutOption[] arrowLayoutOptions = {
  69. GUILayout.Width(arrowButtonSize),
  70. GUILayout.Height(arrowButtonSize)
  71. };
  72. float dropdownButtonHeight = arrowButtonSize;
  73. float dropdownButtonWidth = 140f;
  74. GUILayoutOption[] dropdownLayoutOptions = new GUILayoutOption[] {
  75. GUILayout.Height(dropdownButtonHeight),
  76. GUILayout.Width(dropdownButtonWidth)
  77. };
  78. MiscGUI.WhiteLine();
  79. GUI.enabled = this.propManager.DoguCount > 0;
  80. GUILayout.BeginHorizontal();
  81. this.propDropdown.Draw(dropdownLayoutOptions);
  82. this.previousPropButton.Draw(arrowLayoutOptions);
  83. this.nextPropButton.Draw(arrowLayoutOptions);
  84. GUILayout.EndHorizontal();
  85. GUILayoutOption noExpandWidth = GUILayout.ExpandWidth(false);
  86. GUILayout.BeginHorizontal();
  87. this.dragPointToggle.Draw(noExpandWidth);
  88. this.gizmoToggle.Draw(noExpandWidth);
  89. this.copyPropButton.Draw(noExpandWidth);
  90. this.deletePropButton.Draw(noExpandWidth);
  91. GUILayout.EndHorizontal();
  92. GUI.enabled = true;
  93. }
  94. private void UpdatePropList()
  95. {
  96. this.updating = true;
  97. this.propDropdown.SetDropdownItems(this.propManager.PropNameList, CurrentDoguIndex);
  98. this.updating = false;
  99. }
  100. private void UpdateToggles()
  101. {
  102. DragPointDogu dogu = this.propManager.CurrentDogu;
  103. if (dogu == null) return;
  104. this.updating = true;
  105. this.dragPointToggle.Value = dogu.DragPointEnabled;
  106. this.gizmoToggle.Value = dogu.GizmoEnabled;
  107. this.updating = false;
  108. }
  109. }
  110. }