From 83b76a81714f8f41ec3da20df842c2acb2d63d4b Mon Sep 17 00:00:00 2001 From: Nathan Warden Date: Wed, 14 Feb 2018 10:23:04 -0500 Subject: [PATCH] Added an auto quit and auto build flag to the command line options. (cherry picked from commit 4bfb504c2f047660ce85fda96657d5cb27415f19) --- editor/editor_node.cpp | 6 +++--- editor/editor_node.h | 3 ++- main/main.cpp | 19 ++++++++++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 6032d862012..78844bb1249 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1783,7 +1783,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) { editor_data.save_editor_external_data(); } - if (!_call_build()) + if (!call_build()) return; if (bool(EDITOR_DEF("run/output/always_clear_output_on_play", true))) { @@ -2326,7 +2326,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { if (run_native->is_deploy_debug_remote_enabled()) { _menu_option_confirm(RUN_STOP, true); - if (!_call_build()) + if (!call_build()) break; // build failed emit_signal("play_pressed"); @@ -4531,7 +4531,7 @@ void EditorNode::add_build_callback(EditorBuildCallback p_callback) { EditorBuildCallback EditorNode::build_callbacks[EditorNode::MAX_BUILD_CALLBACKS]; -bool EditorNode::_call_build() { +bool EditorNode::call_build() { for (int i = 0; i < build_callback_count; i++) { if (!build_callbacks[i]()) diff --git a/editor/editor_node.h b/editor/editor_node.h index 03102cdc81b..9f33e1137ea 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -596,7 +596,6 @@ private: static EditorPluginInitializeCallback plugin_init_callbacks[MAX_INIT_CALLBACKS]; void _save_default_environment(); - bool _call_build(); static int build_callback_count; static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS]; @@ -634,6 +633,8 @@ protected: static void _bind_methods(); public: + bool call_build(); + static void add_plugin_init_callback(EditorPluginInitializeCallback p_callback); enum EditorTable { diff --git a/main/main.cpp b/main/main.cpp index e4c7ae242d2..e2d635362d5 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -124,6 +124,8 @@ static bool editor = false; static bool show_help = false; static bool disable_render_loop = false; static int fixed_fps = -1; +static bool auto_build_solutions = false; +static bool auto_quit = false; static OS::ProcessID allow_focus_steal_pid = 0; @@ -259,6 +261,7 @@ void Main::print_help(const char *p_binary) { OS::get_singleton()->print(" --export-debug Use together with --export, enables debug mode for the template.\n"); OS::get_singleton()->print(" --doctool Dump the engine API reference to the given in XML format, merging if existing files are found.\n"); OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n"); + OS::get_singleton()->print(" --build-solutions Builds the scripting solutions (IE. C#).\n"); #ifdef DEBUG_METHODS_ENABLED OS::get_singleton()->print(" --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n"); #endif @@ -520,6 +523,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } else if (I->get() == "-p" || I->get() == "--project-manager") { // starts project manager project_manager = true; + } else if (I->get() == "--build-solutions") { // Build the scripting solution such C# + + auto_build_solutions = true; } else if (I->get() == "--no-window") { // disable window creation, Windows only OS::get_singleton()->set_no_window_mode(true); @@ -545,6 +551,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } } else if (I->get() == "-u" || I->get() == "--upwards") { // scan folders upwards upwards = true; + } else if (I->get() == "--quit" || I->get() == "-q") { // Auto quit at the end of the first main loop iteration + auto_quit = true; } else if (I->get().ends_with("project.godot")) { String path; String file = I->get(); @@ -1839,7 +1847,16 @@ bool Main::iteration() { target_ticks = MIN(MAX(target_ticks, current_ticks - time_step), current_ticks + time_step); } - return exit; +#ifdef TOOLS_ENABLED + if (auto_build_solutions) { + auto_build_solutions = false; + if (!EditorNode::get_singleton()->call_build()) { + ERR_FAIL_V(true); + } + } +#endif + + return exit || auto_quit; } void Main::force_redraw() {