From 5cc3e409025246917e6f4a8988f1acd64526fba5 Mon Sep 17 00:00:00 2001 From: Red Kitsune Date: Sun, 17 Sep 2023 20:28:34 +0200 Subject: [PATCH 1/4] Implemented better missing script handling --- Source/Engine/Level/Components/DummyScript.h | 67 ++++++++++++++++++++ Source/Engine/Level/SceneObjectsFactory.cpp | 3 + 2 files changed, 70 insertions(+) create mode 100644 Source/Engine/Level/Components/DummyScript.h diff --git a/Source/Engine/Level/Components/DummyScript.h b/Source/Engine/Level/Components/DummyScript.h new file mode 100644 index 000000000..380648f5a --- /dev/null +++ b/Source/Engine/Level/Components/DummyScript.h @@ -0,0 +1,67 @@ +#pragma once + +#include "Engine/Core/Cache.h" +#include "Engine/Scripting/Script.h" +#include "Engine/Scripting/ScriptingObjectReference.h" +#include "Engine/Serialization/JsonWriters.h" + +API_CLASS(Attributes="HideInEditor") class FLAXENGINE_API DummyScript : public Script +{ + API_AUTO_SERIALIZATION(); + DECLARE_SCRIPTING_TYPE(DummyScript); + +public: + API_PROPERTY(Attributes="ReadOnly") + FORCE_INLINE String GetMissingTypeName() const + { + if(Data.IsEmpty()) return TEXT(""); + + rapidjson_flax::Document doc; + doc.Parse(Data.ToStringAnsi().GetText()); + + String str (doc["TypeName"].GetString()); + + return str; + } + + API_PROPERTY() + void SetMissingTypeName(String value) + { + _missingTypeName = value; + } + + API_FIELD(Hidden, Attributes="HideInEditor") String Data; + + API_PROPERTY() + FORCE_INLINE ScriptingObjectReference