/// <summary> /// https://github.com/EpicGames/UnrealEngine/blob/7d9919ac7bfd80b7483012eab342cb427d60e8c9/Engine/Source/Runtime/Engine/Private/DemoNetDriver.cpp#L3220 /// </summary> /// <param name="reader"></param> /// <returns></returns> public virtual ReadPacketState ParsePacket(ChunkArchive reader) { const int MaxBufferSize = 2 * 1024; int bufferSize = reader.ReadInt32(); if (bufferSize > MaxBufferSize || bufferSize < 0) { return(ReadPacketState.Error); } if (bufferSize == 0) { return(ReadPacketState.End); } var buffer = reader.HeapReadBytes(bufferSize); if (ProcessRawPacket(new BitArchive(buffer, DemoHeader !, ReplayHeader !))) { return(ReadPacketState.Success); } return(ReadPacketState.Error); }