public void SendDataIfReady(ref NetworkConnection connection, ref UdpNetworkDriver driver, List <PersistentPlayerInfo> allPlayerInfo) { if (sendQueue == null) { return; } // Heart beat every once in a while to prevent disconnects for no reason if (timeSinceLastHeartBeat * 1000 + heartbeatFrequencyMs <= Time.time * 1000) { timeSinceLastHeartBeat = Time.time; sendQueue.Enqueue((byte)LOBBY_CLIENT_REQUESTS.HEARTBEAT); } // Not time to send yet. if (timeSinceLastSend * 1000 + sendFrequencyMs > Time.time * 1000) { return; } timeSinceLastSend = Time.time; if (sendQueue.Count <= 0 || driver.GetConnectionState(connection) != NetworkConnection.State.Connected) { return; } // Send eveyrthing in the queue using (var writer = new DataStreamWriter(sendQueue.Count, Allocator.Temp)) { while (sendQueue.Count > 0) { writer.Write(sendQueue.Dequeue()); } connection.Send(driver, writer); } }