public void RemoveBoid(TestBoid argBoid) { if (argBoid == null) { return; } if (mBoids.Contains(argBoid)) { mBoids.Remove(argBoid); } }
public void InsertIntoGrid(TestBoid argBoid) { int gridCellX = Mathf.FloorToInt(argBoid.transform.position.x / mGridCellSize); int gridCellY = Mathf.FloorToInt(argBoid.transform.position.y / mGridCellSize); int gridCellZ = Mathf.FloorToInt(argBoid.transform.position.z / mGridCellSize); Vector3Int gridCell = new Vector3Int(gridCellX, gridCellY, gridCellZ); if (!mCells.ContainsKey(gridCell)) mCells.Add(gridCell, new TestSpatialGridCell()); mCells[gridCell].Insert(argBoid); InsertIntoNeighbours(gridCell, argBoid); }
void SetupDefaultFlock() { for (int i = 0; i < mNumOfBoids; i++) { GameObject newAgent = Instantiate(mBoidPrefab, new Vector3(Random.Range(18f, 22f), Random.Range(18f, 22f), Random.Range(18f, 22f)), Quaternion.Euler(Random.Range(0, 360), Random.Range(0, 360), Random.Range(0, 360))); newAgent.name = "Boid " + i; newAgent.transform.parent = mAgentContainer.transform; TestBoid agentScript = newAgent.GetComponent <TestBoid>(); agentScript.SetManager(this); agentScript.SetShouldFlock(true); AddBoid(agentScript); agentScript.SetTarget(mFlockTarget.transform.position); } }
public void AddBoid(TestBoid argBoid) { if (argBoid == null) { return; } if (!mBoids.Contains(argBoid)) { mBoids.Add(argBoid); } if (argBoid.GetTarget() != mFlockTarget.transform.position) { argBoid.SetTarget(mFlockTarget.transform.position); } }
void InsertIntoNeighbours(Vector3Int argCurrentCell, TestBoid argBoid) { for (int x = -1; x < 2; x++) { for (int y = -1; y < 2; y++) { for (int z = -1; z < 2; z++) { if (x == 0 && y == 0 && z == 0) continue; int actualX = argCurrentCell.x + x; int actualY = argCurrentCell.y + y; int actualZ = argCurrentCell.z + z; Vector3Int gridIndex = new Vector3Int(actualX, actualY, actualZ); if (!mCells.ContainsKey(gridIndex)) mCells.Add((gridIndex), new TestSpatialGridCell()); mCells[gridIndex].InsertFromNeighbour(argBoid); } } } }
public void InsertFromNeighbour(TestBoid argBoid) { mBoidsFromNeighbours.Add(argBoid); }
public void Insert(TestBoid argBoid) { mBoids.Add(argBoid); }