From 1d4b727d3e2c16a4981c86c30c90a4cacbe1cd24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Sat, 30 Mar 2024 23:02:34 +0100 Subject: [PATCH 01/10] Possibility to cast SerializedDictionary to Dictionary; minor refactor changes --- .../Serialization/SerializedDateTime.cs | 5 +-- .../Serialization/SerializedDictionary.cs | 34 +++++++++++++++---- .../Runtime/Serialization/SerializedType.cs | 4 --- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Assets/Editor Toolbox/Runtime/Serialization/SerializedDateTime.cs b/Assets/Editor Toolbox/Runtime/Serialization/SerializedDateTime.cs index 24bd9f6d..6a818bb3 100644 --- a/Assets/Editor Toolbox/Runtime/Serialization/SerializedDateTime.cs +++ b/Assets/Editor Toolbox/Runtime/Serialization/SerializedDateTime.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace UnityEngine { @@ -13,7 +13,6 @@ public sealed class SerializedDateTime : ISerializationCallbackReceiver private DateTime dateTime; - public SerializedDateTime() : this(0) { } @@ -25,7 +24,6 @@ public SerializedDateTime(DateTime dateTime) DateTime = dateTime; } - void ISerializationCallbackReceiver.OnAfterDeserialize() { dateTime = new DateTime(ticks); @@ -45,7 +43,6 @@ public DateTime DateTime } } - public static implicit operator DateTime(SerializedDateTime sdt) { return sdt.DateTime; diff --git a/Assets/Editor Toolbox/Runtime/Serialization/SerializedDictionary.cs b/Assets/Editor Toolbox/Runtime/Serialization/SerializedDictionary.cs index c30a1025..0cb63422 100644 --- a/Assets/Editor Toolbox/Runtime/Serialization/SerializedDictionary.cs +++ b/Assets/Editor Toolbox/Runtime/Serialization/SerializedDictionary.cs @@ -7,6 +7,7 @@ namespace UnityEngine { /// /// Overlay for the to allow serialization of the key/value pairs. + /// Highly suggested to cast it to a when used in runtime. /// [Serializable] public sealed class SerializedDictionary : IDictionary, ISerializationCallbackReceiver @@ -38,7 +39,6 @@ public TV Value } } - [SerializeField] private List pairs = new List(); @@ -48,6 +48,16 @@ public TV Value [SerializeField, HideInInspector] private bool error; + public SerializedDictionary() + { } + + public SerializedDictionary(IDictionary source) + { + foreach (var pair in source) + { + Add(pair.Key, pair.Value); + } + } private void UpdateIndexes(int removedIndex) { @@ -58,8 +68,8 @@ private void UpdateIndexes(int removedIndex) } } - - void ISerializationCallbackReceiver.OnBeforeSerialize() { } + void ISerializationCallbackReceiver.OnBeforeSerialize() + { } void ISerializationCallbackReceiver.OnAfterDeserialize() { @@ -122,6 +132,9 @@ public void Clear() indexByKey.Clear(); } + /// + /// Creates a new instance of using the internally serialized data. + /// public Dictionary BuildNativeDictionary() { return new Dictionary(dictionary); @@ -174,7 +187,6 @@ IEnumerator IEnumerable.GetEnumerator() return dictionary.GetEnumerator(); } - /// /// Indicates if there is a key collision in serialized pairs. /// Duplicated keys (pairs) won't be added to the final dictionary. @@ -187,8 +199,6 @@ internal bool Error public int Count => dictionary.Count; - public bool IsReadOnly => false; - public ICollection Keys => dictionary.Keys; public ICollection Values => dictionary.Values; @@ -211,6 +221,18 @@ public TV this[TK key] } } } + + public bool IsReadOnly => false; + + public static implicit operator Dictionary(SerializedDictionary serializedDictionary) + { + return serializedDictionary.dictionary; + } + + public static implicit operator SerializedDictionary(Dictionary dictionary) + { + return new SerializedDictionary(dictionary); + } } } #endif \ No newline at end of file diff --git a/Assets/Editor Toolbox/Runtime/Serialization/SerializedType.cs b/Assets/Editor Toolbox/Runtime/Serialization/SerializedType.cs index 56906d55..dc2e6c08 100644 --- a/Assets/Editor Toolbox/Runtime/Serialization/SerializedType.cs +++ b/Assets/Editor Toolbox/Runtime/Serialization/SerializedType.cs @@ -15,7 +15,6 @@ public sealed class SerializedType : ISerializationCallbackReceiver private Type type; - /// /// Initializes a new instance of the class. /// @@ -45,7 +44,6 @@ public SerializedType(Type type) Type = type; } - public static string GetReferenceValue(Type type) { return type != null @@ -86,7 +84,6 @@ void ISerializationCallbackReceiver.OnAfterDeserialize() void ISerializationCallbackReceiver.OnBeforeSerialize() { } - /// /// Gets or sets type of class reference. /// @@ -108,7 +105,6 @@ public Type Type } } - public static implicit operator string(SerializedType typeReference) => typeReference.typeReference; public static implicit operator Type(SerializedType typeReference) => typeReference.Type; From 2100a338d67458a3ca667c2c875abd31fb14cc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Sat, 30 Mar 2024 23:55:45 +0100 Subject: [PATCH 02/10] Minor refactor changes --- Assets/Editor Toolbox/Editor/Internal/PropertyScope.cs | 3 --- Assets/Editor Toolbox/Editor/ToolboxEditorGui.cs | 3 --- Assets/Editor Toolbox/Editor/ToolboxPropertyHandler.cs | 1 - 3 files changed, 7 deletions(-) diff --git a/Assets/Editor Toolbox/Editor/Internal/PropertyScope.cs b/Assets/Editor Toolbox/Editor/Internal/PropertyScope.cs index 41d7bb1e..681d4384 100644 --- a/Assets/Editor Toolbox/Editor/Internal/PropertyScope.cs +++ b/Assets/Editor Toolbox/Editor/Internal/PropertyScope.cs @@ -29,7 +29,6 @@ public PropertyScope(SerializedProperty property, GUIContent label, bool closeMa TryDrawLabel(rect, label); } - private void HandleEvents(Rect rect) { if (property.isArray) @@ -56,7 +55,6 @@ private void TryDrawLabel(Rect rect, GUIContent label) } } - public void Close() { ToolboxEditorGui.CloseProperty(); @@ -73,7 +71,6 @@ public void Dispose() Close(); } - public bool IsVisible => property.isExpanded; public Rect LabelRect { get; private set; } public Rect InputRect { get; private set; } diff --git a/Assets/Editor Toolbox/Editor/ToolboxEditorGui.cs b/Assets/Editor Toolbox/Editor/ToolboxEditorGui.cs index 0fa8c69d..fb4843d1 100644 --- a/Assets/Editor Toolbox/Editor/ToolboxEditorGui.cs +++ b/Assets/Editor Toolbox/Editor/ToolboxEditorGui.cs @@ -20,7 +20,6 @@ private static Rect GetLineRect(Rect rect, float thickness, float padding, bool : new Rect(rect.x + padding / 2, rect.y, thickness, rect.height); } - /// /// Draws horizontal line. /// Uses built-in layouting system. @@ -248,7 +247,6 @@ public static partial class ToolboxEditorGui { private static EditorWindow lastTargetedWindow; - /// /// Checks if user is still focusing the proper (searchable) window. /// @@ -276,7 +274,6 @@ private static void OnPopupWindowUpdated() } } - public static void DrawSearchablePopup(Rect rect, GUIContent label, int currentIndex, string[] options, Action onSelect) { DrawSearchablePopup(rect, label, currentIndex, options, onSelect, EditorStyles.miniPullDown); diff --git a/Assets/Editor Toolbox/Editor/ToolboxPropertyHandler.cs b/Assets/Editor Toolbox/Editor/ToolboxPropertyHandler.cs index 1e441432..ddeddfea 100644 --- a/Assets/Editor Toolbox/Editor/ToolboxPropertyHandler.cs +++ b/Assets/Editor Toolbox/Editor/ToolboxPropertyHandler.cs @@ -397,7 +397,6 @@ private void ProcessLabel(SerializedProperty property, GUIContent label) } } - /// /// Draw property using built-in layout system and cached s. /// From 72a72a088eb7df4c02d06199e7f5b4e3d3a2a0e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Mon, 1 Apr 2024 21:38:42 +0200 Subject: [PATCH 03/10] Attempt to rework and fix horizontal group behaviours; minor refactor changes --- .../BeginHorizontalAttributeDrawer.cs | 21 +++++++++--- .../BeginHorizontalGroupAttributeDrawer.cs | 23 +++++++++---- .../ReorderableListExposedAttributeDrawer.cs | 2 -- .../Editor/Utilities/DraggingUtility.cs | 2 -- .../Editor/Utilities/EditorGuiUtility.cs | 2 -- .../Editor/Utilities/GuiLayoutUtility.cs | 23 +++++++++++-- .../BeginHorizontalAttribute.cs | 34 ++++++++++++++++++- .../BeginHorizontalGroupAttribute.cs | 8 ++++- .../ReorderableListAttribute.cs | 8 ++--- Assets/Examples/Scenes/SampleScene.unity | 26 ++++++++++++-- Assets/Examples/Scripts/SampleBehaviour4.cs | 4 +-- 11 files changed, 122 insertions(+), 31 deletions(-) diff --git a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalAttributeDrawer.cs b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalAttributeDrawer.cs index d04467b4..285ec090 100644 --- a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalAttributeDrawer.cs +++ b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalAttributeDrawer.cs @@ -5,14 +5,25 @@ namespace Toolbox.Editor.Drawers { public class BeginHorizontalAttributeDrawer : ToolboxDecoratorDrawer { + private static float lastFetchedWidth = 0.0f; + protected override void OnGuiBeginSafe(BeginHorizontalAttribute attribute) { - var width = EditorGUIUtility.currentViewWidth; - //set a new width value for label/field controls - EditorGUIUtility.labelWidth = width * attribute.LabelToWidthRatio; - EditorGUIUtility.fieldWidth = width * attribute.FieldToWidthRatio; + if (GuiLayoutUtility.TryGetLayoutWidth(out var layoutWidth)) + { + lastFetchedWidth = layoutWidth; + } + + EditorGUIUtility.labelWidth = attribute.LabelWidth; + if (attribute.ControlFieldWidth && attribute.ElementsInLayout > 0) + { + var width = lastFetchedWidth; + width -= attribute.WidthOffset; + width -= (attribute.LabelWidth + attribute.WidthOffsetPerElement + EditorGUIUtility.standardVerticalSpacing * 4) * attribute.ElementsInLayout; + width /= attribute.ElementsInLayout; + EditorGUIUtility.fieldWidth = width; + } - //begin horizontal group using internal utility ToolboxLayoutHandler.BeginHorizontal(); } } diff --git a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalGroupAttributeDrawer.cs b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalGroupAttributeDrawer.cs index 545d389c..67188270 100644 --- a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalGroupAttributeDrawer.cs +++ b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/Decorator/BeginHorizontalGroupAttributeDrawer.cs @@ -18,6 +18,7 @@ static BeginHorizontalGroupAttributeDrawer() /// private static readonly ControlDataStorage storage; + private static float lastFetchedWidth = 0.0f; private void HandleScrollView(float fixedHeight) { @@ -29,13 +30,12 @@ private void HandleScrollView(float fixedHeight) storage.AppendItem(controlId, newScroll); } - protected override void OnGuiBeginSafe(BeginHorizontalGroupAttribute attribute) { - var fixedWidth = EditorGUIUtility.currentViewWidth; - var fixedHeight = attribute.Height; - EditorGUIUtility.labelWidth = fixedWidth * attribute.LabelToWidthRatio; - EditorGUIUtility.fieldWidth = fixedWidth * attribute.FieldToWidthRatio; + if (GuiLayoutUtility.TryGetLayoutWidth(out var layoutWidth)) + { + lastFetchedWidth = layoutWidth; + } ToolboxLayoutHandler.BeginVertical(Style.groupBackgroundStyle); if (attribute.HasLabel) @@ -43,11 +43,20 @@ protected override void OnGuiBeginSafe(BeginHorizontalGroupAttribute attribute) GUILayout.Label(attribute.Label, EditorStyles.boldLabel); } - HandleScrollView(fixedHeight); + EditorGUIUtility.labelWidth = attribute.LabelWidth; + if (attribute.ControlFieldWidth && attribute.ElementsInLayout > 0) + { + var width = lastFetchedWidth; + width -= attribute.WidthOffset; + width -= (attribute.LabelWidth + attribute.WidthOffsetPerElement + EditorGUIUtility.standardVerticalSpacing * 4) * attribute.ElementsInLayout; + width /= attribute.ElementsInLayout; + EditorGUIUtility.fieldWidth = width; + } + + HandleScrollView(attribute.Height); ToolboxLayoutHandler.BeginHorizontal(); } - private static class Style { internal static readonly GUIStyle groupBackgroundStyle; diff --git a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/PropertyList/ReorderableListExposedAttributeDrawer.cs b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/PropertyList/ReorderableListExposedAttributeDrawer.cs index afff02d8..e048332e 100644 --- a/Assets/Editor Toolbox/Editor/Drawers/Toolbox/PropertyList/ReorderableListExposedAttributeDrawer.cs +++ b/Assets/Editor Toolbox/Editor/Drawers/Toolbox/PropertyList/ReorderableListExposedAttributeDrawer.cs @@ -31,7 +31,6 @@ static ReorderableListExposedAttributeDrawer() private static readonly PropertyDataStorage storage; - private static void ConnectCallbacks(ReorderableListBase list, ReorderableListExposedAttribute attribute) { var listTarget = list.SerializedObject; @@ -80,7 +79,6 @@ private static MethodInfo FindMethod(SerializedObject target, string methodName, return methodInfo; } - protected override void OnGuiSafe(SerializedProperty property, GUIContent label, ReorderableListExposedAttribute attribute) { storage.ReturnItem(property, attribute).DoList(label); diff --git a/Assets/Editor Toolbox/Editor/Utilities/DraggingUtility.cs b/Assets/Editor Toolbox/Editor/Utilities/DraggingUtility.cs index 8466997a..786fa540 100644 --- a/Assets/Editor Toolbox/Editor/Utilities/DraggingUtility.cs +++ b/Assets/Editor Toolbox/Editor/Utilities/DraggingUtility.cs @@ -18,13 +18,11 @@ static DraggingUtility() BindingFlags.NonPublic | BindingFlags.Instance); } - private static readonly MethodInfo validateAssignmentMethod; private static readonly MethodInfo appendFoldoutValueMethod; private static readonly int dragAndDropHash = "customDragAndDrop".GetHashCode(); - public static Object ValidateAssignment(Object[] references, SerializedProperty property, Type type, bool exactType) { #if UNITY_2017_1_OR_NEWER diff --git a/Assets/Editor Toolbox/Editor/Utilities/EditorGuiUtility.cs b/Assets/Editor Toolbox/Editor/Utilities/EditorGuiUtility.cs index 51e1b5cb..bf0e8e33 100644 --- a/Assets/Editor Toolbox/Editor/Utilities/EditorGuiUtility.cs +++ b/Assets/Editor Toolbox/Editor/Utilities/EditorGuiUtility.cs @@ -16,7 +16,6 @@ internal static class EditorGuiUtility private static readonly Dictionary loadedTextures = new Dictionary(); - public static Texture2D CreateColorTexture() { return CreateColorTexture(Color.clear); @@ -100,7 +99,6 @@ public static Texture GetHelpIcon(MessageType messageType) return null; } - public static float FoldoutSize { get; internal set; } = 15.0f; public static float SpacingSize => EditorGUIUtility.standardVerticalSpacing; public static float HeightSize => EditorGUIUtility.singleLineHeight; diff --git a/Assets/Editor Toolbox/Editor/Utilities/GuiLayoutUtility.cs b/Assets/Editor Toolbox/Editor/Utilities/GuiLayoutUtility.cs index 5967ba7c..e811ce59 100644 --- a/Assets/Editor Toolbox/Editor/Utilities/GuiLayoutUtility.cs +++ b/Assets/Editor Toolbox/Editor/Utilities/GuiLayoutUtility.cs @@ -13,7 +13,6 @@ public static class GuiLayoutUtility /// public static readonly float layoutPadding = -2 * EditorGUIUtility.standardVerticalSpacing; - public static void BeginStrechedVertical() { BeginFixedVertical(GUIStyle.none); @@ -54,6 +53,26 @@ public static void CreateSpace(float space) GUILayout.Space(space); } - //TODO: add more helper methods + /// + /// A bit hacky way to retrieve the width of currently active layout. + /// Width is properly calculated only when the equals to . + /// + public static bool TryGetLayoutWidth(out float width) + { + using (var scope = new EditorGUILayout.HorizontalScope()) + { + if (Event.current.type == EventType.Repaint) + { + var scopeRect = scope.rect; + width = scopeRect.width; + return true; + } + else + { + width = 0.0f; + return false; + } + } + } } } \ No newline at end of file diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs index 608f0ba2..9a6ed556 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs @@ -10,14 +10,46 @@ namespace UnityEngine [Conditional("UNITY_EDITOR")] public class BeginHorizontalAttribute : ToolboxDecoratorAttribute { + public BeginHorizontalAttribute() + { } + + [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] public BeginHorizontalAttribute(float labelToWidthRatio = 0.0f, float fieldToWidthRatio = 0.0f) { LabelToWidthRatio = labelToWidthRatio; FieldToWidthRatio = fieldToWidthRatio; } - public float LabelToWidthRatio { get; private set; } + /// + /// Indicates whether layout elements should be sized automatically or using associated properties. + /// Associated properties: , , . + /// + public bool ControlFieldWidth { get; set; } + /// + /// Indicates how many elements are placed in the layout. + /// Used to specify how big should be the field width for each element. + /// Used only when the is set to . + /// + public int ElementsInLayout { get; set; } = -1; + /// + /// Value substracted from the available space when calculating field width for each element. + /// Used only when the is set to . + /// + public float WidthOffset { get; set; } + /// + /// Value substracted from the available space when calculating field width for each element. + /// Used only when the is set to . + /// + public float WidthOffsetPerElement { get; set; } + /// + /// Overrides label width within the layout for each element. + /// Set to 0 to keep the default width. + /// + public float LabelWidth { get; set; } = 100.0f; + [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] + public float LabelToWidthRatio { get; private set; } + [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] public float FieldToWidthRatio { get; private set; } } } \ No newline at end of file diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs index 09f8ec08..6ae198fd 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs @@ -12,12 +12,18 @@ namespace UnityEngine [Conditional("UNITY_EDITOR")] public class BeginHorizontalGroupAttribute : BeginHorizontalAttribute { + public BeginHorizontalGroupAttribute() : base() + { + WidthOffset = 32.0f; + } + + [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] public BeginHorizontalGroupAttribute(float labelToWidthRatio = 0.0f, float fieldToWidthRatio = 0.0f, string label = null) : base(labelToWidthRatio, fieldToWidthRatio) { Label = label; } - public string Label { get; private set; } + public string Label { get; set; } public bool HasLabel => !string.IsNullOrEmpty(Label); diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/PropertyListAttributes/ReorderableListAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/PropertyListAttributes/ReorderableListAttribute.cs index 85bde63a..7dc1290d 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/PropertyListAttributes/ReorderableListAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/PropertyListAttributes/ReorderableListAttribute.cs @@ -20,10 +20,10 @@ public ReorderableListAttribute(ListStyle style = ListStyle.Round, string elemen ElementLabel = elementLabel; } - public bool Draggable { get; private set; } - public bool FixedSize { get; private set; } - public ListStyle ListStyle { get; private set; } - public string ElementLabel { get; private set; } + public bool Draggable { get; set; } + public bool FixedSize { get; set; } + public ListStyle ListStyle { get; set; } + public string ElementLabel { get; set; } /// /// Indicates whether list should be allowed to fold in and out. diff --git a/Assets/Examples/Scenes/SampleScene.unity b/Assets/Examples/Scenes/SampleScene.unity index 7947735b..ffb9dbfe 100644 --- a/Assets/Examples/Scenes/SampleScene.unity +++ b/Assets/Examples/Scenes/SampleScene.unity @@ -1517,8 +1517,11 @@ MonoBehaviour: var31: 0 gameObjects: - {fileID: 0} - - {fileID: 0} - floats: [] + floats: + - 0 + - 0 + - 0 + - 0 var2: 0 var3: 0 var4: 0 @@ -1555,7 +1558,7 @@ GameObject: m_Layer: 0 m_Name: Special&Others[Sample] m_TagString: Untagged - m_Icon: {fileID: 0} + m_Icon: {fileID: 2800000, guid: b105bf1fb7fe62e4baba0ffd7b433e7b, type: 3} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 @@ -1571,6 +1574,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c48a231d0fb97494d948757fb057b3ea, type: 3} m_Name: m_EditorClassIdentifier: + gos1: + - {fileID: 0} + gos2: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + go1: {fileID: 1670253091} + go2: {fileID: 0} + go3: 0 + go4: 0 var1: 25.4 var2: {fileID: 977748988} var3: 0 diff --git a/Assets/Examples/Scripts/SampleBehaviour4.cs b/Assets/Examples/Scripts/SampleBehaviour4.cs index 7e1b3c38..cab2e6ff 100644 --- a/Assets/Examples/Scripts/SampleBehaviour4.cs +++ b/Assets/Examples/Scripts/SampleBehaviour4.cs @@ -72,7 +72,7 @@ private static void TestStaticMethod() [Label("Horizontal Layout", skinStyle: SkinStyle.Box)] - [BeginHorizontal(labelToWidthRatio: 0.1f)] + [BeginHorizontal(ControlFieldWidth = true, ElementsInLayout = 3)] public int var29; public int var30; [EndHorizontal] @@ -80,7 +80,7 @@ private static void TestStaticMethod() [Label("Horizontal Layout (Group)", skinStyle: SkinStyle.Box)] - [BeginHorizontalGroup(label: "Horizontal Group")] + [BeginHorizontalGroup(Label = "Horizontal Group", ControlFieldWidth = true, ElementsInLayout = 2)] [ReorderableList(Foldable = true), InLineEditor] public GameObject[] gameObjects; [SpaceArea] From 6907cd854d55332e294620023e66ad8357ef009c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Tue, 2 Apr 2024 12:46:32 +0200 Subject: [PATCH 04/10] Update: README.md --- Assets/Editor Toolbox/README.md | 12 ++++++------ Assets/Examples/Scripts/SampleBehaviour4.cs | 2 +- Docs/scrollableitems.png | Bin 9904 -> 8567 bytes 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Assets/Editor Toolbox/README.md b/Assets/Editor Toolbox/README.md index c211dc51..17299ac1 100644 --- a/Assets/Editor Toolbox/README.md +++ b/Assets/Editor Toolbox/README.md @@ -315,13 +315,13 @@ public int var3; public int var4; ``` ```csharp -[BeginHorizontal(labelToWidthRatio: 0.1f)] +[BeginHorizontal(LabelWidth = 50.0f)] public int var1; public int var2; [EndHorizontal] public int var3; -[BeginHorizontalGroup(label: "Horizontal Group")] +[BeginHorizontalGroup(Label = "Horizontal Group", ControlFieldWidth = true, ElementsInLayout = 2)] public GameObject gameObject; [SpaceArea] [EndHorizontalGroup] @@ -800,14 +800,14 @@ Requires at least Unity 2020.1.x because of generic serialization and has to be ```csharp #if UNITY_2020_1_OR_NEWER -public SerializedDictionary dictionary; +public SerializedDictionary serializedDictionary; public void Usage() { - dictionary.Add(3, new GameObject("TestObject")); - dictionary.ContainsKey(2); + serializedDictionary.Add(3, new GameObject("TestObject")); + serializedDictionary.ContainsKey(2); //etc. like standard System.Collections.Generic.Dictionary<> - var nativeDictionary = dictionary.BuildNativeDictionary(); + System.Collections.Generic.Dictionary dictionary = serializedDictionary; } #endif ``` diff --git a/Assets/Examples/Scripts/SampleBehaviour4.cs b/Assets/Examples/Scripts/SampleBehaviour4.cs index cab2e6ff..fb280a2f 100644 --- a/Assets/Examples/Scripts/SampleBehaviour4.cs +++ b/Assets/Examples/Scripts/SampleBehaviour4.cs @@ -72,7 +72,7 @@ private static void TestStaticMethod() [Label("Horizontal Layout", skinStyle: SkinStyle.Box)] - [BeginHorizontal(ControlFieldWidth = true, ElementsInLayout = 3)] + [BeginHorizontal(LabelWidth = 50.0f)] public int var29; public int var30; [EndHorizontal] diff --git a/Docs/scrollableitems.png b/Docs/scrollableitems.png index 28478952f57b915e0e957349f00a7449e9615348..4552966ab3e73b5a45ac41e1d5be56fac27a1491 100644 GIT binary patch literal 8567 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 nQ?Yj1fAcNiUe;=Zi)aa-IEi< Date: Tue, 2 Apr 2024 12:47:53 +0200 Subject: [PATCH 05/10] Update: README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c211dc51..17299ac1 100644 --- a/README.md +++ b/README.md @@ -315,13 +315,13 @@ public int var3; public int var4; ``` ```csharp -[BeginHorizontal(labelToWidthRatio: 0.1f)] +[BeginHorizontal(LabelWidth = 50.0f)] public int var1; public int var2; [EndHorizontal] public int var3; -[BeginHorizontalGroup(label: "Horizontal Group")] +[BeginHorizontalGroup(Label = "Horizontal Group", ControlFieldWidth = true, ElementsInLayout = 2)] public GameObject gameObject; [SpaceArea] [EndHorizontalGroup] @@ -800,14 +800,14 @@ Requires at least Unity 2020.1.x because of generic serialization and has to be ```csharp #if UNITY_2020_1_OR_NEWER -public SerializedDictionary dictionary; +public SerializedDictionary serializedDictionary; public void Usage() { - dictionary.Add(3, new GameObject("TestObject")); - dictionary.ContainsKey(2); + serializedDictionary.Add(3, new GameObject("TestObject")); + serializedDictionary.ContainsKey(2); //etc. like standard System.Collections.Generic.Dictionary<> - var nativeDictionary = dictionary.BuildNativeDictionary(); + System.Collections.Generic.Dictionary dictionary = serializedDictionary; } #endif ``` From 2e2611b6e3d841ddac760a351202d5cdc18add40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Tue, 2 Apr 2024 23:08:46 +0200 Subject: [PATCH 06/10] Ignore m_SerializedDataModeController in Toolbox wizards; minor refactor changes --- .../Wizards/ScriptableObjectCreationWizard.cs | 41 +++++++++--------- .../Editor/Wizards/ToolboxWizard.cs | 11 ++++- .../ArchetypeAttributes/TitleAttribute.cs | 2 - Docs/createso.png | Bin 12001 -> 18688 bytes 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/Assets/Editor Toolbox/Editor/Wizards/ScriptableObjectCreationWizard.cs b/Assets/Editor Toolbox/Editor/Wizards/ScriptableObjectCreationWizard.cs index 9295e08b..a7bf6bb0 100644 --- a/Assets/Editor Toolbox/Editor/Wizards/ScriptableObjectCreationWizard.cs +++ b/Assets/Editor Toolbox/Editor/Wizards/ScriptableObjectCreationWizard.cs @@ -88,37 +88,36 @@ internal static void Initialize() private void DrawSettingsPanel() { - EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel); - var rect = EditorGUILayout.GetControlRect(true); + rect = EditorGUI.PrefixLabel(rect, Style.typeContent); typeField.OnGui(rect, true, OnTypeSelected, data.InstanceType); if (data.InstanceType == null) { return; } - ToolboxEditorGui.DrawLine(); - EditorGUI.BeginChangeCheck(); data.InstanceName = EditorGUILayout.TextField(Style.nameContent, data.InstanceName); data.InstancesCount = EditorGUILayout.IntField(Style.countContent, data.InstancesCount); - - EditorGUI.BeginChangeCheck(); - var assignedInstance = EditorGUILayout.ObjectField(Style.objectContent, data.BlueprintObject, data.InstanceType, false); - data.BlueprintObject = assignedInstance; - if (EditorGUI.EndChangeCheck()) + using (new EditorGUILayout.HorizontalScope()) { - UpdateBlueprintObjectEditor(); - } + EditorGUI.BeginChangeCheck(); + var assignedInstance = EditorGUILayout.ObjectField(Style.objectContent, data.BlueprintObject, data.InstanceType, false); + data.BlueprintObject = assignedInstance; + if (EditorGUI.EndChangeCheck()) + { + UpdateBlueprintObjectEditor(); + } - if (assignedInstance != null) - { - inspectDefaultObject = GUILayout.Toggle(inspectDefaultObject, - Style.foldoutContent, Style.foldoutStyle, Style.foldoutOptions); - } - else - { - inspectDefaultObject = false; + if (assignedInstance != null) + { + inspectDefaultObject = GUILayout.Toggle(inspectDefaultObject, + Style.foldoutContent, Style.foldoutStyle, Style.foldoutOptions); + } + else + { + inspectDefaultObject = false; + } } if (inspectDefaultObject) @@ -129,7 +128,6 @@ private void DrawSettingsPanel() } } - if (EditorGUI.EndChangeCheck()) { OnWizardUpdate(); @@ -237,7 +235,7 @@ protected override void OnWizardUpdate() protected override void OnWizardGui() { base.OnWizardGui(); - using (new EditorGUILayout.VerticalScope(Style.backgroundStyle)) + using (new EditorGUILayout.VerticalScope()) { DrawSettingsPanel(); } @@ -250,6 +248,7 @@ private static class Style internal static readonly GUIStyle backgroundStyle; internal static readonly GUIStyle foldoutStyle; + internal static readonly GUIContent typeContent = new GUIContent("Instance Type"); internal static readonly GUIContent nameContent = new GUIContent("Instance Name"); internal static readonly GUIContent countContent = new GUIContent("Instances Count", "Indicates how many instances will be created."); internal static readonly GUIContent objectContent = new GUIContent("Blueprint Object", "Will be used as a blueprint for all created ScriptableObjects."); diff --git a/Assets/Editor Toolbox/Editor/Wizards/ToolboxWizard.cs b/Assets/Editor Toolbox/Editor/Wizards/ToolboxWizard.cs index ca125666..0ef5db9d 100644 --- a/Assets/Editor Toolbox/Editor/Wizards/ToolboxWizard.cs +++ b/Assets/Editor Toolbox/Editor/Wizards/ToolboxWizard.cs @@ -7,6 +7,12 @@ namespace Toolbox.Editor.Wizards public class ToolboxWizard : EditorWindow { + private static readonly string[] propertiesToIgnore = new string[] + { + PropertyUtility.Defaults.scriptPropertyName, + "m_SerializedDataModeController" + }; + private Editor targetEditor; private Vector2 scrollPosition; @@ -84,7 +90,10 @@ private void ReinitEditor(Editor editor) editor.hideFlags = HideFlags.HideAndDontSave; if (editor is ToolboxEditor toolboxEditor) { - toolboxEditor.IgnoreProperty(PropertyUtility.Defaults.scriptPropertyName); + foreach (var property in propertiesToIgnore) + { + toolboxEditor.IgnoreProperty(property); + } } } diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/ArchetypeAttributes/TitleAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/ArchetypeAttributes/TitleAttribute.cs index 593e07a9..9a60efa2 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/ArchetypeAttributes/TitleAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/ArchetypeAttributes/TitleAttribute.cs @@ -19,7 +19,6 @@ public TitleAttribute(string label) Label = label; } - public override ToolboxAttribute[] Process() { return new ToolboxAttribute[] @@ -42,7 +41,6 @@ public override ToolboxAttribute[] Process() }; } - public string Label { get; private set; } /// diff --git a/Docs/createso.png b/Docs/createso.png index 013b547b0c004d6e07fd71043285a2dbc2e9e944..7f936200f7a4d61e316f1d3495b9b81d604c3258 100644 GIT binary patch literal 18688 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 F{{R`?AIty% literal 12001 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 F@;^pFu@?XU From eaafc482365b2ee3fb7e688522a7262b4a377f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Fri, 5 Apr 2024 10:29:21 +0200 Subject: [PATCH 07/10] Fix handling the HasNativeTypeDrawer method for Unity 2022.3.23 --- .../Editor/ToolboxDrawerModule.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Assets/Editor Toolbox/Editor/ToolboxDrawerModule.cs b/Assets/Editor Toolbox/Editor/ToolboxDrawerModule.cs index e02c6418..c6293528 100644 --- a/Assets/Editor Toolbox/Editor/ToolboxDrawerModule.cs +++ b/Assets/Editor Toolbox/Editor/ToolboxDrawerModule.cs @@ -23,7 +23,6 @@ internal static void InitializeModule() ToolboxEditorHandler.OnEditorReload += ReloadDrawers; } - private static readonly Type decoratorDrawerBase = typeof(ToolboxDecoratorDrawer<>); private static readonly Type conditionDrawerBase = typeof(ToolboxConditionDrawer<>); private static readonly Type selfPropertyDrawerBase = typeof(ToolboxSelfPropertyDrawer<>); @@ -261,11 +260,25 @@ internal static void UpdateDrawers(IToolboxInspectorSettings settings) /// internal static bool HasNativeTypeDrawer(Type type) { -#if UNITY_2023_3_OR_NEWER - var parameters = new object[] { type, null, false }; -#else - var parameters = new object[] { type }; -#endif + object[] parameters; + var parameterInfos = getDrawerTypeForTypeMethod.GetParameters(); + var parametersCount = parameterInfos.Length; + switch (parametersCount) + { + default: + case 1: + parameters = new object[] { type }; + break; + //NOTE: Unity 2022.3.23 or above + case 2: + parameters = new object[] { type, false }; + break; + //NOTE: Unity 2023.3.x or above + case 3: + parameters = new object[] { type, null, false }; + break; + } + var result = getDrawerTypeForTypeMethod.Invoke(null, parameters) as Type; return result != null && typeof(PropertyDrawer).IsAssignableFrom(result); } From 939004b70c3e820950e512633bee02477960150e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Fri, 5 Apr 2024 10:47:54 +0200 Subject: [PATCH 08/10] Minor refactor changes --- .../Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs | 2 +- .../DecoratorAttributes/BeginHorizontalGroupAttribute.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs index 9a6ed556..175c9bcc 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalAttribute.cs @@ -13,7 +13,7 @@ public class BeginHorizontalAttribute : ToolboxDecoratorAttribute public BeginHorizontalAttribute() { } - [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] + [Obsolete("Ratios are no longer valid, use default constructor, ControlFieldWidth and linked properties to specify width of layout elements.")] public BeginHorizontalAttribute(float labelToWidthRatio = 0.0f, float fieldToWidthRatio = 0.0f) { LabelToWidthRatio = labelToWidthRatio; diff --git a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs index 6ae198fd..d670cd60 100644 --- a/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs +++ b/Assets/Editor Toolbox/Runtime/Attributes/Toolbox/DecoratorAttributes/BeginHorizontalGroupAttribute.cs @@ -17,7 +17,7 @@ public BeginHorizontalGroupAttribute() : base() WidthOffset = 32.0f; } - [Obsolete("Ratios are no longer valid, use ControlFieldWidth and linked properties to specify width of layout elements.")] + [Obsolete("Ratios are no longer valid, use default constructor, ControlFieldWidth and linked properties to specify width of layout elements.")] public BeginHorizontalGroupAttribute(float labelToWidthRatio = 0.0f, float fieldToWidthRatio = 0.0f, string label = null) : base(labelToWidthRatio, fieldToWidthRatio) { Label = label; From 431173ade05997fa521f64d28b25d21e118a7453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Fri, 5 Apr 2024 18:19:08 +0200 Subject: [PATCH 09/10] Update: README.md --- Assets/Editor Toolbox/README.md | 1 + Assets/Examples/Scripts/SampleBehaviour4.cs | 1 + README.md | 1 + 3 files changed, 3 insertions(+) diff --git a/Assets/Editor Toolbox/README.md b/Assets/Editor Toolbox/README.md index 17299ac1..f30bc0ff 100644 --- a/Assets/Editor Toolbox/README.md +++ b/Assets/Editor Toolbox/README.md @@ -315,6 +315,7 @@ public int var3; public int var4; ``` ```csharp +//NOTE: you can use [SpaceArea] to adjust positions between layout elements [BeginHorizontal(LabelWidth = 50.0f)] public int var1; public int var2; diff --git a/Assets/Examples/Scripts/SampleBehaviour4.cs b/Assets/Examples/Scripts/SampleBehaviour4.cs index fb280a2f..e0ea78bf 100644 --- a/Assets/Examples/Scripts/SampleBehaviour4.cs +++ b/Assets/Examples/Scripts/SampleBehaviour4.cs @@ -74,6 +74,7 @@ private static void TestStaticMethod() [BeginHorizontal(LabelWidth = 50.0f)] public int var29; + [SpaceArea(10)] public int var30; [EndHorizontal] public int var31; diff --git a/README.md b/README.md index 17299ac1..f30bc0ff 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,7 @@ public int var3; public int var4; ``` ```csharp +//NOTE: you can use [SpaceArea] to adjust positions between layout elements [BeginHorizontal(LabelWidth = 50.0f)] public int var1; public int var2; From db1b172d533d5a8c397c65d5e421e33ae5525a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Matkowski?= Date: Fri, 5 Apr 2024 18:21:55 +0200 Subject: [PATCH 10/10] Update: package.json, CHANGELOG.md --- Assets/Editor Toolbox/CHANGELOG.md | 9 ++++++++- Assets/Editor Toolbox/package.json | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Assets/Editor Toolbox/CHANGELOG.md b/Assets/Editor Toolbox/CHANGELOG.md index 406357f7..b53da320 100644 --- a/Assets/Editor Toolbox/CHANGELOG.md +++ b/Assets/Editor Toolbox/CHANGELOG.md @@ -1,4 +1,11 @@ -## 0.12.0 [28.03.2024] +## 0.12.11 [05.04.2024] + +### Changed: +- Fix handling the HasNativeTypeDrawer method in Unity 2022.3.23 +- Ignore `m_SerializedDataModeController` in Toolbox wizards +- Change [Begin/EndHorizontal] behaviour (more customization options to handle available space) + +## 0.12.10 [28.03.2024] ### Changed: - Fix fetching and initializing Toolbox features when assets are updating diff --git a/Assets/Editor Toolbox/package.json b/Assets/Editor Toolbox/package.json index 6f054c03..21ebf2eb 100644 --- a/Assets/Editor Toolbox/package.json +++ b/Assets/Editor Toolbox/package.json @@ -1,7 +1,7 @@ { "name": "com.browar.editor-toolbox", "displayName": "Editor Toolbox", - "version": "0.12.10", + "version": "0.12.11", "unity": "2018.1", "description": "Tools, custom attributes, drawers, hierarchy overlay, and other extensions for the Unity Editor.", "keywords": [