diff --git a/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs b/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs new file mode 100644 index 000000000..03d5ddd55 --- /dev/null +++ b/Source/Editor/CustomEditors/Dedicated/MissingScriptEditor.cs @@ -0,0 +1,26 @@ +using FlaxEditor.CustomEditors.Editors; +using FlaxEngine; +using FlaxEngine.GUI; + +namespace FlaxEditor.CustomEditors.Dedicated; + +/// +/// The missing script editor. +/// +[CustomEditor(typeof(MissingScript)), DefaultEditor] +public class MissingScriptEditor : GenericEditor +{ + /// + public override void Initialize(LayoutElementsContainer layout) + { + if (layout.ContainerControl is not DropPanel dropPanel) + { + base.Initialize(layout); + return; + } + + dropPanel.HeaderTextColor = Color.OrangeRed; + + base.Initialize(layout); + } +} diff --git a/Source/Engine/Level/Components/MissingScript.h b/Source/Engine/Level/Components/MissingScript.h new file mode 100644 index 000000000..601346203 --- /dev/null +++ b/Source/Engine/Level/Components/MissingScript.h @@ -0,0 +1,65 @@ +#pragma once + +#include "Engine/Core/Cache.h" +#include "Engine/Scripting/Script.h" +#include "Engine/Scripting/ScriptingObjectReference.h" +#include "Engine/Serialization/JsonWriters.h" + +/// +/// Actor script component that represents missing script. +/// +API_CLASS(Attributes="HideInEditor") class FLAXENGINE_API MissingScript : public Script +{ + API_AUTO_SERIALIZATION(); + DECLARE_SCRIPTING_TYPE(MissingScript); + +public: + + /// + /// Namespace and type name of missing script. + /// + API_FIELD(Attributes="ReadOnly") String MissingTypeName; + + /// + /// Missing script serialized data. + /// + API_FIELD(Hidden, Attributes="HideInEditor") String Data; + + /// + /// Field for assigning new script to transfer data to. + /// + API_PROPERTY() + FORCE_INLINE ScriptingObjectReference