diff options
| -rw-r--r-- | editor/icons/RandomNumberGenerator.svg | 1 | ||||
| -rw-r--r-- | editor/plugins/tiles/tile_map_editor.cpp | 30 | ||||
| -rw-r--r-- | editor/plugins/tiles/tile_map_editor.h | 2 | 
3 files changed, 18 insertions, 15 deletions
| diff --git a/editor/icons/RandomNumberGenerator.svg b/editor/icons/RandomNumberGenerator.svg new file mode 100644 index 0000000000..214a7452ed --- /dev/null +++ b/editor/icons/RandomNumberGenerator.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m8.0000004 0c-7.63857653 0-8.0000004.36172395-8.0000004 8.0066027 0 7.6431663.32714821 7.9720723 7.9277171 7.9929163 3.4504629.00951 5.0807119-.12114 5.9272279-.475116 1.794714-.750503 2.145055-1.974798 2.145055-7.5178003 0-7.64487875-.361425-8.0066027-7.9999996-8.0066027zm-4.0341882 2.0158259c1.7899451 0 2.786201 2.0256492 1.6859585 3.4255356-.8444948 1.0744791-2.3331923 1.1725336-3.2879122.2170288-1.3527384-1.3538547-.3466043-3.6425644 1.6019537-3.6425644zm4.0869355 3.7383699c1.7899399 0 2.7862023 2.0236959 1.6859586 3.4235804-.8444989 1.0745018-2.3331926 1.1744878-3.2879123.218984-1.3527384-1.3538549-.3466055-3.6425644 1.6019537-3.6425644zm4.0615383 3.9690852c1.09547.036419 2.143101.848375 2.143101 2.113587 0 1.788519-2.569649 2.876024-3.713797 1.571993-.9034489-1.029694-.9772793-1.902694-.23834-2.842882.476145-.6058151 1.151756-.8645864 1.809036-.842698z" fill="#fff" stroke-width=".256504"/></svg> diff --git a/editor/plugins/tiles/tile_map_editor.cpp b/editor/plugins/tiles/tile_map_editor.cpp index c1a95c11f6..ba87eba9e0 100644 --- a/editor/plugins/tiles/tile_map_editor.cpp +++ b/editor/plugins/tiles/tile_map_editor.cpp @@ -76,7 +76,7 @@ void TileMapEditorTilesPlugin::_update_toolbar() {  		picker_button->show();  		erase_button->show();  		tools_settings_vsep_2->show(); -		random_tile_checkbox->show(); +		random_tile_toggle->show();  		scatter_label->show();  		scatter_spinbox->show();  	} else if (tool_buttons_group->get_pressed_button() == line_tool_button) { @@ -84,7 +84,7 @@ void TileMapEditorTilesPlugin::_update_toolbar() {  		picker_button->show();  		erase_button->show();  		tools_settings_vsep_2->show(); -		random_tile_checkbox->show(); +		random_tile_toggle->show();  		scatter_label->show();  		scatter_spinbox->show();  	} else if (tool_buttons_group->get_pressed_button() == rect_tool_button) { @@ -92,7 +92,7 @@ void TileMapEditorTilesPlugin::_update_toolbar() {  		picker_button->show();  		erase_button->show();  		tools_settings_vsep_2->show(); -		random_tile_checkbox->show(); +		random_tile_toggle->show();  		scatter_label->show();  		scatter_spinbox->show();  	} else if (tool_buttons_group->get_pressed_button() == bucket_tool_button) { @@ -101,7 +101,7 @@ void TileMapEditorTilesPlugin::_update_toolbar() {  		erase_button->show();  		tools_settings_vsep_2->show();  		bucket_contiguous_checkbox->show(); -		random_tile_checkbox->show(); +		random_tile_toggle->show();  		scatter_label->show();  		scatter_spinbox->show();  	} @@ -461,6 +461,7 @@ void TileMapEditorTilesPlugin::_update_theme() {  	picker_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("ColorPick"), SNAME("EditorIcons")));  	erase_button->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("Eraser"), SNAME("EditorIcons"))); +	random_tile_toggle->set_icon(tiles_bottom_panel->get_theme_icon(SNAME("RandomNumberGenerator"), SNAME("EditorIcons")));  	missing_atlas_texture_icon = tiles_bottom_panel->get_theme_icon(SNAME("TileSet"), SNAME("EditorIcons"));  } @@ -870,7 +871,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over  				Transform2D tile_xform;  				tile_xform.set_origin(tile_map->map_to_world(E.key));  				tile_xform.set_scale(tile_set->get_tile_size()); -				if (!(drag_erasing || erase_button->is_pressed()) && random_tile_checkbox->is_pressed()) { +				if (!(drag_erasing || erase_button->is_pressed()) && random_tile_toggle->is_pressed()) {  					tile_set->draw_tile_shape(p_overlay, xform * tile_xform, Color(1.0, 1.0, 1.0, 0.5), true);  				} else {  					if (tile_set->has_source(E.value.source_id)) { @@ -1001,7 +1002,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_line(Vector2 p_start_  	Map<Vector2i, TileMapCell> output;  	if (!pattern->is_empty()) {  		// Paint the tiles on the tile map. -		if (!p_erase && random_tile_checkbox->is_pressed()) { +		if (!p_erase && random_tile_toggle->is_pressed()) {  			// Paint a random tile.  			Vector<Vector2i> line = TileMapEditor::get_line(tile_map, tile_map->world_to_map(p_from_mouse_pos), tile_map->world_to_map(p_to_mouse_pos));  			for (int i = 0; i < line.size(); i++) { @@ -1061,7 +1062,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_rect(Vector2i p_start  	Map<Vector2i, TileMapCell> output;  	if (!pattern->is_empty()) { -		if (!p_erase && random_tile_checkbox->is_pressed()) { +		if (!p_erase && random_tile_toggle->is_pressed()) {  			// Paint a random tile.  			for (int x = 0; x < rect.size.x; x++) {  				for (int y = 0; y < rect.size.y; y++) { @@ -1134,7 +1135,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i  							source_cell.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&  							source_cell.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&  							(source_cell.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) { -						if (!p_erase && random_tile_checkbox->is_pressed()) { +						if (!p_erase && random_tile_toggle->is_pressed()) {  							// Paint a random tile.  							output.insert(coords, _pick_random_tile(pattern));  						} else { @@ -1180,7 +1181,7 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i  						source_cell.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&  						source_cell.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&  						(source_cell.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) { -					if (!p_erase && random_tile_checkbox->is_pressed()) { +					if (!p_erase && random_tile_toggle->is_pressed()) {  						// Paint a random tile.  						output.insert(coords, _pick_random_tile(pattern));  					} else { @@ -2103,11 +2104,12 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {  	tools_settings->add_child(bucket_contiguous_checkbox);  	// Random tile checkbox. -	random_tile_checkbox = memnew(CheckBox); -	random_tile_checkbox->set_flat(true); -	random_tile_checkbox->set_text(TTR("Place Random Tile")); -	random_tile_checkbox->connect("toggled", callable_mp(this, &TileMapEditorTilesPlugin::_on_random_tile_checkbox_toggled)); -	tools_settings->add_child(random_tile_checkbox); +	random_tile_toggle = memnew(Button); +	random_tile_toggle->set_flat(true); +	random_tile_toggle->set_toggle_mode(true); +	random_tile_toggle->set_tooltip(TTR("Place Random Tile")); +	random_tile_toggle->connect("toggled", callable_mp(this, &TileMapEditorTilesPlugin::_on_random_tile_checkbox_toggled)); +	tools_settings->add_child(random_tile_toggle);  	// Random tile scattering.  	scatter_label = memnew(Label); diff --git a/editor/plugins/tiles/tile_map_editor.h b/editor/plugins/tiles/tile_map_editor.h index 3a0293f48f..ec32c83d10 100644 --- a/editor/plugins/tiles/tile_map_editor.h +++ b/editor/plugins/tiles/tile_map_editor.h @@ -92,7 +92,7 @@ private:  	VSeparator *tools_settings_vsep_2 = nullptr;  	CheckBox *bucket_contiguous_checkbox = nullptr; -	CheckBox *random_tile_checkbox = nullptr; +	Button *random_tile_toggle = nullptr;  	float scattering = 0.0;  	Label *scatter_label = nullptr;  	SpinBox *scatter_spinbox = nullptr; |