BetterAxisAlignedLayoutGroupEditor.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEditor;
  6. using UnityEngine.UI;
  7. namespace TheraBytes.BetterUi.Editor
  8. {
  9. [CustomEditor(typeof(BetterAxisAlignedLayoutGroup)), CanEditMultipleObjects]
  10. public class BetterAxisAlignedLayoutGroupEditor
  11. : BetterHorizontalOrVerticalLayoutGroupEditor<HorizontalOrVerticalLayoutGroup, BetterAxisAlignedLayoutGroup>
  12. {
  13. public override void OnInspectorGUI()
  14. {
  15. base.DrawPaddingAndSpacingConfigurations();
  16. ScreenConfigConnectionHelper.DrawGui("Settings", base.settingsConfigs, ref base.settingsFallback, base.DrawSettings);
  17. serializedObject.ApplyModifiedProperties();
  18. }
  19. [MenuItem("CONTEXT/HorizontalLayoutGroup/♠ Make Better")]
  20. public static void MakeBetterHorizontal(MenuCommand command)
  21. {
  22. MakeBetter(command, BetterAxisAlignedLayoutGroup.Axis.Horizontal);
  23. }
  24. [MenuItem("CONTEXT/VerticalLayoutGroup/♠ Make Better")]
  25. public static void MakeBetterVertical(MenuCommand command)
  26. {
  27. MakeBetter(command, BetterAxisAlignedLayoutGroup.Axis.Vertical);
  28. }
  29. static void MakeBetter(MenuCommand command, BetterAxisAlignedLayoutGroup.Axis orientation)
  30. {
  31. #pragma warning disable 0618
  32. MarginSizeModifier exPadding = null;
  33. FloatSizeModifier exSpacing = null;
  34. BetterHorizontalLayoutGroup h = command.context as BetterHorizontalLayoutGroup;
  35. if (h != null)
  36. {
  37. exPadding = h.PaddingSizer;
  38. exSpacing = h.SpacingSizer;
  39. }
  40. else
  41. {
  42. BetterVerticalLayoutGroup v = command.context as BetterVerticalLayoutGroup;
  43. if (v != null)
  44. {
  45. exPadding = v.PaddingSizer;
  46. exSpacing = v.SpacingSizer;
  47. }
  48. }
  49. #pragma warning restore 0618
  50. var lg = MakeBetterLogic(command);
  51. if (lg != null)
  52. {
  53. lg.Orientation = orientation;
  54. if (exPadding != null)
  55. {
  56. CopySizerValues(exPadding, lg.PaddingSizer);
  57. exPadding.ModLeft.CopyTo(lg.PaddingSizer.ModLeft);
  58. exPadding.ModRight.CopyTo(lg.PaddingSizer.ModRight);
  59. exPadding.ModTop.CopyTo(lg.PaddingSizer.ModTop);
  60. exPadding.ModTop.CopyTo(lg.PaddingSizer.ModBottom);
  61. }
  62. if (exSpacing != null)
  63. {
  64. CopySizerValues(exSpacing, lg.SpacingSizer);
  65. exSpacing.Mod.CopyTo(lg.SpacingSizer.Mod);
  66. }
  67. }
  68. }
  69. static void CopySizerValues<T>(ScreenDependentSize<T> source, ScreenDependentSize<T> target)
  70. {
  71. target.MinSize = source.MinSize;
  72. target.MaxSize = source.MaxSize;
  73. target.OptimizedSize = source.OptimizedSize;
  74. }
  75. }
  76. }