namespace UIWidgets.Examples
{
using UIWidgets;
using UnityEngine;
///
/// Create TreeView data from hierarchy.
///
public class TreeViewDataFromHierarchy : MonoBehaviour
{
///
/// TreeView.
///
public TreeView TreeView;
///
/// Process the start event.
///
public virtual void Start()
{
AllGameObjects();
}
///
/// Show all gameobjects in TreeView.
///
public void AllGameObjects()
{
TreeView.Nodes = Hierarchy2Data();
}
///
/// Show nested gameobjects in TreeView.
///
/// Parent.
public void NestedGameObject(Transform parent)
{
TreeView.Nodes = Hierarchy2Data(parent);
}
ObservableList> Hierarchy2Data()
{
var nodes = new ObservableList>();
var roots = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
foreach (var go in roots)
{
var item = new TreeViewItem(go.name);
item.Tag = go;
var node = new TreeNode(item);
node.Nodes = Hierarchy2Data(go.transform);
nodes.Add(node);
}
return nodes;
}
ObservableList> Hierarchy2Data(Transform source)
{
var nodes = new ObservableList>();
for (int i = 0; i < source.childCount; i++)
{
var child = source.GetChild(i);
var item = new TreeViewItem(child.name);
item.Tag = child.gameObject;
var node = new TreeNode(item);
node.Nodes = Hierarchy2Data(child);
nodes.Add(node);
}
return nodes;
}
}
}