├── .gitignore ├── Assets ├── EditorGUIHierarchyView.meta └── EditorGUIHierarchyView │ ├── Example.meta │ ├── Example │ ├── Scenes.meta │ ├── Scenes │ │ ├── ExampleScene.unity │ │ └── ExampleScene.unity.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── Editor.meta │ │ └── Editor │ │ ├── EditorGUIHierarchyViewExampleWindow.cs │ │ ├── EditorGUIHierarchyViewExampleWindow.cs.meta │ │ ├── EditorGUIHierarchyViewSceneViewExampleWindow.cs │ │ └── EditorGUIHierarchyViewSceneViewExampleWindow.cs.meta │ ├── Scripts.meta │ └── Scripts │ ├── Editor.meta │ └── Editor │ ├── EditorGUIHierarchyView.cs │ └── EditorGUIHierarchyView.cs.meta ├── EditorGUIHierarchyView.unitypackage ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityAdsSettings.asset └── UnityConnectSettings.asset ├── README.md ├── example.gif └── example2.png /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | 8 | # Autogenerated VS/MD solution and project files 9 | ExportedObj/ 10 | *.csproj 11 | *.unityproj 12 | *.sln 13 | *.suo 14 | *.tmp 15 | *.user 16 | *.userprefs 17 | *.pidb 18 | *.booproj 19 | *.svd 20 | 21 | 22 | # Unity3D generated meta files 23 | *.pidb.meta 24 | 25 | # Unity3D Generated File On Crash Reports 26 | sysinfo.txt 27 | 28 | # Builds 29 | *.apk 30 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eef544e4a890c43cc8dc9d9d46f995db 3 | folderAsset: yes 4 | timeCreated: 1475161541 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dab25d1456e2f464db21a924033e80f2 3 | folderAsset: yes 4 | timeCreated: 1475161548 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 546131596c45642479f24d698492b8fd 3 | folderAsset: yes 4 | timeCreated: 1475566261 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scenes/ExampleScene.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/Assets/EditorGUIHierarchyView/Example/Scenes/ExampleScene.unity -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scenes/ExampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 906162fa44f404873931dc698061aa98 3 | timeCreated: 1475566277 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 898d02e1ecf094e37bb7147760c9fd1d 3 | folderAsset: yes 4 | timeCreated: 1475161552 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b44f4132bceea4ac5a321f0879f4fb01 3 | folderAsset: yes 4 | timeCreated: 1475161556 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts/Editor/EditorGUIHierarchyViewExampleWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using UnityEditor; 4 | 5 | public class EditorGUIHierarchyViewExampleWindow : EditorWindow { 6 | 7 | 8 | EditorGUIHierarchyView hierarchyView = new EditorGUIHierarchyView(); 9 | 10 | [MenuItem ("Window/EditorGUIHierarchy - Show Example Window")] 11 | static void Init () 12 | { 13 | EditorGUIHierarchyViewExampleWindow window = (EditorGUIHierarchyViewExampleWindow)GetWindow (typeof(EditorGUIHierarchyViewExampleWindow)); 14 | window.Show (); 15 | } 16 | 17 | public void OnGUI () 18 | { 19 | hierarchyView.BeginHierarchyView (); 20 | 21 | bool isParent1Selected = hierarchyView.BeginNode ("Select me"); 22 | hierarchyView.Node ("Child"); 23 | hierarchyView.BeginNode ("Another parent"); 24 | hierarchyView.Node ("Grandson"); 25 | hierarchyView.EndNode (); 26 | hierarchyView.EndNode (); 27 | 28 | hierarchyView.Node ("No children"); 29 | hierarchyView.Node ("Hello"); 30 | 31 | hierarchyView.EndHierarchyView (); 32 | 33 | if (isParent1Selected) { 34 | EditorGUILayout.LabelField ("First parent is selected"); 35 | } 36 | 37 | Repaint (); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts/Editor/EditorGUIHierarchyViewExampleWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1cf7f9fcc92144e8bdc2ad8b76d52b0 3 | timeCreated: 1475161570 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts/Editor/EditorGUIHierarchyViewSceneViewExampleWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using UnityEditor; 4 | using UnityEngine.SceneManagement; 5 | using System.Collections.Generic; 6 | using System; 7 | 8 | public class EditorGUIHierarchyViewSceneViewExampleWindow : EditorWindow 9 | { 10 | 11 | EditorGUIHierarchyView hierarchyView = new EditorGUIHierarchyView(); 12 | 13 | [MenuItem ("Window/EditorGUIHierarchy - Show Scene View")] 14 | static void Init () 15 | { 16 | EditorGUIHierarchyViewSceneViewExampleWindow window = (EditorGUIHierarchyViewSceneViewExampleWindow)GetWindow (typeof(EditorGUIHierarchyViewSceneViewExampleWindow)); 17 | window.Show (); 18 | } 19 | 20 | struct SceneGameObjectComparer : IComparer { 21 | 22 | public int Compare(GameObject go1, GameObject go2) { 23 | return go1.transform.GetSiblingIndex ().CompareTo (go2.transform.GetSiblingIndex ()); 24 | } 25 | } 26 | 27 | void OnEnable() { 28 | this.titleContent = new GUIContent ("Scene View"); 29 | } 30 | 31 | public void OnGUI () 32 | { 33 | 34 | var gameObjects = SceneManager.GetActiveScene ().GetRootGameObjects (); 35 | Array.Sort (gameObjects,new SceneGameObjectComparer()); 36 | 37 | hierarchyView.BeginHierarchyView (); 38 | foreach (GameObject gameObject in gameObjects) { 39 | gameObject.transform.GetSiblingIndex (); 40 | DrawGameObject (gameObject); 41 | } 42 | hierarchyView.EndHierarchyView (); 43 | 44 | Repaint (); 45 | } 46 | 47 | void DrawGameObject(GameObject go) { 48 | if (go.transform.childCount > 0) { 49 | 50 | if (go.activeInHierarchy) { 51 | hierarchyView.BeginNode (go.name); 52 | } else { 53 | hierarchyView.BeginNode (go.name,Color.gray,Color.gray); 54 | } 55 | 56 | foreach (Transform child in go.transform) { 57 | DrawGameObject (child.gameObject); 58 | } 59 | hierarchyView.EndNode (); 60 | } else { 61 | 62 | if (go.activeInHierarchy) { 63 | hierarchyView.Node (go.name); 64 | } else { 65 | hierarchyView.Node (go.name,Color.gray,Color.gray); 66 | } 67 | 68 | } 69 | } 70 | } 71 | 72 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Example/Scripts/Editor/EditorGUIHierarchyViewSceneViewExampleWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 046ff34e49e3843769e2c5883edf9796 3 | timeCreated: 1475567809 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc86a6ac1cb3e412fb9e56ad1ac141fb 3 | folderAsset: yes 4 | timeCreated: 1475161663 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f79358907bfc48c2ac64042e207b400 3 | folderAsset: yes 4 | timeCreated: 1475161667 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Scripts/Editor/EditorGUIHierarchyView.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using UnityEditor; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | public class EditorGUIHierarchyView { 8 | 9 | List OpenIds = new List(); 10 | List SelectedIds = new List(); 11 | 12 | GUIStyle foldoutChildessStyle; 13 | GUIStyle selectedAreaStyle; 14 | GUIStyle selectedLabel; 15 | GUIStyle selectedFoldout; 16 | GUIStyle normalFoldout; 17 | 18 | Color defaultSelectedTextColorDarkSkin = Color.white; 19 | Color defaultUnselectedTextColorDarkSkin = new Color(0.705f, 0.705f, 0.705f); 20 | Color defaultSelectedTextColorWhiteSkin = Color.white; 21 | Color defaultUnselectedTextColorWhiteSkin = Color.black; 22 | 23 | Color defaultSelectedTextColor; 24 | Color defaultUnselectedTextColor; 25 | bool defaultTextColorsSet ; 26 | 27 | Vector2 scrollPosition; 28 | string previousNodeID; 29 | bool isCurrentNodeVisible = true; 30 | string lastVisibleNodeID; 31 | List nodeIDBreadcrumb = new List(); 32 | 33 | public void BeginHierarchyView() { 34 | 35 | isCurrentNodeVisible = true; 36 | lastVisibleNodeID = null; 37 | nodeIDBreadcrumb.Clear (); 38 | EditorGUI.indentLevel = 0; 39 | 40 | if (foldoutChildessStyle == null) 41 | CreateStyles (); 42 | 43 | EditorGUILayout.BeginVertical (); 44 | scrollPosition = EditorGUILayout.BeginScrollView (scrollPosition); 45 | 46 | previousNodeID = null; 47 | } 48 | 49 | void CreateStyles() { 50 | foldoutChildessStyle = new GUIStyle (EditorStyles.label); 51 | var padding = foldoutChildessStyle.padding; 52 | padding.left = 16; 53 | foldoutChildessStyle.padding = padding; 54 | 55 | 56 | selectedAreaStyle = new GUIStyle (GUIStyle.none); 57 | selectedAreaStyle.normal.background = MakeTex (1, 1, new Color (0.24f, 0.49f, 0.91f)); 58 | selectedAreaStyle.active.background = selectedAreaStyle.normal.background; 59 | 60 | selectedLabel = new GUIStyle(foldoutChildessStyle); 61 | selectedLabel.normal.textColor = Color.white; 62 | 63 | selectedFoldout = new GUIStyle (EditorStyles.foldout); 64 | selectedFoldout.normal.textColor = Color.white; 65 | selectedFoldout.active.textColor = Color.white; 66 | selectedFoldout.focused.textColor = Color.white; 67 | selectedFoldout.onNormal.textColor = Color.white; 68 | selectedFoldout.onActive.textColor = Color.white; 69 | selectedFoldout.onFocused.textColor = Color.white; 70 | 71 | normalFoldout = new GUIStyle (EditorStyles.foldout); 72 | normalFoldout.active = normalFoldout.normal; 73 | normalFoldout.focused = normalFoldout.normal; 74 | normalFoldout.onActive = normalFoldout.onNormal; 75 | normalFoldout.onFocused = normalFoldout.onNormal; 76 | 77 | SetDefaultTextColors (); 78 | } 79 | 80 | void SetDefaultTextColors() { 81 | if (defaultTextColorsSet) 82 | return; 83 | 84 | if (EditorGUIUtility.isProSkin) { 85 | defaultSelectedTextColor = defaultSelectedTextColorDarkSkin; 86 | defaultUnselectedTextColor = defaultUnselectedTextColorDarkSkin; 87 | } else { 88 | defaultSelectedTextColor = defaultSelectedTextColorWhiteSkin; 89 | defaultUnselectedTextColor = defaultUnselectedTextColorWhiteSkin; 90 | } 91 | 92 | defaultTextColorsSet = true; 93 | } 94 | 95 | private Texture2D MakeTex(int width, int height, Color col) 96 | { 97 | Color[] pix = new Color[width*height]; 98 | 99 | for(int i = 0; i < pix.Length; i++) 100 | pix[i] = col; 101 | 102 | Texture2D result = new Texture2D(width, height); 103 | result.SetPixels(pix); 104 | result.Apply(); 105 | 106 | return result; 107 | } 108 | 109 | 110 | bool IsOpened(string id) { 111 | return OpenIds.Contains (id); 112 | } 113 | 114 | void Open(string id) { 115 | if (!IsOpened (id)) { 116 | OpenIds.Add (id); 117 | } 118 | } 119 | 120 | void Close(string id) { 121 | if (IsOpened (id)) { 122 | OpenIds.Remove (id); 123 | } 124 | } 125 | 126 | void AddToSelection(string id) { 127 | SelectedIds.Add (id); 128 | } 129 | 130 | bool IsSelected(string id) { 131 | return SelectedIds.Contains (id); 132 | } 133 | 134 | void RemoveFromSelection(string id) { 135 | SelectedIds.Remove (id); 136 | } 137 | 138 | void SetSelected(string id) { 139 | SelectedIds.Clear (); 140 | SelectedIds.Add (id); 141 | GUI.FocusControl(id); 142 | } 143 | 144 | //Returns true if this node is selected 145 | public bool BeginNode(string label) { 146 | return Node (label, true, defaultUnselectedTextColor,defaultSelectedTextColor); 147 | } 148 | 149 | //Returns true if this node is selected 150 | public bool BeginNode(string label, Color unselectedTextColor, Color selectedTextColor) { 151 | return Node (label, true,unselectedTextColor,selectedTextColor); 152 | } 153 | 154 | 155 | //Returns true if this node is selected 156 | public bool Node(string label, Color unselectedTextColor, Color selectedTextColor) { 157 | 158 | return Node (label, false, unselectedTextColor,selectedTextColor); 159 | } 160 | 161 | //Returns true if this node is selected 162 | public bool Node(string label) { 163 | 164 | return Node (label, false, defaultUnselectedTextColor,defaultSelectedTextColor); 165 | } 166 | 167 | bool Node(string label, bool isParent, Color unselectedTextColor, Color selectedTextColor) { 168 | 169 | var id = GetIDForLabel (label); 170 | 171 | if (isParent) { 172 | nodeIDBreadcrumb.Add (id); 173 | } 174 | 175 | if (!isCurrentNodeVisible) 176 | return false; 177 | 178 | 179 | bool wasOpened = IsOpened (id); 180 | bool isSelected = IsSelected (id); 181 | bool touchedInside = DrawNodeTouchableArea (id); 182 | GUI.SetNextControlName(id); 183 | bool opened = false; 184 | 185 | if (isParent) { 186 | GUIStyle styleToUse = isSelected ? selectedFoldout : normalFoldout; 187 | Color colorToUse = isSelected ? selectedTextColor : unselectedTextColor; 188 | styleToUse.normal.textColor = colorToUse; 189 | styleToUse.onNormal.textColor = colorToUse; 190 | styleToUse.active.textColor = colorToUse; 191 | styleToUse.onActive.textColor = colorToUse; 192 | styleToUse.focused.textColor = colorToUse; 193 | styleToUse.onFocused.textColor = colorToUse; 194 | 195 | opened = EditorGUILayout.Foldout (wasOpened, label, styleToUse); 196 | 197 | if (isSelected && Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.RightArrow) { 198 | opened = true; 199 | } else if (isSelected && Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.LeftArrow) { 200 | opened = false; 201 | } 202 | } else { 203 | GUIStyle styleToUse = isSelected ?selectedLabel:foldoutChildessStyle; 204 | Color colorToUse = isSelected ? selectedTextColor : unselectedTextColor; 205 | 206 | styleToUse.normal.textColor = colorToUse; 207 | styleToUse.active.textColor = colorToUse; 208 | 209 | EditorGUILayout.LabelField ( label, styleToUse); 210 | } 211 | 212 | EditorGUILayout.EndHorizontal (); 213 | 214 | bool useCurrentEvent = false; 215 | 216 | if (wasOpened != opened) { 217 | useCurrentEvent = true; 218 | if (opened) 219 | Open (id); 220 | else 221 | Close (id); 222 | } else if(touchedInside) { 223 | useCurrentEvent = true; 224 | if (Event.current.command) { 225 | if (IsSelected (id)) { 226 | RemoveFromSelection (id); 227 | } else { 228 | AddToSelection (id); 229 | } 230 | } 231 | else 232 | SetSelected (id); 233 | } 234 | 235 | HandleKeyboardCycle (previousNodeID, id); 236 | 237 | previousNodeID = id; 238 | 239 | if(useCurrentEvent) { 240 | Event.current.Use (); 241 | } 242 | 243 | 244 | if (isParent && !opened) { 245 | isCurrentNodeVisible = false; 246 | lastVisibleNodeID = id; 247 | } 248 | 249 | if (isParent) { 250 | EditorGUI.indentLevel++; 251 | } 252 | 253 | return IsSelected (id); 254 | } 255 | 256 | public void EndNode() { 257 | string endedNodeId = nodeIDBreadcrumb [nodeIDBreadcrumb.Count - 1]; 258 | if (endedNodeId == lastVisibleNodeID) { 259 | isCurrentNodeVisible = true; 260 | lastVisibleNodeID = null; 261 | } 262 | nodeIDBreadcrumb.RemoveAt (nodeIDBreadcrumb.Count - 1); 263 | 264 | if(isCurrentNodeVisible) 265 | EditorGUI.indentLevel--; 266 | } 267 | 268 | 269 | string GetIDForLabel(string label) { 270 | StringBuilder sb = new StringBuilder (); 271 | foreach (string id in nodeIDBreadcrumb) { 272 | sb.Append (id); 273 | sb.Append ("_"); 274 | } 275 | 276 | sb.Append (label); 277 | return sb.ToString (); 278 | } 279 | 280 | void HandleKeyboardCycle(string previousNodeID, string currentNodeID) { 281 | if (Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.DownArrow) { 282 | if (IsSelected (previousNodeID)) { 283 | Event.current.Use (); 284 | SetSelected (currentNodeID); 285 | } 286 | } 287 | else if (Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.UpArrow) { 288 | if (IsSelected (currentNodeID)) { 289 | Event.current.Use (); 290 | SetSelected (previousNodeID); 291 | } 292 | } 293 | } 294 | 295 | bool DrawNodeTouchableArea(string id) { 296 | var area = EditorGUILayout.BeginHorizontal (IsSelected(id)?selectedAreaStyle:GUIStyle.none, GUILayout.ExpandWidth (true)); 297 | Event currentEvent = Event.current; 298 | bool touchedInside = false; 299 | if (currentEvent.type == EventType.mouseUp) { 300 | Vector2 mousePosition = currentEvent.mousePosition; 301 | if (area.Contains (mousePosition)) { 302 | touchedInside = true; 303 | } 304 | } 305 | 306 | return touchedInside; 307 | } 308 | 309 | 310 | public void EndHierarchyView() { 311 | 312 | if (nodeIDBreadcrumb.Count > 0) { 313 | Debug.LogError ("Called EndHierarchyView with nodes still opened. Please ensure that you have a EndNode() for every BeginNode()"); 314 | } 315 | 316 | EditorGUILayout.EndVertical (); 317 | EditorGUILayout.EndScrollView (); 318 | } 319 | } 320 | -------------------------------------------------------------------------------- /Assets/EditorGUIHierarchyView/Scripts/Editor/EditorGUIHierarchyView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24bfcf4bd5a4e479390ee42e36cea767 3 | timeCreated: 1475161933 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /EditorGUIHierarchyView.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/EditorGUIHierarchyView.unitypackage -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/ClusterInputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.4.1f1 2 | m_StandardAssetsVersion: 0 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityAdsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/UnityAdsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/ProjectSettings/UnityConnectSettings.asset -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Editor GUI Hierarchy View 2 | 3 | EditorGUIHierarchyView is an utility view that allows you to easily add a hierarchy view (think Unity's scene view) to your Editor Windows. 4 | 5 | ![](example.gif) 6 | 7 | ## Features 8 | 9 | * Keyboard cycling (move up/down, open/close with key arrows) 10 | * Item selection 11 | * Multiple selection (cmd+click to select multiple items) 12 | * Text coloring (for both selected and unselected states) 13 | 14 | 15 | ## Example 16 | 17 | ```csharp 18 | 19 | EditorGUIHierarchyView hierarchyView = new EditorGUIHierarchyView(); 20 | 21 | public void OnGUI () 22 | { 23 | hierarchyView.BeginHierarchyView (); 24 | 25 | hierarchyView.BeginNode ("Select me"); 26 | hierarchyView.Node ("Child"); 27 | hierarchyView.BeginNode ("Another parent"); 28 | hierarchyView.Node ("Grandson"); 29 | hierarchyView.EndNode (); 30 | hierarchyView.EndNode (); 31 | 32 | hierarchyView.Node ("No children"); 33 | hierarchyView.Node ("Hello"); 34 | 35 | hierarchyView.EndHierarchyView (); 36 | 37 | Repaint (); 38 | } 39 | ``` 40 | 41 | ![](example2.png) -------------------------------------------------------------------------------- /example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/example.gif -------------------------------------------------------------------------------- /example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miguel12345/EditorGUIHierarchyView/aab7056ee45ad00a92f6486c435487e78ab6567c/example2.png --------------------------------------------------------------------------------