public void Update()
{
NetIncomingMessage message;
while ((message = _netClient.ReadMessage()) != null)
{
switch (message.MessageType)
{
case NetIncomingMessageType.Data:
PacketType packetType = (PacketType)message.ReadInt16();
if (_packetHandlers.ContainsKey(packetType))
{
PacketReceivedEventArgs args = new PacketReceivedEventArgs(message);
foreach (var handler in _packetHandlers[packetType])
handler.Invoke(args);
}
break;
case NetIncomingMessageType.DiscoveryResponse:
_netClient.Connect(message.SenderEndPoint);
break;
}
_netClient.Recycle(message);
}
if (_packetCache.Count > 0 && _netClient.ConnectionStatus == NetConnectionStatus.Connected)
{
this.SendPacketCache();
}
}