diff --git a/Lidgren.Network/NetConnection.Handshake.cs b/Lidgren.Network/NetConnection.Handshake.cs index 1bd2010..479aa07 100644 --- a/Lidgren.Network/NetConnection.Handshake.cs +++ b/Lidgren.Network/NetConnection.Handshake.cs @@ -12,7 +12,7 @@ namespace Lidgren.Network internal string m_disconnectMessage; internal bool m_connectionInitiator; internal NetIncomingMessage m_remoteHailMessage; - internal float m_lastHandshakeSendTime; + internal double m_lastHandshakeSendTime; internal int m_handshakeAttempts; /// @@ -124,7 +124,7 @@ namespace Lidgren.Network m_handshakeAttempts = 0; } - internal void SendConnect(float now) + internal void SendConnect(double now) { m_peer.VerifyNetworkThread(); @@ -135,7 +135,7 @@ namespace Lidgren.Network om.m_messageType = NetMessageType.Connect; om.Write(m_peerConfiguration.AppIdentifier); om.Write(m_peer.m_uniqueIdentifier); - om.Write(now); + om.Write((float)now); WriteLocalHail(om); @@ -150,7 +150,7 @@ namespace Lidgren.Network SetStatus(NetConnectionStatus.InitiatedConnect, "Locally requested connect"); } - internal void SendConnectResponse(float now, bool onLibraryThread) + internal void SendConnectResponse(double now, bool onLibraryThread) { if (onLibraryThread) m_peer.VerifyNetworkThread(); @@ -159,7 +159,7 @@ namespace Lidgren.Network om.m_messageType = NetMessageType.ConnectResponse; om.Write(m_peerConfiguration.AppIdentifier); om.Write(m_peer.m_uniqueIdentifier); - om.Write(now); + om.Write((float)now); WriteLocalHail(om); diff --git a/Lidgren.Network/NetConnection.Latency.cs b/Lidgren.Network/NetConnection.Latency.cs index cacc91f..5165cd5 100644 --- a/Lidgren.Network/NetConnection.Latency.cs +++ b/Lidgren.Network/NetConnection.Latency.cs @@ -4,10 +4,10 @@ namespace Lidgren.Network { public partial class NetConnection { - private float m_sentPingTime; + private double m_sentPingTime; private int m_sentPingNumber; - private float m_averageRoundtripTime; - private float m_timeoutDeadline = float.MaxValue; + private double m_averageRoundtripTime; + private double m_timeoutDeadline = double.MaxValue; // local time value + m_remoteTimeOffset = remote time value internal double m_remoteTimeOffset; @@ -15,7 +15,7 @@ namespace Lidgren.Network /// /// Gets the current average roundtrip time in seconds /// - public float AverageRoundtripTime { get { return m_averageRoundtripTime; } } + public float AverageRoundtripTime { get { return (float)m_averageRoundtripTime; } } /// /// Time offset between this peer and the remote peer @@ -46,13 +46,13 @@ namespace Lidgren.Network internal void InitializePing() { - float now = (float)NetTime.Now; + double now = NetTime.Now; // randomize ping sent time (0.25 - 1.0 x ping interval) m_sentPingTime = now; m_sentPingTime -= (m_peerConfiguration.PingInterval * 0.25f); // delay ping for a little while m_sentPingTime -= (MWCRandom.Instance.NextSingle() * (m_peerConfiguration.PingInterval * 0.75f)); - m_timeoutDeadline = now + (m_peerConfiguration.m_connectionTimeout * 2.0f); // initially allow a little more time + m_timeoutDeadline = now + (m_peerConfiguration.m_connectionTimeout * 2.0); // initially allow a little more time // make it better, quick :-) SendPing(); @@ -64,7 +64,7 @@ namespace Lidgren.Network m_sentPingNumber++; - m_sentPingTime = (float)NetTime.Now; + m_sentPingTime = NetTime.Now; NetOutgoingMessage om = m_peer.CreateMessage(1); om.Write((byte)m_sentPingNumber); // truncating to 0-255 om.m_messageType = NetMessageType.Ping; @@ -95,7 +95,7 @@ namespace Lidgren.Network m_peer.Recycle(om); } - internal void ReceivedPong(float now, int pongNumber, float remoteSendTime) + internal void ReceivedPong(double now, int pongNumber, float remoteSendTime) { if ((byte)pongNumber != (byte)m_sentPingNumber) { @@ -105,7 +105,7 @@ namespace Lidgren.Network m_timeoutDeadline = now + m_peerConfiguration.m_connectionTimeout; - float rtt = now - m_sentPingTime; + double rtt = now - m_sentPingTime; NetException.Assert(rtt >= 0); double diff = (remoteSendTime + (rtt / 2.0)) - now; @@ -118,14 +118,14 @@ namespace Lidgren.Network } else { - m_averageRoundtripTime = (m_averageRoundtripTime * 0.7f) + (float)(rtt * 0.3f); + m_averageRoundtripTime = (m_averageRoundtripTime * 0.7) + (rtt * 0.3); m_remoteTimeOffset = ((m_remoteTimeOffset * (double)(m_sentPingNumber - 1)) + diff) / (double)m_sentPingNumber; m_peer.LogVerbose("Updated average roundtrip time to " + NetTime.ToReadable(m_averageRoundtripTime) + ", remote time to " + (now + m_remoteTimeOffset) + " (ie. diff " + m_remoteTimeOffset + ")"); } // update resend delay for all channels - float resendDelay = GetResendDelay(); + double resendDelay = GetResendDelay(); foreach (var chan in m_sendChannels) { var rchan = chan as NetReliableSenderChannel; diff --git a/Lidgren.Network/NetConnection.cs b/Lidgren.Network/NetConnection.cs index 3c64ff8..e721b06 100644 --- a/Lidgren.Network/NetConnection.cs +++ b/Lidgren.Network/NetConnection.cs @@ -70,12 +70,12 @@ namespace Lidgren.Network public NetOutgoingMessage LocalHailMessage { get { return m_localHailMessage; } } // gets the time before automatically resending an unacked message - internal float GetResendDelay() + internal double GetResendDelay() { - float avgRtt = m_averageRoundtripTime; + double avgRtt = m_averageRoundtripTime; if (avgRtt <= 0) - avgRtt = 0.1f; // "default" resend is based on 100 ms roundtrip time - return 0.025f + (avgRtt * 2.1f); // 25 ms + double rtt + avgRtt = 0.1; // "default" resend is based on 100 ms roundtrip time + return 0.025 + (avgRtt * 2.1); // 25 ms + double rtt } internal NetConnection(NetPeer peer, IPEndPoint remoteEndPoint) @@ -115,7 +115,7 @@ namespace Lidgren.Network if (m_status == NetConnectionStatus.Connected) { - m_timeoutDeadline = (float)NetTime.Now + m_peerConfiguration.m_connectionTimeout; + m_timeoutDeadline = NetTime.Now + m_peerConfiguration.m_connectionTimeout; m_peer.LogVerbose("Timeout deadline initialized to " + m_timeoutDeadline); } @@ -391,7 +391,7 @@ namespace Lidgren.Network { m_peer.VerifyNetworkThread(); - float now = (float)NetTime.Now; + double now = NetTime.Now; switch (tp) { diff --git a/Lidgren.Network/NetReliableSenderChannel.cs b/Lidgren.Network/NetReliableSenderChannel.cs index 7fe4d6c..a197595 100644 --- a/Lidgren.Network/NetReliableSenderChannel.cs +++ b/Lidgren.Network/NetReliableSenderChannel.cs @@ -16,7 +16,7 @@ namespace Lidgren.Network private NetBitVector m_receivedAcks; internal NetStoredReliableMessage[] m_storedMessages; - internal float m_resendDelay; + internal double m_resendDelay; internal override int WindowSize { get { return m_windowSize; } } @@ -58,7 +58,7 @@ namespace Lidgren.Network } // call this regularely - internal override void SendQueuedMessages(float now) + internal override void SendQueuedMessages(double now) { // // resends @@ -69,7 +69,7 @@ namespace Lidgren.Network if (om == null) continue; - float t = m_storedMessages[i].LastSent; + double t = m_storedMessages[i].LastSent; if (t > 0 && (now - t) > m_resendDelay) { // deduce sequence number @@ -109,8 +109,8 @@ namespace Lidgren.Network NetException.Assert(num == GetAllowedSends()); } } - - private void ExecuteSend(float now, NetOutgoingMessage message) + + private void ExecuteSend(double now, NetOutgoingMessage message) { int seqNr = m_sendStart; m_sendStart = (m_sendStart + 1) % NetConstants.NumSequenceNumbers; @@ -149,7 +149,7 @@ namespace Lidgren.Network // remoteWindowStart is remote expected sequence number; everything below this has arrived properly // seqNr is the actual nr received - internal override void ReceiveAcknowledge(float now, int seqNr) + internal override void ReceiveAcknowledge(double now, int seqNr) { // late (dupe), on time or early ack? int relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart); @@ -237,7 +237,7 @@ namespace Lidgren.Network NetOutgoingMessage rmsg = m_storedMessages[slot].Message; //m_connection.m_peer.LogVerbose("Resending #" + rnr + " (" + rmsg + ")"); - if (now - m_storedMessages[slot].LastSent < (m_resendDelay * 0.35f)) + if (now - m_storedMessages[slot].LastSent < (m_resendDelay * 0.35)) { // already resent recently } diff --git a/Lidgren.Network/NetSenderChannelBase.cs b/Lidgren.Network/NetSenderChannelBase.cs index b03e362..07e9d3f 100644 --- a/Lidgren.Network/NetSenderChannelBase.cs +++ b/Lidgren.Network/NetSenderChannelBase.cs @@ -12,8 +12,8 @@ namespace Lidgren.Network internal abstract int GetAllowedSends(); internal abstract NetSendResult Enqueue(NetOutgoingMessage message); - internal abstract void SendQueuedMessages(float now); + internal abstract void SendQueuedMessages(double now); internal abstract void Reset(); - internal abstract void ReceiveAcknowledge(float now, int sequenceNumber); + internal abstract void ReceiveAcknowledge(double now, int sequenceNumber); } } diff --git a/Lidgren.Network/NetStoredReliableMessage.cs b/Lidgren.Network/NetStoredReliableMessage.cs index 8f0d2b2..2f5fb48 100644 --- a/Lidgren.Network/NetStoredReliableMessage.cs +++ b/Lidgren.Network/NetStoredReliableMessage.cs @@ -5,14 +5,14 @@ namespace Lidgren.Network internal struct NetStoredReliableMessage { public int NumSent; - public float LastSent; + public double LastSent; public NetOutgoingMessage Message; public int SequenceNumber; public void Reset() { NumSent = 0; - LastSent = 0; + LastSent = 0.0; Message = null; } } diff --git a/Lidgren.Network/NetUnreliableSenderChannel.cs b/Lidgren.Network/NetUnreliableSenderChannel.cs index 7303f9e..e73bb11 100644 --- a/Lidgren.Network/NetUnreliableSenderChannel.cs +++ b/Lidgren.Network/NetUnreliableSenderChannel.cs @@ -57,7 +57,7 @@ namespace Lidgren.Network } // call this regularely - internal override void SendQueuedMessages(float now) + internal override void SendQueuedMessages(double now) { int num = GetAllowedSends(); if (num < 1) @@ -91,7 +91,7 @@ namespace Lidgren.Network // remoteWindowStart is remote expected sequence number; everything below this has arrived properly // seqNr is the actual nr received - internal override void ReceiveAcknowledge(float now, int seqNr) + internal override void ReceiveAcknowledge(double now, int seqNr) { // late (dupe), on time or early ack? int relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart);