private static void OnObjectSpawn(NetworkMessage netMsg)
{
netMsg.ReadMessage(s_ObjectSpawnMessage);
if (!s_ObjectSpawnMessage.assetId.IsValid())
{
if (LogFilter.logError)
{
Debug.LogError("OnObjSpawn netId: " + s_ObjectSpawnMessage.netId + " has invalid asset Id");
}
return;
}
if (LogFilter.logDebug)
{
Debug.Log("Client spawn handler instantiating [netId:" + s_ObjectSpawnMessage.netId + " asset ID:" + s_ObjectSpawnMessage.assetId + " pos:" + s_ObjectSpawnMessage.position + "]");
}
GameObject prefab;
SpawnDelegate handler;
if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out NetworkIdentity uv))
{
ApplySpawnPayload(uv, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, null);
}
else if (NetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out prefab))
{
GameObject gameObject = (GameObject)Object.Instantiate(prefab, s_ObjectSpawnMessage.position, Quaternion.identity);
uv = gameObject.GetComponent <NetworkIdentity>();
if (uv == null)
{
if (LogFilter.logError)
{
Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a NetworkIdentity");
}
}
else
{
ApplySpawnPayload(uv, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject);
}
}
else if (NetworkScene.GetSpawnHandler(s_ObjectSpawnMessage.assetId, out handler))
{
GameObject gameObject2 = handler(s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.assetId);
if (gameObject2 == null)
{
if (LogFilter.logWarn)
{
Debug.LogWarning("Client spawn handler for " + s_ObjectSpawnMessage.assetId + " returned null");
}
return;
}
uv = gameObject2.GetComponent <NetworkIdentity>();
if (uv == null)
{
if (LogFilter.logError)
{
Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a network identity");
}
}
else
{
uv.SetDynamicAssetId(s_ObjectSpawnMessage.assetId);
ApplySpawnPayload(uv, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject2);
}
}
else if (LogFilter.logError)
{
Debug.LogError("Failed to spawn server object, assetId=" + s_ObjectSpawnMessage.assetId + " netId=" + s_ObjectSpawnMessage.netId);
}
}