示例#1
0
        protected override Status OnUpdate()
        {
            // update running node if previous status is Running.
            if (runningNode != null)
            {
                return(HandleStatus(runningNode.Update(), runningNode));
            }

            var target = Children[targetIndex];

            return(HandleStatus(target.Update(), target));
        }
示例#2
0
        protected override Status OnUpdate()
        {
            // update running node if previous status is Running.
            if (runningNode != null)
            {
                if (abortOnConditionChanged && IsConditionChanged(runningNode))
                {
                    runningNode.Abort();
                    return(UpdateWhileFailure(0));
                }
                var currentOrder = Children.IndexOf(runningNode);
                var status       = runningNode.Update();
                if (status == Status.Failure)
                {
                    // update next nodes
                    return(UpdateWhileFailure(currentOrder + 1));
                }

                return(HandleStatus(status, runningNode));
            }

            return(UpdateWhileFailure(0));
        }