Skip to content

Commit 218be81

Browse files
authored
fix WorldScape3DGradientOperationBuilder (#1421)
* fix WorldScape3DGradientOperationBuilder * ensure picked points are cleared if automatic operation took place * adjust coincident gradient points criterium
1 parent 71c3400 commit 218be81

5 files changed

Lines changed: 10 additions & 5 deletions

File tree

‎modules/worldscape_3d/editor/ui/worldscape_3d_operations.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#include <cassert>
4242

4343
MultiPicker *WorldScape3DGradientOperationBuilder::get_point_picker() const {
44-
return Object::cast_to<MultiPicker>(_tool_settings->convert_setting("gradient_points"));
44+
return Object::cast_to<MultiPicker>(_tool_settings->get_setting("gradient_points"));
4545
}
4646

4747
real_t WorldScape3DGradientOperationBuilder::get_brush_size() const {

‎modules/worldscape_3d/editor/ui/worldscape_3d_tools.cpp‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,10 @@ void WorldScape3DToolSettings::add_setting(const Dictionary &setting) {
395395
list->add_child(container, true);
396396
}
397397

398+
Variant WorldScape3DToolSettings::get_setting(const String &setting) const {
399+
return _settings[setting];
400+
}
401+
398402
Variant WorldScape3DToolSettings::convert_setting(const String &setting) const {
399403
Variant obj = _settings[setting];
400404
if (obj.is_null()) {

‎modules/worldscape_3d/editor/ui/worldscape_3d_tools.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ class WorldScape3DToolSettings : public PanelContainer {
9999
VBoxContainer *color_list() const { return _color_list; }
100100

101101
Variant convert_setting(const String &setting) const;
102+
Variant get_setting(const String &setting) const;
102103
void set_setting(const String &setting, Variant value);
103104
void show_settings(const PackedStringArray &settings);
104105
void on_setting_changed(Variant setting = {});

‎modules/worldscape_3d/editor/ui/worldscape_3d_ui.cpp‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,9 @@ void WorldScape3DUI::update_decal() {
529529
}
530530
}
531531

532+
editor_decal_visible.set(1, false);
533+
editor_decal_visible.set(2, false);
534+
532535
if (_active_operation == WorldScape3DEditor::Operation::GRADIENT && _brush_data.has("gradient_points")) {
533536
if (auto points = static_cast<PackedVector3Array>(_brush_data["gradient_points"]); points.size() == 2) {
534537
auto point1 = points[0];
@@ -546,9 +549,6 @@ void WorldScape3DUI::update_decal() {
546549
editor_decal_position.set(2, Vector2{ point2.x, point2.z });
547550
}
548551
}
549-
} else {
550-
editor_decal_visible.set(1, false);
551-
editor_decal_visible.set(2, false);
552552
}
553553

554554
editor_decal_color.set(0, color);

‎modules/worldscape_3d/editor/worldscape_3d_editor.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void WorldScape3DEditor::_operate_map(const Vector3 &p_global_position, const re
145145
// The slope tool must not be used until both points have been picked
146146
PackedVector3Array gradient_points = _brush_data["gradient_points"];
147147
if (map_type == TYPE_HEIGHT && _operation == GRADIENT) {
148-
if (gradient_points[0].is_equal_approx(gradient_points[1])) {
148+
if (gradient_points[0].distance_squared_to(gradient_points[1]) < 0.125f) {
149149
LOG(ERROR, "The slope tool requires two distinct points to be picked");
150150
return;
151151
}

0 commit comments

Comments
 (0)