diff options
author | Juan Linietsky <reduzio@gmail.com> | 2015-08-06 02:37:40 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2015-08-06 02:37:40 -0300 |
commit | 9d185ccc30ad5fe7eb716390ca2e7f5c06574ce0 (patch) | |
tree | f497a42db3bc171e52cc60996ddb92f9d09a313b /tools | |
parent | 8280bb0de0737f9149face902db21192a0d98ca8 (diff) |
-Merged the file server with the live editing and remote debug
-It is now really easy to deploy an android build with debug, and debug it
Diffstat (limited to 'tools')
-rw-r--r-- | tools/editor/editor_import_export.cpp | 45 | ||||
-rw-r--r-- | tools/editor/editor_import_export.h | 7 | ||||
-rw-r--r-- | tools/editor/editor_node.cpp | 72 | ||||
-rw-r--r-- | tools/editor/editor_node.h | 6 | ||||
-rw-r--r-- | tools/editor/editor_run.h | 1 | ||||
-rw-r--r-- | tools/editor/editor_run_native.cpp | 19 | ||||
-rw-r--r-- | tools/editor/editor_run_native.h | 5 | ||||
-rw-r--r-- | tools/editor/editor_settings.cpp | 32 | ||||
-rw-r--r-- | tools/editor/editor_settings.h | 1 | ||||
-rw-r--r-- | tools/editor/fileserver/editor_file_server.cpp | 20 | ||||
-rw-r--r-- | tools/editor/icons/icon_debug.png | bin | 0 -> 659 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_remote.png | bin | 0 -> 707 bytes |
12 files changed, 150 insertions, 58 deletions
diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index 4e6435b22e..b28b349c86 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -40,6 +40,7 @@ #include "io/resource_saver.h" #include "io/md5.h" #include "io_plugins/editor_texture_import_plugin.h" +#include "tools/editor/plugins/script_editor_plugin.h" String EditorImportPlugin::validate_source_path(const String& p_path) { @@ -916,6 +917,48 @@ static int _get_pad(int p_alignment, int p_n) { return pad; }; +void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, bool p_dumb, bool p_remote_debug) { + + String host = EditorSettings::get_singleton()->get("network/debug_host"); + + if (p_dumb) { + int port = EditorSettings::get_singleton()->get("file_server/port"); + String passwd = EditorSettings::get_singleton()->get("file_server/password"); + r_flags.push_back("-rfs"); + r_flags.push_back(host+":"+itos(port)); + if (passwd!="") { + r_flags.push_back("-rfs_pass"); + r_flags.push_back(passwd); + } + } + + if (p_remote_debug) { + + r_flags.push_back("-rdebug"); + r_flags.push_back(host+":"+String::num(GLOBAL_DEF("debug/debug_port", 6007))); + + List<String> breakpoints; + ScriptEditor::get_singleton()->get_breakpoints(&breakpoints); + + + if (breakpoints.size()) { + + r_flags.push_back("-bp"); + String bpoints; + for(const List<String>::Element *E=breakpoints.front();E;E=E->next()) { + + bpoints+=E->get().replace(" ","%20"); + if (E->next()) + bpoints+=","; + } + + r_flags.push_back(bpoints); + } + + } + +} + Error EditorExportPlatform::save_pack_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total) { @@ -1029,7 +1072,7 @@ Error EditorExportPlatform::save_pack(FileAccess *dst,bool p_make_bundles, int p return OK; } -Error EditorExportPlatformPC::export_project(const String& p_path, bool p_debug, bool p_dumb) { +Error EditorExportPlatformPC::export_project(const String& p_path, bool p_debug, bool p_dumb,bool p_remote_debug) { diff --git a/tools/editor/editor_import_export.h b/tools/editor/editor_import_export.h index 9704d4a695..f134a479a4 100644 --- a/tools/editor/editor_import_export.h +++ b/tools/editor/editor_import_export.h @@ -104,6 +104,7 @@ protected: }; + void gen_export_flags(Vector<String> &r_flags,bool p_dumb,bool p_remote_debug); static Error save_pack_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total); public: @@ -131,14 +132,14 @@ public: virtual int get_device_count() const { return 0; } virtual String get_device_name(int p_device) const { return ""; } virtual String get_device_info(int p_device) const { return ""; } - virtual Error run(int p_device,bool p_dumb=false) { return OK; } + virtual Error run(int p_device,bool p_dumb=false,bool p_remote_debug=false) { return OK; } virtual bool can_export(String *r_error=NULL) const=0; virtual bool requieres_password(bool p_debug) const { return false; } virtual String get_binary_extension() const=0; - virtual Error export_project(const String& p_path,bool p_debug,bool p_dumb=false)=0; + virtual Error export_project(const String& p_path,bool p_debug,bool p_dumb=false,bool p_remote_debug=false)=0; EditorExportPlatform() {}; }; @@ -188,7 +189,7 @@ public: virtual ImageCompression get_image_compression() const { return IMAGE_COMPRESSION_BC; } virtual String get_binary_extension() const { return binary_extension; } - virtual Error export_project(const String& p_path,bool p_debug,bool p_dumb=false); + virtual Error export_project(const String& p_path, bool p_debug, bool p_dumb=false, bool p_remote_debug=false); virtual void set_release_binary32(const String& p_binary) { release_binary32=p_binary; } virtual void set_debug_binary32(const String& p_binary) { debug_binary32=p_binary; } virtual void set_release_binary64(const String& p_binary) { release_binary64=p_binary; } diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 84107bdaf7..605335f7cf 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -2366,6 +2366,13 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { _run(true); } break; + case RUN_PLAY_NATIVE: { + + emit_signal("play_pressed"); + editor_run.run_native_notify(); + + + } break; case RUN_SCENE_SETTINGS: { run_settings_dialog->popup_run_settings(); @@ -2397,33 +2404,43 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { case RUN_FILE_SERVER: { //file_server - bool ischecked = fileserver_menu->get_popup()->is_item_checked( fileserver_menu->get_popup()->get_item_index(RUN_FILE_SERVER)); + bool ischecked = debug_button->get_popup()->is_item_checked( debug_button->get_popup()->get_item_index(RUN_FILE_SERVER)); if (ischecked) { file_server->stop(); - fileserver_menu->set_icon(gui_base->get_icon("FileServer","EditorIcons")); - fileserver_menu->get_popup()->set_item_text( fileserver_menu->get_popup()->get_item_index(RUN_FILE_SERVER),"Enable File Server"); + //debug_button->set_icon(gui_base->get_icon("FileServer","EditorIcons")); + //debug_button->get_popup()->set_item_text( debug_button->get_popup()->get_item_index(RUN_FILE_SERVER),"Enable File Server"); } else { file_server->start(); - fileserver_menu->set_icon(gui_base->get_icon("FileServerActive","EditorIcons")); - fileserver_menu->get_popup()->set_item_text( fileserver_menu->get_popup()->get_item_index(RUN_FILE_SERVER),"Disable File Server"); + //debug_button->set_icon(gui_base->get_icon("FileServerActive","EditorIcons")); + //debug_button->get_popup()->set_item_text( debug_button->get_popup()->get_item_index(RUN_FILE_SERVER),"Disable File Server"); } - fileserver_menu->get_popup()->set_item_checked( fileserver_menu->get_popup()->get_item_index(RUN_FILE_SERVER),!ischecked); + debug_button->get_popup()->set_item_checked( debug_button->get_popup()->get_item_index(RUN_FILE_SERVER),!ischecked); } break; case RUN_LIVE_DEBUG: { - ScriptEditor::get_singleton()->get_debugger()->set_live_debugging(live_debug_button->is_pressed()); + bool ischecked = debug_button->get_popup()->is_item_checked( debug_button->get_popup()->get_item_index(RUN_LIVE_DEBUG)); + + debug_button->get_popup()->set_item_checked( debug_button->get_popup()->get_item_index(RUN_LIVE_DEBUG),!ischecked); + ScriptEditor::get_singleton()->get_debugger()->set_live_debugging(!ischecked); } break; case RUN_DEPLOY_DUMB_CLIENTS: { - bool ischecked = fileserver_menu->get_popup()->is_item_checked( fileserver_menu->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS)); - fileserver_menu->get_popup()->set_item_checked( fileserver_menu->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS),!ischecked); + bool ischecked = debug_button->get_popup()->is_item_checked( debug_button->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS)); + debug_button->get_popup()->set_item_checked( debug_button->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS),!ischecked); run_native->set_deploy_dumb(!ischecked); } break; + case RUN_DEPLOY_REMOTE_DEBUG: { + + bool ischecked = debug_button->get_popup()->is_item_checked( debug_button->get_popup()->get_item_index(RUN_DEPLOY_REMOTE_DEBUG)); + debug_button->get_popup()->set_item_checked( debug_button->get_popup()->get_item_index(RUN_DEPLOY_REMOTE_DEBUG),!ischecked); + run_native->set_deploy_debug_remote(!ischecked); + + } break; case SETTINGS_UPDATE_ALWAYS: { update_menu->get_popup()->set_item_checked(0,true); @@ -4604,6 +4621,7 @@ EditorNode::EditorNode() { menu_hb->add_child(native_play_button); native_play_button->hide(); native_play_button->get_popup()->connect("item_pressed",this,"_run_in_device"); + run_native->connect("native_run",this,"_menu_option",varray(RUN_PLAY_NATIVE)); // VSeparator *s1 = memnew( VSeparator ); // play_hb->add_child(s1); @@ -4624,29 +4642,21 @@ EditorNode::EditorNode() { play_custom_scene_button->connect("pressed", this,"_menu_option",make_binds(RUN_PLAY_CUSTOM_SCENE)); play_custom_scene_button->set_tooltip("Play custom scene ("+keycode_get_string(KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_F5)+")."); - live_debug_button = memnew( ToolButton ); - play_hb->add_child(live_debug_button); - live_debug_button->set_toggle_mode(true); - live_debug_button->set_focus_mode(Control::FOCUS_NONE); - live_debug_button->set_icon(gui_base->get_icon("LiveDebug","EditorIcons")); - live_debug_button->connect("pressed", this,"_menu_option",make_binds(RUN_LIVE_DEBUG)); - live_debug_button->set_tooltip("Toggle Live Debugging On/Off"); - - fileserver_menu = memnew( MenuButton ); - play_hb->add_child(fileserver_menu); - fileserver_menu->set_flat(true); - fileserver_menu->set_focus_mode(Control::FOCUS_NONE); - fileserver_menu->set_icon(gui_base->get_icon("FileServer","EditorIcons")); - //fileserver_menu->connect("pressed", this,"_menu_option",make_binds(RUN_PLAY_CUSTOM_SCENE)); - fileserver_menu->set_tooltip("Serve the project filesystem to remote clients."); - - p=fileserver_menu->get_popup(); - p->add_check_item("Enable File Server",RUN_FILE_SERVER); - p->set_item_tooltip(p->get_item_index(RUN_FILE_SERVER),"Enable/Disable the File Server."); + debug_button = memnew( MenuButton ); + debug_button->set_flat(true); + play_hb->add_child(debug_button); + //debug_button->set_toggle_mode(true); + debug_button->set_focus_mode(Control::FOCUS_NONE); + debug_button->set_icon(gui_base->get_icon("Remote","EditorIcons")); + //debug_button->connect("pressed", this,"_menu_option",make_binds(RUN_LIVE_DEBUG)); + debug_button->set_tooltip("Debug Options"); + + p=debug_button->get_popup(); + p->add_check_item("Live Editing",RUN_LIVE_DEBUG); + p->add_check_item("File Server",RUN_FILE_SERVER); p->add_separator(); - p->add_check_item("Deploy Dumb Clients",RUN_DEPLOY_DUMB_CLIENTS); - //p->set_item_checked( p->get_item_index(RUN_DEPLOY_DUMB_CLIENTS),true ); - p->set_item_tooltip(p->get_item_index(RUN_DEPLOY_DUMB_CLIENTS),"Deploy dumb clients when the File Server is active."); + p->add_check_item("Deploy Remote Debug",RUN_DEPLOY_REMOTE_DEBUG); + p->add_check_item("Deploy File Server Clients",RUN_DEPLOY_DUMB_CLIENTS); p->connect("item_pressed",this,"_menu_option"); /* diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index 93b95034ff..d40658a056 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -146,6 +146,7 @@ class EditorNode : public Node { RUN_PAUSE, RUN_STOP, RUN_PLAY_SCENE, + RUN_PLAY_NATIVE, RUN_PLAY_CUSTOM_SCENE, RUN_SCENE_SETTINGS, RUN_SETTINGS, @@ -153,6 +154,7 @@ class EditorNode : public Node { RUN_FILE_SERVER, RUN_DEPLOY_DUMB_CLIENTS, RUN_LIVE_DEBUG, + RUN_DEPLOY_REMOTE_DEBUG, SETTINGS_UPDATE_ALWAYS, SETTINGS_UPDATE_CHANGES, SETTINGS_IMPORT, @@ -240,9 +242,9 @@ class EditorNode : public Node { ToolButton *animation_menu; ToolButton *play_scene_button; ToolButton *play_custom_scene_button; - ToolButton *live_debug_button; + MenuButton *debug_button; TextureProgress *audio_vu; - MenuButton *fileserver_menu; + //MenuButton *fileserver_menu; TextEdit *load_errors; AcceptDialog *load_error_dialog; diff --git a/tools/editor/editor_run.h b/tools/editor/editor_run.h index 5541cc84fa..402d5e3820 100644 --- a/tools/editor/editor_run.h +++ b/tools/editor/editor_run.h @@ -48,6 +48,7 @@ public: Status get_status() const; Error run(const String& p_scene,const String p_custom_args,const List<String>& p_breakpoints,const String& p_edited_scene); + void run_native_notify() { status=STATUS_PLAY; } void stop(); EditorRun(); }; diff --git a/tools/editor/editor_run_native.cpp b/tools/editor/editor_run_native.cpp index 83b1753ea2..42c7f89608 100644 --- a/tools/editor/editor_run_native.cpp +++ b/tools/editor/editor_run_native.cpp @@ -101,12 +101,18 @@ void EditorRunNative::_run_native(int p_idx,const String& p_platform) { Ref<EditorExportPlatform> eep = EditorImportExport::get_singleton()->get_export_platform(p_platform); ERR_FAIL_COND(eep.is_null()); - eep->run(p_idx,deploy_dumb); + if (deploy_debug_remote) { + emit_signal("native_run"); + + } + eep->run(p_idx,deploy_dumb,deploy_debug_remote); } void EditorRunNative::_bind_methods() { ObjectTypeDB::bind_method("_run_native",&EditorRunNative::_run_native); + + ADD_SIGNAL(MethodInfo("native_run")); } void EditorRunNative::set_deploy_dumb(bool p_enabled) { @@ -119,10 +125,21 @@ bool EditorRunNative::is_deploy_dumb_enabled() const{ return deploy_dumb; } +void EditorRunNative::set_deploy_debug_remote(bool p_enabled) { + + deploy_debug_remote=p_enabled; +} + +bool EditorRunNative::is_deploy_debug_remote_enabled() const{ + + return deploy_debug_remote; +} + EditorRunNative::EditorRunNative() { set_process(true); first=true; deploy_dumb=false; + deploy_debug_remote=false; } diff --git a/tools/editor/editor_run_native.h b/tools/editor/editor_run_native.h index 1512dc5dd9..a0baf527f1 100644 --- a/tools/editor/editor_run_native.h +++ b/tools/editor/editor_run_native.h @@ -39,6 +39,7 @@ class EditorRunNative : public HBoxContainer { Map<StringName,MenuButton*> menus; bool first; bool deploy_dumb; + bool deploy_debug_remote; void _run_native(int p_idx,const String& p_platform); @@ -50,6 +51,10 @@ public: void set_deploy_dumb(bool p_enabled); bool is_deploy_dumb_enabled() const; + + void set_deploy_debug_remote(bool p_enabled); + bool is_deploy_debug_remote_enabled() const; + EditorRunNative(); }; diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 0df9fcadef..2f61d4f09d 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -274,6 +274,7 @@ void EditorSettings::create() { print_line("EditorSettings: Load OK!"); } + singleton->setup_network(); singleton->load_favorites(); singleton->scan_plugins(); @@ -289,6 +290,7 @@ void EditorSettings::create() { singleton->config_file_path=config_file_path; singleton->settings_path=config_path+"/"+config_dir; singleton->_load_defaults(); + singleton->setup_network(); singleton->scan_plugins(); @@ -330,6 +332,35 @@ Error EditorSettings::_load_plugin(const String& p_path, Plugin &plugin) { return OK; } +void EditorSettings::setup_network() { + + List<IP_Address> local_ip; + IP::get_singleton()->get_local_addresses(&local_ip); + String lip; + String hint; + String current=get("network/debug_host"); + + for(List<IP_Address>::Element *E=local_ip.front();E;E=E->next()) { + + String ip = E->get(); + if (ip=="127.0.0.1") + continue; + + if (lip!="") + lip=ip; + if (ip==current) + lip=current; //so it saves + if (hint!="") + hint+=","; + hint+=ip; + + } + + set("network/debug_host",lip); + add_property_hint(PropertyInfo(Variant::STRING,"network/debug_host",PROPERTY_HINT_ENUM,hint)); + +} + void EditorSettings::scan_plugins() { Map<String,Plugin> new_plugins; @@ -465,6 +496,7 @@ void EditorSettings::_load_defaults() { set("2d_editor/bone_selected_color",Color(0.9,0.45,0.45,0.9)); set("2d_editor/bone_ik_color",Color(0.9,0.9,0.45,0.9)); + set("on_save/compress_binary_resources",true); set("on_save/save_modified_external_resources",true); set("on_save/save_paths_as_relative",false); diff --git a/tools/editor/editor_settings.h b/tools/editor/editor_settings.h index 6b7e6eb989..4ba940cd1c 100644 --- a/tools/editor/editor_settings.h +++ b/tools/editor/editor_settings.h @@ -113,6 +113,7 @@ public: void scan_plugins(); void enable_plugins(); + void setup_network(); void raise_order(const String& p_name); static void create(); diff --git a/tools/editor/fileserver/editor_file_server.cpp b/tools/editor/fileserver/editor_file_server.cpp index b66a1d522b..ea95e4da1c 100644 --- a/tools/editor/fileserver/editor_file_server.cpp +++ b/tools/editor/fileserver/editor_file_server.cpp @@ -318,27 +318,7 @@ EditorFileServer::EditorFileServer() { cmd=CMD_NONE; thread=Thread::create(_thread_start,this); - List<IP_Address> local_ip; - IP::get_singleton()->get_local_addresses(&local_ip); EDITOR_DEF("file_server/port",6010); - String lip; - String hint; - for(List<IP_Address>::Element *E=local_ip.front();E;E=E->next()) { - - String ip = E->get(); - if (ip=="127.0.0.1") - continue; - - if (lip!="") - lip=ip; - if (hint!="") - hint+=","; - hint+=ip; - - } - - EDITOR_DEF("file_server/host",lip); - EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"file_server/host",PROPERTY_HINT_ENUM,hint)); EDITOR_DEF("file_server/password",""); } diff --git a/tools/editor/icons/icon_debug.png b/tools/editor/icons/icon_debug.png Binary files differnew file mode 100644 index 0000000000..03b98aa9e4 --- /dev/null +++ b/tools/editor/icons/icon_debug.png diff --git a/tools/editor/icons/icon_remote.png b/tools/editor/icons/icon_remote.png Binary files differnew file mode 100644 index 0000000000..792d958a46 --- /dev/null +++ b/tools/editor/icons/icon_remote.png |