From 2e5c1008c6c69f7d11f1d0126b934404d6010d36 Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Thu, 23 May 2024 07:29:30 -0600 Subject: [PATCH 1/5] feat: expose the UTP connect payload --- .../Runtime/Transports/UTP/UnityTransport.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index bc89e15606..baf15d0372 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -137,6 +137,11 @@ private enum State /// public const int InitialMaxPayloadSize = 6 * 1024; + /// + /// Payload to send along with a new connection + /// + public NativeArray ConnectPayload = new (0, Allocator.Temp); + /// /// The default maximum send queue size /// @@ -554,7 +559,7 @@ private bool ClientBindAndConnect() return false; } - var serverConnection = m_Driver.Connect(serverEndpoint); + var serverConnection = m_Driver.Connect(serverEndpoint, ConnectPayload); m_ServerClientId = ParseClientId(serverConnection); return true; From b4eb815a7c1b6568782577bffa819294b20d45ed Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Thu, 23 May 2024 07:35:33 -0600 Subject: [PATCH 2/5] pass accept payload --- .../Runtime/Transports/UTP/UnityTransport.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index baf15d0372..ea6b91a026 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -812,7 +812,7 @@ private void SendBatchedMessages(SendTarget sendTarget, BatchedSendQueue queue) private bool AcceptConnection() { - var connection = m_Driver.Accept(); + var connection = m_Driver.Accept(out var payload); if (connection == default) { @@ -821,7 +821,7 @@ private bool AcceptConnection() InvokeOnTransportEvent(NetcodeNetworkEvent.Connect, ParseClientId(connection), - default, + new ArraySegment(payload.ToArray()), m_RealTimeProvider.RealTimeSinceStartup); return true; From 55902add9eeceaa084b96ad08a066a89b328c953 Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Thu, 23 May 2024 11:53:24 -0600 Subject: [PATCH 3/5] fix formatting --- .../Runtime/Transports/UTP/UnityTransport.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index ea6b91a026..045c1e8942 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -140,7 +140,7 @@ private enum State /// /// Payload to send along with a new connection /// - public NativeArray ConnectPayload = new (0, Allocator.Temp); + public NativeArray ConnectPayload = new(0, Allocator.Temp); /// /// The default maximum send queue size From 8bf5aa914e08505a0438843da36a8f26ee376e94 Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Thu, 23 May 2024 14:06:02 -0600 Subject: [PATCH 4/5] make Connect and m_Driver protected --- .../Runtime/Transports/UTP/UnityTransport.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index 045c1e8942..56af079057 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -137,11 +137,6 @@ private enum State /// public const int InitialMaxPayloadSize = 6 * 1024; - /// - /// Payload to send along with a new connection - /// - public NativeArray ConnectPayload = new(0, Allocator.Temp); - /// /// The default maximum send queue size /// @@ -431,10 +426,11 @@ private struct PacketLossCache internal static event Action TransportDisposed; internal NetworkDriver NetworkDriver => m_Driver; + protected NetworkDriver m_Driver; + private PacketLossCache m_PacketLossCache = new PacketLossCache(); private State m_State = State.Disconnected; - private NetworkDriver m_Driver; private NetworkSettings m_NetworkSettings; private ulong m_ServerClientId; @@ -559,12 +555,17 @@ private bool ClientBindAndConnect() return false; } - var serverConnection = m_Driver.Connect(serverEndpoint, ConnectPayload); + var serverConnection = Connect(serverEndpoint); m_ServerClientId = ParseClientId(serverConnection); return true; } + protected virtual NetworkConnection Connect(NetworkEndpoint serverEndpoint) + { + return m_Driver.Connect(serverEndpoint); + } + private bool ServerBindAndListen(NetworkEndpoint endPoint) { // Verify the endpoint is valid before proceeding From 9d081cc2d46a7e2cb7a0ad8e7bb438a31c30d83a Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Thu, 23 May 2024 14:08:32 -0600 Subject: [PATCH 5/5] remove payload output --- .../Runtime/Transports/UTP/UnityTransport.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index 56af079057..6922699ddd 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -813,7 +813,7 @@ private void SendBatchedMessages(SendTarget sendTarget, BatchedSendQueue queue) private bool AcceptConnection() { - var connection = m_Driver.Accept(out var payload); + var connection = m_Driver.Accept(); if (connection == default) { @@ -822,7 +822,7 @@ private bool AcceptConnection() InvokeOnTransportEvent(NetcodeNetworkEvent.Connect, ParseClientId(connection), - new ArraySegment(payload.ToArray()), + default, m_RealTimeProvider.RealTimeSinceStartup); return true;