From 0fd99be95ac0ab2fc843321e783759853147e46e Mon Sep 17 00:00:00 2001 From: Relintai Date: Tue, 4 Feb 2025 14:17:43 +0100 Subject: [PATCH] Added a strength slider for the isolevel brush in TerrainWorldEditor. --- .../terraman/world/terrain_world_editor.cpp | 19 +++++++++++++++++++ modules/terraman/world/terrain_world_editor.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/modules/terraman/world/terrain_world_editor.cpp b/modules/terraman/world/terrain_world_editor.cpp index 2b948e680..7e4460c96 100644 --- a/modules/terraman/world/terrain_world_editor.cpp +++ b/modules/terraman/world/terrain_world_editor.cpp @@ -268,6 +268,7 @@ TerrainWorldEditor::TerrainWorldEditor() { _isolevel_brush_channel = -1; _isolevel_brush_size = 10; + _isolevel_brush_strength = 25; _isolevel_brush_smoothness = 10; //_brush_type = BRUSH_TYPE_CIRCLE; _isolevel_brush_type = ISOLEVEL_BRUSH_TYPE_ADD; @@ -288,6 +289,7 @@ TerrainWorldEditor::TerrainWorldEditor(EditorNode *p_editor) { _isolevel_brush_channel = -1; _isolevel_brush_size = 10; + _isolevel_brush_strength = 25; _isolevel_brush_smoothness = 10; //_brush_type = BRUSH_TYPE_CIRCLE; _isolevel_brush_type = ISOLEVEL_BRUSH_TYPE_ADD; @@ -448,6 +450,19 @@ TerrainWorldEditor::TerrainWorldEditor(EditorNode *p_editor) { _isolevel_brush_size_slider->connect("value_changed", this, "_on_isolevel_brush_size_slider_changed"); _isolevel_brush_tool_container->add_child(_isolevel_brush_size_slider); + Label *isolevel_brush_strength_label = memnew(Label); + isolevel_brush_strength_label->set_text(TTR("Strength")); + _isolevel_brush_tool_container->add_child(isolevel_brush_strength_label); + + _isolevel_brush_strength_slider = memnew(HSlider); + _isolevel_brush_strength_slider->set_min(0); + _isolevel_brush_strength_slider->set_max(100); + _isolevel_brush_strength_slider->set_value(_isolevel_brush_strength); + _isolevel_brush_strength_slider->set_v_size_flags(SIZE_EXPAND_FILL); + _isolevel_brush_strength_slider->set_tooltip(TTR("Brush Strength")); + _isolevel_brush_strength_slider->connect("value_changed", this, "_on_isolevel_brush_strength_slider_changed"); + _isolevel_brush_tool_container->add_child(_isolevel_brush_strength_slider); + Label *isolevel_brush_smoothness_label = memnew(Label); isolevel_brush_smoothness_label->set_text(TTR("Smoothness")); _isolevel_brush_tool_container->add_child(isolevel_brush_smoothness_label); @@ -619,6 +634,9 @@ void TerrainWorldEditor::_on_isolevel_brush_tool_button_pressed() { void TerrainWorldEditor::_on_isolevel_brush_size_slider_changed(float value) { _isolevel_brush_size = value; } +void TerrainWorldEditor::_on_isolevel_brush_strength_slider_changed(float value) { + _isolevel_brush_strength = value; +} void TerrainWorldEditor::_on_isolevel_brush_smoothness_slider_changed(float value) { _isolevel_brush_smoothness = value; } @@ -639,6 +657,7 @@ void TerrainWorldEditor::_bind_methods() { ClassDB::bind_method("_on_add_remove_isolevel_slider_value_changed", &TerrainWorldEditor::_on_add_remove_isolevel_slider_value_changed); ClassDB::bind_method("_on_isolevel_brush_tool_button_pressed", &TerrainWorldEditor::_on_isolevel_brush_tool_button_pressed); ClassDB::bind_method("_on_isolevel_brush_size_slider_changed", &TerrainWorldEditor::_on_isolevel_brush_size_slider_changed); + ClassDB::bind_method("_on_isolevel_brush_strength_slider_changed", &TerrainWorldEditor::_on_isolevel_brush_strength_slider_changed); ClassDB::bind_method("_on_isolevel_brush_smoothness_slider_changed", &TerrainWorldEditor::_on_isolevel_brush_smoothness_slider_changed); ClassDB::bind_method("_on_isolevel_brush_channel_select_sb_changed", &TerrainWorldEditor::_on_isolevel_brush_channel_select_sb_changed); ClassDB::bind_method("_on_isolevel_brush_allow_creating_chunks_selected", &TerrainWorldEditor::_on_isolevel_brush_allow_creating_chunks_selected); diff --git a/modules/terraman/world/terrain_world_editor.h b/modules/terraman/world/terrain_world_editor.h index 7355528f3..a3330a947 100644 --- a/modules/terraman/world/terrain_world_editor.h +++ b/modules/terraman/world/terrain_world_editor.h @@ -79,6 +79,7 @@ protected: void _on_add_remove_isolevel_slider_value_changed(float value); void _on_isolevel_brush_tool_button_pressed(); void _on_isolevel_brush_size_slider_changed(float value); + void _on_isolevel_brush_strength_slider_changed(float value); void _on_isolevel_brush_smoothness_slider_changed(float value); void _on_isolevel_brush_channel_select_sb_changed(int value); void _on_isolevel_brush_allow_creating_chunks_selected(); @@ -104,6 +105,7 @@ private: int _isolevel_brush_channel; float _isolevel_brush_size; + float _isolevel_brush_strength; float _isolevel_brush_smoothness; //BrushType _brush_type; IsolevelBrushType _isolevel_brush_type; @@ -146,6 +148,7 @@ private: ToolButton *_isolevel_brush_type_smooth_button; ToolButton *_isolevel_brush_allow_creating_chunks_button; HSlider *_isolevel_brush_size_slider; + HSlider *_isolevel_brush_strength_slider; HSlider *_isolevel_brush_smoothness_slider; SpinBox *_isolevel_brush_channel_select_sb;