protected void Traverse(GameObject uiTreeObject, ManageUI manageFunction) { Transform uiTreeTransform = uiTreeObject.transform; Queue <Node> queue = new Queue <Node>(); queue.Enqueue(_root); int index = 1; while (queue.Count > 0) { Node current = queue.Dequeue(); UIBehaviorTreeNode uiNode = null; if (_uiNodesLoaded) { uiNode = _uiNodes[index]; } else { uiNode = uiTreeTransform.GetChild(index).gameObject.GetComponent <UIBehaviorTreeNode>(); } manageFunction(current, uiNode); switch (current.Type) { case NodeType.CONTROL: List <Node> children = ((ControlNode)current).GetChildren(); for (int i = 0; i < children.Count; i++) { queue.Enqueue(children[i]); } break; case NodeType.DECORATOR: queue.Enqueue(((DecoratorNode)current).GetChild()); break; default: break; } index++; } }
public void SetUIPointer(UIBehaviorTreeNode uiNode) { _uiNode = uiNode; }
public void SetUIPointer(Node node, UIBehaviorTreeNode uiNode) { _uiNodes.Add(uiNode); node.SetUIPointer(uiNode); }
private void ChangeUIColor(Node node, UIBehaviorTreeNode uiNode) { uiNode.ChangeColor(node.GetStatus()); }