示例#1
0
        public override void Abort()
        {
            if (runningNode != null)
            {
                runningNode.Abort();
                runningNode = null;
            }

            if (resetOnAbort)
            {
                targetIndex = 0;
            }
        }
示例#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));
        }