Skip to content

Commit ba725da

Browse files
committed
Fix tests
1 parent 3787865 commit ba725da

File tree

6 files changed

+43
-22
lines changed

6 files changed

+43
-22
lines changed

com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ClientConnectedMessage.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int
3131
public void Handle(ref NetworkContext context)
3232
{
3333
var networkManager = (NetworkManager)context.SystemOwner;
34-
if (ShouldSynchronize && networkManager.NetworkConfig.EnableSceneManagement && networkManager.DistributedAuthorityMode && networkManager.LocalClient.IsSessionOwner)
34+
if (ShouldSynchronize && networkManager.NetworkConfig.EnableSceneManagement && networkManager.DistributedAuthorityMode && !networkManager.CMBServiceConnection && networkManager.LocalClient.IsSessionOwner)
3535
{
36-
// networkManager.SceneManager.SynchronizeNetworkObjects(ClientId);
36+
networkManager.SceneManager.SynchronizeNetworkObjects(ClientId);
3737
}
3838
else
3939
{

com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections.Generic;
22
using Unity.Collections;
3+
using UnityEngine;
34

45
namespace Unity.Netcode
56
{
@@ -251,7 +252,7 @@ public void Handle(ref NetworkContext context)
251252
NetworkLog.LogInfo($"[Client-{OwnerClientId}] Connection approved! Synchronizing...");
252253
}
253254

254-
if (networkManager.CMBServiceConnection && networkManager.LocalClient.IsSessionOwner)
255+
if (networkManager.CMBServiceConnection && networkManager.LocalClient.IsSessionOwner && networkManager.NetworkConfig.EnableSceneManagement && networkManager.LocalClientId != OwnerClientId)
255256
{
256257
networkManager.SceneManager.SynchronizeNetworkObjects(OwnerClientId);
257258
return;
@@ -332,6 +333,7 @@ public void Handle(ref NetworkContext context)
332333
{
333334
NetworkLog.LogInfo($"[Client-{OwnerClientId}][Scene Management Disabled] Synchronization complete!");
334335
}
336+
335337
// When scene management is disabled we notify after everything is synchronized
336338
networkManager.ConnectionManager.InvokeOnClientConnectedCallback(OwnerClientId);
337339

@@ -374,6 +376,7 @@ public void Handle(ref NetworkContext context)
374376
}
375377
}
376378
}
379+
377380
ConnectedClientIds.Dispose();
378381
}
379382
}

