Fix crash in MissingScript if script is still missing after deserialization

#1924
This commit is contained in:
Wojtek Figat
2023-11-17 13:50:18 +01:00
parent 719498e99b
commit d9b90c9520
2 changed files with 23 additions and 18 deletions

View File

@@ -19,6 +19,28 @@
#include "Engine/Threading/Threading.h"
#endif
MissingScript::MissingScript(const SpawnParams& params)
: Script(params)
{
}
void MissingScript::SetReferenceScript(const ScriptingObjectReference<Script>& value)
{
if (_referenceScript == value)
return;
_referenceScript = value;
if (Data.IsEmpty() || !_referenceScript)
return;
rapidjson_flax::Document document;
document.Parse(Data.ToStringAnsi().GetText());
auto modifier = Cache::ISerializeModifier.Get();
const auto idsMapping = Scripting::ObjectsLookupIdMapping.Get();
if (idsMapping)
modifier->IdsMapping = *idsMapping;
_referenceScript->Deserialize(document, modifier.Value);
DeleteObject();
}
SceneObjectsFactory::Context::Context(ISerializeModifier* modifier)
: Modifier(modifier)
{