Compare commits
3 Commits
20a437681a
...
f0bb044d12
| Author | SHA1 | Date | |
|---|---|---|---|
| f0bb044d12 | |||
| 08c3950583 | |||
| 9f33ee68c2 |
@@ -35,6 +35,9 @@ properties/1/replication_mode = 1
|
||||
properties/2/path = NodePath("NetPickable:net_held_by")
|
||||
properties/2/spawn = true
|
||||
properties/2/replication_mode = 1
|
||||
properties/3/path = NodePath(".:enabled")
|
||||
properties/3/spawn = false
|
||||
properties/3/replication_mode = 1
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_s6exe"]
|
||||
interpolation_mode = 2
|
||||
|
||||
+22
-4
@@ -24,6 +24,12 @@ var _original_freeze_mode: RigidBody3D.FreezeMode
|
||||
# branch of apply_held_state() clears while someone else is holding the item.
|
||||
var _original_enabled: bool
|
||||
|
||||
# Intent set by external game logic (e.g. a station enabling/disabling a tool),
|
||||
# independent of hold state. apply_held_state() is the sole writer of the
|
||||
# pickable's actual `enabled` property, so this is how other systems express
|
||||
# "should be enabled" without fighting that reconciliation every tick.
|
||||
var _tool_enabled: bool = true
|
||||
|
||||
# Whether the "our own hand still holds this" guard has already been logged for
|
||||
# the current grab. apply_held_state() runs every network tick, so without this
|
||||
# the guard message repeats for as long as you hold the item.
|
||||
@@ -47,6 +53,17 @@ func _ready() -> void:
|
||||
apply_held_state.call_deferred()
|
||||
|
||||
|
||||
## Called by external game logic (e.g. Counter._enable_tool/_disable_tool) to
|
||||
## express whether this item should be usable right now, independent of hold
|
||||
## state. Reapplies immediately so the change takes effect without waiting for
|
||||
## the next net_held_by tick.
|
||||
func set_tool_enabled(value: bool) -> void:
|
||||
if _tool_enabled == value:
|
||||
return
|
||||
_tool_enabled = value
|
||||
apply_held_state()
|
||||
|
||||
|
||||
func _set_net_held_by(value: int) -> void:
|
||||
var old := net_held_by
|
||||
net_held_by = value
|
||||
@@ -95,10 +112,11 @@ func apply_held_state() -> void:
|
||||
# e.g. a plate still got marked dirty) while pick_up() bailed out on
|
||||
# the disabled item, leaving the zone holding an item with no grab
|
||||
# driver that then fell out of the station.
|
||||
if _pickable.enabled != _original_enabled:
|
||||
var want_enabled_authority := _original_enabled and _tool_enabled
|
||||
if _pickable.enabled != want_enabled_authority:
|
||||
if NetworkManager.is_online():
|
||||
SweetLogger.debug("{0}: reclaiming ownership, restoring enabled {1}->{2}", [_pickable.name, _pickable.enabled, _original_enabled])
|
||||
_pickable.enabled = _original_enabled
|
||||
SweetLogger.debug("{0}: reclaiming ownership, restoring enabled {1}->{2}", [_pickable.name, _pickable.enabled, want_enabled_authority])
|
||||
_pickable.enabled = want_enabled_authority
|
||||
return
|
||||
# A net_held_by/position sync update can race ahead of the
|
||||
# authority-handoff RPC that's about to confirm a grab we just made
|
||||
@@ -125,7 +143,7 @@ func apply_held_state() -> void:
|
||||
# physics-property writes per item per tick. The comparison also means we
|
||||
# still re-apply if something else perturbs the state (e.g. let_go()
|
||||
# restoring the collision mask after a force-drop).
|
||||
var want_enabled := (net_held_by == 0)
|
||||
var want_enabled := (net_held_by == 0) and _tool_enabled
|
||||
if _pickable.freeze \
|
||||
and _pickable.freeze_mode == RigidBody3D.FREEZE_MODE_KINEMATIC \
|
||||
and _pickable.collision_mask == 0 \
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
[gd_scene format=3 uid="uid://c6rift56ql3f8"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_myl3s"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0lknik4noobs" path="res://items/BurgerBuns.tscn" id="2_1q74o"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_rf1b2"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
|
||||
radius = 0.3
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_u2p81"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"]
|
||||
height = 1.0
|
||||
@@ -26,49 +24,49 @@ collision_layer = 65536
|
||||
collision_mask = 65536
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
shape = SubResource("SphereShape3D_xmbo2")
|
||||
|
||||
[node name="BurgerBunsDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="BurgerBunsDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_myl3s")
|
||||
item_scene = ExtResource("2_1q74o")
|
||||
pickup_sound = ExtResource("4_u2p81")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser" unique_id=1470079357]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BurgerBunsDispenser" index="0" unique_id=1470079357]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("CylinderShape3D_24d3s")
|
||||
|
||||
[node name="SlideOffDome" parent="BurgerBunsDispenser" unique_id=1427609426 instance=ExtResource("4_rf1b2")]
|
||||
[node name="SlideOffDome" parent="BurgerBunsDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_rf1b2")]
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="BurgerBunsDispenser" unique_id=1746426494]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="BurgerBunsDispenser" index="2" unique_id=1746426494]
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=858311379]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="0" unique_id=858311379]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
sides = 32
|
||||
|
||||
[node name="CSGCombiner3DBuns" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1459017790]
|
||||
[node name="CSGCombiner3DBuns" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="1" unique_id=1459017790]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.16038476, 1.0341886, -0.09012994)
|
||||
autosmooth = true
|
||||
smoothing_angle = 138.9
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" unique_id=1328221793]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" index="0" unique_id=1328221793]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" unique_id=686624728]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns" index="1" unique_id=686624728]
|
||||
transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns/CSGCylinder3D3" unique_id=1113894081]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns/CSGCylinder3D3" index="0" unique_id=1113894081]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
@@ -76,26 +74,26 @@ sides = 16
|
||||
cone = true
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCombiner3DBuns2" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1636439623]
|
||||
[node name="CSGCombiner3DBuns2" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="2" unique_id=1636439623]
|
||||
transform = Transform3D(0.42896286, 0, -0.90332216, 0, 1, 0, 0.90332216, 0, 0.42896286, 0.13564643, 1.0341886, 0.20497215)
|
||||
autosmooth = true
|
||||
smoothing_angle = 138.9
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" unique_id=190780737]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" index="0" unique_id=190780737]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" unique_id=557804311]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2" index="1" unique_id=557804311]
|
||||
transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2/CSGCylinder3D3" unique_id=605379447]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns2/CSGCylinder3D3" index="0" unique_id=605379447]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
@@ -103,26 +101,26 @@ sides = 16
|
||||
cone = true
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCombiner3DBuns3" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=1594575583]
|
||||
[node name="CSGCombiner3DBuns3" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="3" unique_id=1594575583]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.17070979, 1.0341885, 0.07147646)
|
||||
autosmooth = true
|
||||
smoothing_angle = 138.9
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" unique_id=1686142490]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" index="0" unique_id=1686142490]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" unique_id=1773290691]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3" index="1" unique_id=1773290691]
|
||||
transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3/CSGCylinder3D3" unique_id=801922493]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns3/CSGCylinder3D3" index="0" unique_id=801922493]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
@@ -130,26 +128,26 @@ sides = 16
|
||||
cone = true
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCombiner3DBuns4" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=2055085730]
|
||||
[node name="CSGCombiner3DBuns4" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="4" unique_id=2055085730]
|
||||
transform = Transform3D(0.95670986, 0, 0.29104328, 0, 1, 0, -0.29104328, 0, 0.95670986, -0.08665481, 1.0341886, -0.10344604)
|
||||
autosmooth = true
|
||||
smoothing_angle = 138.9
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" unique_id=547208858]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" index="0" unique_id=547208858]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" unique_id=185898007]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4" index="1" unique_id=185898007]
|
||||
transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4/CSGCylinder3D3" unique_id=2117029178]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns4/CSGCylinder3D3" index="0" unique_id=2117029178]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
@@ -157,26 +155,26 @@ sides = 16
|
||||
cone = true
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCombiner3DBuns5" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" unique_id=546748728]
|
||||
[node name="CSGCombiner3DBuns5" type="CSGCombiner3D" parent="BurgerBunsDispenser/CSGCombiner3D" index="5" unique_id=546748728]
|
||||
transform = Transform3D(0.20608562, 0, -0.978534, 0, 1, 0, 0.978534, 0, 0.20608562, -0.047733016, 1.0341886, 0.19433105)
|
||||
autosmooth = true
|
||||
smoothing_angle = 138.9
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" unique_id=102374914]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" index="0" unique_id=102374914]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.004122257, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" unique_id=189923990]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5" index="1" unique_id=189923990]
|
||||
transform = Transform3D(0.82770383, -0.5611652, 0, 0.5611652, 0.82770383, 0, 0, 0, 1, -0.048392475, 0.029736161, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5/CSGCylinder3D3" unique_id=1980594001]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="BurgerBunsDispenser/CSGCombiner3D/CSGCombiner3DBuns5/CSGCylinder3D3" index="0" unique_id=1980594001]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9604645e-08, 0.040259957, 0)
|
||||
radius = 0.085
|
||||
height = 0.04
|
||||
|
||||
+32
-32
@@ -1,20 +1,20 @@
|
||||
[gd_scene format=3 uid="uid://efaec6ymgabo"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://cql13y8da4auf" path="res://stations/counter.gd" id="1_oapbh"]
|
||||
[ext_resource type="AudioStream" uid="uid://bqtk1adk8umbx" path="res://sounds/220197__gameaudio__click-basic.wav" id="2_0aadn"]
|
||||
[ext_resource type="AudioStream" uid="uid://daiv8ubwdbidf" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="2_lg82m"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="2_0aadn"]
|
||||
[ext_resource type="AudioStream" uid="uid://dllgyc8jh83an" path="res://sounds/220195__gameaudio__click-wooden-1.wav" id="2_lg82m"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgk88esxip5xi" path="res://items/knife.tscn" id="3_3gvdi"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"]
|
||||
size = Vector3(0.48521727, 0.040039063, 0.41994628)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_3gvdi"]
|
||||
size = Vector3(0.6, 0.9960913, 0.6)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_vlqg6"]
|
||||
size = Vector3(0.3, 0.05, 0.3)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_1ntq7"]
|
||||
size = Vector3(0.6, 0.12802735, 0.6)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_24d3s"]
|
||||
albedo_color = Color(0.49, 0.3854667, 0.29400003, 1)
|
||||
|
||||
@@ -35,94 +35,94 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2838624, -0.18)
|
||||
[node name="SnapZone" parent="." index="5" unique_id=1315859105]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0647464, 0)
|
||||
collision_layer = 65536
|
||||
collision_mask = 65540
|
||||
stash_sound = ExtResource("2_0aadn")
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.002, 0)
|
||||
shape = SubResource("BoxShape3D_1ntq7")
|
||||
|
||||
[node name="Counter" type="StaticBody3D" parent="." index="6" unique_id=1487893288 node_paths=PackedStringArray("audio", "knife", "snap_zone", "synchronizer", "progress_bar") groups=["station"]]
|
||||
[node name="Counter" type="StaticBody3D" parent="." index="6" unique_id=1487893288 node_paths=PackedStringArray("audio", "knife", "progress_bar", "notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_oapbh")
|
||||
audio = NodePath("AudioStreamPlayer3D")
|
||||
chop_audio = ExtResource("2_lg82m")
|
||||
knife = NodePath("Knife")
|
||||
progress_bar = NodePath("../ProgressBar3D")
|
||||
pickup_sound = ExtResource("2_0aadn")
|
||||
drop_sound = ExtResource("2_0aadn")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
progress_bar = NodePath("../ProgressBar3D")
|
||||
|
||||
[node name="CollisionShape3DCuttingBoard" type="CollisionShape3D" parent="Counter" unique_id=706340473]
|
||||
[node name="CollisionShape3DCuttingBoard" type="CollisionShape3D" parent="Counter" index="0" unique_id=706340473]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00088502467, 1.0178218, 0.0009101778)
|
||||
shape = SubResource("BoxShape3D_24d3s")
|
||||
|
||||
[node name="CollisionShape3DCounter" type="CollisionShape3D" parent="Counter" unique_id=895680269]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0)
|
||||
shape = SubResource("BoxShape3D_24d3s")
|
||||
[node name="CollisionShape3DCounter" type="CollisionShape3D" parent="Counter" index="1" unique_id=895680269]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5070981, 0)
|
||||
shape = SubResource("BoxShape3D_3gvdi")
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Counter" unique_id=1941838513]
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Counter" index="2" unique_id=1941838513]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0)
|
||||
|
||||
[node name="GestureArea" type="Area3D" parent="Counter" unique_id=398687137]
|
||||
[node name="GestureArea" type="Area3D" parent="Counter" index="3" unique_id=398687137]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0438623, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 65536
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Counter/GestureArea" unique_id=1450988028]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Counter/GestureArea" index="0" unique_id=1450988028]
|
||||
shape = SubResource("BoxShape3D_vlqg6")
|
||||
|
||||
[node name="Knife" parent="Counter" unique_id=1675596942 instance=ExtResource("3_3gvdi")]
|
||||
[node name="Knife" parent="Counter" index="4" unique_id=1675596942 instance=ExtResource("3_3gvdi")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2838624, 0)
|
||||
gravity_scale = 0.0
|
||||
freeze = true
|
||||
release_mode = 1
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Counter" unique_id=451757283]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Counter" index="5" unique_id=451757283]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5038623, 0)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=305755330]
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="0" unique_id=305755330]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.046, -0.025)
|
||||
size = Vector3(0.6, 0.908, 0.55)
|
||||
material = SubResource("StandardMaterial3D_24d3s")
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1086568272]
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="1" unique_id=1086568272]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.39999902, 0.22965088)
|
||||
operation = 2
|
||||
size = Vector3(0.6, 0.22992969, 0.14069825)
|
||||
material = SubResource("StandardMaterial3D_24d3s")
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=43663195]
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="2" unique_id=43663195]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
size = Vector3(0.6, 0.202, 0.6)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1210567516]
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="3" unique_id=1210567516]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5617909, 0.060281754)
|
||||
operation = 2
|
||||
size = Vector3(0.6, 0.12051563, 0.6402156)
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1533996708]
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="4" unique_id=1533996708]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 0.08, 0.26034504)
|
||||
size = Vector3(0.25, 0.6, 0.024)
|
||||
material = SubResource("StandardMaterial3D_pt8vn")
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=1983709234]
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="5" unique_id=1983709234]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, 0.08, 0.26034504)
|
||||
size = Vector3(0.25, 0.6, 0.024)
|
||||
material = SubResource("StandardMaterial3D_pt8vn")
|
||||
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Counter/CSGCombiner3D" unique_id=1785057925]
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Counter/CSGCombiner3D" index="6" unique_id=1785057925]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.057649717, 0.12459713, 0.29140875)
|
||||
radius = 0.025492515
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Counter/CSGCombiner3D" unique_id=1224446005]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Counter/CSGCombiner3D" index="7" unique_id=1224446005]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.060837455, 0.12459713, 0.29140875)
|
||||
radius = 0.025492515
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D" unique_id=187377667]
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D" index="8" unique_id=187377667]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.514, 0)
|
||||
size = Vector3(0.48251343, 0.037231445, 0.42160034)
|
||||
material = SubResource("StandardMaterial3D_vlqg6")
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D/CSGBox3D6" unique_id=1146824846]
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Counter/CSGCombiner3D/CSGBox3D6" index="0" unique_id=1146824846]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1899699, 0.01924485, -0.0039587095)
|
||||
operation = 2
|
||||
size = Vector3(0.037109375, 0.092285156, 0.26757813)
|
||||
|
||||
+6
-3
@@ -2,6 +2,7 @@
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_2p1q6"]
|
||||
[ext_resource type="Script" uid="uid://bsn8vhv5adxdo" path="res://stations/hob.gd" id="1_7jc4g"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="3_l0sax"]
|
||||
[ext_resource type="Material" uid="uid://d1djvskv4n4m3" path="res://textures/hob_off.tres" id="4_8qpxk"]
|
||||
[ext_resource type="Material" uid="uid://db7c7w4apwti7" path="res://textures/hob_on.tres" id="6_m7l4u"]
|
||||
|
||||
@@ -155,12 +156,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, -0.18)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.048892, 0)
|
||||
snap_mode = 1
|
||||
|
||||
[node name="Hob" type="StaticBody3D" parent="." index="6" unique_id=732560156 node_paths=PackedStringArray("animation_player", "notification_audio", "ambient_audio", "progress_bar", "snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="Hob" type="StaticBody3D" parent="." index="6" unique_id=732560156 node_paths=PackedStringArray("animation_player", "progress_bar", "notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_7jc4g")
|
||||
animation_player = NodePath("AnimationPlayer")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DPulse")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DContinous")
|
||||
progress_bar = NodePath("../ProgressBar3D")
|
||||
pickup_sound = ExtResource("3_l0sax")
|
||||
drop_sound = ExtResource("3_l0sax")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
|
||||
+16
-9
@@ -18,7 +18,7 @@ func _ready() -> void:
|
||||
SweetLogger.warning("{0} missing chop_audio reference", [name])
|
||||
if not knife:
|
||||
SweetLogger.warning("{0} missing knife reference", [name])
|
||||
_hide_all_tools()
|
||||
_disable_all_tools()
|
||||
|
||||
|
||||
func _start_chopping(id: String, work: float) -> void:
|
||||
@@ -33,12 +33,20 @@ func _process(delta: float) -> void:
|
||||
super.process(delta)
|
||||
|
||||
|
||||
|
||||
func _hide_all_tools():
|
||||
knife.visible = false
|
||||
knife.enabled = false
|
||||
func _enable_tool(_item: XRToolsPickable):
|
||||
SweetLogger.debug("Enable tool {0} on {1}", [_item.name, name])
|
||||
_item.visible = true
|
||||
_item.get_node("NetPickable").set_tool_enabled(true)
|
||||
|
||||
|
||||
func _disable_tool(_item: XRToolsPickable):
|
||||
SweetLogger.debug("Disable tool {0} on {1}", [_item.name, name])
|
||||
_item.visible = false
|
||||
_item.get_node("NetPickable").set_tool_enabled(false)
|
||||
|
||||
func _disable_all_tools():
|
||||
SweetLogger.debug("Disable all tools on {0}", [name])
|
||||
_disable_tool(knife)
|
||||
|
||||
|
||||
func _on_gesture_area_body_entered(body: Node3D) -> void:
|
||||
@@ -84,20 +92,19 @@ func on_food_item_picked_up(food_item: FoodItem) -> void:
|
||||
SweetLogger.debug("Held a FoodItem that is not choppable, id: {0} result: {1}", [food_item.id, result])
|
||||
return
|
||||
|
||||
knife.visible = true
|
||||
knife.enabled = true
|
||||
_enable_tool(knife)
|
||||
_start_chopping(result, RecipeManager.get_chopping_work(food_item.id))
|
||||
|
||||
|
||||
# Called from Station base class
|
||||
func on_object_dropped(_item: Node3D) -> void:
|
||||
SweetLogger.debug("->[]")
|
||||
_hide_all_tools()
|
||||
_disable_all_tools()
|
||||
reset()
|
||||
|
||||
|
||||
# Called from Station base class
|
||||
func on_work_complete():
|
||||
SweetLogger.debug("->[]")
|
||||
_hide_all_tools()
|
||||
_disable_all_tools()
|
||||
convert_item()
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
[gd_scene format=3 uid="uid://bbg7dwsbxxh1t"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_4m60m"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="PackedScene" uid="uid://e4i6o5oriecx" path="res://items/PickupCube.tscn" id="2_nn8tr"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_0wtc7"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_nn8tr"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
|
||||
radius = 0.3
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"]
|
||||
height = 1.0
|
||||
radius = 0.29541016
|
||||
@@ -30,52 +28,51 @@ collision_layer = 65536
|
||||
collision_mask = 65536
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.15291119, 0)
|
||||
shape = SubResource("SphereShape3D_xmbo2")
|
||||
|
||||
[node name="CubeSideDispenser" type="StaticBody3D" parent="." index="6" unique_id=200950572 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="CubeSideDispenser" type="StaticBody3D" parent="." index="6" unique_id=200950572 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_4m60m")
|
||||
item_scene = ExtResource("2_nn8tr")
|
||||
pickup_sound = ExtResource("4_0wtc7")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser" unique_id=1974757539]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CubeSideDispenser" index="0" unique_id=1974757539]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("CylinderShape3D_24d3s")
|
||||
|
||||
[node name="SlideOffDome" parent="CubeSideDispenser" unique_id=1427609426 instance=ExtResource("4_nn8tr")]
|
||||
[node name="SlideOffDome" parent="CubeSideDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_nn8tr")]
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="CubeSideDispenser" unique_id=1172420592]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="CubeSideDispenser" index="2" unique_id=1172420592]
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CubeSideDispenser/CSGCombiner3D" unique_id=1073546772]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CubeSideDispenser/CSGCombiner3D" index="0" unique_id=1073546772]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
sides = 32
|
||||
|
||||
[node name="Cubes" type="Node3D" parent="CubeSideDispenser" unique_id=100532970]
|
||||
[node name="Cubes" type="Node3D" parent="CubeSideDispenser" index="3" unique_id=100532970]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=2040729886]
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="0" unique_id=2040729886]
|
||||
transform = Transform3D(0.9709369, 0, 0.23933554, 0, 1, 0, -0.23933554, 0, 0.9709369, -0.0038359165, 1.0421022, -0.1349423)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=2119335322]
|
||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="1" unique_id=2119335322]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1336323, 1.0421022, 0.049409628)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=896999260]
|
||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="2" unique_id=896999260]
|
||||
transform = Transform3D(0.94914126, 0, -0.31485054, 0, 1, 0, 0.31485054, 0, 0.94914126, 0.021345377, 1.0421022, 0.13508391)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
[node name="MeshInstance3D4" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=1055210121]
|
||||
[node name="MeshInstance3D4" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="3" unique_id=1055210121]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14830339, 1.0421022, 0.054090023)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
[node name="MeshInstance3D5" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=1800524097]
|
||||
[node name="MeshInstance3D5" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="4" unique_id=1800524097]
|
||||
transform = Transform3D(0.966823, 0, -0.2554472, 0, 1, 0, 0.2554472, 0, 0.966823, 0.12695658, 1.0421022, -0.07926583)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
[node name="MeshInstance3D6" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" unique_id=192094054]
|
||||
[node name="MeshInstance3D6" type="MeshInstance3D" parent="CubeSideDispenser/Cubes" index="5" unique_id=192094054]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.11111963, 1.0421022, -0.094003916)
|
||||
mesh = SubResource("BoxMesh_irf4n")
|
||||
|
||||
+10
-14
@@ -1,7 +1,8 @@
|
||||
[gd_scene format=3 uid="uid://cnjwtnhwh0i8q"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://q7tpwmrbmu1m" path="res://stations/dirt_station.gd" id="1_hc1d4"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="3_ucg2q"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_24d3s"]
|
||||
size = Vector3(0.5, 1, 0.5)
|
||||
@@ -13,9 +14,6 @@ albedo_color = Color(0.45262197, 0.26770625, 0.2601587, 1)
|
||||
material = SubResource("StandardMaterial3D_qn1ku")
|
||||
size = Vector3(0.5, 1, 0.5)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_mep2a"]
|
||||
size = Vector3(0.81640625, 0.5635376, 0.79351807)
|
||||
|
||||
[node name="DirtStation" unique_id=707500902 instance=ExtResource("1_station")]
|
||||
|
||||
[node name="StationMovement" parent="." index="0" unique_id=946873975 node_paths=PackedStringArray("station")]
|
||||
@@ -24,27 +22,25 @@ station = NodePath("../DirtStation")
|
||||
[node name="SnapZone" parent="." index="5" unique_id=1315859105]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0313971, 0)
|
||||
collision_layer = 65536
|
||||
collision_mask = 65540
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.008666992, -0.11009073, -0.009353638)
|
||||
shape = SubResource("BoxShape3D_mep2a")
|
||||
|
||||
[node name="DirtStation" type="StaticBody3D" parent="." index="6" unique_id=160842153 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="DirtStation" type="StaticBody3D" parent="." index="6" unique_id=160842153 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_hc1d4")
|
||||
pickup_sound = ExtResource("3_ucg2q")
|
||||
drop_sound = ExtResource("3_ucg2q")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="DirtStation" unique_id=1400366312]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="DirtStation" index="0" unique_id=1400366312]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("BoxShape3D_24d3s")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="DirtStation/CollisionShape3D" unique_id=55726639]
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="DirtStation/CollisionShape3D" index="0" unique_id=55726639]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.008318901, 0, -0.022509098)
|
||||
mesh = SubResource("BoxMesh_ay2w6")
|
||||
|
||||
[node name="Label3D" type="Label3D" parent="DirtStation/CollisionShape3D" unique_id=1251766743]
|
||||
[node name="Label3D" type="Label3D" parent="DirtStation/CollisionShape3D" index="1" unique_id=1251766743]
|
||||
transform = Transform3D(0.9999992, 0, 0, 0, 0.99999946, 0, 0, 0, 0.9999992, 0.002797456, 0.6309581, -0.2812457)
|
||||
text = "Dirt"
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
[gd_scene format=3 uid="uid://ck5tuftqmyiue"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_jm0ik"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="PackedScene" uid="uid://bp3v1jl8pctro" path="res://Containers/plate.tscn" id="2_tfo2i"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_jgjsq"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="4_tfo2i"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
|
||||
radius = 0.3
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"]
|
||||
height = 1.0
|
||||
radius = 0.3
|
||||
@@ -23,94 +21,94 @@ collision_layer = 65536
|
||||
collision_mask = 65536
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
shape = SubResource("SphereShape3D_xmbo2")
|
||||
|
||||
[node name="PlateDispenser" type="StaticBody3D" parent="." index="6" unique_id=710538846 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="PlateDispenser" type="StaticBody3D" parent="." index="6" unique_id=710538846 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_jm0ik")
|
||||
item_scene = ExtResource("2_tfo2i")
|
||||
pickup_sound = ExtResource("4_jgjsq")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser" unique_id=831688237]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlateDispenser" index="0" unique_id=831688237]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("CylinderShape3D_24d3s")
|
||||
|
||||
[node name="SlideOffDome" parent="PlateDispenser" unique_id=1427609426 instance=ExtResource("4_tfo2i")]
|
||||
[node name="SlideOffDome" parent="PlateDispenser" index="1" unique_id=1427609426 instance=ExtResource("4_tfo2i")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.061363697, 0)
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser" unique_id=696108271]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser" index="2" unique_id=696108271]
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/CSGCombiner3D" unique_id=1339763385]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/CSGCombiner3D" index="0" unique_id=1339763385]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
sides = 32
|
||||
|
||||
[node name="Plates" type="Node3D" parent="PlateDispenser" unique_id=1364909922]
|
||||
[node name="Plates" type="Node3D" parent="PlateDispenser" index="3" unique_id=1364909922]
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=2128650644]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="0" unique_id=2128650644]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0289642, 0)
|
||||
autosmooth = true
|
||||
smoothing_angle = 103.9
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" unique_id=472067854]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" index="0" unique_id=472067854]
|
||||
radius = 0.2
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D/CSGCylinder3D" unique_id=7092994]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D/CSGCylinder3D" index="0" unique_id=7092994]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0)
|
||||
operation = 2
|
||||
radius = 0.15
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" unique_id=23957958]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D" index="1" unique_id=23957958]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0)
|
||||
radius = 0.15
|
||||
height = 0.02
|
||||
|
||||
[node name="CSGCombiner3D2" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=404631280]
|
||||
[node name="CSGCombiner3D2" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="1" unique_id=404631280]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0762081, 0)
|
||||
autosmooth = true
|
||||
smoothing_angle = 103.9
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" unique_id=943162425]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" index="0" unique_id=943162425]
|
||||
radius = 0.2
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2/CSGCylinder3D" unique_id=218364524]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2/CSGCylinder3D" index="0" unique_id=218364524]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0)
|
||||
operation = 2
|
||||
radius = 0.15
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" unique_id=1548327331]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D2" index="1" unique_id=1548327331]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0)
|
||||
radius = 0.15
|
||||
height = 0.02
|
||||
|
||||
[node name="CSGCombiner3D3" type="CSGCombiner3D" parent="PlateDispenser/Plates" unique_id=1506211353]
|
||||
[node name="CSGCombiner3D3" type="CSGCombiner3D" parent="PlateDispenser/Plates" index="2" unique_id=1506211353]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1214186, 0)
|
||||
autosmooth = true
|
||||
smoothing_angle = 103.9
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" unique_id=739830577]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" index="0" unique_id=739830577]
|
||||
radius = 0.2
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3/CSGCylinder3D" unique_id=1882120753]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3/CSGCylinder3D" index="0" unique_id=1882120753]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010312311, 0)
|
||||
operation = 2
|
||||
radius = 0.15
|
||||
height = 0.03
|
||||
sides = 16
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" unique_id=1904629745]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="PlateDispenser/Plates/CSGCombiner3D3" index="1" unique_id=1904629745]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.027119078, 0)
|
||||
radius = 0.15
|
||||
height = 0.02
|
||||
|
||||
@@ -3,11 +3,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="2_30d2d"]
|
||||
[ext_resource type="PackedScene" uid="uid://drwuhqb3pjtiy" path="res://items/potato.tscn" id="3_mjqsn"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_8orw3"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_ur331"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
|
||||
radius = 0.3
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"]
|
||||
height = 1.0
|
||||
radius = 0.3
|
||||
@@ -26,100 +24,100 @@ collision_layer = 65536
|
||||
collision_mask = 65536
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
shape = SubResource("SphereShape3D_xmbo2")
|
||||
|
||||
[node name="PotatoDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="PotatoDispenser" type="StaticBody3D" parent="." index="6" unique_id=1720683779 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("2_30d2d")
|
||||
item_scene = ExtResource("3_mjqsn")
|
||||
pickup_sound = ExtResource("4_8orw3")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser" unique_id=1470079357]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PotatoDispenser" index="0" unique_id=1470079357]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("CylinderShape3D_24d3s")
|
||||
|
||||
[node name="SlideOffDome" parent="PotatoDispenser" unique_id=1427609426 instance=ExtResource("5_ur331")]
|
||||
[node name="SlideOffDome" parent="PotatoDispenser" index="1" unique_id=1427609426 instance=ExtResource("5_ur331")]
|
||||
collision_layer = 4
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PotatoDispenser" unique_id=1746426494]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="PotatoDispenser" index="2" unique_id=1746426494]
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=858311379]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="PotatoDispenser/CSGCombiner3D" index="0" unique_id=858311379]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
sides = 32
|
||||
|
||||
[node name="CSGCombiner3DPotato" type="CSGCombiner3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=462017195]
|
||||
[node name="CSGCombiner3DPotato" type="CSGCombiner3D" parent="PotatoDispenser/CSGCombiner3D" index="1" unique_id=462017195]
|
||||
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=359972032]
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="0" unique_id=359972032]
|
||||
transform = Transform3D(0.7382242, 0, -0.6745554, 0, 1, 0, 0.6745554, 0, 0.7382242, -0.15066577, 1.0408545, 0.076017424)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D" unique_id=1185082311]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D" index="0" unique_id=1185082311]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1791611208]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="1" unique_id=1791611208]
|
||||
transform = Transform3D(0.9110552, 0.37138447, -0.17903017, -0.38194957, 0.92377764, -0.02737245, 0.15521842, 0.09331828, 0.98346263, 0.07202275, 1.0408545, 0.17340909)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D2" unique_id=421732580]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D2" index="0" unique_id=421732580]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1846822725]
|
||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="2" unique_id=1846822725]
|
||||
transform = Transform3D(0.915982, 0, 0.4012194, 0, 1, 0, -0.4012194, 0, 0.915982, -0.023129582, 1.0408545, -0.17174377)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D3" unique_id=186002472]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D3" index="0" unique_id=186002472]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D4" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1463825677]
|
||||
[node name="CSGSphere3D4" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="3" unique_id=1463825677]
|
||||
transform = Transform3D(-0.6086207, 0, 0.79346126, 0, 1, 0, -0.79346126, 0, -0.6086207, -0.06466554, 1.0408545, 0.15114635)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D4" unique_id=1513828324]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D4" index="0" unique_id=1513828324]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D5" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" unique_id=1192971071]
|
||||
[node name="CSGSphere3D5" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato" index="4" unique_id=1192971071]
|
||||
transform = Transform3D(-0.9572301, 0, -0.2893278, 0, 1, 0, 0.2893278, 0, -0.9572301, -0.13095556, 1.0408545, -0.10415963)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D5" unique_id=216752249]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGCombiner3DPotato/CSGSphere3D5" index="0" unique_id=216752249]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D" unique_id=502335906]
|
||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D" index="2" unique_id=502335906]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15826963, 1.0408545, -0.03307341)
|
||||
radius = 0.06
|
||||
radial_segments = 32
|
||||
material = SubResource("StandardMaterial3D_d4wpw")
|
||||
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGSphere3D" unique_id=1283597847]
|
||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="PotatoDispenser/CSGCombiner3D/CSGSphere3D" index="0" unique_id=1283597847]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.06550818)
|
||||
radius = 0.053
|
||||
radial_segments = 32
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
[gd_scene format=3 uid="uid://cwnwo4i28upap"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="Script" uid="uid://0y6wnjcsum6" path="res://stations/item_dispenser.gd" id="1_gkb3v"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbs8jiqe8rcmn" path="res://abstract/station.tscn" id="1_station"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpot5qie20vf6" path="res://items/burger.tscn" id="2_mep2a"]
|
||||
[ext_resource type="Texture2D" uid="uid://cexxfyw03hr81" path="res://textures/1.png" id="4_1f5le"]
|
||||
[ext_resource type="Texture2D" uid="uid://7jt8macx4f5m" path="res://textures/1.png" id="4_1f5le"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmyuqe5058sv3" path="res://sounds/220197__gameaudio__click-basic.wav" id="4_8ou8n"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpapt5mkbuao" path="res://prefabs/slide_off_dome.tscn" id="5_mep2a"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_xmbo2"]
|
||||
radius = 0.3
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_24d3s"]
|
||||
height = 1.0
|
||||
radius = 0.3
|
||||
@@ -27,79 +25,79 @@ collision_layer = 65536
|
||||
collision_mask = 65536
|
||||
snap_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" parent="SnapZone" index="0"]
|
||||
shape = SubResource("SphereShape3D_xmbo2")
|
||||
|
||||
[node name="RawBurgerDispenser" type="StaticBody3D" parent="." index="6" unique_id=235630131 node_paths=PackedStringArray("snap_zone", "synchronizer") groups=["station"]]
|
||||
[node name="RawBurgerDispenser" type="StaticBody3D" parent="." index="6" unique_id=235630131 node_paths=PackedStringArray("notification_audio", "ambient_audio", "snap_zone", "synchronizer") groups=["station"]]
|
||||
script = ExtResource("1_gkb3v")
|
||||
item_scene = ExtResource("2_mep2a")
|
||||
pickup_sound = ExtResource("4_8ou8n")
|
||||
notification_audio = NodePath("../AudioStreamPlayer3DNotification")
|
||||
ambient_audio = NodePath("../AudioStreamPlayer3DAmbient")
|
||||
snap_zone = NodePath("../SnapZone")
|
||||
synchronizer = NodePath("../MultiplayerSynchronizer")
|
||||
|
||||
[node name="SlideOffDome" parent="RawBurgerDispenser" unique_id=1427609426 instance=ExtResource("5_mep2a")]
|
||||
[node name="SlideOffDome" parent="RawBurgerDispenser" index="0" unique_id=1427609426 instance=ExtResource("5_mep2a")]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser" unique_id=378049928]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="RawBurgerDispenser" index="1" unique_id=378049928]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
shape = SubResource("CylinderShape3D_24d3s")
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="RawBurgerDispenser" unique_id=1275577257]
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="RawBurgerDispenser" index="2" unique_id=1275577257]
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=1973748218]
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="0" unique_id=1973748218]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
sides = 32
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=590219609]
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="1" unique_id=590219609]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.9532462, 0.30219492, 0, -0.30219492, 0.9532462, -0.1276815, 1.0521446, -0.052202225)
|
||||
radius = 0.08300781
|
||||
height = 0.028435059
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=177377476]
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="2" unique_id=177377476]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.9694763, 0.245185, 0, -0.245185, 0.9694763, 0.08106685, 1.0391599, -0.119440794)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=622291452]
|
||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="3" unique_id=622291452]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.19005477, 1.0198405, 0.049397707)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=703594207]
|
||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="4" unique_id=703594207]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.026051283, 1.0175319, 0.0042250156)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=955808722]
|
||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="5" unique_id=955808722]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.05739355, 1.0197641, 0.13219571)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=1066788957]
|
||||
[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="6" unique_id=1066788957]
|
||||
transform = Transform3D(0.9111114, 0.40515354, 0.075673, -0.41123694, 0.8813372, 0.2326565, 0.027568169, -0.24309555, 0.9696106, 0.14799988, 1.0345665, 0.11710405)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=553053058]
|
||||
[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="7" unique_id=553053058]
|
||||
transform = Transform3D(0.9541017, 0.29948288, 0, -0.29948288, 0.9541017, 0, 0, 0, 1, 0.041060925, 1.0337045, 0.18304396)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
sides = 16
|
||||
material = SubResource("StandardMaterial3D_di04w")
|
||||
|
||||
[node name="CSGCylinder3D9" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" unique_id=980376661]
|
||||
[node name="CSGCylinder3D9" type="CSGCylinder3D" parent="RawBurgerDispenser/CSGCombiner3D" index="8" unique_id=980376661]
|
||||
transform = Transform3D(0.8510151, 0.22759955, 0.47325662, -0.16729629, 0.97174567, -0.16649997, -0.49778044, 0.06251989, 0.8650468, 0.2036674, 1.0335208, -0.024382353)
|
||||
radius = 0.08300781
|
||||
height = 0.03
|
||||
|
||||
+27
-30
File diff suppressed because one or more lines are too long
+4
-4
@@ -4,8 +4,8 @@
|
||||
[ext_resource type="PackedScene" uid="uid://u7rpukx5ebqo" path="res://UI/shop_station_panel.tscn" id="1_pogqh"]
|
||||
[ext_resource type="PackedScene" uid="uid://efaec6ymgabo" path="res://stations/Counter.tscn" id="2_35otv"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhja7i8tgb3ao" path="res://textures/shop/counter.png" id="3_74fni"]
|
||||
[ext_resource type="PackedScene" uid="uid://j7caslh27nor" path="res://stations/Hob_old.tscn" id="4_l3qkl"]
|
||||
[ext_resource type="Texture2D" uid="uid://br4ytiocwouqh" path="res://textures/shop/hob.png" id="5_2k6ie"]
|
||||
[ext_resource type="PackedScene" uid="uid://b052o1fgwq5bw" path="res://stations/Hob.tscn" id="5_6lkkh"]
|
||||
[ext_resource type="PackedScene" uid="uid://dvrk268s7gkxh" path="res://stations/sink.tscn" id="6_rktus"]
|
||||
[ext_resource type="Texture2D" uid="uid://gi6bksvs8ybx" path="res://textures/shop/sink.png" id="7_4titf"]
|
||||
[ext_resource type="PackedScene" uid="uid://caf0xanmxbshy" path="res://stations/table.tscn" id="9_84wnh"]
|
||||
@@ -59,10 +59,9 @@ offset_left = 20.0
|
||||
offset_top = 80.0
|
||||
offset_right = -20.0
|
||||
offset_bottom = -20.0
|
||||
current_tab = 1
|
||||
current_tab = 0
|
||||
|
||||
[node name="Stations" type="GridContainer" parent="TabContainer" unique_id=189446761]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
columns = 6
|
||||
metadata/_tab_index = 0
|
||||
@@ -76,7 +75,7 @@ cost = 30
|
||||
|
||||
[node name="Panel2" parent="TabContainer/Stations" unique_id=467593590 instance=ExtResource("1_pogqh")]
|
||||
layout_mode = 2
|
||||
station_scene = ExtResource("4_l3qkl")
|
||||
station_scene = ExtResource("5_6lkkh")
|
||||
icon_texture = ExtResource("5_2k6ie")
|
||||
station_name = "Hob"
|
||||
cost = 60
|
||||
@@ -103,6 +102,7 @@ station_name = "Plates"
|
||||
cost = 80
|
||||
|
||||
[node name="Food" type="GridContainer" parent="TabContainer" unique_id=422899445]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
columns = 6
|
||||
metadata/_tab_index = 1
|
||||
|
||||
+12
-5
@@ -10,6 +10,8 @@ extends Node3D
|
||||
@export var drop_sound: AudioStream
|
||||
|
||||
## Node references. These are all required snd should be set in the inspector
|
||||
@export var notification_audio: AudioStreamPlayer3D # Short sounds like pickup or complete
|
||||
@export var ambient_audio: AudioStreamPlayer3D # Releating sounds like a cooking noise
|
||||
@export var snap_zone: XRToolsSnapZone
|
||||
@export var synchronizer: MultiplayerSynchronizer
|
||||
|
||||
@@ -26,6 +28,10 @@ var enabled: bool: # When disabled the station only updated display and sounds.
|
||||
# The child station has to call super.ready() for this to be called
|
||||
func ready() -> void:
|
||||
SweetLogger.debug("Station {0} ready", [name])
|
||||
if not notification_audio:
|
||||
SweetLogger.warning("{0} missing notification_audio reference", [name])
|
||||
if not ambient_audio:
|
||||
SweetLogger.warning("{0} missing ambient_audio reference", [name])
|
||||
if not snap_zone:
|
||||
SweetLogger.warning("{0} missing snap_zone reference", [name])
|
||||
if not synchronizer:
|
||||
@@ -65,6 +71,7 @@ func _on_object_dropped_handler(item: Node3D) -> void:
|
||||
|
||||
func _apply_object_picked_up(item: Node3D) -> void:
|
||||
SweetLogger.debug("Pickup: {0}", [item.name])
|
||||
Helper.play_sound(notification_audio, pickup_sound)
|
||||
on_object_picked_up(item)
|
||||
var food_item = Helper.find_food_item(item)
|
||||
if food_item:
|
||||
@@ -72,6 +79,7 @@ func _apply_object_picked_up(item: Node3D) -> void:
|
||||
|
||||
|
||||
func _apply_object_dropped(item: Node3D) -> void:
|
||||
Helper.play_sound(notification_audio, drop_sound, 0.8)
|
||||
SweetLogger.debug("Drop: {0}", [item.name])
|
||||
on_object_dropped(item)
|
||||
var food_item = Helper.find_food_item(item)
|
||||
@@ -99,17 +107,16 @@ func _clients_on_object_dropped_handler(item_path: NodePath):
|
||||
## Virutal methods
|
||||
# The child station implements these if it cares about them.
|
||||
func on_object_picked_up(_item: Node3D) -> void:
|
||||
SweetLogger.debug("Not implemented in {0}", [name])
|
||||
pass
|
||||
|
||||
func on_object_dropped(_item: Node3D) -> void:
|
||||
SweetLogger.debug("Not implemented in {0}", [name])
|
||||
pass
|
||||
|
||||
func on_food_item_picked_up(_food_item: FoodItem) -> void:
|
||||
SweetLogger.debug("Not implemented in {0}", [name])
|
||||
pass
|
||||
|
||||
func on_food_item_dropped(_food_item: FoodItem) -> void:
|
||||
SweetLogger.debug("Not implemented in {0}", [name])
|
||||
|
||||
pass
|
||||
|
||||
func refresh_display() -> void:
|
||||
pass
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1536666704]
|
||||
replication_config = SubResource("SceneReplicationConfig_0o2ds")
|
||||
|
||||
[node name="AudioStreamPlayer3DPulse" type="AudioStreamPlayer3D" parent="." unique_id=1976975302]
|
||||
[node name="AudioStreamPlayer3DNotification" type="AudioStreamPlayer3D" parent="." unique_id=1976975302]
|
||||
|
||||
[node name="AudioStreamPlayer3DContinous" type="AudioStreamPlayer3D" parent="." unique_id=925832848]
|
||||
[node name="AudioStreamPlayer3DAmbient" type="AudioStreamPlayer3D" parent="." unique_id=925832848]
|
||||
|
||||
[node name="ProgressBar3D" parent="." unique_id=654673176 instance=ExtResource("2_be8yi")]
|
||||
|
||||
|
||||
@@ -11,8 +11,6 @@ extends Station
|
||||
@export var complete_sound: AudioStream
|
||||
|
||||
## Node references. These are all required snd should be set in the inspector
|
||||
@export var notification_audio: AudioStreamPlayer3D # Short sounds like pickup or complete
|
||||
@export var ambient_audio: AudioStreamPlayer3D # Releating sounds like a cooking noise
|
||||
@export var progress_bar: ProgressBar3D
|
||||
|
||||
|
||||
@@ -24,10 +22,6 @@ var result_id: String # Station active if not empty. What FoodItem id the conver
|
||||
# The child station has to call super.ready() for this to be called
|
||||
func ready() -> void:
|
||||
super.ready()
|
||||
if not notification_audio:
|
||||
SweetLogger.warning("{0} missing notification_audio reference", [name])
|
||||
if not ambient_audio:
|
||||
SweetLogger.warning("{0} missing ambient_audio reference", [name])
|
||||
if not progress_bar:
|
||||
SweetLogger.warning("{0} missing progress_bar reference", [name])
|
||||
|
||||
|
||||
@@ -102,11 +102,11 @@ const LOG_TYPE_COLUMN_WIDTH = 13
|
||||
## Default mm:ss:ms; with SHOW_TIMESTAMP_HOURS, hh:mm:ss:ms
|
||||
const TIMESTAMP_COLUMN_WIDTH_MMSSMS = 9
|
||||
const TIMESTAMP_COLUMN_WIDTH_HHMMSSMS = 12
|
||||
const SCRIPT_FUNCTION_COLUMN_WIDTH = 50
|
||||
const SCRIPT_FUNCTION_COLUMN_WIDTH = 46
|
||||
|
||||
const TRUNCATE_PEER_NAME = 6
|
||||
const TRUNCATE_SCRIPT_NAME = 20
|
||||
const TRUNCATE_FUNCTION_NAME = 30
|
||||
const TRUNCATE_FUNCTION_NAME = 26
|
||||
#===================================================================================#
|
||||
|
||||
# CONFIGURATION
|
||||
@@ -229,7 +229,7 @@ func _print_rich_log(peer_id_str: String, log_type: String, message: String, scr
|
||||
var peer_padded = _truncate_text(_pad_text(peer_label, PEER_ID_COLUMN_WIDTH), TRUNCATE_PEER_NAME)
|
||||
|
||||
# Format peer ID with its background color
|
||||
var peer_formatted = _format_rich_text(peer_padded, peer_color.bg_color, peer_color.text_color)
|
||||
var peer_formatted = _format_rich_text(peer_padded + " ", peer_color.bg_color, peer_color.text_color)
|
||||
|
||||
# Format log type with its background color
|
||||
var log_type_padded = _pad_text(log_type_label, LOG_TYPE_COLUMN_WIDTH)
|
||||
|
||||
@@ -1,3 +1,25 @@
|
||||
### Full game systems (hardest part)
|
||||
- Star day modifiers
|
||||
- research unlock
|
||||
- Mess and cleaning (How it works in VR?)
|
||||
- Automation basic logistics (SharedInventories)
|
||||
- Player charaters and customization (Hat Selection and mirror)
|
||||
- Sound effects and music
|
||||
- Animated customers (Pathfinding)
|
||||
- Acheivements (Statisticsmanager)
|
||||
- Level generation
|
||||
- Proper 3D models (Git gud @ blender)
|
||||
**[Undecided]**
|
||||
- Automation logic, wireing
|
||||
- Decorations
|
||||
- Win condition / across games reward / progression
|
||||
- Fire
|
||||
- Arms (Inverse Kinematics)
|
||||
**[Scopecreep]**
|
||||
- Freshness
|
||||
- Fullbody tracking (Height calibration)
|
||||
|
||||
|
||||
### Station inheritence suggestion
|
||||
Station
|
||||
WorkStation (performs work on a food item to convert it)
|
||||
|
||||
@@ -53,3 +53,17 @@ static func get_node_from_path(from: Node, node_path: NodePath) -> Node3D:
|
||||
SweetLogger.warning("Could not resolve node from node_path: {0}, are the trees in sync?", [node_path])
|
||||
return null
|
||||
return item
|
||||
|
||||
|
||||
|
||||
static func play_sound(player: AudioStreamPlayer3D, stream: AudioStream, pitch_scale: float = 1):
|
||||
if not player:
|
||||
SweetLogger.warning("AudioStreamPlayer3D is null, can not play sound")
|
||||
return
|
||||
if not stream:
|
||||
SweetLogger.warning("AudioStream is null, can not play sound")
|
||||
return
|
||||
player.pitch_scale = pitch_scale
|
||||
player.stream = stream
|
||||
player.play()
|
||||
SweetLogger.debug("Play sound: {0} with pitch_scale: {1} on {2}", [stream.resource_path, pitch_scale, player.get_parent().name])
|
||||
|
||||
Reference in New Issue
Block a user