diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 2cf83cbe..6250eea9 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -68,6 +68,7 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart private (TransportError error, string reason) _lastTransportError = (TransportError.Unexpected, "transport did not give an error. uh oh"); + private static LatencySimulation _latencyTransport; private static kcp2k.KcpTransport _kcpTransport; private static EosTransport _eosTransport; @@ -78,6 +79,7 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart { _kcpTransport = gameObject.AddComponent(); } + { // https://dev.epicgames.com/portal/en-US/qsb/sdk/credentials/qsb var eosApiKey = ScriptableObject.CreateInstance(); @@ -95,7 +97,16 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart _eosTransport = gameObject.AddComponent(); } - transport = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; + + { + _latencyTransport = gameObject.AddComponent(); + _latencyTransport.reliableLatency = QSBCore.DebugSettings.LatencySimulation; + _latencyTransport.wrap = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; + } + + transport = QSBCore.DebugSettings.LatencySimulation > 0 + ? _latencyTransport + : QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; gameObject.SetActive(true); @@ -164,10 +175,20 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart { return; } + if (singleton != null) { - singleton.transport = Transport.active = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; + if (QSBCore.DebugSettings.LatencySimulation > 0) + { + _latencyTransport.wrap = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; + singleton.transport = Transport.active = _latencyTransport; + } + else + { + singleton.transport = Transport.active = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport; + } } + if (MenuManager.Instance != null) { MenuManager.Instance.OnLanguageChanged(); // hack to update text diff --git a/QSB/Utility/DebugSettings.cs b/QSB/Utility/DebugSettings.cs index c1da6cca..f2e16f58 100644 --- a/QSB/Utility/DebugSettings.cs +++ b/QSB/Utility/DebugSettings.cs @@ -26,6 +26,9 @@ public class DebugSettings [JsonProperty("disableLoopDeath")] public bool DisableLoopDeath; + [JsonProperty("latencySimulation")] + public int LatencySimulation; + [JsonProperty("debugMode")] public bool DebugMode;