Skip to content

Commit e05f301

Browse files
committed
Ensure the tests use a specific constructor
1 parent e2ff502 commit e05f301

File tree

3 files changed

+36
-18
lines changed

3 files changed

+36
-18
lines changed

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
namespace Unity.Netcode
88
{
9+
/// <summary>
10+
/// An internal to NGO representation of a scene <see cref="UnityEngine.SceneManagement.Scene.handle"/>
11+
/// The underlying representation of the scene handle is changing in 6.3
12+
/// This allows us to wrap the change and hide it from the rest of the package.
13+
/// </summary>
914
internal struct NetworkSceneHandle : IEquatable<NetworkSceneHandle>, INetworkSerializable
1015
{
1116
#if SCENE_MANAGEMENT_SCENE_HANDLE_AVAILABLE
@@ -30,6 +35,7 @@ public void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReade
3035
else
3136
{
3237
var reader = serializer.GetFastBufferReader();
38+
// DANGO-TODO Rust needs to be updated to either handle this ulong or to remove the scene store.
3339
#if SCENE_MANAGEMENT_SCENE_HANDLE_MUST_USE_ULONG
3440
reader.ReadValue(out ulong rawData);
3541
m_Handle = SceneHandle.FromRawData(rawData);
@@ -43,20 +49,32 @@ public void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReade
4349
}
4450
}
4551

52+
4653
#if SCENE_MANAGEMENT_SCENE_HANDLE_AVAILABLE
4754
internal NetworkSceneHandle(SceneHandle handle)
4855
{
4956
m_Handle = handle;
5057
}
58+
#else
59+
internal NetworkSceneHandle(int handle)
60+
{
61+
m_Handle = handle;
62+
}
5163
#endif
5264

65+
/// <summary>
66+
/// A separate constructor for using during tests.
67+
/// This is required as the tests need to be able to create NetworkSceneHandles that represent only mock data.
68+
/// </summary>
69+
/// <param name="handle">The number to use as the underlying sceneHandle representation</param>
70+
/// <param name="asMock">Empty parameter that ensures the tests use the mock constructor.</param>
5371
#if SCENE_MANAGEMENT_SCENE_HANDLE_NO_INT_CONVERSION
54-
internal NetworkSceneHandle(ulong handle)
72+
internal NetworkSceneHandle(ulong handle, bool asMock)
5573
{
56-
m_Handle = SceneHandle.FromRawData(handle);
74+
m_Handle = handle.FromRawData(handle);
5775
}
5876
#else
59-
internal NetworkSceneHandle(int handle)
77+
internal NetworkSceneHandle(int handle, bool asMock)
6078
{
6179
m_Handle = handle;
6280
}
@@ -99,7 +117,7 @@ internal NetworkSceneHandle(int handle)
99117
private bool Equals(SceneHandle other) => m_Handle == other;
100118
#else
101119
[MethodImpl(MethodImplOptions.AggressiveInlining)]
102-
public bool Equals(int other) => m_Handle == other;
120+
private bool Equals(int other) => m_Handle == other;
103121
#endif
104122

105123
#if SCENE_MANAGEMENT_SCENE_HANDLE_AVAILABLE

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ public IEnumerator SceneEventMessageLoad()
360360
LoadSceneMode = LoadSceneMode.Single,
361361
SceneEventProgressId = Guid.NewGuid(),
362362
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
363-
SceneHandle = new NetworkSceneHandle(23456),
363+
SceneHandle = new NetworkSceneHandle(23456, true)
364364
};
365365

366366
var message = new SceneEventMessage()
@@ -378,15 +378,15 @@ public IEnumerator SceneEventMessageLoadWithObjects()
378378

379379
m_Client.SceneManager.ScenePlacedObjects.Add(0, new Dictionary<NetworkSceneHandle, NetworkObject>()
380380
{
381-
{ new NetworkSceneHandle(1), prefabNetworkObject }
381+
{ new NetworkSceneHandle(1, true), prefabNetworkObject }
382382
});
383383
var eventData = new SceneEventData(m_Client)
384384
{
385385
SceneEventType = SceneEventType.Load,
386386
LoadSceneMode = LoadSceneMode.Single,
387387
SceneEventProgressId = Guid.NewGuid(),
388388
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
389-
SceneHandle = new NetworkSceneHandle(23456),
389+
SceneHandle = new NetworkSceneHandle(23456, true),
390390
};
391391

392392
var message = new SceneEventMessage()
@@ -406,7 +406,7 @@ public IEnumerator SceneEventMessageUnload()
406406
LoadSceneMode = LoadSceneMode.Single,
407407
SceneEventProgressId = Guid.NewGuid(),
408408
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
409-
SceneHandle = new NetworkSceneHandle(23456),
409+
SceneHandle = new NetworkSceneHandle(23456, true),
410410
};
411411

