void GenTex2D() { tex = new Texture2D(rtSize.x, rtSize.y, format, flags); var texMapSize = texMap.Size(); viewScale = Mathf.Max(0.4f, viewScale); var sampleSize = rtSize.Mul(1f / viewScale); viewMapOs = VectorTool.Clamp(viewMapOs, Vector2Int.zero, texMapSize - sampleSize); var pixels = texMap.GetPixels(viewMapOs, sampleSize); // resample for (int y = 0; y < rtSize.y; y++) { for (int x = 0; x < rtSize.x; x++) { var ny = y / (float)(rtSize.y - 1); var nx = x / (float)(rtSize.x - 1); var i = Mathf.RoundToInt(ny * (sampleSize.y - 1)) * sampleSize.x + Mathf.RoundToInt(nx * (sampleSize.x - 1)); buffer[y * rtSize.x + x] = pixels[i]; } } tex.SetPixels(Vector2Int.zero, rtSize, buffer); tex.MaskCorner(UI.I.texWindow[0], UI.I.corSizeWindow); tex.Apply(false); }
void Go() { InitMap(); InitGraph(); PrintMap("Map"); PrintGraph(); var min = Vector2Int.zero; var max = size - Vector2Int.one; src = VectorTool.Clamp(src, min, max); dst = VectorTool.Clamp(dst, min, max); shortestep = PrintShortest(); if (shortestep > 0) { PrintMap("Path(Steps " + shortestep + ")"); PrintDepth(); ClearMap(); // 用宽度优先搜索验证 //print("BFSearch: " + BFSearch()); BFSearch(); PrintDepth(); Debug.Log((shortestep == close[dst.y, dst.x].G) ? "正确" : "错误"); } else { Debug.Log("不可到达"); } }