Browse Source

Merge pull request #90365 from KoBeWi/export_any%_speedrun

Allow skipping imported resource files from export
Rémi Verschelde 1 year ago
parent
commit
53bd0d5acf
2 changed files with 13 additions and 1 deletions
  1. 1 1
      doc/classes/EditorExportPlugin.xml
  2. 12 0
      editor/export/editor_export_platform.cpp

+ 1 - 1
doc/classes/EditorExportPlugin.xml

@@ -313,7 +313,7 @@
 		<method name="skip">
 			<return type="void" />
 			<description>
-				To be called inside [method _export_file]. Skips the current file, so it's not included in the export.
+				To be called inside [method _export_file], [method _customize_resource], or [method _customize_scene]. Skips the current file, so it's not included in the export.
 			</description>
 		</method>
 	</methods>

+ 12 - 0
editor/export/editor_export_platform.cpp

@@ -797,6 +797,10 @@ String EditorExportPlatform::_export_customize(const String &p_path, LocalVector
 		if (!customize_scenes_plugins.is_empty()) {
 			for (Ref<EditorExportPlugin> &plugin : customize_scenes_plugins) {
 				Node *customized = plugin->_customize_scene(node, p_path);
+				if (plugin->skipped) {
+					plugin->_clear();
+					return String();
+				}
 				if (customized != nullptr) {
 					node = customized;
 					modified = true;
@@ -830,6 +834,10 @@ String EditorExportPlatform::_export_customize(const String &p_path, LocalVector
 		if (!customize_resources_plugins.is_empty()) {
 			for (Ref<EditorExportPlugin> &plugin : customize_resources_plugins) {
 				Ref<Resource> new_res = plugin->_customize_resource(res, p_path);
+				if (plugin->skipped) {
+					plugin->_clear();
+					return String();
+				}
 				if (new_res.is_valid()) {
 					modified = true;
 					if (new_res != res) {
@@ -1135,6 +1143,10 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
 			// Before doing this, try to see if it can be customized.
 
 			String export_path = _export_customize(path, customize_resources_plugins, customize_scenes_plugins, export_cache, export_base_path, false);
+			if (export_path.is_empty()) {
+				// Skipped from plugin.
+				continue;
+			}
 
 			if (export_path != path) {
 				// It was actually customized.