1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-18 17:19:50 +00:00

Fix tilemap manual editing mode not working with shape & text tools, and fixed issues with the pencil tool

Not the most performance-friendly solution, but it works. If users encounter performance issues in the future, we should rewrite this, as it does the same for loop two times.
This commit is contained in:
Emmanouil Papadeas 2024-12-06 18:06:23 +02:00
parent 65e907e1d2
commit d41037d2df
3 changed files with 17 additions and 6 deletions

View file

@ -656,6 +656,21 @@ func update_texture(undo := false) -> void:
var tile_size := current_tile.image.get_size() var tile_size := current_tile.image.get_size()
image.blit_rect(current_tile.image, Rect2i(Vector2i.ZERO, tile_size), coords) image.blit_rect(current_tile.image, Rect2i(Vector2i.ZERO, tile_size), coords)
continue continue
if not editing_images.has(index):
if not _tiles_equal(i, image_portion, current_tile.image):
var transformed_image := transform_tile(
image_portion, cell_data.flip_h, cell_data.flip_v, cell_data.transpose, true
)
editing_images[index] = [i, transformed_image]
for i in cells.size():
var cell_data := cells[i]
var index := cell_data.index
if index >= tileset.tiles.size():
index = 0
var coords := get_cell_coords_in_image(i)
var rect := Rect2i(coords, tileset.tile_size)
var image_portion := image.get_region(rect)
if editing_images.has(index): if editing_images.has(index):
var editing_portion := editing_images[index][0] as int var editing_portion := editing_images[index][0] as int
if i == editing_portion: if i == editing_portion:
@ -670,12 +685,6 @@ func update_texture(undo := false) -> void:
if not image_portion.get_data() == transformed_editing_image.get_data(): if not image_portion.get_data() == transformed_editing_image.get_data():
var tile_size := image_portion.get_size() var tile_size := image_portion.get_size()
image.blit_rect(transformed_editing_image, Rect2i(Vector2i.ZERO, tile_size), coords) image.blit_rect(transformed_editing_image, Rect2i(Vector2i.ZERO, tile_size), coords)
else:
if not _tiles_equal(i, image_portion, current_tile.image):
var transformed_image := transform_tile(
image_portion, cell_data.flip_h, cell_data.flip_v, cell_data.transpose, true
)
editing_images[index] = [i, transformed_image]
super.update_texture(undo) super.update_texture(undo)

View file

@ -276,6 +276,7 @@ func prepare_undo(action: String) -> void:
func commit_undo() -> void: func commit_undo() -> void:
var project := Global.current_project var project := Global.current_project
Global.canvas.update_selected_cels_textures(project)
project.update_tilemaps(_undo_data) project.update_tilemaps(_undo_data)
var redo_data := _get_undo_data() var redo_data := _get_undo_data()
var frame := -1 var frame := -1

View file

@ -163,6 +163,7 @@ func text_to_pixels() -> void:
func commit_undo(action: String, undo_data: Dictionary) -> void: func commit_undo(action: String, undo_data: Dictionary) -> void:
var project := Global.current_project var project := Global.current_project
Global.canvas.update_selected_cels_textures(project)
project.update_tilemaps(undo_data) project.update_tilemaps(undo_data)
var redo_data := _get_undo_data() var redo_data := _get_undo_data()
var frame := -1 var frame := -1