You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2026-01-05 19:31:35 +00:00
Perform export after import is fully complete
Previously command line export would go simultaneously with reimport, which caused final package to either miss something or contain outdated assets or perhaps even broken ones.
This commit is contained in:
@@ -391,42 +391,6 @@ void EditorNode::_fs_changed() {
|
||||
E->get()->invalidate();
|
||||
}
|
||||
|
||||
if (export_defer.preset != "") {
|
||||
Ref<EditorExportPreset> preset;
|
||||
for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
|
||||
preset = EditorExport::get_singleton()->get_export_preset(i);
|
||||
if (preset->get_name() == export_defer.preset) {
|
||||
break;
|
||||
}
|
||||
preset.unref();
|
||||
}
|
||||
if (preset.is_null()) {
|
||||
String err = "Unknown export preset: " + export_defer.preset;
|
||||
ERR_PRINT(err.utf8().get_data());
|
||||
} else {
|
||||
Ref<EditorExportPlatform> platform = preset->get_platform();
|
||||
if (platform.is_null()) {
|
||||
String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
|
||||
ERR_PRINT(err.utf8().get_data());
|
||||
} else {
|
||||
// ensures export_project does not loop infinitely, because notifications may
|
||||
// come during the export
|
||||
export_defer.preset = "";
|
||||
if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) {
|
||||
if (export_defer.path.ends_with(".zip")) {
|
||||
platform->save_zip(preset, export_defer.path);
|
||||
} else if (export_defer.path.ends_with(".pck")) {
|
||||
platform->save_pack(preset, export_defer.path);
|
||||
}
|
||||
} else {
|
||||
platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get_tree()->quit();
|
||||
}
|
||||
|
||||
{
|
||||
//reload changed resources
|
||||
List<Ref<Resource> > changed;
|
||||
@@ -463,6 +427,42 @@ void EditorNode::_fs_changed() {
|
||||
}
|
||||
|
||||
_mark_unsaved_scenes();
|
||||
|
||||
if (export_defer.preset != "" && !EditorFileSystem::get_singleton()->is_scanning()) {
|
||||
Ref<EditorExportPreset> preset;
|
||||
for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
|
||||
preset = EditorExport::get_singleton()->get_export_preset(i);
|
||||
if (preset->get_name() == export_defer.preset) {
|
||||
break;
|
||||
}
|
||||
preset.unref();
|
||||
}
|
||||
if (preset.is_null()) {
|
||||
String err = "Unknown export preset: " + export_defer.preset;
|
||||
ERR_PRINT(err.utf8().get_data());
|
||||
} else {
|
||||
Ref<EditorExportPlatform> platform = preset->get_platform();
|
||||
if (platform.is_null()) {
|
||||
String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
|
||||
ERR_PRINT(err.utf8().get_data());
|
||||
} else {
|
||||
// ensures export_project does not loop infinitely, because notifications may
|
||||
// come during the export
|
||||
export_defer.preset = "";
|
||||
if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) {
|
||||
if (export_defer.path.ends_with(".zip")) {
|
||||
platform->save_zip(preset, export_defer.path);
|
||||
} else if (export_defer.path.ends_with(".pck")) {
|
||||
platform->save_pack(preset, export_defer.path);
|
||||
}
|
||||
} else {
|
||||
platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get_tree()->quit();
|
||||
}
|
||||
}
|
||||
|
||||
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
|
||||
|
||||
Reference in New Issue
Block a user