This commit is contained in:
team3
2026-09-07 18:57:38 +02:00
parent 02b4cd7733
commit 02247a2cbe

View File

@@ -63,7 +63,9 @@ func setup(cfg: Dictionary) -> void:
table = GameTable.new()
add_child(table)
table.build(seats.size(), local_seat)
# Der Server hat keinen Platz, legt den Tisch aber fest so, als säße Platz 0
# unten. Diese Ausrichtung ist der Bezug für alle Würfelkoordinaten.
table.build(seats.size(), maxi(local_seat, 0))
# Ohne Platz am Tisch gibt es nichts anzuzeigen und nichts zu bedienen.
if local_seat >= 0:
@@ -607,12 +609,16 @@ func _pack(seat: int) -> PackedFloat32Array:
func _unpack(data: PackedFloat32Array) -> void:
var dl: Array = table.dice_of(local_seat)
var n := mini(dl.size(), int(data.size() / 7))
# Jeder Client dreht seinen eigenen Platz nach unten, der Server nicht.
# Ohne diese Drehung landen die eigenen Würfel in der Zone des Nachbarn.
var dreh := Transform3D(Basis(Vector3.UP, TAU * local_seat / float(seats.size())),
Vector3.ZERO)
for i in n:
var o := i * 7
var t := Transform3D(Basis(Quaternion(data[o + 3], data[o + 4], data[o + 5], data[o + 6])),
Vector3(data[o], data[o + 1], data[o + 2]))
dl[i].set_kinematic(true)
dl[i].place(t)
dl[i].place(dreh * t)
@rpc("authority", "unreliable_ordered")