Improve world authoring workflow

This commit is contained in:
Alexander Sellite 2026-07-27 03:30:03 -04:00
parent 67d17074b2
commit 0d26f30172
18 changed files with 682 additions and 138 deletions

View file

@ -1,64 +1,78 @@
[gd_scene load_steps=10 format=3]
[gd_scene load_steps=11 format=3]
[ext_resource type="Script" path="res://world/fishing_shop_interaction.gd" id="1_shop"]
[ext_resource type="Script" path="res://world/world_prop.gd" id="2_prop"]
[sub_resource type="BoxMesh" id="CounterMesh"]
resource_local_to_scene = true
size = Vector3(4.2, 1.25, 1.8)
[sub_resource type="BoxMesh" id="RoofMesh"]
resource_local_to_scene = true
size = Vector3(5.2, 0.35, 3.2)
[sub_resource type="BoxMesh" id="PostMesh"]
resource_local_to_scene = true
size = Vector3(0.28, 3.2, 0.28)
[sub_resource type="BoxMesh" id="BackMesh"]
resource_local_to_scene = true
size = Vector3(5, 2.8, 0.25)
[sub_resource type="StandardMaterial3D" id="PrimaryMaterial"]
resource_local_to_scene = true
albedo_color = Color(0.12, 0.68, 0.62, 1)
[sub_resource type="StandardMaterial3D" id="AccentMaterial"]
resource_local_to_scene = true
albedo_color = Color(1, 0.68, 0.18, 1)
[sub_resource type="StandardMaterial3D" id="BackMaterial"]
resource_local_to_scene = true
albedo_color = Color(0.13, 0.34, 0.38, 1)
[sub_resource type="SphereShape3D" id="InteractionShape"]
resource_local_to_scene = true
radius = 3.0
[sub_resource type="BoxShape3D" id="CounterShape"]
resource_local_to_scene = true
size = Vector3(4.2, 1.25, 1.8)
[node name="FishingShopWorld" type="Node3D"]
script = ExtResource("2_prop")
collision_root_path = NodePath("Collision")
interaction_area_path = NodePath("InteractionArea")
entrance_marker_path = NodePath("EntranceMarker")
[node name="Visuals" type="Node3D" parent="."]
[node name="Visual" type="Node3D" parent="."]
[node name="Counter" type="MeshInstance3D" parent="Visuals"]
[node name="Counter" type="MeshInstance3D" parent="Visual"]
position = Vector3(0, 0.625, 0)
mesh = SubResource("CounterMesh")
material_override = SubResource("PrimaryMaterial")
[node name="Back" type="MeshInstance3D" parent="Visuals"]
[node name="Back" type="MeshInstance3D" parent="Visual"]
position = Vector3(0, 1.4, 1.25)
mesh = SubResource("BackMesh")
material_override = SubResource("BackMaterial")
[node name="Roof" type="MeshInstance3D" parent="Visuals"]
[node name="Roof" type="MeshInstance3D" parent="Visual"]
position = Vector3(0, 3.15, 0.35)
mesh = SubResource("RoofMesh")
material_override = SubResource("AccentMaterial")
[node name="WestPost" type="MeshInstance3D" parent="Visuals"]
[node name="WestPost" type="MeshInstance3D" parent="Visual"]
position = Vector3(-2.15, 1.6, -0.8)
mesh = SubResource("PostMesh")
material_override = SubResource("PrimaryMaterial")
[node name="EastPost" type="MeshInstance3D" parent="Visuals"]
[node name="EastPost" type="MeshInstance3D" parent="Visual"]
position = Vector3(2.15, 1.6, -0.8)
mesh = SubResource("PostMesh")
material_override = SubResource("PrimaryMaterial")
[node name="ShopName" type="Label3D" parent="Visuals"]
[node name="ShopName" type="Label3D" parent="Visual"]
position = Vector3(0, 3.7, 0)
text = "fishing shop"
font_size = 42
@ -66,18 +80,21 @@ outline_size = 9
billboard = 1
no_depth_test = true
[node name="StaticCollision" type="StaticBody3D" parent="."]
[node name="Collision" type="StaticBody3D" parent="."]
[node name="CounterShape" type="CollisionShape3D" parent="StaticCollision"]
[node name="CounterShape" type="CollisionShape3D" parent="Collision"]
position = Vector3(0, 0.625, 0)
shape = SubResource("CounterShape")
[node name="FishingShopInteraction" type="Area3D" parent="."]
[node name="InteractionArea" type="Area3D" parent="."]
unique_name_in_owner = true
position = Vector3(0, 1, -0.3)
collision_layer = 0
collision_mask = 2
script = ExtResource("1_shop")
[node name="CollisionShape3D" type="CollisionShape3D" parent="FishingShopInteraction"]
[node name="InteractionShape" type="CollisionShape3D" parent="InteractionArea"]
shape = SubResource("InteractionShape")
[node name="EntranceMarker" type="Marker3D" parent="."]
position = Vector3(0, 0, -2)

View file

@ -1,39 +1,46 @@
[gd_scene load_steps=5 format=3]
[gd_scene load_steps=6 format=3]
[ext_resource type="Script" path="res://world/world_prop.gd" id="1_prop"]
[sub_resource type="BoxMesh" id="PerchMesh"]
resource_local_to_scene = true
size = Vector3(5, 0.7, 2.2)
[sub_resource type="CylinderMesh" id="PostMesh"]
resource_local_to_scene = true
top_radius = 0.18
bottom_radius = 0.24
height = 2.5
[sub_resource type="StandardMaterial3D" id="WoodMaterial"]
resource_local_to_scene = true
albedo_color = Color(0.46, 0.28, 0.13, 1)
[sub_resource type="StandardMaterial3D" id="SignMaterial"]
resource_local_to_scene = true
albedo_color = Color(0.95, 0.82, 0.42, 1)
[node name="PelicanCoolerPerch" type="Node3D"]
script = ExtResource("1_prop")
[node name="Visuals" type="Node3D" parent="."]
[node name="Visual" type="Node3D" parent="."]
[node name="Perch" type="MeshInstance3D" parent="Visuals"]
[node name="Perch" type="MeshInstance3D" parent="Visual"]
position = Vector3(0, 1.65, 0)
mesh = SubResource("PerchMesh")
material_override = SubResource("WoodMaterial")
[node name="WestPost" type="MeshInstance3D" parent="Visuals"]
[node name="WestPost" type="MeshInstance3D" parent="Visual"]
position = Vector3(-1.8, 0.7, 0)
mesh = SubResource("PostMesh")
material_override = SubResource("WoodMaterial")
[node name="EastPost" type="MeshInstance3D" parent="Visuals"]
[node name="EastPost" type="MeshInstance3D" parent="Visual"]
position = Vector3(1.8, 0.7, 0)
mesh = SubResource("PostMesh")
material_override = SubResource("WoodMaterial")
[node name="Sign" type="Label3D" parent="Visuals"]
[node name="Sign" type="Label3D" parent="Visual"]
position = Vector3(0, 2.55, 0)
text = "sell to pelicans\nfrom the cooler"
font_size = 30
@ -41,7 +48,7 @@ outline_size = 8
billboard = 1
no_depth_test = true
[node name="ConvenienceLabel" type="Label3D" parent="Visuals"]
[node name="ConvenienceLabel" type="Label3D" parent="Visual"]
position = Vector3(0, 1.65, -1.15)
text = "available anywhere • 0.25x"
font_size = 20