private void FixedUpdate() { if (ServerConnection.IsSet) { unsafe { var id = _detector.AddHeaderForPeerId((ushort)ServerConnection.ID, _buffer); var length = _buffer.Length; var ptr = Marshal.AllocHGlobal(length); var span = new Span <byte>(ptr.ToPointer(), length); _buffer.ToSpan(ref span); var data = new PacketData { Data = ptr, Length = length, SequenceId = id }; _buffer.Clear(); var canSend = _detector.EnqueueData((ushort)ServerConnection.ID, data); if (canSend) { _sent++; var packet = new Packet(); packet.Create(data.Data, data.Length, PacketFlags.None); _sendData.Enqueue(new SendData { Packet = packet, Peer = ServerConnection }); } else { ServerConnection.DisconnectNow(0); } } } }
private void SendUnreliable(uint value) { unsafe { _sentUnreliable++; var id = _detector.AddHeaderForPeerId((ushort)_client.ID, _buffer); _buffer.AddUInt(value); var length = _buffer.Length; var ptr = Marshal.AllocHGlobal(length); var span = new Span <byte>(ptr.ToPointer(), length); _buffer.ToSpan(ref span); var data = new PacketData { Data = ptr, Length = length, SequenceId = id }; _buffer.Clear(); var canSend = _detector.EnqueueData((ushort)_client.ID, data); if (canSend) { var packet = new Packet(); packet.Create(data.Data, data.Length, PacketFlags.None); _sendData.Enqueue(new SendData { Packet = packet, Peer = _client }); } else { _client.DisconnectNow(0); } } }