diff --git a/src/experimental/tile_wfc.scad b/src/experimental/tile_wfc.scad index 6dcad7dd..91155f83 100644 --- a/src/experimental/tile_wfc.scad +++ b/src/experimental/tile_wfc.scad @@ -1,8 +1,22 @@ use <_impl/_tiles_wfc_impl.scad>; +use <../util/rand.scad>; // An implementation of [Wave Function Collapse](https://github.com/mxgmn/WaveFunctionCollapse) function tile_wfc(size, sample) = - tilemap_generate(tilemap(size[0], size[1], sample)); + let( + tm = tilemap(size[0], size[1], sample), + wf = tilemap_wf(tm), + // random start + x = floor(rand(size[0] * 0.25, size[0] * 0.75)), + y = floor(rand(size[1] * 0.25, size[1] * 0.75)), + first_collasped_propagated = tilemap_propagate([ + tilemap_width(tm), + tilemap_height(tm), + tilemap_compatibilities(tm), + wf_collapse(wf, x, y) + ], x, y) + ) + tilemap_generate(first_collasped_propagated); /*