Move files and folders to new repo format to enable multi-project format
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://cq6rrn2gpph6y"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_i6opq"]
|
||||
[ext_resource type="Texture2D" uid="uid://i7rtr0ewxm5j" path="res://addons/SimpleDungeons/sample_assets/blue-checkerboard-cc0.png" id="2_6nsgb"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b5q7u"]
|
||||
albedo_texture = ExtResource("2_6nsgb")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_3qcmr"]
|
||||
script/source = "@tool
|
||||
extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="BlueRoom" type="Node3D"]
|
||||
script = ExtResource("1_i6opq")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.68248e-07, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_b5q7u")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9.5, 9.5)
|
||||
|
||||
[node name="DOOR?_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_3qcmr")
|
||||
|
||||
[node name="PlayerSpawnPoint" type="Node3D" parent="." groups=["player_spawn_point"]]
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_dungeon_done_generating"]
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b2t06bycrtldn"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_qqrlr"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqvyc0ok7chld" path="res://addons/SimpleDungeons/sample_assets/kenney-grey-checkerboard-cc0.png" id="2_jdiqu"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oj2cm"]
|
||||
albedo_texture = ExtResource("2_jdiqu")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_ldqn2"]
|
||||
script/source = "@tool
|
||||
extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="Corridor" type="Node3D"]
|
||||
script = ExtResource("1_qqrlr")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.68248e-07, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_oj2cm")
|
||||
use_collision = true
|
||||
size = Vector3(4, 4, 4)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(3.8, 3.8, 3.8)
|
||||
|
||||
[node name="DOOR?_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.05713e-07, -0.0762184, -1.75306)
|
||||
operation = 2
|
||||
size = Vector3(3.5, 3.65234, 0.5)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 1.75067, -0.0769043, -2.17967e-08)
|
||||
operation = 2
|
||||
size = Vector3(3.5, 3.65381, 0.5)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.50397, -0.0749512, -0.0690359)
|
||||
operation = 2
|
||||
size = Vector3(3.5, 3.6499, 1)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05912e-07, -0.0749512, 1.50077)
|
||||
operation = 2
|
||||
size = Vector3(3.5, 3.6499, 1)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_ldqn2")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_dungeon_done_generating"]
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
@tool
|
||||
extends DungeonGenerator3D
|
||||
|
||||
func _ready():
|
||||
self.custom_get_rooms_function = custom_get_rand_rooms
|
||||
super._ready()
|
||||
|
||||
func _process(delta):
|
||||
super._process(delta)
|
||||
|
||||
func custom_get_rand_rooms(room_instances : Array[DungeonRoom3D], rng_seeded : RandomNumberGenerator) -> Array[DungeonRoom3D]:
|
||||
var num_blue_rooms : int = 30
|
||||
var num_red_rooms : int = 30
|
||||
var blue_room = room_instances.filter(func(r): return r.name == "BlueRoom")[0]
|
||||
var red_room = room_instances.filter(func(r): return r.name == "RedRoom")[0]
|
||||
var rooms : Array[DungeonRoom3D] = []
|
||||
while num_red_rooms > 0:
|
||||
var inst = red_room.create_clone_and_make_virtual_unless_visualizing()
|
||||
rooms.push_back(inst)
|
||||
# Set room_rotations before set_position_by_grid_pos as it is set by AABB positon. May change when rotated.
|
||||
inst.room_rotations = rng_seeded.randi()
|
||||
inst.set_position_by_grid_pos(
|
||||
Vector3i(
|
||||
(rng_seeded.randi() % dungeon_size.x) / 2,
|
||||
rng_seeded.randi() % dungeon_size.y,
|
||||
rng_seeded.randi() % dungeon_size.z))
|
||||
num_red_rooms -= 1
|
||||
while num_blue_rooms > 0:
|
||||
var inst = blue_room.create_clone_and_make_virtual_unless_visualizing()
|
||||
rooms.push_back(inst)
|
||||
# Set room_rotations before set_position_by_grid_pos as it is set by AABB positon. May change when rotated.
|
||||
inst.room_rotations = rng_seeded.randi()
|
||||
inst.set_position_by_grid_pos(
|
||||
Vector3i(
|
||||
(rng_seeded.randi() % dungeon_size.x) / 2 + dungeon_size.x / 2,
|
||||
rng_seeded.randi() % dungeon_size.y,
|
||||
rng_seeded.randi() % dungeon_size.z))
|
||||
num_blue_rooms -= 1
|
||||
return rooms
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://ca1nnuryj2oih
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://d1k8jtivamexj"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/sample_dungeons/custom_random_room_function_example/dungeon_generator_3d_custom.gd" id="1_smyj4"]
|
||||
[ext_resource type="PackedScene" uid="uid://cq6rrn2gpph6y" path="res://addons/SimpleDungeons/sample_dungeons/custom_random_room_function_example/blue_room.tscn" id="2_rfqbn"]
|
||||
[ext_resource type="PackedScene" uid="uid://dh2i3dk3g0icv" path="res://addons/SimpleDungeons/sample_dungeons/custom_random_room_function_example/red_room.tscn" id="3_hfdry"]
|
||||
[ext_resource type="PackedScene" uid="uid://br3pjd5mcjj11" path="res://addons/SimpleDungeons/sample_dungeons/custom_random_room_function_example/stairs.tscn" id="4_2jnyt"]
|
||||
[ext_resource type="PackedScene" uid="uid://b2t06bycrtldn" path="res://addons/SimpleDungeons/sample_dungeons/custom_random_room_function_example/corridor.tscn" id="5_5efio"]
|
||||
|
||||
[node name="DungeonGenerator3dInheritedClass" type="Node3D"]
|
||||
script = ExtResource("1_smyj4")
|
||||
room_scenes = Array[PackedScene]([ExtResource("2_rfqbn"), ExtResource("3_hfdry"), ExtResource("4_2jnyt")])
|
||||
corridor_room_scene = ExtResource("5_5efio")
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dh2i3dk3g0icv"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_ruwq1"]
|
||||
[ext_resource type="Texture2D" uid="uid://dydd6x64uxryr" path="res://addons/SimpleDungeons/sample_assets/kenney-red-checkerboard-cc0.png" id="2_270m7"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yl5wx"]
|
||||
albedo_texture = ExtResource("2_270m7")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_mnevw"]
|
||||
script/source = "@tool
|
||||
extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="RedRoom" type="Node3D"]
|
||||
script = ExtResource("1_ruwq1")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.68248e-07, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_yl5wx")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9.5, 9.5)
|
||||
|
||||
[node name="DOOR?_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_mnevw")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_dungeon_done_generating"]
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://br3pjd5mcjj11"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_pixse"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqvyc0ok7chld" path="res://addons/SimpleDungeons/sample_assets/kenney-grey-checkerboard-cc0.png" id="2_bdw51"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="3_dobr2"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6cnww"]
|
||||
albedo_texture = ExtResource("2_bdw51")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="Stairs" type="Node3D"]
|
||||
script = ExtResource("1_pixse")
|
||||
size_in_voxels = Vector3i(2, 2, 1)
|
||||
max_count = 20
|
||||
is_stair_room = true
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_6cnww")
|
||||
use_collision = true
|
||||
size = Vector3(20, 20, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(19.5, 19.5, 9.5)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.8, -7.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.9, 2.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="." instance=ExtResource("3_dobr2")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75, -4.75, 0)
|
||||
use_collision = true
|
||||
size = Vector3(14, 10, 9.5)
|
||||
num_stairs = 32
|
||||
+644
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
||||
@tool
|
||||
extends DungeonRoom3D
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
super._ready()
|
||||
dungeon_done_generating.connect(remove_unused_doors_and_walls)
|
||||
|
||||
func remove_unused_doors_and_walls():
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/F_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/B_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/R_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/L_WALL/torch_001.queue_free()
|
||||
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_F_CUT").get_room_leads_to() != null: $Models/F_WALL.queue_free()
|
||||
else: $Models/F_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_R_CUT").get_room_leads_to() != null: $Models/R_WALL.queue_free()
|
||||
else: $Models/R_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_B_CUT").get_room_leads_to() != null: $Models/B_WALL.queue_free()
|
||||
else: $Models/B_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_L_CUT").get_room_leads_to() != null: $Models/L_WALL.queue_free()
|
||||
else: $Models/L_WALL.visible = true
|
||||
for door in get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://cjmajhtwm553l
|
||||
+440
File diff suppressed because one or more lines are too long
+611
File diff suppressed because one or more lines are too long
+23
@@ -0,0 +1,23 @@
|
||||
@tool
|
||||
extends DungeonRoom3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
super._ready()
|
||||
dungeon_done_generating.connect(remove_unused_doors_and_walls)
|
||||
|
||||
func remove_unused_doors_and_walls():
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_B_CUT").get_room_leads_to() == null: $Models/B_DOOR.queue_free(); $Models/B_WALL.visible = true
|
||||
else: $Models/B_WALL.queue_free(); $Models/B_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_RB_CUT").get_room_leads_to() == null: $Models/RB_DOOR.queue_free(); $Models/RB_WALL.visible = true
|
||||
else: $Models/RB_WALL.queue_free(); $Models/RB_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_RF_CUT").get_room_leads_to() == null: $Models/RF_DOOR.queue_free(); $Models/RF_WALL.visible = true
|
||||
else: $Models/RF_WALL.queue_free(); $Models/RF_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_LB_CUT").get_room_leads_to() == null: $Models/LB_DOOR.queue_free(); $Models/LB_WALL.visible = true
|
||||
else: $Models/LB_WALL.queue_free(); $Models/LB_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_LF_CUT").get_room_leads_to() == null: $Models/LF_DOOR.queue_free(); $Models/LF_WALL.visible = true
|
||||
else: $Models/LF_WALL.queue_free(); $Models/LF_DOOR.visible = true
|
||||
for door in get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://ksx6piep0wgx
|
||||
+1577
File diff suppressed because one or more lines are too long
+642
File diff suppressed because one or more lines are too long
+25
@@ -0,0 +1,25 @@
|
||||
@tool
|
||||
extends DungeonRoom3D
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
super._ready()
|
||||
dungeon_done_generating.connect(remove_unused_doors_and_walls)
|
||||
|
||||
func remove_unused_doors_and_walls():
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/F_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/B_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/R_WALL/torch_001.queue_free()
|
||||
if RandomNumberGenerator.new().randf_range(0,10) > 2.5: $Models/L_WALL/torch_001.queue_free()
|
||||
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_F_CUT").get_room_leads_to() != null: $Models/F_WALL.queue_free()
|
||||
else: $Models/F_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_R_CUT").get_room_leads_to() != null: $Models/R_WALL.queue_free()
|
||||
else: $Models/R_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_B_CUT").get_room_leads_to() != null: $Models/B_WALL.queue_free()
|
||||
else: $Models/B_WALL.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_L_CUT").get_room_leads_to() != null: $Models/L_WALL.queue_free()
|
||||
else: $Models/L_WALL.visible = true
|
||||
for door in get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://ja3yrmm27o0b
|
||||
+440
File diff suppressed because one or more lines are too long
+611
File diff suppressed because one or more lines are too long
+23
@@ -0,0 +1,23 @@
|
||||
@tool
|
||||
extends DungeonRoom3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
super._ready()
|
||||
dungeon_done_generating.connect(remove_unused_doors_and_walls)
|
||||
|
||||
func remove_unused_doors_and_walls():
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_B_CUT").get_room_leads_to() == null: $Models/B_DOOR.queue_free(); $Models/B_WALL.visible = true
|
||||
else: $Models/B_WALL.queue_free(); $Models/B_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_RB_CUT").get_room_leads_to() == null: $Models/RB_DOOR.queue_free(); $Models/RB_WALL.visible = true
|
||||
else: $Models/RB_WALL.queue_free(); $Models/RB_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_RF_CUT").get_room_leads_to() == null: $Models/RF_DOOR.queue_free(); $Models/RF_WALL.visible = true
|
||||
else: $Models/RF_WALL.queue_free(); $Models/RF_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_LB_CUT").get_room_leads_to() == null: $Models/LB_DOOR.queue_free(); $Models/LB_WALL.visible = true
|
||||
else: $Models/LB_WALL.queue_free(); $Models/LB_DOOR.visible = true
|
||||
if get_door_by_node($"CSGBox3D/DOOR?_LF_CUT").get_room_leads_to() == null: $Models/LF_DOOR.queue_free(); $Models/LF_WALL.visible = true
|
||||
else: $Models/LF_WALL.queue_free(); $Models/LF_DOOR.visible = true
|
||||
for door in get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
+1
@@ -0,0 +1 @@
|
||||
uid://bh8yqqe7bp1vu
|
||||
+1575
File diff suppressed because one or more lines are too long
+808
File diff suppressed because one or more lines are too long
+614
File diff suppressed because one or more lines are too long
+583
File diff suppressed because one or more lines are too long
+1323
File diff suppressed because one or more lines are too long
@@ -0,0 +1,35 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
@export var dungeon_generator : DungeonGenerator3D
|
||||
@export var show_delay_ms := 1000
|
||||
|
||||
var done_time
|
||||
var done = false
|
||||
|
||||
func _update_to_dungeon():
|
||||
if not dungeon_generator:
|
||||
return
|
||||
var realsize = Vector3(dungeon_generator.dungeon_size) * dungeon_generator.voxel_scale
|
||||
$HouseWalls/InsideCut.size = realsize
|
||||
$HouseWalls.size = realsize + Vector3(5,5,5)
|
||||
$Roof.mesh.size = realsize + Vector3(10,10,10)
|
||||
$Roof.mesh.size.y = 20
|
||||
$Roof.position.y = realsize.y / 2 + 10 + 2.5
|
||||
if not done_time and dungeon_generator.stage == DungeonGenerator3D.BuildStage.DONE:
|
||||
done_time = Time.get_ticks_msec()
|
||||
if not done and done_time and Time.get_ticks_msec() - done_time > show_delay_ms:
|
||||
done = true
|
||||
var entrance = dungeon_generator.get_node("MansionEntranceRoom")
|
||||
var xform_to_global = dungeon_generator.global_transform * entrance.get_xform_to(DungeonRoom3D.SPACE.LOCAL_GRID, DungeonRoom3D.SPACE.DUNGEON_SPACE)
|
||||
var corner_of_room = xform_to_global * Vector3(0,0,3)
|
||||
$Entrance.position = corner_of_room
|
||||
$Entrance/FrontDoorCut.reparent($HouseWalls)
|
||||
self.visible = done
|
||||
|
||||
|
||||
func _ready():
|
||||
_update_to_dungeon()
|
||||
|
||||
func _process(delta):
|
||||
_update_to_dungeon()
|
||||
@@ -0,0 +1 @@
|
||||
uid://b0i2heukatdsj
|
||||
@@ -0,0 +1,86 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://bv23twweurssv"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/sample_dungeons/mansion/house_exterior.gd" id="1_d4jd8"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="1_wv7fx"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwe02yta75ooa" path="res://addons/SimpleDungeons/sample_assets/kenney-green-checkerboar-cc0.png" id="2_dgnpe"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_0gfbx"]
|
||||
colors = PackedColorArray(0.19, 0.0988, 0.0988, 1, 0.356863, 0.607843, 1, 1)
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_ay5m5"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_ikcx8"]
|
||||
color_ramp = SubResource("Gradient_0gfbx")
|
||||
noise = SubResource("FastNoiseLite_ay5m5")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cjtu7"]
|
||||
albedo_texture = SubResource("NoiseTexture2D_ikcx8")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_ks6gq"]
|
||||
colors = PackedColorArray(0.352941, 0.25098, 0, 1, 0.190162, 0.128887, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_f0vc6"]
|
||||
gradient = SubResource("Gradient_ks6gq")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_570wq"]
|
||||
albedo_texture = SubResource("GradientTexture2D_f0vc6")
|
||||
uv1_triplanar = true
|
||||
uv1_triplanar_sharpness = 0.00158643
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[sub_resource type="PrismMesh" id="PrismMesh_urnwm"]
|
||||
material = SubResource("StandardMaterial3D_570wq")
|
||||
size = Vector3(110, 20, 110)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_42bcn"]
|
||||
albedo_texture = ExtResource("2_dgnpe")
|
||||
|
||||
[node name="HouseExterior" type="Node3D"]
|
||||
script = ExtResource("1_d4jd8")
|
||||
|
||||
[node name="HouseWalls" type="CSGBox3D" parent="."]
|
||||
material_override = SubResource("StandardMaterial3D_cjtu7")
|
||||
use_collision = true
|
||||
size = Vector3(105, 105, 105)
|
||||
|
||||
[node name="InsideCut" type="CSGBox3D" parent="HouseWalls"]
|
||||
operation = 2
|
||||
size = Vector3(100, 100, 100)
|
||||
|
||||
[node name="Roof" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 63, 0)
|
||||
mesh = SubResource("PrismMesh_urnwm")
|
||||
|
||||
[node name="Entrance" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, -30, 50)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="Entrance" instance=ExtResource("1_wv7fx")]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 10, -10, 12.5)
|
||||
use_collision = true
|
||||
size = Vector3(20, 20, 20)
|
||||
num_stairs = 42
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Entrance"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, -20.5, 25)
|
||||
use_collision = true
|
||||
size = Vector3(66, 1, 45)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Entrance"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, -13.5, 9)
|
||||
material_override = SubResource("StandardMaterial3D_42bcn")
|
||||
use_collision = true
|
||||
size = Vector3(5, 14, 5)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Entrance"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.5, -13.5, 9)
|
||||
material_override = SubResource("StandardMaterial3D_42bcn")
|
||||
use_collision = true
|
||||
size = Vector3(5, 14, 5)
|
||||
|
||||
[node name="PlayerSpawnPoint" type="Node3D" parent="Entrance" groups=["player_spawn_point"]]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, -14, 41)
|
||||
|
||||
[node name="FrontDoorCut" type="CSGBox3D" parent="Entrance"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 5, 0)
|
||||
operation = 2
|
||||
size = Vector3(20, 10, 10)
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://b3tl36squaoel"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_1qelf"]
|
||||
[ext_resource type="Texture2D" uid="uid://wvh1xmoax4ok" path="res://addons/SimpleDungeons/sample_assets/kenney-dark-grey-grid-cc0.png" id="7_x4518"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="8_tpxey"]
|
||||
[ext_resource type="Texture2D" uid="uid://dydd6x64uxryr" path="res://addons/SimpleDungeons/sample_assets/kenney-red-checkerboard-cc0.png" id="9_68bqd"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cy7sd"]
|
||||
albedo_texture = ExtResource("7_x4518")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_inmcr"]
|
||||
albedo_color = Color(0.252028, 0.252028, 0.252028, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_geohb"]
|
||||
albedo_color = Color(0.223103, 0.223103, 0.223103, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0fi8r"]
|
||||
albedo_texture = ExtResource("9_68bqd")
|
||||
|
||||
[node name="MansionEntranceRoom" type="Node3D"]
|
||||
script = ExtResource("1_1qelf")
|
||||
size_in_voxels = Vector3i(2, 4, 3)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
material_override = SubResource("StandardMaterial3D_cy7sd")
|
||||
use_collision = true
|
||||
size = Vector3(20, 40, 30)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(19, 39, 29)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.75, 13)
|
||||
operation = 2
|
||||
size = Vector3(19, 29.5, 7)
|
||||
|
||||
[node name="DOOR_R" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.25, -5, -9.95)
|
||||
operation = 2
|
||||
size = Vector3(9.2, 9.2, 2)
|
||||
|
||||
[node name="DOOR_L" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.75, -5, -9.95)
|
||||
operation = 2
|
||||
size = Vector3(9.2, 9.2, 2)
|
||||
|
||||
[node name="DOOR_R2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.25, -5, 10.05)
|
||||
operation = 2
|
||||
size = Vector3(9.2, 9.2, 2)
|
||||
|
||||
[node name="DOOR_L2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.75, -5, 10.05)
|
||||
operation = 2
|
||||
size = Vector3(9.2, 9.2, 2)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="." instance=ExtResource("8_tpxey")]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 8.74228e-08, -14.9, 0)
|
||||
material_override = SubResource("StandardMaterial3D_inmcr")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
num_stairs = 42
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -14.5, -9.75)
|
||||
use_collision = true
|
||||
size = Vector3(19.8, 10, 9.5)
|
||||
material = SubResource("StandardMaterial3D_geohb")
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, -9.95, 5)
|
||||
use_collision = true
|
||||
size = Vector3(4, 0.7, 20)
|
||||
material = SubResource("StandardMaterial3D_geohb")
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, -9.95, 5)
|
||||
use_collision = true
|
||||
size = Vector3(4, 0.7, 20)
|
||||
material = SubResource("StandardMaterial3D_geohb")
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -19.9, 10)
|
||||
size = Vector3(6, 1, 9)
|
||||
material = SubResource("StandardMaterial3D_0fi8r")
|
||||
@@ -0,0 +1,103 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://crr6031qmir35"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_1c8qy"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_omn5o"]
|
||||
|
||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ls0we"]
|
||||
gradient = SubResource("Gradient_omn5o")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1b4dt"]
|
||||
albedo_texture = SubResource("GradientTexture2D_ls0we")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_4tekc"]
|
||||
script/source = "extends Node
|
||||
|
||||
func _ready():
|
||||
$\"..\".connect(\"dungeon_done_generating\", remove_unused_doors)
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
"
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sva35"]
|
||||
albedo_color = Color(1, 0.44, 0.44, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8485v"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1qq54"]
|
||||
albedo_color = Color(0.5, 0.243333, 0.225, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ca5kw"]
|
||||
albedo_color = Color(0.5, 0.243333, 0.225, 1)
|
||||
|
||||
[node name="Bedroom" type="Node3D"]
|
||||
script = ExtResource("1_1c8qy")
|
||||
size_in_voxels = Vector3i(3, 1, 3)
|
||||
min_count = 5
|
||||
max_count = 10
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
use_collision = true
|
||||
size = Vector3(30, 10, 30)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(29, 9, 29)
|
||||
|
||||
[node name="DOOR" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 0, -14.5)
|
||||
operation = 2
|
||||
size = Vector3(10, 9, 2)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.42782, 0)
|
||||
operation = 2
|
||||
size = Vector3(29, 0.2, 29)
|
||||
material = SubResource("StandardMaterial3D_1b4dt")
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_4tekc")
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
|
||||
use_collision = true
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, -3, 0)
|
||||
size = Vector3(8, 1, 8)
|
||||
material = SubResource("StandardMaterial3D_sva35")
|
||||
|
||||
[node name="CSGBox3D9" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, -3, 0)
|
||||
size = Vector3(4, 1, 8)
|
||||
material = SubResource("StandardMaterial3D_8485v")
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.91372, -3.3, 0)
|
||||
size = Vector3(13.1274, 1, 8.3)
|
||||
material = SubResource("StandardMaterial3D_1qq54")
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, -2, 0)
|
||||
size = Vector3(1, 3, 8)
|
||||
material = SubResource("StandardMaterial3D_ca5kw")
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, -4.3, 3.5)
|
||||
material = SubResource("StandardMaterial3D_ca5kw")
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.3, 3.5)
|
||||
material = SubResource("StandardMaterial3D_ca5kw")
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, -4.3, -3.63669)
|
||||
material = SubResource("StandardMaterial3D_ca5kw")
|
||||
|
||||
[node name="CSGBox3D8" type="CSGBox3D" parent="CSGCombiner3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.3, -3.63669)
|
||||
material = SubResource("StandardMaterial3D_ca5kw")
|
||||
@@ -0,0 +1,76 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bn6lta2vs6qh8"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ce73fuh74l81l" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_m0wvh"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8tlf5"]
|
||||
albedo_color = Color(0, 0, 0, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4tt88"]
|
||||
albedo_color = Color(0.176419, 0.176419, 0.176419, 1)
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_nd35r"]
|
||||
offsets = PackedFloat32Array(0.276119, 1)
|
||||
colors = PackedColorArray(0.301961, 0, 0, 1, 0.555762, 0.29171, 0.357937, 1)
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_4grxn"]
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_4g5kp"]
|
||||
color_ramp = SubResource("Gradient_nd35r")
|
||||
noise = SubResource("FastNoiseLite_4grxn")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ovx52"]
|
||||
albedo_texture = SubResource("NoiseTexture2D_4g5kp")
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_nl3oo"]
|
||||
script/source = "extends Node
|
||||
|
||||
func _ready():
|
||||
$\"..\".connect(\"dungeon_done_generating\", remove_unused_doors)
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
"
|
||||
|
||||
[node name="Corridor" type="Node3D"]
|
||||
script = ExtResource("1_m0wvh")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
material = SubResource("StandardMaterial3D_8tlf5")
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9, 9, 9)
|
||||
material = SubResource("StandardMaterial3D_4tt88")
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.52714, 0)
|
||||
operation = 2
|
||||
size = Vector3(9, 0.096, 9)
|
||||
material = SubResource("StandardMaterial3D_ovx52")
|
||||
|
||||
[node name="DOOR?" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -5)
|
||||
operation = 2
|
||||
size = Vector3(9, 9, 3)
|
||||
|
||||
[node name="DOOR?2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5)
|
||||
operation = 2
|
||||
size = Vector3(9, 9, 3)
|
||||
|
||||
[node name="DOOR?3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 4, 0, 0)
|
||||
operation = 2
|
||||
size = Vector3(9, 9, 3)
|
||||
|
||||
[node name="DOOR?4" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4, 0, 0)
|
||||
operation = 2
|
||||
size = Vector3(9, 9, 3)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_nl3oo")
|
||||
+158
@@ -0,0 +1,158 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bnxjj8dpefmfd"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_vbc11"]
|
||||
[ext_resource type="Texture2D" uid="uid://i7rtr0ewxm5j" path="res://addons/SimpleDungeons/sample_assets/blue-checkerboard-cc0.png" id="2_1ufaf"]
|
||||
|
||||
[sub_resource type="Shader" id="Shader_vq8fj"]
|
||||
code = "// NOTE: Shader automatically converted from Godot Engine 4.2.2.stable's StandardMaterial3D.
|
||||
|
||||
shader_type spatial;
|
||||
render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx;
|
||||
uniform vec4 albedo : source_color;
|
||||
uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable;
|
||||
uniform float point_size : hint_range(0,128);
|
||||
uniform float roughness : hint_range(0,1);
|
||||
uniform sampler2D texture_metallic : hint_default_white,filter_linear_mipmap,repeat_enable;
|
||||
uniform vec4 metallic_texture_channel;
|
||||
uniform sampler2D texture_roughness : hint_roughness_r,filter_linear_mipmap,repeat_enable;
|
||||
uniform float specular;
|
||||
uniform float metallic;
|
||||
varying vec3 uv1_triplanar_pos;
|
||||
uniform float uv1_blend_sharpness;
|
||||
varying vec3 uv1_power_normal;
|
||||
uniform vec3 uv1_scale;
|
||||
uniform vec3 uv1_offset;
|
||||
uniform vec3 uv2_scale;
|
||||
uniform vec3 uv2_offset;
|
||||
|
||||
|
||||
void vertex() {
|
||||
vec3 normal = MODEL_NORMAL_MATRIX * NORMAL;
|
||||
TANGENT = vec3(0.0,0.0,-1.0) * abs(normal.x);
|
||||
TANGENT+= vec3(1.0,0.0,0.0) * abs(normal.y);
|
||||
TANGENT+= vec3(1.0,0.0,0.0) * abs(normal.z);
|
||||
TANGENT = inverse(MODEL_NORMAL_MATRIX) * normalize(TANGENT);
|
||||
BINORMAL = vec3(0.0,1.0,0.0) * abs(normal.x);
|
||||
BINORMAL+= vec3(0.0,0.0,-1.0) * abs(normal.y);
|
||||
BINORMAL+= vec3(0.0,1.0,0.0) * abs(normal.z);
|
||||
BINORMAL = inverse(MODEL_NORMAL_MATRIX) * normalize(BINORMAL);
|
||||
uv1_power_normal=pow(abs(normal),vec3(uv1_blend_sharpness));
|
||||
uv1_triplanar_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0f)).xyz * uv1_scale + uv1_offset + TIME * 0.01;
|
||||
uv1_power_normal/=dot(uv1_power_normal,vec3(1.0));
|
||||
uv1_triplanar_pos *= vec3(1.0,-1.0, 1.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
vec4 triplanar_texture(sampler2D p_sampler,vec3 p_weights,vec3 p_triplanar_pos) {
|
||||
vec4 samp=vec4(0.0);
|
||||
samp+= texture(p_sampler,p_triplanar_pos.xy) * p_weights.z;
|
||||
samp+= texture(p_sampler,p_triplanar_pos.xz) * p_weights.y;
|
||||
samp+= texture(p_sampler,p_triplanar_pos.zy * vec2(-1.0,1.0)) * p_weights.x;
|
||||
return samp;
|
||||
}
|
||||
|
||||
|
||||
void fragment() {
|
||||
vec4 albedo_tex = triplanar_texture(texture_albedo,uv1_power_normal,uv1_triplanar_pos);
|
||||
ALBEDO = albedo.rgb * albedo_tex.rgb;
|
||||
float metallic_tex = dot(triplanar_texture(texture_metallic,uv1_power_normal,uv1_triplanar_pos),metallic_texture_channel);
|
||||
METALLIC = metallic_tex * metallic;
|
||||
vec4 roughness_texture_channel = vec4(1.0,0.0,0.0,0.0);
|
||||
float roughness_tex = dot(triplanar_texture(texture_roughness,uv1_power_normal,uv1_triplanar_pos),roughness_texture_channel);
|
||||
ROUGHNESS = roughness_tex * roughness;
|
||||
SPECULAR = specular;
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_fe7vc"]
|
||||
noise_type = 2
|
||||
frequency = 0.0165
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_bispe"]
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_fe7vc")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_g7p6c"]
|
||||
render_priority = 0
|
||||
shader = SubResource("Shader_vq8fj")
|
||||
shader_parameter/albedo = Color(1, 1, 1, 1)
|
||||
shader_parameter/texture_albedo = SubResource("NoiseTexture2D_bispe")
|
||||
shader_parameter/point_size = 1.0
|
||||
shader_parameter/roughness = 1.0
|
||||
shader_parameter/metallic_texture_channel = null
|
||||
shader_parameter/specular = 0.5
|
||||
shader_parameter/metallic = 0.0
|
||||
shader_parameter/uv1_blend_sharpness = 1.0
|
||||
shader_parameter/uv1_scale = Vector3(0.08, 0.08, 0.08)
|
||||
shader_parameter/uv1_offset = Vector3(0, 0, 0)
|
||||
shader_parameter/uv2_scale = Vector3(1, 1, 1)
|
||||
shader_parameter/uv2_offset = Vector3(0, 0, 0)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_07mhj"]
|
||||
albedo_texture = ExtResource("2_1ufaf")
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_17gef"]
|
||||
script/source = "extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_living_room_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="LivingRoom" type="Node3D"]
|
||||
script = ExtResource("1_vbc11")
|
||||
size_in_voxels = Vector3i(3, 1, 2)
|
||||
min_count = 5
|
||||
max_count = 10
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, 0, 0)
|
||||
material_override = SubResource("ShaderMaterial_g7p6c")
|
||||
use_collision = true
|
||||
size = Vector3(30, 10, 20)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(29.5, 9.5, 19.5)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 9.75)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R2_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R1_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L2_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L1_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, -4.825, 0)
|
||||
material_override = SubResource("StandardMaterial3D_07mhj")
|
||||
use_collision = true
|
||||
size = Vector3(8, 0.2, 13)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_17gef")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_living_room_dungeon_done_generating"]
|
||||
@@ -0,0 +1,90 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://najwcu57f6bc"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_ht4j3"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="3_1hkio"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_n7jmt"]
|
||||
colors = PackedColorArray(1, 1, 1, 1, 0.5832, 0.5832, 0.81, 1)
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_xy5n2"]
|
||||
noise_type = 2
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_wo5pc"]
|
||||
color_ramp = SubResource("Gradient_n7jmt")
|
||||
noise = SubResource("FastNoiseLite_xy5n2")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0vchj"]
|
||||
albedo_texture = SubResource("NoiseTexture2D_wo5pc")
|
||||
uv1_scale = Vector3(4.165, 4.165, 4.165)
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_i80ea"]
|
||||
offsets = PackedFloat32Array(0, 0.442623)
|
||||
colors = PackedColorArray(0, 0, 0, 1, 0.52, 0.1872, 0.275947, 1)
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_805tn"]
|
||||
noise_type = 3
|
||||
seed = 16
|
||||
frequency = 0.029
|
||||
fractal_type = 0
|
||||
fractal_octaves = 1
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_wr6uy"]
|
||||
in_3d_space = true
|
||||
generate_mipmaps = false
|
||||
seamless = true
|
||||
color_ramp = SubResource("Gradient_i80ea")
|
||||
noise = SubResource("FastNoiseLite_805tn")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hudx1"]
|
||||
albedo_texture = SubResource("NoiseTexture2D_wr6uy")
|
||||
uv1_scale = Vector3(0.705, 0.705, 0.705)
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i5qk8"]
|
||||
albedo_texture = SubResource("NoiseTexture2D_wr6uy")
|
||||
uv1_scale = Vector3(0.705, 0.705, 0.705)
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="Stair" type="Node3D"]
|
||||
script = ExtResource("1_ht4j3")
|
||||
size_in_voxels = Vector3i(2, 2, 1)
|
||||
min_count = 5
|
||||
max_count = 30
|
||||
is_stair_room = true
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_0vchj")
|
||||
use_collision = true
|
||||
size = Vector3(20, 20, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(19.5, 19.5, 9.5)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.8, -7.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.9, 2.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="." instance=ExtResource("3_1hkio")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75, -4.75, 0)
|
||||
material_override = SubResource("StandardMaterial3D_hudx1")
|
||||
use_collision = true
|
||||
size = Vector3(14, 10, 9.5)
|
||||
num_stairs = 32
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.98486, -9.75, 0)
|
||||
material_override = SubResource("StandardMaterial3D_i5qk8")
|
||||
use_collision = true
|
||||
size = Vector3(5.96973, 0.1, 4.2)
|
||||
@@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bsvhllycm8t4i"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_8cd2g"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwe02yta75ooa" path="res://addons/SimpleDungeons/sample_assets/kenney-green-checkerboar-cc0.png" id="2_ylbpf"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_orb45"]
|
||||
albedo_texture = ExtResource("2_ylbpf")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_8geu6"]
|
||||
script/source = "@tool
|
||||
extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_corridor_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="Corridor" type="Node3D"]
|
||||
script = ExtResource("1_8cd2g")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.68248e-07, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_orb45")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9.5, 9.5)
|
||||
|
||||
[node name="DOOR?_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_8geu6")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_corridor_dungeon_done_generating"]
|
||||
@@ -0,0 +1,93 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://54kdovp1yfl5"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_defih"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwe02yta75ooa" path="res://addons/SimpleDungeons/sample_assets/kenney-green-checkerboar-cc0.png" id="2_lnti6"]
|
||||
[ext_resource type="Texture2D" uid="uid://djhy80eyqjqpv" path="res://addons/SimpleDungeons/sample_assets/kenney-dark-grey-checkboard-cc0.png" id="3_yqsq5"]
|
||||
[ext_resource type="Texture2D" uid="uid://i7rtr0ewxm5j" path="res://addons/SimpleDungeons/sample_assets/blue-checkerboard-cc0.png" id="4_h1rri"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_76ghj"]
|
||||
albedo_texture = ExtResource("2_lnti6")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x7cu1"]
|
||||
albedo_texture = ExtResource("3_yqsq5")
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_17gef"]
|
||||
script/source = "extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_living_room_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ao0hg"]
|
||||
transparency = 1
|
||||
depth_draw_mode = 1
|
||||
albedo_color = Color(1, 1, 1, 0.454902)
|
||||
albedo_texture = ExtResource("4_h1rri")
|
||||
clearcoat_roughness = 1.0
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="GreenRoom" type="Node3D"]
|
||||
script = ExtResource("1_defih")
|
||||
size_in_voxels = Vector3i(3, 1, 2)
|
||||
min_count = 5
|
||||
max_count = 15
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, -4.74656, 0)
|
||||
material_override = SubResource("StandardMaterial3D_76ghj")
|
||||
use_collision = true
|
||||
size = Vector3(30, 0.496826, 20)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, 4.75344, 0)
|
||||
material_override = SubResource("StandardMaterial3D_x7cu1")
|
||||
use_collision = true
|
||||
size = Vector3(30, 0.496826, 20)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_17gef")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_ao0hg")
|
||||
use_collision = true
|
||||
size = Vector3(30, 10, 20)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(29.5, 9.5, 19.5)
|
||||
|
||||
[node name="DOOR?_R2_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R1_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L2_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L1_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0, 4.65546e-15)
|
||||
operation = 1
|
||||
size = Vector3(32, 9, 21)
|
||||
|
||||
[node name="PlayerSpawnPoint" type="Node3D" parent="." groups=["player_spawn_point"]]
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_living_room_dungeon_done_generating"]
|
||||
@@ -0,0 +1,40 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://cdffbslc7qhgi"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_13awt"]
|
||||
[ext_resource type="Texture2D" uid="uid://i7rtr0ewxm5j" path="res://addons/SimpleDungeons/sample_assets/blue-checkerboard-cc0.png" id="2_tjfvs"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="3_ldwg4"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wrp25"]
|
||||
albedo_texture = ExtResource("2_tjfvs")
|
||||
|
||||
[node name="Stair" type="Node3D"]
|
||||
script = ExtResource("1_13awt")
|
||||
size_in_voxels = Vector3i(2, 2, 1)
|
||||
max_count = 50
|
||||
is_stair_room = true
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_wrp25")
|
||||
use_collision = true
|
||||
size = Vector3(20, 20, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(19.5, 19.5, 9.5)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.8, -7.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.9, 2.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="." instance=ExtResource("3_ldwg4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75, -4.75, 0)
|
||||
use_collision = true
|
||||
size = Vector3(14, 10, 9.5)
|
||||
num_stairs = 32
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://c74pq22tm4lts"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_xaivw"]
|
||||
[ext_resource type="Texture2D" uid="uid://djhy80eyqjqpv" path="res://addons/SimpleDungeons/sample_assets/kenney-dark-grey-checkboard-cc0.png" id="2_n22k3"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqvyc0ok7chld" path="res://addons/SimpleDungeons/sample_assets/kenney-grey-checkerboard-cc0.png" id="3_x6cl1"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jbl8u"]
|
||||
albedo_texture = ExtResource("2_n22k3")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p3xxc"]
|
||||
albedo_texture = ExtResource("3_x6cl1")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="BridgeRoom" type="Node3D"]
|
||||
script = ExtResource("1_xaivw")
|
||||
size_in_voxels = Vector3i(1, 1, 2)
|
||||
|
||||
[node name="bridge" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, -4.775, 0)
|
||||
material_override = SubResource("StandardMaterial3D_jbl8u")
|
||||
operation = 2
|
||||
use_collision = true
|
||||
size = Vector3(2, 0.1, 19.5)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_p3xxc")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 20)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9, 19.5)
|
||||
|
||||
[node name="DOOR_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.27374e-13, -2.75, 9.75)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -10.25)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c30fpfkorbyl6"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_6msra"]
|
||||
[ext_resource type="Texture2D" uid="uid://bxbtgil61x5sx" path="res://addons/SimpleDungeons/sample_assets/kenney-orange-checkerboard-cc0.png" id="2_6nmer"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_orb45"]
|
||||
albedo_texture = ExtResource("2_6nmer")
|
||||
uv1_triplanar = true
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_8geu6"]
|
||||
script/source = "@tool
|
||||
extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_corridor_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="Corridor" type="Node3D"]
|
||||
script = ExtResource("1_6msra")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -5.68248e-07, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_orb45")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9.5, 9.5)
|
||||
|
||||
[node name="DOOR?_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_8geu6")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_corridor_dungeon_done_generating"]
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://jcrublu8sywn"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_0k746"]
|
||||
[ext_resource type="Texture2D" uid="uid://wvh1xmoax4ok" path="res://addons/SimpleDungeons/sample_assets/kenney-dark-grey-grid-cc0.png" id="2_y8cer"]
|
||||
[ext_resource type="Texture2D" uid="uid://bxbtgil61x5sx" path="res://addons/SimpleDungeons/sample_assets/kenney-orange-checkerboard-cc0.png" id="3_b5jl3"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_57r0k"]
|
||||
albedo_texture = ExtResource("2_y8cer")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k8fsj"]
|
||||
albedo_texture = ExtResource("3_b5jl3")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="EntranceRoom" type="Node3D"]
|
||||
script = ExtResource("1_0k746")
|
||||
min_count = 1
|
||||
max_count = 1
|
||||
|
||||
[node name="FrontDoor" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1.83588e-06, -2.75, -4.5)
|
||||
material_override = SubResource("StandardMaterial3D_57r0k")
|
||||
size = Vector3(5, 4, 0.5)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1.44248e-06, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_k8fsj")
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(9.5, 9.5, 9.5)
|
||||
|
||||
[node name="DOOR_F_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, -2.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="PlayerSpawnPoint" type="Node3D" parent="." groups=["player_spawn_point"]]
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b8bnbf7bch1s0"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_y1oj8"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqvyc0ok7chld" path="res://addons/SimpleDungeons/sample_assets/kenney-grey-checkerboard-cc0.png" id="2_bphhi"]
|
||||
[ext_resource type="Texture2D" uid="uid://djhy80eyqjqpv" path="res://addons/SimpleDungeons/sample_assets/kenney-dark-grey-checkboard-cc0.png" id="3_edxhr"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n0t7s"]
|
||||
albedo_texture = ExtResource("2_bphhi")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x7cu1"]
|
||||
albedo_texture = ExtResource("3_edxhr")
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_17gef"]
|
||||
script/source = "extends Node
|
||||
|
||||
func remove_unused_doors():
|
||||
for door in $\"..\".get_doors():
|
||||
if door.get_room_leads_to() == null:
|
||||
door.door_node.queue_free()
|
||||
|
||||
func _on_living_room_dungeon_done_generating():
|
||||
remove_unused_doors()
|
||||
"
|
||||
|
||||
[node name="LivingRoom" type="Node3D"]
|
||||
script = ExtResource("1_y1oj8")
|
||||
size_in_voxels = Vector3i(3, 1, 2)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_n0t7s")
|
||||
use_collision = true
|
||||
size = Vector3(30, 10, 20)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(29.5, 9.5, 19.5)
|
||||
|
||||
[node name="DOOR?_B_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.75, 9.75)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R2_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_R1_CUT2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L2_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, -5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L1_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -15, -2.75, 5)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.49155e-06, -4.825, 0)
|
||||
material_override = SubResource("StandardMaterial3D_x7cu1")
|
||||
use_collision = true
|
||||
size = Vector3(8, 0.2, 13)
|
||||
|
||||
[node name="RemoveUnusedDoors" type="Node" parent="."]
|
||||
script = SubResource("GDScript_17gef")
|
||||
|
||||
[connection signal="dungeon_done_generating" from="." to="RemoveUnusedDoors" method="_on_living_room_dungeon_done_generating"]
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dxmljn5pbp0b1"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_6obq4"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqvyc0ok7chld" path="res://addons/SimpleDungeons/sample_assets/kenney-grey-checkerboard-cc0.png" id="2_s2snu"]
|
||||
[ext_resource type="PackedScene" uid="uid://bak8ltrhbmlv5" path="res://addons/SimpleDungeons/utils/CSGStairMaker3D.tscn" id="3_icb60"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ddeon"]
|
||||
albedo_texture = ExtResource("2_s2snu")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
|
||||
[node name="Stair" type="Node3D"]
|
||||
script = ExtResource("1_6obq4")
|
||||
size_in_voxels = Vector3i(2, 2, 1)
|
||||
max_count = 15
|
||||
is_stair_room = true
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_ddeon")
|
||||
use_collision = true
|
||||
size = Vector3(20, 20, 10)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"]
|
||||
operation = 2
|
||||
size = Vector3(19.5, 19.5, 9.5)
|
||||
|
||||
[node name="DOOR?_R_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.8, -7.75, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="DOOR?_L_CUT" type="CSGBox3D" parent="CSGBox3D"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -9.9, 2.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 4, 1)
|
||||
|
||||
[node name="CSGStairMaker3D" parent="." instance=ExtResource("3_icb60")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.75, -4.75, 0)
|
||||
use_collision = true
|
||||
size = Vector3(14, 10, 9.5)
|
||||
num_stairs = 32
|
||||
Reference in New Issue
Block a user