diff options
Diffstat (limited to 'editor')
33 files changed, 141 insertions, 47 deletions
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index b4ef0f8c4a..e594d53d69 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -33,6 +33,7 @@ #include "core/authors.gen.h" #include "core/donors.gen.h" #include "core/license.gen.h" +#include "core/os/time.h" #include "core/version.h" #include "editor/editor_string_names.h" #include "editor/themes/editor_scale.h" @@ -206,7 +207,14 @@ EditorAbout::EditorAbout() { // Set the text to copy in metadata as it slightly differs from the button's text. version_btn->set_meta(META_TEXT_TO_COPY, "v" VERSION_FULL_BUILD + hash); version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER); - version_btn->set_tooltip_text(TTR("Click to copy.")); + String build_date; + if (VERSION_TIMESTAMP > 0) { + build_date = Time::get_singleton()->get_datetime_string_from_unix_time(VERSION_TIMESTAMP, true) + " UTC"; + } else { + build_date = TTR("(unknown)"); + } + version_btn->set_tooltip_text(vformat(TTR("Git commit date: %s\nClick to copy the version number."), build_date)); + version_btn->connect("pressed", callable_mp(this, &EditorAbout::_version_button_pressed)); version_info_vbc->add_child(version_btn); diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index 7d0024b1da..2920cf19c0 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -143,7 +143,11 @@ void EditorPluginSettings::_plugin_activity_changed() { ti->set_checked(COLUMN_STATUS, is_enabled); updating = false; } - ti->set_custom_color(COLUMN_NAME, is_enabled ? Color() : get_theme_color(SNAME("font_disabled_color"), EditorStringName(Editor))); + if (is_enabled) { + ti->clear_custom_color(COLUMN_NAME); + } else { + ti->set_custom_color(COLUMN_NAME, get_theme_color(SNAME("font_disabled_color"), EditorStringName(Editor))); + } } void EditorPluginSettings::_create_clicked() { diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 199fa3f6c9..d76f55564b 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -756,6 +756,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { // Polygon editor _initial_set("editors/polygon_editor/point_grab_radius", has_touchscreen_ui ? 32 : 8); _initial_set("editors/polygon_editor/show_previous_outline", true); + EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "editors/polygon_editor/auto_bake_delay", 1.5, "-1.0,10.0,0.01"); // Animation _initial_set("editors/animation/autorename_animation_tracks", true); diff --git a/editor/gui/editor_bottom_panel.cpp b/editor/gui/editor_bottom_panel.cpp index 1cf9daa545..ab7e05b915 100644 --- a/editor/gui/editor_bottom_panel.cpp +++ b/editor/gui/editor_bottom_panel.cpp @@ -30,6 +30,7 @@ #include "editor_bottom_panel.h" +#include "core/os/time.h" #include "core/version.h" #include "editor/debugger/editor_debugger_node.h" #include "editor/editor_about.h" @@ -253,7 +254,13 @@ EditorBottomPanel::EditorBottomPanel() { // Fade out the version label to be less prominent, but still readable. version_btn->set_self_modulate(Color(1, 1, 1, 0.65)); version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER); - version_btn->set_tooltip_text(TTR("Click to copy.")); + String build_date; + if (VERSION_TIMESTAMP > 0) { + build_date = Time::get_singleton()->get_datetime_string_from_unix_time(VERSION_TIMESTAMP, true) + " UTC"; + } else { + build_date = TTR("(unknown)"); + } + version_btn->set_tooltip_text(vformat(TTR("Git commit date: %s\nClick to copy the version information."), build_date)); version_btn->connect("pressed", callable_mp(this, &EditorBottomPanel::_version_button_pressed)); version_info_vbox->add_child(version_btn); diff --git a/editor/import/3d/resource_importer_scene.cpp b/editor/import/3d/resource_importer_scene.cpp index 38977d11e0..ca128968de 100644 --- a/editor/import/3d/resource_importer_scene.cpp +++ b/editor/import/3d/resource_importer_scene.cpp @@ -37,14 +37,15 @@ #include "editor/editor_node.h" #include "editor/editor_settings.h" #include "editor/import/3d/scene_import_settings.h" -#include "scene/3d/area_3d.h" -#include "scene/3d/collision_shape_3d.h" #include "scene/3d/importer_mesh_instance_3d.h" #include "scene/3d/mesh_instance_3d.h" #include "scene/3d/navigation_region_3d.h" #include "scene/3d/occluder_instance_3d.h" -#include "scene/3d/physics_body_3d.h" -#include "scene/3d/vehicle_body_3d.h" +#include "scene/3d/physics/area_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" +#include "scene/3d/physics/physics_body_3d.h" +#include "scene/3d/physics/static_body_3d.h" +#include "scene/3d/physics/vehicle_body_3d.h" #include "scene/animation/animation_player.h" #include "scene/resources/3d/box_shape_3d.h" #include "scene/resources/3d/importer_mesh.h" diff --git a/editor/plugins/cast_2d_editor_plugin.cpp b/editor/plugins/cast_2d_editor_plugin.cpp index a6457e38a7..64db19d85e 100644 --- a/editor/plugins/cast_2d_editor_plugin.cpp +++ b/editor/plugins/cast_2d_editor_plugin.cpp @@ -33,8 +33,8 @@ #include "canvas_item_editor_plugin.h" #include "editor/editor_node.h" #include "editor/editor_undo_redo_manager.h" -#include "scene/2d/ray_cast_2d.h" -#include "scene/2d/shape_cast_2d.h" +#include "scene/2d/physics/ray_cast_2d.h" +#include "scene/2d/physics/shape_cast_2d.h" void Cast2DEditor::_notification(int p_what) { switch (p_what) { diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h index 070a01f651..61e6cc3dda 100644 --- a/editor/plugins/collision_polygon_2d_editor_plugin.h +++ b/editor/plugins/collision_polygon_2d_editor_plugin.h @@ -32,7 +32,7 @@ #define COLLISION_POLYGON_2D_EDITOR_PLUGIN_H #include "editor/plugins/abstract_polygon_2d_editor.h" -#include "scene/2d/collision_polygon_2d.h" +#include "scene/2d/physics/collision_polygon_2d.h" class CollisionPolygon2DEditor : public AbstractPolygon2DEditor { GDCLASS(CollisionPolygon2DEditor, AbstractPolygon2DEditor); diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h index d58f5d511f..0e454799d6 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.h +++ b/editor/plugins/collision_shape_2d_editor_plugin.h @@ -32,7 +32,7 @@ #define COLLISION_SHAPE_2D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/2d/collision_shape_2d.h" +#include "scene/2d/physics/collision_shape_2d.h" class CanvasItemEditor; diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.h b/editor/plugins/cpu_particles_2d_editor_plugin.h index 5077827ce8..ffcf53af66 100644 --- a/editor/plugins/cpu_particles_2d_editor_plugin.h +++ b/editor/plugins/cpu_particles_2d_editor_plugin.h @@ -32,8 +32,8 @@ #define CPU_PARTICLES_2D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/2d/collision_polygon_2d.h" #include "scene/2d/cpu_particles_2d.h" +#include "scene/2d/physics/collision_polygon_2d.h" #include "scene/gui/box_container.h" class CheckBox; diff --git a/editor/plugins/gizmos/collision_object_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/collision_object_3d_gizmo_plugin.cpp index 63f2883ed7..caac143f23 100644 --- a/editor/plugins/gizmos/collision_object_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/collision_object_3d_gizmo_plugin.cpp @@ -32,9 +32,9 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/collision_object_3d.h" -#include "scene/3d/collision_polygon_3d.h" -#include "scene/3d/collision_shape_3d.h" +#include "scene/3d/physics/collision_object_3d.h" +#include "scene/3d/physics/collision_polygon_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" #include "scene/resources/surface_tool.h" CollisionObject3DGizmoPlugin::CollisionObject3DGizmoPlugin() { diff --git a/editor/plugins/gizmos/collision_polygon_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/collision_polygon_3d_gizmo_plugin.cpp index 50c10be11d..7d19e8f677 100644 --- a/editor/plugins/gizmos/collision_polygon_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/collision_polygon_3d_gizmo_plugin.cpp @@ -32,7 +32,7 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/collision_polygon_3d.h" +#include "scene/3d/physics/collision_polygon_3d.h" CollisionPolygon3DGizmoPlugin::CollisionPolygon3DGizmoPlugin() { const Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape"); diff --git a/editor/plugins/gizmos/collision_shape_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/collision_shape_3d_gizmo_plugin.cpp index 3cf9164460..9d4c08ed57 100644 --- a/editor/plugins/gizmos/collision_shape_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/collision_shape_3d_gizmo_plugin.cpp @@ -36,7 +36,7 @@ #include "editor/editor_undo_redo_manager.h" #include "editor/plugins/gizmos/gizmo_3d_helper.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/collision_shape_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" #include "scene/resources/3d/box_shape_3d.h" #include "scene/resources/3d/capsule_shape_3d.h" #include "scene/resources/3d/concave_polygon_shape_3d.h" diff --git a/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp index 3a8a0cff96..c15ddef933 100644 --- a/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/joint_3d_gizmo_plugin.cpp @@ -33,7 +33,11 @@ #include "editor/editor_node.h" #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/joint_3d.h" +#include "scene/3d/physics/joints/cone_twist_joint_3d.h" +#include "scene/3d/physics/joints/generic_6dof_joint_3d.h" +#include "scene/3d/physics/joints/hinge_joint_3d.h" +#include "scene/3d/physics/joints/pin_joint_3d.h" +#include "scene/3d/physics/joints/slider_joint_3d.h" #define BODY_A_RADIUS 0.25 #define BODY_B_RADIUS 0.27 diff --git a/editor/plugins/gizmos/physics_bone_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/physics_bone_3d_gizmo_plugin.cpp index d1511a5f76..b15f9bec3f 100644 --- a/editor/plugins/gizmos/physics_bone_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/physics_bone_3d_gizmo_plugin.cpp @@ -33,7 +33,8 @@ #include "editor/editor_settings.h" #include "editor/plugins/gizmos/joint_3d_gizmo_plugin.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/physics_body_3d.h" +#include "scene/3d/physics/physical_bone_3d.h" +#include "scene/3d/physics/physics_body_3d.h" PhysicalBone3DGizmoPlugin::PhysicalBone3DGizmoPlugin() { create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint")); diff --git a/editor/plugins/gizmos/ray_cast_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/ray_cast_3d_gizmo_plugin.cpp index eb9e54fe1d..d783c4e4a7 100644 --- a/editor/plugins/gizmos/ray_cast_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/ray_cast_3d_gizmo_plugin.cpp @@ -32,7 +32,7 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/ray_cast_3d.h" +#include "scene/3d/physics/ray_cast_3d.h" RayCast3DGizmoPlugin::RayCast3DGizmoPlugin() { const Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape"); diff --git a/editor/plugins/gizmos/shape_cast_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/shape_cast_3d_gizmo_plugin.cpp index 23a224fc01..909f5b5f9a 100644 --- a/editor/plugins/gizmos/shape_cast_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/shape_cast_3d_gizmo_plugin.cpp @@ -32,7 +32,7 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/shape_cast_3d.h" +#include "scene/3d/physics/shape_cast_3d.h" ShapeCast3DGizmoPlugin::ShapeCast3DGizmoPlugin() { const Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape"); diff --git a/editor/plugins/gizmos/spring_arm_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/spring_arm_3d_gizmo_plugin.cpp index 69acac5a89..85e2c86947 100644 --- a/editor/plugins/gizmos/spring_arm_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/spring_arm_3d_gizmo_plugin.cpp @@ -32,7 +32,7 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/spring_arm_3d.h" +#include "scene/3d/physics/spring_arm_3d.h" #include "scene/resources/3d/shape_3d.h" void SpringArm3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { diff --git a/editor/plugins/gizmos/vehicle_body_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/vehicle_body_3d_gizmo_plugin.cpp index ef6cd88868..69e87a55c0 100644 --- a/editor/plugins/gizmos/vehicle_body_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/vehicle_body_3d_gizmo_plugin.cpp @@ -32,7 +32,7 @@ #include "editor/editor_settings.h" #include "editor/plugins/node_3d_editor_plugin.h" -#include "scene/3d/vehicle_body_3d.h" +#include "scene/3d/physics/vehicle_body_3d.h" VehicleWheel3DGizmoPlugin::VehicleWheel3DGizmoPlugin() { Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape"); diff --git a/editor/plugins/gpu_particles_2d_editor_plugin.h b/editor/plugins/gpu_particles_2d_editor_plugin.h index 237a005ab7..f202179eff 100644 --- a/editor/plugins/gpu_particles_2d_editor_plugin.h +++ b/editor/plugins/gpu_particles_2d_editor_plugin.h @@ -32,8 +32,8 @@ #define GPU_PARTICLES_2D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/2d/collision_polygon_2d.h" #include "scene/2d/gpu_particles_2d.h" +#include "scene/2d/physics/collision_polygon_2d.h" #include "scene/gui/box_container.h" #include "scene/gui/spin_box.h" diff --git a/editor/plugins/mesh_instance_3d_editor_plugin.cpp b/editor/plugins/mesh_instance_3d_editor_plugin.cpp index 061b839ee3..d62eddeeea 100644 --- a/editor/plugins/mesh_instance_3d_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_3d_editor_plugin.cpp @@ -35,9 +35,10 @@ #include "editor/editor_undo_redo_manager.h" #include "editor/plugins/node_3d_editor_plugin.h" #include "editor/themes/editor_scale.h" -#include "scene/3d/collision_shape_3d.h" #include "scene/3d/navigation_region_3d.h" -#include "scene/3d/physics_body_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" +#include "scene/3d/physics/physics_body_3d.h" +#include "scene/3d/physics/static_body_3d.h" #include "scene/gui/box_container.h" #include "scene/gui/dialogs.h" #include "scene/gui/menu_button.h" diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp index 4e45714174..8bfd3d0957 100644 --- a/editor/plugins/mesh_library_editor_plugin.cpp +++ b/editor/plugins/mesh_library_editor_plugin.cpp @@ -40,7 +40,8 @@ #include "main/main.h" #include "scene/3d/mesh_instance_3d.h" #include "scene/3d/navigation_region_3d.h" -#include "scene/3d/physics_body_3d.h" +#include "scene/3d/physics/physics_body_3d.h" +#include "scene/3d/physics/static_body_3d.h" #include "scene/gui/menu_button.h" #include "scene/main/window.h" #include "scene/resources/packed_scene.h" diff --git a/editor/plugins/navigation_obstacle_3d_editor_plugin.h b/editor/plugins/navigation_obstacle_3d_editor_plugin.h index 175fc75612..74094dc86f 100644 --- a/editor/plugins/navigation_obstacle_3d_editor_plugin.h +++ b/editor/plugins/navigation_obstacle_3d_editor_plugin.h @@ -32,8 +32,8 @@ #define NAVIGATION_OBSTACLE_3D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/3d/collision_polygon_3d.h" #include "scene/3d/mesh_instance_3d.h" +#include "scene/3d/physics/collision_polygon_3d.h" #include "scene/gui/box_container.h" #include "scene/resources/immediate_mesh.h" diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp index 48335f3b94..04133072be 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.cpp +++ b/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -31,6 +31,7 @@ #include "navigation_polygon_editor_plugin.h" #include "editor/editor_node.h" +#include "editor/editor_settings.h" #include "editor/editor_undo_redo_manager.h" #include "scene/2d/navigation_region_2d.h" #include "scene/gui/dialogs.h" @@ -50,6 +51,13 @@ Node2D *NavigationPolygonEditor::_get_node() const { void NavigationPolygonEditor::_set_node(Node *p_polygon) { node = Object::cast_to<NavigationRegion2D>(p_polygon); + if (node) { + Ref<NavigationPolygon> navpoly = node->get_navigation_polygon(); + if (navpoly.is_valid() && navpoly->get_outline_count() > 0 && navpoly->get_polygon_count() == 0) { + // We have outlines drawn / added by the user but no polygons were created for this navmesh yet so let's bake once immediately. + _rebake_timer_timeout(); + } + } } int NavigationPolygonEditor::_get_polygon_count() const { @@ -73,6 +81,10 @@ Variant NavigationPolygonEditor::_get_polygon(int p_idx) const { void NavigationPolygonEditor::_set_polygon(int p_idx, const Variant &p_polygon) const { Ref<NavigationPolygon> navpoly = _ensure_navpoly(); navpoly->set_outline(p_idx, p_polygon); + + if (rebake_timer && _rebake_timer_delay >= 0.0) { + rebake_timer->start(); + } } void NavigationPolygonEditor::_action_add_polygon(const Variant &p_polygon) { @@ -80,6 +92,10 @@ void NavigationPolygonEditor::_action_add_polygon(const Variant &p_polygon) { EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); undo_redo->add_do_method(navpoly.ptr(), "add_outline", p_polygon); undo_redo->add_undo_method(navpoly.ptr(), "remove_outline", navpoly->get_outline_count()); + + if (rebake_timer && _rebake_timer_delay >= 0.0) { + rebake_timer->start(); + } } void NavigationPolygonEditor::_action_remove_polygon(int p_idx) { @@ -87,6 +103,10 @@ void NavigationPolygonEditor::_action_remove_polygon(int p_idx) { EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); undo_redo->add_do_method(navpoly.ptr(), "remove_outline", p_idx); undo_redo->add_undo_method(navpoly.ptr(), "add_outline_at_index", navpoly->get_outline(p_idx), p_idx); + + if (rebake_timer && _rebake_timer_delay >= 0.0) { + rebake_timer->start(); + } } void NavigationPolygonEditor::_action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon) { @@ -94,6 +114,10 @@ void NavigationPolygonEditor::_action_set_polygon(int p_idx, const Variant &p_pr EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); undo_redo->add_do_method(navpoly.ptr(), "set_outline", p_idx, p_polygon); undo_redo->add_undo_method(navpoly.ptr(), "set_outline", p_idx, p_previous); + + if (rebake_timer && _rebake_timer_delay >= 0.0) { + rebake_timer->start(); + } } bool NavigationPolygonEditor::_has_resource() const { @@ -136,6 +160,15 @@ NavigationPolygonEditor::NavigationPolygonEditor() { bake_info = memnew(Label); bake_hbox->add_child(bake_info); + rebake_timer = memnew(Timer); + add_child(rebake_timer); + rebake_timer->set_one_shot(true); + _rebake_timer_delay = EDITOR_GET("editors/polygon_editor/auto_bake_delay"); + if (_rebake_timer_delay >= 0.0) { + rebake_timer->set_wait_time(_rebake_timer_delay); + } + rebake_timer->connect("timeout", callable_mp(this, &NavigationPolygonEditor::_rebake_timer_timeout)); + err_dialog = memnew(AcceptDialog); add_child(err_dialog); node = nullptr; @@ -147,15 +180,26 @@ void NavigationPolygonEditor::_notification(int p_what) { button_bake->set_icon(get_theme_icon(SNAME("Bake"), SNAME("EditorIcons"))); button_reset->set_icon(get_theme_icon(SNAME("Reload"), SNAME("EditorIcons"))); } break; + case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { + if (rebake_timer) { + _rebake_timer_delay = EDITOR_GET("editors/polygon_editor/auto_bake_delay"); + if (_rebake_timer_delay >= 0.0) { + rebake_timer->set_wait_time(_rebake_timer_delay); + } + } + } break; } } void NavigationPolygonEditor::_bake_pressed() { + if (rebake_timer) { + rebake_timer->stop(); + } button_bake->set_pressed(false); ERR_FAIL_NULL(node); Ref<NavigationPolygon> navigation_polygon = node->get_navigation_polygon(); - if (!navigation_polygon.is_valid()) { + if (navigation_polygon.is_null()) { err_dialog->set_text(TTR("A NavigationPolygon resource must be set or created for this node to work.")); err_dialog->popup_centered(); return; @@ -167,6 +211,9 @@ void NavigationPolygonEditor::_bake_pressed() { } void NavigationPolygonEditor::_clear_pressed() { + if (rebake_timer) { + rebake_timer->stop(); + } if (node) { if (node->get_navigation_polygon().is_valid()) { node->get_navigation_polygon()->clear(); @@ -193,6 +240,19 @@ void NavigationPolygonEditor::_update_polygon_editing_state() { } } +void NavigationPolygonEditor::_rebake_timer_timeout() { + if (!node) { + return; + } + Ref<NavigationPolygon> navigation_polygon = node->get_navigation_polygon(); + if (!navigation_polygon.is_valid()) { + return; + } + + node->bake_navigation_polygon(true); + node->queue_redraw(); +} + NavigationPolygonEditorPlugin::NavigationPolygonEditorPlugin() : AbstractPolygon2DEditorPlugin(memnew(NavigationPolygonEditor), "NavigationRegion2D") { } diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h index f1d0cd8751..bf2474bc55 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.h +++ b/editor/plugins/navigation_polygon_editor_plugin.h @@ -56,6 +56,10 @@ class NavigationPolygonEditor : public AbstractPolygon2DEditor { Button *button_reset = nullptr; Label *bake_info = nullptr; + Timer *rebake_timer = nullptr; + float _rebake_timer_delay = 1.5; + void _rebake_timer_timeout(); + void _bake_pressed(); void _clear_pressed(); diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 26e33f5796..aa0069979c 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -78,11 +78,11 @@ #include "editor/plugins/node_3d_editor_gizmos.h" #include "editor/scene_tree_dock.h" #include "scene/3d/camera_3d.h" -#include "scene/3d/collision_shape_3d.h" #include "scene/3d/decal.h" #include "scene/3d/light_3d.h" #include "scene/3d/mesh_instance_3d.h" -#include "scene/3d/physics_body_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" +#include "scene/3d/physics/physics_body_3d.h" #include "scene/3d/visual_instance_3d.h" #include "scene/3d/world_environment.h" #include "scene/gui/center_container.h" diff --git a/editor/plugins/physical_bone_3d_editor_plugin.cpp b/editor/plugins/physical_bone_3d_editor_plugin.cpp index 37092f924e..b7c12ab5c0 100644 --- a/editor/plugins/physical_bone_3d_editor_plugin.cpp +++ b/editor/plugins/physical_bone_3d_editor_plugin.cpp @@ -33,6 +33,7 @@ #include "editor/editor_node.h" #include "editor/editor_string_names.h" #include "editor/plugins/node_3d_editor_plugin.h" +#include "scene/3d/physics/physical_bone_3d.h" #include "scene/gui/separator.h" void PhysicalBone3DEditor::_bind_methods() { diff --git a/editor/plugins/physical_bone_3d_editor_plugin.h b/editor/plugins/physical_bone_3d_editor_plugin.h index c9799d3faa..5c49e641a5 100644 --- a/editor/plugins/physical_bone_3d_editor_plugin.h +++ b/editor/plugins/physical_bone_3d_editor_plugin.h @@ -32,10 +32,11 @@ #define PHYSICAL_BONE_3D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/3d/physics_body_3d.h" #include "scene/gui/box_container.h" #include "scene/gui/button.h" +class PhysicalBone3D; + class PhysicalBone3DEditor : public Object { GDCLASS(PhysicalBone3DEditor, Object); diff --git a/editor/plugins/polygon_3d_editor_plugin.h b/editor/plugins/polygon_3d_editor_plugin.h index 6407e33f48..85cfd807e4 100644 --- a/editor/plugins/polygon_3d_editor_plugin.h +++ b/editor/plugins/polygon_3d_editor_plugin.h @@ -32,8 +32,8 @@ #define POLYGON_3D_EDITOR_PLUGIN_H #include "editor/editor_plugin.h" -#include "scene/3d/collision_polygon_3d.h" #include "scene/3d/mesh_instance_3d.h" +#include "scene/3d/physics/collision_polygon_3d.h" #include "scene/gui/box_container.h" #include "scene/resources/immediate_mesh.h" diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp index 701e848be1..ffc59a3429 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.cpp +++ b/editor/plugins/skeleton_3d_editor_plugin.cpp @@ -40,10 +40,11 @@ #include "editor/plugins/animation_player_editor_plugin.h" #include "editor/plugins/node_3d_editor_plugin.h" #include "editor/themes/editor_scale.h" -#include "scene/3d/collision_shape_3d.h" -#include "scene/3d/joint_3d.h" #include "scene/3d/mesh_instance_3d.h" -#include "scene/3d/physics_body_3d.h" +#include "scene/3d/physics/collision_shape_3d.h" +#include "scene/3d/physics/joints/joint_3d.h" +#include "scene/3d/physics/physical_bone_3d.h" +#include "scene/3d/physics/physics_body_3d.h" #include "scene/gui/separator.h" #include "scene/gui/texture_rect.h" #include "scene/resources/3d/capsule_shape_3d.h" diff --git a/editor/plugins/sprite_2d_editor_plugin.cpp b/editor/plugins/sprite_2d_editor_plugin.cpp index 3e98f3d64f..de81264f13 100644 --- a/editor/plugins/sprite_2d_editor_plugin.cpp +++ b/editor/plugins/sprite_2d_editor_plugin.cpp @@ -38,9 +38,9 @@ #include "editor/gui/editor_zoom_widget.h" #include "editor/scene_tree_dock.h" #include "editor/themes/editor_scale.h" -#include "scene/2d/collision_polygon_2d.h" #include "scene/2d/light_occluder_2d.h" #include "scene/2d/mesh_instance_2d.h" +#include "scene/2d/physics/collision_polygon_2d.h" #include "scene/2d/polygon_2d.h" #include "scene/gui/box_container.h" #include "scene/gui/menu_button.h" diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp index 80490c9388..5845ddbb6e 100644 --- a/editor/plugins/tiles/tile_data_editors.cpp +++ b/editor/plugins/tiles/tile_data_editors.cpp @@ -641,6 +641,7 @@ void GenericTilePolygonEditor::_base_control_gui_input(Ref<InputEvent> p_event) undo_redo->add_undo_method(base_control, "queue_redraw"); undo_redo->commit_action(false); emit_signal(SNAME("polygons_changed")); + drag_type = DRAG_TYPE_NONE; } else { drag_type = DRAG_TYPE_PAN; drag_last_pos = mb->get_position(); diff --git a/editor/plugins/tiles/tiles_editor_plugin.cpp b/editor/plugins/tiles/tiles_editor_plugin.cpp index e7bf812a6c..fb31ace2e0 100644 --- a/editor/plugins/tiles/tiles_editor_plugin.cpp +++ b/editor/plugins/tiles/tiles_editor_plugin.cpp @@ -69,9 +69,6 @@ void TilesEditorUtils::_thread_func(void *ud) { } void TilesEditorUtils::_thread() { - CallQueue queue; - MessageQueue::set_thread_singleton_override(&queue); - pattern_thread_exited.clear(); while (!pattern_thread_exit.is_set()) { pattern_preview_sem.wait(); @@ -131,8 +128,6 @@ void TilesEditorUtils::_thread() { // Add the viewport at the last moment to avoid rendering too early. callable_mp((Node *)EditorNode::get_singleton(), &Node::add_child).call_deferred(viewport, false, Node::INTERNAL_MODE_DISABLED); - MessageQueue::get_singleton()->flush(); - RS::get_singleton()->connect(SNAME("frame_pre_draw"), callable_mp(const_cast<TilesEditorUtils *>(this), &TilesEditorUtils::_preview_frame_started), Object::CONNECT_ONE_SHOT); pattern_preview_done.wait(); @@ -145,11 +140,7 @@ void TilesEditorUtils::_thread() { viewport->queue_free(); } } - - MessageQueue::get_singleton()->flush(); } - - MessageQueue::get_singleton()->flush(); pattern_thread_exited.set(); } diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index 6f7d571792..4187bf5a32 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -38,6 +38,7 @@ #include "core/io/stream_peer_tls.h" #include "core/os/keyboard.h" #include "core/os/os.h" +#include "core/os/time.h" #include "core/version.h" #include "editor/editor_about.h" #include "editor/editor_settings.h" @@ -1350,7 +1351,13 @@ ProjectManager::ProjectManager() { // Fade the version label to be less prominent, but still readable. version_btn->set_self_modulate(Color(1, 1, 1, 0.6)); version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER); - version_btn->set_tooltip_text(TTR("Click to copy the version information.")); + String build_date; + if (VERSION_TIMESTAMP > 0) { + build_date = Time::get_singleton()->get_datetime_string_from_unix_time(VERSION_TIMESTAMP, true) + " UTC"; + } else { + build_date = TTR("(unknown)"); + } + version_btn->set_tooltip_text(vformat(TTR("Git commit date: %s\nClick to copy the version information."), build_date)); version_btn->connect("pressed", callable_mp(this, &ProjectManager::_version_button_pressed)); footer_bar->add_child(version_btn); } |
