diff --git a/editor/export/editor_export_platform.cpp b/editor/export/editor_export_platform.cpp index 91c9ff9807cb..27216c2399a7 100644 --- a/editor/export/editor_export_platform.cpp +++ b/editor/export/editor_export_platform.cpp @@ -1495,7 +1495,15 @@ Error EditorExportPlatform::export_project_files(const Ref & Vector forced_export = get_forced_export_files(); for (int i = 0; i < forced_export.size(); i++) { - Vector array = FileAccess::get_file_as_bytes(forced_export[i]); + Vector array; + if (GDExtension::get_extension_list_config_file() == forced_export[i]) { + array = _filter_extension_list_config_file(forced_export[i], paths); + if (array.size() == 0) { + continue; + } + } else { + array = FileAccess::get_file_as_bytes(forced_export[i]); + } err = p_save_func(p_udata, forced_export[i], array, idx, total, enc_in_filters, enc_ex_filters, key, seed); if (err != OK) { return err; @@ -1534,6 +1542,22 @@ Error EditorExportPlatform::export_project_files(const Ref & return OK; } +Vector EditorExportPlatform::_filter_extension_list_config_file(const String &p_config_path, const HashSet &p_paths) { + Ref f = FileAccess::open(p_config_path, FileAccess::READ); + if (f.is_null()) { + ERR_FAIL_V_MSG(Vector(), "Can't open file from path '" + String(p_config_path) + "'."); + } + Vector data; + while (!f->eof_reached()) { + String l = f->get_line().strip_edges(); + if (p_paths.has(l)) { + data.append_array(l.to_utf8_buffer()); + data.append('\n'); + } + } + return data; +} + Error EditorExportPlatform::_pack_add_shared_object(void *p_userdata, const SharedObject &p_so) { PackData *pack_data = (PackData *)p_userdata; if (pack_data->so_files) { diff --git a/editor/export/editor_export_platform.h b/editor/export/editor_export_platform.h index c7378ffec7ed..a33bdce72a7f 100644 --- a/editor/export/editor_export_platform.h +++ b/editor/export/editor_export_platform.h @@ -135,6 +135,8 @@ class EditorExportPlatform : public RefCounted { void _edit_files_with_filter(Ref &da, const Vector &p_filters, HashSet &r_list, bool exclude); void _edit_filter_list(HashSet &r_list, const String &p_filter, bool exclude); + static Vector _filter_extension_list_config_file(const String &p_config_path, const HashSet &p_paths); + struct FileExportCache { uint64_t source_modified_time = 0; String source_md5;