diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-02-02 13:12:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-02 13:12:12 +0100 |
commit | ea1e26f312c3a03816bc69850e5cd74c353d4bb6 (patch) | |
tree | 981b174719e792d510f79662d50d61aa942eb557 /editor | |
parent | cb04457871899cc1ad7166e7c8b6cb75f175ed26 (diff) | |
parent | 58be3c069af4f57e67920c1f6bf7314e3e1bc2bd (diff) |
Merge pull request #45648 from Kanabenki/check-project-manager-dirs
Check default project and autoscan directories exist on project manager startup
Diffstat (limited to 'editor')
-rw-r--r-- | editor/project_manager.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index a0eb923bc5..5951373af9 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -2157,8 +2157,9 @@ void ProjectManager::_run_project() { } void ProjectManager::_scan_dir(const String &path, List<String> *r_projects) { - DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - da->change_dir(path); + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + Error error = da->change_dir(path); + ERR_FAIL_COND_MSG(error != OK, "Could not scan directory at: " + path); da->list_dir_begin(); String n = da->get_next(); while (n != String()) { @@ -2170,7 +2171,6 @@ void ProjectManager::_scan_dir(const String &path, List<String> *r_projects) { n = da->get_next(); } da->list_dir_end(); - memdelete(da); } void ProjectManager::_scan_begin(const String &p_base) { @@ -2683,8 +2683,26 @@ ProjectManager::ProjectManager() { _load_recent_projects(); - if (EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path")) { - _scan_begin(EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path")); + DirAccessRef dir_access = DirAccess::create(DirAccess::AccessType::ACCESS_FILESYSTEM); + + String default_project_path = EditorSettings::get_singleton()->get("filesystem/directories/default_project_path"); + if (!dir_access->dir_exists(default_project_path)) { + Error error = dir_access->make_dir_recursive(default_project_path); + if (error != OK) { + ERR_PRINT("Could not create default project directory at: " + default_project_path); + } + } + + String autoscan_path = EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path"); + if (autoscan_path != "") { + if (dir_access->dir_exists(autoscan_path)) { + _scan_begin(autoscan_path); + } else { + Error error = dir_access->make_dir_recursive(autoscan_path); + if (error != OK) { + ERR_PRINT("Could not create project autoscan directory at: " + autoscan_path); + } + } } SceneTree::get_singleton()->get_root()->connect("files_dropped", callable_mp(this, &ProjectManager::_files_dropped)); |