diff --git a/Stations/BurgerBunsDispenser.tscn b/Stations/BurgerBunsDispenser.tscn index 3cc1387..25f95fa 100644 --- a/Stations/BurgerBunsDispenser.tscn +++ b/Stations/BurgerBunsDispenser.tscn @@ -1,12 +1,10 @@ [gd_scene format=3 uid="uid://c6rift56ql3f8"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_myl3s"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="PackedScene" uid="uid://c0lknik4noobs" path="res://items/BurgerBuns.tscn" id="2_1q74o"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_rf1b2"] - -[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] -radius = 0.3 +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_u2p81"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"] height = 1.0 @@ -26,49 +24,49 @@ collision_layer = 65536 collision_mask = 65536 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -shape = SubResource("SphereShape3D_xmbo2") - -[node name="BurgerBunsDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="BurgerBunsDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_myl3s") item_scene = ExtResource("2_1q74o") +pickup_sound = ExtResource("4_u2p81") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser" unique_id=1470079357] +[node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser" index="0" unique_id=1470079357] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") -[node name="SlideOffDome" parent="BurgerBunsDispenser" unique_id=1427609426 instance=ExtResource("4_rf1b2")] +[node name="SlideOffDome" parent="BurgerBunsDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_rf1b2")] -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="BurgerBunsDispenser" unique_id=1746426494] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="BurgerBunsDispenser" index="2" unique_id=1746426494] -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=858311379] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="0" unique_id=858311379] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) radius = 0.3 height = 1.0 sides = 32 -[node name="CSGCombiner3DBuns" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1459017790] +[node name="CSGCombiner3DBuns" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="1" unique_id=1459017790] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.16038476, 1.0341886, -0.09012994) autosmooth = true smoothing_angle = 138.9 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" unique_id=1328221793] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" index="0" unique_id=1328221793] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" unique_id=686624728] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" index="1" unique_id=686624728] transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns/CSGCylinder3D3" unique_id=1113894081] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns/CSGCylinder3D3" index="0" unique_id=1113894081] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0) radius = 0.085 height = 0.04 @@ -76,26 +74,26 @@ sides = 16 cone = true material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCombiner3DBuns2" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1636439623] +[node name="CSGCombiner3DBuns2" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="2" unique_id=1636439623] transform = Transform3D(0.42896286, 0, -0.90332216, 0, 1, 0, 0.90332216, 0, 0.42896286, 0.13564643, 1.0341886, 0.20497215) autosmooth = true smoothing_angle = 138.9 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" unique_id=190780737] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" index="0" unique_id=190780737] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" unique_id=557804311] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" index="1" unique_id=557804311] transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2/CSGCylinder3D3" unique_id=605379447] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2/CSGCylinder3D3" index="0" unique_id=605379447] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0) radius = 0.085 height = 0.04 @@ -103,26 +101,26 @@ sides = 16 cone = true material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCombiner3DBuns3" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1594575583] +[node name="CSGCombiner3DBuns3" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="3" unique_id=1594575583] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.17070979, 1.0341885, 0.07147646) autosmooth = true smoothing_angle = 138.9 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" unique_id=1686142490] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" index="0" unique_id=1686142490] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" unique_id=1773290691] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" index="1" unique_id=1773290691] transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3/CSGCylinder3D3" unique_id=801922493] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3/CSGCylinder3D3" index="0" unique_id=801922493] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0) radius = 0.085 height = 0.04 @@ -130,26 +128,26 @@ sides = 16 cone = true material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCombiner3DBuns4" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=2055085730] +[node name="CSGCombiner3DBuns4" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="4" unique_id=2055085730] transform = Transform3D(0.95670986, 0, 0.29104328, 0, 1, 0, -0.29104328, 0, 0.95670986, -0.08665481, 1.0341886, -0.10344604) autosmooth = true smoothing_angle = 138.9 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" unique_id=547208858] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" index="0" unique_id=547208858] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" unique_id=185898007] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" index="1" unique_id=185898007] transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4/CSGCylinder3D3" unique_id=2117029178] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4/CSGCylinder3D3" index="0" unique_id=2117029178] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0) radius = 0.085 height = 0.04 @@ -157,26 +155,26 @@ sides = 16 cone = true material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCombiner3DBuns5" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=546748728] +[node name="CSGCombiner3DBuns5" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="5" unique_id=546748728] transform = Transform3D(0.20608562, 0, -0.978534, 0, 1, 0, 0.978534, 0, 0.20608562, -0.047733016, 1.0341886, 0.19433105) autosmooth = true smoothing_angle = 138.9 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" unique_id=102374914] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" index="0" unique_id=102374914] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" unique_id=189923990] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" index="1" unique_id=189923990] transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0) radius = 0.085 height = 0.04 sides = 16 material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5/CSGCylinder3D3" unique_id=1980594001] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5/CSGCylinder3D3" index="0" unique_id=1980594001] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0) radius = 0.085 height = 0.04 diff --git a/Stations/Counter.tscn b/Stations/Counter.tscn index 1972882..eea848b 100644 --- a/Stations/Counter.tscn +++ b/Stations/Counter.tscn @@ -1,20 +1,20 @@ [gd_scene format=3 uid="uid://efaec6ymgabo"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://cql13y8da4auf" path="res://stations/counter.gd" id="1_oapbh"] -[ext_resource type="AudioStream" uid="uid://bqtk1adk8umbx" path="res://sounds/220197__gameaudio__click-basic.wav" id="2_0aadn"] -[ext_resource type="AudioStream" uid="uid://daiv8ubwdbidf" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="2_lg82m"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="2_0aadn"] +[ext_resource type="AudioStream" uid="uid://dllgyc8jh83an" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="2_lg82m"] [ext_resource type="PackedScene" uid="uid://dgk88esxip5xi" path="res://items/knife.tscn" id="3_3gvdi"] [sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"] size = Vector3(0.48521727, 0.040039063, 0.41994628) +[sub_resource type="BoxShape3D" id="BoxShape3D_3gvdi"] +size = Vector3(0.6, 0.9960913, 0.6) + [sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"] size = Vector3(0.3, 0.05, 0.3) -[sub_resource type="BoxShape3D" id="BoxShape3D_1ntq7"] -size = Vector3(0.6, 0.12802735, 0.6) - [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_24d3s"] albedo_color = Color(0.49, 0.3854667, 0.29400003, 1) @@ -35,94 +35,94 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2838624, -0.18) [node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0647464, 0) collision_layer = 65536 -collision_mask = 65540 stash_sound = ExtResource("2_0aadn") snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.002, 0) -shape = SubResource("BoxShape3D_1ntq7") - -[node name="Counter" type="StaticBody3D" parent="." index="6" unique_id=1487893288 node_paths=PackedStringArray("audio", "knife", "snap_zone", "synchronizer", "progress_bar") groups=["station"]] +[node name="Counter" type="StaticBody3D" parent="." index="6" unique_id=1487893288 node_paths=PackedStringArray("audio", "knife", "progress_bar", "notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_oapbh") audio = NodePath("AudioStreamPlayer3D") chop_audio = ExtResource("2_lg82m") knife = NodePath("Knife") +progress_bar = NodePath("../ProgressBar3D") +pickup_sound = ExtResource("2_0aadn") +drop_sound = ExtResource("2_0aadn") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -progress_bar = NodePath("../ProgressBar3D") -[node name="CollisionShape3DCuttingBoard" type="CollisionShape3D" parent="Counter" unique_id=706340473] +[node name="CollisionShape3DCuttingBoard" type="CollisionShape3D" parent="Counter" index="0" unique_id=706340473] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00088502467, 1.0178218, 0.0009101778) shape = SubResource("BoxShape3D_24d3s") -[node name="CollisionShape3DCounter" type="CollisionShape3D" parent="Counter" unique_id=895680269] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0) -shape = SubResource("BoxShape3D_24d3s") +[node name="CollisionShape3DCounter" type="CollisionShape3D" parent="Counter" index="1" unique_id=895680269] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5070981, 0) +shape = SubResource("BoxShape3D_3gvdi") -[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Counter" unique_id=1941838513] +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Counter" index="2" unique_id=1941838513] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0) -[node name="GestureArea" type="Area3D" parent="Counter" unique_id=398687137] +[node name="GestureArea" type="Area3D" parent="Counter" index="3" unique_id=398687137] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0438623, 0) collision_layer = 0 collision_mask = 65536 -[node name="CollisionShape3D" type="CollisionShape3D" parent="Counter/GestureArea" unique_id=1450988028] +[node name="CollisionShape3D" type="CollisionShape3D" parent="Counter/GestureArea" index="0" unique_id=1450988028] shape = SubResource("BoxShape3D_vlqg6") -[node name="Knife" parent="Counter" unique_id=1675596942 instance=ExtResource("3_3gvdi")] +[node name="Knife" parent="Counter" index="4" unique_id=1675596942 instance=ExtResource("3_3gvdi")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2838624, 0) +gravity_scale = 0.0 freeze = true release_mode = 1 -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Counter" unique_id=451757283] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Counter" index="5" unique_id=451757283] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0) -[node name="CSGBox3D" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=305755330] +[node name="CSGBox3D" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="0" unique_id=305755330] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.046, -0.025) size = Vector3(0.6, 0.908, 0.55) material = SubResource("StandardMaterial3D_24d3s") -[node name="CSGBox3D7" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1086568272] +[node name="CSGBox3D7" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="1" unique_id=1086568272] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.39999902, 0.22965088) operation = 2 size = Vector3(0.6, 0.22992969, 0.14069825) material = SubResource("StandardMaterial3D_24d3s") -[node name="CSGBox3D2" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=43663195] +[node name="CSGBox3D2" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="2" unique_id=43663195] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) size = Vector3(0.6, 0.202, 0.6) -[node name="CSGBox3D3" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1210567516] +[node name="CSGBox3D3" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="3" unique_id=1210567516] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5617909, 0.060281754) operation = 2 size = Vector3(0.6, 0.12051563, 0.6402156) -[node name="CSGBox3D4" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1533996708] +[node name="CSGBox3D4" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="4" unique_id=1533996708] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 0.08, 0.26034504) size = Vector3(0.25, 0.6, 0.024) material = SubResource("StandardMaterial3D_pt8vn") -[node name="CSGBox3D5" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1983709234] +[node name="CSGBox3D5" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="5" unique_id=1983709234] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, 0.08, 0.26034504) size = Vector3(0.25, 0.6, 0.024) material = SubResource("StandardMaterial3D_pt8vn") -[node name="CSGSphere3D" type="CSGSphere3D" parent="Counter/CSGCombiner3D" unique_id=1785057925] +[node name="CSGSphere3D" type="CSGSphere3D" parent="Counter/CSGCombiner3D" index="6" unique_id=1785057925] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.057649717, 0.12459713, 0.29140875) radius = 0.025492515 -[node name="CSGSphere3D2" type="CSGSphere3D" parent="Counter/CSGCombiner3D" unique_id=1224446005] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="Counter/CSGCombiner3D" index="7" unique_id=1224446005] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.060837455, 0.12459713, 0.29140875) radius = 0.025492515 -[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=187377667] +[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="8" unique_id=187377667] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.514, 0) size = Vector3(0.48251343, 0.037231445, 0.42160034) material = SubResource("StandardMaterial3D_vlqg6") -[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D/CSGBox3D6" unique_id=1146824846] +[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D/CSGBox3D6" index="0" unique_id=1146824846] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1899699, 0.01924485, -0.0039587095) operation = 2 size = Vector3(0.037109375, 0.092285156, 0.26757813) diff --git a/Stations/Hob.tscn b/Stations/Hob.tscn index 05c5465..60064ba 100644 --- a/Stations/Hob.tscn +++ b/Stations/Hob.tscn @@ -2,6 +2,7 @@ [ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_2p1q6"] [ext_resource type="Script" uid="uid://bsn8vhv5adxdo" path="res://stations/hob.gd" id="1_7jc4g"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="3_l0sax"] [ext_resource type="Material" uid="uid://d1djvskv4n4m3" path="res://textures/hob_off.tres" id="4_8qpxk"] [ext_resource type="Material" uid="uid://db7c7w4apwti7" path="res://textures/hob_on.tres" id="6_m7l4u"] @@ -155,12 +156,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, -0.18) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.048892, 0) snap_mode = 1 -[node name="Hob" type="StaticBody3D" parent="." index="6" unique_id=732560156 node_paths=PackedStringArray("animation_player", "notification_audio", "ambient_audio", "progress_bar", "snap_zone", "synchronizer") groups=["station"]] +[node name="Hob" type="StaticBody3D" parent="." index="6" unique_id=732560156 node_paths=PackedStringArray("animation_player", "progress_bar", "notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_7jc4g") animation_player = NodePath("AnimationPlayer") -notification_audio = NodePath("../AudioStreamPlayer3DPulse") -ambient_audio = NodePath("../AudioStreamPlayer3DContinous") progress_bar = NodePath("../ProgressBar3D") +pickup_sound = ExtResource("3_l0sax") +drop_sound = ExtResource("3_l0sax") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") diff --git a/Stations/cube_side_dispense.tscn b/Stations/cube_side_dispense.tscn index ab1cf2a..c68d4cf 100644 --- a/Stations/cube_side_dispense.tscn +++ b/Stations/cube_side_dispense.tscn @@ -1,13 +1,11 @@ [gd_scene format=3 uid="uid://bbg7dwsbxxh1t"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_4m60m"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="PackedScene" uid="uid://e4i6o5oriecx" path="res://items/PickupCube.tscn" id="2_nn8tr"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_0wtc7"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_nn8tr"] -[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] -radius = 0.3 - [sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"] height = 1.0 radius = 0.29541016 @@ -30,52 +28,51 @@ collision_layer = 65536 collision_mask = 65536 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.15291119, 0) -shape = SubResource("SphereShape3D_xmbo2") - -[node name="CubeSideDispenser" type="StaticBody3D" parent="." index="6" unique_id=200950572 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="CubeSideDispenser" type="StaticBody3D" parent="." index="6" unique_id=200950572 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_4m60m") item_scene = ExtResource("2_nn8tr") +pickup_sound = ExtResource("4_0wtc7") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser" unique_id=1974757539] +[node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser" index="0" unique_id=1974757539] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") -[node name="SlideOffDome" parent="CubeSideDispenser" unique_id=1427609426 instance=ExtResource("4_nn8tr")] +[node name="SlideOffDome" parent="CubeSideDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_nn8tr")] -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="CubeSideDispenser" unique_id=1172420592] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="CubeSideDispenser" index="2" unique_id=1172420592] -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CubeSideDispenser/CSGCombiner3D" unique_id=1073546772] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CubeSideDispenser/CSGCombiner3D" index="0" unique_id=1073546772] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) radius = 0.3 height = 1.0 sides = 32 -[node name="Cubes" type="Node3D" parent="CubeSideDispenser" unique_id=100532970] +[node name="Cubes" type="Node3D" parent="CubeSideDispenser" index="3" unique_id=100532970] -[node name="MeshInstance3D" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=2040729886] +[node name="MeshInstance3D" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="0" unique_id=2040729886] transform = Transform3D(0.9709369, 0, 0.23933554, 0, 1, 0, -0.23933554, 0, 0.9709369, -0.0038359165, 1.0421022, -0.1349423) mesh = SubResource("BoxMesh_irf4n") -[node name="MeshInstance3D2" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=2119335322] +[node name="MeshInstance3D2" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="1" unique_id=2119335322] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1336323, 1.0421022, 0.049409628) mesh = SubResource("BoxMesh_irf4n") -[node name="MeshInstance3D3" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=896999260] +[node name="MeshInstance3D3" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="2" unique_id=896999260] transform = Transform3D(0.94914126, 0, -0.31485054, 0, 1, 0, 0.31485054, 0, 0.94914126, 0.021345377, 1.0421022, 0.13508391) mesh = SubResource("BoxMesh_irf4n") -[node name="MeshInstance3D4" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=1055210121] +[node name="MeshInstance3D4" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="3" unique_id=1055210121] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14830339, 1.0421022, 0.054090023) mesh = SubResource("BoxMesh_irf4n") -[node name="MeshInstance3D5" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=1800524097] +[node name="MeshInstance3D5" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="4" unique_id=1800524097] transform = Transform3D(0.966823, 0, -0.2554472, 0, 1, 0, 0.2554472, 0, 0.966823, 0.12695658, 1.0421022, -0.07926583) mesh = SubResource("BoxMesh_irf4n") -[node name="MeshInstance3D6" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=192094054] +[node name="MeshInstance3D6" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="5" unique_id=192094054] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.11111963, 1.0421022, -0.094003916) mesh = SubResource("BoxMesh_irf4n") diff --git a/Stations/dirt_station.tscn b/Stations/dirt_station.tscn index 20cc9d2..aa32f6d 100644 --- a/Stations/dirt_station.tscn +++ b/Stations/dirt_station.tscn @@ -1,7 +1,8 @@ [gd_scene format=3 uid="uid://cnjwtnhwh0i8q"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://q7tpwmrbmu1m" path="res://stations/dirt_station.gd" id="1_hc1d4"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="3_ucg2q"] [sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"] size = Vector3(0.5, 1, 0.5) @@ -13,9 +14,6 @@ albedo_color = Color(0.45262197, 0.26770625, 0.2601587, 1) material = SubResource("StandardMaterial3D_qn1ku") size = Vector3(0.5, 1, 0.5) -[sub_resource type="BoxShape3D" id="BoxShape3D_mep2a"] -size = Vector3(0.81640625, 0.5635376, 0.79351807) - [node name="DirtStation" unique_id=707500902 instance=ExtResource("1_station")] [node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] @@ -24,27 +22,25 @@ station = NodePath("../DirtStation") [node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0313971, 0) collision_layer = 65536 -collision_mask = 65540 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.008666992, -0.11009073, -0.009353638) -shape = SubResource("BoxShape3D_mep2a") - -[node name="DirtStation" type="StaticBody3D" parent="." index="6" unique_id=160842153 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="DirtStation" type="StaticBody3D" parent="." index="6" unique_id=160842153 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_hc1d4") +pickup_sound = ExtResource("3_ucg2q") +drop_sound = ExtResource("3_ucg2q") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="CollisionShape3D" type="CollisionShape3D" parent="DirtStation" unique_id=1400366312] +[node name="CollisionShape3D" type="CollisionShape3D" parent="DirtStation" index="0" unique_id=1400366312] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("BoxShape3D_24d3s") -[node name="MeshInstance3D" type="MeshInstance3D" parent="DirtStation/CollisionShape3D" unique_id=55726639] +[node name="MeshInstance3D" type="MeshInstance3D" parent="DirtStation/CollisionShape3D" index="0" unique_id=55726639] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.008318901, 0, -0.022509098) mesh = SubResource("BoxMesh_ay2w6") -[node name="Label3D" type="Label3D" parent="DirtStation/CollisionShape3D" unique_id=1251766743] +[node name="Label3D" type="Label3D" parent="DirtStation/CollisionShape3D" index="1" unique_id=1251766743] transform = Transform3D(0.9999992, 0, 0, 0, 0.99999946, 0, 0, 0, 0.9999992, 0.002797456, 0.6309581, -0.2812457) text = "Dirt" - diff --git a/Stations/hob.gd b/Stations/hob.gd index 6a30745..88aec49 100644 --- a/Stations/hob.gd +++ b/Stations/hob.gd @@ -40,7 +40,7 @@ func refresh_display() -> void: # Called from Station base class func on_food_item_picked_up(food_item: FoodItem) -> void: SweetLogger.debug("Object picked up: {0}", [food_item]) - + if not food_item: SweetLogger.debug("Held object is not a FoodItem") return diff --git a/Stations/plate_dispenser.tscn b/Stations/plate_dispenser.tscn index 59964a0..dceda37 100644 --- a/Stations/plate_dispenser.tscn +++ b/Stations/plate_dispenser.tscn @@ -1,13 +1,11 @@ [gd_scene format=3 uid="uid://ck5tuftqmyiue"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_jm0ik"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="PackedScene" uid="uid://bp3v1jl8pctro" path="res://Containers/plate.tscn" id="2_tfo2i"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_jgjsq"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_tfo2i"] -[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] -radius = 0.3 - [sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"] height = 1.0 radius = 0.3 @@ -23,94 +21,94 @@ collision_layer = 65536 collision_mask = 65536 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -shape = SubResource("SphereShape3D_xmbo2") - -[node name="PlateDispenser" type="StaticBody3D" parent="." index="6" unique_id=710538846 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="PlateDispenser" type="StaticBody3D" parent="." index="6" unique_id=710538846 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_jm0ik") item_scene = ExtResource("2_tfo2i") +pickup_sound = ExtResource("4_jgjsq") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser" unique_id=831688237] +[node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser" index="0" unique_id=831688237] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") -[node name="SlideOffDome" parent="PlateDispenser" unique_id=1427609426 instance=ExtResource("4_tfo2i")] +[node name="SlideOffDome" parent="PlateDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_tfo2i")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.061363697, 0) -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser" unique_id=696108271] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser" index="2" unique_id=696108271] -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/CSGCombiner3D" unique_id=1339763385] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/CSGCombiner3D" index="0" unique_id=1339763385] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) radius = 0.3 height = 1.0 sides = 32 -[node name="Plates" type="Node3D" parent="PlateDispenser" unique_id=1364909922] +[node name="Plates" type="Node3D" parent="PlateDispenser" index="3" unique_id=1364909922] -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=2128650644] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="0" unique_id=2128650644] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0289642, 0) autosmooth = true smoothing_angle = 103.9 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" unique_id=472067854] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" index="0" unique_id=472067854] radius = 0.2 height = 0.03 sides = 16 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D/CSGCylinder3D" unique_id=7092994] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D/CSGCylinder3D" index="0" unique_id=7092994] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0) operation = 2 radius = 0.15 height = 0.03 sides = 16 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" unique_id=23957958] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" index="1" unique_id=23957958] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0) radius = 0.15 height = 0.02 -[node name="CSGCombiner3D2" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=404631280] +[node name="CSGCombiner3D2" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="1" unique_id=404631280] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0762081, 0) autosmooth = true smoothing_angle = 103.9 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" unique_id=943162425] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" index="0" unique_id=943162425] radius = 0.2 height = 0.03 sides = 16 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2/CSGCylinder3D" unique_id=218364524] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2/CSGCylinder3D" index="0" unique_id=218364524] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0) operation = 2 radius = 0.15 height = 0.03 sides = 16 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" unique_id=1548327331] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" index="1" unique_id=1548327331] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0) radius = 0.15 height = 0.02 -[node name="CSGCombiner3D3" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=1506211353] +[node name="CSGCombiner3D3" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="2" unique_id=1506211353] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1214186, 0) autosmooth = true smoothing_angle = 103.9 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" unique_id=739830577] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" index="0" unique_id=739830577] radius = 0.2 height = 0.03 sides = 16 -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3/CSGCylinder3D" unique_id=1882120753] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3/CSGCylinder3D" index="0" unique_id=1882120753] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0) operation = 2 radius = 0.15 height = 0.03 sides = 16 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" unique_id=1904629745] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" index="1" unique_id=1904629745] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0) radius = 0.15 height = 0.02 diff --git a/Stations/potato_dispenser.tscn b/Stations/potato_dispenser.tscn index ea517ef..a956303 100644 --- a/Stations/potato_dispenser.tscn +++ b/Stations/potato_dispenser.tscn @@ -3,11 +3,9 @@ [ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="2_30d2d"] [ext_resource type="PackedScene" uid="uid://drwuhqb3pjtiy" path="res://items/potato.tscn" id="3_mjqsn"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_8orw3"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_ur331"] -[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] -radius = 0.3 - [sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"] height = 1.0 radius = 0.3 @@ -26,100 +24,100 @@ collision_layer = 65536 collision_mask = 65536 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -shape = SubResource("SphereShape3D_xmbo2") - -[node name="PotatoDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="PotatoDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("2_30d2d") item_scene = ExtResource("3_mjqsn") +pickup_sound = ExtResource("4_8orw3") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser" unique_id=1470079357] +[node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser" index="0" unique_id=1470079357] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") -[node name="SlideOffDome" parent="PotatoDispenser" unique_id=1427609426 instance=ExtResource("5_ur331")] +[node name="SlideOffDome" parent="PotatoDispenser" index="1" unique_id=1427609426 instance=ExtResource("5_ur331")] collision_layer = 4 collision_mask = 0 -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PotatoDispenser" unique_id=1746426494] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PotatoDispenser" index="2" unique_id=1746426494] -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=858311379] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PotatoDispenser/CSGCombiner3D" index="0" unique_id=858311379] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) radius = 0.3 height = 1.0 sides = 32 -[node name="CSGCombiner3DPotato" type="CSGCombiner3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=462017195] +[node name="CSGCombiner3DPotato" type="CSGCombiner3D" parent="PotatoDispenser/CSGCombiner3D" index="1" unique_id=462017195] -[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=359972032] +[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="0" unique_id=359972032] transform = Transform3D(0.7382242, 0, -0.6745554, 0, 1, 0, 0.6745554, 0, 0.7382242, -0.15066577, 1.0408545, 0.076017424) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D" unique_id=1185082311] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D" index="0" unique_id=1185082311] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1791611208] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="1" unique_id=1791611208] transform = Transform3D(0.9110552, 0.37138447, -0.17903017, -0.38194957, 0.92377764, -0.02737245, 0.15521842, 0.09331828, 0.98346263, 0.07202275, 1.0408545, 0.17340909) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D2" unique_id=421732580] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D2" index="0" unique_id=421732580] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D3" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1846822725] +[node name="CSGSphere3D3" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="2" unique_id=1846822725] transform = Transform3D(0.915982, 0, 0.4012194, 0, 1, 0, -0.4012194, 0, 0.915982, -0.023129582, 1.0408545, -0.17174377) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D3" unique_id=186002472] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D3" index="0" unique_id=186002472] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D4" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1463825677] +[node name="CSGSphere3D4" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="3" unique_id=1463825677] transform = Transform3D(-0.6086207, 0, 0.79346126, 0, 1, 0, -0.79346126, 0, -0.6086207, -0.06466554, 1.0408545, 0.15114635) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D4" unique_id=1513828324] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D4" index="0" unique_id=1513828324] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D5" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1192971071] +[node name="CSGSphere3D5" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="4" unique_id=1192971071] transform = Transform3D(-0.9572301, 0, -0.2893278, 0, 1, 0, 0.2893278, 0, -0.9572301, -0.13095556, 1.0408545, -0.10415963) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D5" unique_id=216752249] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D5" index="0" unique_id=216752249] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=502335906] +[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D" index="2" unique_id=502335906] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15826963, 1.0408545, -0.03307341) radius = 0.06 radial_segments = 32 material = SubResource("StandardMaterial3D_d4wpw") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGSphere3D" unique_id=1283597847] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGSphere3D" index="0" unique_id=1283597847] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818) radius = 0.053 radial_segments = 32 diff --git a/Stations/raw_burger_dispenser.tscn b/Stations/raw_burger_dispenser.tscn index acf775a..d8c9a87 100644 --- a/Stations/raw_burger_dispenser.tscn +++ b/Stations/raw_burger_dispenser.tscn @@ -1,14 +1,12 @@ [gd_scene format=3 uid="uid://cwnwo4i28upap"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_gkb3v"] +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="PackedScene" uid="uid://dpot5qie20vf6" path="res://items/burger.tscn" id="2_mep2a"] -[ext_resource type="Texture2D" uid="uid://cexxfyw03hr81" path="res://textures/1.png" id="4_1f5le"] +[ext_resource type="Texture2D" uid="uid://7jt8macx4f5m" path="res://textures/1.png" id="4_1f5le"] +[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_8ou8n"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_mep2a"] -[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] -radius = 0.3 - [sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"] height = 1.0 radius = 0.3 @@ -27,79 +25,79 @@ collision_layer = 65536 collision_mask = 65536 snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -shape = SubResource("SphereShape3D_xmbo2") - -[node name="RawBurgerDispenser" type="StaticBody3D" parent="." index="6" unique_id=235630131 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]] +[node name="RawBurgerDispenser" type="StaticBody3D" parent="." index="6" unique_id=235630131 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_gkb3v") item_scene = ExtResource("2_mep2a") +pickup_sound = ExtResource("4_8ou8n") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -[node name="SlideOffDome" parent="RawBurgerDispenser" unique_id=1427609426 instance=ExtResource("5_mep2a")] +[node name="SlideOffDome" parent="RawBurgerDispenser" index="0" unique_id=1427609426 instance=ExtResource("5_mep2a")] -[node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser" unique_id=378049928] +[node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser" index="1" unique_id=378049928] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="RawBurgerDispenser" unique_id=1275577257] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="RawBurgerDispenser" index="2" unique_id=1275577257] -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=1973748218] +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="0" unique_id=1973748218] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) radius = 0.3 height = 1.0 sides = 32 -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=590219609] +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="1" unique_id=590219609] transform = Transform3D(1, 0, 0, 0, 0.9532462, 0.30219492, 0, -0.30219492, 0.9532462, -0.1276815, 1.0521446, -0.052202225) radius = 0.08300781 height = 0.028435059 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=177377476] +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="2" unique_id=177377476] transform = Transform3D(1, 0, 0, 0, 0.9694763, 0.245185, 0, -0.245185, 0.9694763, 0.08106685, 1.0391599, -0.119440794) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=622291452] +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="3" unique_id=622291452] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.19005477, 1.0198405, 0.049397707) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=703594207] +[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="4" unique_id=703594207] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.026051283, 1.0175319, 0.0042250156) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=955808722] +[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="5" unique_id=955808722] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.05739355, 1.0197641, 0.13219571) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=1066788957] +[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="6" unique_id=1066788957] transform = Transform3D(0.9111114, 0.40515354, 0.075673, -0.41123694, 0.8813372, 0.2326565, 0.027568169, -0.24309555, 0.9696106, 0.14799988, 1.0345665, 0.11710405) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=553053058] +[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="7" unique_id=553053058] transform = Transform3D(0.9541017, 0.29948288, 0, -0.29948288, 0.9541017, 0, 0, 0, 1, 0.041060925, 1.0337045, 0.18304396) radius = 0.08300781 height = 0.03 sides = 16 material = SubResource("StandardMaterial3D_di04w") -[node name="CSGCylinder3D9" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=980376661] +[node name="CSGCylinder3D9" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="8" unique_id=980376661] transform = Transform3D(0.8510151, 0.22759955, 0.47325662, -0.16729629, 0.97174567, -0.16649997, -0.49778044, 0.06251989, 0.8650468, 0.2036674, 1.0335208, -0.024382353) radius = 0.08300781 height = 0.03 diff --git a/Stations/sink.tscn b/Stations/sink.tscn index e1bdde5..f31c0d2 100644 --- a/Stations/sink.tscn +++ b/Stations/sink.tscn @@ -1,18 +1,16 @@ [gd_scene format=4 uid="uid://dvrk268s7gkxh"] -[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] [ext_resource type="Script" uid="uid://byh5j25mwt3oc" path="res://stations/sink.gd" id="1_7hh4b"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_l02yb"] -size = Vector3(0.6, 1.0024658, 0.6) +[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"] +[ext_resource type="AudioStream" uid="uid://b7pl7bdo4rsfp" path="res://sounds/220175__gameaudio__pop-click.wav" id="3_yv1d2"] [sub_resource type="AudioStreamWAV" id="AudioStreamWAV_1pinr"] data = PackedByteArray("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CrmACAuYTljRABRRAEB6ogEAgEAEUHGiACiiigcIIBAID1RAAooohNEAFBwCAQCAQ9UCiAcsaIAKKKKKAEAgEAgEAgMCiinvmiiihQ3zABAIBAIBDNNNEAFFONMAAQAQAQAQAQRABRRRRRRRAAEAEAEAEAAE9UvmmiACigcaBRABABVzAoop75oooooAAQAQCmgUQAKKKKKKKKeqBfEEAEABxoAAQmiACiiiigcaBRAAcaDhAooooooooooAQAQAQCmgQAKeqBRRRRRRAEAEBfEEK64E4wrGiAUUUQqIAIAIAIAIBFFEJogFFFEACFcwA9UQrgRRRRTjTRAKC6ogGeAgAgACinqgUUUUUAe+YAIAIBngC4kFFFFFFFMCACAA5c0SgQ1QKITRAKKKBXNXWEEAEAECinGmnGiiigCuYAe+uqIAAoooooop6oECACACACACAARRQcaIBRQuAgBwhwggAgACQUUUUUUUUQIAIAIAIBTlBFFPVAoooooI0U0CACAHCAKKKcaaFzRRAgAgAgAgAgAEUUUUQmiDPAIVzABVzABAAgFFONNFXNEAQAQrmACACARRQcaIBRRRAAgAgAgAgAgEZ800QCiiigAIAIAIAIAcAohNEAoONEACCACAHvmACAcaaIBRRRRRAAgAgAgAXOUEUUUUUUUU4wRABABABABABEyxoXNFFFMAQA4Q4QQAHA1QKKKKITRAByxyxoEAEAECiE0QCiiinAABABABCuYABpogoooooooCACACACAA4wcaaIKITRBRBAgAXNNNAgAEUUUUUUUUUQcIIAIAIAIABFFPVAFNEFEA40CACFdd8wCaIKKKKKKKAJoOOWNAgAgCiiiinGnLGgAIAIVzCaIAAgp6oAFPfNEAQACAAU0QAARRRRRRRRRRAgAEAAq5gAEEUUUU400QUQAAKusIIVzABFFFFFFFFEQACACminLGgA+saIKKKKKKBxoEAAgK5gACinqgCmiChQBCaKKITRngDEgoooXNNNECAAQACAmnCABRT1QAKKKKAgAEHdAAgAECE0QUUUUUUQVzAVzAAIV1BFFFFFFFFFEIQQACE0UUUQT3zRRE8D3zBFFFFFFOEEAEHHLGiA40QQAIABAVzAVzBFFFPVAAoXMAACAAUUUUUwTTRKaIKDjRDVFFFFFFFFEAUUUUUUUU4wRRRT3zCaCaBNEFFFC4kFEAAUUUUU9UUQTjTljRAcaIBFFFBxoOEFECnqgAUHGiCgRQcaBAAKKeAohNEz6pWNEPmFcwAA4SgQBRRE+saIKKAAAooONAgAECiiiiiiinGgRThBRRRRRRAlBxpogooooEUUUUUU9UUQcaaIKKe+aKBBxoEAAp75gCinGmiCinvgADhDhAcaBACxgEFBxogooACJ4HqiinqgKKKKKKKKKKAooooooooooCnqgAUUUUUQKKKKKKKITRBFFFFFFFFFAE0CAAQmg9UQcaIcYVhMsaBFFFFFFPVFECCiiiiiig4wRRRRRT1RT3BEFEJoNAAhMNd8wAChc00QQuuqABRRQcAoPVFFOEBxwGiHGmiCiiigsaBAAKKe+YAoooop75oooAAUUUUU4QUQKKe+aKKKKKBFEJoEAAohMHqgARPAUUUQQIABRRRRQcBFFFFFFFPfMGg4QUUUUU9QRRRRRRRRRRBFPfMAB75hMEUHGiCig40QQTQAITQIAAAONNEPVAAooHC800CACmgQKM+IKDjRBRAAAoooooooMEUUU9UmgF8QjQFzTTQIABAFFC5ppogp4EUUUUUUUUUQqABQcJQKKeBOEFFOEFFFEKgDPrvA980QRRRRRRRRRRBEJogop6oAoEU9ULiQUUUQaIKcaaIKKKBFEJoEAAooMCiiiiiiiihQjRTRngKuYBDEgooooooooEUUHGg4QHHAIArEQUABAoAAAAAQAAAAH+cP2Q3aw2Ov//AAH//wAC/uD97N9mNegCiiiiiiinvgsaBABn3zTTBoooopxpogoECAAUU9UHGgKKKKKKKKKKAEAAhNAgAFECiiiiiiiiigRRCaKaBAAKAoooohNEFFECiiiinqiiigRCaIKKFzTTAooooONAgAEEQUUU980UUwThBRRRRRRRCNNEFFFONXME98wCnqiiiABRRRRRRRRRBNFNAgAFFFEEQmiCinGmiARThBRRRRRTAopxpomeAXENUUUUQmgQAAIKKKKKKKKKAooooooopwgCnGmiCiiigwKKKKKFzReqCNEFFEJoh6oCiiiinBcwAwABRRT1QAKKCNAgAFFFFFECiiiiinqgmgRRRRRRRE+IAApoghOWNEECiinqiinA0ART1QAKDlzKBxoC4kFFFFEGiCiiE04wCgRT1T3zADjQAhNEFEJoh74CAAUUUHGgHAsaaIDjRBRRBoEAAoooopwEUUUUURPrHAIDjQIADhBRCxogop6oAFEAnPmmmgQACART31heqABRCfC5gFFFFFEEUUU98wCiigRRRRRRRRThAooop6pNAAoAUUUUUURPiAKKKKDjRAcaAooop6oooooCHvmALiQUUQKKKKKKeqKIBFFFFBxogoME5Y0CAAUUHAjTl1QAKe+uBogooooooooKgAUUU405ZQKKKKKKKKKKDWMAAAoFFBwCnCCiJ8Q9UQaIKKKKKcaaBPfWNNAgAFEBdY00QUUUUQRRRRRRRRRRBFFEJogoooME98wCiiiiigjRBRT3zAKKAooooifOMFMCiinqgAQmiARBRRRRRRRTAopxpoNAAp4NUUUQmiCinAqABRT1QAITAgoooooooooEQRPiCnqgAQe+uqKITRBRBFFFFFFONNEEUUUUUURPiABRTjTRBRT3AooooooooooMwCiiihcSCgKKKKKKKeoTAhNEFEJogooEQUUUUUHGiAeqKKKKKcaaAooohEoEAAoCCiiiiiinqgKKKKKKcIKKAooooooooooCiiiiiiiingKKKKKKeqKKCooooooONEECiinvrvrqigRRRRRRCaIcAop75gFFOFwCCiinBcwCigaaIeqITTjAApwgoooooooCiiiiiinvmAKITljljRBQAFFFFEJogooHGiCiiinqiAKKITRBRRRRBNEOEpogoooEUUUU400QUQKKKKKKe+YBBFFFFPVFEJwEU9UUUUULmgscsIAAAAAACogooooop74AAAAAAAAAAAYAcaIKeqKKAAAAAAAAAAACiiinCU0Q9QAAAAAAeYKKBFFFFFFFFFECiiiiE0QUUQRRRRRT3zV1BFBxywgoPVENUUUUU4QUUQT1RRRRRRRRBFFFFPVFFFEEUUUUHGiHvgRRRRRRRRRRC75gFFFEJogEUUQnLGiCigKKKKKKKcaaAooooooONEECCiiiiiiingRRRRRRRRRTCooONEONNEENUUUUUUURPgRRQccsaIKKAgop6ooooooHC400QUUUUAKKKKKITTl1Bxogop75gEIEUUQmiCiigwcsaIKDjQuYCNEFFFFFFFEAUUUUUUHGiAT311RRT1RRAoooooopxpoEUUUUU9UUUQIKKKKKKKKKBFFFFFFFFFECiiiiiiiE5QRRRRRRRCaI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00QCAQIABABRAAcaAANFBooq6xoCiAAQACAAQAaIKaIBAIBAAAgAEIgGWOMHvrGmg400QARAAIRAAIABAgEAgEFOWEwACnGiAGnGiAsaIBAIAaKIAONAgNAApoAAQCAQA0U40QIABAAIABAAAAgEAgEAgEACAA0AQACAAQIBAKaAKcaaAAApopoAgAgCAQCAVdY00QCaccscsaIBAAgEAgEAgOMAACAAQACAAARAF1jll3zTAgCsRBQAECgAAAAAAAEAAvJ8CEz6diP2AAAAAAAB///2qg4W40AxFAsKaIABAAaABEBy6oPVEAgCUAQACAAQiABAIBADljRAAAEAAgABxooCAQCAQCAQUwIABCcaaAJlBEFNEAgEAgwI40QAUQACAA+aaIBAIBAIAONFEJpoAgAAQCAQCAQCAQIABAAIABAAAAgEAgFXWNECAAQACEQACABAIBAIBAIBAAEAAgAEGWMACAQCAQU0QQjRABRAKIABCfNNEAq6xpoAACACiAAGgAIAcsacaJTlAEAAgAEAAgAN80SnGACAQABV1jRAIABCAgEBxogEAgEGgAQAHGiiAAAIBAIDjRAIAEAAgAFNFFMAQCA5dY004wRRAAIABAABBOfNEAgEAgEAAU40QCAAQAAKusaaDjRKAANFEAyxxpwHLvrGmiAQCAaIBAAIABAAAEApoAEAgEACAA0AQAQACAIBAIBAIBAIAAEAAgAEAAgAQA5Y0QA0HAABAC+aIBAABpogEAgEAq4CAAQACAAQAAssaIDjRAIXAgB6xpogAEAM0QCAQHGnGABRAAIABABRBNBoFNEAgC4AACmE0U5dYwsaKsaDjTQcBEAAgAEAogELGg405Y0QCARAADjRRAAIAEANFEAgz5oAAQAUQAGgCAaIBAIBAIM+AAgAEAAppxwGmiAQCAQA0QsaIBAAKuaaBEAgEAgEAgEACACAAQmiiAAe+saaIBAIAAEBNONEAgAAQCAQCAQCAQKIADQAaKIAAAgEAgEAgEAAQACAAQACAAIKaIBAIM+aANAEAONFEAAHLGiAQCAQrABAKIABTQAIBogEAgOXWNMAAQE0QiCiAARAIAaKIBAcAEJyxogEAAgGiAQCAQCAQATljRAIABCcApoAxopxpooGmgCUHGiiAAsaIBAIDjRAAEBNFEAAhEACZY0VYSnGEwAIO+scscaI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EAAnHAAAAAKAIAAABogFONAh7xoAAUUQAA800AaIBAAAQAT1ANAEIgAAAAAI0QCAAAiiAQABQBAAABQBAAyxogONEAAAmgmgAAAAAABAAAQAABAAAAOEEAAAAAAAEAAAQDLrHAAAAAAABQKcBogFOOONAAAGiiAAAAAAAAQMaIBAAAQAAAAAAAAAAAAAAQAAAiiiigAAAAKAIAAAAooooooooooAUUQAAAAAAAKKKKKKcYAIAAAAAAAAoAgAAAgFdZUQCAAAAKAIAAAAAAPfWWNNEAgAAAAAAAAAHAAACAAAIAACAggAAAAAAAAAE440CiiinABQBAAAAAAABhOOEyxooooDLGg0400QAAKKKBhRRTjAAAAAAAAoAOMA0wGAQAAEYwjRAKIKIAAABAABAJxxoOMAAAY0DLGiAARAIAAThTRAAAxoAAoAgAECADGgUQCAAARAKIAAAAAABOFOWOWONEAAAAAADGgAUwcacu++qacsCNNANAEAAAAGiE400QCA9wABQBAAAAAADWNFFEIoAIAAUAQAAUCnGgAAIAACAAAIAogAAAAAAAADLCiAAAgAAAABQBCaAAAAAgAAS66ogB4AAAAAAAAAAAsaIBAAAQAAABwNFNEApxoAQCg40QA4UwaKIAAAAABQBAoGPWXWNFEAQAAAAAAAAARRRRTl31jCAAAAAAAopxoHGldY40QCAAaAIAAKAccaAAIAAAgAAIACiiAAAAAUAQCKKKKKKKKKAJxoogAAAAMCgYUUUUUUUQzRTQBARBjRBFEIoooPWMAEQAAAACgCAAIAAT1jRAe+AFONNAEAAogLGiiiiiiiigAAAAAAABQAAoohFFFFFFEHCigACgCAnARRTjTTljRRC5poBoAgAAAEUUURLCiAAQAAMaAAAAAABApoONEAgAAAAAAAAACgCACAATjjRAIAAAAAFAoohEAAAgAACAAAgAAADzl1jlRRAAAgAAIAAAgADLrGiAAUAwAACKIBBTRBCFFAAAAAAAAE0QCADHHGiAKAIAKaKcaaAFOONEAgAAIDKiiAAACgCAKIDjTRAIAAAAAAAoBwooAAgAACAAAgAAAAAAAeaKaAAAgAAIAJxogCAAAACgCAnABAAARjQACcBoogAAAAAoACmiAQCiAQAAIAAAAAAAAKAAIooooooooCiAUQAAACgAKInzTRAIAAAhNAAAAxoAAAgAACAAAgAAAAAAABQBAAAAgAAIAAAgEAAAUUQAAAAARBTRBljjTjAAxoAAABwggEAY0CAAAiiAAAKBRRQAKAAEAABAJ6xogCAAAAAAAACgBAAAQMaIAeABoEAONFEAoLGmmA00QCCgIAAAAAAAAABogONNFOONAAAAAAUACAEwKKKe+saKKKBFFONGVAAAACiiiiiiiiigAAAAAAAKKaAoopxpoFEIoCAAAAAAAAAAKKKIRRRTllAAAAAFAEAAAEQCAAAgEUnAAAAKAIAAABAogAAIAAAgMEACgAAAAAAA1RAIAACAAAAAAAAFAEAAECAAEYUAAEAARQACAAABQBAAEAABAAAEAAAAAAAAAAAQAAQAABAAAEBABwpogAFAELrGrGmgUU4wAAAKKcaIAABNNNNFFFB6wAUA0AQAAAAAYBAAAQO+saAAAAAFAFNAAHvrGE440QCAIArEQGIwUYAAAAAQAAAAHwCgBo96obwgAAAAEAAAAA8RkCg+BzJPMAACgQAAAAAABRAIAACAAAB5oogAAAoAgHGmiAQAY44wAAAAAKAaAIBEAgAAIy76oAAAUAQADLrgaaDjRAIAACBogAAAFAEAAAAACnHGiCmgAAAAAKBAAAAgEAogEFNAoAACgCAAAAAAIRRRRTjADTAAAAAAAAAFAEwnHGiA5ZUQKccaAAAABRAAgAAIAAFNMAACgCAAAAAAljCuZTQKKKAAAAoAgAAAACiinvrGiiiAAAAAKAIRAABFFFFFFFFFEAAAAAAACgCARRRRRRRRRRAAAAAAAyxogEUUU400VdYwAAAAAAAMsaBONNEAgAAIACAUQAAAAACgATjjl1hAAQAAgAAFFNEAAAAAQAAEAAAwAAAAAAAAAACNOWNEAgAAIAAHmgQAAAAAAATjjRAcaaAAAAAAAopxoCnHGiAQDGgAaAIAAAAKKaAAIAAFNEAgACAAAAAAAAAAACAAAIAACAAAAAAAAAAAAAACADHHGg4wAAAcIIAAAABFXWMJxxogEAAAAAAAAAYwBTRAIAACMaBGNFEAAoAgAAAAjLrGiA4wAAKAIAKIMaBNEAgAAIAAAAAAAAAAAUAQIAACAAV1jRAAAAAGXNFAAEUUUUUUUUUQAAAKAIAAAABFFFFABAAAMAAAY0AAAAAAjTRTjjRAD1AAAFANAEAAEMwAAACCmiAQQBAAAAAAAAAAogEAABGNAAAAACgCAAAAAMccaIDjTRAAAAAAoAgGUAZYUHCAHLGgl1RRAKIAAAAooooooooooAAAAAAAAAAAcsssaBAAAQAAAAAAAAAAoAAAHCACAADAAKaAAAAAAABz77yogEAogAAAAUA4UQiABAAAl1lRAIAAAAAAAAAAAAAY440QA84wAAAAAAAAAACNEApxxogEAAAAAAAAAAAAAesaKKKKKKAAAAAAAABOACnGminHHGjAAAAAAAAAAABoAAIJwpogEAAAAAAAAAAAAAAQThTRAcAAAAFAEAAAAGmiAU440CigAMsaDRRAABAoohEJwgBOMECAAACgCAAAjRAIAACAAAAAAAAAAFFEACAHrGiiiiigAAAAAABQKKAooopxpogEACgAAAAAAAUQBQAAQCcaIBBEAAAAAFAEAAAAEAAAQA9QBRAAAAAAAACNFFFFFFFFEAAZY05Y0QAARQAQATjQaKAAAAAFFEAAACAAAgAACACgAAADhBAAAAAAPWNFFFFFEAAACgCigAAACKKKIRTjTRAAFAEAAAFAAACAAAgAACAAKAABQBAAKIAGOONEAgAAIACgCE0AAAAAAATjjRAIAAAAAAAAAFAEAAgAE440QCAAAAKAIAAAAAAoAAIIoAEAAAAAAAAUCAAAAQAABAAAQCAAoAgAAAAAAHrCAAgdY0UwAAAAAAABRRCONAooop764AAAAUU400UQ+aIBAAAQACAAAAAAAoAgAHHGiAQAAEAAAAAAAAAADhAAEAABGNAAAAQArCmiAUQAQACccaIBAAAAoAgAFONOMAEAAAQADHHARRAAAKKIKIBogpogONNEAAAAAAAACgCAIAACAAAIBlAJoAFEFEAAAI0000400QCAAAAAKBRRQAAGWNEAgAoAAAAAAAAmgiAACAAAIAAARRAAAAAAAAoAgEUU400QU0UwAABQBAABQBCONAhFFFFOUAAAAAGAAAAA3hAAKAAAAA") format = 3 stereo = true -[sub_resource type="BoxShape3D" id="BoxShape3D_ai6d4"] -size = Vector3(0.5, 0.128, 0.5) +[sub_resource type="BoxShape3D" id="BoxShape3D_l02yb"] +size = Vector3(0.6, 1.0024658, 0.6) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0gbf8"] @@ -183,91 +181,90 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3229032, -0.035980098) [node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9525887, 0) collision_layer = 65536 -collision_mask = 65540 stash_sound = SubResource("AudioStreamWAV_1pinr") snap_mode = 1 -[node name="CollisionShape3D" parent="SnapZone" index="0"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.02560103, 0) -shape = SubResource("BoxShape3D_ai6d4") - -[node name="Sink" type="StaticBody3D" parent="." index="6" unique_id=2055277359 node_paths=PackedStringArray("snap_zone", "synchronizer", "progress_bar") groups=["station"]] +[node name="Sink" type="StaticBody3D" parent="." index="6" unique_id=2055277359 node_paths=PackedStringArray("progress_bar", "notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]] script = ExtResource("1_7hh4b") +progress_bar = NodePath("../ProgressBar3D") +pickup_sound = ExtResource("3_yv1d2") +drop_sound = ExtResource("3_yv1d2") +notification_audio = NodePath("../AudioStreamPlayer3DNotification") +ambient_audio = NodePath("../AudioStreamPlayer3DAmbient") snap_zone = NodePath("../SnapZone") synchronizer = NodePath("../MultiplayerSynchronizer") -progress_bar = NodePath("../ProgressBar3D") -[node name="CollisionShape3D" type="CollisionShape3D" parent="Sink" unique_id=964735164] +[node name="CollisionShape3D" type="CollisionShape3D" parent="Sink" index="0" unique_id=964735164] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.507675, 0) shape = SubResource("BoxShape3D_l02yb") -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Sink" unique_id=311064646] +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Sink" index="1" unique_id=311064646] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.50644207, 0) -[node name="CSGBox3D" type="CSGBox3D" parent="Sink/CSGCombiner3D" unique_id=1147823280] +[node name="CSGBox3D" type="CSGBox3D" parent="Sink/CSGCombiner3D" index="0" unique_id=1147823280] size = Vector3(0.6, 1, 0.6) -[node name="CSGSphere3D" type="CSGSphere3D" parent="Sink/CSGCombiner3D" unique_id=2129615695] +[node name="CSGSphere3D" type="CSGSphere3D" parent="Sink/CSGCombiner3D" index="1" unique_id=2129615695] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0015575886, 0.5082159, 0.0030483976) operation = 2 radius = 0.25 radial_segments = 20 smooth_faces = false -[node name="CSGTorus3D" type="CSGTorus3D" parent="Sink/CSGCombiner3D" unique_id=2055166617] +[node name="CSGTorus3D" type="CSGTorus3D" parent="Sink/CSGCombiner3D" index="2" unique_id=2055166617] transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 0.84928787, 0, 0.5107032, -0.113008186) inner_radius = 0.15 outer_radius = 0.2 sides = 16 -[node name="CSGBox3D" type="CSGBox3D" parent="Sink/CSGCombiner3D/CSGTorus3D" unique_id=1722820789] +[node name="CSGBox3D" type="CSGBox3D" parent="Sink/CSGCombiner3D/CSGTorus3D" index="0" unique_id=1722820789] transform = Transform3D(0.5128697, 0, 0, 0, 0.3125893, 0, 0, 0, 1, -0.29027426, 2.3841858e-07, 0) operation = 2 -[node name="CSGBox3D2" type="CSGBox3D" parent="Sink/CSGCombiner3D/CSGTorus3D" unique_id=1812160684] +[node name="CSGBox3D2" type="CSGBox3D" parent="Sink/CSGCombiner3D/CSGTorus3D" index="1" unique_id=1812160684] transform = Transform3D(0.7700283, 1.4431469e-09, 0.15563977, 3.974847e-09, 0.3125893, -6.8032304e-09, -0.38511342, 6.1118572e-09, 0.3111993, -0.2084502, 8.34465e-07, 0.36219144) operation = 2 -[node name="CSGBox3D3" type="CSGBox3D" parent="Sink/CSGCombiner3D" unique_id=641957703] +[node name="CSGBox3D3" type="CSGBox3D" parent="Sink/CSGCombiner3D" index="3" unique_id=641957703] transform = Transform3D(1, 0, 0, 0, 0.9367828, -0.34991136, 0, 0.34991136, 0.9367828, 0, -0.16928616, 0.2663328) operation = 2 size = Vector3(1, 1.2053223, 0.352417) -[node name="bubbles" type="CSGCombiner3D" parent="Sink" unique_id=1624244242] +[node name="bubbles" type="CSGCombiner3D" parent="Sink" index="2" unique_id=1624244242] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.50644207, 0) visible = false -[node name="CSGSphere3D" type="CSGSphere3D" parent="Sink/bubbles" unique_id=1363004819] +[node name="CSGSphere3D" type="CSGSphere3D" parent="Sink/bubbles" index="0" unique_id=1363004819] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.09462261, 0.50874513, 0) radius = 0.08 material = SubResource("StandardMaterial3D_0gbf8") -[node name="CSGSphere3D2" type="CSGSphere3D" parent="Sink/bubbles" unique_id=1570986332] +[node name="CSGSphere3D2" type="CSGSphere3D" parent="Sink/bubbles" index="1" unique_id=1570986332] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.069681, 0.46531874, 0) radius = 0.08 material = SubResource("StandardMaterial3D_0gbf8") -[node name="CSGSphere3D3" type="CSGSphere3D" parent="Sink/bubbles" unique_id=1342281109] +[node name="CSGSphere3D3" type="CSGSphere3D" parent="Sink/bubbles" index="2" unique_id=1342281109] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03321421, 0.48187655, 0.15330702) radius = 0.08 material = SubResource("StandardMaterial3D_0gbf8") -[node name="water" type="CSGCombiner3D" parent="Sink" unique_id=1050686091] +[node name="water" type="CSGCombiner3D" parent="Sink" index="3" unique_id=1050686091] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.50644207, 0) visible = false -[node name="CSGBox3D" type="CSGBox3D" parent="Sink/water" unique_id=1224655006] +[node name="CSGBox3D" type="CSGBox3D" parent="Sink/water" index="0" unique_id=1224655006] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3997054, 0) size = Vector3(0.5, 0.1, 0.5) material = SubResource("StandardMaterial3D_bvwq1") -[node name="AnimationPlayer" type="AnimationPlayer" parent="Sink" unique_id=1495781056] +[node name="AnimationPlayer" type="AnimationPlayer" parent="Sink" index="4" unique_id=1495781056] libraries/ = SubResource("AnimationLibrary_u2x8c") -[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Sink/AnimationPlayer" unique_id=513849644] +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Sink/AnimationPlayer" index="0" unique_id=513849644] stream = SubResource("AudioStreamWAV_ai6d4") -[node name="GPUParticles3D" type="GPUParticles3D" parent="Sink" unique_id=1688415718] +[node name="GPUParticles3D" type="GPUParticles3D" parent="Sink" index="5" unique_id=1688415718] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0002603531, 1.154368, -0.03759767) visible = false process_material = SubResource("ParticleProcessMaterial_hrheb") diff --git a/UI/shop.tscn b/UI/shop.tscn index 54ec14e..c1024b5 100644 --- a/UI/shop.tscn +++ b/UI/shop.tscn @@ -4,8 +4,8 @@ [ext_resource type="PackedScene" uid="uid://u7rpukx5ebqo" path="res://UI/shop_station_panel.tscn" id="1_pogqh"] [ext_resource type="PackedScene" uid="uid://efaec6ymgabo" path="res://stations/Counter.tscn" id="2_35otv"] [ext_resource type="Texture2D" uid="uid://dhja7i8tgb3ao" path="res://textures/shop/counter.png" id="3_74fni"] -[ext_resource type="PackedScene" uid="uid://j7caslh27nor" path="res://stations/Hob_old.tscn" id="4_l3qkl"] [ext_resource type="Texture2D" uid="uid://br4ytiocwouqh" path="res://textures/shop/hob.png" id="5_2k6ie"] +[ext_resource type="PackedScene" uid="uid://b052o1fgwq5bw" path="res://stations/Hob.tscn" id="5_6lkkh"] [ext_resource type="PackedScene" uid="uid://dvrk268s7gkxh" path="res://stations/sink.tscn" id="6_rktus"] [ext_resource type="Texture2D" uid="uid://gi6bksvs8ybx" path="res://textures/shop/sink.png" id="7_4titf"] [ext_resource type="PackedScene" uid="uid://caf0xanmxbshy" path="res://stations/table.tscn" id="9_84wnh"] @@ -59,10 +59,9 @@ offset_left = 20.0 offset_top = 80.0 offset_right = -20.0 offset_bottom = -20.0 -current_tab = 1 +current_tab = 0 [node name="Stations" type="GridContainer" parent="TabContainer" unique_id=189446761] -visible = false layout_mode = 2 columns = 6 metadata/_tab_index = 0 @@ -76,7 +75,7 @@ cost = 30 [node name="Panel2" parent="TabContainer/Stations" unique_id=467593590 instance=ExtResource("1_pogqh")] layout_mode = 2 -station_scene = ExtResource("4_l3qkl") +station_scene = ExtResource("5_6lkkh") icon_texture = ExtResource("5_2k6ie") station_name = "Hob" cost = 60 @@ -103,6 +102,7 @@ station_name = "Plates" cost = 80 [node name="Food" type="GridContainer" parent="TabContainer" unique_id=422899445] +visible = false layout_mode = 2 columns = 6 metadata/_tab_index = 1 diff --git a/abstract/station.gd b/abstract/station.gd index 6f60323..c90dc59 100644 --- a/abstract/station.gd +++ b/abstract/station.gd @@ -10,6 +10,8 @@ extends Node3D @export var drop_sound: AudioStream ## Node references. These are all required snd should be set in the inspector +@export var notification_audio: AudioStreamPlayer3D # Short sounds like pickup or complete +@export var ambient_audio: AudioStreamPlayer3D # Releating sounds like a cooking noise @export var snap_zone: XRToolsSnapZone @export var synchronizer: MultiplayerSynchronizer @@ -26,6 +28,10 @@ var enabled: bool: # When disabled the station only updated display and sounds. # The child station has to call super.ready() for this to be called func ready() -> void: SweetLogger.debug("Station {0} ready", [name]) + if not notification_audio: + SweetLogger.warning("{0} missing notification_audio reference", [name]) + if not ambient_audio: + SweetLogger.warning("{0} missing ambient_audio reference", [name]) if not snap_zone: SweetLogger.warning("{0} missing snap_zone reference", [name]) if not synchronizer: @@ -65,6 +71,7 @@ func _on_object_dropped_handler(item: Node3D) -> void: func _apply_object_picked_up(item: Node3D) -> void: SweetLogger.debug("Pickup: {0}", [item.name]) + Helper.play_sound(notification_audio, pickup_sound) on_object_picked_up(item) var food_item = Helper.find_food_item(item) if food_item: @@ -72,6 +79,7 @@ func _apply_object_picked_up(item: Node3D) -> void: func _apply_object_dropped(item: Node3D) -> void: + Helper.play_sound(notification_audio, drop_sound, 0.8) SweetLogger.debug("Drop: {0}", [item.name]) on_object_dropped(item) var food_item = Helper.find_food_item(item) @@ -99,17 +107,16 @@ func _clients_on_object_dropped_handler(item_path: NodePath): ## Virutal methods # The child station implements these if it cares about them. func on_object_picked_up(_item: Node3D) -> void: - SweetLogger.debug("Not implemented in {0}", [name]) + pass func on_object_dropped(_item: Node3D) -> void: - SweetLogger.debug("Not implemented in {0}", [name]) + pass func on_food_item_picked_up(_food_item: FoodItem) -> void: - SweetLogger.debug("Not implemented in {0}", [name]) + pass func on_food_item_dropped(_food_item: FoodItem) -> void: - SweetLogger.debug("Not implemented in {0}", [name]) - + pass func refresh_display() -> void: pass diff --git a/abstract/station.tscn b/abstract/station.tscn index 92e8cd6..9aa9cf1 100644 --- a/abstract/station.tscn +++ b/abstract/station.tscn @@ -13,9 +13,9 @@ [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1536666704] replication_config = SubResource("SceneReplicationConfig_0o2ds") -[node name="AudioStreamPlayer3DPulse" type="AudioStreamPlayer3D" parent="." unique_id=1976975302] +[node name="AudioStreamPlayer3DNotification" type="AudioStreamPlayer3D" parent="." unique_id=1976975302] -[node name="AudioStreamPlayer3DContinous" type="AudioStreamPlayer3D" parent="." unique_id=925832848] +[node name="AudioStreamPlayer3DAmbient" type="AudioStreamPlayer3D" parent="." unique_id=925832848] [node name="ProgressBar3D" parent="." unique_id=654673176 instance=ExtResource("2_be8yi")] diff --git a/abstract/work_station.gd b/abstract/work_station.gd index cb45a70..bd6537b 100644 --- a/abstract/work_station.gd +++ b/abstract/work_station.gd @@ -11,8 +11,6 @@ extends Station @export var complete_sound: AudioStream ## Node references. These are all required snd should be set in the inspector -@export var notification_audio: AudioStreamPlayer3D # Short sounds like pickup or complete -@export var ambient_audio: AudioStreamPlayer3D # Releating sounds like a cooking noise @export var progress_bar: ProgressBar3D @@ -24,10 +22,6 @@ var result_id: String # Station active if not empty. What FoodItem id the conver # The child station has to call super.ready() for this to be called func ready() -> void: super.ready() - if not notification_audio: - SweetLogger.warning("{0} missing notification_audio reference", [name]) - if not ambient_audio: - SweetLogger.warning("{0} missing ambient_audio reference", [name]) if not progress_bar: SweetLogger.warning("{0} missing progress_bar reference", [name]) diff --git a/addons/sweet-logger/sweet_logger.gd b/addons/sweet-logger/sweet_logger.gd index e81871e..798a285 100644 --- a/addons/sweet-logger/sweet_logger.gd +++ b/addons/sweet-logger/sweet_logger.gd @@ -102,11 +102,11 @@ const LOG_TYPE_COLUMN_WIDTH = 13 ## Default mm:ss:ms; with SHOW_TIMESTAMP_HOURS, hh:mm:ss:ms const TIMESTAMP_COLUMN_WIDTH_MMSSMS = 9 const TIMESTAMP_COLUMN_WIDTH_HHMMSSMS = 12 -const SCRIPT_FUNCTION_COLUMN_WIDTH = 50 +const SCRIPT_FUNCTION_COLUMN_WIDTH = 46 const TRUNCATE_PEER_NAME = 6 const TRUNCATE_SCRIPT_NAME = 20 -const TRUNCATE_FUNCTION_NAME = 30 +const TRUNCATE_FUNCTION_NAME = 26 #===================================================================================# # CONFIGURATION @@ -229,7 +229,7 @@ func _print_rich_log(peer_id_str: String, log_type: String, message: String, scr var peer_padded = _truncate_text(_pad_text(peer_label, PEER_ID_COLUMN_WIDTH), TRUNCATE_PEER_NAME) # Format peer ID with its background color - var peer_formatted = _format_rich_text(peer_padded, peer_color.bg_color, peer_color.text_color) + var peer_formatted = _format_rich_text(peer_padded + " ", peer_color.bg_color, peer_color.text_color) # Format log type with its background color var log_type_padded = _pad_text(log_type_label, LOG_TYPE_COLUMN_WIDTH) diff --git a/global/helper.gd b/global/helper.gd index 8b76ef5..080f570 100644 --- a/global/helper.gd +++ b/global/helper.gd @@ -53,3 +53,17 @@ static func get_node_from_path(from: Node, node_path: NodePath) -> Node3D: SweetLogger.warning("Could not resolve node from node_path: {0}, are the trees in sync?", [node_path]) return null return item + + + +static func play_sound(player: AudioStreamPlayer3D, stream: AudioStream, pitch_scale: float = 1): + if not player: + SweetLogger.warning("AudioStreamPlayer3D is null, can not play sound") + return + if not stream: + SweetLogger.warning("AudioStream is null, can not play sound") + return + player.pitch_scale = pitch_scale + player.stream = stream + player.play() + SweetLogger.debug("Play sound: {0} with pitch_scale: {1} on {2}", [stream.resource_path, pitch_scale, player.get_parent().name])