private void CallOnEnterOnQueuedNodes() { // Make sure to call on enter on any queued new traversals. while (_requestedTraversals.Count != 0) { int i = _requestedTraversals.Dequeue(); BehaviourNode node = _tree.allNodes[i]; node.OnEnter(); if (node.CanTickOnBranch()) { _branchTicks.Push(i); } CallOnChildEnter(node); } }
private BehaviourNode PopNode() { int index = _traversal.Pop(); BehaviourNode node = _tree.allNodes[index]; node.OnExit(); // Guard against empty branch tick pop. // This could occur if a node was aborted then interrupted in succession. // TODO: Test this further. if (_branchTicks.Count != 0 && node.CanTickOnBranch()) { _branchTicks.Pop(); } return(node); }