Skip to content

Commit

Permalink
Fix Node inheritance fiasco (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexeyBond committed Aug 17, 2024
1 parent dc5d56e commit bfa0797
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 20 deletions.
35 changes: 16 additions & 19 deletions addons/wfc/examples/demo_wfc_2d_tilemaplayer_multilayer.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=4 uid="uid://c183b4u6je7mj"]
[gd_scene load_steps=9 format=4 uid="uid://c183b4u6je7mj"]

[ext_resource type="TileSet" uid="uid://f5ab14o2k2wy" path="res://addons/wfc/examples/assets/kenney-tiny-dungeon/tile-set-main.tres" id="1_wligw"]
[ext_resource type="Script" path="res://addons/wfc/problems/2d/mappers/mapper_2d_factory.gd" id="2_nbdfy"]
Expand All @@ -17,18 +17,25 @@ func _ready() -> void:
$WFC2DGenerator.start()
"

[sub_resource type="Resource" id="Resource_xa0lu"]
script = ExtResource("2_nbdfy")

[sub_resource type="Resource" id="Resource_0p24s"]
[sub_resource type="Resource" id="Resource_7ap8n"]
script = ExtResource("2_nbdfy")

[node name="DemoWfc2dTilemaplayerMultilayer" type="Node2D"]
script = SubResource("GDScript_fodhb")

[node name="sample" type="Node2D" parent="."]
[node name="WFC2DGenerator" type="Node" parent="."]
script = ExtResource("4_xxxg8")
target = NodePath("../target")
rect = Rect2i(0, 0, 121, 68)
positive_sample = NodePath("../sample")
render_intermediate_results = true

[node name="progressIndicator" parent="." node_paths=PackedStringArray("generator") instance=ExtResource("5_5glsc")]
generator = NodePath("../WFC2DGenerator")

[node name="sample" type="Node" parent="."]
script = ExtResource("3_orkfj")
mapper_factory = SubResource("Resource_xa0lu")
mapper_factory = SubResource("Resource_7ap8n")

