Hello all! I use the below code to read network Events in my Tick() loop. The code works fine.
But then I added the fragmentation pipeline (so i can send large then MTU size) and when the messages are larger then the MTU threshold the following code breaks ( It says I am trying to read outside of the stream ).
Is the code below sufficient to read when using the fragmentation pipeline or do I need to do more here? I am a bit uncertain if Unity Transport assembles the packets and then makes an event or not.
while (stream.GetBytesRead() < stream.Length)
{
byte header = stream.ReadByte();
switch (header)
{
case (byte) Headers.Ping:
break;
case (byte) Headers.ClientDisconnect:
_handlerSystem.DisconnectedPlayer(ref stream);
break;
case (byte) Headers.EntityPosition:
_handlerSystem.GetNewEntityPosition(ref stream);
break;
case (byte) Headers.BuildingUpdate:
_handlerSystem.HandleBuildingUpdate(ref stream);
break;
case (byte) Headers.DensityUpdate:
_handlerSystem.HandleDensityUpdate(ref stream);
break;
case (byte) Headers.GridUpdate:
_handlerSystem.UpdateGrid(ref stream);
break;
case (byte) Headers.SeedAndMapsize:
_handlerSystem.SetSeedAndMapsize(ref stream);
break;
case (byte) Headers.Welcome:
_handlerSystem.HandleWelcome();
break;
case (byte) Headers.DespawnEntity:
_handlerSystem.DespawnEntity(ref stream);
break;
case (byte) Headers.LastPlayerPosition:
_handlerSystem.ReceiveLastSpawnPositionOfPlayer(ref stream);
break;
case (byte) Headers.ReadyToPlay:
_handlerSystem.ReadyToPlay();
break;
case (byte) Headers.PlayerList:
_handlerSystem.UpdatePlayerList(ref stream);
break;
case (byte) Headers.TimeInformation:
_handlerSystem.SetTime(ref stream);
break;
case (byte) Headers.GetMovableEntityInfo:
_handlerSystem.SpawnMovableEntity(ref stream);
break;
case (byte) Headers.WindSpeed:
_handlerSystem.SetWindSpeed(ref stream);
break;
}