|
15 | 15 | using UnityEngine.Experimental.UIElements; |
16 | 16 | #endif |
17 | 17 |
|
18 | | -//NOTE: since everything in this class is reflection-based it is a little bit "hacky" |
| 18 | +//NOTE: since everything in this class is reflection-based it is a little bit "hacky"; supporting each version makes it very hard to maintain - |
| 19 | +// consider implementing different 'drawers' for each Toolbar iteration |
| 20 | + |
| 21 | +//NOTE: unfortunately latest (6.3) official API is very limited and can't be used to port this implementation |
19 | 22 |
|
20 | 23 | namespace Toolbox.Editor |
21 | 24 | { |
@@ -78,36 +81,27 @@ private static IEnumerator Initialize() |
78 | 81 | var states = builder.Build(); |
79 | 82 |
|
80 | 83 | var toolbarLeftZone = states.AtIndex(0); |
81 | | - var leftElement = new VisualElement(); |
82 | | - leftElement.name = "Editor Toolbox Left Area"; |
83 | | - leftElement.StretchToParentSize(); |
84 | | - leftElement.style.left = 10; |
85 | | - leftElement.style.right = 10; |
86 | | - leftElement.style.flexGrow = 1; |
87 | | - leftElement.style.flexDirection = FlexDirection.Row; |
88 | | - |
89 | | - var leftContainer = new IMGUIContainer(); |
90 | | - leftContainer.style.flexGrow = 1; |
91 | | - leftContainer.onGUIHandler = OnGuiLeft; |
92 | | - leftElement.Add(leftContainer); |
93 | | - toolbarLeftZone.Add(leftElement); |
94 | | - |
| 84 | + AddIMGUIContainer(toolbarLeftZone, OnGuiLeft, "Editor Toolbox Left Area"); |
| 85 | + |
95 | 86 | var toolbarRightZone = states.AtIndex(1); |
96 | | - var rightElement = new VisualElement(); |
97 | | - rightElement.name = "Editor Toolbox Right Area"; |
98 | | - rightElement.StretchToParentSize(); |
99 | | - rightElement.style.left = 10; |
100 | | - rightElement.style.right = 10; |
101 | | - rightElement.style.flexGrow = 1; |
102 | | - rightElement.style.flexDirection = FlexDirection.Row; |
103 | | - |
104 | | - var rightContainer = new IMGUIContainer(); |
105 | | - rightContainer.style.flexGrow = 1; |
106 | | - rightContainer.onGUIHandler = OnGuiRight; |
107 | | - |
108 | | - rightElement.Add(rightContainer); |
109 | | - toolbarRightZone.Add(rightElement); |
| 87 | + AddIMGUIContainer(toolbarRightZone, OnGuiRight, "Editor Toolbox Right Area"); |
110 | 88 |
|
| 89 | + void AddIMGUIContainer(VisualElement parentElement, Action guiCallback, string name) |
| 90 | + { |
| 91 | + var element = new VisualElement(); |
| 92 | + element.name = name; |
| 93 | + element.StretchToParentSize(); |
| 94 | + element.style.left = 10; |
| 95 | + element.style.right = 10; |
| 96 | + element.style.flexGrow = 1; |
| 97 | + element.style.flexDirection = FlexDirection.Row; |
| 98 | + |
| 99 | + var guiContainer = new IMGUIContainer(); |
| 100 | + guiContainer.style.flexGrow = 1; |
| 101 | + guiContainer.onGUIHandler = guiCallback; |
| 102 | + element.Add(guiContainer); |
| 103 | + parentElement.Add(element); |
| 104 | + } |
111 | 105 | #else |
112 | 106 | #if UNITY_2021_1_OR_NEWER |
113 | 107 | var rootField = toolbar.GetType().GetField("m_Root", BindingFlags.NonPublic | BindingFlags.Instance); |
@@ -151,7 +145,6 @@ private static IEnumerator Initialize() |
151 | 145 | #else |
152 | 146 | var elements = visualTree.GetValue(toolbar, null) as VisualElement; |
153 | 147 | #endif |
154 | | - |
155 | 148 | #if UNITY_2019_1_OR_NEWER |
156 | 149 | var container = elements[0]; |
157 | 150 | #else |
|
0 commit comments