예제 #1
0
 public DebugMenuItemNode(NodeType type = NodeType.Folder, string name = null, DebugMenuItemNode parent = null, Action action = null)
 {
     Type     = type;
     Children = new Dictionary <string, DebugMenuItemNode>();
     Parent   = parent;
     Name     = name;
     Action   = action;
 }
예제 #2
0
        public DebugMenuItemNode AddFolder(string name)
        {
            if (ContainsChild(name))
            {
                throw new Exception($"Cannot add with the name \"{name}\", it already exists");
            }

            var child = new DebugMenuItemNode(NodeType.Folder, name, this);

            Children.Add(name, child);
            return(child);
        }
예제 #3
0
        public DebugMenuItemNode AddButton(string name, Action action, bool hideDebugMenuOnClick = true)
        {
            if (ContainsChild(name))
            {
                throw new Exception($"Cannot add with the name \"{name}\", it already exists");
            }

            var child = new DebugMenuItemNode(NodeType.Button, name, this, action);

            child.HideOnClick = hideDebugMenuOnClick;
            Children.Add(name, child);
            return(child);
        }
        private void SetupPage(DebugMenuItemNode node)
        {
            currentPageNode = node;

            buttonList.Clear();


            if (node.Parent != null)
            {
                buttonList.AddButton($"{backCharacter} Back", () => { SetupPage(node.Parent); });
            }

            foreach (var childNode in node.Children.Values)
            {
                var isFolder   = childNode.IsFolder;
                var buttonText = childNode.Name + (isFolder ? $" {folderArrowCharacter}" : "");

                UnityAction actionFunc = () =>
                {
                    if (isFolder)
                    {
                        SetupPage(childNode);
                    }
                    else
                    {
                        childNode.Action.Invoke();
                        if (childNode.HideOnClick)
                        {
                            debugMenu.Hide();
                        }
                    }
                };

                buttonList.AddButton(buttonText, actionFunc);
            }
        }
 private void OnEnable()
 {
     currentPageNode = rootNode;
     SetupPage(currentPageNode);
 }
 public void Init()
 {
     rootNode        = new DebugMenuItemNode();
     currentPageNode = rootNode;
 }