Minor codestyle tweaks for #1420

This commit is contained in:
Wojtek Figat
2023-10-01 21:55:20 +02:00
parent 9b605f445c
commit 652510ee50
2 changed files with 31 additions and 28 deletions

View File

@@ -1,4 +1,8 @@
#pragma once
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#if USE_EDITOR
#include "Engine/Core/Cache.h"
#include "Engine/Scripting/Script.h"
@@ -13,8 +17,10 @@ API_CLASS(Attributes="HideInEditor") class FLAXENGINE_API MissingScript : public
API_AUTO_SERIALIZATION();
DECLARE_SCRIPTING_TYPE(MissingScript);
public:
private:
ScriptingObjectReference<Script> _referenceScript;
public:
/// <summary>
/// Namespace and type name of missing script.
/// </summary>
@@ -28,8 +34,7 @@ public:
/// <summary>
/// Field for assigning new script to transfer data to.
/// </summary>
API_PROPERTY()
FORCE_INLINE ScriptingObjectReference<Script> GetReferenceScript() const
API_PROPERTY() ScriptingObjectReference<Script> GetReferenceScript() const
{
return _referenceScript;
}
@@ -37,29 +42,24 @@ public:
/// <summary>
/// Field for assigning new script to transfer data to.
/// </summary>
API_PROPERTY()
void SetReferenceScript(ScriptingObjectReference<Script> value)
API_PROPERTY() void SetReferenceScript(const ScriptingObjectReference<Script>& value)
{
_referenceScript = value;
if(Data.IsEmpty()) return;
MapToReferenceScript();
}
private:
ScriptingObjectReference<Script> _referenceScript;
void MapToReferenceScript()
{
rapidjson_flax::Document doc;
doc.Parse(Data.ToStringAnsi().GetText());
if (Data.IsEmpty())
return;
rapidjson_flax::Document document;
document.Parse(Data.ToStringAnsi().GetText());
auto modifier = Cache::ISerializeModifier.Get();
_referenceScript->Deserialize(doc, modifier.Value);
_referenceScript->Deserialize(document, modifier.Value);
this->DeleteObject();
DeleteObject();
}
};
inline MissingScript::MissingScript(const SpawnParams& params) : Script(params){}
inline MissingScript::MissingScript(const SpawnParams& params)
: Script(params)
{
}
#endif

View File

@@ -231,7 +231,8 @@ void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::
rapidjson_flax::StringBuffer buffer;
PrettyJsonWriter writer(buffer);
value.Accept(writer.GetWriter());
LOG(Warning, "Failed to deserialize scene object from data: {0}", String(buffer.GetString()));
String bufferStr(buffer.GetString());
LOG(Warning, "Failed to deserialize scene object from data: {0}", bufferStr);
// Try to log some useful info about missing object (eg. it's parent name for faster fixing)
const auto parentIdMember = value.FindMember("ParentID");
@@ -241,12 +242,14 @@ void SceneObjectsFactory::HandleObjectDeserializationError(const ISerializable::
Actor* parent = Scripting::FindObject<Actor>(parentId);
if (parent)
{
MissingScript* dummyScript = parent->AddScript<MissingScript>();
#if USE_EDITOR
// Add dummy script
auto* dummyScript = parent->AddScript<MissingScript>();
const auto parentIdMember = value.FindMember("TypeName");
dummyScript->MissingTypeName = parentIdMember->value.GetString();
dummyScript->Data = String(buffer.GetString());
if (parentIdMember != value.MemberEnd() && parentIdMember->value.IsString())
dummyScript->MissingTypeName = parentIdMember->value.GetString();
dummyScript->Data = MoveTemp(bufferStr);
#endif
LOG(Warning, "Parent actor of the missing object: {0}", parent->GetName());
}
}