public void Start()
    {
        //Setup Prefs
        dataStorage.SetupFlockPrefs();
        dataStorage.SetupPredPrefs();

        //Check if first time setup
        if (PlayerPrefs.GetInt("startingCount", 0) == 0)
        {
            dataStorage.SaveFlockPrefs();
            dataStorage.SavePredPrefs();
        }

        float radius = flock.startingCount * flock.agentDensity * 5;

        //Spawn in the predator away from murmuration
        Vector3 predatorPos = Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5 * 4;
        float   predRadius  = radius * 2;

        while ((predatorPos.x < predRadius && predatorPos.x > predRadius * -1) ||
               (predatorPos.z < predRadius && predatorPos.z > predRadius * -1) ||
               (predatorPos.y < predRadius && predatorPos.y > predRadius * -1))
        {
            predatorPos = Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5 * 4;
        }
        predatorPos  += flock.focalPoint;
        predatorAgent = Instantiate(
            predatorPrefab,
            predatorPos,
            Random.rotation,
            transform
            );
        predatorAgent.name = "Predator";
        predatorAgent.Initialize(flock);
        flock.predatorAgent = predatorAgent;

        //Spawn in the flock of birds
        for (int i = 0; i < flock.startingCount; i++)
        {
            Vector3    pos      = (Random.insideUnitSphere * flock.startingCount * flock.agentDensity * 5) + flock.focalPoint;
            FlockAgent starling = Instantiate(
                flockAgent,
                pos,
                Random.rotation,
                transform
                );
            starling.name = "" + i;
            starling.Initialize(flock, predatorAgent);
            flock.agents.Add(starling);
            flock.agentsTransform.Add(starling.transform);
            StartCoroutine(starling.starlingAnimate(starling.GetComponentInChildren <Animator>()));
            grid.Populate(i, pos);
        }

        //Setup Camera
        cam = Instantiate(camPrefab, flock.focalPoint, camPrefab.transform.rotation);
        cam.Initialise(flock, flock.agents[0].transform, flock.agents[0].transform, predatorAgent.transform);

        Menu.runSimulation = true;
    }
    // LateUpdate is called after Update each frame
    void LateUpdate()
    {
        if (target == null)
        {
            checkWASDCamera();
        }
        else
        {
            smoothCamera();
        }

        checkMouseInput();

        // If space bar is pressed detach from the current focucs
        if (target != null && Input.GetKey(KeyCode.Space))
        {
            if (target.gameObject.tag == "PreyAgent")
            {
                PreyAgent targetScript = target.gameObject.GetComponent <PreyAgent>();
                targetScript.deselect();
            }

            if (target.gameObject.tag == "PredatorAgent")
            {
                PredatorAgent targetScript = target.gameObject.GetComponent <PredatorAgent>();
                targetScript.deselect();
            }
            target = null;
        }

        checkScreenshotInput();
    }
Exemplo n.º 3
0
 private void Awake()
 {
     for (int i = 0; i < numberOfAgents; i++)
     {
         Vector3       pos       = transform.position + Random.insideUnitSphere * spawnRadius;
         PredatorAgent agentInst = Instantiate(agent, pos, Quaternion.identity);
         agentInst.transform.forward = Random.insideUnitSphere;
     }
 }
    public void changeObjectFocus(Transform agentPos)
    {
        if (target != null && target.gameObject.tag.Equals("PreyAgent"))
        {
            PreyAgent targetScript = target.gameObject.GetComponent <PreyAgent>();
            targetScript.deselect();
        }

        if (target != null && target.gameObject.tag.Equals("PredatorAgent"))
        {
            PredatorAgent targetScript = target.gameObject.GetComponent <PredatorAgent>();
            targetScript.deselect();
        }

        target = agentPos;
    }
Exemplo n.º 5
0
 public void Initialize(Flock flock, PredatorAgent predatorAgent)
 {
     this.flock         = flock;
     this.predatorAgent = predatorAgent;
 }