Пример #1
0
 private void FillGridData(int x, int y, int[,] data, int color)
 {
     if (data != null)
     {
         gridData.Fill(x, y, data, color);
     }
 }
        public void GridPathfinding()
        {
            ushort width  = 5;
            ushort height = 5;

            byte[] raw = new byte[] {
                1, 1, 1, 1, 1,
                1, 1, 1, 1, 1,
                1, 128, 128, 128, 1,
                1, 1, 1, 1, 1,
                1, 1, 1, 1, 1,
            };
            var data00 = new GridData();

            data00.Fill(width, height, raw);
            var data22 = new GridData();

            data22.Fill(width, height, raw, 2, 2);
            var rect4        = new RectGrid4Dir(data00);
            var rect4_offset = new RectGrid4Dir(data22);
            var rect8        = new RectGrid8Dir(data00);
            var axialHex     = new AxialHexGrid(data00);
            var astar        = new AStarPathfinding();

            Debug.Log(nameof(rect4));
            rect4.FindPath(astar, 1, 0, 2, 4);
            CheckPath(astar.FormattedPath(), "path:2,4-2,3-1,3-0,3-0,2-0,1-0,0-1,0");
            Debug.Log(nameof(rect4_offset));
            rect4_offset.FindPath(astar, -1, -2, 0, 2);
            CheckPath(astar.FormattedPath(), "path:2,4-2,3-1,3-0,3-0,2-0,1-0,0-1,0");
            Debug.Log(nameof(rect8));
            rect8.FindPath(astar, 1, 0, 2, 4);
            CheckPath(astar.FormattedPath(), "path:2,4-1,3-0,2-0,1-1,0");
            Debug.Log(nameof(axialHex));
            axialHex.FindPath(astar, 1, 0, 2, 4);
            CheckPath(astar.FormattedPath(), "path:2,4-1,3-0,2-0,1-1,1-0,0-1,0");
        }