Browse Source

Merge pull request #72572 from Daylily-Zeleen/daylily-zeleen/override_export_end_in_Cpp

Provide ability to override `EditorExportPlugin::_export_end()` in C++
Rémi Verschelde 1 year ago
parent
commit
38a1e17b93

+ 3 - 1
editor/export/editor_export_platform.cpp

@@ -547,8 +547,10 @@ EditorExportPlatform::ExportNotifier::~ExportNotifier() {
 	for (int i = 0; i < export_plugins.size(); i++) {
 		if (GDVIRTUAL_IS_OVERRIDDEN_PTR(export_plugins[i], _export_end)) {
 			export_plugins.write[i]->_export_end_script();
+		} else {
+			export_plugins.write[i]->_export_end();
 		}
-		export_plugins.write[i]->_export_end();
+		export_plugins.write[i]->_export_end_clear();
 		export_plugins.write[i]->set_export_preset(Ref<EditorExportPlugin>());
 	}
 }

+ 2 - 0
editor/export/editor_export_plugin.cpp

@@ -291,6 +291,8 @@ void EditorExportPlugin::_export_file(const String &p_path, const String &p_type
 void EditorExportPlugin::_export_begin(const HashSet<String> &p_features, bool p_debug, const String &p_path, int p_flags) {
 }
 
+void EditorExportPlugin::_export_end() {}
+
 void EditorExportPlugin::skip() {
 	skipped = true;
 }

+ 2 - 1
editor/export/editor_export_plugin.h

@@ -71,7 +71,7 @@ class EditorExportPlugin : public RefCounted {
 		skipped = false;
 	}
 
-	_FORCE_INLINE_ void _export_end() {
+	_FORCE_INLINE_ void _export_end_clear() {
 		ios_frameworks.clear();
 		ios_embedded_frameworks.clear();
 		ios_bundle_files.clear();
@@ -108,6 +108,7 @@ protected:
 
 	virtual void _export_file(const String &p_path, const String &p_type, const HashSet<String> &p_features);
 	virtual void _export_begin(const HashSet<String> &p_features, bool p_debug, const String &p_path, int p_flags);
+	virtual void _export_end();
 
 	static void _bind_methods();