diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs index 5005c1987c..0a296103c8 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs @@ -43,11 +43,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 +110,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 +205,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) {