public void WaitReliable(FrameStream frame) { if (!frame.IsReliable) { return; } if (frame.UniqueReliableId == currentReliableId) { Networker.FireRead(frame, this); currentReliableId++; FrameStream next = null; while (true) { if (!reliablePending.TryGetValue(currentReliableId, out next)) { break; } reliablePending.Remove(currentReliableId++); Networker.FireRead(next, this); } } else if (frame.UniqueReliableId > currentReliableId) { reliablePending.Add(frame.UniqueReliableId, frame); } }