void createGrid(float height) { Grid = new MiniMapNode[gridSizeX, gridSizeY]; //Vector3 WorldBottomLeft = new Vector3(0,height,0) - Vector3.right * gridWorldSize.x / 2 - Vector3.forward * gridWorldSize.y/2; //WorldBottomLeft = new Vector3(WorldBottomLeft.x - (modifier * 3), WorldBottomLeft.y, WorldBottomLeft.z); Vector3 WorldBottomLeft = new Vector3(15.0f, height, 0.0f); if (modifier == 5) { WorldBottomLeft = new Vector3(-15.0f, height, 0.0f); } for (int x = 0; x < gridSizeX; x++) { for (int y = 0; y < gridSizeY; y++) { //get each point for a node Vector3 worldPoint = WorldBottomLeft + Vector3.right * (x * nodeSize + (nodeSize / 2)) + Vector3.forward * (y * nodeSize + (nodeSize / 2)); bool walkable = false; if (!Physics.CheckSphere(worldPoint, nodeSize, unwalkableMask)) { walkable = true; } Grid[x, y] = new MiniMapNode(walkable, worldPoint, x, y); } } }
public List <MiniMapNode> getNeighbours(MiniMapNode cur) { //get every node around the current one. //no diagonals, so its only 4 ops. List <MiniMapNode> neighbours = new List <MiniMapNode>(); int curY1 = cur.gridY + 1; int curX1 = cur.gridX + 1; int curXM1 = cur.gridX - 1; int curYM1 = cur.gridY - 1; neighbours.Add(Grid[curX1, cur.gridY]); neighbours.Add(Grid[cur.gridX, curY1]); neighbours.Add(Grid[cur.gridX, curYM1]); neighbours.Add(Grid[curXM1, cur.gridY]); return(neighbours); }