Skip to content

Commit f7c94c5

Browse files
fix
Apply fixes from #3491
1 parent 7ed7a52 commit f7c94c5

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,8 +1265,8 @@ internal void ShutdownInternal()
12651265
// In the event shutdown is invoked within OnClientStopped or OnServerStopped, set it to false again
12661266
m_ShuttingDown = false;
12671267

1268-
// Reset the client's roles
1269-
ConnectionManager.LocalClient.SetRole(false, false);
1268+
// Completely reset the NetworkClient
1269+
ConnectionManager.LocalClient = new NetworkClient();
12701270

12711271
// This cleans up the internal prefabs list
12721272
NetworkConfig?.Prefabs?.Shutdown();

com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,14 @@ public void Despawn(bool destroy = true)
913913
NetworkManager.SpawnManager.DespawnObject(this, destroy);
914914
}
915915

916+
internal void ResetOnDespawn()
917+
{
918+
// Always clear out the observers list when despawned
919+
Observers.Clear();
920+
IsSpawned = false;
921+
m_LatestParent = null;
922+
}
923+
916924
/// <summary>
917925
/// Removes all ownership of an object from any client. Can only be called from server
918926
/// </summary>

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,15 +1170,13 @@ internal void OnDespawnObject(NetworkObject networkObject, bool destroyGameObjec
11701170
}
11711171
}
11721172

1173-
networkObject.IsSpawned = false;
1174-
11751173
if (SpawnedObjects.Remove(networkObject.NetworkObjectId))
11761174
{
11771175
SpawnedObjectsList.Remove(networkObject);
11781176
}
11791177

1180-
// Always clear out the observers list when despawned
1181-
networkObject.Observers.Clear();
1178+
// Reset the NetworkObject when despawned.
1179+
networkObject.ResetOnDespawn();
11821180

11831181
var gobj = networkObject.gameObject;
11841182
if (destroyGameObject && gobj != null)

0 commit comments

Comments
 (0)