BetterScrollRectEditor.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEditor;
  6. using UnityEditor.UI;
  7. using UnityEditorInternal;
  8. using UnityEngine;
  9. using UnityEngine.UI;
  10. namespace TheraBytes.BetterUi.Editor
  11. {
  12. [CustomEditor(typeof(BetterScrollRect)), CanEditMultipleObjects]
  13. public class BetterScrollRectEditor : ScrollRectEditor
  14. {
  15. SerializedProperty hProp, vProp;
  16. SerializedProperty hSpacingFallback, hSpacingCollection;
  17. SerializedProperty vSpacingFallback, vSpacingCollection;
  18. protected override void OnEnable()
  19. {
  20. base.OnEnable();
  21. hProp = serializedObject.FindProperty("horizontalStartPosition");
  22. vProp = serializedObject.FindProperty("verticalStartPosition");
  23. hSpacingFallback = serializedObject.FindProperty("horizontalSpacingFallback");
  24. hSpacingCollection = serializedObject.FindProperty("customHorizontalSpacingSizers");
  25. vSpacingFallback = serializedObject.FindProperty("verticalSpacingFallback");
  26. vSpacingCollection = serializedObject.FindProperty("customVerticalSpacingSizers");
  27. }
  28. public override void OnInspectorGUI()
  29. {
  30. base.OnInspectorGUI();
  31. BetterScrollRect obj = target as BetterScrollRect;
  32. if(obj.horizontal)
  33. {
  34. EditorGUILayout.PropertyField(hProp);
  35. if(obj.horizontalScrollbar != null)
  36. {
  37. if(GUILayout.Button("From current Horizontal Scrollbar value"))
  38. {
  39. hProp.floatValue = obj.horizontalScrollbar.value;
  40. }
  41. }
  42. if(obj.horizontalScrollbarVisibility == ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport)
  43. {
  44. ScreenConfigConnectionHelper.DrawSizerGui("Horizontal Scrollbar Spacing", hSpacingCollection, ref hSpacingFallback);
  45. }
  46. EditorGUILayout.Separator();
  47. }
  48. if(obj.vertical)
  49. {
  50. EditorGUILayout.PropertyField(vProp);
  51. if (obj.verticalScrollbar != null)
  52. {
  53. if (GUILayout.Button("From current Vertical Scrollbar value"))
  54. {
  55. vProp.floatValue = obj.verticalScrollbar.value;
  56. }
  57. }
  58. if (obj.verticalScrollbarVisibility == ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport)
  59. {
  60. ScreenConfigConnectionHelper.DrawSizerGui("Vertical Scrollbar Spacing", vSpacingCollection, ref vSpacingFallback);
  61. }
  62. }
  63. serializedObject.ApplyModifiedProperties();
  64. }
  65. [MenuItem("CONTEXT/ScrollRect/♠ Make Better")]
  66. public static void MakeBetter(MenuCommand command)
  67. {
  68. ScrollRect obj = command.context as ScrollRect;
  69. float hSpace = obj.horizontalScrollbarSpacing;
  70. float vSpace = obj.verticalScrollbarSpacing;
  71. var newScrollRect = Betterizer.MakeBetter<ScrollRect, BetterScrollRect>(obj);
  72. var betterVersion = newScrollRect as BetterScrollRect;
  73. if(betterVersion != null)
  74. {
  75. betterVersion.HorizontalSpacingSizer.SetSize(betterVersion, hSpace);
  76. betterVersion.VerticalSpacingSizer.SetSize(betterVersion, vSpace);
  77. }
  78. }
  79. }
  80. }