mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-13 23:05:20 +00:00
Fix selection transformations not respecting transformed tiles in tilemap cels when draw tiles mode is active
This commit is contained in:
parent
50a7767e47
commit
7f047e8894
2 changed files with 13 additions and 3 deletions
|
@ -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.
|
||||
|
|
|
@ -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 := {
|
||||
|
|
Loading…
Add table
Reference in a new issue