diff options
-rw-r--r-- | AUTHORS.md | 2 | ||||
-rw-r--r-- | DONORS.md | 43 | ||||
-rw-r--r-- | editor/editor_help.cpp | 2 | ||||
-rw-r--r-- | editor/find_in_files.cpp | 57 | ||||
-rw-r--r-- | editor/plugins/canvas_item_editor_plugin.cpp | 8 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 3 | ||||
-rw-r--r-- | editor/project_export.cpp | 20 | ||||
-rw-r--r-- | editor/project_export.h | 2 | ||||
-rw-r--r-- | editor/property_selector.cpp | 2 | ||||
-rw-r--r-- | editor/quick_open.cpp | 2 | ||||
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 1 | ||||
-rw-r--r-- | modules/mono/mono_gd/gd_mono_field.cpp | 2 | ||||
-rw-r--r-- | modules/visual_script/visual_script_editor.cpp | 5 | ||||
-rw-r--r-- | modules/visual_script/visual_script_editor.h | 2 | ||||
-rw-r--r-- | scene/gui/tree.cpp | 2 | ||||
-rw-r--r-- | scene/resources/particles_material.cpp | 2 |
16 files changed, 74 insertions, 81 deletions
diff --git a/AUTHORS.md b/AUTHORS.md index 13a67ce3f5..2f109aff6e 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -73,7 +73,7 @@ name is available. J08nY Jakub Grzesik (kubecz3k) Jérôme GULLY (Nutriz) - JFonS + Joan Fons Sanchez (JFonS) Johan Manuel (29jm) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) @@ -13,30 +13,29 @@ generous deed immortalized in the next stable release of Godot Engine. ## Platinum sponsors Enjin Coin <https://enjincoin.io> - GameDev.TV <https://gdev.tv/godot> ## Gold sponsors Gamblify <https://www.gamblify.com> + GameDev.TV <https://gdev.tv/godot> + Image Campus <https://www.imagecampus.edu.ar> ## Mini sponsors Andrew Dunai Brandon Lamb Christian Uldall Pedersen - Christopher Igoe Christoph Woinke + David Graham GameDev.net Hein-Pieter van Braam iDev.Network Studios Jamal Alyafei - Jay Sistar Leona Eden Matthieu Huvé Mike King Nathan Warden Neal Gompa (Conan Kudo) - Pascal Julien Patrick Aarstad Ruslan Mustakov Slobodan Milnovic @@ -67,7 +66,6 @@ generous deed immortalized in the next stable release of Godot Engine. Gary Oberbrunner Jay Horton Johannes Wuensch - Josep G. Camarasa Joshua Lesperance Krzysztof Dluzniewski Kyle Szklenski @@ -77,7 +75,7 @@ generous deed immortalized in the next stable release of Godot Engine. Ranoller Sergey Svenne Krap - Timothy Hagberg + Xananax BanjoNode2D Beliar @@ -92,6 +90,7 @@ generous deed immortalized in the next stable release of Godot Engine. Justo Delgado Baudí KTL Laurence Bannister + Markus Wiesner paul gruenbacher Rami Robert Willes @@ -106,7 +105,6 @@ generous deed immortalized in the next stable release of Godot Engine. Alessandra Pereyra Alexey Dyadchenko Amanda Haldy - Branwen Danielle Zakariasen Chau Siu Hung Chris Brown Chris Petrich @@ -130,9 +128,8 @@ generous deed immortalized in the next stable release of Godot Engine. joe513 Juraj Móza Justin Arnold - Lars Wuethrich Leandro Voltolino - Markus Wiesner + Marius Kamm Marvin Nahuel Sacchetti Nick Nikitin @@ -140,8 +137,6 @@ generous deed immortalized in the next stable release of Godot Engine. Pete Goodwin ray-tracer Ruben Soares Luis - Rufus Xavier Sarsaparilla - Sindre Sømme Sofox Stoned Xander Trent McPheron @@ -167,7 +162,6 @@ generous deed immortalized in the next stable release of Godot Engine. Bailey Bastian Böhm Benedikt - Benjamin Beshara Ben Vercammen Blair Allen Brandon @@ -178,7 +172,6 @@ generous deed immortalized in the next stable release of Godot Engine. Chris Chapin Christian Baune Christian Winter - Christopher Schmitt Collin Shooltz Daniel Johnson Daniel Kaplan @@ -192,11 +185,13 @@ generous deed immortalized in the next stable release of Godot Engine. Edward Herbert Elias Nykrem Eric Martini + Eric Williams Eugenio Hugo Salgüero Jáñez Fabian Becker fengjiongmax Foomf G3Dev sàrl + George Lesica Gerrit Großkopf Gilberto K. Otubo Greg Olson @@ -206,6 +201,7 @@ generous deed immortalized in the next stable release of Godot Engine. ialex32x Jahn Johansen Jaime Ruiz-Borau Vizárraga + Jako Danar Jeff Hungerford Joel Fivat Johan Lindberg @@ -213,9 +209,9 @@ generous deed immortalized in the next stable release of Godot Engine. Jonas Yamazaki Jonathan Martin Jonathan Nieto - Jonathon Jon Bonazza Jon Sully + Jose Malheiro Josh 'Cheeseness' Bush Juanfran Juan Negrier @@ -227,14 +223,16 @@ generous deed immortalized in the next stable release of Godot Engine. Kevin Kamper Meejach Petersen Klavdij Voncina Krzysztof Jankowski + Krzysztof Sierszecki + KsyTek Games Linus Lind Lundgren Loreshaper Games - Luc Magitem Luis Moraes Macil magodev - Manolis Makris + Malcolm Martin Eigel + Matt Welke Max R.R. Collada Maxwell Mertcan Mermerkaya @@ -245,17 +243,18 @@ generous deed immortalized in the next stable release of Godot Engine. Mikael Olsson MoM Moritz Laass + Moritz Weissenberger Natrim nee Neil Blakey-Milner Nick Pavlica Niclas Eriksen + Nicolás Montaña Nicolas SAN AGUSTIN - Niko Leopold + Nik Noi Sek Pan Ip Pascal Grüter - Pat LaBine Patrick Nafarrete Paul E Hansen Paul Gieske @@ -273,10 +272,7 @@ generous deed immortalized in the next stable release of Godot Engine. Roman Tinkov Sasori Olkof Sootstone - Stefan Butucea - The K-B Theo Cranmore - Thibaud Galloy Thibault Barbaroux Thomas Bell Thomas Holmes @@ -284,18 +280,15 @@ generous deed immortalized in the next stable release of Godot Engine. tiansheng li Tim Tom Larrow - Tristan Crawford - Tryggve Sollid Trym Nilsen + Tyggve Sollid Tyler Stafos UltyX Vaiktorg Victor Viktor Ferenczi waka nya - werner mendizabal Wout Standaert - Yu He ## Bronze donors diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index caa60eb645..3ee8d9c6c5 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -252,6 +252,8 @@ void EditorHelpSearch::_notification(int p_what) { connect("confirmed", this, "_confirmed"); _update_search(); + } else if (p_what == NOTIFICATION_EXIT_TREE) { + disconnect("confirmed", this, "_confirmed"); } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { if (is_visible_in_tree()) { diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index 0ccaa95fb7..705bb1d9c5 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -29,6 +29,7 @@ /*************************************************************************/ #include "find_in_files.h" + #include "core/os/dir_access.h" #include "core/os/os.h" #include "editor_node.h" @@ -89,8 +90,6 @@ static bool find_next(const String &line, String pattern, int from, bool match_c //-------------------------------------------------------------------------------- FindInFiles::FindInFiles() { _root_prefix = ROOT_PREFIX; - _extension_filter.insert("gd"); - _extension_filter.insert("cs"); _searching = false; _whole_words = true; _match_case = true; @@ -301,8 +300,7 @@ const char *FindInFilesDialog::SIGNAL_REPLACE_REQUESTED = "replace_requested"; FindInFilesDialog::FindInFilesDialog() { - set_custom_minimum_size(Size2(400, 190) * EDSCALE); - set_resizable(true); + set_custom_minimum_size(Size2(500 * EDSCALE, 0)); set_title(TTR("Find in Files")); VBoxContainer *vbc = memnew(VBoxContainer); @@ -317,7 +315,7 @@ FindInFilesDialog::FindInFilesDialog() { vbc->add_child(gc); Label *find_label = memnew(Label); - find_label->set_text(TTR("Find: ")); + find_label->set_text(TTR("Find:")); gc->add_child(find_label); _search_text_line_edit = memnew(LineEdit); @@ -326,10 +324,7 @@ FindInFilesDialog::FindInFilesDialog() { _search_text_line_edit->connect("text_entered", this, "_on_search_text_entered"); gc->add_child(_search_text_line_edit); - { - Control *placeholder = memnew(Control); - gc->add_child(placeholder); - } + gc->add_child(memnew(Control)); // Space to mantain the grid aligned. { HBoxContainer *hbc = memnew(HBoxContainer); @@ -346,7 +341,7 @@ FindInFilesDialog::FindInFilesDialog() { } Label *folder_label = memnew(Label); - folder_label->set_text(TTR("Folder: ")); + folder_label->set_text(TTR("Folder:")); gc->add_child(folder_label); { @@ -374,7 +369,7 @@ FindInFilesDialog::FindInFilesDialog() { } Label *filter_label = memnew(Label); - filter_label->set_text(TTR("Filter: ")); + filter_label->set_text(TTR("Filters:")); gc->add_child(filter_label); { @@ -382,7 +377,8 @@ FindInFilesDialog::FindInFilesDialog() { Vector<String> exts; exts.push_back("gd"); - exts.push_back("cs"); + if (Engine::get_singleton()->has_singleton("GodotSharp")) + exts.push_back("cs"); for (int i = 0; i < exts.size(); ++i) { CheckBox *cb = memnew(CheckBox); @@ -395,39 +391,14 @@ FindInFilesDialog::FindInFilesDialog() { gc->add_child(hbc); } - { - Control *placeholder = memnew(Control); - placeholder->set_custom_minimum_size(Size2(0, EDSCALE * 16)); - vbc->add_child(placeholder); - } - - { - HBoxContainer *hbc = memnew(HBoxContainer); - hbc->set_alignment(HBoxContainer::ALIGN_CENTER); - - _find_button = add_button(TTR("Find..."), false, "find"); - _find_button->set_disabled(true); - - { - Control *placeholder = memnew(Control); - placeholder->set_custom_minimum_size(Size2(EDSCALE * 16, 0)); - hbc->add_child(placeholder); - } - - _replace_button = add_button(TTR("Replace..."), false, "replace"); - _replace_button->set_disabled(true); + _find_button = add_button(TTR("Find..."), false, "find"); + _find_button->set_disabled(true); - { - Control *placeholder = memnew(Control); - placeholder->set_custom_minimum_size(Size2(EDSCALE * 16, 0)); - hbc->add_child(placeholder); - } - - Button *cancel_button = get_ok(); - cancel_button->set_text(TTR("Cancel")); + _replace_button = add_button(TTR("Replace..."), false, "replace"); + _replace_button->set_disabled(true); - vbc->add_child(hbc); - } + Button *cancel_button = get_ok(); + cancel_button->set_text(TTR("Cancel")); } void FindInFilesDialog::set_search_text(String text) { diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 31dd20e453..45f7f36cbd 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -1696,13 +1696,7 @@ bool CanvasItemEditor::_gui_input_scale(const Ref<InputEvent> &p_event) { if (drag_type == DRAG_SCALE_BOTH) { Size2 scale_factor = drag_to_local / drag_from_local; if (uniform) { - if (ABS(offset.x) > ABS(offset.y)) { - scale.x *= scale_factor.x; - scale.y = scale.x * ratio; - } else { - scale.y *= scale_factor.y; - scale.x = scale.y / ratio; - } + scale *= (scale_factor.x + scale_factor.y) / 2.0; } else { scale *= scale_factor; } diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 04011dbb2b..323dfa681b 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -210,6 +210,9 @@ void ScriptEditorQuickOpen::_notification(int p_what) { search_box->set_right_icon(get_icon("Search", "EditorIcons")); search_box->set_clear_button_enabled(true); } break; + case NOTIFICATION_EXIT_TREE: { + disconnect("confirmed", this, "_confirmed"); + } break; } } diff --git a/editor/project_export.cpp b/editor/project_export.cpp index a297f2d47e..f4f1f8068d 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -170,6 +170,7 @@ void ProjectExportDialog::_edit_preset(int p_index) { if (p_index < 0 || p_index >= presets->get_item_count()) { name->set_text(""); name->set_editable(false); + export_path->set_editable(false); runnable->set_disabled(true); parameters->edit(NULL); presets->unselect_all(); @@ -191,9 +192,11 @@ void ProjectExportDialog::_edit_preset(int p_index) { sections->show(); name->set_editable(true); + export_path->set_editable(true); duplicate_preset->set_disabled(false); delete_preset->set_disabled(false); name->set_text(current->get_name()); + export_path->set_text(current->get_export_path()); runnable->set_disabled(false); runnable->set_pressed(current->is_runnable()); parameters->edit(current.ptr()); @@ -432,6 +435,18 @@ void ProjectExportDialog::_name_changed(const String &p_string) { _update_presets(); } +void ProjectExportDialog::_export_path_changed(const String &p_string) { + + if (updating) + return; + + Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); + ERR_FAIL_COND(current.is_null()); + + current->set_export_path(p_string); + _update_presets(); +} + void ProjectExportDialog::_duplicate_preset() { Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); @@ -929,6 +944,10 @@ ProjectExportDialog::ProjectExportDialog() { runnable->connect("pressed", this, "_runnable_pressed"); settings_vb->add_child(runnable); + export_path = memnew(LineEdit); + settings_vb->add_margin_child(TTR("Export Path:"), export_path); + export_path->connect("text_changed", this, "_export_path_changed"); + sections = memnew(TabContainer); sections->set_tab_align(TabContainer::ALIGN_LEFT); settings_vb->add_child(sections); @@ -1019,6 +1038,7 @@ ProjectExportDialog::ProjectExportDialog() { //disable by default name->set_editable(false); + export_path->set_editable(false); runnable->set_disabled(true); duplicate_preset->set_disabled(true); delete_preset->set_disabled(true); diff --git a/editor/project_export.h b/editor/project_export.h index a4bca843a8..23a6db8942 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -66,6 +66,7 @@ private: ItemList *presets; LineEdit *name; + LineEdit *export_path; EditorInspector *parameters; CheckButton *runnable; @@ -107,6 +108,7 @@ private: void _runnable_pressed(); void _update_parameters(const String &p_edited_property); void _name_changed(const String &p_string); + void _export_path_changed(const String &p_string); void _add_preset(int p_platform); void _edit_preset(int p_index); void _duplicate_preset(); diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp index 9042bdc7c1..a8c97be936 100644 --- a/editor/property_selector.cpp +++ b/editor/property_selector.cpp @@ -394,6 +394,8 @@ void PropertySelector::_notification(int p_what) { if (p_what == NOTIFICATION_ENTER_TREE) { connect("confirmed", this, "_confirmed"); + } else if (p_what == NOTIFICATION_EXIT_TREE) { + disconnect("confirmed", this, "_confirmed"); } } diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index e48a0022e8..8dacc3c142 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -261,6 +261,8 @@ void EditorQuickOpen::_notification(int p_what) { search_box->set_right_icon(get_icon("Search", "EditorIcons")); search_box->set_clear_button_enabled(true); + } else if (p_what == NOTIFICATION_EXIT_TREE) { + disconnect("confirmed", this, "_confirmed"); } } diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 3e5ad7c99b..1d26700fa0 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -4353,6 +4353,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { current_export.type = Variant::INT; current_export.hint = is_flags ? PROPERTY_HINT_FLAGS : PROPERTY_HINT_ENUM; + current_export.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE; Dictionary enum_values = constant; List<Variant> keys; diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index fe41722af0..5d9b9213e7 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -223,6 +223,8 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_ ERR_FAIL(); } } + + break; } ERR_EXPLAIN(String() + "Attempted to set the value of a field of unmarshallable type: " + tclass->get_name()); diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index a80a015ed3..c5f2070963 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -765,6 +765,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) { } void VisualScriptEditor::_update_members() { + ERR_FAIL_COND(!script.is_valid()); updating_members = true; @@ -3061,7 +3062,7 @@ void VisualScriptEditor::_notification(int p_what) { } } - if (is_visible_in_tree()) { + if (is_visible_in_tree() && script.is_valid()) { _update_members(); _update_graph(); } @@ -3652,7 +3653,7 @@ VisualScriptEditor::VisualScriptEditor() { new_virtual_method_select = memnew(VisualScriptPropertySelector); add_child(new_virtual_method_select); new_virtual_method_select->connect("selected", this, "_selected_new_virtual_method"); - new_virtual_method_select->get_cancel()->connect("pressed", this, "_selected_new_virtual_method"); + new_virtual_method_select->get_cancel(); member_popup = memnew(PopupMenu); add_child(member_popup); diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h index 97c75dae94..ce3245bc28 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -176,7 +176,7 @@ class VisualScriptEditor : public ScriptEditorBase { void _cancel_connect_node(); void _create_new_node(const String &p_text, const String &p_category, const Vector2 &p_point); - void _selected_new_virtual_method(const String &p_text = String(""), const String &p_category = String(""), const bool p_connecting = true); + void _selected_new_virtual_method(const String &p_text, const String &p_category, const bool p_connecting); int error_line; diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 0c11181f98..31f7a21114 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -2519,7 +2519,7 @@ void Tree::_gui_input(Ref<InputEvent> p_event) { pressing_for_editor = false; } - if (cache.click_type == Cache::CLICK_BUTTON) { + if (cache.click_type == Cache::CLICK_BUTTON && cache.click_item != NULL) { // make sure in case of wrong reference after reconstructing whole TreeItems cache.click_item = get_item_at_position(cache.click_pos); emit_signal("button_pressed", cache.click_item, cache.click_column, cache.click_id); diff --git a/scene/resources/particles_material.cpp b/scene/resources/particles_material.cpp index dacbe168fd..d500609c43 100644 --- a/scene/resources/particles_material.cpp +++ b/scene/resources/particles_material.cpp @@ -1123,7 +1123,7 @@ void ParticlesMaterial::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::REAL, "initial_velocity", PROPERTY_HINT_RANGE, "0,1000,0.01,or_lesser,or_greater"), "set_param", "get_param", PARAM_INITIAL_LINEAR_VELOCITY); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "initial_velocity_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_INITIAL_LINEAR_VELOCITY); ADD_GROUP("Angular Velocity", "angular_"); - ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_velocity", PROPERTY_HINT_RANGE, "-360,360,0.01"), "set_param", "get_param", PARAM_ANGULAR_VELOCITY); + ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_velocity", PROPERTY_HINT_RANGE, "-720,720,0.01,or_lesser,or_greater"), "set_param", "get_param", PARAM_ANGULAR_VELOCITY); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_velocity_random", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param_randomness", "get_param_randomness", PARAM_ANGULAR_VELOCITY); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "angular_velocity_curve", PROPERTY_HINT_RESOURCE_TYPE, "CurveTexture"), "set_param_texture", "get_param_texture", PARAM_ANGULAR_VELOCITY); ADD_GROUP("Orbit Velocity", "orbit_"); |