412412
var message = new SceneEventMessage()
@@ -426,7 +426,7 @@ public IEnumerator SceneEventMessageLoadComplete()
426426
LoadSceneMode = LoadSceneMode.Single,
427427
SceneEventProgressId = Guid.NewGuid(),
428428
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
429-
SceneHandle = new NetworkSceneHandle(23456),
429+
SceneHandle = new NetworkSceneHandle(23456, true),
430430
};
431431

432432
var message = new SceneEventMessage()
@@ -446,7 +446,7 @@ public IEnumerator SceneEventMessageUnloadComplete()
446446
LoadSceneMode = LoadSceneMode.Single,
447447
SceneEventProgressId = Guid.NewGuid(),
448448
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
449-
SceneHandle = new NetworkSceneHandle(23456),
449+
SceneHandle = new NetworkSceneHandle(23456, true),
450450
};
451451

452452
var message = new SceneEventMessage()
@@ -466,7 +466,7 @@ public IEnumerator SceneEventMessageLoadCompleted()
466466
LoadSceneMode = LoadSceneMode.Single,
467467
SceneEventProgressId = Guid.NewGuid(),
468468
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
469-
SceneHandle = new NetworkSceneHandle(23456),
469+
SceneHandle = new NetworkSceneHandle(23456, true),
470470
ClientsCompleted = new List<ulong>() { k_ClientId },
471471
ClientsTimedOut = new List<ulong>() { 23456789 },
472472
};
@@ -488,7 +488,7 @@ public IEnumerator SceneEventMessageUnloadLoadCompleted()
488488
LoadSceneMode = LoadSceneMode.Single,
489489
SceneEventProgressId = Guid.NewGuid(),
490490
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
491-
SceneHandle = new NetworkSceneHandle(23456),
491+
SceneHandle = new NetworkSceneHandle(23456, true),
492492
ClientsCompleted = new List<ulong>() { k_ClientId },
493493
ClientsTimedOut = new List<ulong>() { 23456789 },
494494
};
@@ -510,12 +510,12 @@ public IEnumerator SceneEventMessageSynchronize()
510510
LoadSceneMode = LoadSceneMode.Single,
511511
ClientSynchronizationMode = LoadSceneMode.Single,
512512
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
513-
SceneHandle = new NetworkSceneHandle(23456),
513+
SceneHandle = new NetworkSceneHandle(23456, true),
514514
ScenesToSynchronize = new Queue<uint>()
515515
};
516516
eventData.ScenesToSynchronize.Enqueue(101);
517517
eventData.SceneHandlesToSynchronize = new Queue<NetworkSceneHandle>();
518-
eventData.SceneHandlesToSynchronize.Enqueue(new NetworkSceneHandle(202));
518+
eventData.SceneHandlesToSynchronize.Enqueue(new NetworkSceneHandle(202, true));
519519

520520

521521
var message = new SceneEventMessage()
@@ -535,7 +535,7 @@ public IEnumerator SceneEventMessageReSynchronize()
535535
LoadSceneMode = LoadSceneMode.Single,
536536
ClientSynchronizationMode = LoadSceneMode.Single,
537537
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
538-
SceneHandle = new NetworkSceneHandle(23456),
538+
SceneHandle = new NetworkSceneHandle(23456, true),
539539
};
540540

541541
var message = new SceneEventMessage()
@@ -555,7 +555,7 @@ public IEnumerator SceneEventMessageSynchronizeComplete()
555555
LoadSceneMode = LoadSceneMode.Single,
556556
ClientSynchronizationMode = LoadSceneMode.Single,
557557
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
558-
SceneHandle = new NetworkSceneHandle(23456),
558+
SceneHandle = new NetworkSceneHandle(23456, true),
559559
};
560560

561561
var message = new SceneEventMessage()
@@ -587,7 +587,7 @@ public IEnumerator SceneEventMessageObjectSceneChanged()
587587
{
588588
m_Client.SceneManager.SkipSceneHandling = true;
589589
var prefabNetworkObject = m_SpawnObject.GetComponent<NetworkObject>();
590-
var sceneHandle = new NetworkSceneHandle(23456);
590+
var sceneHandle = new NetworkSceneHandle(23456, true);
591591
m_Client.SceneManager.ObjectsMigratedIntoNewScene = new Dictionary<NetworkSceneHandle, Dictionary<ulong, List<NetworkObject>>>
592592
{
593593
{ sceneHandle, new Dictionary<ulong, List<NetworkObject>>()}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public IEnumerator FastReaderAllocationTest()
5555
SceneHash = XXHash.Hash32("SomeRandomSceneName"),
5656
SceneEventProgressId = Guid.NewGuid(),
5757
LoadSceneMode = LoadSceneMode.Single,
58-
SceneHandle = new NetworkSceneHandle(32768)
58+
SceneHandle = new NetworkSceneHandle(32768, true)
5959
};
6060

6161
sceneEventData.Serialize(fastBufferWriter);

0 commit comments

Comments
 (0)