public void CreateBoids(int boidCount)
 {
     for (int i = 0; i < boidCount; i++)
     {
         SimpleVehicleModel boid = Instantiate(boidPrefab).GetComponent <SimpleVehicleModel>();
         boid.gameObject.name = string.Format("Boid #{0}", i.ToString());
         boid.Initialize();
         boid.transform.position = cellGrid.GetRandomCell_ObstacleFree(0).transform.position + new Vector3(0f, 0.5f, 0f);
         boids.Add(boid);
     }
 }
    void AssignPursuitTarget()
    {
        SimpleVehicleModel oldPursuitTarget = pursuer.movingTarget;

        SimpleVehicleModel randomBoid;
        bool isLookingForTarget = true;

        do
        {
            randomBoid = boids[Random.Range(0, boids.Count - 1)];
            if (randomBoid != pursuer && randomBoid != oldPursuitTarget)
            {
                pursuer.movingTarget = randomBoid;
                isLookingForTarget   = false;
            }
        }while (isLookingForTarget);
    }
    public void ChangeMode_PursuitAndWander()
    {
        ResetModes();
        isPursuitMode = true;

        pursuer = boids[0];
        pursuer.ResetSteeringBehaviors();
        AssignPursuitTarget();
        pursuer.TogglePursuit(true);
        pursuer.ChangeMaterialHighlight();
        pursuer.maxSpeed += 1;

        for (int i = 1; i < boids.Count; i++)
        {
            boids[i].ResetSteeringBehaviors();
            boids[i].ToggleWander(true);
            boids[i].isAvoidingCollision = true;
        }
    }
    public void ChangeMode_LeaderFollowing()
    {
        ResetModes();
        isLeaderFollowingMode = true;
        leaderSeekTimer       = timeTillLeaderSeekTargetChange;
        leaderSeekTarget.gameObject.SetActive(true);
        leaderSeekTarget.position = cellGrid.GetRandomCell(0).transform.position + new Vector3(0f, 0.5f, 0f);

        leader = boids[0];
        leader.ResetSteeringBehaviors();
        leader.isArriving      = true;
        leader.targetTransform = leaderSeekTarget;
        leader.ChangeMaterialHighlight();

        for (int i = 1; i < boids.Count; i++)
        {
            boids[i].ResetSteeringBehaviors();
            boids[i].isLeaderFollowing = true;
            boids[i].leader            = leader;
            boids[i].isSeperating      = true;
        }
    }