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);
        }