public void Tick() { CallOnEnterOnQueuedNodes(); var index = traversal.Peek(); var node = tree.Nodes[index]; var status = node.Run(); LastExecutedStatus = status; #if UNITY_EDITOR node.StatusEditorResult = (BTNode.EStatusEditor)status; #endif if (status != BTNode.EStatus.Running) { PopNode(); OnChildExit(node, status); } if (traversal.Count == 0) { onDone?.Invoke(); __debug("iterator done!"); } }
private void OnChildExit(BTNode node, BTNode.EStatus status) { if (node.Parent != null) { node.Parent.OnChildExit(node.childOrder, status); LastChildExitStatus = status; } }