Fix error when applying prefab changes with missing (deleted) nested prefabs

#3244
This commit is contained in:
Wojtek Figat
2025-02-26 17:46:22 +01:00
parent 33dd47c169
commit 2d956ebb36
8 changed files with 136 additions and 24 deletions

View File

@@ -94,6 +94,24 @@ SceneObject* Prefab::GetDefaultInstance(const Guid& objectId)
return result;
}
bool Prefab::GetNestedObject(const Guid& objectId, Guid& outPrefabId, Guid& outObjectId) const
{
if (WaitForLoaded())
return false;
bool result = false;
Guid result1 = Guid::Empty, result2 = Guid::Empty;
const ISerializable::DeserializeStream** prefabObjectDataPtr = ObjectsDataCache.TryGet(objectId);
if (prefabObjectDataPtr)
{
const ISerializable::DeserializeStream& prefabObjectData = **prefabObjectDataPtr;
result = JsonTools::GetGuidIfValid(result1, prefabObjectData, "PrefabID") &&
JsonTools::GetGuidIfValid(result2, prefabObjectData, "PrefabObjectID");
}
outPrefabId = result1;
outObjectId = result2;
return result;
}
void Prefab::DeleteDefaultInstance()
{
ScopeLock lock(Locker);