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:
parent
65e907e1d2
commit
d41037d2df
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue