Added different tickrates for different things
This commit is contained in:
parent
9c587636d5
commit
ad41b78acc
@ -15,7 +15,9 @@ namespace MLAPI
|
|||||||
internal HashSet<ushort> RegisteredPassthroughMessageTypes = new HashSet<ushort>();
|
internal HashSet<ushort> RegisteredPassthroughMessageTypes = new HashSet<ushort>();
|
||||||
public List<string> RegisteredScenes = new List<string>();
|
public List<string> RegisteredScenes = new List<string>();
|
||||||
public int MessageBufferSize = 65535;
|
public int MessageBufferSize = 65535;
|
||||||
public int Tickrate = 64;
|
public int ReceiveTickrate = 64;
|
||||||
|
public int SendTickrate = 64;
|
||||||
|
public int EventTickrate = 64;
|
||||||
public int MaxConnections = 100;
|
public int MaxConnections = 100;
|
||||||
public int Port = 7777;
|
public int Port = 7777;
|
||||||
public string Address = "127.0.0.1";
|
public string Address = "127.0.0.1";
|
||||||
|
@ -73,7 +73,9 @@ namespace MLAPI
|
|||||||
private ConnectionConfig Init(NetworkingConfiguration netConfig)
|
private ConnectionConfig Init(NetworkingConfiguration netConfig)
|
||||||
{
|
{
|
||||||
NetworkConfig = netConfig;
|
NetworkConfig = netConfig;
|
||||||
|
lastSendTickTime = 0;
|
||||||
|
lastEventTickTime = 0;
|
||||||
|
lastReceiveTickTime = 0;
|
||||||
pendingClients = new HashSet<int>();
|
pendingClients = new HashSet<int>();
|
||||||
connectedClients = new Dictionary<int, NetworkedClient>();
|
connectedClients = new Dictionary<int, NetworkedClient>();
|
||||||
messageBuffer = new byte[NetworkConfig.MessageBufferSize];
|
messageBuffer = new byte[NetworkConfig.MessageBufferSize];
|
||||||
@ -292,15 +294,23 @@ namespace MLAPI
|
|||||||
private int channelId;
|
private int channelId;
|
||||||
private int receivedSize;
|
private int receivedSize;
|
||||||
private byte error;
|
private byte error;
|
||||||
private float lastTickTime;
|
private float lastReceiveTickTime;
|
||||||
|
private float lastSendTickTime;
|
||||||
|
private float lastEventTickTime;
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if(isListening && (Time.time - lastTickTime >= (1f / NetworkConfig.Tickrate)))
|
if(isListening)
|
||||||
|
{
|
||||||
|
if(Time.time - lastSendTickTime >= (1f / NetworkConfig.SendTickrate))
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
|
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
|
||||||
{
|
{
|
||||||
NetworkTransport.SendQueuedMessages(hostId, pair.Key, out error);
|
NetworkTransport.SendQueuedMessages(hostId, pair.Key, out error);
|
||||||
}
|
}
|
||||||
|
lastSendTickTime = Time.time;
|
||||||
|
}
|
||||||
|
if(Time.time - lastReceiveTickTime >= (1f / NetworkConfig.ReceiveTickrate))
|
||||||
|
{
|
||||||
NetworkEventType eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
NetworkEventType eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
||||||
NetworkError networkError = (NetworkError)error;
|
NetworkError networkError = (NetworkError)error;
|
||||||
if (networkError == NetworkError.Timeout)
|
if (networkError == NetworkError.Timeout)
|
||||||
@ -355,12 +365,14 @@ namespace MLAPI
|
|||||||
OnClientDisconnect(clientId);
|
OnClientDisconnect(clientId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (isServer)
|
lastReceiveTickTime = Time.time;
|
||||||
|
}
|
||||||
|
if (isServer && (Time.time - lastEventTickTime >= (1f / NetworkConfig.EventTickrate)))
|
||||||
{
|
{
|
||||||
LagCompensationManager.AddFrames();
|
LagCompensationManager.AddFrames();
|
||||||
NetworkedObject.InvokeSyncvarUpdate();
|
NetworkedObject.InvokeSyncvafrUpdate();
|
||||||
|
lastEventTickTime = Time.time;
|
||||||
}
|
}
|
||||||
lastTickTime = Time.time;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user