Exemplo n.º 1
0
        /// <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();
            }
        }
Exemplo n.º 2
0
        /// <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();
            }
        }
Exemplo n.º 3
0
 private void OnChildExit(BehaviourNode node, BehaviourNode.Status s)
 {
     if (node.Parent)
     {
         node.Parent.OnChildExit(node.indexOrder, s);
         LastChildExitStatus = s;
     }
 }
Exemplo n.º 4
0
        /// <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
        }
Exemplo n.º 5
0
 protected internal sealed override void OnChildExit(int childIndex, BehaviourNode.Status childStatus)
 {
 }
Exemplo n.º 6
0
 protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus)
 {
     _bChildRunning = false;
 }
Exemplo n.º 7
0
 protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus)
 {
     _childStatuses[childIndex] = childStatus;
 }
Exemplo n.º 8
0
 protected internal override void OnChildExit(int childIndex, BehaviourNode.Status childStatus)
 {
     _currentChildIndex++;
 }