BetterGridLayoutGroupEditor.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEditor;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. namespace TheraBytes.BetterUi.Editor
  9. {
  10. [CustomEditor(typeof(BetterGridLayoutGroup)), CanEditMultipleObjects]
  11. public class BetterGridLayoutGroupGridEditor : UnityEditor.Editor
  12. {
  13. private SerializedProperty paddingFallback;
  14. private SerializedProperty paddingConfigs;
  15. private SerializedProperty cellSizeFallback;
  16. private SerializedProperty cellSizeConfigs;
  17. private SerializedProperty spacingFallback;
  18. private SerializedProperty spacingConfigs;
  19. private SerializedProperty settingsFallback;
  20. private SerializedProperty settingsConfigs;
  21. private SerializedProperty fit;
  22. private SerializedProperty startCorner;
  23. private SerializedProperty startAxis;
  24. private SerializedProperty childAlignment;
  25. private SerializedProperty constraint;
  26. private SerializedProperty constraintCount;
  27. [MenuItem("CONTEXT/GridLayoutGroup/♠ Make Better")]
  28. public static void MakeBetter(MenuCommand command)
  29. {
  30. GridLayoutGroup grid = command.context as GridLayoutGroup;
  31. var pad = new Margin(grid.padding);
  32. var space = grid.spacing;
  33. var size = grid.cellSize;
  34. var newGrid = Betterizer.MakeBetter<GridLayoutGroup, BetterGridLayoutGroup>(grid, "m_Padding");
  35. var betterGrid = newGrid as BetterGridLayoutGroup;
  36. if (betterGrid != null)
  37. {
  38. betterGrid.PaddingSizer.SetSize(newGrid, pad);
  39. betterGrid.SpacingSizer.SetSize(newGrid, space);
  40. betterGrid.CellSizer.SetSize(newGrid, size);
  41. }
  42. else
  43. {
  44. pad.CopyValuesTo(newGrid.padding);
  45. }
  46. Betterizer.Validate(newGrid);
  47. }
  48. protected virtual void OnEnable()
  49. {
  50. this.paddingFallback = base.serializedObject.FindProperty("paddingSizerFallback");
  51. this.paddingConfigs = base.serializedObject.FindProperty("customPaddingSizers");
  52. this.cellSizeFallback = base.serializedObject.FindProperty("cellSizerFallback");
  53. this.cellSizeConfigs = base.serializedObject.FindProperty("customCellSizers");
  54. this.spacingFallback = base.serializedObject.FindProperty("spacingSizerFallback");
  55. this.spacingConfigs = base.serializedObject.FindProperty("customSpacingSizers");
  56. this.settingsFallback = base.serializedObject.FindProperty("settingsFallback");
  57. this.settingsConfigs = base.serializedObject.FindProperty("customSettings");
  58. this.fit = base.serializedObject.FindProperty("fit");
  59. this.startCorner = base.serializedObject.FindProperty("m_StartCorner");
  60. this.startAxis = base.serializedObject.FindProperty("m_StartAxis");
  61. this.childAlignment = base.serializedObject.FindProperty("m_ChildAlignment");
  62. this.constraint = base.serializedObject.FindProperty("m_Constraint");
  63. this.constraintCount = base.serializedObject.FindProperty("m_ConstraintCount");
  64. }
  65. public override void OnInspectorGUI()
  66. {
  67. ScreenConfigConnectionHelper.DrawSizerGui("Padding", paddingConfigs, ref paddingFallback);
  68. ScreenConfigConnectionHelper.DrawSizerGui("Spacing", spacingConfigs, ref spacingFallback);
  69. ScreenConfigConnectionHelper.DrawSizerGui("Cell Size", cellSizeConfigs, ref cellSizeFallback);
  70. ScreenConfigConnectionHelper.DrawGui("Settings", settingsConfigs, ref settingsFallback, DrawSettings);
  71. serializedObject.ApplyModifiedProperties();
  72. //if(serializedObject.ApplyModifiedProperties())
  73. //{
  74. // GridLayoutGroup grid = target as GridLayoutGroup;
  75. //}
  76. }
  77. private void DrawSettings(string configName, SerializedProperty prop)
  78. {
  79. fit = prop.FindPropertyRelative("Fit");
  80. startCorner = prop.FindPropertyRelative("StartCorner");
  81. startAxis = prop.FindPropertyRelative("StartAxis");
  82. childAlignment = prop.FindPropertyRelative("ChildAlignment");
  83. constraint = prop.FindPropertyRelative("Constraint");
  84. constraintCount = prop.FindPropertyRelative("ConstraintCount");
  85. EditorGUILayout.BeginVertical("box");
  86. EditorGUILayout.PropertyField(startCorner);
  87. EditorGUILayout.PropertyField(startAxis);
  88. EditorGUILayout.PropertyField(childAlignment);
  89. EditorGUILayout.PropertyField(constraint);
  90. if (constraint.enumValueIndex > 0)
  91. {
  92. EditorGUI.indentLevel += 1;
  93. EditorGUILayout.PropertyField(constraintCount, true);
  94. EditorGUILayout.PropertyField(fit);
  95. EditorGUI.indentLevel -= 1;
  96. }
  97. EditorGUILayout.EndVertical();
  98. }
  99. }
  100. }