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