Add helper parent actor of missing object logging to HandleObjectDeserializationError
This commit is contained in:
@@ -998,25 +998,9 @@ bool Level::loadScene(rapidjson_flax::Value& data, int32 engineBuild, bool autoI
|
|||||||
auto& objData = data[i];
|
auto& objData = data[i];
|
||||||
auto obj = sceneObjects->At(i);
|
auto obj = sceneObjects->At(i);
|
||||||
if (obj)
|
if (obj)
|
||||||
{
|
|
||||||
SceneObjectsFactory::Deserialize(obj, objData, modifier.Value);
|
SceneObjectsFactory::Deserialize(obj, objData, modifier.Value);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
SceneObjectsFactory::HandleObjectDeserializationError(objData);
|
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<Actor>(parentId);
|
|
||||||
if (parent)
|
|
||||||
{
|
|
||||||
LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Scripting::ObjectsLookupIdMapping.Set(nullptr);
|
Scripting::ObjectsLookupIdMapping.Set(nullptr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -344,11 +344,23 @@ void SceneObjectsFactory::SynchronizePrefabInstances(Array<SceneObject*>& sceneO
|
|||||||
|
|
||||||
void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::DeserializeStream& value)
|
void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::DeserializeStream& value)
|
||||||
{
|
{
|
||||||
|
// Print invalid object data contents
|
||||||
rapidjson_flax::StringBuffer buffer;
|
rapidjson_flax::StringBuffer buffer;
|
||||||
PrettyJsonWriter writer(buffer);
|
PrettyJsonWriter writer(buffer);
|
||||||
value.Accept(writer.GetWriter());
|
value.Accept(writer.GetWriter());
|
||||||
|
|
||||||
LOG(Warning, "Failed to deserialize scene object from data: {0}", String(buffer.GetString()));
|
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)
|
Actor* SceneObjectsFactory::CreateActor(int32 typeId, const Guid& id)
|
||||||
|
|||||||
Reference in New Issue
Block a user