Add MultiplayerSyncronizers to stations

This commit is contained in:
JonShard
2026-08-09 13:15:30 +02:00
parent cf4b4ac32e
commit 9cdf72dc47
26 changed files with 233 additions and 344 deletions
+2 -2
View File
@@ -147,8 +147,8 @@ func apply_held_state() -> void:
and _pickable.collision_mask == 0 \ and _pickable.collision_mask == 0 \
and _pickable.enabled == want_enabled: and _pickable.enabled == want_enabled:
return return
if NetworkManager.is_online(): # if NetworkManager.is_online(): # This was spamming that Knife was frozen every frame.
print("%s: freezing (non-authority, owner=peer %d)" % [_pickable.name, net_held_by]) # print("%s: freezing (non-authority, owner=peer %d)" % [_pickable.name, net_held_by])
_pickable.freeze = true _pickable.freeze = true
_pickable.freeze_mode = RigidBody3D.FREEZE_MODE_KINEMATIC _pickable.freeze_mode = RigidBody3D.FREEZE_MODE_KINEMATIC
_pickable.collision_mask = 0 _pickable.collision_mask = 0
+2 -1
View File
@@ -522,7 +522,8 @@ func _on_player_absent(peer_id: int) -> void:
# --- Command-line driven test bootstrap ----------------------------------- # --- Command-line driven test bootstrap -----------------------------------
func _handle_cmdline() -> void: func _handle_cmdline() -> void:
var args := OS.get_cmdline_user_args() print("Networkmanager _handle_cmdline()")
var args := OS.get_cmdline_args()
if args.has("--server"): if args.has("--server"):
log_line("cmdline: --server") log_line("cmdline: --server")
host() host()
+8 -9
View File
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3] [gd_scene format=3 uid="uid://c58ns7csdahjy"]
[ext_resource type="Script" path="res://Player/net_player.gd" id="1_np001"] [ext_resource type="Script" uid="uid://bncuxh7j7ix5q" path="res://Player/net_player.gd" id="1_np001"]
[ext_resource type="PackedScene" uid="uid://bq86r4yll8po" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/left_fullglove_low.tscn" id="2_np002"] [ext_resource type="PackedScene" uid="uid://bq86r4yll8po" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/left_fullglove_low.tscn" id="2_np002"]
[ext_resource type="PackedScene" uid="uid://xqimcf20s2jp" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/right_fullglove_low.tscn" id="3_np003"] [ext_resource type="PackedScene" uid="uid://xqimcf20s2jp" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/right_fullglove_low.tscn" id="3_np003"]
@@ -28,17 +28,16 @@ properties/5/path = NodePath("RightHand:quaternion")
properties/5/spawn = false properties/5/spawn = false
properties/5/replication_mode = 1 properties/5/replication_mode = 1
[node name="NetPlayer" type="Node3D"] [node name="NetPlayer" type="Node3D" unique_id=70287099]
script = ExtResource("1_np001") script = ExtResource("1_np001")
[node name="Head" type="MeshInstance3D" parent="."] [node name="Head" type="MeshInstance3D" parent="." unique_id=56588259]
mesh = SubResource("CapsuleMesh_np004") mesh = SubResource("CapsuleMesh_np004")
[node name="LeftHand" parent="." instance=ExtResource("2_np002")] [node name="LeftHand" parent="." unique_id=1703673184 instance=ExtResource("2_np002")]
[node name="RightHand" parent="." instance=ExtResource("3_np003")] [node name="RightHand" parent="." unique_id=325341465 instance=ExtResource("3_np003")]
[node name="Sync" type="MultiplayerSynchronizer" parent="."] [node name="Sync" type="MultiplayerSynchronizer" parent="." unique_id=529459963]
root_path = NodePath("..")
replication_config = SubResource("SceneReplicationConfig_np005")
replication_interval = 0.033 replication_interval = 0.033
replication_config = SubResource("SceneReplicationConfig_np005")
+24 -24
View File
@@ -10,34 +10,34 @@
[ext_resource type="PackedScene" uid="uid://cqhw276realc" path="res://addons/godot-xr-tools/functions/function_pointer.tscn" id="6_ptr"] [ext_resource type="PackedScene" uid="uid://cqhw276realc" path="res://addons/godot-xr-tools/functions/function_pointer.tscn" id="6_ptr"]
[ext_resource type="PackedScene" uid="uid://bjcxf427un2wp" path="res://addons/godot-xr-tools/player/poke/poke.tscn" id="7_1fmci"] [ext_resource type="PackedScene" uid="uid://bjcxf427un2wp" path="res://addons/godot-xr-tools/player/poke/poke.tscn" id="7_1fmci"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1fmci"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ouruy"]
animation = &"Grip" animation = &"Grip"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_itrmp"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_i0gvw"]
animation = &"Grip" animation = &"Grip"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_nrfrd"] [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_5mmou"]
filter_enabled = true filter_enabled = true
filters = ["Armature/Skeleton3D:Little_Distal_L", "Armature/Skeleton3D:Little_Intermediate_L", "Armature/Skeleton3D:Little_Metacarpal_L", "Armature/Skeleton3D:Little_Proximal_L", "Armature/Skeleton3D:Middle_Distal_L", "Armature/Skeleton3D:Middle_Intermediate_L", "Armature/Skeleton3D:Middle_Metacarpal_L", "Armature/Skeleton3D:Middle_Proximal_L", "Armature/Skeleton3D:Ring_Distal_L", "Armature/Skeleton3D:Ring_Intermediate_L", "Armature/Skeleton3D:Ring_Metacarpal_L", "Armature/Skeleton3D:Ring_Proximal_L", "Armature/Skeleton3D:Thumb_Distal_L", "Armature/Skeleton3D:Thumb_Metacarpal_L", "Armature/Skeleton3D:Thumb_Proximal_L", "Armature/Skeleton:Little_Distal_L", "Armature/Skeleton:Little_Intermediate_L", "Armature/Skeleton:Little_Proximal_L", "Armature/Skeleton:Middle_Distal_L", "Armature/Skeleton:Middle_Intermediate_L", "Armature/Skeleton:Middle_Proximal_L", "Armature/Skeleton:Ring_Distal_L", "Armature/Skeleton:Ring_Intermediate_L", "Armature/Skeleton:Ring_Proximal_L", "Armature/Skeleton:Thumb_Distal_L", "Armature/Skeleton:Thumb_Proximal_L"] filters = ["Armature/Skeleton3D:Little_Distal_L", "Armature/Skeleton3D:Little_Intermediate_L", "Armature/Skeleton3D:Little_Metacarpal_L", "Armature/Skeleton3D:Little_Proximal_L", "Armature/Skeleton3D:Middle_Distal_L", "Armature/Skeleton3D:Middle_Intermediate_L", "Armature/Skeleton3D:Middle_Metacarpal_L", "Armature/Skeleton3D:Middle_Proximal_L", "Armature/Skeleton3D:Ring_Distal_L", "Armature/Skeleton3D:Ring_Intermediate_L", "Armature/Skeleton3D:Ring_Metacarpal_L", "Armature/Skeleton3D:Ring_Proximal_L", "Armature/Skeleton3D:Thumb_Distal_L", "Armature/Skeleton3D:Thumb_Metacarpal_L", "Armature/Skeleton3D:Thumb_Proximal_L", "Armature/Skeleton:Little_Distal_L", "Armature/Skeleton:Little_Intermediate_L", "Armature/Skeleton:Little_Proximal_L", "Armature/Skeleton:Middle_Distal_L", "Armature/Skeleton:Middle_Intermediate_L", "Armature/Skeleton:Middle_Proximal_L", "Armature/Skeleton:Ring_Distal_L", "Armature/Skeleton:Ring_Intermediate_L", "Armature/Skeleton:Ring_Proximal_L", "Armature/Skeleton:Thumb_Distal_L", "Armature/Skeleton:Thumb_Proximal_L"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_73fu8"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yfij0"]
animation = &"Grip 5" animation = &"Grip 5"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_ouruy"] [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_2ebvs"]
filter_enabled = true filter_enabled = true
filters = ["Armature/Skeleton3D:Index_Distal_L", "Armature/Skeleton3D:Index_Intermediate_L", "Armature/Skeleton3D:Index_Metacarpal_L", "Armature/Skeleton3D:Index_Proximal_L", "Armature/Skeleton:Index_Distal_L", "Armature/Skeleton:Index_Intermediate_L", "Armature/Skeleton:Index_Proximal_L"] filters = ["Armature/Skeleton3D:Index_Distal_L", "Armature/Skeleton3D:Index_Intermediate_L", "Armature/Skeleton3D:Index_Metacarpal_L", "Armature/Skeleton3D:Index_Proximal_L", "Armature/Skeleton:Index_Distal_L", "Armature/Skeleton:Index_Intermediate_L", "Armature/Skeleton:Index_Proximal_L"]
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_i0gvw"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_l8v2a"]
graph_offset = Vector2(-536, 11) graph_offset = Vector2(-536, 11)
nodes/ClosedHand1/node = SubResource("AnimationNodeAnimation_1fmci") nodes/ClosedHand1/node = SubResource("AnimationNodeAnimation_ouruy")
nodes/ClosedHand1/position = Vector2(-600, 300) nodes/ClosedHand1/position = Vector2(-600, 300)
nodes/ClosedHand2/node = SubResource("AnimationNodeAnimation_itrmp") nodes/ClosedHand2/node = SubResource("AnimationNodeAnimation_i0gvw")
nodes/ClosedHand2/position = Vector2(-360, 300) nodes/ClosedHand2/position = Vector2(-360, 300)
nodes/Grip/node = SubResource("AnimationNodeBlend2_nrfrd") nodes/Grip/node = SubResource("AnimationNodeBlend2_5mmou")
nodes/Grip/position = Vector2(0, 20) nodes/Grip/position = Vector2(0, 20)
nodes/OpenHand/node = SubResource("AnimationNodeAnimation_73fu8") nodes/OpenHand/node = SubResource("AnimationNodeAnimation_yfij0")
nodes/OpenHand/position = Vector2(-600, 100) nodes/OpenHand/position = Vector2(-600, 100)
nodes/Trigger/node = SubResource("AnimationNodeBlend2_ouruy") nodes/Trigger/node = SubResource("AnimationNodeBlend2_2ebvs")
nodes/Trigger/position = Vector2(-360, 20) nodes/Trigger/position = Vector2(-360, 20)
node_connections = [&"output", 0, &"Grip", &"Grip", 0, &"Trigger", &"Grip", 1, &"ClosedHand2", &"Trigger", 0, &"OpenHand", &"Trigger", 1, &"ClosedHand1"] node_connections = [&"output", 0, &"Grip", &"Grip", 0, &"Trigger", &"Grip", 1, &"ClosedHand2", &"Trigger", 0, &"OpenHand", &"Trigger", 1, &"ClosedHand1"]
@@ -45,34 +45,34 @@ node_connections = [&"output", 0, &"Grip", &"Grip", 0, &"Trigger", &"Grip", 1, &
transparency = 1 transparency = 1
albedo_color = Color(1, 1, 1, 0.5882353) albedo_color = Color(1, 1, 1, 0.5882353)
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5mmou"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qpjda"]
animation = &"Grip" animation = &"Grip"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yfij0"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_37hbl"]
animation = &"Grip" animation = &"Grip"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_2ebvs"] [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_to5tn"]
filter_enabled = true filter_enabled = true
filters = ["Armature/Skeleton3D:Little_Distal_R", "Armature/Skeleton3D:Little_Intermediate_R", "Armature/Skeleton3D:Little_Metacarpal_R", "Armature/Skeleton3D:Little_Proximal_R", "Armature/Skeleton3D:Middle_Distal_R", "Armature/Skeleton3D:Middle_Intermediate_R", "Armature/Skeleton3D:Middle_Metacarpal_R", "Armature/Skeleton3D:Middle_Proximal_R", "Armature/Skeleton3D:Ring_Distal_R", "Armature/Skeleton3D:Ring_Intermediate_R", "Armature/Skeleton3D:Ring_Metacarpal_R", "Armature/Skeleton3D:Ring_Proximal_R", "Armature/Skeleton3D:Thumb_Distal_R", "Armature/Skeleton3D:Thumb_Metacarpal_R", "Armature/Skeleton3D:Thumb_Proximal_R", "Armature/Skeleton:Little_Distal_R", "Armature/Skeleton:Little_Intermediate_R", "Armature/Skeleton:Little_Proximal_R", "Armature/Skeleton:Middle_Distal_R", "Armature/Skeleton:Middle_Intermediate_R", "Armature/Skeleton:Middle_Proximal_R", "Armature/Skeleton:Ring_Distal_R", "Armature/Skeleton:Ring_Intermediate_R", "Armature/Skeleton:Ring_Proximal_R", "Armature/Skeleton:Thumb_Distal_R", "Armature/Skeleton:Thumb_Proximal_R"] filters = ["Armature/Skeleton3D:Little_Distal_R", "Armature/Skeleton3D:Little_Intermediate_R", "Armature/Skeleton3D:Little_Metacarpal_R", "Armature/Skeleton3D:Little_Proximal_R", "Armature/Skeleton3D:Middle_Distal_R", "Armature/Skeleton3D:Middle_Intermediate_R", "Armature/Skeleton3D:Middle_Metacarpal_R", "Armature/Skeleton3D:Middle_Proximal_R", "Armature/Skeleton3D:Ring_Distal_R", "Armature/Skeleton3D:Ring_Intermediate_R", "Armature/Skeleton3D:Ring_Metacarpal_R", "Armature/Skeleton3D:Ring_Proximal_R", "Armature/Skeleton3D:Thumb_Distal_R", "Armature/Skeleton3D:Thumb_Metacarpal_R", "Armature/Skeleton3D:Thumb_Proximal_R", "Armature/Skeleton:Little_Distal_R", "Armature/Skeleton:Little_Intermediate_R", "Armature/Skeleton:Little_Proximal_R", "Armature/Skeleton:Middle_Distal_R", "Armature/Skeleton:Middle_Intermediate_R", "Armature/Skeleton:Middle_Proximal_R", "Armature/Skeleton:Ring_Distal_R", "Armature/Skeleton:Ring_Intermediate_R", "Armature/Skeleton:Ring_Proximal_R", "Armature/Skeleton:Thumb_Distal_R", "Armature/Skeleton:Thumb_Proximal_R"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_l8v2a"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nlnu7"]
animation = &"Grip 5" animation = &"Grip 5"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_qpjda"] [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_we6ah"]
filter_enabled = true filter_enabled = true
filters = ["Armature/Skeleton3D:Index_Distal_R", "Armature/Skeleton3D:Index_Intermediate_R", "Armature/Skeleton3D:Index_Metacarpal_R", "Armature/Skeleton3D:Index_Proximal_R", "Armature/Skeleton:Index_Distal_R", "Armature/Skeleton:Index_Intermediate_R", "Armature/Skeleton:Index_Proximal_R"] filters = ["Armature/Skeleton3D:Index_Distal_R", "Armature/Skeleton3D:Index_Intermediate_R", "Armature/Skeleton3D:Index_Metacarpal_R", "Armature/Skeleton3D:Index_Proximal_R", "Armature/Skeleton:Index_Distal_R", "Armature/Skeleton:Index_Intermediate_R", "Armature/Skeleton:Index_Proximal_R"]
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_37hbl"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_dtgvk"]
graph_offset = Vector2(-552.664, 107.301) graph_offset = Vector2(-552.664, 107.301)
nodes/ClosedHand1/node = SubResource("AnimationNodeAnimation_5mmou") nodes/ClosedHand1/node = SubResource("AnimationNodeAnimation_qpjda")
nodes/ClosedHand1/position = Vector2(-600, 300) nodes/ClosedHand1/position = Vector2(-600, 300)
nodes/ClosedHand2/node = SubResource("AnimationNodeAnimation_yfij0") nodes/ClosedHand2/node = SubResource("AnimationNodeAnimation_37hbl")
nodes/ClosedHand2/position = Vector2(-360, 300) nodes/ClosedHand2/position = Vector2(-360, 300)
nodes/Grip/node = SubResource("AnimationNodeBlend2_2ebvs") nodes/Grip/node = SubResource("AnimationNodeBlend2_to5tn")
nodes/Grip/position = Vector2(0, 40) nodes/Grip/position = Vector2(0, 40)
nodes/OpenHand/node = SubResource("AnimationNodeAnimation_l8v2a") nodes/OpenHand/node = SubResource("AnimationNodeAnimation_nlnu7")
nodes/OpenHand/position = Vector2(-600, 100) nodes/OpenHand/position = Vector2(-600, 100)
nodes/Trigger/node = SubResource("AnimationNodeBlend2_qpjda") nodes/Trigger/node = SubResource("AnimationNodeBlend2_we6ah")
nodes/Trigger/position = Vector2(-360, 40) nodes/Trigger/position = Vector2(-360, 40)
node_connections = [&"output", 0, &"Grip", &"Grip", 0, &"Trigger", &"Grip", 1, &"ClosedHand2", &"Trigger", 0, &"OpenHand", &"Trigger", 1, &"ClosedHand1"] node_connections = [&"output", 0, &"Grip", &"Grip", 0, &"Trigger", &"Grip", 1, &"ClosedHand2", &"Trigger", 0, &"OpenHand", &"Trigger", 1, &"ClosedHand1"]
@@ -120,7 +120,7 @@ bone_idx = 9
[node name="Poke" parent="XRControllerLeftHand/LeftHand/Hand_low_L/Armature/Skeleton3D/BoneAttachment3D" unique_id=259928841 instance=ExtResource("7_1fmci")] [node name="Poke" parent="XRControllerLeftHand/LeftHand/Hand_low_L/Armature/Skeleton3D/BoneAttachment3D" unique_id=259928841 instance=ExtResource("7_1fmci")]
[node name="AnimationTree" parent="XRControllerLeftHand/LeftHand" index="1"] [node name="AnimationTree" parent="XRControllerLeftHand/LeftHand" index="1"]
tree_root = SubResource("AnimationNodeBlendTree_i0gvw") tree_root = SubResource("AnimationNodeBlendTree_l8v2a")
[node name="MovementDirect" parent="XRControllerLeftHand" unique_id=1865515938 instance=ExtResource("2_q1xvu")] [node name="MovementDirect" parent="XRControllerLeftHand" unique_id=1865515938 instance=ExtResource("2_q1xvu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.009340696, -0.0074635968, 0.024033919) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.009340696, -0.0074635968, 0.024033919)
@@ -181,7 +181,7 @@ bone_idx = 9
[node name="Poke" parent="XRControllerRightHand/RightHand/Hand_low_R/Armature/Skeleton3D/BoneAttachment3D" unique_id=303927399 instance=ExtResource("7_1fmci")] [node name="Poke" parent="XRControllerRightHand/RightHand/Hand_low_R/Armature/Skeleton3D/BoneAttachment3D" unique_id=303927399 instance=ExtResource("7_1fmci")]
[node name="AnimationTree" parent="XRControllerRightHand/RightHand" index="1"] [node name="AnimationTree" parent="XRControllerRightHand/RightHand" index="1"]
tree_root = SubResource("AnimationNodeBlendTree_37hbl") tree_root = SubResource("AnimationNodeBlendTree_dtgvk")
[node name="MovementTurn" parent="XRControllerRightHand" unique_id=154529119 instance=ExtResource("4_rd8py")] [node name="MovementTurn" parent="XRControllerRightHand" unique_id=154529119 instance=ExtResource("4_rd8py")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0074635968, 0.024033919) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0074635968, 0.024033919)
+15
View File
@@ -6,6 +6,17 @@
[ext_resource type="PackedScene" uid="uid://c0lknik4noobs" path="res://items/BurgerBuns.tscn" id="2_1q74o"] [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"] [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"] [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
radius = 0.3 radius = 0.3
@@ -21,6 +32,10 @@ albedo_color = Color(0.6784191, 0.54546416, 0.016760282, 1)
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_u2p81")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_u2p81")]
station = NodePath("../BurgerBunsDispenser") 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] [node name="BurgerBunsDispenser" type="StaticBody3D" parent="." unique_id=1720683779]
script = ExtResource("1_myl3s") script = ExtResource("1_myl3s")
item_scene = ExtResource("2_1q74o") item_scene = ExtResource("2_1q74o")
+18
View File
@@ -9,6 +9,24 @@
[ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="6_racgh"] [ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="6_racgh"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_3jbl6"] [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_3jbl6"]
properties/0/path = NodePath("Counter:position")
properties/0/spawn = false
properties/0/replication_mode = 1
properties/1/path = NodePath("Counter:rotation")
properties/1/spawn = false
properties/1/replication_mode = 1
properties/2/path = NodePath("Counter:process_result")
properties/2/spawn = false
properties/2/replication_mode = 1
properties/3/path = NodePath("Counter:process_result_work")
properties/3/spawn = false
properties/3/replication_mode = 1
properties/4/path = NodePath("Counter:work_progress")
properties/4/spawn = false
properties/4/replication_mode = 1
properties/5/path = NodePath("Counter:visible")
properties/5/spawn = false
properties/5/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"] [sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"]
size = Vector3(0.48521727, 0.040039063, 0.41994628) size = Vector3(0.48521727, 0.040039063, 0.41994628)
+14 -12
View File
@@ -8,14 +8,6 @@
[ext_resource type="Material" uid="uid://d1djvskv4n4m3" path="res://textures/hob_off.tres" id="4_8qpxk"] [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"] [ext_resource type="Material" uid="uid://db7c7w4apwti7" path="res://textures/hob_on.tres" id="6_m7l4u"]
[sub_resource type="BoxShape3D" id="BoxShape3D_kdxnr"]
size = Vector3(0.6, 1, 0.6)
[sub_resource type="BoxShape3D" id="BoxShape3D_7uuqv"]
size = Vector3(0.6, 0.12802735, 0.6)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gkb3v"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_hob"] [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_hob"]
properties/0/path = NodePath("Hob:time_cooked") properties/0/path = NodePath("Hob:time_cooked")
properties/0/spawn = false properties/0/spawn = false
@@ -32,6 +24,17 @@ properties/3/replication_mode = 1
properties/4/path = NodePath("Hob:rotation") properties/4/path = NodePath("Hob:rotation")
properties/4/spawn = false properties/4/spawn = false
properties/4/replication_mode = 1 properties/4/replication_mode = 1
properties/5/path = NodePath("Hob:visible")
properties/5/spawn = false
properties/5/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_kdxnr"]
size = Vector3(0.6, 1, 0.6)
[sub_resource type="BoxShape3D" id="BoxShape3D_7uuqv"]
size = Vector3(0.6, 0.12802735, 0.6)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gkb3v"]
[sub_resource type="Animation" id="Animation_7uuqv"] [sub_resource type="Animation" id="Animation_7uuqv"]
length = 0.001 length = 0.001
@@ -171,6 +174,9 @@ _data = {
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_pydjp")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_pydjp")]
station = NodePath("../Hob") station = NodePath("../Hob")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=768992259]
replication_config = SubResource("SceneReplicationConfig_np_hob")
[node name="Hob" type="StaticBody3D" parent="." unique_id=1332123047] [node name="Hob" type="StaticBody3D" parent="." unique_id=1332123047]
script = ExtResource("1_7jc4g") script = ExtResource("1_7jc4g")
@@ -279,10 +285,6 @@ size = Vector3(0.55, 0.835, 0.072)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003479004, -0.45215607, 0.24655426) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003479004, -0.45215607, 0.24655426)
size = Vector3(0.55, 0.096, 0.14) size = Vector3(0.55, 0.096, 0.14)
[node name="Sync" type="MultiplayerSynchronizer" parent="Hob" unique_id=768992259]
root_path = NodePath("../..")
replication_config = SubResource("SceneReplicationConfig_np_hob")
[node name="AnimationPlayer" type="AnimationPlayer" parent="Hob" unique_id=1525460719] [node name="AnimationPlayer" type="AnimationPlayer" parent="Hob" unique_id=1525460719]
root_node = NodePath("../..") root_node = NodePath("../..")
libraries/ = SubResource("AnimationLibrary_ac5f3") libraries/ = SubResource("AnimationLibrary_ac5f3")
+5 -5
View File
@@ -36,9 +36,6 @@ properties/0/replication_mode = 1
properties/1/path = NodePath(".:quaternion") properties/1/path = NodePath(".:quaternion")
properties/1/spawn = false properties/1/spawn = false
properties/1/replication_mode = 1 properties/1/replication_mode = 1
properties/2/path = NodePath("NetPickable:net_held_by")
properties/2/spawn = true
properties/2/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"] [sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"]
size = Vector3(0.5, 0.87231445, 0.5) size = Vector3(0.5, 0.87231445, 0.5)
@@ -51,12 +48,15 @@ albedo_color = Color(1, 0.78999996, 0.39999998, 0.4627451)
properties/0/path = NodePath(".:visible") properties/0/path = NodePath(".:visible")
properties/0/spawn = false properties/0/spawn = false
properties/0/replication_mode = 1 properties/0/replication_mode = 1
properties/1/path = NodePath("../MoveHandle:position") properties/1/path = NodePath(".:position")
properties/1/spawn = false properties/1/spawn = false
properties/1/replication_mode = 1 properties/1/replication_mode = 1
properties/2/path = NodePath("../MoveHandle:rotation") properties/2/path = NodePath(".:rotation")
properties/2/spawn = false properties/2/spawn = false
properties/2/replication_mode = 1 properties/2/replication_mode = 1
properties/3/path = NodePath("..:moving")
properties/3/spawn = false
properties/3/replication_mode = 1
[node name="StationMovement" type="Node3D" unique_id=946873975 node_paths=PackedStringArray("move_handle", "move_ghost")] [node name="StationMovement" type="Node3D" unique_id=946873975 node_paths=PackedStringArray("move_handle", "move_ghost")]
script = ExtResource("1_ldy6a") script = ExtResource("1_ldy6a")
+3 -3
View File
@@ -11,9 +11,9 @@ extends StaticBody3D
# Chopping state. Follow the hob/sink pattern so the display refreshes when # Chopping state. Follow the hob/sink pattern so the display refreshes when
# values change; only the world owner runs the station's process in practice. # values change; only the world owner runs the station's process in practice.
var process_result: String = "": set = _set_result @export var process_result: String = "": set = _set_result
var process_result_work: float = 0.0: set = _set_result_work @export var process_result_work: float = 0.0: set = _set_result_work
var work_progress: float = 0.0: set = _set_work_progress @export var work_progress: float = 0.0: set = _set_work_progress
func _ready() -> void: func _ready() -> void:
+14
View File
@@ -6,6 +6,17 @@
[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="3_ahn1e"] [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"] [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"] [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
radius = 0.3 radius = 0.3
@@ -25,6 +36,9 @@ size = Vector3(0.1, 0.1, 0.1)
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_qooyy")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_qooyy")]
station = NodePath("../CubeSideDispenser") 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] [node name="CubeSideDispenser" type="StaticBody3D" parent="." unique_id=200950572]
script = ExtResource("1_4m60m") script = ExtResource("1_4m60m")
item_scene = ExtResource("2_nn8tr") item_scene = ExtResource("2_nn8tr")
+29 -7
View File
@@ -1,8 +1,20 @@
[gd_scene format=3 uid="uid://cnjwtnhwh0i8q"] [gd_scene format=3 uid="uid://cnjwtnhwh0i8q"]
[ext_resource type="Script" uid="uid://q7tpwmrbmu1m" path="res://stations/dirt_station.gd" id="1_hc1d4"] [ext_resource type="Script" uid="uid://q7tpwmrbmu1m" path="res://stations/dirt_station.gd" id="1_hc1d4"]
[ext_resource type="PackedScene" uid="uid://cvucwxibtol5f" path="res://stations/StationMovement.tscn" id="1_ucg2q"]
[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="2_v0ytd"] [ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="2_v0ytd"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ku4h3"]
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="BoxShape3D" id="BoxShape3D_24d3s"] [sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"]
size = Vector3(0.5, 1, 0.5) size = Vector3(0.5, 1, 0.5)
@@ -16,28 +28,38 @@ size = Vector3(0.5, 1, 0.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_mep2a"] [sub_resource type="BoxShape3D" id="BoxShape3D_mep2a"]
size = Vector3(0.81640625, 0.5635376, 0.79351807) size = Vector3(0.81640625, 0.5635376, 0.79351807)
[node name="DirtStation" type="StaticBody3D" unique_id=160842153 groups=["station"]] [node name="DirtStation" type="Node3D" unique_id=784427347]
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_ucg2q")]
station = NodePath("../DirtStation")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1485614825]
root_path = NodePath("../DirtStation")
replication_config = SubResource("SceneReplicationConfig_ku4h3")
[node name="DirtStation" type="StaticBody3D" parent="." unique_id=160842153 groups=["station"]]
script = ExtResource("1_hc1d4") script = ExtResource("1_hc1d4")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1400366312] [node name="CollisionShape3D" type="CollisionShape3D" parent="DirtStation" unique_id=1400366312]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("BoxShape3D_24d3s") shape = SubResource("BoxShape3D_24d3s")
[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D" unique_id=55726639] [node name="MeshInstance3D" type="MeshInstance3D" parent="DirtStation/CollisionShape3D" unique_id=55726639]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.008318901, 0, -0.022509098) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.008318901, 0, -0.022509098)
mesh = SubResource("BoxMesh_ay2w6") mesh = SubResource("BoxMesh_ay2w6")
[node name="Label3D" type="Label3D" parent="CollisionShape3D" unique_id=1251766743] [node name="Label3D" type="Label3D" parent="DirtStation/CollisionShape3D" unique_id=1251766743]
transform = Transform3D(0.9999992, 0, 0, 0, 0.99999946, 0, 0, 0, 0.9999992, 0.002797456, 0.6309581, -0.2812457) transform = Transform3D(0.9999992, 0, 0, 0, 0.99999946, 0, 0, 0, 0.9999992, 0.002797456, 0.6309581, -0.2812457)
text = "Dirt" text = "Dirt"
[node name="XRToolsSnapZone" type="Area3D" parent="." unique_id=333161027 groups=["station"]] [node name="XRToolsSnapZone" type="Area3D" parent="DirtStation" unique_id=333161027 groups=["station"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5270121, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0313971, 0)
collision_layer = 65536 collision_layer = 65536
collision_mask = 65540 collision_mask = 65540
script = ExtResource("2_v0ytd") script = ExtResource("2_v0ytd")
snap_mode = 1 snap_mode = 1
metadata/_custom_type_script = "uid://cquqe4f1m1sw6" metadata/_custom_type_script = "uid://cquqe4f1m1sw6"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="XRToolsSnapZone" unique_id=1398712192] [node name="CollisionShape3D2" type="CollisionShape3D" parent="DirtStation/XRToolsSnapZone" unique_id=1398712192]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.008666992, -0.11009073, -0.009353638) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.008666992, -0.11009073, -0.009353638)
shape = SubResource("BoxShape3D_mep2a") shape = SubResource("BoxShape3D_mep2a")
+14
View File
@@ -6,6 +6,17 @@
[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="3_lr065"] [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"] [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"] [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
radius = 0.3 radius = 0.3
@@ -18,6 +29,9 @@ radius = 0.3
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_jgjsq")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_jgjsq")]
station = NodePath("../PlateDispenser") 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] [node name="PlateDispenser" type="StaticBody3D" parent="." unique_id=710538846]
script = ExtResource("1_jm0ik") script = ExtResource("1_jm0ik")
item_scene = ExtResource("2_tfo2i") item_scene = ExtResource("2_tfo2i")
+14
View File
@@ -6,6 +6,17 @@
[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="4_fx1kw"] [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"] [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"] [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
radius = 0.3 radius = 0.3
@@ -21,6 +32,9 @@ albedo_color = Color(0.48, 0.34336, 0.1872, 1)
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_8orw3")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_8orw3")]
station = NodePath("../PotatoDispenser") 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] [node name="PotatoDispenser" type="StaticBody3D" parent="." unique_id=1720683779]
script = ExtResource("2_30d2d") script = ExtResource("2_30d2d")
item_scene = ExtResource("3_mjqsn") item_scene = ExtResource("3_mjqsn")
+14
View File
@@ -7,6 +7,17 @@
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_mep2a"] [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"] [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"] [sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
radius = 0.3 radius = 0.3
@@ -22,6 +33,9 @@ albedo_texture = ExtResource("4_1f5le")
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("6_8ou8n")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("6_8ou8n")]
station = NodePath("../RawBurgerDispenser") 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] [node name="RawBurgerDispenser" type="StaticBody3D" parent="." unique_id=235630131]
script = ExtResource("1_gkb3v") script = ExtResource("1_gkb3v")
item_scene = ExtResource("2_mep2a") item_scene = ExtResource("2_mep2a")
+3 -3
View File
@@ -10,9 +10,9 @@ const plate_wash_time: float = 3.0
## display when they change. Only the world owner runs this station's _process ## display when they change. Only the world owner runs this station's _process
## and snap zone, so without this a client never updates its bar — it stayed ## and snap zone, so without this a client never updates its bar — it stayed
## frozen on screen long after the plate came out clean. ## frozen on screen long after the plate came out clean.
var time_washed: float = 0.0: set = _set_time_washed @export var time_washed: float = 0.0: set = _set_time_washed
var is_washing: bool = false: set = _set_is_washing @export var is_washing: bool = false: set = _set_is_washing
var plate: PlateController = null @export var plate: PlateController = null
func _set_time_washed(value: float) -> void: func _set_time_washed(value: float) -> void:
+21 -11
View File
@@ -5,6 +5,23 @@
[ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="2_3ocod"] [ext_resource type="Script" uid="uid://cquqe4f1m1sw6" path="res://addons/godot-xr-tools/objects/snap_zone.gd" id="2_3ocod"]
[ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="4_1pinr"] [ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="4_1pinr"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_sink"]
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(".:time_washed")
properties/2/spawn = false
properties/2/replication_mode = 1
properties/3/path = NodePath(".:is_washing")
properties/3/spawn = false
properties/3/replication_mode = 1
properties/4/path = NodePath(".:visible")
properties/4/spawn = false
properties/4/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_l02yb"] [sub_resource type="BoxShape3D" id="BoxShape3D_l02yb"]
size = Vector3(0.6, 1.0024658, 0.6) size = Vector3(0.6, 1.0024658, 0.6)
@@ -16,14 +33,6 @@ stereo = true
[sub_resource type="BoxShape3D" id="BoxShape3D_ai6d4"] [sub_resource type="BoxShape3D" id="BoxShape3D_ai6d4"]
size = Vector3(0.5, 0.128, 0.5) size = Vector3(0.5, 0.128, 0.5)
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_sink"]
properties/0/path = NodePath(".:time_washed")
properties/0/spawn = true
properties/0/replication_mode = 1
properties/1/path = NodePath(".:is_washing")
properties/1/spawn = true
properties/1/replication_mode = 1
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0gbf8"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0gbf8"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bvwq1"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bvwq1"]
@@ -187,6 +196,10 @@ height = 0.04
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_uluvy")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_uluvy")]
station = NodePath("../Sink") station = NodePath("../Sink")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1601242574]
root_path = NodePath("../Sink")
replication_config = SubResource("SceneReplicationConfig_np_sink")
[node name="Sink" type="StaticBody3D" parent="." unique_id=2055277359 groups=["station"]] [node name="Sink" type="StaticBody3D" parent="." unique_id=2055277359 groups=["station"]]
script = ExtResource("1_7hh4b") script = ExtResource("1_7hh4b")
@@ -241,9 +254,6 @@ transform = Transform3D(1, 0, 0, 0, 0.9367828, -0.34991136, 0, 0.34991136, 0.936
operation = 2 operation = 2
size = Vector3(1, 1.2053223, 0.352417) size = Vector3(1, 1.2053223, 0.352417)
[node name="Sync" type="MultiplayerSynchronizer" parent="Sink" unique_id=1601242574]
replication_config = SubResource("SceneReplicationConfig_np_sink")
[node name="ProgressBar3D" parent="Sink" unique_id=654673176 instance=ExtResource("4_1pinr")] [node name="ProgressBar3D" parent="Sink" unique_id=654673176 instance=ExtResource("4_1pinr")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3229032, -0.035980098) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3229032, -0.035980098)
+1 -1
View File
@@ -9,7 +9,7 @@ var move_handle_rigid: RigidBody3D
var original_collision_layer: int = 0 var original_collision_layer: int = 0
var original_y_pos: float = 0.0 var original_y_pos: float = 0.0
var original_station_transform: Transform3D = Transform3D.IDENTITY var original_station_transform: Transform3D = Transform3D.IDENTITY
var moving: bool = false @export var moving: bool = false
var ghost_materials: Array[StandardMaterial3D] = [] var ghost_materials: Array[StandardMaterial3D] = []
const GHOST_COLOR_VALID: Color = Color(0, 1, 0, 0.35) const GHOST_COLOR_VALID: Color = Color(0, 1, 0, 0.35)
+24 -14
View File
@@ -7,6 +7,26 @@
[ext_resource type="AudioStream" uid="uid://daiv8ubwdbidf" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="3_0s6ir"] [ext_resource type="AudioStream" uid="uid://daiv8ubwdbidf" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="3_0s6ir"]
[ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="3_kjf1i"] [ext_resource type="PackedScene" uid="uid://bxbocxdaayvwx" path="res://UI/progress_bar.tscn" id="3_kjf1i"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_table"]
properties/0/path = NodePath(".:_state")
properties/0/spawn = false
properties/0/replication_mode = 1
properties/1/path = NodePath(".:_state_time")
properties/1/spawn = false
properties/1/replication_mode = 1
properties/2/path = NodePath(".:_unsatisfied_orders")
properties/2/spawn = false
properties/2/replication_mode = 1
properties/3/path = NodePath(".:position")
properties/3/spawn = false
properties/3/replication_mode = 1
properties/4/path = NodePath(".:rotation")
properties/4/spawn = false
properties/4/replication_mode = 1
properties/5/path = NodePath(".:visible")
properties/5/spawn = false
properties/5/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"] [sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"]
size = Vector3(0.7983472, 0.060000002, 0.59873295) size = Vector3(0.7983472, 0.060000002, 0.59873295)
@@ -16,17 +36,6 @@ radius = 0.6
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_24d3s"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_24d3s"]
albedo_color = Color(0.31, 0.21576, 0.1333, 1) albedo_color = Color(0.31, 0.21576, 0.1333, 1)
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_np_table"]
properties/0/path = NodePath(".:_state")
properties/0/spawn = true
properties/0/replication_mode = 1
properties/1/path = NodePath(".:_state_time")
properties/1/spawn = true
properties/1/replication_mode = 1
properties/2/path = NodePath(".:_unsatisfied_orders")
properties/2/spawn = true
properties/2/replication_mode = 1
[sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"] [sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"]
size = Vector3(2.1, 0.5, 2.1) size = Vector3(2.1, 0.5, 2.1)
@@ -35,6 +44,10 @@ size = Vector3(2.1, 0.5, 2.1)
[node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_5mi7y")] [node name="StationMovement" parent="." unique_id=946873975 node_paths=PackedStringArray("station") instance=ExtResource("1_5mi7y")]
station = NodePath("../Table") station = NodePath("../Table")
[node name="MultiplayerSyncronizer" type="MultiplayerSynchronizer" parent="." unique_id=2000411505]
root_path = NodePath("../Table")
replication_config = SubResource("SceneReplicationConfig_np_table")
[node name="Table" type="StaticBody3D" parent="." unique_id=1863572470 groups=["station", "table"]] [node name="Table" type="StaticBody3D" parent="." unique_id=1863572470 groups=["station", "table"]]
script = ExtResource("1_2vcpj") script = ExtResource("1_2vcpj")
money_sound = ExtResource("2_jslhm") money_sound = ExtResource("2_jslhm")
@@ -154,9 +167,6 @@ pixel_size = 0.003
billboard = 2 billboard = 2
text = "20.1s" text = "20.1s"
[node name="Sync" type="MultiplayerSynchronizer" parent="Table" unique_id=2000411505]
replication_config = SubResource("SceneReplicationConfig_np_table")
[node name="ProgressBar3D" parent="Table" unique_id=654673176 instance=ExtResource("3_kjf1i")] [node name="ProgressBar3D" parent="Table" unique_id=654673176 instance=ExtResource("3_kjf1i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.8692299, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.8692299, 0)
y_billboard = true y_billboard = true
+1 -1
View File
@@ -1,6 +1,6 @@
[gd_resource type="Sky" format=3 uid="uid://c1abtpwhdm2d5"] [gd_resource type="Sky" format=3 uid="uid://c1abtpwhdm2d5"]
[ext_resource type="Texture2D" uid="uid://ci0hjoabnf8nu" path="res://Textures/sky/NightSkyHDRI009_16K_HDR.exr" id="acg_mft3ic9d"] [ext_resource type="Texture2D" uid="uid://ci0hjoabnf8nu" path="res://textures/sky/NightSkyHDRI009_16K_HDR.exr" id="acg_mft3ic9d"]
[sub_resource type="PanoramaSkyMaterial" id="acg_025sfqr4"] [sub_resource type="PanoramaSkyMaterial" id="acg_025sfqr4"]
panorama = ExtResource("acg_mft3ic9d") panorama = ExtResource("acg_mft3ic9d")
+1 -1
View File
@@ -48,7 +48,7 @@ func _ready() -> void:
## --server / --join <ip> on the command line skip straight to the multiplayer ## --server / --join <ip> on the command line skip straight to the multiplayer
## scene, same as the previously headless-tested main.tscn flow. ## scene, same as the previously headless-tested main.tscn flow.
func _bypass_menu_for_cmdline() -> bool: func _bypass_menu_for_cmdline() -> bool:
var args := OS.get_cmdline_user_args() var args := OS.get_cmdline_args()
if args.has("--server"): if args.has("--server"):
NetworkManager.request_host() NetworkManager.request_host()
get_tree().change_scene_to_file.call_deferred(MULTIPLAYER_SCENE) get_tree().change_scene_to_file.call_deferred(MULTIPLAYER_SCENE)
@@ -1,4 +1,4 @@
[gd_resource type="VisualShader" load_steps=28 format=3 uid="uid://c6okm2ay0fkjf"] [gd_resource type="VisualShader" format=3 uid="uid://c6okm2ay0fkjf"]
[sub_resource type="VisualShaderNodeFloatOp" id="1"] [sub_resource type="VisualShaderNodeFloatOp" id="1"]
output_port_for_preview = 0 output_port_for_preview = 0
@@ -101,159 +101,6 @@ output_port_for_preview = 0
function = 12 function = 12
[resource] [resource]
code = "shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx, unshaded;
uniform vec4 albedo : source_color;
uniform float value;
uniform float fade;
uniform float radius;
uniform float width;
void fragment() {
// ColorParameter:2
vec4 n_out2p0 = albedo;
// Input:3
vec2 n_out3p0 = UV;
// VectorOp:4
vec3 n_in4p1 = vec3(2.00000, 2.00000, 0.00000);
vec3 n_out4p0 = vec3(n_out3p0, 0.0) * n_in4p1;
// VectorOp:5
vec3 n_in5p1 = vec3(-1.00000, -1.00000, 0.00000);
vec3 n_out5p0 = n_out4p0 + n_in5p1;
// VectorFunc:17
vec3 n_out17p0 = normalize(n_out5p0);
// VectorOp:19
vec3 n_in19p1 = vec3(0.00000, -1.00000, 0.00000);
vec3 n_out19p0 = cross(n_out17p0, n_in19p1);
// VectorDecompose:20
float n_out20p0 = n_out19p0.x;
float n_out20p1 = n_out19p0.y;
float n_out20p2 = n_out19p0.z;
// DotProduct:18
vec3 n_in18p1 = vec3(0.00000, -1.00000, 0.00000);
float n_out18p0 = dot(n_out17p0, n_in18p1);
// FloatFunc:24
float n_out24p0 = acos(n_out18p0);
// FloatOp:23
float n_in23p0 = 6.28319;
float n_out23p0 = n_in23p0 - n_out24p0;
vec3 n_out22p0;
// If:22
float n_in22p1 = 0.00000;
float n_in22p2 = 0.00001;
if(abs(n_out20p2 - n_in22p1) < n_in22p2)
{
n_out22p0 = vec3(n_out24p0);
}
else if(n_out20p2 < n_in22p1)
{
n_out22p0 = vec3(n_out24p0);
}
else
{
n_out22p0 = vec3(n_out23p0);
}
// FloatOp:25
float n_in25p1 = 6.28319;
float n_out25p0 = n_out22p0.x / n_in25p1;
// FloatParameter:26
float n_out26p0 = value;
// FloatOp:27
float n_out27p0 = n_out25p0 - n_out26p0;
// FloatParameter:14
float n_out14p0 = fade;
// FloatOp:30
float n_in30p1 = 6.28319;
float n_out30p0 = n_out14p0 / n_in30p1;
// FloatOp:28
float n_out28p0 = n_out27p0 / n_out30p0;
// VectorLen:6
float n_out6p0 = length(n_out5p0);
// FloatParameter:8
float n_out8p0 = radius;
// FloatOp:7
float n_out7p0 = n_out6p0 - n_out8p0;
// FloatFunc:9
float n_out9p0 = abs(n_out7p0);
// FloatParameter:11
float n_out11p0 = width;
// FloatOp:15
float n_in15p1 = 2.00000;
float n_out15p0 = n_out11p0 / n_in15p1;
// FloatOp:13
float n_out13p0 = n_out9p0 - n_out15p0;
// FloatOp:10
float n_out10p0 = n_out13p0 / n_out14p0;
// FloatOp:29
float n_out29p0 = max(n_out28p0, n_out10p0);
// FloatOp:12
float n_in12p0 = 1.00000;
float n_out12p0 = n_in12p0 - n_out29p0;
// Output:0
ALBEDO = vec3(n_out2p0.xyz);
ALPHA = n_out12p0;
}
"
graph_offset = Vector2(652.664, 119.317)
flags/unshaded = true flags/unshaded = true
nodes/fragment/0/position = Vector2(1800, -40) nodes/fragment/0/position = Vector2(1800, -40)
nodes/fragment/2/node = SubResource("3") nodes/fragment/2/node = SubResource("3")
@@ -1,4 +1,4 @@
[gd_resource type="VisualShader" load_steps=16 format=3 uid="uid://4i0pwdtfmtsv"] [gd_resource type="VisualShader" format=3 uid="uid://4i0pwdtfmtsv"]
[sub_resource type="VisualShaderNodeCompare" id="5"] [sub_resource type="VisualShaderNodeCompare" id="5"]
output_port_for_preview = 0 output_port_for_preview = 0
@@ -62,95 +62,6 @@ function = 2
condition = 1 condition = 1
[resource] [resource]
code = "shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx, unshaded;
uniform vec4 bar_color : source_color;
uniform sampler2D bar_texture : source_color;
uniform vec3 cutout = vec3(4.850000, 0.330000, 0.000000);
uniform float progress;
void fragment() {
// ColorParameter:15
vec4 n_out15p0 = bar_color;
vec4 n_out19p0;
// Texture2D:19
n_out19p0 = texture(bar_texture, UV);
float n_out19p4 = n_out19p0.a;
// VectorOp:17
vec3 n_out17p0 = vec3(n_out15p0.xyz) * vec3(n_out19p0.xyz);
// Input:3
vec2 n_out3p0 = UV;
// VectorOp:4
vec3 n_in4p1 = vec3(10.00000, 1.00000, 0.00000);
vec3 n_out4p0 = vec3(n_out3p0, 0.0) * n_in4p1;
// VectorOp:5
vec3 n_in5p1 = vec3(5.00000, 0.50000, 0.00000);
vec3 n_out5p0 = n_out4p0 - n_in5p1;
// VectorFunc:6
vec3 n_out6p0 = abs(n_out5p0);
// Vector3Parameter:20
vec3 n_out20p0 = cutout;
bool n_out8p0;
// Compare:8
{
bvec2 _bv = greaterThan(vec2(n_out6p0.xy), vec2(n_out20p0.xy));
n_out8p0 = any(_bv);
}
// FloatParameter:12
float n_out12p0 = progress;
// VectorCompose:13
float n_in13p1 = 0.00000;
float n_in13p2 = 0.00000;
vec3 n_out13p0 = vec3(n_out12p0, n_in13p1, n_in13p2);
bool n_out11p0;
// Compare:11
{
bvec2 _bv = lessThan(n_out3p0, vec2(n_out13p0.xy));
n_out11p0 = any(_bv);
}
// FloatOp:14
float n_out14p0 = max((n_out8p0 ? 1.0 : 0.0), (n_out11p0 ? 1.0 : 0.0));
// FloatOp:18
float n_out18p0 = n_out19p4 * n_out14p0;
// Output:0
ALBEDO = n_out17p0;
ALPHA = n_out18p0;
}
"
graph_offset = Vector2(-744.269, 307.118)
flags/unshaded = true flags/unshaded = true
nodes/fragment/0/position = Vector2(1220, 440) nodes/fragment/0/position = Vector2(1220, 440)
nodes/fragment/3/node = SubResource("10") nodes/fragment/3/node = SubResource("10")
+1 -1
View File
@@ -2,7 +2,7 @@ extends Node
const STAR_DAY_FREQUENCY: int = 3 const STAR_DAY_FREQUENCY: int = 3
var money: int = 0: var money: int = 1000:
get: get:
return money return money
set(value): set(value):
-1
View File
@@ -32,7 +32,6 @@ file_logging/enable_file_logging=true
window/size/viewport_width=1000 window/size/viewport_width=1000
window/size/viewport_height=650 window/size/viewport_height=650
window/size/mode=2
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
window/stretch/aspect="expand" window/stretch/aspect="expand"
-1
View File
@@ -1 +0,0 @@
uid://be8o8m6xpp3kc
+3 -3
View File
@@ -86,7 +86,7 @@ var _frame_index := 0
func _ready() -> void: func _ready() -> void:
var args := OS.get_cmdline_user_args() var args := OS.get_cmdline_args()
_auto_mode = "--mptest" in args _auto_mode = "--mptest" in args
# Opt-in only. This node also sits in the real multiplayer scene (so a client # Opt-in only. This node also sits in the real multiplayer scene (so a client
# joining a test session has a driver), and must be completely inert during # joining a test session has a driver), and must be completely inert during
@@ -788,7 +788,7 @@ func _setup_frames() -> void:
_frames_enabled = false _frames_enabled = false
_log("frame capture disabled: a headless run has no rendered output to grab") _log("frame capture disabled: a headless run has no rendered output to grab")
return return
var role := "server" if "--server" in OS.get_cmdline_user_args() else "client" var role := "server" if "--server" in OS.get_cmdline_args() else "client"
_frames_dir = "res://logs/mptest_frames_%s" % role _frames_dir = "res://logs/mptest_frames_%s" % role
DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(_frames_dir)) DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(_frames_dir))
# Clear out a previous run's frames, or the GIF would splice the two together. # Clear out a previous run's frames, or the GIF would splice the two together.
@@ -1410,7 +1410,7 @@ func _banner(s: String) -> void:
# would otherwise fight over one file (the engine's own godot.log has exactly # would otherwise fight over one file (the engine's own godot.log has exactly
# that problem when two peers run at once — it rotates per process). # that problem when two peers run at once — it rotates per process).
func _open_log() -> void: func _open_log() -> void:
var role := "server" if "--server" in OS.get_cmdline_user_args() else "client" var role := "server" if "--server" in OS.get_cmdline_args() else "client"
var path := "res://logs/mptest_%s.log" % role var path := "res://logs/mptest_%s.log" % role
DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path("res://logs")) DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path("res://logs"))
_log_file = FileAccess.open(path, FileAccess.WRITE) _log_file = FileAccess.open(path, FileAccess.WRITE)