diff --git a/modules/worldscape_3d/editor/ui/worldscape_3d_operations.cpp b/modules/worldscape_3d/editor/ui/worldscape_3d_operations.cpp index 4d670b7a101..d4c62c411b7 100644 --- a/modules/worldscape_3d/editor/ui/worldscape_3d_operations.cpp +++ b/modules/worldscape_3d/editor/ui/worldscape_3d_operations.cpp @@ -41,7 +41,7 @@ #include MultiPicker *WorldScape3DGradientOperationBuilder::get_point_picker() const { - return Object::cast_to(_tool_settings->convert_setting("gradient_points")); + return Object::cast_to(_tool_settings->get_setting("gradient_points")); } real_t WorldScape3DGradientOperationBuilder::get_brush_size() const { diff --git a/modules/worldscape_3d/editor/ui/worldscape_3d_tools.cpp b/modules/worldscape_3d/editor/ui/worldscape_3d_tools.cpp index 00fecf84e56..de2cbb4b8ad 100644 --- a/modules/worldscape_3d/editor/ui/worldscape_3d_tools.cpp +++ b/modules/worldscape_3d/editor/ui/worldscape_3d_tools.cpp @@ -395,6 +395,10 @@ void WorldScape3DToolSettings::add_setting(const Dictionary &setting) { list->add_child(container, true); } +Variant WorldScape3DToolSettings::get_setting(const String &setting) const { + return _settings[setting]; +} + Variant WorldScape3DToolSettings::convert_setting(const String &setting) const { Variant obj = _settings[setting]; if (obj.is_null()) { diff --git a/modules/worldscape_3d/editor/ui/worldscape_3d_tools.h b/modules/worldscape_3d/editor/ui/worldscape_3d_tools.h index 047eb266510..9d32b141ec7 100644 --- a/modules/worldscape_3d/editor/ui/worldscape_3d_tools.h +++ b/modules/worldscape_3d/editor/ui/worldscape_3d_tools.h @@ -99,6 +99,7 @@ class WorldScape3DToolSettings : public PanelContainer { VBoxContainer *color_list() const { return _color_list; } Variant convert_setting(const String &setting) const; + Variant get_setting(const String &setting) const; void set_setting(const String &setting, Variant value); void show_settings(const PackedStringArray &settings); void on_setting_changed(Variant setting = {}); diff --git a/modules/worldscape_3d/editor/ui/worldscape_3d_ui.cpp b/modules/worldscape_3d/editor/ui/worldscape_3d_ui.cpp index 201451c1000..5dae2757330 100644 --- a/modules/worldscape_3d/editor/ui/worldscape_3d_ui.cpp +++ b/modules/worldscape_3d/editor/ui/worldscape_3d_ui.cpp @@ -529,6 +529,9 @@ void WorldScape3DUI::update_decal() { } } + editor_decal_visible.set(1, false); + editor_decal_visible.set(2, false); + if (_active_operation == WorldScape3DEditor::Operation::GRADIENT && _brush_data.has("gradient_points")) { if (auto points = static_cast(_brush_data["gradient_points"]); points.size() == 2) { auto point1 = points[0]; @@ -546,9 +549,6 @@ void WorldScape3DUI::update_decal() { editor_decal_position.set(2, Vector2{ point2.x, point2.z }); } } - } else { - editor_decal_visible.set(1, false); - editor_decal_visible.set(2, false); } editor_decal_color.set(0, color); diff --git a/modules/worldscape_3d/editor/worldscape_3d_editor.cpp b/modules/worldscape_3d/editor/worldscape_3d_editor.cpp index 8b304d9d242..66716c9e98a 100644 --- a/modules/worldscape_3d/editor/worldscape_3d_editor.cpp +++ b/modules/worldscape_3d/editor/worldscape_3d_editor.cpp @@ -145,7 +145,7 @@ void WorldScape3DEditor::_operate_map(const Vector3 &p_global_position, const re // The slope tool must not be used until both points have been picked PackedVector3Array gradient_points = _brush_data["gradient_points"]; if (map_type == TYPE_HEIGHT && _operation == GRADIENT) { - if (gradient_points[0].is_equal_approx(gradient_points[1])) { + if (gradient_points[0].distance_squared_to(gradient_points[1]) < 0.125f) { LOG(ERROR, "The slope tool requires two distinct points to be picked"); return; }