From 232ad09afc78b4b53cdf3ce6c2ec9a4998b73148 Mon Sep 17 00:00:00 2001 From: Antoine Lassauzay Date: Mon, 26 Jun 2017 16:13:21 -0400 Subject: [PATCH] UIElements example 07 WIP : TreeView example with UXML and DataWatch improvements --- Assets/Editor/E07_Data.cs | 151 ++++++++++++++++++ Assets/Editor/E07_Data.cs.meta | 12 ++ Assets/Editor/Resources/TreeView.uss | 32 ++++ Assets/Editor/Resources/TreeView.uss.meta | 9 ++ Assets/Editor/Resources/TreeView.uxml | 9 ++ Assets/Editor/Resources/TreeView.uxml.meta | 9 ++ .../Editor/Resources/uielementssettings.asset | 17 ++ .../Resources/uielementssettings.asset.meta | 9 ++ Assets/test.unity.meta | 8 + ProjectSettings/ProjectVersion.txt | 2 +- 10 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 Assets/Editor/E07_Data.cs create mode 100644 Assets/Editor/E07_Data.cs.meta create mode 100644 Assets/Editor/Resources/TreeView.uss create mode 100644 Assets/Editor/Resources/TreeView.uss.meta create mode 100644 Assets/Editor/Resources/TreeView.uxml create mode 100644 Assets/Editor/Resources/TreeView.uxml.meta create mode 100644 Assets/Editor/Resources/uielementssettings.asset create mode 100644 Assets/Editor/Resources/uielementssettings.asset.meta create mode 100644 Assets/test.unity.meta diff --git a/Assets/Editor/E07_Data.cs b/Assets/Editor/E07_Data.cs new file mode 100644 index 0000000..3f91e18 --- /dev/null +++ b/Assets/Editor/E07_Data.cs @@ -0,0 +1,151 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.Experimental.UIElements; +using UnityEditor.SceneManagement; +using UnityEditor.Experimental.UIElements; +using System.Collections.Generic; +using System.Linq; + +namespace UIElementsExamples +{ + public class E07_Data : EditorWindow + { + [MenuItem("UIElementsExamples/07_Data")] + public static void ShowExample() + { + E07_Data window = GetWindow(); + window.minSize = new Vector2(450, 200); + window.titleContent = new GUIContent("Example 7"); + } + + static VisualTreeAsset s_Asset; + static VisualTreeAsset asset + { + get + { + if (s_Asset == null) + { + s_Asset = Resources.Load("TreeView"); + Debug.Assert(s_Asset != null); + } + return s_Asset; + } + } + + List m_ExpandedGOs; + + public void OnEnable() + { + if (m_ExpandedGOs == null) + m_ExpandedGOs = new List(); + + Scene scene = SceneManager.GetSceneAt(0); + + var scrollView = new ScrollView(); + scrollView.StretchToParentSize(); + + if (scene.IsValid()) + { + GameObject[] gameObjects = scene.GetRootGameObjects(); + RecursiveSetUp(gameObjects, scrollView.contentView); + } + + this.GetRootVisualContainer().AddChild(scrollView); + this.GetRootVisualContainer().AddStyleSheetPath("TreeView"); + } + + static void UpdateName(VisualElement treeViewItem, Object data) + { + if (data == null) + return; + + treeViewItem.Q