@@ -50,6 +50,23 @@ TileMapLayer *TileMapLayerSubEditorPlugin::_get_edited_layer() const {
5050 return Object::cast_to<TileMapLayer>(ObjectDB::get_instance (edited_tile_map_layer_id));
5151}
5252
53+ void TileMapLayerSubEditorPlugin::draw_tile_coords_over_viewport (Control *p_overlay, const TileMapLayer *p_edited_layer, Ref<TileSet> p_tile_set, bool p_show_rectangle_size, const Vector2i &p_rectangle_origin) {
54+ Point2 msgpos = Point2 (20 * EDSCALE, p_overlay->get_size ().y - 20 * EDSCALE);
55+ String text = p_tile_set->local_to_map (p_edited_layer->get_local_mouse_position ());
56+
57+ if (p_show_rectangle_size) {
58+ Vector2i rect_size = p_tile_set->local_to_map (p_edited_layer->get_local_mouse_position ()) - p_tile_set->local_to_map (p_rectangle_origin);
59+ text += vformat (" %s (%dx%d)" , TTR (" Drawing Rect:" ), Math::abs (rect_size.x ) + 1 , Math::abs (rect_size.y ) + 1 );
60+ }
61+
62+ Ref<Font> font = p_overlay->get_theme_font (SceneStringName (font), SNAME (" Label" ));
63+ int font_size = p_overlay->get_theme_font_size (SceneStringName (font_size), SNAME (" Label" ));
64+
65+ p_overlay->draw_string (font, msgpos + Point2 (1 , 1 ), text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (0 , 0 , 0 , 0.8 ));
66+ p_overlay->draw_string (font, msgpos + Point2 (-1 , -1 ), text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (0 , 0 , 0 , 0.8 ));
67+ p_overlay->draw_string (font, msgpos, text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (1 , 1 , 1 , 1 ));
68+ }
69+
5370void TileMapLayerEditorTilesPlugin::tile_set_changed () {
5471 _update_fix_selected_and_hovered ();
5572 _update_tile_set_sources_list ();
@@ -66,7 +83,7 @@ void TileMapLayerEditorTilesPlugin::_on_scattering_spinbox_changed(double p_valu
6683}
6784
6885void TileMapLayerEditorTilesPlugin::_update_toolbar () {
69- // Stop draggig if needed.
86+ // Stop dragging if needed.
7087 _stop_dragging ();
7188
7289 // Hide all settings.
@@ -783,7 +800,7 @@ bool TileMapLayerEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEven
783800}
784801
785802void TileMapLayerEditorTilesPlugin::forward_canvas_draw_over_viewport (Control *p_overlay) {
786- TileMapLayer *edited_layer = _get_edited_layer ();
803+ const TileMapLayer *edited_layer = _get_edited_layer ();
787804 if (!edited_layer) {
788805 return ;
789806 }
@@ -1000,19 +1017,7 @@ void TileMapLayerEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p
10001017 }
10011018 }
10021019
1003- Ref<Font> font = p_overlay->get_theme_font (SceneStringName (font), SNAME (" Label" ));
1004- int font_size = p_overlay->get_theme_font_size (SceneStringName (font_size), SNAME (" Label" ));
1005- Point2 msgpos = Point2 (20 * EDSCALE, p_overlay->get_size ().y - 20 * EDSCALE);
1006-
1007- String text = tile_set->local_to_map (edited_layer->get_local_mouse_position ());
1008- if (drawing_rect) {
1009- Vector2i size = tile_set->local_to_map (edited_layer->get_local_mouse_position ()) - tile_set->local_to_map (drag_start_mouse_pos);
1010- text += vformat (" %s (%dx%d)" , TTR (" Drawing Rect:" ), Math::abs (size.x ) + 1 , Math::abs (size.y ) + 1 );
1011- }
1012-
1013- p_overlay->draw_string (font, msgpos + Point2 (1 , 1 ), text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (0 , 0 , 0 , 0.8 ));
1014- p_overlay->draw_string (font, msgpos + Point2 (-1 , -1 ), text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (0 , 0 , 0 , 0.8 ));
1015- p_overlay->draw_string (font, msgpos, text, HORIZONTAL_ALIGNMENT_LEFT, -1 , font_size, Color (1 , 1 , 1 , 1 ));
1020+ draw_tile_coords_over_viewport (p_overlay, edited_layer, tile_set, drawing_rect, drag_start_mouse_pos);
10161021 }
10171022}
10181023
@@ -3168,6 +3173,7 @@ void TileMapLayerEditorTerrainsPlugin::forward_canvas_draw_over_viewport(Control
31683173 Transform2D xform = CanvasItemEditor::get_singleton ()->get_canvas_transform () * edited_layer->get_global_transform_with_canvas ();
31693174 Vector2 mpos = edited_layer->get_local_mouse_position ();
31703175 Vector2i tile_shape_size = tile_set->get_tile_size ();
3176+ bool drawing_rect = false ;
31713177
31723178 // Handle the preview of the tiles to be placed.
31733179 if (main_vbox_container->is_visible_in_tree () && has_mouse) { // Only if the tilemap editor is opened and the viewport is hovered.
@@ -3214,6 +3220,8 @@ void TileMapLayerEditorTerrainsPlugin::forward_canvas_draw_over_viewport(Control
32143220 preview.insert (Vector2i (x, y));
32153221 }
32163222 }
3223+
3224+ drawing_rect = !preview.is_empty ();
32173225 expand_grid = true ;
32183226 } else if (tool_buttons_group->get_pressed_button () == bucket_tool_button && drag_type == DRAG_TYPE_NONE) {
32193227 // Preview for a fill.
@@ -3272,6 +3280,8 @@ void TileMapLayerEditorTerrainsPlugin::forward_canvas_draw_over_viewport(Control
32723280 }
32733281 }
32743282 }
3283+
3284+ draw_tile_coords_over_viewport (p_overlay, edited_layer, tile_set, drawing_rect, drag_start_mouse_pos);
32753285 }
32763286}
32773287
0 commit comments