Fix HandleObjectDeserializationError to be editor or dev only and thread-safe

This commit is contained in:
Wojtek Figat
2023-10-16 16:36:52 +02:00
parent 30d510f073
commit 3e7368b1cb

View File

@@ -14,6 +14,9 @@
#include "Engine/Serialization/JsonWriters.h"
#include "Engine/Profiler/ProfilerCPU.h"
#include "Engine/Threading/ThreadLocal.h"
#if !BUILD_RELEASE || USE_EDITOR
#include "Engine/Level/Level.h"
#endif
SceneObjectsFactory::Context::Context(ISerializeModifier* modifier)
: Modifier(modifier)
@@ -254,6 +257,10 @@ void SceneObjectsFactory::Deserialize(Context& context, SceneObject* obj, ISeria
void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::DeserializeStream& value)
{
#if !BUILD_RELEASE || USE_EDITOR
// Prevent race-conditions when logging missing objects (especially when adding dummy MissingScript)
ScopeLock lock(Level::ScenesLock);
// Print invalid object data contents
rapidjson_flax::StringBuffer buffer;
PrettyJsonWriter writer(buffer);
@@ -280,6 +287,7 @@ void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::
LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName());
}
}
#endif
}
Actor* SceneObjectsFactory::CreateActor(int32 typeId, const Guid& id)