public MyDownloadProfilerResult(int channel, ulong sender, MyMultiplayerBase mp) { m_mp = mp; m_sender = sender; m_channel = channel; m_receiveMsg = new MyMultipartMessage(channel); MyNetworkReader.SetHandler(m_channel, MyDownloadProfilerResult_Received, mp.DisconnectClient); }
public MyDownloadWorldResult(int channel, ulong sender, MyMultiplayerBase mp) { m_mp = mp; m_sender = sender; m_channel = channel; m_receiveMsg = new MyMultipartMessage(channel); MyNetworkReader.SetHandler(m_channel, MyDownloadWorldResult_Received, mp.DisconnectClient); SteamSDK.Peer2Peer.ConnectionFailed += Peer2Peer_ConnectionFailed; }
protected void OnWorldRequest(ref MyControlWorldRequestMsg data, ulong sender) { ProfilerShort.Begin("OnWorldRequest"); MyTrace.Send(TraceWindow.Multiplayer, "World request received"); MySandboxGame.Log.WriteLineAndConsole("World request received: " + GetMemberName(sender)); if (IsClientKickedOrBanned(sender) || MySandboxGame.ConfigDedicated.Banned.Contains(sender)) { MySandboxGame.Log.WriteLineAndConsole("Sending no world, because client has been kicked or banned: " + GetMemberName(sender) + " (Client is probably modified.)"); RaiseClientLeft(sender, ChatMemberStateChangeEnum.Banned); return; } m_worldSendStream = new MemoryStream(); if (IsServer && MySession.Static != null) { MySandboxGame.Log.WriteLine("...responding"); MyMultipartMessage.SendPreemble(sender, MyMultiplayer.WorldDownloadChannel); MyObjectBuilder_World worldData = MySession.Static.GetWorld(false); var checkpoint = worldData.Checkpoint; checkpoint.WorkshopId = null; checkpoint.CharacterToolbar = null; checkpoint.Settings.ScenarioEditMode = checkpoint.Settings.ScenarioEditMode && !MySession.Static.LoadedAsMission; ProfilerShort.Begin("SerializeXML"); MyObjectBuilderSerializer.SerializeXML(m_worldSendStream, worldData, MyObjectBuilderSerializer.XmlCompression.Gzip); ProfilerShort.BeginNextBlock("SendFlush"); SyncLayer.TransportLayer.SendFlush(sender); ProfilerShort.End(); } var buffer = m_worldSendStream.ToArray(); MyMultipartSender msgSender = new MyMultipartSender(buffer, buffer.Length, sender, MyMultiplayer.WorldDownloadChannel, 1150 * 12); m_worldSenders[sender] = msgSender; ProfilerShort.End(); }