public bool ReliableMessageCheck(VNetMessage message) { if (message.GetReliableIndex() == -1) { return(false); } if (m_lastReliableRecvdIndex != message.GetReliableIndex() - 1) { return(true); } m_lastReliableRecvdIndex++; return(false); }
public void HandlePacketIn(VNetPacket packet, VNetClient client) { int numMessagesToRead = packet.header.numMessages; packet.StartPacketRead(); Dictionary <int, VNetMessage> reliableIn = new Dictionary <int, VNetMessage>(); while (numMessagesToRead-- > 0) { if (packet.UpdateNextMessageHeaders() == false) { break; } if (m_register.ContainsKey(packet.m_nextMessageType.checksum) == false) { packet.SkipNextMessage(); } else { VNetDispatchRegistryBase reg = m_register[packet.m_nextMessageType.checksum]; if (reg.GetNumCallbacks() == 0) { packet.SkipNextMessage(); } else { VNetMessage message = reg.ConvertDataToMessage(packet); message._client = client; message._packet = packet; message.__typeName = new VNetStringChksum(packet.m_nextMessageType.checksum); if (message.GetReliableIndex() != -1) { if (reliableIn.ContainsKey(message.GetReliableIndex())) { continue; } reliableIn.Add(message.GetReliableIndex(), message); continue; } reg.Callback(message); } } } if (client != null) { while (reliableIn.ContainsKey(client.GetNextReliableIndex())) { VNetMessage message = reliableIn[client.GetNextReliableIndex()]; client.ReliableMessageCheck(message); VNetDispatchRegistryBase reg = m_register[message.GetMessageType().checksum]; reg.Callback(message); } } reliableIn.Clear(); }