Merge pull request #76152 from timothyqiu/tile-resize-clamp
Fix tile resizing towards atlas boundary
This commit is contained in:
commit
4fc045e9b5
|
@ -497,19 +497,16 @@ Vector2i TileAtlasView::get_atlas_tile_coords_at_pos(const Vector2 p_pos, bool p
|
|||
Vector2i separation = tile_set_atlas_source->get_separation();
|
||||
Vector2i texture_region_size = tile_set_atlas_source->get_texture_region_size();
|
||||
|
||||
// Compute index in atlas
|
||||
// Compute index in atlas.
|
||||
Vector2 pos = p_pos - margins;
|
||||
Vector2i ret = (pos / (texture_region_size + separation)).floor();
|
||||
|
||||
// Return invalid value (without clamp).
|
||||
Rect2i rect = Rect2(Vector2i(), tile_set_atlas_source->get_atlas_grid_size());
|
||||
if (!p_clamp && !rect.has_point(ret)) {
|
||||
return TileSetSource::INVALID_ATLAS_COORDS;
|
||||
}
|
||||
|
||||
// Clamp.
|
||||
ret.x = CLAMP(ret.x, 0, rect.size.x - 1);
|
||||
ret.y = CLAMP(ret.y, 0, rect.size.y - 1);
|
||||
if (p_clamp) {
|
||||
Vector2i size = tile_set_atlas_source->get_atlas_grid_size();
|
||||
ret.x = CLAMP(ret.x, 0, size.x - 1);
|
||||
ret.y = CLAMP(ret.y, 0, size.y - 1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1031,7 +1031,7 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_gui_input(const Ref<InputEven
|
|||
if (mm.is_valid()) {
|
||||
Vector2i start_base_tiles_coords = tile_atlas_view->get_atlas_tile_coords_at_pos(drag_start_mouse_pos, true);
|
||||
Vector2i last_base_tiles_coords = tile_atlas_view->get_atlas_tile_coords_at_pos(drag_last_mouse_pos, true);
|
||||
Vector2i new_base_tiles_coords = tile_atlas_view->get_atlas_tile_coords_at_pos(tile_atlas_control->get_local_mouse_position(), true);
|
||||
Vector2i new_base_tiles_coords = tile_atlas_view->get_atlas_tile_coords_at_pos(tile_atlas_control->get_local_mouse_position());
|
||||
|
||||
Vector2i grid_size = tile_set_atlas_source->get_atlas_grid_size();
|
||||
|
||||
|
|
Loading…
Reference in New Issue