diff --git a/client/network/Ping.gd b/client/network/Ping.gd index ce5ba15..20cd807 100644 --- a/client/network/Ping.gd +++ b/client/network/Ping.gd @@ -9,10 +9,14 @@ var history: Array[float] = [] func _init(): history.resize(HISTORY_SIZE) + thread_safe = true func handle_packet(data: PackedByteArray): var id := data[0] - var ping := get_time() - history[id] + var ping := Time.get_unix_time_from_system() - history[id] + emit.call_deferred(ping) + +func emit(ping: float): changed.emit(ping) func send_ping(): @@ -20,9 +24,6 @@ func send_ping(): buffer.put_u8(Packet.PING) buffer.put_u8(count) %Client.send(buffer.data_array) - history[count] = get_time() + history[count] = Time.get_unix_time_from_system() count = (count + 1) % HISTORY_SIZE -func get_time() -> float: - return Time.get_unix_time_from_system() - diff --git a/client/network/shared/NetworkNode.gd b/client/network/shared/NetworkNode.gd index 8a17162..c043049 100644 --- a/client/network/shared/NetworkNode.gd +++ b/client/network/shared/NetworkNode.gd @@ -21,5 +21,9 @@ func handle_packet(packet: PackedByteArray): push_warning("Unknown packet type %d" % type) return - handler.handle_packet.call_deferred(packet.slice(1)) + if handler.thread_safe: + handler.handle_packet(packet.slice(1)) + else: + handler.handle_packet.call_deferred(packet.slice(1)) + download += packet.size() diff --git a/client/network/shared/PacketHandler.gd b/client/network/shared/PacketHandler.gd index 5cdcb83..da83e9e 100644 --- a/client/network/shared/PacketHandler.gd +++ b/client/network/shared/PacketHandler.gd @@ -16,5 +16,7 @@ enum Packet { @export var packet_type: Packet +var thread_safe: bool + func handle_packet(_data: PackedByteArray): pass \ No newline at end of file diff --git a/client/ui/network/Network.gd b/client/ui/network/Network.gd index 3c5eee3..f146011 100644 --- a/client/ui/network/Network.gd +++ b/client/ui/network/Network.gd @@ -8,4 +8,4 @@ func set_download(download: int): %Receive.text = "%d bytes" % download func set_upload(upload: int): - %Send.text = "%d bytes" % upload \ No newline at end of file + %Send.text = "%d bytes" % upload