You've already forked lidgren-network-gen3
mirror of
https://github.com/lidgren/lidgren-network-gen3.git
synced 2026-05-15 14:46:29 +09:00
Reliability fix
This commit is contained in:
@@ -62,8 +62,6 @@ namespace Lidgren.Network
|
||||
{
|
||||
int num = ((int)NetMessageType.UserReliableOrdered + NetConstants.NetChannelsPerDeliveryMethod) - (int)NetMessageType.UserSequenced;
|
||||
m_nextSendSequenceNumber = new int[num];
|
||||
for(int i=0;i<m_nextSendSequenceNumber.Length;i++)
|
||||
m_nextSendSequenceNumber[i] = -1; // initialize to -1; pre-increment will start sending at 0
|
||||
m_lastReceivedSequenced = new ushort[num];
|
||||
m_nextForceAckTime = double.MaxValue;
|
||||
}
|
||||
@@ -71,7 +69,15 @@ namespace Lidgren.Network
|
||||
internal ushort GetSendSequenceNumber(NetMessageType mtp)
|
||||
{
|
||||
int slot = (int)mtp - (int)NetMessageType.UserSequenced;
|
||||
return (ushort)Interlocked.Increment(ref m_nextSendSequenceNumber[slot]);
|
||||
int retval;
|
||||
lock (m_nextSendSequenceNumber)
|
||||
{
|
||||
retval = m_nextSendSequenceNumber[slot];
|
||||
if (retval == ushort.MaxValue)
|
||||
retval = -1;
|
||||
m_nextSendSequenceNumber[slot] = retval + 1;
|
||||
}
|
||||
return (ushort)retval;
|
||||
}
|
||||
|
||||
internal static int Relate(int seqNr, int lastReceived)
|
||||
@@ -181,7 +187,7 @@ namespace Lidgren.Network
|
||||
m_lastSendRespondedTo = NetTime.Now; // TODO: calculate from send.NextResend and send.NumSends
|
||||
int unfin = send.Message.m_numUnfinishedSendings;
|
||||
send.Message.m_numUnfinishedSendings = unfin - 1;
|
||||
if (unfin <= 1)
|
||||
if (unfin <= 0)
|
||||
m_owner.Recycle(send.Message); // every sent has been acked; free the message
|
||||
|
||||
m_unackedSends.Remove(send);
|
||||
|
||||
@@ -264,7 +264,7 @@ namespace Lidgren.Network
|
||||
if (send.MessageType >= NetMessageType.UserReliableUnordered)
|
||||
{
|
||||
// store for reliability
|
||||
if (send.NumSends == 0)
|
||||
if (send.NumSends == 1)
|
||||
m_unackedSends.Add(send);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user