public void HandleEncapsulatedPacket(EncapsulatedPacket packet) { if (packet.MessageIndex != -1) { if (packet.MessageIndex < this.ReliableWindowStart || packet.MessageIndex > this.ReliableWindowEnd || this.ReliableWindow.ContainsKey(packet.MessageIndex)) { return; } this.ReliableWindow[packet.MessageIndex] = true; if (packet.MessageIndex == this.ReliableWindowStart) { for (; this.ReliableWindow.ContainsKey(this.ReliableWindowStart); ++this.ReliableWindowStart) { bool v; this.ReliableWindow.TryRemove(this.ReliableWindowStart, out v); ++this.ReliableWindowEnd; } } if (packet.HasSplit && (packet = this.HandleSplit(packet)) == null) { return; } RakNetEncapsulatedReceiveEventArgs ev = new RakNetEncapsulatedReceiveEventArgs(this, packet); Server.Instance.Event.Network.OnRakNetEncapsulatedReceive(this, ev); if (ev.IsCancel) { return; } packet = ev.Packet; this.HandleEncapsulatedPacketRoute(packet); } else { this.HandleEncapsulatedPacketRoute(packet); } }
public void OnRakNetEncapsulatedReceive(object sender, RakNetEncapsulatedReceiveEventArgs e) { this.RakNetEncapsulatedReceive?.Invoke(sender, e); }