Files
admin c61d286005 feat: wood inventory, carrying, and woodpile storage
Wood now follows the same gather-carry-deposit pattern as food. NPCs put harvested wood into inventory, walk to the VillageWoodpile StorageNode, and deposit it. Village wood syncs from storage. Player harvesting also routes wood to the woodpile. ActiveWorldAdapter exposes woodpile routing for DEPOSIT_WOOD action targeting. WorldViewManager recognizes wood inventory changes. Tests verify woodpile node existence, storage ID, navigation reachability, and adapter routing.
2026-07-08 18:55:51 +02:00

625 lines
22 KiB
Plaintext

[gd_scene load_steps=41 format=3]
[ext_resource type="Terrain3DAssets" path="res://terrain/jajce/assets.tres" id="1_assets"]
[ext_resource type="PackedScene" path="res://world/resource_nodes/ResourceNode.tscn" id="2_resource"]
[ext_resource type="Script" path="res://world/jajce/jajce_world.gd" id="3_world"]
[ext_resource type="PackedScene" path="res://world/jajce/StylizedTree.tscn" id="4_tree"]
[ext_resource type="PackedScene" path="res://world/jajce/FortressBlockout.tscn" id="5_fortress"]
[ext_resource type="PackedScene" path="res://world/jajce/StylizedHouse.tscn" id="6_house"]
[ext_resource type="PackedScene" path="res://world/jajce/StylizedMill.tscn" id="7_mill"]
[ext_resource type="PackedScene" path="res://world/jajce/BridgeBlockout.tscn" id="8_bridge"]
[ext_resource type="PackedScene" path="res://world/jajce/WaterBody.tscn" id="9_water"]
[ext_resource type="PackedScene" path="res://world/jajce/WaterfallBody.tscn" id="10_waterfall"]
[ext_resource type="PackedScene" path="res://world/jajce/WaterfallMist.tscn" id="11_mist"]
[ext_resource type="PackedScene" path="res://world/jajce/ChimneySmoke.tscn" id="12_smoke"]
[ext_resource type="Script" path="res://world/jajce/day_night_cycle.gd" id="13_daynight"]
[ext_resource type="PackedScene" path="res://world/storage/StorageNode.tscn" id="14_storage"]
[ext_resource type="Script" path="res://world/activity/ActivitySite.gd" id="15_activity"]
[ext_resource type="NavigationMesh" path="res://world/jajce/JajceNavigationMesh.tres" id="16_nav"]
[ext_resource type="PackedScene" path="res://world/jajce/WindStrokes.tscn" id="19_windstrokes"]
[ext_resource type="PackedScene" path="res://world/jajce/WindSpecks.tscn" id="20_windspecks"]
[sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_jajce"]
_shader_parameters = {
"auto_base_texture": 0,
"auto_overlay_texture": 1,
"auto_slope": 0.62,
"blend_sharpness": 0.88,
"enable_macro_variation": true,
"macro_variation1": Color(0.78, 0.9, 0.42, 1),
"macro_variation2": Color(0.55, 0.75, 0.38, 1),
"macro_variation_slope": 0.48
}
world_background = 0
auto_shader = true
[sub_resource type="NavigationMesh" id="NavigationMesh_greybox"]
vertices = PackedVector3Array(-14.5, 0.5, 0, -1, 0.5, 0, -1, 0.5, -0.75, 0, 0.5, -1, 0, 0.5, -14.5, -14.5, 0.5, -14.5, 0.75, 0.5, -1, 0.75, 0.75, -0.5, 14.5, 0.5, -0.5, 14.5, 0.5, -14.5, 0.75, 0.75, 0, 0, 1, 0, 0, 0.75, 0.75, -0.5, 0.75, 0.75, -0.5, 0.5, 14.5, 14.5, 0.5, 14.5, -1, 0.5, 0.75, -14.5, 0.5, 14.5)
polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(3, 2, 4), PackedInt32Array(4, 2, 5), PackedInt32Array(5, 2, 0), PackedInt32Array(6, 3, 4), PackedInt32Array(8, 7, 6), PackedInt32Array(8, 6, 9), PackedInt32Array(9, 6, 4), PackedInt32Array(12, 11, 10), PackedInt32Array(10, 7, 8), PackedInt32Array(14, 13, 12), PackedInt32Array(10, 8, 12), PackedInt32Array(12, 8, 14), PackedInt32Array(14, 8, 15), PackedInt32Array(0, 1, 16), PackedInt32Array(16, 13, 14), PackedInt32Array(14, 17, 16), PackedInt32Array(16, 17, 0)]
[sub_resource type="StandardMaterial3D" id="Material_ground"]
albedo_color = Color(0.24, 0.48, 0.25, 1)
[sub_resource type="BoxMesh" id="Mesh_ground"]
material = SubResource("Material_ground")
size = Vector3(64, 0.2, 64)
[sub_resource type="BoxShape3D" id="Shape_ground"]
size = Vector3(64, 0.2, 64)
[sub_resource type="StandardMaterial3D" id="Material_path_readability"]
albedo_color = Color(0.52, 0.39, 0.24, 1)
roughness = 0.95
[sub_resource type="BoxMesh" id="Mesh_path_readability"]
material = SubResource("Material_path_readability")
size = Vector3(1, 0.06, 1)
[sub_resource type="StandardMaterial3D" id="Material_landmark_banner"]
albedo_color = Color(0.68, 0.12, 0.1, 1)
roughness = 0.72
[sub_resource type="StandardMaterial3D" id="Material_site_canvas"]
albedo_color = Color(0.82, 0.68, 0.38, 1)
roughness = 0.88
[sub_resource type="StandardMaterial3D" id="Material_site_dark_wood"]
albedo_color = Color(0.24, 0.13, 0.07, 1)
roughness = 0.82
[sub_resource type="StandardMaterial3D" id="Material_site_book"]
albedo_color = Color(0.37, 0.18, 0.62, 1)
roughness = 0.74
[sub_resource type="BoxMesh" id="Mesh_landmark_banner"]
material = SubResource("Material_landmark_banner")
size = Vector3(0.12, 1.7, 1.0)
[sub_resource type="CylinderMesh" id="Mesh_site_pole"]
material = SubResource("Material_site_dark_wood")
top_radius = 0.06
bottom_radius = 0.07
height = 2.2
[sub_resource type="BoxMesh" id="Mesh_site_sign"]
material = SubResource("Material_site_canvas")
size = Vector3(1.0, 0.08, 0.5)
[sub_resource type="BoxMesh" id="Mesh_site_sack"]
material = SubResource("Material_site_canvas")
size = Vector3(0.5, 0.62, 0.42)
[sub_resource type="BoxMesh" id="Mesh_study_book"]
material = SubResource("Material_site_book")
size = Vector3(0.42, 0.08, 0.3)
[sub_resource type="BoxMesh" id="Mesh_rest_canopy"]
material = SubResource("Material_site_canvas")
size = Vector3(2.9, 0.08, 1.4)
[sub_resource type="ProceduralSkyMaterial" id="SkyMaterial_jajce"]
sky_top_color = Color(0.28, 0.52, 0.72, 1)
sky_horizon_color = Color(0.88, 0.74, 0.52, 1)
ground_bottom_color = Color(0.18, 0.24, 0.14, 1)
ground_horizon_color = Color(0.68, 0.6, 0.44, 1)
sun_angle_max = 18.0
[sub_resource type="Sky" id="Sky_jajce"]
sky_material = SubResource("SkyMaterial_jajce")
[sub_resource type="Environment" id="Environment_greybox"]
background_mode = 2
sky = SubResource("Sky_jajce")
background_energy_multiplier = 0.9
ambient_light_source = 3
ambient_light_color = Color(0.95, 0.9, 0.76, 1)
ambient_light_energy = 0.75
reflected_light_source = 2
tonemap_mode = 2
glow_enabled = true
glow_normalized = true
glow_intensity = 0.5
glow_strength = 0.9
glow_bloom = 0.12
fog_enabled = true
fog_light_color = Color(0.88, 0.84, 0.7, 1)
fog_light_energy = 0.78
fog_density = 0.002
fog_height = -2.0
fog_height_density = 0.08
fog_aerial_perspective = 0.35
fog_sky_affect = 0.28
volumetric_fog_enabled = true
volumetric_fog_density = 0.006
volumetric_fog_albedo = Color(0.94, 0.88, 0.75, 1)
volumetric_fog_emission = Color(0.1, 0.07, 0.04, 1)
volumetric_fog_emission_energy = 0.22
volumetric_fog_length = 96.0
volumetric_fog_detail_spread = 1.6
adjustment_enabled = true
adjustment_brightness = 1.08
adjustment_contrast = 1.04
adjustment_saturation = 1.25
[sub_resource type="StandardMaterial3D" id="Material_guard"]
albedo_color = Color(0.55, 0.45, 0.35, 1)
roughness = 0.8
[sub_resource type="StandardMaterial3D" id="Material_study"]
albedo_color = Color(0.45, 0.35, 0.22, 1)
roughness = 0.82
[sub_resource type="StandardMaterial3D" id="Material_rest"]
albedo_color = Color(0.35, 0.28, 0.22, 1)
roughness = 0.88
[sub_resource type="CylinderMesh" id="Mesh_guard_post"]
material = SubResource("Material_guard")
top_radius = 0.35
bottom_radius = 0.4
height = 2.5
[sub_resource type="BoxMesh" id="Mesh_study_desk"]
material = SubResource("Material_study")
size = Vector3(2.0, 0.25, 1.2)
[sub_resource type="BoxMesh" id="Mesh_rest_bench"]
material = SubResource("Material_rest")
size = Vector3(2.8, 0.3, 0.9)
[node name="JajceWorld" type="Node3D"]
script = ExtResource("3_world")
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
navigation_mesh = ExtResource("16_nav")
[node name="TerrainRoot" type="Node3D" parent="."]
[node name="Terrain3D" type="Terrain3D" parent="TerrainRoot"]
data_directory = "res://terrain/jajce/data"
material = SubResource("Terrain3DMaterial_jajce")
assets = ExtResource("1_assets")
collision_mask = 3
collision_mode = 1
top_level = true
[node name="FortressBlockout" type="Node3D" parent="."]
position = Vector3(-25, 7, 9)
[node name="Keep" parent="FortressBlockout" instance=ExtResource("5_fortress")]
[node name="WaterRoot" type="Node3D" parent="."]
[node name="RiverSurface" parent="WaterRoot" instance=ExtResource("9_water")]
[node name="WaterfallBody" parent="WaterRoot" instance=ExtResource("10_waterfall")]
[node name="WaterfallMist" parent="WaterRoot" instance=ExtResource("11_mist")]
[node name="VillageRoot" type="Node3D" parent="."]
[node name="House_01" parent="VillageRoot" instance=ExtResource("6_house")]
position = Vector3(-15, 2, 7)
[node name="Smoke" parent="VillageRoot/House_01" instance=ExtResource("12_smoke")]
position = Vector3(0, 4.5, 0)
[node name="House_02" parent="VillageRoot" instance=ExtResource("6_house")]
position = Vector3(-8, 2, 2)
[node name="Smoke" parent="VillageRoot/House_02" instance=ExtResource("12_smoke")]
position = Vector3(0, 4.5, 0)
[node name="House_03" parent="VillageRoot" instance=ExtResource("6_house")]
position = Vector3(-15, 2, -4)
[node name="Smoke" parent="VillageRoot/House_03" instance=ExtResource("12_smoke")]
position = Vector3(0, 4.5, 0)
[node name="Mill" parent="VillageRoot" instance=ExtResource("7_mill")]
position = Vector3(19, 2, 7)
[node name="Bridge" parent="VillageRoot" instance=ExtResource("8_bridge")]
position = Vector3(25, 0.5, 0)
[node name="Path_Village_Spine" type="MeshInstance3D" parent="VillageRoot"]
position = Vector3(-3, 0.04, -1)
rotation_degrees = Vector3(0, 20, 0)
scale = Vector3(1.25, 1, 13)
cast_shadow = 0
mesh = SubResource("Mesh_path_readability")
[node name="Path_Pantry_Worksites" type="MeshInstance3D" parent="VillageRoot"]
position = Vector3(-2, 0.04, -7.5)
rotation_degrees = Vector3(0, 82, 0)
scale = Vector3(1.15, 1, 8)
cast_shadow = 0
mesh = SubResource("Mesh_path_readability")
[node name="Path_River_Bridge" type="MeshInstance3D" parent="VillageRoot"]
position = Vector3(12, 0.04, 3.5)
rotation_degrees = Vector3(0, 72, 0)
scale = Vector3(1.35, 1, 18)
cast_shadow = 0
mesh = SubResource("Mesh_path_readability")
[node name="Path_Forest_Edge" type="MeshInstance3D" parent="VillageRoot"]
position = Vector3(4, 0.04, -9)
rotation_degrees = Vector3(0, -42, 0)
scale = Vector3(1.1, 1, 9)
cast_shadow = 0
mesh = SubResource("Mesh_path_readability")
[node name="FoliageRoot" type="Node3D" parent="."]
[node name="Tree_West_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-33, 0, -15)
scale = Vector3(1.25, 1.25, 1.25)
[node name="Tree_West_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-29, 0, -21)
scale = Vector3(0.9, 0.9, 0.9)
[node name="Tree_West_03" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-38, 0, 2)
scale = Vector3(1.4, 1.4, 1.4)
[node name="Tree_North_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-2, 0, 25)
[node name="Tree_North_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(7, 0, 28)
scale = Vector3(1.2, 1.2, 1.2)
[node name="Tree_North_03" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(15, 0, 24)
scale = Vector3(0.85, 0.85, 0.85)
[node name="Tree_South_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-16, 0, -27)
scale = Vector3(1.15, 1.15, 1.15)
[node name="Tree_South_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-4, 0, -30)
[node name="Tree_River_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(19, 0, 18)
scale = Vector3(0.9, 0.9, 0.9)
[node name="Tree_River_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(31, 0, 14)
scale = Vector3(1.25, 1.25, 1.25)
[node name="WorldObjects" type="Node3D" parent="."]
[node name="ResourceNodes" type="Node3D" parent="WorldObjects"]
[node name="BerryBush_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-6, 0, -8)
node_id = &"berry_bush_01"
safety_risk = 0.05
comfort_distance = 18.0
discovery_priority = 1.0
[node name="BerryBush_02" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-10, 0, -4)
node_id = &"berry_bush_02"
initial_amount = 8.0
safety_risk = 0.08
comfort_distance = 20.0
discovery_priority = 0.5
[node name="BerryPatch_River_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(12, 0, 10)
node_id = &"berry_patch_river_01"
initial_amount = 6.0
yield_per_action = 1.5
safety_risk = 0.18
comfort_distance = 22.0
discovery_priority = 0.25
[node name="AnimalCamp_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-12, 0, 8)
node_id = &"animal_camp_01"
initial_amount = 5.0
yield_per_action = 1.0
safety_risk = 0.35
comfort_distance = 24.0
discovery_priority = -0.5
[node name="BerryPatch_South_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-18, 0, -6)
node_id = &"berry_patch_south_01"
initial_amount = 7.0
yield_per_action = 1.5
safety_risk = 0.12
comfort_distance = 24.0
discovery_priority = 0.1
[node name="AnimalCamp_River_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(20, 0, 16)
node_id = &"animal_camp_river_01"
initial_amount = 4.0
yield_per_action = 1.0
safety_risk = 0.45
comfort_distance = 30.0
discovery_priority = -0.75
[node name="Tree_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(6, 0, -8)
node_id = &"tree_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 15.0
yield_per_action = 3.0
safety_risk = 0.12
comfort_distance = 24.0
[node name="Tree_02" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(10, 0, -4)
node_id = &"tree_02"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 12.0
yield_per_action = 3.0
safety_risk = 0.16
comfort_distance = 26.0
[node name="Tree_North_Outskirts_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(6, 0, 12)
node_id = &"tree_north_outskirts_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 10.0
yield_per_action = 2.0
safety_risk = 0.2
comfort_distance = 28.0
discovery_priority = 0.25
[node name="Tree_South_Edge_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-12, 0, -12)
node_id = &"tree_south_edge_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 9.0
yield_per_action = 2.0
safety_risk = 0.24
comfort_distance = 26.0
[node name="Tree_River_Resource_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(20, 0, 18)
node_id = &"tree_river_resource_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 8.0
yield_per_action = 2.0
safety_risk = 0.22
comfort_distance = 30.0
discovery_priority = 0.1
[node name="WoodPile_Village_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(5, 0, -13)
node_id = &"wood_pile_village_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 6.0
yield_per_action = 1.5
safety_risk = 0.02
comfort_distance = 16.0
discovery_priority = 0.75
[node name="FarmCrop_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-11, 0, 3)
node_id = &"farm_crop_01"
initial_amount = 8.0
yield_per_action = 2.0
safety_risk = 0.02
comfort_distance = 16.0
discovery_priority = 0.85
[node name="BerryBush_River_02" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(28, 0, -2)
node_id = &"berry_bush_river_02"
initial_amount = 5.0
yield_per_action = 1.5
safety_risk = 0.22
comfort_distance = 28.0
discovery_priority = 0.2
[node name="Tree_Forest_Grove_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-8, 0, -22)
node_id = &"tree_forest_grove_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 14.0
yield_per_action = 3.0
safety_risk = 0.3
comfort_distance = 30.0
discovery_priority = -0.1
[node name="Tree_Forest_Grove_02" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-3, 0, -24)
node_id = &"tree_forest_grove_02"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 11.0
yield_per_action = 2.5
safety_risk = 0.32
comfort_distance = 32.0
discovery_priority = -0.2
[node name="WoodPile_Mill_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(21, 0, 1)
node_id = &"wood_pile_mill_01"
action_id = &"gather_wood"
resource_id = &"wood"
initial_amount = 4.0
yield_per_action = 1.0
safety_risk = 0.03
comfort_distance = 14.0
discovery_priority = 0.8
[node name="BerryPatch_Mill_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(14, 0, 3)
node_id = &"berry_patch_mill_01"
initial_amount = 5.0
yield_per_action = 1.5
safety_risk = 0.1
comfort_distance = 20.0
discovery_priority = 0.45
[node name="StorageSites" type="Node3D" parent="WorldObjects"]
[node name="VillagePantry" parent="WorldObjects/StorageSites" instance=ExtResource("14_storage")]
position = Vector3(0, 0, -8)
[node name="VillageWoodpile" parent="WorldObjects/StorageSites" instance=ExtResource("14_storage")]
position = Vector3(8, 0, -12)
storage_id = &"village_woodpile"
[node name="PantrySignPole" type="MeshInstance3D" parent="WorldObjects/StorageSites/VillagePantry"]
position = Vector3(-1.05, 1.1, 1.25)
mesh = SubResource("Mesh_site_pole")
[node name="PantrySign" type="MeshInstance3D" parent="WorldObjects/StorageSites/VillagePantry"]
position = Vector3(-1.05, 1.85, 1.25)
rotation_degrees = Vector3(0, 90, 0)
mesh = SubResource("Mesh_site_sign")
[node name="PantrySack_A" type="MeshInstance3D" parent="WorldObjects/StorageSites/VillagePantry"]
position = Vector3(-0.95, 0.3, -0.65)
scale = Vector3(0.65, 1.0, 0.65)
mesh = SubResource("Mesh_site_sack")
[node name="PantrySack_B" type="MeshInstance3D" parent="WorldObjects/StorageSites/VillagePantry"]
position = Vector3(-1.35, 0.22, -0.25)
scale = Vector3(0.5, 0.75, 0.5)
mesh = SubResource("Mesh_site_sack")
[node name="ActivitySites" type="Node3D" parent="WorldObjects"]
[node name="GuardPost" type="Node3D" parent="WorldObjects/ActivitySites"]
position = Vector3(0, 0, 8)
script = ExtResource("15_activity")
site_id = &"guard_post"
action_id = &"patrol"
display_name = "Guard Post"
capacity = 2
[node name="GuardTowerVisual" type="MeshInstance3D" parent="WorldObjects/ActivitySites/GuardPost"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, 0)
mesh = SubResource("Mesh_guard_post")
[node name="GuardPennantPole" type="MeshInstance3D" parent="WorldObjects/ActivitySites/GuardPost"]
position = Vector3(0.45, 2.35, 0)
mesh = SubResource("Mesh_site_pole")
[node name="GuardPennant" type="MeshInstance3D" parent="WorldObjects/ActivitySites/GuardPost"]
position = Vector3(0.45, 2.85, 0.48)
scale = Vector3(0.8, 0.55, 0.65)
mesh = SubResource("Mesh_landmark_banner")
[node name="InteractionPoint" type="Marker3D" parent="WorldObjects/ActivitySites/GuardPost"]
[node name="DebugLabel" type="Label3D" parent="WorldObjects/ActivitySites/GuardPost"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.8, 0)
billboard = 1
no_depth_test = true
font_size = 18
outline_modulate = Color(0, 0, 0, 1)
outline_size = 4
text = "Guard Post"
[node name="StudyDesk" type="Node3D" parent="WorldObjects/ActivitySites"]
position = Vector3(-6, 0, 6)
script = ExtResource("15_activity")
site_id = &"study_desk"
action_id = &"study"
display_name = "Study Desk"
[node name="StudyDeskVisual" type="MeshInstance3D" parent="WorldObjects/ActivitySites/StudyDesk"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.125, 0)
mesh = SubResource("Mesh_study_desk")
[node name="OpenBook_A" type="MeshInstance3D" parent="WorldObjects/ActivitySites/StudyDesk"]
position = Vector3(-0.25, 0.32, 0)
rotation_degrees = Vector3(0, 14, 0)
mesh = SubResource("Mesh_study_book")
[node name="OpenBook_B" type="MeshInstance3D" parent="WorldObjects/ActivitySites/StudyDesk"]
position = Vector3(0.22, 0.32, 0.04)
rotation_degrees = Vector3(0, -14, 0)
mesh = SubResource("Mesh_study_book")
[node name="InteractionPoint" type="Marker3D" parent="WorldObjects/ActivitySites/StudyDesk"]
[node name="DebugLabel" type="Label3D" parent="WorldObjects/ActivitySites/StudyDesk"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0)
billboard = 1
no_depth_test = true
font_size = 18
outline_modulate = Color(0, 0, 0, 1)
outline_size = 4
text = "Study Desk"
[node name="RestBench" type="Node3D" parent="WorldObjects/ActivitySites"]
position = Vector3(4, 0, 5)
script = ExtResource("15_activity")
site_id = &"rest_bench"
action_id = &"rest"
display_name = "Rest Bench"
capacity = 2
[node name="RestBenchVisual" type="MeshInstance3D" parent="WorldObjects/ActivitySites/RestBench"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.15, 0)
mesh = SubResource("Mesh_rest_bench")
[node name="RestCanopy" type="MeshInstance3D" parent="WorldObjects/ActivitySites/RestBench"]
position = Vector3(0, 1.35, 0)
rotation_degrees = Vector3(0, 0, -6)
mesh = SubResource("Mesh_rest_canopy")
[node name="RestCanopyPost_A" type="MeshInstance3D" parent="WorldObjects/ActivitySites/RestBench"]
position = Vector3(-1.25, 0.72, -0.52)
scale = Vector3(0.8, 0.8, 0.8)
mesh = SubResource("Mesh_site_pole")
[node name="RestCanopyPost_B" type="MeshInstance3D" parent="WorldObjects/ActivitySites/RestBench"]
position = Vector3(1.25, 0.72, 0.52)
scale = Vector3(0.8, 0.8, 0.8)
mesh = SubResource("Mesh_site_pole")
[node name="InteractionPoint" type="Marker3D" parent="WorldObjects/ActivitySites/RestBench"]
[node name="DebugLabel" type="Label3D" parent="WorldObjects/ActivitySites/RestBench"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0)
billboard = 1
no_depth_test = true
font_size = 18
outline_modulate = Color(0, 0, 0, 1)
outline_size = 4
text = "Rest Bench"
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
rotation_degrees = Vector3(-55, -35, 0)
light_color = Color(1, 0.87, 0.72, 1)
light_energy = 1.45
shadow_enabled = true
directional_shadow_max_distance = 180.0
[node name="WindStrokes_Valley" parent="." instance=ExtResource("19_windstrokes")]
[node name="WindStrokes_Ridge" parent="." instance=ExtResource("19_windstrokes")]
[node name="WindSpecks_Valley" parent="." instance=ExtResource("20_windspecks")]
[node name="WindSpecks_Ridge" parent="." instance=ExtResource("20_windspecks")]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_greybox")
[node name="DayNightCycle" type="Node" parent="." node_paths=PackedStringArray("directional_light", "world_environment")]
script = ExtResource("13_daynight")
directional_light = NodePath("../DirectionalLight3D")
world_environment = NodePath("../WorldEnvironment")