Created a new Cel class, to handle cel information

Like the Layer class, it is used in place of Canvas.layers nested array mess. It hasn't been tested thoroughly yet, so there may be crashes.
This commit is contained in:
OverloadedOrama 2020-06-01 18:50:31 +03:00
parent f246ed1a7a
commit df0032c515
15 changed files with 108 additions and 110 deletions

View file

@ -499,7 +499,7 @@ func canvases_changed(value : Array) -> void:
var cel_button = load("res://src/UI/Timeline/CelButton.tscn").instance()
cel_button.frame = j
cel_button.layer = i
cel_button.get_child(0).texture = Global.canvases[j].layers[i][1]
cel_button.get_child(0).texture = Global.canvases[j].layers[i].image_texture
layers[i].frame_container.add_child(cel_button)
@ -566,7 +566,7 @@ func layers_changed(value : Array) -> void:
var cel_button = load("res://src/UI/Timeline/CelButton.tscn").instance()
cel_button.frame = j
cel_button.layer = i
cel_button.get_child(0).texture = Global.canvases[j].layers[i][1]
cel_button.get_child(0).texture = Global.canvases[j].layers[i].image_texture
layers[i].frame_container.add_child(cel_button)
@ -621,8 +621,8 @@ func frame_changed(value : int) -> void:
func layer_changed(value : int) -> void:
current_layer = value
layer_opacity_slider.value = canvas.layers[current_layer][2] * 100
layer_opacity_spinbox.value = canvas.layers[current_layer][2] * 100
layer_opacity_slider.value = canvas.layers[current_layer].opacity * 100
layer_opacity_spinbox.value = canvas.layers[current_layer].opacity * 100
for container in layers_container.get_children():
container.pressed = false

View file

@ -87,9 +87,7 @@ func open_pxo_file(path : String, untitled_backup : bool = false) -> void:
var image := Image.new()
image.create_from_data(width, height, false, Image.FORMAT_RGBA8, buffer)
image.lock()
var tex := ImageTexture.new()
tex.create_from_image(image, 0)
canvas.layers.append([image, tex, layer_transparency])
canvas.layers.append(Cel.new(image, layer_transparency))
if file_major_version >= 0 and file_minor_version >= 7:
if frame in linked_cels[layer_i]:
Global.layers[layer_i].linked_cels.append(canvas)
@ -201,8 +199,8 @@ func save_pxo_file(path : String, autosave : bool) -> void:
file.store_16(canvas.size.y)
for layer in canvas.layers: # Store canvas layers
file.store_line("-")
file.store_buffer(layer[0].get_data())
file.store_float(layer[2]) # Layer transparency
file.store_buffer(layer.image.get_data())
file.store_float(layer.opacity)
file.store_line("END_LAYERS")
# Store guides