diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index e90f81d0852..eb8e80a31d8 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -648,6 +648,28 @@ Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, b return err; } +#ifdef MACOS_ENABLED + // Attempt to load project file from macOS .app bundle resources. + resource_path = OS::get_singleton()->get_bundle_resource_dir(); + if (!resource_path.is_empty()) { + if (resource_path[resource_path.length() - 1] == '/') { + resource_path = resource_path.substr(0, resource_path.length() - 1); // Chop end. + } + Ref d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + ERR_FAIL_COND_V_MSG(d.is_null(), ERR_CANT_CREATE, vformat("Cannot create DirAccess for path '%s'.", resource_path)); + d->change_dir(resource_path); + + Error err; + + err = _load_settings_text_or_binary(resource_path.path_join("project.godot"), resource_path.path_join("project.binary")); + if (err == OK && !p_ignore_override) { + // Optional, we don't mind if it fails. + _load_settings_text(resource_path.path_join("override.cfg")); + return err; + } + } +#endif + // Nothing was found, try to find a project file in provided path (`p_path`) // or, if requested (`p_upwards`) in parent directories.