public void Update() { Multiplayer.session?.netClient?.PollEvents(); queue.RunQueue(); if (SteamManager.Initialized) { SteamIntegration.UpdateRichPresence(); } if (Multiplayer.Client == null) { return; } UpdateSync(); if (!Multiplayer.arbiterInstance && Application.isFocused && Time.realtimeSinceStartup - lastCursorSend > 0.05f && TickPatch.skipTo < 0) { lastCursorSend = Time.realtimeSinceStartup; SendCursor(); } if (Multiplayer.Client is SteamBaseConn steamConn && SteamManager.Initialized) { foreach (var packet in SteamIntegration.ReadPackets()) { if (steamConn.remoteId == packet.remote) { Multiplayer.HandleReceive(packet.data, packet.reliable); } } } }
public void Update() { Multiplayer.session?.netClient?.PollEvents(); queue.RunQueue(); if (SteamManager.Initialized) { SteamIntegration.UpdateRichPresence(); } if (Multiplayer.Client == null) { return; } UpdateSync(); if (!Multiplayer.arbiterInstance && Application.isFocused && !TickPatch.Skipping && !Multiplayer.session.desynced) { SendVisuals(); } if (Multiplayer.Client is SteamBaseConn steamConn && SteamManager.Initialized) { foreach (var packet in SteamIntegration.ReadPackets()) { if (steamConn.remoteId == packet.remote) { Multiplayer.HandleReceive(packet.data, packet.reliable); } } } }
public static void TryConnect(IPAddress address, int port) { EventBasedNetListener listener = new EventBasedNetListener(); Multiplayer.session = new MultiplayerSession(); NetManager netClient = new NetManager(listener); netClient.Start(); netClient.ReconnectDelay = 300; netClient.MaxConnectAttempts = 8; listener.PeerConnectedEvent += peer => { IConnection conn = new MpNetConnection(peer); conn.username = Multiplayer.username; conn.State = ConnectionStateEnum.ClientJoining; Multiplayer.session.client = conn; MpLog.Log("Net client connected"); }; listener.PeerDisconnectedEvent += (peer, info) => { string reason; if (info.AdditionalData.AvailableBytes > 0) { reason = info.AdditionalData.GetString(); } else { reason = DisconnectReasonString(info.Reason); if (info.SocketErrorCode != SocketError.Success) { reason += ": " + info.SocketErrorCode; } } Multiplayer.session.disconnectNetReason = reason; ConnectionStatusListeners.TryNotifyAll_Disconnected(); OnMainThread.StopMultiplayer(); MpLog.Log("Net client disconnected"); }; listener.NetworkReceiveEvent += (peer, reader, method) => { byte[] data = reader.GetRemainingBytes(); Multiplayer.HandleReceive(new ByteReader(data), method == DeliveryMethod.ReliableOrdered); }; listener.NetworkErrorEvent += (endpoint, error) => { Log.Warning($"Net client error {error}"); }; Multiplayer.session.netClient = netClient; netClient.Connect(address.ToString(), port, ""); }
public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod method) { byte[] data = reader.GetRemainingBytes(); Multiplayer.HandleReceive(new ByteReader(data), method == DeliveryMethod.ReliableOrdered); }