private void Listener_NetworkReceiveEvent(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) { var pl = peer.Tag as ServerPlayer; if (pl == null) { Debug.LogError("ServerPlayer tag is undefined on receive event, disconnecting peer."); peer.Disconnect(); return; } _readBuffer.LengthBytes = reader.UserDataSize; _readBuffer.Position = 0; reader.GetBytes(_readBuffer.Data, reader.UserDataSize); SocketMan.HandleIncomingData2(pl.ClientIndex, _readBuffer); reader.Recycle(); }
public override void StartSocket() { if (_socket != null) { StopSocket("Starting new socket"); } _socket = SteamNetworkingSockets.CreateRelaySocket <SteamSocketInterface>(); _socket._OnConnected = (connection, connectionInfo) => { var pl = SocketMan.CreatePlayer(); _steamidToClientIndex[connectionInfo.Identity.SteamId] = pl.ClientIndex; }; _socket._OnConnecting = (connection, connectionInfo) => { connection.Accept(); }; _socket._OnDisconnected = (connection, connectionInfo) => { SocketMan.HandlePlayerDisconnected(GetClientIndex(connectionInfo.Identity.SteamId)); }; _socket._OnMessage = (connection, id, data, size, msgNum, recvTime, channel) => { if (_recvBuffer.Data.Length < size) { _recvBuffer.Data = new byte[size]; } _recvBuffer.Position = 0; _recvBuffer.LengthBytes = size; Marshal.Copy(data, _recvBuffer.Data, 0, size); SocketMan.HandleIncomingData2(GetClientIndex((SteamId)id), _recvBuffer); }; SetSocketStatus(ServerStatus.AcceptingConnections); }