diff --git a/Stations/BurgerBunsDispenser.tscn b/Stations/BurgerBunsDispenser.tscn index cd7b52b..3cc1387 100644 --- a/Stations/BurgerBunsDispenser.tscn +++ b/Stations/BurgerBunsDispenser.tscn @@ -1,22 +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="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="1_p30r1"] -[ext_resource type="PackedScene" uid="uid://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="1_u2p81"] [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="SceneReplicationConfig" id="SceneReplicationConfig_u2p81"] -properties/0/path = NodePath(".:position") -properties/0/spawn = false -properties/0/replication_mode = 1 -properties/1/path = NodePath(".:rotation") -properties/1/spawn = false -properties/1/replication_mode = 1 -properties/2/path = NodePath(".:visible") -properties/2/spawn = false -properties/2/replication_mode = 1 - [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] radius = 0.3 @@ -27,30 +15,26 @@ radius = 0.3 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vlqg6"] albedo_color = Color(0.6784191, 0.54546416, 0.016760282, 1) -[node name="BurgerBunsDispenser" type="Node3D" unique_id=1410160280] +[node name="BurgerBunsDispenser" unique_id=707500902 instance=ExtResource("1_station")] -[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_u2p81")] +[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] station = NodePath("../BurgerBunsDispenser") -[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=904562637] -root_path = NodePath("../BurgerBunsDispenser") -replication_config = SubResource("SceneReplicationConfig_u2p81") - -[node name="BurgerBunsDispenser" type="StaticBody3D" parent="." unique_id=1720683779 groups=["station"]] -script = ExtResource("1_myl3s") -item_scene = ExtResource("2_1q74o") - -[node name="XRToolsSnapZone" type="Area3D" parent="BurgerBunsDispenser" unique_id=805334513 groups=["station_zone"]] +[node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00070536137, 1.0162505, -0.002165556) collision_layer = 65536 collision_mask = 65536 -script = ExtResource("1_p30r1") snap_mode = 1 -metadata/_custom_type_script = "uid://cquqe4f1m1sw6" -[node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser/XRToolsSnapZone" unique_id=1104626493] +[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"]] +script = ExtResource("1_myl3s") +item_scene = ExtResource("2_1q74o") +snap_zone = NodePath("../SnapZone") +synchronizer = NodePath("../MultiplayerSynchronizer") + [node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser" unique_id=1470079357] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") diff --git a/Stations/cube_side_dispense.tscn b/Stations/cube_side_dispense.tscn index 5f785e6..ab1cf2a 100644 --- a/Stations/cube_side_dispense.tscn +++ b/Stations/cube_side_dispense.tscn @@ -1,22 +1,10 @@ [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://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="1_qooyy"] [ext_resource type="PackedScene" uid="uid://e4i6o5oriecx" path="res://items/PickupCube.tscn" id="2_nn8tr"] -[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="3_ahn1e"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_nn8tr"] -[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_0wtc7"] -properties/0/path = NodePath("CubeSideDispenser:position") -properties/0/spawn = false -properties/0/replication_mode = 1 -properties/1/path = NodePath("CubeSideDispenser:rotation") -properties/1/spawn = false -properties/1/replication_mode = 1 -properties/2/path = NodePath("CubeSideDispenser:visible") -properties/2/spawn = false -properties/2/replication_mode = 1 - [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] radius = 0.3 @@ -31,30 +19,27 @@ albedo_color = Color(0.1764706, 1, 1, 1) material = SubResource("StandardMaterial3D_24d3s") size = Vector3(0.1, 0.1, 0.1) -[node name="CubeSideDispenser" type="Node3D" unique_id=1285718741] +[node name="CubeSideDispenser" unique_id=707500902 instance=ExtResource("1_station")] -[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_qooyy")] +[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] station = NodePath("../CubeSideDispenser") -[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=821487160] -replication_config = SubResource("SceneReplicationConfig_0wtc7") - -[node name="CubeSideDispenser" type="StaticBody3D" parent="." unique_id=200950572 groups=["station"]] -script = ExtResource("1_4m60m") -item_scene = ExtResource("2_nn8tr") - -[node name="XRToolsSnapZone" type="Area3D" parent="CubeSideDispenser" unique_id=1018021004 groups=["station_zone"]] +[node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00070536137, 1.0440714, -0.002165556) collision_layer = 65536 collision_mask = 65536 -script = ExtResource("3_ahn1e") snap_mode = 1 -metadata/_custom_type_script = "uid://cquqe4f1m1sw6" -[node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser/XRToolsSnapZone" unique_id=182042233] +[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"]] +script = ExtResource("1_4m60m") +item_scene = ExtResource("2_nn8tr") +snap_zone = NodePath("../SnapZone") +synchronizer = NodePath("../MultiplayerSynchronizer") + [node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser" unique_id=1974757539] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") diff --git a/Stations/item_dispenser.gd b/Stations/item_dispenser.gd index af17d0e..2512728 100644 --- a/Stations/item_dispenser.gd +++ b/Stations/item_dispenser.gd @@ -1,25 +1,26 @@ -extends StaticBody3D +class_name ItemDispenser +extends Station + +@export var item_scene: PackedScene -@export var item_scene : PackedScene -@onready var snap_zone: XRToolsSnapZone = $XRToolsSnapZone func _ready() -> void: + super.ready() + SweetLogger.debug("ItemDispenser {0} _ready", [name]) if not item_scene: SweetLogger.warning("{0} missing item_scene reference", [name]) - if not snap_zone: - SweetLogger.warning("{0} missing snap_zone reference", [name]) -func _process(_delta: float) -> void: +func _process(delta: float) -> void: + super.process(delta) if not NetworkManager.owns_world(): return - #if snap_zone.picked_up_object: # Player picked up this station - #if visible: - #snap_zone.picked_up_object.enabled = true - #else: - #snap_zone.picked_up_object.enabled = false - #return - # + if not enabled: + if snap_zone.picked_up_object: + var item := snap_zone.picked_up_object + snap_zone.drop_object() + NetworkManager.despawn_item(item) + return if not snap_zone.picked_up_object: SweetLogger.debug("Missing item, spawning new item") var new_item = NetworkManager.spawn_item(item_scene.resource_path, snap_zone.global_transform) diff --git a/Stations/plate_dispenser.tscn b/Stations/plate_dispenser.tscn index ec9bca8..59964a0 100644 --- a/Stations/plate_dispenser.tscn +++ b/Stations/plate_dispenser.tscn @@ -1,22 +1,10 @@ [gd_scene format=3 uid="uid://ck5tuftqmyiue"] -[ext_resource type="PackedScene" uid="uid://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="1_jgjsq"] +[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://bp3v1jl8pctro" path="res://Containers/plate.tscn" id="2_tfo2i"] -[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="3_lr065"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_tfo2i"] -[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_jgjsq"] -properties/0/path = NodePath("PlateDispenser:position") -properties/0/spawn = false -properties/0/replication_mode = 1 -properties/1/path = NodePath("PlateDispenser:rotation") -properties/1/spawn = false -properties/1/replication_mode = 1 -properties/2/path = NodePath("PlateDispenser:visible") -properties/2/spawn = false -properties/2/replication_mode = 1 - [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] radius = 0.3 @@ -24,29 +12,26 @@ radius = 0.3 height = 1.0 radius = 0.3 -[node name="PlateDispenser" type="Node3D" unique_id=53391541] +[node name="PlateDispenser" unique_id=707500902 instance=ExtResource("1_station")] -[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_jgjsq")] +[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] station = NodePath("../PlateDispenser") -[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=901684173] -replication_config = SubResource("SceneReplicationConfig_jgjsq") - -[node name="PlateDispenser" type="StaticBody3D" parent="." unique_id=710538846 groups=["station"]] -script = ExtResource("1_jm0ik") -item_scene = ExtResource("2_tfo2i") - -[node name="XRToolsSnapZone" type="Area3D" parent="PlateDispenser" unique_id=238176038 groups=["station_zone"]] +[node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00070536137, 1.1603245, -0.002165556) collision_layer = 65536 collision_mask = 65536 -script = ExtResource("3_lr065") snap_mode = 1 -metadata/_custom_type_script = "uid://cquqe4f1m1sw6" -[node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser/XRToolsSnapZone" unique_id=1942470044] +[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"]] +script = ExtResource("1_jm0ik") +item_scene = ExtResource("2_tfo2i") +snap_zone = NodePath("../SnapZone") +synchronizer = NodePath("../MultiplayerSynchronizer") + [node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser" unique_id=831688237] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") diff --git a/Stations/potato_dispenser.tscn b/Stations/potato_dispenser.tscn index b90b58d..ea517ef 100644 --- a/Stations/potato_dispenser.tscn +++ b/Stations/potato_dispenser.tscn @@ -1,22 +1,10 @@ [gd_scene format=3 uid="uid://sc6i0i1f0o48"] -[ext_resource type="PackedScene" uid="uid://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="1_8orw3"] +[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="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="4_fx1kw"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_ur331"] -[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_8orw3"] -properties/0/path = NodePath("PotatoDispenser:position") -properties/0/spawn = false -properties/0/replication_mode = 1 -properties/1/path = NodePath("PotatoDispenser:rotation") -properties/1/spawn = false -properties/1/replication_mode = 1 -properties/2/path = NodePath("PotatoDispenser:visible") -properties/2/spawn = false -properties/2/replication_mode = 1 - [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] radius = 0.3 @@ -27,29 +15,26 @@ radius = 0.3 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d4wpw"] albedo_color = Color(0.48, 0.34336, 0.1872, 1) -[node name="PotatoDispenser" type="Node3D" unique_id=1410160280] +[node name="PotatoDispenser" unique_id=707500902 instance=ExtResource("1_station")] -[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_8orw3")] +[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] station = NodePath("../PotatoDispenser") -[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=41449367] -replication_config = SubResource("SceneReplicationConfig_8orw3") - -[node name="PotatoDispenser" type="StaticBody3D" parent="." unique_id=1720683779 groups=["station"]] -script = ExtResource("2_30d2d") -item_scene = ExtResource("3_mjqsn") - -[node name="XRToolsSnapZone" type="Area3D" parent="PotatoDispenser" unique_id=805334513 groups=["station_zone"]] +[node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00070536137, 1.0162505, -0.002165556) collision_layer = 65536 collision_mask = 65536 -script = ExtResource("4_fx1kw") snap_mode = 1 -metadata/_custom_type_script = "uid://cquqe4f1m1sw6" -[node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser/XRToolsSnapZone" unique_id=1104626493] +[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"]] +script = ExtResource("2_30d2d") +item_scene = ExtResource("3_mjqsn") +snap_zone = NodePath("../SnapZone") +synchronizer = NodePath("../MultiplayerSynchronizer") + [node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser" unique_id=1470079357] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_24d3s") diff --git a/Stations/raw_burger_dispenser.tscn b/Stations/raw_burger_dispenser.tscn index 74eafb1..acf775a 100644 --- a/Stations/raw_burger_dispenser.tscn +++ b/Stations/raw_burger_dispenser.tscn @@ -1,22 +1,10 @@ [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://dpot5qie20vf6" path="res://items/burger.tscn" id="2_mep2a"] -[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="3_3xuvi"] [ext_resource type="Texture2D" uid="uid://cexxfyw03hr81" path="res://textures/1.png" id="4_1f5le"] [ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_mep2a"] -[ext_resource type="PackedScene" uid="uid://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="6_8ou8n"] - -[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_8ou8n"] -properties/0/path = NodePath("RawBurgerDispenser:position") -properties/0/spawn = false -properties/0/replication_mode = 1 -properties/1/path = NodePath("RawBurgerDispenser:rotation") -properties/1/spawn = false -properties/1/replication_mode = 1 -properties/2/path = NodePath("RawBurgerDispenser:visible") -properties/2/spawn = false -properties/2/replication_mode = 1 [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"] radius = 0.3 @@ -28,29 +16,26 @@ radius = 0.3 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_di04w"] albedo_texture = ExtResource("4_1f5le") -[node name="RawBurgerDispenser" type="Node3D" unique_id=383615587] +[node name="RawBurgerDispenser" unique_id=707500902 instance=ExtResource("1_station")] -[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("6_8ou8n")] +[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")] station = NodePath("../RawBurgerDispenser") -[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1886082284] -replication_config = SubResource("SceneReplicationConfig_8ou8n") - -[node name="RawBurgerDispenser" type="StaticBody3D" parent="." unique_id=235630131 groups=["station"]] -script = ExtResource("1_gkb3v") -item_scene = ExtResource("2_mep2a") - -[node name="XRToolsSnapZone" type="Area3D" parent="RawBurgerDispenser" unique_id=1523586273 groups=["station_zone"]] +[node name="SnapZone" parent="." index="5" unique_id=1315859105] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00070536137, 1.0645258, -0.002165556) collision_layer = 65536 collision_mask = 65536 -script = ExtResource("3_3xuvi") snap_mode = 1 -metadata/_custom_type_script = "uid://cquqe4f1m1sw6" -[node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser/XRToolsSnapZone" unique_id=2105824734] +[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"]] +script = ExtResource("1_gkb3v") +item_scene = ExtResource("2_mep2a") +snap_zone = NodePath("../SnapZone") +synchronizer = NodePath("../MultiplayerSynchronizer") + [node name="SlideOffDome" parent="RawBurgerDispenser" unique_id=1427609426 instance=ExtResource("5_mep2a")] [node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser" unique_id=378049928]