TreeViewItem BuildInteractableTree() { var rootTreeItem = new Item { id = m_InteractionManager != null?m_InteractionManager.GetInstanceID() : 1, displayName = m_InteractionManager != null ? m_InteractionManager.name : "-", depth = 0, }; // Build children. if (m_InteractionManager != null && m_InteractionManager.interactables.Count > 0) { var children = new List <TreeViewItem>(); foreach (var interactable in m_InteractionManager.interactables) { var childItem = new Item { id = interactable.GetInstanceID(), displayName = interactable.name, interactable = interactable, depth = 1, parent = rootTreeItem, }; children.Add(childItem); } // Sort children by name. children.Sort((a, b) => string.Compare(a.displayName, b.displayName)); rootTreeItem.children = children; } return(rootTreeItem); }