[node name="main" type="TileMapLayer" parent="sample"]
tile_map_data = PackedByteArray("AAAAAAAAAAAAAAQAAAABAAAAAAAAAAQAAAACAAAAAAAAAAQAAAADAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAFAAAAAAAAAAQAAAAGAAAAAAAAAAQAAAAHAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAAJAAAAAAAAAAQAAAAKAAAAAAAAAAQAAAALAAAAAAAAAAQAAAAMAAAAAAAAAAQAAAANAAAAAAAAAAQAAAAOAAAAAAAAAAQAAAAPAAAAAAAAAAQAAAAAAAEAAAAAAAQAAAAAAAIAAAAAAAQAAAAAAAMAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAUAAAAAAAQAAAAAAAYAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAkAAAAAAAQAAAAAAAoAAAAAAAQAAAAAAAsAAAAAAAQAAAABAAEAAAAEAAAAAAABAAcAAAAEAAEAAAAPAAcAAAAFAAEAAAAPAAEAAAAFAAAAAAAPAAIAAAABAAEAAAAPAAMAAAABAAEAAAAPAAQAAAABAAEAAAAPAAUAAAABAAEAAAAPAAYAAAABAAEAAAABAAIAAAADAAEAAAABAAMAAAADAAEAAAABAAQAAAADAAEAAAABAAUAAAADAAEAAAABAAYAAAADAAEAAAACAAcAAAACAAAAAAADAAcAAAACAAAAAAAEAAcAAAACAAAAAAAFAAcAAAACAAAAAAAGAAcAAAACAAAAAAAHAAcAAAACAAAAAAAIAAcAAAAGAAAAAAAJAAcAAAACAAAAAAAKAAcAAAACAAAAAAALAAcAAAACAAAAAAAMAAcAAAACAAAAAAANAAcAAAACAAAAAAAOAAcAAAACAAAAAAACAAEAAAACAAIAAAADAAEAAAACAAIAAAAEAAEAAAACAAIAAAAFAAEAAAACAAIAAAAGAAEAAAACAAIAAAAHAAEAAAACAAIAAAAIAAEAAAACAAIAAAAJAAEAAAACAAIAAAAKAAEAAAACAAIAAAALAAEAAAACAAIAAAAMAAEAAAACAAIAAAANAAEAAAACAAIAAAAOAAEAAAACAAIAAAAEAAMAAAABAAAAAAAFAAMAAAACAAAAAAAGAAMAAAACAAAAAAAHAAMAAAADAAAAAAAEAAQAAAABAAEAAAAHAAQAAAADAAEAAAAFAAQAAAACAAEAAAAGAAQAAAACAAEAAAACAAgAAAACAAEAAAADAAgAAAAEAAMAAAAEAAgAAAAEAAIAAAAGAAgAAAAFAAIAAAAIAAgAAAAGAAEAAAAIAAkAAAAGAAIAAAAKAAgAAAAHAAAAAAAKAAkAAAAHAAMAAAAMAAgAAAAIAAEAAAAMAAkAAAAIAAIAAAACAAkAAAADAAQAAAAEAAkAAAADAAQAAAADAAkAAAACAAQAAAAFAAkAAAACAAQAAAAGAAkAAAACAAQAAAAHAAkAAAACAAQAAAABAAkAAAACAAQAAAAJAAkAAAACAAQAAAALAAkAAAACAAQAAAANAAkAAAACAAQAAAAOAAkAAAAIAAMAAAAPAAkAAAACAAQAAAAPAAgAAAALAAQAAAABAAgAAAAJAAQAAAAFAAgAAAAEAAMAAAAHAAgAAAAEAAMAAAAJAAgAAAAEAAMAAAALAAgAAAAEAAMAAAANAAgAAAAEAAMAAAAOAAgAAAAIAAAAAAACAAYAAAAAAAAAAAACAAUAAAAAAAAAAAACAAQAAAAAAAAAAAACAAMAAAAAAAAAAAACAAIAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAAEAAYAAAABAAIAAAAFAAYAAAACAAIAAAAGAAYAAAACAAIAAAAHAAYAAAADAAIAAAAIAAYAAAAAAAAAAAAJAAYAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAIAAAAAAAAAAAAHAAIAAAAAAAAAAAAGAAIAAAAAAAAAAAAFAAIAAAAAAAAAAAAEAAIAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAUAAAAAAAIAAAALAAQAAAAAAAEAAAAJAAQAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAALAAYAAAAAAAAAAAALAAUAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAANAAYAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAUAAAAAAAAAAAANAAUAAAAAAAAAAAANAAQAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAMAAAAAAAAAAAANAAMAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAIAAAAAAAAAAAANAAIAAAAAAAAAAAAMAAIAAAAAAAAAAAALAAIAAAAAAAAAAAALAAMAAAAAAAAAAAAKAAMAAAAAAAAAAAAJAAMAAAAAAAAAAAAKAAIAAAAAAAAAAAAQAAAAAAAAAAQAAAAQAAEAAAAAAAQAAAAQAAIAAAAAAAQAAAAQAAMAAAAAAAQAAAAQAAQAAAAAAAQAAAAQAAUAAAAAAAQAAAAQAAYAAAAAAAQAAAAQAAcAAAAAAAQAAAAQAAgAAAAAAAQAAAAQAAkAAAAAAAQAAAAQAAoAAAAAAAQAAAAQAAsAAAAAAAQAAAAQAAwAAAAAAAQAAAAQAA0AAAAAAAQAAAAPAA0AAAAAAAQAAAAOAA0AAAAAAAQAAAANAA0AAAAAAAQAAAAMAA0AAAAAAAQAAAALAA0AAAAAAAQAAAAKAA0AAAAAAAQAAAAJAA0AAAAAAAQAAAAIAA0AAAAAAAQAAAAHAA0AAAAAAAQAAAAGAA0AAAAAAAQAAAAFAA0AAAAAAAQAAAAEAA0AAAAAAAQAAAADAA0AAAAAAAQAAAACAA0AAAAAAAQAAAABAA0AAAAAAAQAAAAAAA0AAAAAAAQAAAAAAAwAAAAAAAQAAAABAAwAAAABAAQAAAACAAwAAAAAAAQAAAADAAwAAAAFAAMAAAAEAAwAAAAAAAQAAAAFAAwAAAAAAAQAAAAGAAwAAAAAAAQAAAAHAAwAAAAAAAQAAAAIAAwAAAAAAAQAAAAJAAwAAAAAAAQAAAAKAAwAAAAAAAQAAAALAAwAAAAAAAQAAAAMAAwAAAAAAAQAAAANAAwAAAAAAAQAAAAOAAwAAAAAAAQAAAAPAAwAAAAAAAQAAAAPAAsAAAAAAAQAAAAOAAsAAAAAAAQAAAANAAsAAAAAAAQAAAAMAAsAAAAAAAQAAAALAAoAAAAAAAQAAAAKAAoAAAAAAAQAAAAJAAoAAAAAAAQAAAAIAAoAAAAAAAQAAAAHAAoAAAAAAAQAAAAGAAoAAAAAAAQAAAAFAAoAAAAAAAQAAAAEAAoAAAAAAAQAAAADAAoAAAAAAAQAAAACAAoAAAAAAAQAAAABAAoAAAAAAAQAAAABAAsAAAAAAAQAAAACAAsAAAABAAQAAAADAAsAAAAAAAQAAAAEAAsAAAAGAAMAAAAFAAsAAAAAAAQAAAAGAAsAAAAAAAQAAAAHAAsAAAAAAAQAAAAIAAsAAAAAAAQAAAAJAAsAAAAAAAQAAAAKAAsAAAAAAAQAAAALAAsAAAAAAAQAAAAMAAoAAAAAAAQAAAANAAoAAAAAAAQAAAAOAAoAAAAAAAQAAAAPAAoAAAAAAAQAAAAQAA4AAAAAAAQAAAAQAA8AAAAAAAQAAAAQABAAAAAAAAQAAAAQABEAAAAAAAQAAAAQABIAAAAAAAQAAAAPABIAAAAAAAQAAAAOABIAAAAAAAQAAAANABIAAAAAAAQAAAAMABIAAAAAAAQAAAALABIAAAAAAAQAAAAKABIAAAAAAAQAAAAJABIAAAAAAAQAAAAIABIAAAAAAAQAAAAIABEAAAAAAAQAAAAIABAAAAAAAAQAAAAIAA8AAAAAAAQAAAAIAA4AAAAAAAQAAAAJAA4AAAAAAAQAAAAKAA4AAAAAAAQAAAALAA4AAAAAAAQAAAAMAA4AAAAAAAQAAAANAA4AAAAAAAQAAAAOAA4AAAAAAAQAAAAPAA4AAAAAAAQAAAAPAA8AAAAAAAQAAAAPABAAAAAAAAQAAAAPABEAAAAAAAQAAAAOABEAAAAAAAQAAAANABEAAAAAAAQAAAAMABEAAAAAAAQAAAALABEAAAAAAAQAAAAKABEAAAAAAAQAAAAJABEAAAAAAAQAAAAJABAAAAAAAAQAAAAJAA8AAAAAAAQAAAAKAA8AAAAAAAQAAAALAA8AAAAAAAQAAAAMAA8AAAAAAAQAAAANAA8AAAAAAAQAAAANABAAAAAAAAQAAAAOABAAAAAAAAQAAAAOAA8AAAAAAAQAAAAMABAAAAAAAAQAAAALABAAAAAAAAQAAAAKABAAAAAAAAQAAAAFAAUAAAACAAQAAAAGAAUAAAACAAQAAAAHAAUAAAADAAEAAAAEAAUAAAABAAEAAAA=")
Expand All @@ -38,22 +45,12 @@ tile_set = ExtResource("1_wligw")
tile_map_data = PackedByteArray("AAAGAAoAAAAFAAUAAAADAAoAAAACAAYAAAAFAAwAAAABAAYAAAABAAoAAAAFAAcAAAAJAAsAAAAHAAUAAAAJAAwAAAAJAAYAAAAJAA0AAAAIAAUAAAAMAAsAAAAHAAYAAAANAAsAAAAKAAUAAAAOAAsAAAAIAAYAAAAMAA0AAAAJAAUAAAAMAA4AAAAJAAYAAAAMAA8AAAAJAAYAAAAMABAAAAAJAAcAAAANABAAAAAKAAUAAAAOABAAAAAKAAUAAAAPABAAAAALAAcAAAAPAA8AAAAJAAYAAAAPAA4AAAAJAAYAAAAPAA0AAAALAAUAAAANAA0AAAAKAAUAAAAOAA0AAAAKAAUAAAAJAA8AAAAKAAYAAAAJABEAAAAGAAUAAAAJAAMAAAACAAYAAAA=")
tile_set = ExtResource("2_so28k")

