diff --git a/Source/Engine/Level/Level.cpp b/Source/Engine/Level/Level.cpp index e97cf6b20..2659379a5 100644 --- a/Source/Engine/Level/Level.cpp +++ b/Source/Engine/Level/Level.cpp @@ -998,25 +998,9 @@ bool Level::loadScene(rapidjson_flax::Value& data, int32 engineBuild, bool autoI auto& objData = data[i]; auto obj = sceneObjects->At(i); if (obj) - { SceneObjectsFactory::Deserialize(obj, objData, modifier.Value); - } else - { SceneObjectsFactory::HandleObjectDeserializationError(objData); - - // Try to log some useful info about missing object (eg. it's parent name for faster fixing) - const auto parentIdMember = objData.FindMember("ParentID"); - if (parentIdMember != objData.MemberEnd() && parentIdMember->value.IsString()) - { - Guid parentId = JsonTools::GetGuid(parentIdMember->value); - Actor* parent = Scripting::FindObject(parentId); - if (parent) - { - LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName()); - } - } - } } Scripting::ObjectsLookupIdMapping.Set(nullptr); } diff --git a/Source/Engine/Level/SceneObjectsFactory.cpp b/Source/Engine/Level/SceneObjectsFactory.cpp index 321b0f6f1..897066d5e 100644 --- a/Source/Engine/Level/SceneObjectsFactory.cpp +++ b/Source/Engine/Level/SceneObjectsFactory.cpp @@ -344,11 +344,23 @@ void SceneObjectsFactory::SynchronizePrefabInstances(Array& sceneO void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::DeserializeStream& value) { + // Print invalid object data contents rapidjson_flax::StringBuffer buffer; PrettyJsonWriter writer(buffer); value.Accept(writer.GetWriter()); - LOG(Warning, "Failed to deserialize scene object from data: {0}", String(buffer.GetString())); + + // Try to log some useful info about missing object (eg. it's parent name for faster fixing) + const auto parentIdMember = value.FindMember("ParentID"); + if (parentIdMember != value.MemberEnd() && parentIdMember->value.IsString()) + { + const Guid parentId = JsonTools::GetGuid(parentIdMember->value); + Actor* parent = Scripting::FindObject(parentId); + if (parent) + { + LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName()); + } + } } Actor* SceneObjectsFactory::CreateActor(int32 typeId, const Guid& id)