From 4095475024e23156aab72888ba9d59ca92c52a01 Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Wed, 5 Feb 2025 11:15:40 -0700 Subject: [PATCH 1/3] feat: session state token --- .../Messaging/Messages/ConnectionApprovedMessage.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs index 5005c1987c..f6ef3ed5fe 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Unity.Collections; +using UnityEngine; namespace Unity.Netcode { @@ -43,11 +44,13 @@ public void NetworkSerialize(BufferSerializer serializer) where T : IReade internal struct ConnectionApprovedMessage : INetworkMessage { + private const int k_AddSessionStateToken = 3; private const int k_AddCMBServiceConfig = 2; private const int k_VersionAddClientIds = 1; - public int Version => k_AddCMBServiceConfig; + public int Version => k_AddSessionStateToken; public ulong OwnerClientId; + public ulong SessionStateToken; public int NetworkTick; // The cloud state service should set this if we are restoring a session public ServiceConfig ServiceConfig; @@ -108,6 +111,10 @@ public void Serialize(FastBufferWriter writer, int targetVersion) // ============================================================ BytePacker.WriteValueBitPacked(writer, OwnerClientId); + if (targetVersion >= k_AddSessionStateToken) + { + writer.WriteValueSafe(SessionStateToken); + } BytePacker.WriteValueBitPacked(writer, NetworkTick); if (IsDistributedAuthority) { @@ -199,6 +206,10 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int // ============================================================ m_ReceiveMessageVersion = receivedMessageVersion; ByteUnpacker.ReadValueBitPacked(reader, out OwnerClientId); + if (receivedMessageVersion >= k_AddSessionStateToken) + { + reader.ReadValueSafe(out SessionStateToken); + } ByteUnpacker.ReadValueBitPacked(reader, out NetworkTick); if (networkManager.DistributedAuthorityMode) { From b7685b77d5ca12da966948faa874053158c46516 Mon Sep 17 00:00:00 2001 From: Dominick Date: Wed, 5 Feb 2025 11:21:58 -0700 Subject: [PATCH 2/3] Update ConnectionApprovedMessage.cs --- .../Runtime/Messaging/Messages/ConnectionApprovedMessage.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs index f6ef3ed5fe..b43434d226 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Unity.Collections; -using UnityEngine; namespace Unity.Netcode { From 05d766c9c4c74b434473cc21cd2af2d28b2826e3 Mon Sep 17 00:00:00 2001 From: Dominick Schroer Date: Wed, 5 Feb 2025 12:37:51 -0700 Subject: [PATCH 3/3] use space over tab --- .../Runtime/Messaging/Messages/ConnectionApprovedMessage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs index f6ef3ed5fe..73f9cb0cba 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs @@ -50,7 +50,7 @@ internal struct ConnectionApprovedMessage : INetworkMessage public int Version => k_AddSessionStateToken; public ulong OwnerClientId; - public ulong SessionStateToken; + public ulong SessionStateToken; public int NetworkTick; // The cloud state service should set this if we are restoring a session public ServiceConfig ServiceConfig;