示例#1
0
    private void CompleteAction()
    {
        Debug.Log(gameObject.name + " completed action: " + currentAction.actionName);

        currentAction.running = false;
        currentAction.PostPerform();
        invoked = false;
    }
示例#2
0
    void LateUpdate()
    {
        if (mCurrentAction != null && mCurrentAction.Running)
        {
            mCurrentAction.Perform();
            if (!mCurrentAction.Running)
            {
                mCurrentAction.PostPerform();
                mCurrentAction = null;
            }
            else
            {
                return;
            }
        }

        if (mPlanner == null || mActionQueue == null)
        {
            mPlanner = new GPlanner();

            var sortedGoals = from entry in mGoals orderby entry.Value descending select entry;

            foreach (KeyValuePair <GAgentSubGoal, int> sg in sortedGoals)
            {
                mActionQueue = mPlanner.Plan(mActions, sg.Key.SubGoals, Beliefs);
                if (mActionQueue != null)
                {
                    mCurrentGoal = sg.Key;
                    break;
                }
            }
        }

        if (mActionQueue != null && mActionQueue.Count == 0)
        {
            if (mCurrentGoal.Remove)
            {
                mGoals.Remove(mCurrentGoal);
            }
            mPlanner = null;
        }

        if (mActionQueue != null && mActionQueue.Count > 0)
        {
            GAction newAction = mActionQueue.Dequeue();
            //if (newAction != currentAction)
            // {
            mCurrentAction = newAction;

            if (!mCurrentAction.PrePerform())
            {
                mActionQueue = null;
            }
            // }
        }
    }
示例#3
0
文件: GAgent.cs 项目: cculver831/-
 //an invoked method to allow an agent to be performing a task
 //for a set location
 public void CompleteAction()
 {
     currentAction.running = false;
     if (currentAction.wp != null)
     {
         currentAction.wp = currentAction.wp.nextWaypoint;
     }
     currentAction.PostPerform();
     invoked = false;
 }
示例#4
0
 void CompleteAction()
 {
     currentAction.running = false;
     currentAction.PostPerform();
     invoked = false;
 }
示例#5
0
 void CompleteAction()
 {
     CurrentAction.Running = false;
     CurrentAction.PostPerform();
     _invoked = false;
 }