Пример #1
0
        /// <summary> 终止计划(在<see cref="interval"/>之后才会重新搜寻计划) </summary>
        public void AbortPlan()
        {
            if (HasPlan)
            {
                actionQueue.Clear();
            }

            if (CurrentAction != null)
            {
                CurrentAction.OnPostPerform(false);
                // 如果动作执行失败,转换到空闲状态,并通知因为该动作导致计划失败
                if (Provider != null)
                {
                    Provider.PlanAborted(CurrentAction);
                }
            }

            CurrentAction = null;
            CurrentGoal   = null;
            FSM.ChangeTo("IdleState");
        }