/// <summary> /// Ticks the iterator. /// </summary> public void Update() { CallOnEnterOnQueuedNodes(); int index = traversal.Peek(); BehaviourNode node = tree.Nodes[index]; BehaviourNode.Status s = node.Run(); LastExecutedStatus = s; #if UNITY_EDITOR node.StatusEditorResult = (BehaviourNode.StatusEditor)s; #endif if (s != BehaviourNode.Status.Running) { PopNode(); OnChildExit(node, s); } if (traversal.Count == 0) { OnDone(); } }
/// <summary> /// Ticks the iterator. /// </summary> public void Update() { callOnEnterOnQueuedNodes(); int index = _traversal.Peek(); BehaviourNode node = _tree.allNodes[index]; _lastStatusReturned = node.Run(); #if UNITY_EDITOR node.SetStatusEditor(_lastStatusReturned); #endif if (_lastStatusReturned != BehaviourNode.Status.Running) { node.OnExit(); _traversal.Pop(); callOnChildExit(node); } if (_traversal.Count == 0) { OnDone(); } }
private void OnChildExit(BehaviourNode node, BehaviourNode.Status s) { if (node.Parent) { node.Parent.OnChildExit(node.indexOrder, s); LastChildExitStatus = s; } }
/// <summary> /// Requests the iterator to traverse a new node. /// </summary> /// <param name="next"></param> public void Traverse(BehaviourNode next) { int index = next.preOrderIndex; _traversal.Push(index); _requestedTraversals.Enqueue(index); _lastStatusReturned = BehaviourNode.Status.Running; #if UNITY_EDITOR next.SetStatusEditor(BehaviourNode.Status.Running); #endif }
protected internal sealed override void OnChildExit(int childIndex, BehaviourNode.Status childStatus) { }
protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus) { _bChildRunning = false; }
protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus) { _childStatuses[childIndex] = childStatus; }
protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus) { _currentChildIndex++; }