Exemplo n.º 1
0
 /// <summary>
 /// 终止节点的执行并退出,执行结果记为Failed
 /// </summary>
 public void InterruptAndExit()
 {
     if (ExecuteState != BehaviorExecuteState.executing)
     {
         return;
     }
     ExecuteState = BehaviorExecuteState.failed;
     if (SubNodes.Count == 0)
     {
         return;
     }
     foreach (var item in SubNodes)
     {
         item.InterruptAndExit();
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// 将完成任务该节点重置为Ready
        /// </summary>
        public virtual void Reset()
        {
            if (executeState == BehaviorExecuteState.executing)
            {
                throw new Exception("试图重置执行中的行为");
            }
            if (SubNodes.Count == 0)
            {
                ExecuteState = BehaviorExecuteState.Ready;
                return;
            }
            ExecuteState = BehaviorExecuteState.Ready;

            foreach (var item in SubNodes)
            {
                item.Reset();
            }
        }
Exemplo n.º 3
0
        public override void Execute()
        {
            if (Root.ExecuteState == BehaviorExecuteState.failed || Root.ExecuteState == BehaviorExecuteState.finishied)
            {
                PrevResult = Root.ExecuteState;

                if (RoundExecuted != null)
                {
                    RoundExecuted(this);
                }
                Root.Reset();
                return;
            }
            if (Root.ExecuteState == BehaviorExecuteState.Ready)
            {
                Root.ExecuteState = BehaviorExecuteState.executing;
            }
            Root.Execute();
        }