예제 #1
0
 public void OnInit(GOAPAgent agent)
 {
     if (PreconditionInfo.Init)
     {
         ((IGOAPInitListener)Precondition).OnInit(agent);
     }
     if (ActionInfo.Init)
     {
         ((IGOAPInitListener)Action).OnInit(agent);
     }
 }
예제 #2
0
 public void OnUpdate(GOAPAgent agent)
 {
     if (PreconditionInfo.Update)
     {
         ((IGOAPUpdateListener)Precondition).OnUpdate(agent);
     }
     if (ActionInfo.Update)
     {
         ((IGOAPUpdateListener)Action).OnUpdate(agent);
     }
 }
예제 #3
0
 public void OnTerminate(GOAPAgent agent)
 {
     if (PreconditionInfo.Terminate)
     {
         ((IGOAPTerminateListener)Precondition).OnTerminate(agent);
     }
     if (ActionInfo.Terminate)
     {
         ((IGOAPTerminateListener)Action).OnTerminate(agent);
     }
 }
예제 #4
0
 public void Continue(GOAPAgent agent)
 {
     if (actionQueue.Count <= 0)
     {
         return;
     }
     if (CurrentNode != null)
     {
         CurrentNode.OnTerminate(agent);
     }
     CurrentNode = actionQueue.Dequeue();
     CurrentNode.Precondition.SetVariables(agent.EntityState);
     CurrentNode.OnInit(agent);
 }
예제 #5
0
 public virtual void OnTerminate(GOAPAgent agent)
 {
 }
예제 #6
0
 public virtual void OnUpdate(GOAPAgent agent)
 {
 }
예제 #7
0
 public virtual void OnInit(GOAPAgent agent)
 {
 }
예제 #8
0
        public void ForceEnqueue(GOAPAgent agent, Precondition precondition)
        {
            var action = agent.GetBestActionFor(precondition);

            actionQueue.Enqueue(new GOAPPlanNode(action, precondition));
        }
예제 #9
0
 public void Init(GOAPAgent agent)
 {
     Continue(agent);
 }
예제 #10
0
 public abstract bool IsPossible(GOAPAgent agent, EntityState state);
예제 #11
0
 public abstract float CalculateMotivation(GOAPAgent agent);
예제 #12
0
 public abstract float CalculateCost(GOAPAgent agent);