Пример #1
0
        protected override NodeRunningStatus UpdateInternal(OutputParam rInput, OutputParam rOutput)
        {
            NodeRunningStatus rIsFinish = NodeRunningStatus.Finish;

            if (mActionStatus == NodeActionStaus.Ready)
            {
                Enter(rInput);
                mNeedExit = true;
                mActionStatus = NodeActionStaus.Running;
                SetActiveNode(this);
            }

            if (mActionStatus == NodeActionStaus.Running)
            {
                rIsFinish = Execute(rInput, rOutput);
                SetActiveNode(this);
                if(rIsFinish != NodeRunningStatus.Executing)
                {
                    mActionStatus = NodeActionStaus.Finish;
                }
            }

            if (mActionStatus == NodeActionStaus.Finish)
            {

                if (mNeedExit) Exit(rInput, rIsFinish);
                mActionStatus = NodeActionStaus.Ready;
                mNeedExit = false;
                SetActiveNode(null);

                return rIsFinish;
            }

            return rIsFinish;
        }
Пример #2
0
        protected override void TransitionInternal(OutputParam rInput)
        {
            if (mNeedExit) Exit(rInput, NodeRunningStatus.TransitionError);

            SetActiveNode(null);
            mActionStatus = NodeActionStaus.Ready;
            mNeedExit = false;
        }
Пример #3
0
        protected override void TransitionInternal(OutputParam rInput)
        {
            if (mNeedExit)
            {
                Exit(rInput, NodeRunningStatus.TransitionError);
            }

            SetActiveNode(null);
            mActionStatus = NodeActionStaus.Ready;
            mNeedExit     = false;
        }
Пример #4
0
        protected override NodeRunningStatus UpdateInternal(OutputParam rInput, OutputParam rOutput)
        {
            NodeRunningStatus rIsFinish = NodeRunningStatus.Finish;

            if (mActionStatus == NodeActionStaus.Ready)
            {
                Enter(rInput);
                mNeedExit     = true;
                mActionStatus = NodeActionStaus.Running;
                SetActiveNode(this);
            }

            if (mActionStatus == NodeActionStaus.Running)
            {
                rIsFinish = Execute(rInput, rOutput);
                SetActiveNode(this);
                if (rIsFinish != NodeRunningStatus.Executing)
                {
                    mActionStatus = NodeActionStaus.Finish;
                }
            }

            if (mActionStatus == NodeActionStaus.Finish)
            {
                if (mNeedExit)
                {
                    Exit(rInput, rIsFinish);
                }
                mActionStatus = NodeActionStaus.Ready;
                mNeedExit     = false;
                SetActiveNode(null);

                return(rIsFinish);
            }

            return(rIsFinish);
        }
Пример #5
0
 public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null)
     : base(rParentNode, rCondtion)
 {
     mActionStatus = NodeActionStaus.Ready;
     mNeedExit = false;
 }
Пример #6
0
 public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null)
     : base(rParentNode, rCondtion)
 {
     mActionStatus = NodeActionStaus.Ready;
     mNeedExit     = false;
 }