public void Open(ProgrammableMenuNode firstNode = null) { if (IsShowing) { HideNode(menuStack.Peek(), null); } else { ShowMenuPanel(); } if (firstNode == null) { firstNode = FirstNode; } if (firstNode == null) { Debug.LogErrorFormat( @"Programmable Menu System: Please set ProgrammableMenuSystem.Instance.FirstNode or pass it into Show() method!"); } menuStack.Push(firstNode); ShowNode(firstNode, null); SelectButton(firstNode); }
public ProgrammableMenuNode OnDown(ProgrammableMenuNode other) { Debug.LogFormat("On down {0}", name); Down = other; other.Up = this; return(this); }
private void ShowNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode) { if (node == null) { return; } node.gameObject.SetActive(true); RepositionNode(node, parentNode); if (node.Down != null && node.Down != parentNode) { ShowNode(node.Down, node); } if (node.Left != null && node.Left != parentNode) { ShowNode(node.Left, node); } if (node.Right != null && node.Right != parentNode) { ShowNode(node.Right, node); } if (node.Up != null && node.Up != parentNode) { ShowNode(node.Up, node); } }
private void SelectButton(ProgrammableMenuNode node = null) { if (node == null && menuStack.Count > 0) { node = menuStack.Peek(); } if (node != null) { EventSystem.current.SetSelectedGameObject(node.gameObject); } }
private void RepositionNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode) { if (!RepositionButtons) { return; } if (parentNode == null) { node.RectTransform.anchoredPosition = MenuOffset; return; } var parentPosition = parentNode.RectTransform.anchoredPosition; Vector2 offset; if (parentNode == node.Up) { offset = new Vector2( 0, -parentNode.RectTransform.sizeDelta.y - MenuItemGapVertical); } else if (parentNode == node.Down) { offset = new Vector2( 0, parentNode.RectTransform.sizeDelta.y + MenuItemGapVertical); } else if (parentNode == node.Left) { offset = new Vector2( parentNode.RectTransform.sizeDelta.x + MenuItemGapHorizontal, 0); } else if (parentNode == node.Right) { offset = new Vector2( -parentNode.RectTransform.sizeDelta.x - MenuItemGapHorizontal, 0); } else { offset = new Vector2(0, 0); } node.RectTransform.anchoredPosition = parentPosition + offset; }
private void ReloadNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode) { if (node == null) { return; } node.LoadText(); if (node.Down != null && node.Down != parentNode) { ReloadNode(node.Down, node); } if (node.Left != null && node.Left != parentNode) { ReloadNode(node.Left, node); } if (node.Right != null && node.Right != parentNode) { ReloadNode(node.Right, node); } if (node.Up != null && node.Up != parentNode) { ReloadNode(node.Up, node); } }
private void HideNode(ProgrammableMenuNode node, ProgrammableMenuNode parentNode) { if (node == null) { return; } node.gameObject.SetActive(false); if (node.Down != null && node.Down != parentNode) { HideNode(node.Down, node); } if (node.Left != null && node.Left != parentNode) { HideNode(node.Left, node); } if (node.Right != null && node.Right != parentNode) { HideNode(node.Right, node); } if (node.Up != null && node.Up != parentNode) { HideNode(node.Up, node); } }
public ProgrammableMenuNode OnIn(ProgrammableMenuNode other) { In = other; return(this); }
public ProgrammableMenuNode OnRight(ProgrammableMenuNode other) { Right = other; other.Left = this; return(this); }
public ProgrammableMenuNode OnUp(ProgrammableMenuNode other) { Up = other; other.Down = this; return(this); }