diff --git a/extensions/community/NavMeshPathfinding.json b/extensions/community/NavMeshPathfinding.json index 4d55adf54..f3fae86c7 100644 --- a/extensions/community/NavMeshPathfinding.json +++ b/extensions/community/NavMeshPathfinding.json @@ -1399,8 +1399,12 @@ " // 0 = neighbor in same region.", " // 1 = neighbor not in same region (neighbor may be the obstacle", " // region or a real region).", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " var dimX = grid.dimX();", + " var dimY = grid.dimY();", + " var maxX = dimX - 1;", + " var maxY = dimY - 1;", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " // Note: This algorithm first sets the flag bits such that", " // 1 = \"neighbor is in the same region\". At the end it inverts", @@ -1439,8 +1443,12 @@ " //", " // The process of building a contour will clear the flags on all cells", " // that make up the contour to ensure they are only processed once.", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " dimX = grid.dimX();", + " dimY = grid.dimY();", + " maxX = dimX - 1;", + " maxY = dimY - 1;", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " if (cell.regionID === RasterizationCell.OBSTACLE_REGION_ID ||", " cell.contourFlags === 0) {", @@ -2940,8 +2948,12 @@ " // and are not already assigned to a region. Add these cells to", " // the flooded cell list for processing.", " floodedCells.length = 0;", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " var dimX = grid.dimX();", + " var dimY = grid.dimY();", + " var maxX = dimX - 1;", + " var maxY = dimY - 1;", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " if (cell.regionID === RasterizationCell.NULL_REGION_ID &&", " cell.distanceToObstacle >= distance) {", @@ -2988,8 +3000,12 @@ " // Find all cells that haven't been assigned regions by the main loop", " // (up to the minimum distance).", " floodedCells.length = 0;", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " dimX = grid.dimX();", + " dimY = grid.dimY();", + " maxX = dimX - 1;", + " maxY = dimY - 1;", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " if (cell.distanceToObstacle > distanceMin &&", " cell.regionID === RasterizationCell.NULL_REGION_ID) {", @@ -3178,17 +3194,21 @@ " * @param grid A field with cells obstacle information already generated.", " */", " RegionGenerator.prototype.generateDistanceField = function (grid) {", + " var dimX = grid.dimX();", + " var dimY = grid.dimY();", + " var maxX = dimX - 1;", + " var maxY = dimY - 1;", " // close borders", - " for (var x = 0; x < grid.dimX(); x++) {", + " for (var x = 0; x < dimX; x++) {", " var leftCell = grid.get(x, 0);", " leftCell.distanceToObstacle = 0;", - " var rightCell = grid.get(x, grid.dimY() - 1);", + " var rightCell = grid.get(x, maxY);", " rightCell.distanceToObstacle = 0;", " }", - " for (var y = 1; y < grid.dimY() - 1; y++) {", + " for (var y = 1; y < maxY; y++) {", " var topCell = grid.get(0, y);", " topCell.distanceToObstacle = 0;", - " var bottomCell = grid.get(grid.dimX() - 1, y);", + " var bottomCell = grid.get(maxX, y);", " bottomCell.distanceToObstacle = 0;", " }", " // The next two phases basically check the neighbors of a cell and", @@ -3198,8 +3218,8 @@ " // 1st pass", " // During this pass, the following neighbors are checked:", " // (-1, 0) (-1, -1) (0, -1) (1, -1)", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " for (var _i = 0, _a = RegionGenerator.firstPassDeltas; _i < _a.length; _i++) {", " var delta = _a[_i];", @@ -3217,8 +3237,8 @@ " //", " // Besides checking different neighbors, this pass performs its", " // grid search in reverse order.", - " for (var y = grid.dimY() - 2; y >= 1; y--) {", - " for (var x = grid.dimX() - 2; x >= 1; x--) {", + " for (var y = maxY - 1; y >= 1; y--) {", + " for (var x = maxX - 1; x >= 1; x--) {", " var cell = grid.get(x, y);", " for (var _b = 0, _c = RegionGenerator.secondPassDeltas; _b < _c.length; _b++) {", " var delta = _c[_b];", @@ -3315,9 +3335,13 @@ " null,", " ];", " var nextRegionID = grid.regionCount;", + " var dimX = grid.dimX();", + " var dimY = grid.dimY();", + " var maxX = dimX - 1;", + " var maxY = dimY - 1;", " // Iterate over the cells, trying to find obstacle region borders.", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " if (cell.contourFlags !== 0)", " // Cell was processed in a previous iteration.", @@ -3355,8 +3379,8 @@ " }", " grid.regionCount = nextRegionID;", " // Clear all flags.", - " for (var y = 1; y < grid.dimY() - 1; y++) {", - " for (var x = 1; x < grid.dimX() - 1; x++) {", + " for (var y = 1; y < maxY; y++) {", + " for (var x = 1; x < maxX; x++) {", " var cell = grid.get(x, y);", " cell.contourFlags = 0;", " }",