Modified tickrate behaviour to empty buffers
This commit is contained in:
parent
ad41b78acc
commit
6cb02f35de
@ -301,7 +301,7 @@ namespace MLAPI
|
|||||||
{
|
{
|
||||||
if(isListening)
|
if(isListening)
|
||||||
{
|
{
|
||||||
if(Time.time - lastSendTickTime >= (1f / NetworkConfig.SendTickrate))
|
if((Time.time - lastSendTickTime >= (1f / NetworkConfig.SendTickrate)) || NetworkConfig.SendTickrate <= 0)
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
|
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
|
||||||
{
|
{
|
||||||
@ -309,68 +309,72 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
lastSendTickTime = Time.time;
|
lastSendTickTime = Time.time;
|
||||||
}
|
}
|
||||||
if(Time.time - lastReceiveTickTime >= (1f / NetworkConfig.ReceiveTickrate))
|
if((Time.time - lastReceiveTickTime >= (1f / NetworkConfig.ReceiveTickrate)) || NetworkConfig.ReceiveTickrate <= 0)
|
||||||
{
|
{
|
||||||
NetworkEventType eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
NetworkEventType eventType;
|
||||||
NetworkError networkError = (NetworkError)error;
|
do
|
||||||
if (networkError == NetworkError.Timeout)
|
|
||||||
{
|
{
|
||||||
//Client timed out.
|
eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
||||||
if (isServer)
|
NetworkError networkError = (NetworkError)error;
|
||||||
|
if (networkError == NetworkError.Timeout)
|
||||||
{
|
{
|
||||||
OnClientDisconnect(clientId);
|
//Client timed out.
|
||||||
|
if (isServer)
|
||||||
|
{
|
||||||
|
OnClientDisconnect(clientId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (networkError != NetworkError.Ok)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("MLAPI: NetworkTransport receive error: " + networkError.ToString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (networkError != NetworkError.Ok)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("MLAPI: NetworkTransport receive error: " + networkError.ToString());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (eventType)
|
switch (eventType)
|
||||||
{
|
{
|
||||||
case NetworkEventType.ConnectEvent:
|
case NetworkEventType.ConnectEvent:
|
||||||
if (isServer)
|
if (isServer)
|
||||||
{
|
|
||||||
pendingClients.Add(clientId);
|
|
||||||
StartCoroutine(ApprovalTimeout(clientId));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int sizeOfStream = 32;
|
|
||||||
if (NetworkConfig.ConnectionApproval)
|
|
||||||
sizeOfStream += 2 + NetworkConfig.ConnectionData.Length;
|
|
||||||
|
|
||||||
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
|
|
||||||
{
|
{
|
||||||
using (BinaryWriter writer = new BinaryWriter(writeStream))
|
pendingClients.Add(clientId);
|
||||||
{
|
StartCoroutine(ApprovalTimeout(clientId));
|
||||||
writer.Write(NetworkConfig.GetConfig());
|
|
||||||
if (NetworkConfig.ConnectionApproval)
|
|
||||||
{
|
|
||||||
writer.Write((ushort)NetworkConfig.ConnectionData.Length);
|
|
||||||
writer.Write(NetworkConfig.ConnectionData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
break;
|
{
|
||||||
case NetworkEventType.DataEvent:
|
int sizeOfStream = 32;
|
||||||
HandleIncomingData(clientId, messageBuffer, channelId);
|
if (NetworkConfig.ConnectionApproval)
|
||||||
break;
|
sizeOfStream += 2 + NetworkConfig.ConnectionData.Length;
|
||||||
case NetworkEventType.DisconnectEvent:
|
|
||||||
if (isServer)
|
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
|
||||||
OnClientDisconnect(clientId);
|
{
|
||||||
break;
|
using (BinaryWriter writer = new BinaryWriter(writeStream))
|
||||||
}
|
{
|
||||||
|
writer.Write(NetworkConfig.GetConfig());
|
||||||
|
if (NetworkConfig.ConnectionApproval)
|
||||||
|
{
|
||||||
|
writer.Write((ushort)NetworkConfig.ConnectionData.Length);
|
||||||
|
writer.Write(NetworkConfig.ConnectionData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Send(clientId, "MLAPI_CONNECTION_REQUEST", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", writeStream.GetBuffer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NetworkEventType.DataEvent:
|
||||||
|
HandleIncomingData(clientId, messageBuffer, channelId);
|
||||||
|
break;
|
||||||
|
case NetworkEventType.DisconnectEvent:
|
||||||
|
if (isServer)
|
||||||
|
OnClientDisconnect(clientId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (eventType != NetworkEventType.Nothing);
|
||||||
lastReceiveTickTime = Time.time;
|
lastReceiveTickTime = Time.time;
|
||||||
}
|
}
|
||||||
if (isServer && (Time.time - lastEventTickTime >= (1f / NetworkConfig.EventTickrate)))
|
if (isServer && ((Time.time - lastEventTickTime >= (1f / NetworkConfig.EventTickrate)) || NetworkConfig.EventTickrate <= 0))
|
||||||
{
|
{
|
||||||
LagCompensationManager.AddFrames();
|
LagCompensationManager.AddFrames();
|
||||||
NetworkedObject.InvokeSyncvafrUpdate();
|
NetworkedObject.InvokeSyncvarUpdate();
|
||||||
lastEventTickTime = Time.time;
|
lastEventTickTime = Time.time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user