Cellular automata implementation

This commit is contained in:
2024-10-21 19:54:07 +03:00
parent 997b66b7f9
commit 7bac24d34e
14 changed files with 8414 additions and 76 deletions

506
godot/astream/automata.conf Normal file
View File

@@ -0,0 +1,506 @@
[automata]
automata = {
"walls" : [
; corners
;corner
{
"match": [ ["empty", -1], ["empty", -1], ["empty", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1] ],
"cell": ["corner", 3, 0, 1, 2]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["normal_floor", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["normal_floor", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
; corner depends on corner
{
"match": [
["empty", -1], ["corner", 3], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["normal_floor", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["corner", 0]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["empty", -1], ["corner", 3], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["normal_floor", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["corner", 0, 1, 2, 3]
},
; internal corner
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
; internal corner depends on corner_internal
{
"match": [
["normal_floor", -1], ["corner_internal", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["corner_internal", 0], ["normal_floor", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
; internal corner depends on corner
{
"match": [
["corner_internal", 0], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["corner", 1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["corner", 1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["corner_internal", 0]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["corner", 1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["corner", 3], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["normal_floor", -1], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["corner", 0], ["normal_floor", -1]
],
"cell": ["corner_internal", 0, 1, 2, 3]
},
; walls
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 1],
["normal_floor", -1], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["side_wall", 0], ["normal_floor", -1], ["side_wall", 0],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 1],
["corner_internal", 1], ["normal_floor", -1], ["corner", 1],
["corner", 1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["corner_internal", 0], ["normal_floor", -1], ["side_wall", 1],
["corner", 0], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["corner_internal", 2], ["corner", 2],
["normal_floor", -1], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 2],
["corner_internal", 1], ["normal_floor", -1], ["side_wall", 0],
["normal_floor", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner_internal", 1], ["normal_floor", -1], ["corner_internal", 0],
["corner", 1], ["empty", -1], ["corner", 0]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["corner", 3], ["corner_internal", 3], ["normal_floor", -1],
["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["corner_internal", 3], ["normal_floor", -1], ["normal_floor", -1],
["side_wall", 0], ["normal_floor", -1], ["corner_internal", 0],
["empty", -1], ["empty", -1], ["side_wall", 3]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["corner_internal", 3], ["normal_floor", -1], ["corner_internal", 1],
["side_wall", 0], ["normal_floor", -1], ["corner", 1],
["empty", -1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 0],
["empty", -1], ["empty", -1], ["corner", 0]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
{
"match": [
["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
["corner_internal", 1], ["normal_floor", -1], ["side_wall", 0],
["corner", 1], ["empty", -1], ["empty", -1]
],
"cell": ["side_wall", 0, 1, 2, 3]
},
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["corner", 1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["normal_floor", -1], ["normal_floor", -1], ["corner", 1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["side_wall", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["side_wall", 3], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["side_wall", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["side_wall", 1],
; ["side_wall", 0], ["normal_floor", -1], ["corner", 1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["side_wall", 1],
; ["normal_floor", -1], ["normal_floor", -1], ["corner", 1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["side_wall", 0], ["normal_floor", -1], ["side_wall", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["side_wall", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["normal_floor", -1], ["normal_floor", -1], ["side_wall", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["side_wall", 3], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["side_wall", 0], ["normal_floor", -1], ["corner_internal", -1],
; ["empty", -1], ["empty", -1], ["side_wall", 3]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner_internal", -1], ["normal_floor", -1], ["side_wall", 0],
; ["side_wall", 1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["corner_internal", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["corner_internal", 0],
; ["empty", -1], ["empty", -1], ["side_wall", 3]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["corner_internal", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["corner_internal", 0],
; ["empty", -1], ["empty", -1], ["normal_floor", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner_internal", 1], ["normal_floor", -1], ["side_wall", 0],
; ["normal_floor", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["corner_internal", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", -1], ["normal_floor", -1], ["corner_internal", -1],
; ["empty", -1], ["empty", -1], ["side_wall", 3]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["corner", 0], ["corner", 1]
; ],
; "cell": ["side_wall", 3, 0, 1, 2]
; },
; {
; "match": [
; ["corner_internal", 2], ["normal_floor", -1], ["normal_floor", -1],
; ["corner_internal", 1], ["normal_floor", -1], ["side_wall", 0],
; ["side_wall", 1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["side_wall", 2], ["side_wall", 2], ["corner_internal", 3],
; ["normal_floor", -1], ["normal_floor", -1], ["corner_internal", 0],
; ["empty", -1], ["empty", -1], ["side_wall", 3]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["corner", 3], ["side_wall", 2], ["side_wall", 2],
; ["corner", 0], ["normal_floor", -1], ["side_wall", 0],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["corner", 2],
; ["corner_internal", 1], ["normal_floor", -1], ["corner", 1],
; ["corner", 1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["corner", 3], ["side_wall", 2], ["corner_internal", 3],
; ["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["side_wall", 2], ["corner_internal", 3], ["normal_floor", -1],
; ["side_wall", 0], ["normal_floor", -1], ["corner_internal", 0],
; ["empty", -1], ["empty", -1], ["side_wall", 3]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["normal_floor", -1],
; ["corner_internal", 1], ["normal_floor", -1], ["corner", 1],
; ["corner", 1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["side_wall", 3], ["normal_floor", -1], ["normal_floor", -1],
; ["corner", 0], ["normal_floor", -1], ["normal_floor", -1],
; ["empty", -1], ["empty", -1], ["normal_floor", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
; {
; "match": [
; ["normal_floor", -1], ["normal_floor", -1], ["corner", 2],
; ["corner_internal", 1], ["normal_floor", -1], ["corner", 1],
; ["side_wall", 1], ["empty", -1], ["empty", -1]
; ],
; "cell": ["side_wall", 0, 1, 2, 3]
; },
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,7 @@ nodes/storage=0
nodes/use_legacy_names=false
materials/location=1
materials/storage=1
materials/keep_on_reimport=true
materials/keep_on_reimport=false
meshes/compress=4286
meshes/ensure_tangents=true
meshes/octahedral_compression=true

Binary file not shown.

View File

@@ -65,6 +65,14 @@ focus_mode = 2
text = "Interior"
switch_on_hover = true
[node name="Automata" type="MenuButton" parent="menu_panel"]
margin_left = 237.0
margin_right = 311.0
margin_bottom = 20.0
focus_mode = 2
text = "Automata"
switch_on_hover = true
[node name="bg_floor" type="Spatial" parent="."]
unique_name_in_owner = true
@@ -339,13 +347,13 @@ columns = 2
unique_name_in_owner = true
margin_top = 771.0
margin_right = 314.0
margin_bottom = 1107.0
margin_bottom = 1135.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/layout_editor"]
margin_left = 7.0
margin_top = 7.0
margin_right = 307.0
margin_bottom = 329.0
margin_bottom = 357.0
[node name="GridContainer" type="GridContainer" parent="VBoxContainer/layout_editor/VBoxContainer"]
margin_right = 300.0
@@ -505,11 +513,49 @@ margin_top = 274.0
margin_right = 300.0
margin_bottom = 298.0
[node name="layout_selector" type="OptionButton" parent="VBoxContainer/layout_editor/VBoxContainer"]
unique_name_in_owner = true
[node name="g" type="GridContainer" parent="VBoxContainer/layout_editor/VBoxContainer"]
margin_top = 302.0
margin_right = 300.0
margin_bottom = 322.0
margin_bottom = 350.0
columns = 2
[node name="Label2" type="Label" parent="VBoxContainer/layout_editor/VBoxContainer/g"]
margin_top = 3.0
margin_right = 82.0
margin_bottom = 17.0
text = "Select layout"
[node name="layout_selector" type="OptionButton" parent="VBoxContainer/layout_editor/VBoxContainer/g"]
unique_name_in_owner = true
margin_left = 86.0
margin_right = 300.0
margin_bottom = 20.0
size_flags_horizontal = 3
[node name="Label" type="Label" parent="VBoxContainer/layout_editor/VBoxContainer/g"]
margin_top = 29.0
margin_right = 82.0
margin_bottom = 43.0
text = "New layout"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/layout_editor/VBoxContainer/g"]
margin_left = 86.0
margin_top = 24.0
margin_right = 300.0
margin_bottom = 48.0
[node name="layout_create_new" type="LineEdit" parent="VBoxContainer/layout_editor/VBoxContainer/g/HBoxContainer"]
unique_name_in_owner = true
margin_right = 157.0
margin_bottom = 24.0
size_flags_horizontal = 3
[node name="layout_create_new_button" type="Button" parent="VBoxContainer/layout_editor/VBoxContainer/g/HBoxContainer"]
unique_name_in_owner = true
margin_left = 161.0
margin_right = 214.0
margin_bottom = 24.0
text = "Create"
[node name="BuildingLayoutEditor" type="BuildingLayoutEditor" parent="."]
source = ExtResource( 2 )

File diff suppressed because one or more lines are too long