diff --git a/wfc/.gitignore b/wfc/.gitignore
new file mode 100644
index 0000000..e9f4f1f
--- /dev/null
+++ b/wfc/.gitignore
@@ -0,0 +1,16 @@
+\exports/
+\.import/
+
+addons/scene_notes/
+
+addons/todo/
+
+scene-notes\.ini
+
+todo\.cache\.ini
+
+todo\.config\.ini
+
+export_presets\.cfg
+
+export.cfg
\ No newline at end of file
diff --git a/wfc/LICENSE b/wfc/LICENSE
new file mode 100644
index 0000000..738bedb
--- /dev/null
+++ b/wfc/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2022-present Péter Magyar
+Copyright (c) 2018-2019 Mathieu Fehr and Nathanaël Courant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/wfc/OverlappingDemos.tscn b/wfc/OverlappingDemos.tscn
new file mode 100644
index 0000000..7a91896
--- /dev/null
+++ b/wfc/OverlappingDemos.tscn
@@ -0,0 +1,143 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://TextureRect.gd" type="Script" id=1]
+[ext_resource path="res://new_buttongroup.tres" type="ButtonGroup" id=2]
+
+[node name="Control" type="PanelContainer"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource( 1 )
+source_image_rect_path = NodePath("VBoxContainer2/VBoxContainer/HBoxContainer/TextureRect")
+result_image_rect_path = NodePath("VBoxContainer2/VBoxContainer/HBoxContainer2/TextureRect")
+settings_label_path = NodePath("VBoxContainer2/VBoxContainer/HBoxContainer3/ScrollContainer/Label2")
+
+[node name="VBoxContainer2" type="VBoxContainer" parent="."]
+margin_left = 7.0
+margin_top = 7.0
+margin_right = 1017.0
+margin_bottom = 593.0
+
+[node name="VBoxContainer" type="HBoxContainer" parent="VBoxContainer2"]
+margin_right = 1010.0
+margin_bottom = 562.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="HBoxContainer" type="VBoxContainer" parent="VBoxContainer2/VBoxContainer"]
+margin_right = 300.0
+margin_bottom = 562.0
+
+[node name="Label" type="Label" parent="VBoxContainer2/VBoxContainer/HBoxContainer"]
+margin_right = 300.0
+margin_bottom = 14.0
+text = "Source Image"
+
+[node name="TextureRect" type="TextureRect" parent="VBoxContainer2/VBoxContainer/HBoxContainer"]
+margin_top = 18.0
+margin_right = 300.0
+margin_bottom = 318.0
+rect_min_size = Vector2( 300, 300 )
+expand = true
+
+[node name="HBoxContainer2" type="VBoxContainer" parent="VBoxContainer2/VBoxContainer"]
+margin_left = 304.0
+margin_right = 604.0
+margin_bottom = 562.0
+
+[node name="Label" type="Label" parent="VBoxContainer2/VBoxContainer/HBoxContainer2"]
+margin_right = 300.0
+margin_bottom = 14.0
+text = "Generated Image"
+
+[node name="TextureRect" type="TextureRect" parent="VBoxContainer2/VBoxContainer/HBoxContainer2"]
+margin_top = 18.0
+margin_right = 300.0
+margin_bottom = 318.0
+rect_min_size = Vector2( 300, 300 )
+expand = true
+
+[node name="Label2" type="Label" parent="VBoxContainer2/VBoxContainer/HBoxContainer2"]
+margin_top = 322.0
+margin_right = 300.0
+margin_bottom = 387.0
+text = "Note: If an image does not appear here, that means the generation has failed. At this stage it's likely a bug. Try clicking randomize a few times."
+autowrap = true
+
+[node name="HBoxContainer3" type="VBoxContainer" parent="VBoxContainer2/VBoxContainer"]
+margin_left = 608.0
+margin_right = 1010.0
+margin_bottom = 562.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="Label" type="Label" parent="VBoxContainer2/VBoxContainer/HBoxContainer3"]
+margin_right = 402.0
+margin_bottom = 14.0
+text = "Settings"
+
+[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer2/VBoxContainer/HBoxContainer3"]
+margin_top = 18.0
+margin_right = 402.0
+margin_bottom = 562.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="Label2" type="Label" parent="VBoxContainer2/VBoxContainer/HBoxContainer3/ScrollContainer"]
+margin_right = 402.0
+margin_bottom = 544.0
+size_flags_horizontal = 3
+size_flags_vertical = 7
+autowrap = true
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"]
+margin_top = 566.0
+margin_right = 1010.0
+margin_bottom = 586.0
+alignment = 1
+
+[node name="Button" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 296.0
+margin_right = 336.0
+margin_bottom = 20.0
+text = "Prev"
+
+[node name="Button5" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 340.0
+margin_right = 423.0
+margin_bottom = 20.0
+text = "Randomize"
+
+[node name="Button2" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 427.0
+margin_right = 469.0
+margin_bottom = 20.0
+text = "Next"
+
+[node name="Control" type="Control" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 473.0
+margin_right = 573.0
+margin_bottom = 20.0
+rect_min_size = Vector2( 100, 0 )
+
+[node name="Button3" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 577.0
+margin_right = 666.0
+margin_bottom = 20.0
+toggle_mode = true
+pressed = true
+group = ExtResource( 2 )
+text = "Overlapping"
+
+[node name="Button4" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 670.0
+margin_right = 713.0
+margin_bottom = 20.0
+toggle_mode = true
+group = ExtResource( 2 )
+text = "Tiled"
+
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button" to="." method="_on_prev_pressed"]
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button5" to="." method="_on_randomize_pressed"]
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button2" to="." method="_on_next_pressed"]
+[connection signal="toggled" from="VBoxContainer2/HBoxContainer/Button3" to="." method="_on_overlapping_toggled"]
+[connection signal="toggled" from="VBoxContainer2/HBoxContainer/Button4" to="." method="_on_tiled_toggled"]
diff --git a/wfc/README.md b/wfc/README.md
new file mode 100644
index 0000000..ffbc802
--- /dev/null
+++ b/wfc/README.md
@@ -0,0 +1,14 @@
+
+# Demo projects for the engine's wfc module
+
+from: https://github.com/Relintai/wfc_module_samples
+
+The engine's wfc module is a port of fast-wfc
+
+# fast-wfc
+
+https://github.com/math-fehr/fast-wfc
+
+An implementation of [Wave Function Collapse](https://github.com/mxgmn/WaveFunctionCollapse) with a focus on performance.
+It was called fast-wfc because at the time it introduced optimizations improving the execution time by an order of magnitude.
+
diff --git a/wfc/TextureRect.gd b/wfc/TextureRect.gd
new file mode 100644
index 0000000..fc094c9
--- /dev/null
+++ b/wfc/TextureRect.gd
@@ -0,0 +1,404 @@
+extends Control
+
+export(int, "Overlapping,Tiled") var rect_type : int
+
+export(NodePath) var source_image_rect_path : NodePath
+export(NodePath) var result_image_rect_path : NodePath
+export(NodePath) var settings_label_path : NodePath
+
+var _current_data_index : int = -1
+
+enum SampleDataType {
+ SAMPLE_DATA_TYPE_OVERLAPPING = 0,
+ SAMPLE_DATA_TYPE_TILED = 1,
+};
+
+class TileEntry:
+ var tile_name : String = ""
+ var symmetry : int = 0
+ var weight : float = 1
+ var image : Image
+ var images : Array
+
+ func _to_string():
+ var t : String = ""
+
+ if image:
+ t = "simple"
+ else:
+ t = "complex (" + str(images.size()) + ")"
+
+ return "[ TileEntry " + t + " tile_name: " + tile_name + ", symmetry: " + str(symmetry) + " weight: " + str(weight) + " ]\n"
+
+class NeighbourEntry:
+ var left : String = ""
+ var left_orientation : int = 0
+ var right : String = ""
+ var right_orientation : int = 0
+
+ func setup(l : String, r : String):
+ left = l.get_slice(" ", 0)
+ var s : String = l.get_slice(" ", 1)
+ if (s != ""):
+ left_orientation = int(s)
+
+ right = r.get_slice(" ", 0)
+
+ s = r.get_slice(" ", 1)
+ if (s != ""):
+ right_orientation = int(s)
+
+ func _to_string():
+ return "[ NeighbourEntry left: " + left + "(" + str(left_orientation) + "), right: " + right + "(" + str(right_orientation) + ") ]\n"
+
+class SampleData:
+ var type : int = 0
+ var image_name : String = ""
+ var pattern_size : int = 3
+ var periodic : bool = false
+ var width : int = 0
+ var height : int = 0
+ var symmetry : int = 8
+ var ground : bool = false
+ var limit : int = 0
+ var screenshots : int = 0
+ var periodic_input : int = true
+ var tiles : Array
+ var neighbours : Array
+ var image : Image
+
+ func _to_string():
+ return "SampleData\ntype: " + str(type) + \
+ "\nimage_name: " + image_name + \
+ "\npattern_size: " + str(pattern_size) + \
+ "\nperiodic: " + str(periodic) + \
+ "\nwidth: " + str(width) + \
+ "\nheight: " + str(height) + \
+ "\nsymmetry: " + str(symmetry) + \
+ "\nground: " + str(ground) + \
+ "\nlimit: " + str(limit) + \
+ "\nscreenshots: " + str(screenshots) + \
+ "\nperiodic_input: " + str(periodic_input) + \
+ "\ntiles: " + str(tiles) + \
+ "\nneighbours: " + str(neighbours)
+
+var data : Array
+
+func _init():
+ load_data()
+
+func load_data():
+ data.clear()
+
+ var xmlp : XMLParser = XMLParser.new()
+ xmlp.open("res://samples/samples.xml")
+
+ while xmlp.read() == OK:
+ if xmlp.get_node_type() == XMLParser.NODE_ELEMENT:
+ if xmlp.get_node_name() == "overlapping" || xmlp.get_node_name() == "simpletiled":
+ var entry : SampleData = SampleData.new()
+
+ if xmlp.get_node_name() == "overlapping":
+ entry.type = SampleDataType.SAMPLE_DATA_TYPE_OVERLAPPING
+ else:
+ entry.type = SampleDataType.SAMPLE_DATA_TYPE_TILED
+
+ for i in range(xmlp.get_attribute_count()):
+ var attrib_name : String = xmlp.get_attribute_name(i)
+ var attrib_value : String = xmlp.get_attribute_value(i)
+
+ if attrib_name == "name":
+ entry.image_name = attrib_value
+ elif attrib_name == "N":
+ entry.pattern_size = int(attrib_value)
+ elif attrib_name == "periodic":
+ if attrib_value == "True":
+ entry.periodic = true
+ else:
+ entry.periodic = false
+ elif attrib_name == "width":
+ entry.width = int(attrib_value)
+ elif attrib_name == "height":
+ entry.height = int(attrib_value)
+ elif attrib_name == "symmetry":
+ entry.symmetry = int(attrib_value)
+ elif attrib_name == "ground":
+ entry.ground = int(attrib_value)
+ elif attrib_name == "limit":
+ entry.limit = int(attrib_value)
+ elif attrib_name == "screenshots":
+ entry.screenshots = int(attrib_value)
+ elif attrib_name == "periodic_input":
+ entry.periodic_input = int(attrib_value)
+
+ if entry.type == SampleDataType.SAMPLE_DATA_TYPE_TILED:
+ var e : Array = load_tile_entry(entry)
+ entry.tiles = e[0]
+ entry.neighbours = e[1]
+ else:
+ entry.image = ResourceLoader.load("res://samples/" + entry.image_name + ".png")
+
+ data.push_back(entry)
+
+func load_tile_entry(entry : SampleData) -> Array:
+ var xmlp : XMLParser = XMLParser.new()
+ xmlp.open("res://samples/" + entry.image_name + "/data.xml")
+
+ var tiles : Array
+ var neighbours : Array
+
+ while xmlp.read() == OK:
+ if xmlp.get_node_type() == XMLParser.NODE_ELEMENT:
+ if xmlp.get_node_name() == "tile":
+ var e : TileEntry = TileEntry.new()
+
+ for i in range(xmlp.get_attribute_count()):
+ var attrib_name : String = xmlp.get_attribute_name(i)
+ var attrib_value : String = xmlp.get_attribute_value(i)
+
+ if attrib_name == "name":
+ e.tile_name = attrib_value
+ elif attrib_name == "symmetry":
+
+ if attrib_value == "X":
+ e.symmetry = WaveFormCollapse.SYMMETRY_X
+ elif attrib_value == "T":
+ e.symmetry = WaveFormCollapse.SYMMETRY_T
+ elif attrib_value == "I":
+ e.symmetry = WaveFormCollapse.SYMMETRY_I
+ elif attrib_value == "L":
+ e.symmetry = WaveFormCollapse.SYMMETRY_L
+ elif attrib_value == "\\":
+ e.symmetry = WaveFormCollapse.SYMMETRY_BACKSLASH
+ elif attrib_value == "P":
+ e.symmetry = WaveFormCollapse.SYMMETRY_P
+
+ elif attrib_name == "weight":
+ e.weight = float(attrib_value)
+
+ var simple_image_path : String = "res://samples/" + entry.image_name + "/" + e.tile_name + ".png"
+
+ var file : File = File.new()
+ if !file.file_exists(simple_image_path):
+ var indx : int = 0
+ while true:
+ var image_path : String = "res://samples/" + entry.image_name + "/" + e.tile_name + " " + str(indx) + ".png"
+
+ if !file.file_exists(image_path):
+ break
+
+ e.images.push_back(ResourceLoader.load(image_path))
+ indx += 1
+ else:
+ e.image = ResourceLoader.load(simple_image_path)
+
+
+
+ tiles.push_back(e)
+ elif xmlp.get_node_name() == "neighbor":
+ var e : NeighbourEntry = NeighbourEntry.new()
+
+ var left : String
+ var right : String
+
+ for i in range(xmlp.get_attribute_count()):
+ var attrib_name : String = xmlp.get_attribute_name(i)
+ var attrib_value : String = xmlp.get_attribute_value(i)
+
+ if attrib_name == "left":
+ left = attrib_value
+ elif attrib_name == "right":
+ right = attrib_value
+
+ e.setup(left, right)
+ neighbours.push_back(e)
+
+
+ return [ tiles, neighbours ]
+
+
+func _enter_tree():
+ _on_next_pressed()
+
+func generate_image():
+ if (rect_type == SampleDataType.SAMPLE_DATA_TYPE_OVERLAPPING):
+ generate_image_overlapping()
+ else:
+ generate_image_tiled()
+
+func generate_image_overlapping():
+ get_node(source_image_rect_path).texture = null
+ get_node(result_image_rect_path).texture = null
+
+ var sd : SampleData = data[_current_data_index]
+
+ get_node(settings_label_path).text = str(_current_data_index) + "\n" + sd.to_string()
+
+ var indexer : ImageIndexer = ImageIndexer.new()
+
+ var source_tex : ImageTexture = ImageTexture.new();
+ source_tex.create_from_image(sd.image, 0)
+ get_node(source_image_rect_path).texture = source_tex
+
+ var indices : PoolIntArray = indexer.index_image(sd.image)
+
+ var wfc : OverlappingWaveFormCollapse = OverlappingWaveFormCollapse.new()
+ wfc.pattern_size = sd.pattern_size
+ wfc.periodic_output = sd.periodic
+ wfc.symmetry = sd.symmetry
+ wfc.ground = sd.ground
+
+ wfc.periodic_input = sd.periodic_input
+
+ wfc.out_height = sd.image.get_height()
+ wfc.out_width = sd.image.get_width()
+
+ wfc.set_input(indices, sd.image.get_width(), sd.image.get_height())
+
+ #todo
+ #if sd.width > 0 && sd.height > 0:
+ # wfc.set_input(indices, sd.width, sd.height)
+ #else:
+ # wfc.set_input(indices, img.get_width(), img.get_height())
+
+ randomize()
+ wfc.set_seed(randi())
+
+ wfc.initialize()
+
+ var res : PoolIntArray = wfc.generate_image_index_data()
+
+ if (res.size() == 0):
+ print("(res.size() == 0)")
+ return
+
+ var data : PoolByteArray = indexer.indices_to_argb8_data(res)
+
+ var res_img : Image = Image.new()
+ res_img.create_from_data(sd.image.get_width(), sd.image.get_height(), false, Image.FORMAT_RGBA8, data)
+
+ var res_tex : ImageTexture = ImageTexture.new();
+ res_tex.create_from_image(res_img, 0)
+
+ get_node(result_image_rect_path).texture = res_tex
+
+func generate_image_tiled():
+ get_node(source_image_rect_path).texture = null
+ get_node(result_image_rect_path).texture = null
+
+ var sd : SampleData = data[_current_data_index]
+
+ get_node(settings_label_path).text = str(_current_data_index) + "\n" + sd.to_string()
+
+ var indexer : ImageIndexer = ImageIndexer.new()
+ var wfc : TilingWaveFormCollapse = TilingWaveFormCollapse.new()
+
+ var img_size : int = 0
+
+ for i in range(sd.tiles.size()):
+ var te : TileEntry = sd.tiles[i]
+
+ if !te.image:
+ var tile_index : int = wfc.tile_add(te.symmetry, te.weight)
+ wfc.tile_name_set(tile_index, te.tile_name)
+ wfc.tile_symmetry_set(tile_index, te.symmetry)
+
+ for img in te.images:
+ if img_size == 0:
+ img_size = img.get_height()
+
+ var indices : PoolIntArray = indexer.index_image(img)
+ wfc.tile_data_add(tile_index, indices, img.get_width(), img.get_height())
+ else:
+ if img_size == 0:
+ img_size = te.image.get_height()
+
+ var indices : PoolIntArray = indexer.index_image(te.image)
+ var tile_index : int = wfc.tile_add_generated(indices, te.image.get_width(), te.image.get_height(), te.symmetry, te.weight)
+ wfc.tile_name_set(tile_index, te.tile_name)
+
+
+ for i in range(sd.neighbours.size()):
+ var ne : NeighbourEntry = sd.neighbours[i]
+
+ wfc.neighbour_data_add_str(ne.left, ne.left_orientation, ne.right, ne.right_orientation)
+
+ wfc.periodic_output = sd.periodic
+
+ wfc.wave_width = sd.width
+ wfc.wave_height = sd.height
+
+ #todo
+ #if sd.width > 0 && sd.height > 0:
+ # wfc.set_input(indices, sd.width, sd.height)
+ #else:
+ # wfc.set_input(indices, img.get_width(), img.get_height())
+
+ randomize()
+ wfc.set_seed(randi())
+
+ wfc.initialize()
+
+ var res : PoolIntArray = wfc.generate_image_index_data()
+
+ if (res.size() == 0):
+ print("(res.size() == 0)")
+ return
+
+ var data : PoolByteArray = indexer.indices_to_argb8_data(res)
+
+ var res_img : Image = Image.new()
+ res_img.create_from_data(sd.width * img_size, sd.height * img_size, false, Image.FORMAT_RGBA8, data)
+
+ var res_tex : ImageTexture = ImageTexture.new();
+ res_tex.create_from_image(res_img, 0)
+
+ get_node(result_image_rect_path).texture = res_tex
+
+
+func _on_prev_pressed():
+ while true:
+ _current_data_index -= 1
+
+ if _current_data_index < 0:
+ _current_data_index = data.size() - 1
+
+ if data[_current_data_index].type == rect_type:
+ break
+
+ generate_image()
+
+func _on_next_pressed():
+ while true:
+ _current_data_index += 1
+
+ if _current_data_index >= data.size():
+ _current_data_index = 0
+
+ if data[_current_data_index].type == rect_type:
+ break
+
+ generate_image()
+
+func _on_tiled_toggled(on : bool):
+ if !on:
+ return
+
+ rect_type = 1
+
+ _current_data_index = -1
+
+ _on_next_pressed()
+
+func _on_overlapping_toggled(on : bool):
+ if !on:
+ return
+
+ rect_type = 0
+
+ _current_data_index = -1
+
+ _on_next_pressed()
+
+func _on_randomize_pressed():
+ generate_image()
diff --git a/wfc/TiledDemos.tscn b/wfc/TiledDemos.tscn
new file mode 100644
index 0000000..7423db0
--- /dev/null
+++ b/wfc/TiledDemos.tscn
@@ -0,0 +1,68 @@
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://TextureRect.gd" type="Script" id=1]
+
+[node name="Control" type="PanelContainer"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+
+[node name="VBoxContainer2" type="VBoxContainer" parent="."]
+margin_left = 7.0
+margin_top = 7.0
+margin_right = 1017.0
+margin_bottom = 593.0
+
+[node name="VBoxContainer" type="GridContainer" parent="VBoxContainer2"]
+margin_right = 1010.0
+margin_bottom = 562.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="TextureRect" type="TextureRect" parent="VBoxContainer2/VBoxContainer"]
+margin_right = 300.0
+margin_bottom = 300.0
+rect_min_size = Vector2( 300, 300 )
+expand = true
+script = ExtResource( 1 )
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"]
+margin_top = 566.0
+margin_right = 1010.0
+margin_bottom = 586.0
+alignment = 1
+
+[node name="Button" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 340.0
+margin_right = 380.0
+margin_bottom = 20.0
+text = "Prev"
+
+[node name="Button2" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 384.0
+margin_right = 426.0
+margin_bottom = 20.0
+text = "Next"
+
+[node name="Control" type="Control" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 430.0
+margin_right = 530.0
+margin_bottom = 20.0
+rect_min_size = Vector2( 100, 0 )
+
+[node name="Button3" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 534.0
+margin_right = 623.0
+margin_bottom = 20.0
+text = "Overlapping"
+
+[node name="Button4" type="Button" parent="VBoxContainer2/HBoxContainer"]
+margin_left = 627.0
+margin_right = 670.0
+margin_bottom = 20.0
+disabled = true
+text = "Tiled"
+
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button" to="VBoxContainer2/VBoxContainer/TextureRect" method="_on_prev_pressed"]
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button2" to="VBoxContainer2/VBoxContainer/TextureRect" method="_on_next_pressed"]
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button3" to="VBoxContainer2/VBoxContainer/TextureRect" method="_on_overlapping_pressed"]
+[connection signal="pressed" from="VBoxContainer2/HBoxContainer/Button4" to="VBoxContainer2/VBoxContainer/TextureRect" method="_on_tiled_pressed"]
diff --git a/wfc/default_env.tres b/wfc/default_env.tres
new file mode 100644
index 0000000..20207a4
--- /dev/null
+++ b/wfc/default_env.tres
@@ -0,0 +1,7 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="ProceduralSky" id=1]
+
+[resource]
+background_mode = 2
+background_sky = SubResource( 1 )
diff --git a/wfc/icon.png b/wfc/icon.png
new file mode 100644
index 0000000..c98fbb6
Binary files /dev/null and b/wfc/icon.png differ
diff --git a/wfc/icon.png.import b/wfc/icon.png.import
new file mode 100644
index 0000000..a4c02e6
--- /dev/null
+++ b/wfc/icon.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://icon.png"
+dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/wfc/new_buttongroup.tres b/wfc/new_buttongroup.tres
new file mode 100644
index 0000000..0e55d74
--- /dev/null
+++ b/wfc/new_buttongroup.tres
@@ -0,0 +1,3 @@
+[gd_resource type="ButtonGroup" format=2]
+
+[resource]
diff --git a/wfc/project.pandemonium b/wfc/project.pandemonium
new file mode 100644
index 0000000..df434b2
--- /dev/null
+++ b/wfc/project.pandemonium
@@ -0,0 +1,25 @@
+; Engine configuration file.
+; It's best edited using the editor UI and not directly,
+; since the parameters that go here are not all obvious.
+;
+; Format:
+; [section] ; section goes between []
+; param=value ; assign values to parameters
+
+config_version=4
+
+[application]
+
+config/name="project"
+run/main_scene="res://OverlappingDemos.tscn"
+config/icon="res://icon.png"
+
+[physics]
+
+common/enable_pause_aware_picking=true
+
+[rendering]
+
+vram_compression/import_etc=true
+vram_compression/import_etc2=false
+environment/default_environment="res://default_env.tres"
diff --git a/wfc/samples/3Bricks.png b/wfc/samples/3Bricks.png
new file mode 100644
index 0000000..33205e5
Binary files /dev/null and b/wfc/samples/3Bricks.png differ
diff --git a/wfc/samples/3Bricks.png.import b/wfc/samples/3Bricks.png.import
new file mode 100644
index 0000000..d4afee7
--- /dev/null
+++ b/wfc/samples/3Bricks.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/3Bricks.png-a697532336dc39992b29becd5289ac49.image"
+
+[deps]
+
+source_file="res://samples/3Bricks.png"
+dest_files=[ "res://.import/3Bricks.png-a697532336dc39992b29becd5289ac49.image" ]
+
+[params]
+
diff --git a/wfc/samples/Angular.png b/wfc/samples/Angular.png
new file mode 100644
index 0000000..7b8efd6
Binary files /dev/null and b/wfc/samples/Angular.png differ
diff --git a/wfc/samples/Angular.png.import b/wfc/samples/Angular.png.import
new file mode 100644
index 0000000..32eb2ca
--- /dev/null
+++ b/wfc/samples/Angular.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Angular.png-3511683c6d3983fdcf69333ce5543070.image"
+
+[deps]
+
+source_file="res://samples/Angular.png"
+dest_files=[ "res://.import/Angular.png-3511683c6d3983fdcf69333ce5543070.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/bridge.png b/wfc/samples/Castle/bridge.png
new file mode 100644
index 0000000..737c692
Binary files /dev/null and b/wfc/samples/Castle/bridge.png differ
diff --git a/wfc/samples/Castle/bridge.png.import b/wfc/samples/Castle/bridge.png.import
new file mode 100644
index 0000000..f8f403e
--- /dev/null
+++ b/wfc/samples/Castle/bridge.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/bridge.png-2f5241fff56b543176e22b1806f61af3.image"
+
+[deps]
+
+source_file="res://samples/Castle/bridge.png"
+dest_files=[ "res://.import/bridge.png-2f5241fff56b543176e22b1806f61af3.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/data.xml b/wfc/samples/Castle/data.xml
new file mode 100644
index 0000000..c4fc3f2
--- /dev/null
+++ b/wfc/samples/Castle/data.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wfc/samples/Castle/ground.png b/wfc/samples/Castle/ground.png
new file mode 100644
index 0000000..8eff3f2
Binary files /dev/null and b/wfc/samples/Castle/ground.png differ
diff --git a/wfc/samples/Castle/ground.png.import b/wfc/samples/Castle/ground.png.import
new file mode 100644
index 0000000..3832eed
--- /dev/null
+++ b/wfc/samples/Castle/ground.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/ground.png-e312043dcb91f034913953306c1652dc.image"
+
+[deps]
+
+source_file="res://samples/Castle/ground.png"
+dest_files=[ "res://.import/ground.png-e312043dcb91f034913953306c1652dc.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/river.png b/wfc/samples/Castle/river.png
new file mode 100644
index 0000000..5c5f5f6
Binary files /dev/null and b/wfc/samples/Castle/river.png differ
diff --git a/wfc/samples/Castle/river.png.import b/wfc/samples/Castle/river.png.import
new file mode 100644
index 0000000..493800f
--- /dev/null
+++ b/wfc/samples/Castle/river.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/river.png-5f0fcfd15a1f7b7334f700e93c14d69e.image"
+
+[deps]
+
+source_file="res://samples/Castle/river.png"
+dest_files=[ "res://.import/river.png-5f0fcfd15a1f7b7334f700e93c14d69e.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/riverturn.png b/wfc/samples/Castle/riverturn.png
new file mode 100644
index 0000000..b6637e3
Binary files /dev/null and b/wfc/samples/Castle/riverturn.png differ
diff --git a/wfc/samples/Castle/riverturn.png.import b/wfc/samples/Castle/riverturn.png.import
new file mode 100644
index 0000000..319cd66
--- /dev/null
+++ b/wfc/samples/Castle/riverturn.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/riverturn.png-2bb4e468f6108a16610b2f8b0d5d6ce6.image"
+
+[deps]
+
+source_file="res://samples/Castle/riverturn.png"
+dest_files=[ "res://.import/riverturn.png-2bb4e468f6108a16610b2f8b0d5d6ce6.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/road.png b/wfc/samples/Castle/road.png
new file mode 100644
index 0000000..453f0d7
Binary files /dev/null and b/wfc/samples/Castle/road.png differ
diff --git a/wfc/samples/Castle/road.png.import b/wfc/samples/Castle/road.png.import
new file mode 100644
index 0000000..4a0e211
--- /dev/null
+++ b/wfc/samples/Castle/road.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/road.png-f9a0ae8c6f74ee4ce323e98182de65e6.image"
+
+[deps]
+
+source_file="res://samples/Castle/road.png"
+dest_files=[ "res://.import/road.png-f9a0ae8c6f74ee4ce323e98182de65e6.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/roadturn.png b/wfc/samples/Castle/roadturn.png
new file mode 100644
index 0000000..77a0f33
Binary files /dev/null and b/wfc/samples/Castle/roadturn.png differ
diff --git a/wfc/samples/Castle/roadturn.png.import b/wfc/samples/Castle/roadturn.png.import
new file mode 100644
index 0000000..ecf6a53
--- /dev/null
+++ b/wfc/samples/Castle/roadturn.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/roadturn.png-e092f99bd370eaa77f6208a20a9c8f90.image"
+
+[deps]
+
+source_file="res://samples/Castle/roadturn.png"
+dest_files=[ "res://.import/roadturn.png-e092f99bd370eaa77f6208a20a9c8f90.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/t.png b/wfc/samples/Castle/t.png
new file mode 100644
index 0000000..77aa8e7
Binary files /dev/null and b/wfc/samples/Castle/t.png differ
diff --git a/wfc/samples/Castle/t.png.import b/wfc/samples/Castle/t.png.import
new file mode 100644
index 0000000..2375aaa
--- /dev/null
+++ b/wfc/samples/Castle/t.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/t.png-ea49b1474919a65f661b7d71710d8128.image"
+
+[deps]
+
+source_file="res://samples/Castle/t.png"
+dest_files=[ "res://.import/t.png-ea49b1474919a65f661b7d71710d8128.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/tower.png b/wfc/samples/Castle/tower.png
new file mode 100644
index 0000000..75ddff2
Binary files /dev/null and b/wfc/samples/Castle/tower.png differ
diff --git a/wfc/samples/Castle/tower.png.import b/wfc/samples/Castle/tower.png.import
new file mode 100644
index 0000000..6f00dca
--- /dev/null
+++ b/wfc/samples/Castle/tower.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/tower.png-edbac699da852c031b1a3334f6aa5604.image"
+
+[deps]
+
+source_file="res://samples/Castle/tower.png"
+dest_files=[ "res://.import/tower.png-edbac699da852c031b1a3334f6aa5604.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/wall.png b/wfc/samples/Castle/wall.png
new file mode 100644
index 0000000..7872819
Binary files /dev/null and b/wfc/samples/Castle/wall.png differ
diff --git a/wfc/samples/Castle/wall.png.import b/wfc/samples/Castle/wall.png.import
new file mode 100644
index 0000000..fb80d96
--- /dev/null
+++ b/wfc/samples/Castle/wall.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/wall.png-fcd016436964858f3135f450a76409a9.image"
+
+[deps]
+
+source_file="res://samples/Castle/wall.png"
+dest_files=[ "res://.import/wall.png-fcd016436964858f3135f450a76409a9.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/wallriver.png b/wfc/samples/Castle/wallriver.png
new file mode 100644
index 0000000..a17adce
Binary files /dev/null and b/wfc/samples/Castle/wallriver.png differ
diff --git a/wfc/samples/Castle/wallriver.png.import b/wfc/samples/Castle/wallriver.png.import
new file mode 100644
index 0000000..c180d1a
--- /dev/null
+++ b/wfc/samples/Castle/wallriver.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/wallriver.png-42bb5505ae7a7f3156bd6779c9113161.image"
+
+[deps]
+
+source_file="res://samples/Castle/wallriver.png"
+dest_files=[ "res://.import/wallriver.png-42bb5505ae7a7f3156bd6779c9113161.image" ]
+
+[params]
+
diff --git a/wfc/samples/Castle/wallroad.png b/wfc/samples/Castle/wallroad.png
new file mode 100644
index 0000000..a306816
Binary files /dev/null and b/wfc/samples/Castle/wallroad.png differ
diff --git a/wfc/samples/Castle/wallroad.png.import b/wfc/samples/Castle/wallroad.png.import
new file mode 100644
index 0000000..500514d
--- /dev/null
+++ b/wfc/samples/Castle/wallroad.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/wallroad.png-74bd46387cf589ce90ddf81952d51b72.image"
+
+[deps]
+
+source_file="res://samples/Castle/wallroad.png"
+dest_files=[ "res://.import/wallroad.png-74bd46387cf589ce90ddf81952d51b72.image" ]
+
+[params]
+
diff --git a/wfc/samples/Cat.png b/wfc/samples/Cat.png
new file mode 100644
index 0000000..fc3f220
Binary files /dev/null and b/wfc/samples/Cat.png differ
diff --git a/wfc/samples/Cat.png.import b/wfc/samples/Cat.png.import
new file mode 100644
index 0000000..150523c
--- /dev/null
+++ b/wfc/samples/Cat.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Cat.png-932cc11b5881541cfa86a1eb715e8c83.image"
+
+[deps]
+
+source_file="res://samples/Cat.png"
+dest_files=[ "res://.import/Cat.png-932cc11b5881541cfa86a1eb715e8c83.image" ]
+
+[params]
+
diff --git a/wfc/samples/Cats.png b/wfc/samples/Cats.png
new file mode 100644
index 0000000..5351262
Binary files /dev/null and b/wfc/samples/Cats.png differ
diff --git a/wfc/samples/Cats.png.import b/wfc/samples/Cats.png.import
new file mode 100644
index 0000000..1bc8319
--- /dev/null
+++ b/wfc/samples/Cats.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Cats.png-89124cb461364b65cf36bb295e00eb95.image"
+
+[deps]
+
+source_file="res://samples/Cats.png"
+dest_files=[ "res://.import/Cats.png-89124cb461364b65cf36bb295e00eb95.image" ]
+
+[params]
+
diff --git a/wfc/samples/Cave.png b/wfc/samples/Cave.png
new file mode 100644
index 0000000..4a9e21a
Binary files /dev/null and b/wfc/samples/Cave.png differ
diff --git a/wfc/samples/Cave.png.import b/wfc/samples/Cave.png.import
new file mode 100644
index 0000000..654ca87
--- /dev/null
+++ b/wfc/samples/Cave.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Cave.png-0ff127fea4c812bd0f2892133050620b.image"
+
+[deps]
+
+source_file="res://samples/Cave.png"
+dest_files=[ "res://.import/Cave.png-0ff127fea4c812bd0f2892133050620b.image" ]
+
+[params]
+
diff --git a/wfc/samples/Chess.png b/wfc/samples/Chess.png
new file mode 100644
index 0000000..090ce47
Binary files /dev/null and b/wfc/samples/Chess.png differ
diff --git a/wfc/samples/Chess.png.import b/wfc/samples/Chess.png.import
new file mode 100644
index 0000000..dfa2ee7
--- /dev/null
+++ b/wfc/samples/Chess.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Chess.png-2ba13af47355ca5f0adaa09b356c7a06.image"
+
+[deps]
+
+source_file="res://samples/Chess.png"
+dest_files=[ "res://.import/Chess.png-2ba13af47355ca5f0adaa09b356c7a06.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/b.png b/wfc/samples/Circles/b.png
new file mode 100644
index 0000000..e0aaf6e
Binary files /dev/null and b/wfc/samples/Circles/b.png differ
diff --git a/wfc/samples/Circles/b.png.import b/wfc/samples/Circles/b.png.import
new file mode 100644
index 0000000..9125bdd
--- /dev/null
+++ b/wfc/samples/Circles/b.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/b.png-f87d48caf3e9f5bacd66d132d08324a7.image"
+
+[deps]
+
+source_file="res://samples/Circles/b.png"
+dest_files=[ "res://.import/b.png-f87d48caf3e9f5bacd66d132d08324a7.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/b_half.png b/wfc/samples/Circles/b_half.png
new file mode 100644
index 0000000..b93fd3f
Binary files /dev/null and b/wfc/samples/Circles/b_half.png differ
diff --git a/wfc/samples/Circles/b_half.png.import b/wfc/samples/Circles/b_half.png.import
new file mode 100644
index 0000000..35a7ebc
--- /dev/null
+++ b/wfc/samples/Circles/b_half.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/b_half.png-2371b96b6850c6038f1ec62488064db0.image"
+
+[deps]
+
+source_file="res://samples/Circles/b_half.png"
+dest_files=[ "res://.import/b_half.png-2371b96b6850c6038f1ec62488064db0.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/b_i.png b/wfc/samples/Circles/b_i.png
new file mode 100644
index 0000000..cc5e205
Binary files /dev/null and b/wfc/samples/Circles/b_i.png differ
diff --git a/wfc/samples/Circles/b_i.png.import b/wfc/samples/Circles/b_i.png.import
new file mode 100644
index 0000000..a209814
--- /dev/null
+++ b/wfc/samples/Circles/b_i.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/b_i.png-8f1d8ec600c896c538f8351bd98b91d2.image"
+
+[deps]
+
+source_file="res://samples/Circles/b_i.png"
+dest_files=[ "res://.import/b_i.png-8f1d8ec600c896c538f8351bd98b91d2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/b_quarter.png b/wfc/samples/Circles/b_quarter.png
new file mode 100644
index 0000000..5932768
Binary files /dev/null and b/wfc/samples/Circles/b_quarter.png differ
diff --git a/wfc/samples/Circles/b_quarter.png.import b/wfc/samples/Circles/b_quarter.png.import
new file mode 100644
index 0000000..9c240ce
--- /dev/null
+++ b/wfc/samples/Circles/b_quarter.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/b_quarter.png-32aa0a5b1d132a9f18e4fa3f193ca821.image"
+
+[deps]
+
+source_file="res://samples/Circles/b_quarter.png"
+dest_files=[ "res://.import/b_quarter.png-32aa0a5b1d132a9f18e4fa3f193ca821.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/data.xml b/wfc/samples/Circles/data.xml
new file mode 100644
index 0000000..2254f8f
--- /dev/null
+++ b/wfc/samples/Circles/data.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wfc/samples/Circles/w.png b/wfc/samples/Circles/w.png
new file mode 100644
index 0000000..4804c6c
Binary files /dev/null and b/wfc/samples/Circles/w.png differ
diff --git a/wfc/samples/Circles/w.png.import b/wfc/samples/Circles/w.png.import
new file mode 100644
index 0000000..ff9a506
--- /dev/null
+++ b/wfc/samples/Circles/w.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/w.png-09621642c8f1099ca320d8fffcea8f22.image"
+
+[deps]
+
+source_file="res://samples/Circles/w.png"
+dest_files=[ "res://.import/w.png-09621642c8f1099ca320d8fffcea8f22.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/w_half.png b/wfc/samples/Circles/w_half.png
new file mode 100644
index 0000000..b83f2fe
Binary files /dev/null and b/wfc/samples/Circles/w_half.png differ
diff --git a/wfc/samples/Circles/w_half.png.import b/wfc/samples/Circles/w_half.png.import
new file mode 100644
index 0000000..e86d7c2
--- /dev/null
+++ b/wfc/samples/Circles/w_half.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/w_half.png-870afcf9c61523531de27c05450b2d2e.image"
+
+[deps]
+
+source_file="res://samples/Circles/w_half.png"
+dest_files=[ "res://.import/w_half.png-870afcf9c61523531de27c05450b2d2e.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/w_i.png b/wfc/samples/Circles/w_i.png
new file mode 100644
index 0000000..c8ffb56
Binary files /dev/null and b/wfc/samples/Circles/w_i.png differ
diff --git a/wfc/samples/Circles/w_i.png.import b/wfc/samples/Circles/w_i.png.import
new file mode 100644
index 0000000..e93d429
--- /dev/null
+++ b/wfc/samples/Circles/w_i.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/w_i.png-f1876d7cff447ef4202b7b2f2d53bf42.image"
+
+[deps]
+
+source_file="res://samples/Circles/w_i.png"
+dest_files=[ "res://.import/w_i.png-f1876d7cff447ef4202b7b2f2d53bf42.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circles/w_quarter.png b/wfc/samples/Circles/w_quarter.png
new file mode 100644
index 0000000..3ce9433
Binary files /dev/null and b/wfc/samples/Circles/w_quarter.png differ
diff --git a/wfc/samples/Circles/w_quarter.png.import b/wfc/samples/Circles/w_quarter.png.import
new file mode 100644
index 0000000..8aa9c0a
--- /dev/null
+++ b/wfc/samples/Circles/w_quarter.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/w_quarter.png-8a5c2867ca1f06465e7d846c3a0bd3a3.image"
+
+[deps]
+
+source_file="res://samples/Circles/w_quarter.png"
+dest_files=[ "res://.import/w_quarter.png-8a5c2867ca1f06465e7d846c3a0bd3a3.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/bridge.png b/wfc/samples/Circuit/bridge.png
new file mode 100644
index 0000000..1123db8
Binary files /dev/null and b/wfc/samples/Circuit/bridge.png differ
diff --git a/wfc/samples/Circuit/bridge.png.import b/wfc/samples/Circuit/bridge.png.import
new file mode 100644
index 0000000..71ae207
--- /dev/null
+++ b/wfc/samples/Circuit/bridge.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/bridge.png-1cf400ab9d999f063eb4385968e6caeb.image"
+
+[deps]
+
+source_file="res://samples/Circuit/bridge.png"
+dest_files=[ "res://.import/bridge.png-1cf400ab9d999f063eb4385968e6caeb.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/component.png b/wfc/samples/Circuit/component.png
new file mode 100644
index 0000000..fbb5fa1
Binary files /dev/null and b/wfc/samples/Circuit/component.png differ
diff --git a/wfc/samples/Circuit/component.png.import b/wfc/samples/Circuit/component.png.import
new file mode 100644
index 0000000..c1a9e44
--- /dev/null
+++ b/wfc/samples/Circuit/component.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/component.png-e4bf55548abfde14b36e2ac30808e3d8.image"
+
+[deps]
+
+source_file="res://samples/Circuit/component.png"
+dest_files=[ "res://.import/component.png-e4bf55548abfde14b36e2ac30808e3d8.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/connection.png b/wfc/samples/Circuit/connection.png
new file mode 100644
index 0000000..3061705
Binary files /dev/null and b/wfc/samples/Circuit/connection.png differ
diff --git a/wfc/samples/Circuit/connection.png.import b/wfc/samples/Circuit/connection.png.import
new file mode 100644
index 0000000..ef809ac
--- /dev/null
+++ b/wfc/samples/Circuit/connection.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/connection.png-916867e89e4b418d37768690ea892234.image"
+
+[deps]
+
+source_file="res://samples/Circuit/connection.png"
+dest_files=[ "res://.import/connection.png-916867e89e4b418d37768690ea892234.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/corner.png b/wfc/samples/Circuit/corner.png
new file mode 100644
index 0000000..643cf27
Binary files /dev/null and b/wfc/samples/Circuit/corner.png differ
diff --git a/wfc/samples/Circuit/corner.png.import b/wfc/samples/Circuit/corner.png.import
new file mode 100644
index 0000000..1d92485
--- /dev/null
+++ b/wfc/samples/Circuit/corner.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/corner.png-50994aac180a73c57bfdd8cd8eb28fa2.image"
+
+[deps]
+
+source_file="res://samples/Circuit/corner.png"
+dest_files=[ "res://.import/corner.png-50994aac180a73c57bfdd8cd8eb28fa2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/data.xml b/wfc/samples/Circuit/data.xml
new file mode 100644
index 0000000..22f3644
--- /dev/null
+++ b/wfc/samples/Circuit/data.xml
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wfc/samples/Circuit/dskew.png b/wfc/samples/Circuit/dskew.png
new file mode 100644
index 0000000..f9a07f4
Binary files /dev/null and b/wfc/samples/Circuit/dskew.png differ
diff --git a/wfc/samples/Circuit/dskew.png.import b/wfc/samples/Circuit/dskew.png.import
new file mode 100644
index 0000000..ee3967d
--- /dev/null
+++ b/wfc/samples/Circuit/dskew.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/dskew.png-f0a67874686cb01cd5fef4b5f7cf565f.image"
+
+[deps]
+
+source_file="res://samples/Circuit/dskew.png"
+dest_files=[ "res://.import/dskew.png-f0a67874686cb01cd5fef4b5f7cf565f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/skew.png b/wfc/samples/Circuit/skew.png
new file mode 100644
index 0000000..260df54
Binary files /dev/null and b/wfc/samples/Circuit/skew.png differ
diff --git a/wfc/samples/Circuit/skew.png.import b/wfc/samples/Circuit/skew.png.import
new file mode 100644
index 0000000..f501e3e
--- /dev/null
+++ b/wfc/samples/Circuit/skew.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/skew.png-dbe735c38bfcfb6d09d4502d18670854.image"
+
+[deps]
+
+source_file="res://samples/Circuit/skew.png"
+dest_files=[ "res://.import/skew.png-dbe735c38bfcfb6d09d4502d18670854.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/substrate.png b/wfc/samples/Circuit/substrate.png
new file mode 100644
index 0000000..2c3aec0
Binary files /dev/null and b/wfc/samples/Circuit/substrate.png differ
diff --git a/wfc/samples/Circuit/substrate.png.import b/wfc/samples/Circuit/substrate.png.import
new file mode 100644
index 0000000..93d37c7
--- /dev/null
+++ b/wfc/samples/Circuit/substrate.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/substrate.png-224af69ace3a954b39798862dc9101a9.image"
+
+[deps]
+
+source_file="res://samples/Circuit/substrate.png"
+dest_files=[ "res://.import/substrate.png-224af69ace3a954b39798862dc9101a9.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/t.png b/wfc/samples/Circuit/t.png
new file mode 100644
index 0000000..084c360
Binary files /dev/null and b/wfc/samples/Circuit/t.png differ
diff --git a/wfc/samples/Circuit/t.png.import b/wfc/samples/Circuit/t.png.import
new file mode 100644
index 0000000..46f5981
--- /dev/null
+++ b/wfc/samples/Circuit/t.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/t.png-77c6cab4a6677f4308d0998ddad861e8.image"
+
+[deps]
+
+source_file="res://samples/Circuit/t.png"
+dest_files=[ "res://.import/t.png-77c6cab4a6677f4308d0998ddad861e8.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/track.png b/wfc/samples/Circuit/track.png
new file mode 100644
index 0000000..01158cb
Binary files /dev/null and b/wfc/samples/Circuit/track.png differ
diff --git a/wfc/samples/Circuit/track.png.import b/wfc/samples/Circuit/track.png.import
new file mode 100644
index 0000000..82ee5a8
--- /dev/null
+++ b/wfc/samples/Circuit/track.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/track.png-4e6048571720ac9b03aab4d2544157ef.image"
+
+[deps]
+
+source_file="res://samples/Circuit/track.png"
+dest_files=[ "res://.import/track.png-4e6048571720ac9b03aab4d2544157ef.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/transition.png b/wfc/samples/Circuit/transition.png
new file mode 100644
index 0000000..42ea71f
Binary files /dev/null and b/wfc/samples/Circuit/transition.png differ
diff --git a/wfc/samples/Circuit/transition.png.import b/wfc/samples/Circuit/transition.png.import
new file mode 100644
index 0000000..8177621
--- /dev/null
+++ b/wfc/samples/Circuit/transition.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/transition.png-39482413405269eb7ff9821f50ea7316.image"
+
+[deps]
+
+source_file="res://samples/Circuit/transition.png"
+dest_files=[ "res://.import/transition.png-39482413405269eb7ff9821f50ea7316.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/turn.png b/wfc/samples/Circuit/turn.png
new file mode 100644
index 0000000..ff10c5f
Binary files /dev/null and b/wfc/samples/Circuit/turn.png differ
diff --git a/wfc/samples/Circuit/turn.png.import b/wfc/samples/Circuit/turn.png.import
new file mode 100644
index 0000000..6653aae
--- /dev/null
+++ b/wfc/samples/Circuit/turn.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/turn.png-3237d6f7b7e53faa2bdceb15e95ef90a.image"
+
+[deps]
+
+source_file="res://samples/Circuit/turn.png"
+dest_files=[ "res://.import/turn.png-3237d6f7b7e53faa2bdceb15e95ef90a.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/viad.png b/wfc/samples/Circuit/viad.png
new file mode 100644
index 0000000..eddd987
Binary files /dev/null and b/wfc/samples/Circuit/viad.png differ
diff --git a/wfc/samples/Circuit/viad.png.import b/wfc/samples/Circuit/viad.png.import
new file mode 100644
index 0000000..f34245b
--- /dev/null
+++ b/wfc/samples/Circuit/viad.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/viad.png-65040bfbd0dcb63259b25bb4bdda001f.image"
+
+[deps]
+
+source_file="res://samples/Circuit/viad.png"
+dest_files=[ "res://.import/viad.png-65040bfbd0dcb63259b25bb4bdda001f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/vias.png b/wfc/samples/Circuit/vias.png
new file mode 100644
index 0000000..eb7a35e
Binary files /dev/null and b/wfc/samples/Circuit/vias.png differ
diff --git a/wfc/samples/Circuit/vias.png.import b/wfc/samples/Circuit/vias.png.import
new file mode 100644
index 0000000..78dcd3a
--- /dev/null
+++ b/wfc/samples/Circuit/vias.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/vias.png-7ee367921f337b4429a5d6da0312126a.image"
+
+[deps]
+
+source_file="res://samples/Circuit/vias.png"
+dest_files=[ "res://.import/vias.png-7ee367921f337b4429a5d6da0312126a.image" ]
+
+[params]
+
diff --git a/wfc/samples/Circuit/wire.png b/wfc/samples/Circuit/wire.png
new file mode 100644
index 0000000..958d10c
Binary files /dev/null and b/wfc/samples/Circuit/wire.png differ
diff --git a/wfc/samples/Circuit/wire.png.import b/wfc/samples/Circuit/wire.png.import
new file mode 100644
index 0000000..fd3c92f
--- /dev/null
+++ b/wfc/samples/Circuit/wire.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/wire.png-54129af2d0d1094123db33f5e5d661ec.image"
+
+[deps]
+
+source_file="res://samples/Circuit/wire.png"
+dest_files=[ "res://.import/wire.png-54129af2d0d1094123db33f5e5d661ec.image" ]
+
+[params]
+
diff --git a/wfc/samples/City.png b/wfc/samples/City.png
new file mode 100644
index 0000000..3b9c4c3
Binary files /dev/null and b/wfc/samples/City.png differ
diff --git a/wfc/samples/City.png.import b/wfc/samples/City.png.import
new file mode 100644
index 0000000..0dc4ae3
--- /dev/null
+++ b/wfc/samples/City.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/City.png-29281a81af98b8666055f53617944f45.image"
+
+[deps]
+
+source_file="res://samples/City.png"
+dest_files=[ "res://.import/City.png-29281a81af98b8666055f53617944f45.image" ]
+
+[params]
+
diff --git a/wfc/samples/Colored City.png b/wfc/samples/Colored City.png
new file mode 100644
index 0000000..f0c5a5f
Binary files /dev/null and b/wfc/samples/Colored City.png differ
diff --git a/wfc/samples/Colored City.png.import b/wfc/samples/Colored City.png.import
new file mode 100644
index 0000000..e146a3b
--- /dev/null
+++ b/wfc/samples/Colored City.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Colored City.png-44a43381364a7b1ab36d9a776d73e8c9.image"
+
+[deps]
+
+source_file="res://samples/Colored City.png"
+dest_files=[ "res://.import/Colored City.png-44a43381364a7b1ab36d9a776d73e8c9.image" ]
+
+[params]
+
diff --git a/wfc/samples/Dungeon.png b/wfc/samples/Dungeon.png
new file mode 100644
index 0000000..64ce90d
Binary files /dev/null and b/wfc/samples/Dungeon.png differ
diff --git a/wfc/samples/Dungeon.png.import b/wfc/samples/Dungeon.png.import
new file mode 100644
index 0000000..a10ebbf
--- /dev/null
+++ b/wfc/samples/Dungeon.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Dungeon.png-c05742c5e5689c332e1ad6829fe36ee2.image"
+
+[deps]
+
+source_file="res://samples/Dungeon.png"
+dest_files=[ "res://.import/Dungeon.png-c05742c5e5689c332e1ad6829fe36ee2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Fabric.png b/wfc/samples/Fabric.png
new file mode 100644
index 0000000..538259d
Binary files /dev/null and b/wfc/samples/Fabric.png differ
diff --git a/wfc/samples/Fabric.png.import b/wfc/samples/Fabric.png.import
new file mode 100644
index 0000000..191b9f7
--- /dev/null
+++ b/wfc/samples/Fabric.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Fabric.png-c03134096bb2a3dccd9e1dc22fd2f122.image"
+
+[deps]
+
+source_file="res://samples/Fabric.png"
+dest_files=[ "res://.import/Fabric.png-c03134096bb2a3dccd9e1dc22fd2f122.image" ]
+
+[params]
+
diff --git a/wfc/samples/Flowers.png b/wfc/samples/Flowers.png
new file mode 100644
index 0000000..b67d8ba
Binary files /dev/null and b/wfc/samples/Flowers.png differ
diff --git a/wfc/samples/Flowers.png.import b/wfc/samples/Flowers.png.import
new file mode 100644
index 0000000..32869e8
--- /dev/null
+++ b/wfc/samples/Flowers.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Flowers.png-1ebf61d5a10fd735a69044de431e8c42.image"
+
+[deps]
+
+source_file="res://samples/Flowers.png"
+dest_files=[ "res://.import/Flowers.png-1ebf61d5a10fd735a69044de431e8c42.image" ]
+
+[params]
+
diff --git a/wfc/samples/Forest.png b/wfc/samples/Forest.png
new file mode 100644
index 0000000..dc00bc6
Binary files /dev/null and b/wfc/samples/Forest.png differ
diff --git a/wfc/samples/Forest.png.import b/wfc/samples/Forest.png.import
new file mode 100644
index 0000000..7dc27b1
--- /dev/null
+++ b/wfc/samples/Forest.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Forest.png-f54bce34b385a824f0511d72629a24f9.image"
+
+[deps]
+
+source_file="res://samples/Forest.png"
+dest_files=[ "res://.import/Forest.png-f54bce34b385a824f0511d72629a24f9.image" ]
+
+[params]
+
diff --git a/wfc/samples/Hogs.png b/wfc/samples/Hogs.png
new file mode 100644
index 0000000..789c8d3
Binary files /dev/null and b/wfc/samples/Hogs.png differ
diff --git a/wfc/samples/Hogs.png.import b/wfc/samples/Hogs.png.import
new file mode 100644
index 0000000..47e53c6
--- /dev/null
+++ b/wfc/samples/Hogs.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Hogs.png-6020618880824895c77eecf1d676f384.image"
+
+[deps]
+
+source_file="res://samples/Hogs.png"
+dest_files=[ "res://.import/Hogs.png-6020618880824895c77eecf1d676f384.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knot.png b/wfc/samples/Knot.png
new file mode 100644
index 0000000..cc132f5
Binary files /dev/null and b/wfc/samples/Knot.png differ
diff --git a/wfc/samples/Knot.png.import b/wfc/samples/Knot.png.import
new file mode 100644
index 0000000..9675308
--- /dev/null
+++ b/wfc/samples/Knot.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Knot.png-583b976f934367e66a35051d0edbc34a.image"
+
+[deps]
+
+source_file="res://samples/Knot.png"
+dest_files=[ "res://.import/Knot.png-583b976f934367e66a35051d0edbc34a.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knots/corner.png b/wfc/samples/Knots/corner.png
new file mode 100644
index 0000000..bcc6ef7
Binary files /dev/null and b/wfc/samples/Knots/corner.png differ
diff --git a/wfc/samples/Knots/corner.png.import b/wfc/samples/Knots/corner.png.import
new file mode 100644
index 0000000..554b673
--- /dev/null
+++ b/wfc/samples/Knots/corner.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/corner.png-f0335b0f0de78265e82e574a4acaf411.image"
+
+[deps]
+
+source_file="res://samples/Knots/corner.png"
+dest_files=[ "res://.import/corner.png-f0335b0f0de78265e82e574a4acaf411.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knots/cross.png b/wfc/samples/Knots/cross.png
new file mode 100644
index 0000000..49752d8
Binary files /dev/null and b/wfc/samples/Knots/cross.png differ
diff --git a/wfc/samples/Knots/cross.png.import b/wfc/samples/Knots/cross.png.import
new file mode 100644
index 0000000..8cc297b
--- /dev/null
+++ b/wfc/samples/Knots/cross.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cross.png-0648b3e3d3f6bf56dfd55f288537c47e.image"
+
+[deps]
+
+source_file="res://samples/Knots/cross.png"
+dest_files=[ "res://.import/cross.png-0648b3e3d3f6bf56dfd55f288537c47e.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knots/data.xml b/wfc/samples/Knots/data.xml
new file mode 100644
index 0000000..9cd54d5
--- /dev/null
+++ b/wfc/samples/Knots/data.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wfc/samples/Knots/empty.png b/wfc/samples/Knots/empty.png
new file mode 100644
index 0000000..ccae147
Binary files /dev/null and b/wfc/samples/Knots/empty.png differ
diff --git a/wfc/samples/Knots/empty.png.import b/wfc/samples/Knots/empty.png.import
new file mode 100644
index 0000000..aea01e8
--- /dev/null
+++ b/wfc/samples/Knots/empty.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/empty.png-6eef1ed1c2f4ed0a003fe60dfa7f2e5c.image"
+
+[deps]
+
+source_file="res://samples/Knots/empty.png"
+dest_files=[ "res://.import/empty.png-6eef1ed1c2f4ed0a003fe60dfa7f2e5c.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knots/line.png b/wfc/samples/Knots/line.png
new file mode 100644
index 0000000..c315294
Binary files /dev/null and b/wfc/samples/Knots/line.png differ
diff --git a/wfc/samples/Knots/line.png.import b/wfc/samples/Knots/line.png.import
new file mode 100644
index 0000000..fa4f483
--- /dev/null
+++ b/wfc/samples/Knots/line.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/line.png-08f04f04fdb2dd1bc10f98e052976d79.image"
+
+[deps]
+
+source_file="res://samples/Knots/line.png"
+dest_files=[ "res://.import/line.png-08f04f04fdb2dd1bc10f98e052976d79.image" ]
+
+[params]
+
diff --git a/wfc/samples/Knots/t.png b/wfc/samples/Knots/t.png
new file mode 100644
index 0000000..cdaba5a
Binary files /dev/null and b/wfc/samples/Knots/t.png differ
diff --git a/wfc/samples/Knots/t.png.import b/wfc/samples/Knots/t.png.import
new file mode 100644
index 0000000..aa3f5a7
--- /dev/null
+++ b/wfc/samples/Knots/t.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/t.png-31b04ba644ce32cb476df1affa5cc0ce.image"
+
+[deps]
+
+source_file="res://samples/Knots/t.png"
+dest_files=[ "res://.import/t.png-31b04ba644ce32cb476df1affa5cc0ce.image" ]
+
+[params]
+
diff --git a/wfc/samples/Lake.png b/wfc/samples/Lake.png
new file mode 100644
index 0000000..56c9ceb
Binary files /dev/null and b/wfc/samples/Lake.png differ
diff --git a/wfc/samples/Lake.png.import b/wfc/samples/Lake.png.import
new file mode 100644
index 0000000..158754a
--- /dev/null
+++ b/wfc/samples/Lake.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Lake.png-8499e572acd159b423de54958e1a3427.image"
+
+[deps]
+
+source_file="res://samples/Lake.png"
+dest_files=[ "res://.import/Lake.png-8499e572acd159b423de54958e1a3427.image" ]
+
+[params]
+
diff --git a/wfc/samples/Less Rooms.png b/wfc/samples/Less Rooms.png
new file mode 100644
index 0000000..8f36e62
Binary files /dev/null and b/wfc/samples/Less Rooms.png differ
diff --git a/wfc/samples/Less Rooms.png.import b/wfc/samples/Less Rooms.png.import
new file mode 100644
index 0000000..5304d23
--- /dev/null
+++ b/wfc/samples/Less Rooms.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Less Rooms.png-d616f19f4904d62ae0e01df606ff3123.image"
+
+[deps]
+
+source_file="res://samples/Less Rooms.png"
+dest_files=[ "res://.import/Less Rooms.png-d616f19f4904d62ae0e01df606ff3123.image" ]
+
+[params]
+
diff --git a/wfc/samples/Link 2.png b/wfc/samples/Link 2.png
new file mode 100644
index 0000000..8a8b337
Binary files /dev/null and b/wfc/samples/Link 2.png differ
diff --git a/wfc/samples/Link 2.png.import b/wfc/samples/Link 2.png.import
new file mode 100644
index 0000000..3f05e7b
--- /dev/null
+++ b/wfc/samples/Link 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Link 2.png-c126ececd168bf09b07e25a22dc3bd23.image"
+
+[deps]
+
+source_file="res://samples/Link 2.png"
+dest_files=[ "res://.import/Link 2.png-c126ececd168bf09b07e25a22dc3bd23.image" ]
+
+[params]
+
diff --git a/wfc/samples/Link.png b/wfc/samples/Link.png
new file mode 100644
index 0000000..57f5e28
Binary files /dev/null and b/wfc/samples/Link.png differ
diff --git a/wfc/samples/Link.png.import b/wfc/samples/Link.png.import
new file mode 100644
index 0000000..8752b02
--- /dev/null
+++ b/wfc/samples/Link.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Link.png-3751d77858a8614768f82cdc1435cd7c.image"
+
+[deps]
+
+source_file="res://samples/Link.png"
+dest_files=[ "res://.import/Link.png-3751d77858a8614768f82cdc1435cd7c.image" ]
+
+[params]
+
diff --git a/wfc/samples/Magic Office.png b/wfc/samples/Magic Office.png
new file mode 100644
index 0000000..5765b8c
Binary files /dev/null and b/wfc/samples/Magic Office.png differ
diff --git a/wfc/samples/Magic Office.png.import b/wfc/samples/Magic Office.png.import
new file mode 100644
index 0000000..75efe79
--- /dev/null
+++ b/wfc/samples/Magic Office.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Magic Office.png-e354251314f3ba862507546d5b2977c7.image"
+
+[deps]
+
+source_file="res://samples/Magic Office.png"
+dest_files=[ "res://.import/Magic Office.png-e354251314f3ba862507546d5b2977c7.image" ]
+
+[params]
+
diff --git a/wfc/samples/Maze.png b/wfc/samples/Maze.png
new file mode 100644
index 0000000..6cfd1b7
Binary files /dev/null and b/wfc/samples/Maze.png differ
diff --git a/wfc/samples/Maze.png.import b/wfc/samples/Maze.png.import
new file mode 100644
index 0000000..861067f
--- /dev/null
+++ b/wfc/samples/Maze.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Maze.png-55691715f42b22f56560685f773f2311.image"
+
+[deps]
+
+source_file="res://samples/Maze.png"
+dest_files=[ "res://.import/Maze.png-55691715f42b22f56560685f773f2311.image" ]
+
+[params]
+
diff --git a/wfc/samples/Mazelike.png b/wfc/samples/Mazelike.png
new file mode 100644
index 0000000..bda57e1
Binary files /dev/null and b/wfc/samples/Mazelike.png differ
diff --git a/wfc/samples/Mazelike.png.import b/wfc/samples/Mazelike.png.import
new file mode 100644
index 0000000..768e4de
--- /dev/null
+++ b/wfc/samples/Mazelike.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Mazelike.png-37464bd318f50f9e97b62ee626096f14.image"
+
+[deps]
+
+source_file="res://samples/Mazelike.png"
+dest_files=[ "res://.import/Mazelike.png-37464bd318f50f9e97b62ee626096f14.image" ]
+
+[params]
+
diff --git a/wfc/samples/More Flowers.png b/wfc/samples/More Flowers.png
new file mode 100644
index 0000000..bc781e4
Binary files /dev/null and b/wfc/samples/More Flowers.png differ
diff --git a/wfc/samples/More Flowers.png.import b/wfc/samples/More Flowers.png.import
new file mode 100644
index 0000000..36973f5
--- /dev/null
+++ b/wfc/samples/More Flowers.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/More Flowers.png-a2922bd111541aaf28dc45b39fd35004.image"
+
+[deps]
+
+source_file="res://samples/More Flowers.png"
+dest_files=[ "res://.import/More Flowers.png-a2922bd111541aaf28dc45b39fd35004.image" ]
+
+[params]
+
diff --git a/wfc/samples/Mountains.png b/wfc/samples/Mountains.png
new file mode 100644
index 0000000..ec27119
Binary files /dev/null and b/wfc/samples/Mountains.png differ
diff --git a/wfc/samples/Mountains.png.import b/wfc/samples/Mountains.png.import
new file mode 100644
index 0000000..b3ecb99
--- /dev/null
+++ b/wfc/samples/Mountains.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Mountains.png-e9aecd052eb416d8cac9e36436967995.image"
+
+[deps]
+
+source_file="res://samples/Mountains.png"
+dest_files=[ "res://.import/Mountains.png-e9aecd052eb416d8cac9e36436967995.image" ]
+
+[params]
+
diff --git a/wfc/samples/Nested.png b/wfc/samples/Nested.png
new file mode 100644
index 0000000..8e524f2
Binary files /dev/null and b/wfc/samples/Nested.png differ
diff --git a/wfc/samples/Nested.png.import b/wfc/samples/Nested.png.import
new file mode 100644
index 0000000..2d53dd6
--- /dev/null
+++ b/wfc/samples/Nested.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Nested.png-be019275952b53b75de9fb38d2d6b2d4.image"
+
+[deps]
+
+source_file="res://samples/Nested.png"
+dest_files=[ "res://.import/Nested.png-be019275952b53b75de9fb38d2d6b2d4.image" ]
+
+[params]
+
diff --git a/wfc/samples/Office 2.png b/wfc/samples/Office 2.png
new file mode 100644
index 0000000..f3e23cd
Binary files /dev/null and b/wfc/samples/Office 2.png differ
diff --git a/wfc/samples/Office 2.png.import b/wfc/samples/Office 2.png.import
new file mode 100644
index 0000000..33f75c3
--- /dev/null
+++ b/wfc/samples/Office 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Office 2.png-0c284a4718b3e1cfebb5abc59e624bc4.image"
+
+[deps]
+
+source_file="res://samples/Office 2.png"
+dest_files=[ "res://.import/Office 2.png-0c284a4718b3e1cfebb5abc59e624bc4.image" ]
+
+[params]
+
diff --git a/wfc/samples/Office.png b/wfc/samples/Office.png
new file mode 100644
index 0000000..a4912f2
Binary files /dev/null and b/wfc/samples/Office.png differ
diff --git a/wfc/samples/Office.png.import b/wfc/samples/Office.png.import
new file mode 100644
index 0000000..98a0289
--- /dev/null
+++ b/wfc/samples/Office.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Office.png-7adafb532276eb6d92ff65b16b891072.image"
+
+[deps]
+
+source_file="res://samples/Office.png"
+dest_files=[ "res://.import/Office.png-7adafb532276eb6d92ff65b16b891072.image" ]
+
+[params]
+
diff --git a/wfc/samples/Paths.png b/wfc/samples/Paths.png
new file mode 100644
index 0000000..a7a6084
Binary files /dev/null and b/wfc/samples/Paths.png differ
diff --git a/wfc/samples/Paths.png.import b/wfc/samples/Paths.png.import
new file mode 100644
index 0000000..d9e463d
--- /dev/null
+++ b/wfc/samples/Paths.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Paths.png-208a7661757d17f566dd57058034bfff.image"
+
+[deps]
+
+source_file="res://samples/Paths.png"
+dest_files=[ "res://.import/Paths.png-208a7661757d17f566dd57058034bfff.image" ]
+
+[params]
+
diff --git a/wfc/samples/Platformer.png b/wfc/samples/Platformer.png
new file mode 100644
index 0000000..e129381
Binary files /dev/null and b/wfc/samples/Platformer.png differ
diff --git a/wfc/samples/Platformer.png.import b/wfc/samples/Platformer.png.import
new file mode 100644
index 0000000..2bbcab4
--- /dev/null
+++ b/wfc/samples/Platformer.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Platformer.png-e12f754a5fb05aa8924f33a84d78e09f.image"
+
+[deps]
+
+source_file="res://samples/Platformer.png"
+dest_files=[ "res://.import/Platformer.png-e12f754a5fb05aa8924f33a84d78e09f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Qud.png b/wfc/samples/Qud.png
new file mode 100644
index 0000000..561f5b3
Binary files /dev/null and b/wfc/samples/Qud.png differ
diff --git a/wfc/samples/Qud.png.import b/wfc/samples/Qud.png.import
new file mode 100644
index 0000000..d5015d2
--- /dev/null
+++ b/wfc/samples/Qud.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Qud.png-5448d873f589801341553f7e3434f731.image"
+
+[deps]
+
+source_file="res://samples/Qud.png"
+dest_files=[ "res://.import/Qud.png-5448d873f589801341553f7e3434f731.image" ]
+
+[params]
+
diff --git a/wfc/samples/Red Dot.png b/wfc/samples/Red Dot.png
new file mode 100644
index 0000000..44e5afb
Binary files /dev/null and b/wfc/samples/Red Dot.png differ
diff --git a/wfc/samples/Red Dot.png.import b/wfc/samples/Red Dot.png.import
new file mode 100644
index 0000000..076f8d3
--- /dev/null
+++ b/wfc/samples/Red Dot.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Red Dot.png-7f5bc93973197fa6e6f5eb350acc663b.image"
+
+[deps]
+
+source_file="res://samples/Red Dot.png"
+dest_files=[ "res://.import/Red Dot.png-7f5bc93973197fa6e6f5eb350acc663b.image" ]
+
+[params]
+
diff --git a/wfc/samples/Red Maze.png b/wfc/samples/Red Maze.png
new file mode 100644
index 0000000..f716db2
Binary files /dev/null and b/wfc/samples/Red Maze.png differ
diff --git a/wfc/samples/Red Maze.png.import b/wfc/samples/Red Maze.png.import
new file mode 100644
index 0000000..ca76f52
--- /dev/null
+++ b/wfc/samples/Red Maze.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Red Maze.png-9e4e766345cdc74b2f47a2bd5a58a506.image"
+
+[deps]
+
+source_file="res://samples/Red Maze.png"
+dest_files=[ "res://.import/Red Maze.png-9e4e766345cdc74b2f47a2bd5a58a506.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms.png b/wfc/samples/Rooms.png
new file mode 100644
index 0000000..4210deb
Binary files /dev/null and b/wfc/samples/Rooms.png differ
diff --git a/wfc/samples/Rooms.png.import b/wfc/samples/Rooms.png.import
new file mode 100644
index 0000000..e48e099
--- /dev/null
+++ b/wfc/samples/Rooms.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Rooms.png-f1580fd24b2393b3d4da1a0909c15ee5.image"
+
+[deps]
+
+source_file="res://samples/Rooms.png"
+dest_files=[ "res://.import/Rooms.png-f1580fd24b2393b3d4da1a0909c15ee5.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/bend.png b/wfc/samples/Rooms/bend.png
new file mode 100644
index 0000000..fd27d07
Binary files /dev/null and b/wfc/samples/Rooms/bend.png differ
diff --git a/wfc/samples/Rooms/bend.png.import b/wfc/samples/Rooms/bend.png.import
new file mode 100644
index 0000000..b51c917
--- /dev/null
+++ b/wfc/samples/Rooms/bend.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/bend.png-da79affe3f58baee25158fa8ee2f25a5.image"
+
+[deps]
+
+source_file="res://samples/Rooms/bend.png"
+dest_files=[ "res://.import/bend.png-da79affe3f58baee25158fa8ee2f25a5.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/corner.png b/wfc/samples/Rooms/corner.png
new file mode 100644
index 0000000..5d9bf27
Binary files /dev/null and b/wfc/samples/Rooms/corner.png differ
diff --git a/wfc/samples/Rooms/corner.png.import b/wfc/samples/Rooms/corner.png.import
new file mode 100644
index 0000000..9711330
--- /dev/null
+++ b/wfc/samples/Rooms/corner.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/corner.png-61e14680961df5adc0813d7161d88784.image"
+
+[deps]
+
+source_file="res://samples/Rooms/corner.png"
+dest_files=[ "res://.import/corner.png-61e14680961df5adc0813d7161d88784.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/corridor.png b/wfc/samples/Rooms/corridor.png
new file mode 100644
index 0000000..2fd942f
Binary files /dev/null and b/wfc/samples/Rooms/corridor.png differ
diff --git a/wfc/samples/Rooms/corridor.png.import b/wfc/samples/Rooms/corridor.png.import
new file mode 100644
index 0000000..2ecca08
--- /dev/null
+++ b/wfc/samples/Rooms/corridor.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/corridor.png-02823b58095bc186c42566c541ed2abf.image"
+
+[deps]
+
+source_file="res://samples/Rooms/corridor.png"
+dest_files=[ "res://.import/corridor.png-02823b58095bc186c42566c541ed2abf.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/data.xml b/wfc/samples/Rooms/data.xml
new file mode 100644
index 0000000..989e045
--- /dev/null
+++ b/wfc/samples/Rooms/data.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wfc/samples/Rooms/door.png b/wfc/samples/Rooms/door.png
new file mode 100644
index 0000000..6cd0500
Binary files /dev/null and b/wfc/samples/Rooms/door.png differ
diff --git a/wfc/samples/Rooms/door.png.import b/wfc/samples/Rooms/door.png.import
new file mode 100644
index 0000000..be889c3
--- /dev/null
+++ b/wfc/samples/Rooms/door.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/door.png-d373f080cfeb233b3cc3f324d16235ce.image"
+
+[deps]
+
+source_file="res://samples/Rooms/door.png"
+dest_files=[ "res://.import/door.png-d373f080cfeb233b3cc3f324d16235ce.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/empty.png b/wfc/samples/Rooms/empty.png
new file mode 100644
index 0000000..c2eea5a
Binary files /dev/null and b/wfc/samples/Rooms/empty.png differ
diff --git a/wfc/samples/Rooms/empty.png.import b/wfc/samples/Rooms/empty.png.import
new file mode 100644
index 0000000..c47c7e0
--- /dev/null
+++ b/wfc/samples/Rooms/empty.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/empty.png-a62bf6c25e27fc8335d66f02e88d8ee2.image"
+
+[deps]
+
+source_file="res://samples/Rooms/empty.png"
+dest_files=[ "res://.import/empty.png-a62bf6c25e27fc8335d66f02e88d8ee2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/side.png b/wfc/samples/Rooms/side.png
new file mode 100644
index 0000000..2fe2883
Binary files /dev/null and b/wfc/samples/Rooms/side.png differ
diff --git a/wfc/samples/Rooms/side.png.import b/wfc/samples/Rooms/side.png.import
new file mode 100644
index 0000000..a31eb1f
--- /dev/null
+++ b/wfc/samples/Rooms/side.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/side.png-cebe6a8cf506a3f2d56d1da5d953246f.image"
+
+[deps]
+
+source_file="res://samples/Rooms/side.png"
+dest_files=[ "res://.import/side.png-cebe6a8cf506a3f2d56d1da5d953246f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/t.png b/wfc/samples/Rooms/t.png
new file mode 100644
index 0000000..47b93c7
Binary files /dev/null and b/wfc/samples/Rooms/t.png differ
diff --git a/wfc/samples/Rooms/t.png.import b/wfc/samples/Rooms/t.png.import
new file mode 100644
index 0000000..483cb02
--- /dev/null
+++ b/wfc/samples/Rooms/t.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/t.png-d938ce124ed3fe23c00f3d4ba989553b.image"
+
+[deps]
+
+source_file="res://samples/Rooms/t.png"
+dest_files=[ "res://.import/t.png-d938ce124ed3fe23c00f3d4ba989553b.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/turn.png b/wfc/samples/Rooms/turn.png
new file mode 100644
index 0000000..9db18d7
Binary files /dev/null and b/wfc/samples/Rooms/turn.png differ
diff --git a/wfc/samples/Rooms/turn.png.import b/wfc/samples/Rooms/turn.png.import
new file mode 100644
index 0000000..5ff6873
--- /dev/null
+++ b/wfc/samples/Rooms/turn.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/turn.png-1ffa82e1aa700e4967dd61c086e25087.image"
+
+[deps]
+
+source_file="res://samples/Rooms/turn.png"
+dest_files=[ "res://.import/turn.png-1ffa82e1aa700e4967dd61c086e25087.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rooms/wall.png b/wfc/samples/Rooms/wall.png
new file mode 100644
index 0000000..90aefbe
Binary files /dev/null and b/wfc/samples/Rooms/wall.png differ
diff --git a/wfc/samples/Rooms/wall.png.import b/wfc/samples/Rooms/wall.png.import
new file mode 100644
index 0000000..1538269
--- /dev/null
+++ b/wfc/samples/Rooms/wall.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/wall.png-365797b01de8fc5f6e273ebdc166eb6f.image"
+
+[deps]
+
+source_file="res://samples/Rooms/wall.png"
+dest_files=[ "res://.import/wall.png-365797b01de8fc5f6e273ebdc166eb6f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Rule 126.png b/wfc/samples/Rule 126.png
new file mode 100644
index 0000000..e24796c
Binary files /dev/null and b/wfc/samples/Rule 126.png differ
diff --git a/wfc/samples/Rule 126.png.import b/wfc/samples/Rule 126.png.import
new file mode 100644
index 0000000..5920389
--- /dev/null
+++ b/wfc/samples/Rule 126.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Rule 126.png-7a61425f29e3266848504f8b4e8a0f3e.image"
+
+[deps]
+
+source_file="res://samples/Rule 126.png"
+dest_files=[ "res://.import/Rule 126.png-7a61425f29e3266848504f8b4e8a0f3e.image" ]
+
+[params]
+
diff --git a/wfc/samples/Scaled Maze.png b/wfc/samples/Scaled Maze.png
new file mode 100644
index 0000000..537c506
Binary files /dev/null and b/wfc/samples/Scaled Maze.png differ
diff --git a/wfc/samples/Scaled Maze.png.import b/wfc/samples/Scaled Maze.png.import
new file mode 100644
index 0000000..324bfe6
--- /dev/null
+++ b/wfc/samples/Scaled Maze.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Scaled Maze.png-d9df44305894d8908f6813ff89866170.image"
+
+[deps]
+
+source_file="res://samples/Scaled Maze.png"
+dest_files=[ "res://.import/Scaled Maze.png-d9df44305894d8908f6813ff89866170.image" ]
+
+[params]
+
diff --git a/wfc/samples/Sewers.png b/wfc/samples/Sewers.png
new file mode 100644
index 0000000..e26765c
Binary files /dev/null and b/wfc/samples/Sewers.png differ
diff --git a/wfc/samples/Sewers.png.import b/wfc/samples/Sewers.png.import
new file mode 100644
index 0000000..98d2911
--- /dev/null
+++ b/wfc/samples/Sewers.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Sewers.png-6bbd879e48bd122879b6d1da658022c4.image"
+
+[deps]
+
+source_file="res://samples/Sewers.png"
+dest_files=[ "res://.import/Sewers.png-6bbd879e48bd122879b6d1da658022c4.image" ]
+
+[params]
+
diff --git a/wfc/samples/Simple Knot.png b/wfc/samples/Simple Knot.png
new file mode 100644
index 0000000..0e805cd
Binary files /dev/null and b/wfc/samples/Simple Knot.png differ
diff --git a/wfc/samples/Simple Knot.png.import b/wfc/samples/Simple Knot.png.import
new file mode 100644
index 0000000..201a80f
--- /dev/null
+++ b/wfc/samples/Simple Knot.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Simple Knot.png-067b306d5213428eff6297f9aa774f64.image"
+
+[deps]
+
+source_file="res://samples/Simple Knot.png"
+dest_files=[ "res://.import/Simple Knot.png-067b306d5213428eff6297f9aa774f64.image" ]
+
+[params]
+
diff --git a/wfc/samples/Simple Maze.png b/wfc/samples/Simple Maze.png
new file mode 100644
index 0000000..c6c9bd4
Binary files /dev/null and b/wfc/samples/Simple Maze.png differ
diff --git a/wfc/samples/Simple Maze.png.import b/wfc/samples/Simple Maze.png.import
new file mode 100644
index 0000000..9cdb2a4
--- /dev/null
+++ b/wfc/samples/Simple Maze.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Simple Maze.png-aae57591c2d07aa5669d9655d6a67dd2.image"
+
+[deps]
+
+source_file="res://samples/Simple Maze.png"
+dest_files=[ "res://.import/Simple Maze.png-aae57591c2d07aa5669d9655d6a67dd2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Simple Wall.png b/wfc/samples/Simple Wall.png
new file mode 100644
index 0000000..9369ff6
Binary files /dev/null and b/wfc/samples/Simple Wall.png differ
diff --git a/wfc/samples/Simple Wall.png.import b/wfc/samples/Simple Wall.png.import
new file mode 100644
index 0000000..9ea0f8f
--- /dev/null
+++ b/wfc/samples/Simple Wall.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Simple Wall.png-6d33180b5dfb1e4d54af2312b2721435.image"
+
+[deps]
+
+source_file="res://samples/Simple Wall.png"
+dest_files=[ "res://.import/Simple Wall.png-6d33180b5dfb1e4d54af2312b2721435.image" ]
+
+[params]
+
diff --git a/wfc/samples/Skew 1.png b/wfc/samples/Skew 1.png
new file mode 100644
index 0000000..65f27ea
Binary files /dev/null and b/wfc/samples/Skew 1.png differ
diff --git a/wfc/samples/Skew 1.png.import b/wfc/samples/Skew 1.png.import
new file mode 100644
index 0000000..5f3028e
--- /dev/null
+++ b/wfc/samples/Skew 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Skew 1.png-86a9061246d9b6e8b949ddc7a9c7ada7.image"
+
+[deps]
+
+source_file="res://samples/Skew 1.png"
+dest_files=[ "res://.import/Skew 1.png-86a9061246d9b6e8b949ddc7a9c7ada7.image" ]
+
+[params]
+
diff --git a/wfc/samples/Skew 2.png b/wfc/samples/Skew 2.png
new file mode 100644
index 0000000..8c60b39
Binary files /dev/null and b/wfc/samples/Skew 2.png differ
diff --git a/wfc/samples/Skew 2.png.import b/wfc/samples/Skew 2.png.import
new file mode 100644
index 0000000..a833b96
--- /dev/null
+++ b/wfc/samples/Skew 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Skew 2.png-cf597d11fefc0b8d17ea668ce6c99eb3.image"
+
+[deps]
+
+source_file="res://samples/Skew 2.png"
+dest_files=[ "res://.import/Skew 2.png-cf597d11fefc0b8d17ea668ce6c99eb3.image" ]
+
+[params]
+
diff --git a/wfc/samples/Skyline 2.png b/wfc/samples/Skyline 2.png
new file mode 100644
index 0000000..a7cd1e5
Binary files /dev/null and b/wfc/samples/Skyline 2.png differ
diff --git a/wfc/samples/Skyline 2.png.import b/wfc/samples/Skyline 2.png.import
new file mode 100644
index 0000000..24d5275
--- /dev/null
+++ b/wfc/samples/Skyline 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Skyline 2.png-b20b9f92cdaf904f154e6acc180aeb0e.image"
+
+[deps]
+
+source_file="res://samples/Skyline 2.png"
+dest_files=[ "res://.import/Skyline 2.png-b20b9f92cdaf904f154e6acc180aeb0e.image" ]
+
+[params]
+
diff --git a/wfc/samples/Skyline.png b/wfc/samples/Skyline.png
new file mode 100644
index 0000000..4589876
Binary files /dev/null and b/wfc/samples/Skyline.png differ
diff --git a/wfc/samples/Skyline.png.import b/wfc/samples/Skyline.png.import
new file mode 100644
index 0000000..e5e0819
--- /dev/null
+++ b/wfc/samples/Skyline.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Skyline.png-b2283bbda1685d3d588bfa933c9c8f97.image"
+
+[deps]
+
+source_file="res://samples/Skyline.png"
+dest_files=[ "res://.import/Skyline.png-b2283bbda1685d3d588bfa933c9c8f97.image" ]
+
+[params]
+
diff --git a/wfc/samples/Smile City.png b/wfc/samples/Smile City.png
new file mode 100644
index 0000000..8681f9f
Binary files /dev/null and b/wfc/samples/Smile City.png differ
diff --git a/wfc/samples/Smile City.png.import b/wfc/samples/Smile City.png.import
new file mode 100644
index 0000000..6280401
--- /dev/null
+++ b/wfc/samples/Smile City.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Smile City.png-ba73ec380bb6ee3fc36a28f05ca931c5.image"
+
+[deps]
+
+source_file="res://samples/Smile City.png"
+dest_files=[ "res://.import/Smile City.png-ba73ec380bb6ee3fc36a28f05ca931c5.image" ]
+
+[params]
+
diff --git a/wfc/samples/Spirals.png b/wfc/samples/Spirals.png
new file mode 100644
index 0000000..55de4c4
Binary files /dev/null and b/wfc/samples/Spirals.png differ
diff --git a/wfc/samples/Spirals.png.import b/wfc/samples/Spirals.png.import
new file mode 100644
index 0000000..5806c40
--- /dev/null
+++ b/wfc/samples/Spirals.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Spirals.png-603e5217c7589185e5a14c74aebc5764.image"
+
+[deps]
+
+source_file="res://samples/Spirals.png"
+dest_files=[ "res://.import/Spirals.png-603e5217c7589185e5a14c74aebc5764.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliff 0.png b/wfc/samples/Summer/cliff 0.png
new file mode 100644
index 0000000..a921d79
Binary files /dev/null and b/wfc/samples/Summer/cliff 0.png differ
diff --git a/wfc/samples/Summer/cliff 0.png.import b/wfc/samples/Summer/cliff 0.png.import
new file mode 100644
index 0000000..f48044d
--- /dev/null
+++ b/wfc/samples/Summer/cliff 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliff 0.png-be95c5e90ea88164cda354862438c4d3.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliff 0.png"
+dest_files=[ "res://.import/cliff 0.png-be95c5e90ea88164cda354862438c4d3.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliff 1.png b/wfc/samples/Summer/cliff 1.png
new file mode 100644
index 0000000..6f36731
Binary files /dev/null and b/wfc/samples/Summer/cliff 1.png differ
diff --git a/wfc/samples/Summer/cliff 1.png.import b/wfc/samples/Summer/cliff 1.png.import
new file mode 100644
index 0000000..74bf4c0
--- /dev/null
+++ b/wfc/samples/Summer/cliff 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliff 1.png-981c9ae2f426170bd982e10cb3276d47.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliff 1.png"
+dest_files=[ "res://.import/cliff 1.png-981c9ae2f426170bd982e10cb3276d47.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliff 2.png b/wfc/samples/Summer/cliff 2.png
new file mode 100644
index 0000000..c3b96f2
Binary files /dev/null and b/wfc/samples/Summer/cliff 2.png differ
diff --git a/wfc/samples/Summer/cliff 2.png.import b/wfc/samples/Summer/cliff 2.png.import
new file mode 100644
index 0000000..bbd5ee9
--- /dev/null
+++ b/wfc/samples/Summer/cliff 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliff 2.png-42bc29c70362641e86192d7165c84c57.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliff 2.png"
+dest_files=[ "res://.import/cliff 2.png-42bc29c70362641e86192d7165c84c57.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliff 3.png b/wfc/samples/Summer/cliff 3.png
new file mode 100644
index 0000000..4c45cfe
Binary files /dev/null and b/wfc/samples/Summer/cliff 3.png differ
diff --git a/wfc/samples/Summer/cliff 3.png.import b/wfc/samples/Summer/cliff 3.png.import
new file mode 100644
index 0000000..66162ec
--- /dev/null
+++ b/wfc/samples/Summer/cliff 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliff 3.png-40fabb53387c161269353028d005cf20.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliff 3.png"
+dest_files=[ "res://.import/cliff 3.png-40fabb53387c161269353028d005cf20.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffcorner 0.png b/wfc/samples/Summer/cliffcorner 0.png
new file mode 100644
index 0000000..2a52d32
Binary files /dev/null and b/wfc/samples/Summer/cliffcorner 0.png differ
diff --git a/wfc/samples/Summer/cliffcorner 0.png.import b/wfc/samples/Summer/cliffcorner 0.png.import
new file mode 100644
index 0000000..680c94a
--- /dev/null
+++ b/wfc/samples/Summer/cliffcorner 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffcorner 0.png-6bcbbe0fb756780f598be640fbff1027.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffcorner 0.png"
+dest_files=[ "res://.import/cliffcorner 0.png-6bcbbe0fb756780f598be640fbff1027.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffcorner 1.png b/wfc/samples/Summer/cliffcorner 1.png
new file mode 100644
index 0000000..d94efed
Binary files /dev/null and b/wfc/samples/Summer/cliffcorner 1.png differ
diff --git a/wfc/samples/Summer/cliffcorner 1.png.import b/wfc/samples/Summer/cliffcorner 1.png.import
new file mode 100644
index 0000000..3ea3afb
--- /dev/null
+++ b/wfc/samples/Summer/cliffcorner 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffcorner 1.png-eacb4debf1b929659bcefbaeb96da6c3.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffcorner 1.png"
+dest_files=[ "res://.import/cliffcorner 1.png-eacb4debf1b929659bcefbaeb96da6c3.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffcorner 2.png b/wfc/samples/Summer/cliffcorner 2.png
new file mode 100644
index 0000000..41f4f5a
Binary files /dev/null and b/wfc/samples/Summer/cliffcorner 2.png differ
diff --git a/wfc/samples/Summer/cliffcorner 2.png.import b/wfc/samples/Summer/cliffcorner 2.png.import
new file mode 100644
index 0000000..0d0da8c
--- /dev/null
+++ b/wfc/samples/Summer/cliffcorner 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffcorner 2.png-98377352b11e69f74ec831572fb25f39.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffcorner 2.png"
+dest_files=[ "res://.import/cliffcorner 2.png-98377352b11e69f74ec831572fb25f39.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffcorner 3.png b/wfc/samples/Summer/cliffcorner 3.png
new file mode 100644
index 0000000..14e3035
Binary files /dev/null and b/wfc/samples/Summer/cliffcorner 3.png differ
diff --git a/wfc/samples/Summer/cliffcorner 3.png.import b/wfc/samples/Summer/cliffcorner 3.png.import
new file mode 100644
index 0000000..48f72b0
--- /dev/null
+++ b/wfc/samples/Summer/cliffcorner 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffcorner 3.png-07689d10352e94948a171ac732421fa6.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffcorner 3.png"
+dest_files=[ "res://.import/cliffcorner 3.png-07689d10352e94948a171ac732421fa6.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffturn 0.png b/wfc/samples/Summer/cliffturn 0.png
new file mode 100644
index 0000000..1dadb94
Binary files /dev/null and b/wfc/samples/Summer/cliffturn 0.png differ
diff --git a/wfc/samples/Summer/cliffturn 0.png.import b/wfc/samples/Summer/cliffturn 0.png.import
new file mode 100644
index 0000000..c0cc635
--- /dev/null
+++ b/wfc/samples/Summer/cliffturn 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffturn 0.png-702d6d7cf444840d28b28fd4f0c5dd0c.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffturn 0.png"
+dest_files=[ "res://.import/cliffturn 0.png-702d6d7cf444840d28b28fd4f0c5dd0c.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffturn 1.png b/wfc/samples/Summer/cliffturn 1.png
new file mode 100644
index 0000000..f9e9ad2
Binary files /dev/null and b/wfc/samples/Summer/cliffturn 1.png differ
diff --git a/wfc/samples/Summer/cliffturn 1.png.import b/wfc/samples/Summer/cliffturn 1.png.import
new file mode 100644
index 0000000..4048acd
--- /dev/null
+++ b/wfc/samples/Summer/cliffturn 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffturn 1.png-5041b04590cd2ed798399fc131336b3d.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffturn 1.png"
+dest_files=[ "res://.import/cliffturn 1.png-5041b04590cd2ed798399fc131336b3d.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffturn 2.png b/wfc/samples/Summer/cliffturn 2.png
new file mode 100644
index 0000000..d37cefb
Binary files /dev/null and b/wfc/samples/Summer/cliffturn 2.png differ
diff --git a/wfc/samples/Summer/cliffturn 2.png.import b/wfc/samples/Summer/cliffturn 2.png.import
new file mode 100644
index 0000000..b6e3ef5
--- /dev/null
+++ b/wfc/samples/Summer/cliffturn 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffturn 2.png-1d12985fe51a1e3f52abe013f322c0bb.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffturn 2.png"
+dest_files=[ "res://.import/cliffturn 2.png-1d12985fe51a1e3f52abe013f322c0bb.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/cliffturn 3.png b/wfc/samples/Summer/cliffturn 3.png
new file mode 100644
index 0000000..ba08391
Binary files /dev/null and b/wfc/samples/Summer/cliffturn 3.png differ
diff --git a/wfc/samples/Summer/cliffturn 3.png.import b/wfc/samples/Summer/cliffturn 3.png.import
new file mode 100644
index 0000000..e7ec75d
--- /dev/null
+++ b/wfc/samples/Summer/cliffturn 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/cliffturn 3.png-105b107c3ad7246e65a68a850dec4df8.image"
+
+[deps]
+
+source_file="res://samples/Summer/cliffturn 3.png"
+dest_files=[ "res://.import/cliffturn 3.png-105b107c3ad7246e65a68a850dec4df8.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/data.xml b/wfc/samples/Summer/data.xml
new file mode 100644
index 0000000..77a55fe
--- /dev/null
+++ b/wfc/samples/Summer/data.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wfc/samples/Summer/grass 0.png b/wfc/samples/Summer/grass 0.png
new file mode 100644
index 0000000..d8cbedb
Binary files /dev/null and b/wfc/samples/Summer/grass 0.png differ
diff --git a/wfc/samples/Summer/grass 0.png.import b/wfc/samples/Summer/grass 0.png.import
new file mode 100644
index 0000000..e7c8f84
--- /dev/null
+++ b/wfc/samples/Summer/grass 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/grass 0.png-1d26ba48636f5deb86f70d421b6eacf1.image"
+
+[deps]
+
+source_file="res://samples/Summer/grass 0.png"
+dest_files=[ "res://.import/grass 0.png-1d26ba48636f5deb86f70d421b6eacf1.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/grasscorner 0.png b/wfc/samples/Summer/grasscorner 0.png
new file mode 100644
index 0000000..94054b1
Binary files /dev/null and b/wfc/samples/Summer/grasscorner 0.png differ
diff --git a/wfc/samples/Summer/grasscorner 0.png.import b/wfc/samples/Summer/grasscorner 0.png.import
new file mode 100644
index 0000000..a70858e
--- /dev/null
+++ b/wfc/samples/Summer/grasscorner 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/grasscorner 0.png-da72047fecaee9735c9e650e36148cad.image"
+
+[deps]
+
+source_file="res://samples/Summer/grasscorner 0.png"
+dest_files=[ "res://.import/grasscorner 0.png-da72047fecaee9735c9e650e36148cad.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/grasscorner 1.png b/wfc/samples/Summer/grasscorner 1.png
new file mode 100644
index 0000000..15e7bd0
Binary files /dev/null and b/wfc/samples/Summer/grasscorner 1.png differ
diff --git a/wfc/samples/Summer/grasscorner 1.png.import b/wfc/samples/Summer/grasscorner 1.png.import
new file mode 100644
index 0000000..99c617c
--- /dev/null
+++ b/wfc/samples/Summer/grasscorner 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/grasscorner 1.png-ee78c39265d1235f2195bef52114b9f2.image"
+
+[deps]
+
+source_file="res://samples/Summer/grasscorner 1.png"
+dest_files=[ "res://.import/grasscorner 1.png-ee78c39265d1235f2195bef52114b9f2.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/grasscorner 2.png b/wfc/samples/Summer/grasscorner 2.png
new file mode 100644
index 0000000..f8438d8
Binary files /dev/null and b/wfc/samples/Summer/grasscorner 2.png differ
diff --git a/wfc/samples/Summer/grasscorner 2.png.import b/wfc/samples/Summer/grasscorner 2.png.import
new file mode 100644
index 0000000..fffd784
--- /dev/null
+++ b/wfc/samples/Summer/grasscorner 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/grasscorner 2.png-928a927a885d07eae4bfec5319a74b2d.image"
+
+[deps]
+
+source_file="res://samples/Summer/grasscorner 2.png"
+dest_files=[ "res://.import/grasscorner 2.png-928a927a885d07eae4bfec5319a74b2d.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/grasscorner 3.png b/wfc/samples/Summer/grasscorner 3.png
new file mode 100644
index 0000000..7936dd9
Binary files /dev/null and b/wfc/samples/Summer/grasscorner 3.png differ
diff --git a/wfc/samples/Summer/grasscorner 3.png.import b/wfc/samples/Summer/grasscorner 3.png.import
new file mode 100644
index 0000000..0f1632c
--- /dev/null
+++ b/wfc/samples/Summer/grasscorner 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/grasscorner 3.png-5f6e42f103df9587997993c296b1f8bf.image"
+
+[deps]
+
+source_file="res://samples/Summer/grasscorner 3.png"
+dest_files=[ "res://.import/grasscorner 3.png-5f6e42f103df9587997993c296b1f8bf.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/road 0.png b/wfc/samples/Summer/road 0.png
new file mode 100644
index 0000000..3c5ea96
Binary files /dev/null and b/wfc/samples/Summer/road 0.png differ
diff --git a/wfc/samples/Summer/road 0.png.import b/wfc/samples/Summer/road 0.png.import
new file mode 100644
index 0000000..39adecb
--- /dev/null
+++ b/wfc/samples/Summer/road 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/road 0.png-780882c221341a0225a91d759e98f58c.image"
+
+[deps]
+
+source_file="res://samples/Summer/road 0.png"
+dest_files=[ "res://.import/road 0.png-780882c221341a0225a91d759e98f58c.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/road 1.png b/wfc/samples/Summer/road 1.png
new file mode 100644
index 0000000..3116b68
Binary files /dev/null and b/wfc/samples/Summer/road 1.png differ
diff --git a/wfc/samples/Summer/road 1.png.import b/wfc/samples/Summer/road 1.png.import
new file mode 100644
index 0000000..e1b0c76
--- /dev/null
+++ b/wfc/samples/Summer/road 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/road 1.png-de07f06993ba11a37e1098f193343015.image"
+
+[deps]
+
+source_file="res://samples/Summer/road 1.png"
+dest_files=[ "res://.import/road 1.png-de07f06993ba11a37e1098f193343015.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/road 2.png b/wfc/samples/Summer/road 2.png
new file mode 100644
index 0000000..67566c7
Binary files /dev/null and b/wfc/samples/Summer/road 2.png differ
diff --git a/wfc/samples/Summer/road 2.png.import b/wfc/samples/Summer/road 2.png.import
new file mode 100644
index 0000000..193e2c2
--- /dev/null
+++ b/wfc/samples/Summer/road 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/road 2.png-c45f09366ae601aa6b96b1a11ee04448.image"
+
+[deps]
+
+source_file="res://samples/Summer/road 2.png"
+dest_files=[ "res://.import/road 2.png-c45f09366ae601aa6b96b1a11ee04448.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/road 3.png b/wfc/samples/Summer/road 3.png
new file mode 100644
index 0000000..f889273
Binary files /dev/null and b/wfc/samples/Summer/road 3.png differ
diff --git a/wfc/samples/Summer/road 3.png.import b/wfc/samples/Summer/road 3.png.import
new file mode 100644
index 0000000..868d942
--- /dev/null
+++ b/wfc/samples/Summer/road 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/road 3.png-831265aa0362b67eb87e00860b09e7ee.image"
+
+[deps]
+
+source_file="res://samples/Summer/road 3.png"
+dest_files=[ "res://.import/road 3.png-831265aa0362b67eb87e00860b09e7ee.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/roadturn 0.png b/wfc/samples/Summer/roadturn 0.png
new file mode 100644
index 0000000..5dd1fb1
Binary files /dev/null and b/wfc/samples/Summer/roadturn 0.png differ
diff --git a/wfc/samples/Summer/roadturn 0.png.import b/wfc/samples/Summer/roadturn 0.png.import
new file mode 100644
index 0000000..c805224
--- /dev/null
+++ b/wfc/samples/Summer/roadturn 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/roadturn 0.png-92b2b624635b0f1db936617fc4a7e77a.image"
+
+[deps]
+
+source_file="res://samples/Summer/roadturn 0.png"
+dest_files=[ "res://.import/roadturn 0.png-92b2b624635b0f1db936617fc4a7e77a.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/roadturn 1.png b/wfc/samples/Summer/roadturn 1.png
new file mode 100644
index 0000000..5191e19
Binary files /dev/null and b/wfc/samples/Summer/roadturn 1.png differ
diff --git a/wfc/samples/Summer/roadturn 1.png.import b/wfc/samples/Summer/roadturn 1.png.import
new file mode 100644
index 0000000..6bf64f3
--- /dev/null
+++ b/wfc/samples/Summer/roadturn 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/roadturn 1.png-11407305f687e671d34151474d0a8eab.image"
+
+[deps]
+
+source_file="res://samples/Summer/roadturn 1.png"
+dest_files=[ "res://.import/roadturn 1.png-11407305f687e671d34151474d0a8eab.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/roadturn 2.png b/wfc/samples/Summer/roadturn 2.png
new file mode 100644
index 0000000..11b9be7
Binary files /dev/null and b/wfc/samples/Summer/roadturn 2.png differ
diff --git a/wfc/samples/Summer/roadturn 2.png.import b/wfc/samples/Summer/roadturn 2.png.import
new file mode 100644
index 0000000..a2408a1
--- /dev/null
+++ b/wfc/samples/Summer/roadturn 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/roadturn 2.png-7095798cc9299b1bfb7ac1edb321cbc5.image"
+
+[deps]
+
+source_file="res://samples/Summer/roadturn 2.png"
+dest_files=[ "res://.import/roadturn 2.png-7095798cc9299b1bfb7ac1edb321cbc5.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/roadturn 3.png b/wfc/samples/Summer/roadturn 3.png
new file mode 100644
index 0000000..b80c01b
Binary files /dev/null and b/wfc/samples/Summer/roadturn 3.png differ
diff --git a/wfc/samples/Summer/roadturn 3.png.import b/wfc/samples/Summer/roadturn 3.png.import
new file mode 100644
index 0000000..9be8d80
--- /dev/null
+++ b/wfc/samples/Summer/roadturn 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/roadturn 3.png-f2ac90dbf3ede1d2b04cccd10f983e1f.image"
+
+[deps]
+
+source_file="res://samples/Summer/roadturn 3.png"
+dest_files=[ "res://.import/roadturn 3.png-f2ac90dbf3ede1d2b04cccd10f983e1f.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/water_a 0.png b/wfc/samples/Summer/water_a 0.png
new file mode 100644
index 0000000..b1e9eeb
Binary files /dev/null and b/wfc/samples/Summer/water_a 0.png differ
diff --git a/wfc/samples/Summer/water_a 0.png.import b/wfc/samples/Summer/water_a 0.png.import
new file mode 100644
index 0000000..8d4725f
--- /dev/null
+++ b/wfc/samples/Summer/water_a 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/water_a 0.png-058032f7e57e5663a17eb5e8f07584dd.image"
+
+[deps]
+
+source_file="res://samples/Summer/water_a 0.png"
+dest_files=[ "res://.import/water_a 0.png-058032f7e57e5663a17eb5e8f07584dd.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/water_b 0.png b/wfc/samples/Summer/water_b 0.png
new file mode 100644
index 0000000..1e0ec81
Binary files /dev/null and b/wfc/samples/Summer/water_b 0.png differ
diff --git a/wfc/samples/Summer/water_b 0.png.import b/wfc/samples/Summer/water_b 0.png.import
new file mode 100644
index 0000000..a1ef5fe
--- /dev/null
+++ b/wfc/samples/Summer/water_b 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/water_b 0.png-c0dbc6dee1d0ebe58f4cdee4e7c4e9ea.image"
+
+[deps]
+
+source_file="res://samples/Summer/water_b 0.png"
+dest_files=[ "res://.import/water_b 0.png-c0dbc6dee1d0ebe58f4cdee4e7c4e9ea.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/water_c 0.png b/wfc/samples/Summer/water_c 0.png
new file mode 100644
index 0000000..5fd11e0
Binary files /dev/null and b/wfc/samples/Summer/water_c 0.png differ
diff --git a/wfc/samples/Summer/water_c 0.png.import b/wfc/samples/Summer/water_c 0.png.import
new file mode 100644
index 0000000..9f904b0
--- /dev/null
+++ b/wfc/samples/Summer/water_c 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/water_c 0.png-36db6dfd3594c521f4cc61b5c9a17877.image"
+
+[deps]
+
+source_file="res://samples/Summer/water_c 0.png"
+dest_files=[ "res://.import/water_c 0.png-36db6dfd3594c521f4cc61b5c9a17877.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/watercorner 0.png b/wfc/samples/Summer/watercorner 0.png
new file mode 100644
index 0000000..c629e2d
Binary files /dev/null and b/wfc/samples/Summer/watercorner 0.png differ
diff --git a/wfc/samples/Summer/watercorner 0.png.import b/wfc/samples/Summer/watercorner 0.png.import
new file mode 100644
index 0000000..96260a0
--- /dev/null
+++ b/wfc/samples/Summer/watercorner 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/watercorner 0.png-8e0859492d940e70d86c66d59b3fea8b.image"
+
+[deps]
+
+source_file="res://samples/Summer/watercorner 0.png"
+dest_files=[ "res://.import/watercorner 0.png-8e0859492d940e70d86c66d59b3fea8b.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/watercorner 1.png b/wfc/samples/Summer/watercorner 1.png
new file mode 100644
index 0000000..c7d5766
Binary files /dev/null and b/wfc/samples/Summer/watercorner 1.png differ
diff --git a/wfc/samples/Summer/watercorner 1.png.import b/wfc/samples/Summer/watercorner 1.png.import
new file mode 100644
index 0000000..5c968fd
--- /dev/null
+++ b/wfc/samples/Summer/watercorner 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/watercorner 1.png-6160c1afa4569874f4254cc132b138a1.image"
+
+[deps]
+
+source_file="res://samples/Summer/watercorner 1.png"
+dest_files=[ "res://.import/watercorner 1.png-6160c1afa4569874f4254cc132b138a1.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/watercorner 2.png b/wfc/samples/Summer/watercorner 2.png
new file mode 100644
index 0000000..20fb34a
Binary files /dev/null and b/wfc/samples/Summer/watercorner 2.png differ
diff --git a/wfc/samples/Summer/watercorner 2.png.import b/wfc/samples/Summer/watercorner 2.png.import
new file mode 100644
index 0000000..b35772e
--- /dev/null
+++ b/wfc/samples/Summer/watercorner 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/watercorner 2.png-2bbd8551fcc3d3747bd92462a8390e44.image"
+
+[deps]
+
+source_file="res://samples/Summer/watercorner 2.png"
+dest_files=[ "res://.import/watercorner 2.png-2bbd8551fcc3d3747bd92462a8390e44.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/watercorner 3.png b/wfc/samples/Summer/watercorner 3.png
new file mode 100644
index 0000000..9e19f70
Binary files /dev/null and b/wfc/samples/Summer/watercorner 3.png differ
diff --git a/wfc/samples/Summer/watercorner 3.png.import b/wfc/samples/Summer/watercorner 3.png.import
new file mode 100644
index 0000000..048e64e
--- /dev/null
+++ b/wfc/samples/Summer/watercorner 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/watercorner 3.png-4c7baf296a2dd06f3ff93fc7401fbb3a.image"
+
+[deps]
+
+source_file="res://samples/Summer/watercorner 3.png"
+dest_files=[ "res://.import/watercorner 3.png-4c7baf296a2dd06f3ff93fc7401fbb3a.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterside 0.png b/wfc/samples/Summer/waterside 0.png
new file mode 100644
index 0000000..608e8bb
Binary files /dev/null and b/wfc/samples/Summer/waterside 0.png differ
diff --git a/wfc/samples/Summer/waterside 0.png.import b/wfc/samples/Summer/waterside 0.png.import
new file mode 100644
index 0000000..c597ce7
--- /dev/null
+++ b/wfc/samples/Summer/waterside 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterside 0.png-c1e3101fb6702d28f69fd9d61b764333.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterside 0.png"
+dest_files=[ "res://.import/waterside 0.png-c1e3101fb6702d28f69fd9d61b764333.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterside 1.png b/wfc/samples/Summer/waterside 1.png
new file mode 100644
index 0000000..10bb864
Binary files /dev/null and b/wfc/samples/Summer/waterside 1.png differ
diff --git a/wfc/samples/Summer/waterside 1.png.import b/wfc/samples/Summer/waterside 1.png.import
new file mode 100644
index 0000000..de318ee
--- /dev/null
+++ b/wfc/samples/Summer/waterside 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterside 1.png-62b61a23781173e0ae041b871be79d8b.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterside 1.png"
+dest_files=[ "res://.import/waterside 1.png-62b61a23781173e0ae041b871be79d8b.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterside 2.png b/wfc/samples/Summer/waterside 2.png
new file mode 100644
index 0000000..d7a1faf
Binary files /dev/null and b/wfc/samples/Summer/waterside 2.png differ
diff --git a/wfc/samples/Summer/waterside 2.png.import b/wfc/samples/Summer/waterside 2.png.import
new file mode 100644
index 0000000..315b0af
--- /dev/null
+++ b/wfc/samples/Summer/waterside 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterside 2.png-4da8d54275c3bbe5137689abe4365546.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterside 2.png"
+dest_files=[ "res://.import/waterside 2.png-4da8d54275c3bbe5137689abe4365546.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterside 3.png b/wfc/samples/Summer/waterside 3.png
new file mode 100644
index 0000000..417c24e
Binary files /dev/null and b/wfc/samples/Summer/waterside 3.png differ
diff --git a/wfc/samples/Summer/waterside 3.png.import b/wfc/samples/Summer/waterside 3.png.import
new file mode 100644
index 0000000..6709b35
--- /dev/null
+++ b/wfc/samples/Summer/waterside 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterside 3.png-368e645fe053aae949ad7bb59f747189.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterside 3.png"
+dest_files=[ "res://.import/waterside 3.png-368e645fe053aae949ad7bb59f747189.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterturn 0.png b/wfc/samples/Summer/waterturn 0.png
new file mode 100644
index 0000000..3d34449
Binary files /dev/null and b/wfc/samples/Summer/waterturn 0.png differ
diff --git a/wfc/samples/Summer/waterturn 0.png.import b/wfc/samples/Summer/waterturn 0.png.import
new file mode 100644
index 0000000..d6da9c8
--- /dev/null
+++ b/wfc/samples/Summer/waterturn 0.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterturn 0.png-5e2c4a5fdee956baf9a3179baee9a751.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterturn 0.png"
+dest_files=[ "res://.import/waterturn 0.png-5e2c4a5fdee956baf9a3179baee9a751.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterturn 1.png b/wfc/samples/Summer/waterturn 1.png
new file mode 100644
index 0000000..1f9319f
Binary files /dev/null and b/wfc/samples/Summer/waterturn 1.png differ
diff --git a/wfc/samples/Summer/waterturn 1.png.import b/wfc/samples/Summer/waterturn 1.png.import
new file mode 100644
index 0000000..11c09eb
--- /dev/null
+++ b/wfc/samples/Summer/waterturn 1.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterturn 1.png-f7be95c9eb6d41048ed337de7ee70609.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterturn 1.png"
+dest_files=[ "res://.import/waterturn 1.png-f7be95c9eb6d41048ed337de7ee70609.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterturn 2.png b/wfc/samples/Summer/waterturn 2.png
new file mode 100644
index 0000000..baf8eae
Binary files /dev/null and b/wfc/samples/Summer/waterturn 2.png differ
diff --git a/wfc/samples/Summer/waterturn 2.png.import b/wfc/samples/Summer/waterturn 2.png.import
new file mode 100644
index 0000000..4973200
--- /dev/null
+++ b/wfc/samples/Summer/waterturn 2.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterturn 2.png-86835dd43913764e60dc0956cb7c2c95.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterturn 2.png"
+dest_files=[ "res://.import/waterturn 2.png-86835dd43913764e60dc0956cb7c2c95.image" ]
+
+[params]
+
diff --git a/wfc/samples/Summer/waterturn 3.png b/wfc/samples/Summer/waterturn 3.png
new file mode 100644
index 0000000..bf26d7c
Binary files /dev/null and b/wfc/samples/Summer/waterturn 3.png differ
diff --git a/wfc/samples/Summer/waterturn 3.png.import b/wfc/samples/Summer/waterturn 3.png.import
new file mode 100644
index 0000000..2218556
--- /dev/null
+++ b/wfc/samples/Summer/waterturn 3.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/waterturn 3.png-bf7d9e25c103968b8c2f7eb50ba91e46.image"
+
+[deps]
+
+source_file="res://samples/Summer/waterturn 3.png"
+dest_files=[ "res://.import/waterturn 3.png-bf7d9e25c103968b8c2f7eb50ba91e46.image" ]
+
+[params]
+
diff --git a/wfc/samples/Town.png b/wfc/samples/Town.png
new file mode 100644
index 0000000..925de00
Binary files /dev/null and b/wfc/samples/Town.png differ
diff --git a/wfc/samples/Town.png.import b/wfc/samples/Town.png.import
new file mode 100644
index 0000000..a822df7
--- /dev/null
+++ b/wfc/samples/Town.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Town.png-309dafa4959aee24d893b7a69824c218.image"
+
+[deps]
+
+source_file="res://samples/Town.png"
+dest_files=[ "res://.import/Town.png-309dafa4959aee24d893b7a69824c218.image" ]
+
+[params]
+
diff --git a/wfc/samples/Trick Knot.png b/wfc/samples/Trick Knot.png
new file mode 100644
index 0000000..eb9c6e6
Binary files /dev/null and b/wfc/samples/Trick Knot.png differ
diff --git a/wfc/samples/Trick Knot.png.import b/wfc/samples/Trick Knot.png.import
new file mode 100644
index 0000000..3a9fecb
--- /dev/null
+++ b/wfc/samples/Trick Knot.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Trick Knot.png-e6259943b1b28b3e10bf7b2ee4555415.image"
+
+[deps]
+
+source_file="res://samples/Trick Knot.png"
+dest_files=[ "res://.import/Trick Knot.png-e6259943b1b28b3e10bf7b2ee4555415.image" ]
+
+[params]
+
diff --git a/wfc/samples/Village.png b/wfc/samples/Village.png
new file mode 100644
index 0000000..b0389c0
Binary files /dev/null and b/wfc/samples/Village.png differ
diff --git a/wfc/samples/Village.png.import b/wfc/samples/Village.png.import
new file mode 100644
index 0000000..cf29301
--- /dev/null
+++ b/wfc/samples/Village.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Village.png-462c61d73f2368e65a9f069127b877ec.image"
+
+[deps]
+
+source_file="res://samples/Village.png"
+dest_files=[ "res://.import/Village.png-462c61d73f2368e65a9f069127b877ec.image" ]
+
+[params]
+
diff --git a/wfc/samples/Water.png b/wfc/samples/Water.png
new file mode 100644
index 0000000..9af51fc
Binary files /dev/null and b/wfc/samples/Water.png differ
diff --git a/wfc/samples/Water.png.import b/wfc/samples/Water.png.import
new file mode 100644
index 0000000..c8c82a7
--- /dev/null
+++ b/wfc/samples/Water.png.import
@@ -0,0 +1,13 @@
+[remap]
+
+importer="image"
+type="Image"
+path="res://.import/Water.png-8907d9901aa5f1eb97a232572741a3b8.image"
+
+[deps]
+
+source_file="res://samples/Water.png"
+dest_files=[ "res://.import/Water.png-8907d9901aa5f1eb97a232572741a3b8.image" ]
+
+[params]
+
diff --git a/wfc/samples/samples.xml b/wfc/samples/samples.xml
new file mode 100644
index 0000000..c280657
--- /dev/null
+++ b/wfc/samples/samples.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+