diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs index ad3ea71954..b90bf907f0 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs @@ -17,5 +17,6 @@ internal interface IInternalMessageHandler void HandleUnnamedMessage(ulong clientId, Stream stream); void HandleNamedMessage(ulong clientId, Stream stream); void HandleNetworkLog(ulong clientId, Stream stream); + void HandleSnapshot(ulong clientId, Stream messageStream); } } diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs index d8318847a5..10e30cdb11 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs @@ -306,9 +306,9 @@ public void HandleNetworkLog(ulong clientId, Stream stream) } } - internal static void HandleSnapshot(ulong clientId, Stream messageStream) + public void HandleSnapshot(ulong clientId, Stream messageStream) { - NetworkManager.Singleton.SnapshotSystem.ReadSnapshot(clientId, messageStream); + m_NetworkManager.SnapshotSystem.ReadSnapshot(clientId, messageStream); } } } diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs index 840c8251be..f14a4a1443 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs @@ -106,7 +106,7 @@ public void ProcessMessage(in MessageFrameItem item) break; case MessageQueueContainer.MessageType.SnapshotData: - InternalMessageHandler.HandleSnapshot(item.NetworkId, item.NetworkBuffer); + m_NetworkManager.MessageHandler.HandleSnapshot(item.NetworkId, item.NetworkBuffer); break; case MessageQueueContainer.MessageType.NetworkVariableDelta: m_NetworkManager.MessageHandler.HandleNetworkVariableDelta(item.NetworkId, item.NetworkBuffer); diff --git a/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs index 3925af0c87..3a76cf735a 100644 --- a/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs +++ b/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -93,6 +93,15 @@ public void HandleNetworkVariableDelta(ulong clientId, Stream stream) m_HandleNetworkVariableDelta.End(); } + public void HandleSnapshot(ulong clientId, Stream stream) + { + m_HandleNetworkVariableDelta.Begin(); + + m_MessageHandler.HandleSnapshot(clientId, stream); + + m_HandleNetworkVariableDelta.End(); + } + public void MessageReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, MessageQueueContainer.MessageType messageType) { switch (messageType) diff --git a/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs b/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs index 793b2a61a1..8f3c4fa3b4 100644 --- a/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs @@ -50,6 +50,8 @@ public void MessageReceiveQueueItem(ulong clientId, Stream stream, float receive public void HandleNetworkLog(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNetworkLog)); + public void HandleSnapshot(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleSnapshot)); + public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAllClientsSwitchSceneCompleted)); private void VerifyCalled(string method)