1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-03-14 15:25:17 +00:00

Fix selection transformations not respecting transformed tiles in tilemap cels when draw tiles mode is active

This commit is contained in:
Emmanouil Papadeas 2025-03-08 00:59:37 +02:00
parent 50a7767e47
commit 7f047e8894
2 changed files with 13 additions and 3 deletions

View file

@ -259,7 +259,12 @@ func _resize_rows(
## Applies the [param selected_cells] data to [param target_image] data.
## The target image needs to be resized first.
## This method is used when resizing a selection and draw tiles mode is enabled.
func apply_resizing_to_image(target_image: Image, selected_cells: Array[Array]) -> void:
func apply_resizing_to_image(
target_image: Image,
selected_cells: Array[Array],
selection_rect: Rect2i,
transform_confirmed: bool
) -> void:
for x in selected_cells.size():
for y in selected_cells[x].size():
var coords := Vector2i(x, y) * tileset.tile_size
@ -279,6 +284,9 @@ func apply_resizing_to_image(target_image: Image, selected_cells: Array[Array])
target_image.blit_rect(transformed_tile, Rect2i(Vector2i.ZERO, tile_size), coords)
if target_image is ImageExtended:
target_image.convert_rgb_to_indexed()
if transform_confirmed:
var cell_coords := Vector2i(x, y) + (selection_rect.position / tileset.tile_size)
get_cell_at(cell_coords).deserialize(cell_data.serialize())
## Appends data to a [Dictionary] to be used for undo/redo.

View file

@ -420,7 +420,9 @@ func resize_selection() -> void:
original_selected_tilemap_cells, horizontal_size, vertical_size
)
preview_image.crop(size.x, size.y)
tilemap.apply_resizing_to_image(preview_image, selected_cells)
tilemap.apply_resizing_to_image(
preview_image, selected_cells, big_bounding_rectangle, false
)
else:
var params := {"transformation_matrix": transformation_matrix, "pivot": content_pivot}
preview_image.resize(size.x, size.y, Image.INTERPOLATE_NEAREST)
@ -585,7 +587,7 @@ func transform_content_confirm() -> void:
original_selected_tilemap_cells, horizontal_size, vertical_size
)
src.crop(preview_image.get_width(), preview_image.get_height())
tilemap.apply_resizing_to_image(src, selected_cells)
tilemap.apply_resizing_to_image(src, selected_cells, big_bounding_rectangle, true)
else:
var transformation_matrix := Transform2D(angle, Vector2.ZERO)
var params := {