Skip to content

Commit 8334e94

Browse files
ShadauxCat0xFA11
andauthored
fix: Fixed CheckObjectVisibility delegate not being properly invoked for connecting clients when Scene Management is enabled (#1680)
Co-authored-by: Fatih Mar <mfatihmar@gmail.com>
1 parent affb9c1 commit 8334e94

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

com.unity.netcode.gameobjects/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Additional documentation and release notes are available at [Multiplayer Documen
2323
- Fixed overloading RPC methods causing collisions and failing on IL2CPP targets. (#1694)
2424
- Fixed spawn flow to propagate `IsSceneObject` down to children NetworkObjects, decouple implicit relationship between object spawning & `IsSceneObject` flag (#1685)
2525
- Fixed error when serializing ConnectionApprovalMessage with scene management disabled when one or more objects is hidden via the CheckObjectVisibility delegate (#1720)
26+
- Fixed CheckObjectVisibility delegate not being properly invoked for connecting clients when Scene Management is enabled. (#1680)
2627

2728
## [1.0.0-pre.5] - 2022-01-26
2829

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,14 @@ internal void InitializeForSynch()
233233

234234
internal void AddSpawnedNetworkObjects()
235235
{
236-
m_NetworkObjectsSync = m_NetworkManager.SpawnManager.SpawnedObjectsList.ToList();
236+
m_NetworkObjectsSync.Clear();
237+
foreach (var sobj in m_NetworkManager.SpawnManager.SpawnedObjectsList)
238+
{
239+
if (sobj.Observers.Contains(TargetClientId))
240+
{
241+
m_NetworkObjectsSync.Add(sobj);
242+
}
243+
}
237244
m_NetworkObjectsSync.Sort(SortNetworkObjects);
238245
}
239246

com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ internal void UpdateObservedNetworkObjects(ulong clientId)
835835
{
836836
foreach (var sobj in SpawnedObjectsList)
837837
{
838-
if (sobj.CheckObjectVisibility == null || NetworkManager.IsServer)
838+
if (sobj.CheckObjectVisibility == null)
839839
{
840840
if (!sobj.Observers.Contains(clientId))
841841
{

com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void TearDown()
2222
}
2323

2424
[UnityTest]
25-
public IEnumerator HiddenObjectsTest()
25+
public IEnumerator HiddenObjectsTest([Values] bool enableSeneManagement)
2626
{
2727

2828
const int numClients = 1;
@@ -37,11 +37,11 @@ public IEnumerator HiddenObjectsTest()
3737
var validNetworkPrefab = new NetworkPrefab();
3838
validNetworkPrefab.Prefab = m_TestNetworkPrefab;
3939
server.NetworkConfig.NetworkPrefabs.Add(validNetworkPrefab);
40-
server.NetworkConfig.EnableSceneManagement = false;
40+
server.NetworkConfig.EnableSceneManagement = enableSeneManagement;
4141
foreach (var client in clients)
4242
{
4343
client.NetworkConfig.NetworkPrefabs.Add(validNetworkPrefab);
44-
client.NetworkConfig.EnableSceneManagement = false;
44+
client.NetworkConfig.EnableSceneManagement = enableSeneManagement;
4545
}
4646

4747
// Start the instances

0 commit comments

Comments
 (0)