[node name="target" type="Node2D" parent="."]
[node name="target" type="Node" parent="."]
script = ExtResource("3_orkfj")
mapper_factory = SubResource("Resource_0p24s")
mapper_factory = SubResource("Resource_7ap8n")

[node name="main" type="TileMapLayer" parent="target"]
tile_set = ExtResource("1_wligw")

[node name="decorations" type="TileMapLayer" parent="target"]
tile_set = ExtResource("2_so28k")

[node name="WFC2DGenerator" type="Node" parent="."]
script = ExtResource("4_xxxg8")
target = NodePath("../target")
rect = Rect2i(0, 0, 121, 68)
positive_sample = NodePath("../sample")
render_intermediate_results = true

[node name="progressIndicator" parent="." node_paths=PackedStringArray("generator") instance=ExtResource("5_5glsc")]
generator = NodePath("../WFC2DGenerator")
15 changes: 15 additions & 0 deletions addons/wfc/nodes/layered_map_2d.gd
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,18 @@ func get_layers() -> Array[Node]:

func create_layer_mapper(layer: Node) -> WFCMapper2D:
return mapper_factory.create_mapper_for(layer)

# show()/hide() are useful to hide sample maps (at least in demos).
# But they are not available on Node's, only on Node2D and Node3D.
# We don't want WFC2DLayeredMap to be Node2D or Node3D, instead it should work with both,
# so, here are implementations that forward calls to children:

func show():
for layer in get_layers():
if layer.has_method('show'):
layer.show()

func hide():
for layer in get_layers():
if layer.has_method('hide'):
layer.hide()
2 changes: 1 addition & 1 deletion addons/wfc/problems/2d/mappers/mapper_2d_factory.gd
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func create_mapper_for(node: Node) -> WFCMapper2D:
return WFCGridMapMapper2D.new()
"TileMapLayer":
return WFCTilemapLayerMapper2D.new()
"Node2D":
"Node":
if node is WFC2DLayeredMap:
return WFCLayeredMapMapper2D.new()
else:
Expand Down

0 comments on commit bfa0797

Please sign in to comment.