1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-07 19:09:50 +00:00

Resize indices on project resize

This commit is contained in:
Emmanouil Papadeas 2024-11-25 02:05:49 +02:00
parent 33b76d334f
commit ca5c6d811e
3 changed files with 18 additions and 5 deletions

View file

@ -980,14 +980,18 @@ func undo_or_redo(
]
):
if layer_index > -1 and frame_index > -1:
canvas.update_texture(layer_index, frame_index, project)
var cel := project.frames[frame_index].cels[layer_index]
if action_name == "Scale":
cel.size_changed(project.size)
canvas.update_texture(layer_index, frame_index, project)
cel.on_undo_redo(undo)
else:
for i in project.frames.size():
for j in project.layers.size():
canvas.update_texture(j, i, project)
var cel := project.frames[i].cels[j]
if action_name == "Scale":
cel.size_changed(project.size)
canvas.update_texture(j, i, project)
cel.on_undo_redo(undo)
canvas.selection.queue_redraw()
@ -995,9 +999,7 @@ func undo_or_redo(
for i in project.frames.size():
for j in project.layers.size():
var current_cel := project.frames[i].cels[j]
if current_cel is Cel3D:
current_cel.size_changed(project.size)
else:
if current_cel is not Cel3D:
current_cel.image_texture.set_image(current_cel.get_image())
canvas.camera_zoom()
canvas.grid.queue_redraw()

View file

@ -96,6 +96,10 @@ func deserialize(dict: Dictionary) -> void:
user_data = dict.get("user_data", user_data)
func size_changed(_new_size: Vector2i) -> void:
pass
## Used to perform cleanup after a cel is removed.
func on_remove() -> void:
pass

View file

@ -238,6 +238,13 @@ func update_texture() -> void:
super.update_texture()
func size_changed(new_size: Vector2i) -> void:
indices_x = ceili(float(new_size.x) / tileset.tile_size.x)
indices_y = ceili(float(new_size.y) / tileset.tile_size.y)
indices.resize(indices_x * indices_y)
re_index_all_tiles()
func on_undo_redo(undo: bool) -> void:
update_tileset(undo)