com.unity.netcode.gameobjects/Runtime/Messaging/NetworkManagerHooks.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ public bool OnVerifyCanReceive(ulong senderId, Type messageType, FastBufferReade
7676

7777
if (m_NetworkManager.ConnectedClients.TryGetValue(senderId, out NetworkClient connectedClient) && messageType == typeof(ConnectionRequestMessage))
7878
{
79-
8079
if (NetworkLog.CurrentLogLevel <= LogLevel.Normal)
8180
{
8281
var transportErrorMsg = GetTransportErrorMessage(messageContent, m_NetworkManager);
@@ -99,7 +98,8 @@ public bool OnVerifyCanReceive(ulong senderId, Type messageType, FastBufferReade
9998
return false;
10099
}
101100

102-
if (m_NetworkManager.IsConnectedClient && messageType == typeof(ConnectionApprovedMessage) && !(m_NetworkManager.CMBServiceConnection && m_NetworkManager.LocalClient.IsSessionOwner))
101+
if (m_NetworkManager.IsConnectedClient && messageType == typeof(ConnectionApprovedMessage) &&
102+
!(m_NetworkManager.CMBServiceConnection && m_NetworkManager.LocalClient.IsSessionOwner && m_NetworkManager.NetworkConfig.EnableSceneManagement))
103103
{
104104
if (NetworkLog.CurrentLogLevel <= LogLevel.Normal)
105105
{

com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2581,6 +2581,14 @@ private void HandleSessionOwnerEvent(uint sceneEventId, ulong clientId)
25812581
// Mark this client as being connected
25822582
NetworkManager.ConnectedClients[clientId].IsConnected = true;
25832583

2584+
// Notify that a client has finished synchronizing
2585+
OnSceneEvent?.Invoke(new SceneEvent()
2586+
{
2587+
SceneEventType = sceneEventData.SceneEventType,
2588+
ClientId = clientId
2589+
});
2590+
OnSynchronizeComplete?.Invoke(clientId);
2591+
25842592
// For non-authority clients in a distributed authority session, we show hidden objects,
25852593
// we distribute NetworkObjects, and then we end the scene event.
25862594
if (NetworkManager.DistributedAuthorityMode && !NetworkManager.LocalClient.IsSessionOwner)
@@ -2599,16 +2607,6 @@ private void HandleSessionOwnerEvent(uint sceneEventId, ulong clientId)
25992607
return;
26002608
}
26012609

2602-
// All scenes are synchronized, let the server know we are done synchronizing
2603-
2604-
// Notify the local server that a client has finished synchronizing
2605-
OnSceneEvent?.Invoke(new SceneEvent()
2606-
{
2607-
SceneEventType = sceneEventData.SceneEventType,
2608-
ClientId = clientId
2609-
});
2610-
OnSynchronizeComplete?.Invoke(clientId);
2611-
26122610
// At this time the client is fully synchronized with all loaded scenes and
26132611
// NetworkObjects and should be considered "fully connected". Send the
26142612
// notification that the client is connected.

com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ExtendedNetworkShowAndHideTests.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@
66

77
namespace Unity.Netcode.RuntimeTests
88
{
9-
[TestFixture(HostOrServer.DAHost, true)]
10-
[TestFixture(HostOrServer.DAHost, false)]
9+
[TestFixture(HostOrServer.DAHost, Config.SceneManagementEnabled)]
10+
[TestFixture(HostOrServer.DAHost, Config.SceneManagementDisabled)]
1111
public class ExtendedNetworkShowAndHideTests : NetcodeIntegrationTest
1212
{
13+
public enum Config
14+
{
15+
SceneManagementEnabled,
16+
SceneManagementDisabled,
17+
}
18+
1319
protected override int NumberOfClients => 3;
14-
private bool m_EnableSceneManagement;
20+
private readonly bool m_EnableSceneManagement;
1521
private GameObject m_ObjectToSpawn;
1622
private NetworkObject m_SpawnedObject;
1723
private NetworkManager m_ClientToHideFrom;
@@ -25,9 +31,9 @@ protected override bool UseCMBService()
2531
return false;
2632
}
2733

28-
public ExtendedNetworkShowAndHideTests(HostOrServer hostOrServer, bool enableSceneManagement) : base(hostOrServer)
34+
public ExtendedNetworkShowAndHideTests(HostOrServer hostOrServer, Config enableSceneManagement) : base(hostOrServer)
2935
{
30-
m_EnableSceneManagement = enableSceneManagement;
36+
m_EnableSceneManagement = enableSceneManagement == Config.SceneManagementEnabled;
3137
}
3238

3339
protected override void OnServerAndClientsCreated()

testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,28 @@ public IEnumerator SynchronizationCallbacks_NonAuthority()
192192
[UnityTest]
193193
public IEnumerator LateJoiningClient_PeerCallbacks()
194194
{
195-
SetManagerToTest(GetNonAuthorityNetworkManager());
195+
var nonAuthority = GetNonAuthorityNetworkManager();
196+
var expectedClientId = nonAuthority.LocalClientId + 1;
197+
SetManagerToTest(nonAuthority);
196198
// Setup expected events
199+
if (m_UseCmbService)
200+
{
201+
m_ExpectedEventQueue.Enqueue(new ExpectedEvent()
202+
{
203+
SceneEvent = new SceneEvent()
204+
{
205+
SceneEventType = SceneEventType.SynchronizeComplete,
206+
ClientId = expectedClientId,
207+
},
208+
});
209+
}
210+
197211
m_ExpectedEventQueue.Enqueue(new ExpectedEvent()
198212
{
199213
ConnectionEvent = new ConnectionEventData()
200214
{
201215
EventType = ConnectionEvent.PeerConnected,
202-
ClientId = m_ManagerToTest.LocalClientId + 1,
216+
ClientId = expectedClientId,
203217
}
204218
});
205219

0 commit comments

Comments
 (0)