Skip to content

Commit

Permalink
fix: Adding warning when adding prefab with RegisterPrefab if assetid…
Browse files Browse the repository at this point in the history
… already exists (#1828)
  • Loading branch information
James-Frowen committed May 2, 2020
1 parent 7f26329 commit 9f59e0c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
11 changes: 11 additions & 0 deletions Assets/Mirror/Runtime/ClientScene.cs
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,17 @@ static void RegisterPrefabIdentity(NetworkIdentity prefab)
logger.LogWarning($"Prefab '{prefab.name}' has multiple NetworkIdentity components. There should only be one NetworkIdentity on a prefab, and it must be on the root object.");
}

if (prefabs.ContainsKey(prefab.assetId))
{
GameObject existingPrefab = prefabs[prefab.assetId];
logger.LogWarning($"Replacing existing prefab with assetId '{prefab.assetId}'. Old prefab '{existingPrefab.name}', New prefab '{prefab.name}'");
}

if (spawnHandlers.ContainsKey(prefab.assetId) || unspawnHandlers.ContainsKey(prefab.assetId))
{
logger.LogWarning($"Adding prefab '{prefab.name}' with assetId '{prefab.assetId}' when spawnHandlers with same assetId already exists.");
}

if (logger.LogEnabled()) logger.Log($"Registering prefab '{prefab.name}' as asset:{prefab.assetId}");

prefabs[prefab.assetId] = prefab.gameObject;
Expand Down
25 changes: 19 additions & 6 deletions Assets/Mirror/Tests/Editor/ClientSceneTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,17 +242,30 @@ public void RegisterPrefab_Prefab_WarningForNetworkIdentityInChildren(bool setGu


[Test]
[Ignore("Not Implemented")]
public void RegisterPrefab_Prefab_WarningForAssetIdAlreadyExistingInPrefabsDictionary()
[TestCase(false, "")]
[TestCase(true, AnotherGuidString)]
public void RegisterPrefab_Prefab_WarningForAssetIdAlreadyExistingInPrefabsDictionary(bool setGuid, string newGuid)
{
// Not Implemented
Guid guid = setGuid ? new Guid(newGuid) : validPrefabGuid;

prefabs.Add(guid, validPrefab);

LogAssert.Expect(LogType.Warning, $"Replacing existing prefab with assetId '{guid}'. Old prefab '{validPrefab.name}', New prefab '{validPrefab.name}'");
callRegisterPrefab(validPrefab, setGuid, newGuid);
}

[Test]
[Ignore("Not Implemented")]
public void RegisterPrefab_Prefab_WarningForAssetIdAlreadyExistingInHandlersDictionary()
[TestCase(false, "")]
[TestCase(true, AnotherGuidString)]
public void RegisterPrefab_Prefab_WarningForAssetIdAlreadyExistingInHandlersDictionary(bool setGuid, string newGuid)
{
// Not Implemented
Guid guid = setGuid ? new Guid(newGuid) : validPrefabGuid;

spawnHandlers.Add(guid, x => null);
unspawnHandlers.Add(guid, x => { });

LogAssert.Expect(LogType.Warning, $"Adding prefab '{validPrefab.name}' with assetId '{guid}' when spawnHandlers with same assetId already exists.");
callRegisterPrefab(validPrefab, setGuid, newGuid);
}


Expand Down

0 comments on commit 9f59e0c

Please sign in to comment.