Skip to content

Commit 91f89ea

Browse files
committed
fix: improving error message for spawning scene objects
1 parent 8a0de64 commit 91f89ea

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

Assets/Mirage/Runtime/ClientObjectManager.cs

+15-4
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,12 @@ internal void OnSpawn(SpawnMessage msg)
535535
identity = SpawnPrefab(msg, handler);
536536
}
537537
}
538-
// no else here, should never get here because of check at start of method
538+
else
539+
{
540+
// note should never get here, because of check at start of method
541+
// throw just incase
542+
throw new SpawnObjectException("Spawn message did not have a SceneId or PrefabHash");
543+
}
539544
}
540545

541546
AfterSpawn(msg, existing, identity);
@@ -544,10 +549,10 @@ internal void OnSpawn(SpawnMessage msg)
544549
private void AfterSpawn(SpawnMessage msg, bool alreadyExisted, NetworkIdentity spawnedIdentity)
545550
{
546551
// should never happen, Spawn methods above should throw instead
547-
Debug.Assert(spawnedIdentity != null);
552+
Debug.Assert(spawnedIdentity != null, "AfterSpawn");
548553

549554
if (spawnedIdentity.NetId != 0 && spawnedIdentity.NetId != msg.NetId)
550-
logger.LogWarning($"Spawn Identity already had a netId but SpawnMessage has a differnet NetId. Current Id={spawnedIdentity.NetId}, SpawnMessag Id={msg.NetId}");
555+
logger.LogWarning($"Spawn Identity already had a netId but SpawnMessage has a different NetId. Current Id={spawnedIdentity.NetId}, SpawnMessag Id={msg.NetId}");
551556

552557
ApplySpawnPayload(spawnedIdentity, msg);
553558

@@ -571,6 +576,8 @@ private async UniTaskVoid OnSpawnAsync(SpawnHandlerAsyncDelegate spawnHandler, S
571576
msg.Payload = reader.Read<ArraySegment<byte>>();
572577

573578
var identity = await spawnHandler.Invoke(msg);
579+
if (identity == null)
580+
throw new SpawnObjectException($"Async Spawn handler for prefabHash={msg.PrefabHash:X} returned null");
574581
AfterSpawn(msg, false, identity);
575582
}
576583
}
@@ -616,12 +623,16 @@ internal NetworkIdentity SpawnSceneObject(SpawnMessage msg)
616623
if (spawnableObjects.TryGetValue(sceneId, out var foundSceneObject))
617624
{
618625
spawnableObjects.Remove(sceneId);
626+
627+
if (foundSceneObject == null)
628+
throw new SpawnObjectException($"Scene object is null, sceneId={msg.SceneId:X}, NetId={msg.NetId}");
629+
619630
if (logger.LogEnabled()) logger.Log($"[ClientObjectManager] Found scene object for netid:{msg.NetId}, sceneId:{msg.SceneId.Value:X}, obj:{foundSceneObject}");
620631
return foundSceneObject;
621632
}
622633

623634
// failed to spawn
624-
var errorMsg = $"Failed to spawn scene object sceneId={msg.SceneId:X}";
635+
var errorMsg = $"Could not find scene object with sceneId={msg.SceneId:X}, NetId={msg.NetId}. Enable full logs in project settings to see current list of SpawnableObjects in the scene";
625636
// dump the whole spawnable objects dict for easier debugging
626637
if (logger.LogEnabled())
627638
{

0 commit comments

Comments
 (0)