Add helper parent actor of missing object logging to HandleObjectDeserializationError

This commit is contained in:
Wojtek Figat
2021-08-09 12:12:56 +02:00
parent f68321c9f5
commit fd01d37002
2 changed files with 13 additions and 17 deletions

View File

@@ -344,11 +344,23 @@ void SceneObjectsFactory::SynchronizePrefabInstances(Array<SceneObject*>& 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<Actor>(parentId);
if (parent)
{
LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName());
}
}
}
Actor* SceneObjectsFactory::CreateActor(int32 typeId, const Guid& id)