public static GOAPGoal Get(GOAPGoalType type, Agent owner) { if (_buffers[(int)type].Count > 0) { _buffers[(int)type].Peek().Reset(owner); return(_buffers[(int)type].Dequeue()); } switch (type) { case GOAPGoalType.STEP_IN: return(new GOAPGoalStepIn(owner)); case GOAPGoalType.STEP_OUT: return(new GOAPGoalStepOut(owner)); case GOAPGoalType.STEP_AROUND: return(new GOAPGoalStepAround(owner)); case GOAPGoalType.ATTACK_TARGET: return(new GOAPGoalAttackTarget(owner)); case GOAPGoalType.REACT_TO_DAMAGE: return(new GOAPGoalReactToDamage(owner)); case GOAPGoalType.BLOCK: return(new GOAPGoalBlock(owner)); /*case GOAPGoalType.ORDER_ATTACK: * return new GOAPGoalOrderAttack(owner); * case GOAPGoalType.ORDER_DODGE: * return new GOAPGoalOrderDodge(owner); * case GOAPGoalType.LOOK_AT_TARGET: * return new GOAPGoalLookAtTarget(owner); * case GOAPGoalType.KILL_TARGET: * return new GOAPGoalKillTarget(owner); * case GOAPGoalType.DODGE: * return new GOAPGoalDodge(owner); * case GOAPGoalType.ALERT: * return new GOAPGoalAlert(owner); * case GOAPGoalType.CALM: * return new GOAPGoalCalm(owner); * case GOAPGoalType.PLAY_ANIM: * return new GOAPGoalPlayAnim(owner); * case GOAPGoalType.IDLE_ANIM: * return new GOAPGoalIdleAction(owner); */ default: return(null); } }
//public abstract void MakeSatisfied(WorldState worldState); protected GOAPGoal(GOAPGoalType type, Agent owner) { GoalType = type; _owner = owner; Plan = new GOAPPlan(_owner); }