diff --git a/main/main.cpp b/main/main.cpp index f6a83914476a..ea9e75176b87 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -121,6 +121,7 @@ static bool force_lowdpi = false; static int init_screen = -1; static bool use_vsync = true; static bool editor = false; +static bool project_manager = false; static bool show_help = false; static bool disable_render_loop = false; static int fixed_fps = -1; @@ -511,6 +512,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } else if (I->get() == "-e" || I->get() == "--editor") { // starts editor editor = true; + } else if (I->get() == "-p" || I->get() == "--project-manager") { // starts project manager + + project_manager = true; } else if (I->get() == "--no-window") { // disable window creation, Windows only OS::get_singleton()->set_no_window_mode(true); @@ -779,8 +783,18 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph #ifdef TOOLS_ENABLED - if (main_args.size() == 0 && (!ProjectSettings::get_singleton()->has_setting("application/run/main_loop_type")) && (!ProjectSettings::get_singleton()->has_setting("application/run/main_scene") || String(ProjectSettings::get_singleton()->get("application/run/main_scene")) == "")) + if (!project_manager) { + // Determine if the project manager should be requested + project_manager = + main_args.size() == 0 && + !ProjectSettings::get_singleton()->has_setting("application/run/main_loop_type") && + (!ProjectSettings::get_singleton()->has_setting("application/run/main_scene") || + String(ProjectSettings::get_singleton()->get("application/run/main_scene")) == ""); + } + + if (project_manager) { use_custom_res = false; //project manager (run without arguments) + } #endif @@ -830,9 +844,11 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation", 2); GLOBAL_DEF("rendering/quality/intended_usage/framebuffer_allocation.mobile", 3); - if (editor) { - OS::get_singleton()->_allow_hidpi = true; //editors always in hidpi + if (editor || project_manager) { + // The editor and project manager always detect and use hiDPI if needed + OS::get_singleton()->_allow_hidpi = true; } + Engine::get_singleton()->_pixel_snap = GLOBAL_DEF("rendering/quality/2d/use_pixel_snap", false); OS::get_singleton()->_keep_screen_on = GLOBAL_DEF("display/window/energy_saving/keep_screen_on", true); if (rtm == -1) { @@ -1185,7 +1201,6 @@ bool Main::start() { String test; String _export_preset; bool export_debug = false; - bool project_manager_request = false; List args = OS::get_singleton()->get_cmdline_args(); for (int i = 0; i < args.size(); i++) { @@ -1195,7 +1210,7 @@ bool Main::start() { } else if (args[i] == "-e" || args[i] == "--editor") { editor = true; } else if (args[i] == "-p" || args[i] == "--project-manager") { - project_manager_request = true; + project_manager = true; } else if (args[i].length() && args[i][0] != '-' && game_path == "") { game_path = args[i]; } @@ -1473,7 +1488,7 @@ bool Main::start() { } String local_game_path; - if (game_path != "" && !project_manager_request) { + if (game_path != "" && !project_manager) { local_game_path = game_path.replace("\\", "/"); @@ -1518,7 +1533,7 @@ bool Main::start() { #endif } - if (!project_manager_request && !editor) { + if (!project_manager && !editor) { if (game_path != "" || script != "") { //autoload List props; @@ -1626,7 +1641,7 @@ bool Main::start() { } #ifdef TOOLS_ENABLED - if (project_manager_request || (script == "" && test == "" && game_path == "" && !editor)) { + if (project_manager || (script == "" && test == "" && game_path == "" && !editor)) { ProjectManager *pmanager = memnew(ProjectManager); ProgressDialog *progress_dialog = memnew(ProgressDialog);