public List <Asset_Boid> RequestMyNeighbors(Asset_Boid b) { // Using manager based neighbor calulation for better scheduling // Permits significanly greater number of simultaneously active boids with less chance of variable frame hits List <Asset_Boid> _neighborsToReturn = new List <Asset_Boid>(); for (int i = 0; i < boids.Count; i++) { if (b != boids[i]) { if (Vector3.Distance(b.transform.position, boids[i].transform.position) <= 20) { _neighborsToReturn.Add(boids[i]); } if (_neighborsToReturn.Count > 20) { return(_neighborsToReturn); } } } if (_neighborsToReturn.Count == 0) { return(null); } else { return(_neighborsToReturn); } }
void Start() { _GetNewPOI(); for (int i = 0; i < numberOfBoids; i++) { GameObject b = Instantiate(boid, newPOI + Random.insideUnitSphere * 5, Quaternion.identity, null); Asset_Boid bd = b.GetComponent <Asset_Boid>(); bd.ManagerRegister(this); boids.Add(bd); } _SetTuningValues(); newPOITime = Random.Range(0.0f, 15.0f); newPOITimer = Random.Range(0.0f, 15.0f); }