diff --git a/Containers/container.gd b/Containers/container.gd index 52dd633..2ceb2db 100644 --- a/Containers/container.gd +++ b/Containers/container.gd @@ -193,6 +193,9 @@ func _make_cosmetic(visual: Node3D) -> void: func _remove_from_physics(visual: Node3D) -> void: if visual is RigidBody3D: PhysicsServer3D.body_set_space((visual as RigidBody3D).get_rid(), RID()) + var despawning_item = visual.get_node_or_null("DespawningItem") + if despawning_item: + NetworkManager.despawn_item(despawning_item) #plate (Pickalbe) diff --git a/Items/BurgerBuns.tscn b/Items/BurgerBuns.tscn index f42f0d0..59a7237 100644 --- a/Items/BurgerBuns.tscn +++ b/Items/BurgerBuns.tscn @@ -8,6 +8,7 @@ [ext_resource type="Animation" uid="uid://bediglpx0rj7i" path="res://addons/godot-xr-tools/hands/animations/left/Grip 5.res" id="6_ftab3"] [ext_resource type="PackedScene" uid="uid://3lr2dhy62rhk" path="res://Prefabs/combinable_item.tscn" id="7_wb51u"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="8_t9y3x"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="10_46e7r"] [ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_vlqg6"] @@ -88,3 +89,5 @@ type = 2 [node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="6" unique_id=2086885420] replication_config = SubResource("SceneReplicationConfig_np_buns") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="7" unique_id=303090111 instance=ExtResource("10_46e7r")] diff --git a/Items/Charcoal.tscn b/Items/Charcoal.tscn index 4762c56..c9ec3f1 100644 --- a/Items/Charcoal.tscn +++ b/Items/Charcoal.tscn @@ -8,7 +8,8 @@ [ext_resource type="Animation" uid="uid://d1xnpyc08njjx" path="res://addons/godot-xr-tools/hands/animations/right/Grip 4.res" id="6_cp3eg"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="7_mde49"] [ext_resource type="PackedScene" uid="uid://3lr2dhy62rhk" path="res://Prefabs/combinable_item.tscn" id="8_wmrff"] -[ext_resource type="Script" path="res://Net/net_pickable.gd" id="20_netpk"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="10_6ypk4"] +[ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_gkni8"] height = 0.1 @@ -66,7 +67,8 @@ type = 2 [node name="CombinableItem" parent="." index="5" unique_id=996936271 instance=ExtResource("8_wmrff")] -[node name="NetPickable" type="MultiplayerSynchronizer" parent="."] -root_path = NodePath("..") +[node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="6" unique_id=1070495412] replication_config = SubResource("SceneReplicationConfig_np_charcoal") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="7" unique_id=303090111 instance=ExtResource("10_6ypk4")] diff --git a/Items/PickupCube.tscn b/Items/PickupCube.tscn index b00c9e2..901274e 100644 --- a/Items/PickupCube.tscn +++ b/Items/PickupCube.tscn @@ -7,8 +7,9 @@ [ext_resource type="PackedScene" uid="uid://ctw7nbntd5pcj" path="res://addons/godot-xr-tools/objects/grab_points/grab_point_hand_right.tscn" id="5_a0a5b"] [ext_resource type="Animation" uid="uid://d1xnpyc08njjx" path="res://addons/godot-xr-tools/hands/animations/right/Grip 4.res" id="6_bdp75"] [ext_resource type="PackedScene" uid="uid://3lr2dhy62rhk" path="res://Prefabs/combinable_item.tscn" id="7_bdp75"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="10_uygc5"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="11_vjw41"] -[ext_resource type="Script" path="res://Net/net_pickable.gd" id="20_netpk"] +[ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="BoxShape3D" id="BoxShape3D_m1xbq"] size = Vector3(0.1, 0.1, 0.1) @@ -63,7 +64,8 @@ type = 1 [node name="CombinableItem" parent="." index="5" unique_id=996936271 instance=ExtResource("7_bdp75")] -[node name="NetPickable" type="MultiplayerSynchronizer" parent="."] -root_path = NodePath("..") +[node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="6" unique_id=1858332513] replication_config = SubResource("SceneReplicationConfig_np_cube") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="7" unique_id=303090111 instance=ExtResource("10_uygc5")] diff --git a/Items/burger.tscn b/Items/burger.tscn index 0d49d37..993fd91 100644 --- a/Items/burger.tscn +++ b/Items/burger.tscn @@ -7,8 +7,9 @@ [ext_resource type="Script" uid="uid://dvobm6vcfnqe8" path="res://addons/godot-xr-tools/hands/poses/hand_pose_settings.gd" id="5_w8sii"] [ext_resource type="PackedScene" uid="uid://ctw7nbntd5pcj" path="res://addons/godot-xr-tools/objects/grab_points/grab_point_hand_right.tscn" id="6_mvnl5"] [ext_resource type="Animation" uid="uid://d1xnpyc08njjx" path="res://addons/godot-xr-tools/hands/animations/right/Grip 4.res" id="7_wqxjj"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="10_l4hsd"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="10_yxtxs"] -[ext_resource type="Script" path="res://Net/net_pickable.gd" id="20_netpk"] +[ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_fco8w"] height = 0.0338974 @@ -62,7 +63,8 @@ hand_pose = SubResource("Resource_qyiot") id = "raw_burger" type = 2 -[node name="NetPickable" type="MultiplayerSynchronizer" parent="."] -root_path = NodePath("..") +[node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="5" unique_id=1382968688] replication_config = SubResource("SceneReplicationConfig_np_burger") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="6" unique_id=303090111 instance=ExtResource("10_l4hsd")] diff --git a/Items/cooked_burger.tscn b/Items/cooked_burger.tscn index d5ebd5c..1909b01 100644 --- a/Items/cooked_burger.tscn +++ b/Items/cooked_burger.tscn @@ -6,9 +6,10 @@ [ext_resource type="Script" uid="uid://dvobm6vcfnqe8" path="res://addons/godot-xr-tools/hands/poses/hand_pose_settings.gd" id="5_ychvb"] [ext_resource type="PackedScene" uid="uid://ctw7nbntd5pcj" path="res://addons/godot-xr-tools/objects/grab_points/grab_point_hand_right.tscn" id="6_etdv2"] [ext_resource type="Animation" uid="uid://d1xnpyc08njjx" path="res://addons/godot-xr-tools/hands/animations/right/Grip 4.res" id="7_rl64h"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="10_6p8pj"] [ext_resource type="PackedScene" uid="uid://3lr2dhy62rhk" path="res://Prefabs/combinable_item.tscn" id="10_ut7mg"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="10_zz42p"] -[ext_resource type="Script" path="res://Net/net_pickable.gd" id="20_netpk"] +[ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_fco8w"] height = 0.04777527 @@ -64,7 +65,8 @@ type = 2 [node name="CombinableItem" parent="." index="5" unique_id=996936271 instance=ExtResource("10_ut7mg")] -[node name="NetPickable" type="MultiplayerSynchronizer" parent="."] -root_path = NodePath("..") +[node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="6" unique_id=925955029] replication_config = SubResource("SceneReplicationConfig_np_cookedburger") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="7" unique_id=303090111 instance=ExtResource("10_6p8pj")] diff --git a/Items/hamburger.tscn b/Items/hamburger.tscn index 3bddd7c..e11b269 100644 --- a/Items/hamburger.tscn +++ b/Items/hamburger.tscn @@ -7,7 +7,8 @@ [ext_resource type="PackedScene" uid="uid://ctw7nbntd5pcj" path="res://addons/godot-xr-tools/objects/grab_points/grab_point_hand_right.tscn" id="5_dunns"] [ext_resource type="Animation" uid="uid://d1xnpyc08njjx" path="res://addons/godot-xr-tools/hands/animations/right/Grip 4.res" id="6_fh0f6"] [ext_resource type="PackedScene" uid="uid://bfj80jh13t6e5" path="res://Prefabs/food_item.tscn" id="7_yy3y8"] -[ext_resource type="Script" path="res://Net/net_pickable.gd" id="20_netpk"] +[ext_resource type="PackedScene" uid="uid://b5ukku8i0hilb" path="res://Prefabs/despawning_item.tscn" id="9_ej8jm"] +[ext_resource type="Script" uid="uid://bwd0pe2udb5xo" path="res://Net/net_pickable.gd" id="20_netpk"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_fco8w"] height = 0.10392761 @@ -94,7 +95,8 @@ id = "hamburger" type = 0 sell_value = 4 -[node name="NetPickable" type="MultiplayerSynchronizer" parent="."] -root_path = NodePath("..") +[node name="NetPickable" type="MultiplayerSynchronizer" parent="." index="6" unique_id=56164120] replication_config = SubResource("SceneReplicationConfig_np_hamburger") script = ExtResource("20_netpk") + +[node name="DespawningItem" parent="." index="7" unique_id=303090111 instance=ExtResource("9_ej8jm")] diff --git a/Prefabs/despawning_item.gd b/Prefabs/despawning_item.gd new file mode 100644 index 0000000..43b1cc6 --- /dev/null +++ b/Prefabs/despawning_item.gd @@ -0,0 +1,43 @@ +extends Node +class_name DespawningItem + +@export var time_to_despawn: float = 8 + +# The minimum speed required to reset despawn timer. +@export var minimum_speed_square: float = 0.1 + + +@onready var _pickable: XRToolsPickable = get_parent() as XRToolsPickable +@onready var _rigid: RigidBody3D = get_parent() as RigidBody3D + + +var _time_left: float = time_to_despawn + +func _ready() -> void: + if not _pickable: + push_error("DespawningItem must be a grand child of an XRToolsPickable.") + return + if not _rigid: + push_error("DespawningItem must be a grand child of an RigidBody3D.") + return + + +func _process(delta: float) -> void: + print("SpeedSquare: ", _rigid.linear_velocity.length_squared()) + # if we're held or moving, reset timer and return + if _pickable.get_picked_up_by() or _rigid.linear_velocity.length_squared() > pow(minimum_speed_square,2): + _time_left = time_to_despawn + get_parent().visible = true + print("DespawningItem resetting timer: ", get_parent()) + return + + + # Count down to zero and despawn + _time_left -= delta + if _time_left <= 0: + print("DespawningItem despawning!" , get_parent()) + NetworkManager.despawn_item(get_parent()) + + # Make item blink in and out before despawning + if _time_left < time_to_despawn / 2: + get_parent().visible = int(_time_left * 5.0) %2 == 0 diff --git a/Prefabs/despawning_item.gd.uid b/Prefabs/despawning_item.gd.uid new file mode 100644 index 0000000..a291957 --- /dev/null +++ b/Prefabs/despawning_item.gd.uid @@ -0,0 +1 @@ +uid://deyna316ka4xs diff --git a/Prefabs/despawning_item.tscn b/Prefabs/despawning_item.tscn new file mode 100644 index 0000000..db144d0 --- /dev/null +++ b/Prefabs/despawning_item.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://b5ukku8i0hilb"] + +[ext_resource type="Script" uid="uid://deyna316ka4xs" path="res://Prefabs/despawning_item.gd" id="1_ayqk8"] + +[node name="DespawningItem" type="Node" unique_id=303090111] +script = ExtResource("1_ayqk8") diff --git a/Scenes/JonScene.tscn b/Scenes/JonScene.tscn index 90224ef..6ef015a 100644 --- a/Scenes/JonScene.tscn +++ b/Scenes/JonScene.tscn @@ -114,9 +114,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5242664, 0.008738995, 1.10 [node name="RawBurgerDispenser" parent="." unique_id=235630131 instance=ExtResource("11_ctden")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8896122, 0.008738995, 1.0872328) -[node name="CubeSideDispenser2" parent="." unique_id=200950572 instance=ExtResource("12_57ppd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.47788578, 0.008738995, 1.1293952) - [node name="PlateDispenser" parent="." unique_id=710538846 instance=ExtResource("13_irf4n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.26631236, 0.008738995, 1.087036) @@ -130,3 +127,6 @@ scene_properties_keys = PackedStringArray("game_over_panel.gd") [node name="controler" type="Node" parent="GameOverPanel" unique_id=803158176] script = ExtResource("16_n8fyw") + +[node name="CubeSideDispenser2" parent="." unique_id=200950572 instance=ExtResource("12_57ppd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.35154933, 0, 1.1119425) diff --git a/Scenes/test_small.tscn b/Scenes/test_small.tscn new file mode 100644 index 0000000..08676dd --- /dev/null +++ b/Scenes/test_small.tscn @@ -0,0 +1,84 @@ +[gd_scene format=3 uid="uid://dbgu4r127ke5v"] + +[ext_resource type="Script" uid="uid://b4ldkd3ngs0vp" path="res://main.gd" id="1_1ymas"] +[ext_resource type="Sky" uid="uid://c1abtpwhdm2d5" path="res://Textures/sky/NightSkyHDRI009_16K.tres" id="2_1jq86"] +[ext_resource type="PackedScene" uid="uid://j5s5wus7tuhb" path="res://XROrigin.tscn" id="3_bryd6"] +[ext_resource type="Material" uid="uid://cmia50cfqxxo4" path="res://Textures/dev_material_3d.tres" id="4_kpgm6"] +[ext_resource type="PackedScene" uid="uid://j7caslh27nor" path="res://Stations/Hob.tscn" id="5_gfdi7"] +[ext_resource type="PackedScene" uid="uid://dvrk268s7gkxh" path="res://Stations/sink.tscn" id="6_fmmg3"] +[ext_resource type="PackedScene" uid="uid://efaec6ymgabo" path="res://Stations/Counter.tscn" id="7_jnxsa"] +[ext_resource type="PackedScene" uid="uid://e4i6o5oriecx" path="res://Items/PickupCube.tscn" id="8_xl5nn"] + +[sub_resource type="Environment" id="Environment_bvwq1"] +background_mode = 2 +sky = ExtResource("2_1jq86") +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_sky_contribution = 0.9 +reflected_light_source = 2 +ssr_enabled = true +ssao_enabled = true +ssil_enabled = true +sdfgi_enabled = true + +[sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"] +size = Vector3(20, 0.1, 20) + +[sub_resource type="BoxMesh" id="BoxMesh_24d3s"] +material = ExtResource("4_kpgm6") +size = Vector3(20, 0.1, 20) + +[sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"] +size = Vector3(20, 10, 0.1) + +[node name="Main" type="Node3D" unique_id=1312265607] +script = ExtResource("1_1ymas") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1177077250] +environment = SubResource("Environment_bvwq1") + +[node name="XROrigin3D" parent="." unique_id=2055526621 instance=ExtResource("3_bryd6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9667189, 0) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1376644384] +transform = Transform3D(-0.8660254, -0.43301278, 0.24999999, 0.3022632, -0.05510214, 0.9516306, -0.39829266, 0.8997021, 0.17860365, 0, 0, 0) + +[node name="Floor" type="StaticBody3D" parent="." unique_id=122279514] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor" unique_id=958841648] +shape = SubResource("BoxShape3D_vlqg6") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor/CollisionShape3D" unique_id=1939997056] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00018164515, 0.0006352663, -0.002532661) +mesh = SubResource("BoxMesh_24d3s") + +[node name="InvisibleWalls" type="StaticBody3D" parent="." unique_id=315740174] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls" unique_id=33059670] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.688614, 8.838269) +shape = SubResource("BoxShape3D_24d3s") + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="InvisibleWalls" unique_id=2018792171] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.688614, -10.243342) +shape = SubResource("BoxShape3D_24d3s") + +[node name="CollisionShape3D3" type="CollisionShape3D" parent="InvisibleWalls" unique_id=757662929] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -9.807113, 4.688614, -0.018813243) +shape = SubResource("BoxShape3D_24d3s") + +[node name="CollisionShape3D4" type="CollisionShape3D" parent="InvisibleWalls" unique_id=1468386997] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 9.934778, 4.297072, -0.018813023) +shape = SubResource("BoxShape3D_24d3s") + +[node name="Hob" parent="." unique_id=1687971542 instance=ExtResource("5_gfdi7")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.35077858, 0.50655985, -1.2833805) + +[node name="Sink" parent="." unique_id=2055277359 instance=ExtResource("6_fmmg3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.24685252, 0.51461196, -1.2828919) + +[node name="Counter" parent="." unique_id=1487893288 instance=ExtResource("7_jnxsa")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.94890714, 0.5115015, -1.3041471) + +[node name="PickableObject" parent="." unique_id=1675596942 instance=ExtResource("8_xl5nn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.87560004, 1.5534955, -1.2869046)