diff --git a/spine-godot/spine_godot/SpineEditorPlugin.cpp b/spine-godot/spine_godot/SpineEditorPlugin.cpp index fe48777d2..34b3ad2f2 100644 --- a/spine-godot/spine_godot/SpineEditorPlugin.cpp +++ b/spine-godot/spine_godot/SpineEditorPlugin.cpp @@ -178,11 +178,24 @@ Error SpineBinaryResourceImportPlugin::import(const String &source_file, const S #ifdef SPINE_GODOT_EXTENSION SpineEditorPlugin::SpineEditorPlugin() { - add_import_plugin(memnew(SpineAtlasResourceImportPlugin)); - add_import_plugin(memnew(SpineJsonResourceImportPlugin)); - add_import_plugin(memnew(SpineBinaryResourceImportPlugin)); - add_inspector_plugin(memnew(SpineSkeletonDataResourceInspectorPlugin)); - // add_inspector_plugin(memnew(SpineSpriteInspectorPlugin)); + atlas_import_plugin = Ref(memnew(SpineAtlasResourceImportPlugin)); + json_import_plugin = Ref(memnew(SpineJsonResourceImportPlugin)); + binary_import_plugin = Ref(memnew(SpineBinaryResourceImportPlugin)); + skeleton_data_inspector_plugin = Ref(memnew(SpineSkeletonDataResourceInspectorPlugin)); + + add_import_plugin(atlas_import_plugin); + add_import_plugin(json_import_plugin); + add_import_plugin(binary_import_plugin); + add_inspector_plugin(skeleton_data_inspector_plugin); +} + +void SpineEditorPlugin::_notification(int p_what) { + if (p_what == NOTIFICATION_PREDELETE) { + remove_import_plugin(atlas_import_plugin); + remove_import_plugin(json_import_plugin); + remove_import_plugin(binary_import_plugin); + remove_inspector_plugin(skeleton_data_inspector_plugin); + } } #else SpineEditorPlugin::SpineEditorPlugin(EditorNode *node) { diff --git a/spine-godot/spine_godot/SpineEditorPlugin.h b/spine-godot/spine_godot/SpineEditorPlugin.h index ea1aacd01..37493824e 100644 --- a/spine-godot/spine_godot/SpineEditorPlugin.h +++ b/spine-godot/spine_godot/SpineEditorPlugin.h @@ -287,11 +287,20 @@ class SpineEditorPlugin : public EditorPlugin { static void _bind_methods() {} +#ifdef SPINE_GODOT_EXTENSION + Ref atlas_import_plugin; + Ref json_import_plugin; + Ref binary_import_plugin; + Ref skeleton_data_inspector_plugin; +#endif + public: #ifdef SPINE_GODOT_EXTENSION explicit SpineEditorPlugin(); String _get_plugin_name() const override { return "SpineEditorPlugin"; } + + void _notification(int p_what); #else explicit SpineEditorPlugin(EditorNode *node);