Skip to content

Commit 22869db

Browse files
fix
This resolves the issue where instantiating, spawning, and parenting a child NetworkObject during a to-be parent's OnNetworkSpawn or OnNetworkPostSpawn would not defer the parenting message properly if the parent had yet to be spawned.
1 parent f6a6c1f commit 22869db

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ internal struct ParentSyncMessage : INetworkMessage
66
{
77
public int Version => 0;
88

9-
private const string k_Name = "DestroyObjectMessage";
9+
private const string k_Name = "ParentSyncMessage";
1010

1111
public ulong NetworkObjectId;
1212

@@ -87,12 +87,20 @@ public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int
8787
reader.ReadValueSafe(out Rotation);
8888
reader.ReadValueSafe(out Scale);
8989

90-
// If the target NetworkObject does not exist =or= the target latest parent does not exist then defer the message
91-
if (!networkManager.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId) || (LatestParent.HasValue && !networkManager.SpawnManager.SpawnedObjects.ContainsKey(LatestParent.Value)))
90+
// If the target NetworkObject does not exist then defer this message until it does.
91+
if (!networkManager.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))
9292
{
9393
networkManager.DeferredMessageManager.DeferMessage(IDeferredNetworkMessageManager.TriggerType.OnSpawn, NetworkObjectId, reader, ref context, k_Name);
9494
return false;
9595
}
96+
97+
// If the target parent does not exist, then defer this message until it does.
98+
if (LatestParent.HasValue && !networkManager.SpawnManager.SpawnedObjects.ContainsKey(LatestParent.Value))
99+
{
100+
networkManager.DeferredMessageManager.DeferMessage(IDeferredNetworkMessageManager.TriggerType.OnSpawn, LatestParent.Value, reader, ref context, k_Name);
101+
return false;
102+
}
103+
96104
return true;
97105
}
98106

0 commit comments

Comments
 (0)