Exemple #1
0
    public void CreateTeam(AgentSensor sensor)
    {
        SetTeamLeader(this);
        FindTeamMembers(sensor);

        foreach (TeamController controller in teamMembers)
        {
            controller.SetTeamLeader(this);
        }
    }
        public void SetUp()
        {
            _agentContainer    = Substitute.For <IAgentContainer>();
            _tangibleContainer = Substitute.For <ITangibleContainer>();
            _eventContext      = Substitute.For <IEventContext>();
            _agent             = Substitute.For <IAgent>();

            _context = TestUtilities.BuildSubServiceContextWithServices(new Dictionary <string, object>
            {
                { "IAgentContainer", _agentContainer },
                { "IEventContext", _eventContext },
                { "ITangibleContainer", _tangibleContainer }
            });

            _sensor = new AgentSensor(_context, _agent);
        }
    public void SetNextTarget(GameObject agent, AgentController controller)
    {
        AgentSensor       sense   = controller.sensor;
        List <GameObject> enemies = sense.GetEnemies();

        controller.shootTarget = ChooseTarget(agent, controller, enemies);
        controller.weapon.SetTarget(controller.shootTarget);

        GameObject          aiChild  = TD_Utility.Utility.GetChildByTag(agent, Constants.AITag);
        Face                steering = TD_Utility.Utility.GetChildByTag(aiChild, Constants.SteeringTag).GetComponent <Face>();
        KinematicController kin      = aiChild.GetComponent <KinematicController>();

        kin.SetAlternativeSteeringBehaviour(steering);
        kin.SetTarget(controller.shootTarget);
        kin.UseKinematic(true);
    }
Exemple #4
0
    private void FindTeamMembers(AgentSensor sensor)
    {
        if (teamMembers.Count != 0)
        {
            ResetTeam();
        }

        List <GameObject> allies = sensor.GetAllies();

        foreach (GameObject go in allies)
        {
            GameObject     child      = TD_Utility.Utility.GetChildByTag(go, Constants.TeamTag);
            TeamController controller = child.GetComponent <TeamController>();
            teamMembers.Add(controller);
        }
    }
Exemple #5
0
        public AIAgentController(Agent agent, AgentSensor sensor, AIBehaviourManager behaviourManager) : base(agent, sensor)
        {
            ClearBehaviour();
            BehaviourManager = behaviourManager;
            Agent            = agent;
            Sensor           = sensor;

            if (behaviourManager != null)
            {
                SetBehaviour(behaviourManager.ChooseStrategy(agent));
            }
            else
            {
                Debug.Log("Behaviour manager is null!");
            }
        }
Exemple #6
0
    //returns true if a team was found
    public bool LookForTeam(AgentSensor sensor)
    {
        //1. Find all nearby allies
        FindTeamMembers(sensor);

        //2. check if any ally is already a team leader or is in a team
        foreach (TeamController controller in teamMembers)
        {
            if (controller.teamLeader != null)
            {
                JoinTeam(this);
                return(true);
            }
        }

        return(false);
    }
    void Awake()
    {
        shootTarget = null;

        sm = TD_Utility.Utility.GetChildByTag(gameObject, Constants.StateMachineTag).GetComponent <StateMachine>();
        if (sm == null)
        {
            Debug.LogError("State Machine could not be found for agent: " + gameObject.name);
        }
        sm.SetAgent(gameObject);

        sensor = TD_Utility.Utility.GetChildByTag(gameObject, Constants.SensorTag).GetComponent <AgentSensor>();
        if (sensor == null)
        {
            Debug.LogError("Sensor could not be found for agent: " + gameObject.name);
        }
    }
Exemple #8
0
 void Start()
 {
     controller = GetComponent <AgentController>();
     sensor     = GetComponent <AgentSensor>();
     behaviour  = GetComponent <AgentBehaviour>();
 }
Exemple #9
0
 public void SetSensor(AgentSensor sensor)
 {
     Sensor = sensor;
 }