From 1f9c38b57d764e4316c8c62c9cad901168d49c9c Mon Sep 17 00:00:00 2001 From: TheRedKorsar Date: Sat, 30 Apr 2022 16:41:31 +0300 Subject: [PATCH] Seamless texture We can validate near cells through the edge, that will give us seamless texture result --- sketch.js | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/sketch.js b/sketch.js index c3a01ac..1448134 100644 --- a/sketch.js +++ b/sketch.js @@ -136,45 +136,37 @@ function draw() { } else { let options = new Array(tiles.length).fill(0).map((x, i) => i); // Look up - if (j > 0) { - let up = grid[i + (j - 1) * DIM]; + let up = grid[i + ((j + DIM - 1) % DIM) * DIM]; let validOptions = []; for (let option of up.options) { let valid = tiles[option].down; validOptions = validOptions.concat(valid); } checkValid(options, validOptions); - } // Look right - if (i < DIM - 1) { - let right = grid[i + 1 + j * DIM]; - let validOptions = []; + let right = grid[(i + 1) % DIM + j * DIM]; + validOptions = []; for (let option of right.options) { let valid = tiles[option].left; validOptions = validOptions.concat(valid); } checkValid(options, validOptions); - } // Look down - if (j < DIM - 1) { - let down = grid[i + (j + 1) * DIM]; - let validOptions = []; + let down = grid[i + ((j + 1) % DIM) * DIM]; + validOptions = []; for (let option of down.options) { let valid = tiles[option].up; validOptions = validOptions.concat(valid); } checkValid(options, validOptions); - } // Look left - if (i > 0) { - let left = grid[i - 1 + j * DIM]; - let validOptions = []; + let left = grid[((i + DIM - 1) % DIM) + j * DIM]; + validOptions = []; for (let option of left.options) { let valid = tiles[option].right; validOptions = validOptions.concat(valid); } checkValid(options, validOptions); - } // I could immediately collapse if only one option left? nextGrid[index] = new Cell(options);