// Update is called once per frame protected override void Update() { if (!IsIt) { decisionTree.Evaluate(); } else { finiteStateMachine.Evaluate(); } if (Manager.NavMesh) { if (behaviour != previous_behaviour || this.GetComponent <NavMeshAgent>().velocity.magnitude == 0) { previous_behaviour = behaviour; //DebugDecision(); switch (behaviour) { case BEHAVIOUR_TYPE.WANDER: WanderUpdate(); break; case BEHAVIOUR_TYPE.MOVE_TO_LAST_SPOTTER: MoveToLastSpotterUpdate(); break; case BEHAVIOUR_TYPE.FLANK: FlankUpdate(); break; case BEHAVIOUR_TYPE.TAGGING: TaggingUpdate(); break; case BEHAVIOUR_TYPE.EVADE: RunAwayUpdate(); break; case BEHAVIOUR_TYPE.TURN_AROUND: TurnAroundUpdate(); break; } } } else { switch (behaviour) { case BEHAVIOUR_TYPE.WANDER: WanderUpdate(); break; case BEHAVIOUR_TYPE.MOVE_TO_LAST_SPOTTER: MoveToLastSpotterUpdate(); break; case BEHAVIOUR_TYPE.FLANK: FlankUpdate(); break; case BEHAVIOUR_TYPE.TAGGING: TaggingUpdate(); break; case BEHAVIOUR_TYPE.EVADE: RunAwayUpdate(); break; case BEHAVIOUR_TYPE.TURN_AROUND: TurnAroundUpdate(); break; } } }
private void SetTurnAround() { behaviour = BEHAVIOUR_TYPE.TURN_AROUND; }
private void SetStayPut() { behaviour = BEHAVIOUR_TYPE.NULL; }
private void SetRunAway() { behaviour = BEHAVIOUR_TYPE.EVADE; }
private void SetTagging() { behaviour = BEHAVIOUR_TYPE.TAGGING; }
private void SetFlank() { behaviour = BEHAVIOUR_TYPE.FLANK; }
private void SetMoveToLastSpotter() { behaviour = BEHAVIOUR_TYPE.MOVE_TO_LAST_SPOTTER; }
private void SetWander() { behaviour = BEHAVIOUR_TYPE.WANDER; }