Example #1
0
    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);
            }
        }
    }
Example #2
0
    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);
    }