Skip to content

Commit 3fad66c

Browse files

File tree

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

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -344,30 +344,24 @@ internal uint GetSourceGlobalObjectIdHash(uint networkPrefabHash)
344344
/// <returns></returns>
345345
internal NetworkObject HandleNetworkPrefabSpawn(uint networkPrefabAssetHash, ulong ownerClientId, Vector3 position, Quaternion rotation, FastBufferReader instantiationDataReader = default)
346346
{
347-
NetworkObject networkObjectInstance = instantiationDataReader.IsInitialized
348-
? InstantiateNetworkPrefabWithData(networkPrefabAssetHash, ownerClientId, position, rotation, instantiationDataReader)
349-
: InstantiateNetworkPrefabDefault(networkPrefabAssetHash, ownerClientId, position, rotation);
347+
NetworkObject networkObjectInstance = null;
348+
if (instantiationDataReader.IsInitialized)
349+
{
350+
if (m_PrefabAssetToPrefabHandlerWithData.TryGetValue(networkPrefabAssetHash, out var prefabInstanceHandler))
351+
networkObjectInstance = prefabInstanceHandler.Instantiate(ownerClientId, position, rotation, instantiationDataReader);
352+
}
353+
else
354+
{
355+
if (m_PrefabAssetToPrefabHandler.TryGetValue(networkPrefabAssetHash, out var prefabInstanceHandler))
356+
networkObjectInstance = prefabInstanceHandler.Instantiate(ownerClientId, position, rotation);
357+
}
350358
//Now we must make sure this alternate PrefabAsset spawned in place of the prefab asset with the networkPrefabAssetHash (GlobalObjectIdHash)
351359
//is registered and linked to the networkPrefabAssetHash so during the HandleNetworkPrefabDestroy process we can identify the alternate prefab asset.
352360
if (networkObjectInstance != null)
353361
RegisterPrefabInstance(networkObjectInstance, networkPrefabAssetHash);
354362
return networkObjectInstance;
355363
}
356364

357-
private NetworkObject InstantiateNetworkPrefabDefault(uint networkPrefabAssetHash, ulong ownerClientId, Vector3 position, Quaternion rotation)
358-
{
359-
if (m_PrefabAssetToPrefabHandler.TryGetValue(networkPrefabAssetHash, out var prefabInstanceHandler))
360-
return prefabInstanceHandler.Instantiate(ownerClientId, position, rotation);
361-
return null;
362-
}
363-
364-
private NetworkObject InstantiateNetworkPrefabWithData(uint networkPrefabAssetHash, ulong ownerClientId, Vector3 position, Quaternion rotation, FastBufferReader instantiationDataReader)
365-
{
366-
if (m_PrefabAssetToPrefabHandlerWithData.TryGetValue(networkPrefabAssetHash, out var prefabInstanceHandler))
367-
return prefabInstanceHandler.Instantiate(ownerClientId, position, rotation, instantiationDataReader);
368-
return null;
369-
}
370-
371365
private void RegisterPrefabInstance(NetworkObject networkObjectInstance, uint networkPrefabAssetHash)
372366
{
373367
if (networkObjectInstance != null && !m_PrefabInstanceToPrefabAsset.ContainsKey(networkObjectInstance.GlobalObjectIdHash))

0 commit comments

Comments
 (0)