1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-03-13 06:45:17 +00:00

Store layer visibility on Global.layers instead

This way, toggling visibility in a layers works for all frames in that layer.
This commit is contained in:
OverloadedOrama 2020-01-19 20:03:32 +02:00
parent 3df9853dda
commit a2893e1c1c
7 changed files with 28 additions and 25 deletions

View file

@ -188,6 +188,7 @@ margin_bottom = 32.0
[node name="Line2D" type="Line2D" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"]
points = PoolVector2Array( 0, 32, 0, 0, 110, 0, 110, 32 )
width = 1.0
texture_mode = 1313163520
[node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"]
margin_right = 110.0

View file

@ -24,7 +24,7 @@ func add_frame() -> void:
Global.undo_redo.add_do_property(Global, "canvas", new_canvas)
Global.undo_redo.add_do_property(Global, "current_frame", new_canvases.size() - 1)
for i in range(Global.layers.size()):
for child in Global.layers[i][1].get_children():
for child in Global.layers[i][2].get_children():
Global.undo_redo.add_do_property(child, "pressed", false)
Global.undo_redo.add_undo_property(child, "pressed", child.pressed)
for c in Global.canvases:
@ -149,15 +149,15 @@ func add_layer(is_new := true) -> void:
new_layer.create(Global.canvas.size.x, Global.canvas.size.y, false, Image.FORMAT_RGBA8)
else: # clone layer
new_layer.copy_from(Global.canvas.layers[Global.current_layer][0])
layer_name = Global.canvas.layers[Global.current_layer][2] + " (" + tr("copy") + ")"
layer_name = Global.layers[Global.current_layer][1] + " (" + tr("copy") + ")"
new_layer.lock()
var new_layer_tex := ImageTexture.new()
new_layer_tex.create_from_image(new_layer, 0)
var new_layers : Array = Global.layers.duplicate()
# Store [layer name, frame container]
new_layers.append([layer_name, HBoxContainer.new()])
# Store [Layer name, Layer visibility boolean, Frame container]
new_layers.append([layer_name, true, HBoxContainer.new()])
Global.undos += 1
Global.undo_redo.create_action("Add Layer")
@ -166,8 +166,8 @@ func add_layer(is_new := true) -> void:
for c in Global.canvases:
var new_canvas_layers : Array = c.layers.duplicate()
# Store [Image, ImageTexture, Visibity boolean, Opacity]
new_canvas_layers.append([new_layer, new_layer_tex, true, 1])
# Store [Image, ImageTexture, Opacity]
new_canvas_layers.append([new_layer, new_layer_tex, 1])
Global.undo_redo.add_do_property(c, "layers", new_canvas_layers)
Global.undo_redo.add_undo_property(c, "layers", c.layers)
@ -236,7 +236,7 @@ func _on_MergeDownLayer_pressed() -> void:
Global.undo_redo.commit_action()
func _on_OpacitySlider_value_changed(value) -> void:
Global.canvas.layers[Global.current_layer][3] = value / 100
Global.canvas.layers[Global.current_layer][2] = value / 100
Global.layer_opacity_slider.value = value
Global.layer_opacity_spinbox.value = value
Global.canvas.update()

View file

@ -55,8 +55,8 @@ func _on_ImportSprites_files_selected(paths : PoolStringArray) -> void:
image.lock()
var tex := ImageTexture.new()
tex.create_from_image(image, 0)
# Store [Image, ImageTexture, Layer Name, Visibity boolean, Opacity]
canvas.layers.append([image, tex, "Layer 0", true, 1])
# Store [Image, ImageTexture, Opacity]
canvas.layers.append([image, tex, 1])
canvas.frame = i
Global.canvases.append(canvas)
Global.canvas_parent.add_child(canvas)

View file

@ -44,13 +44,13 @@ func _on_PopupMenu_id_pressed(ID : int) -> void:
var new_hidden_canvases := Global.hidden_canvases.duplicate()
new_hidden_canvases.append(new_canvas)
for layer in canvas.layers: #Copy every layer
for layer in canvas.layers: # Copy every layer
var sprite := Image.new()
sprite.copy_from(layer[0])
sprite.lock()
var tex := ImageTexture.new()
tex.create_from_image(sprite, 0)
new_canvas.layers.append([sprite, tex, layer[2], layer[3], layer[4]])
new_canvas.layers.append([sprite, tex, layer[2]])
Global.undos += 1
Global.undo_redo.create_action("Add Frame")

View file

@ -373,9 +373,9 @@ func _ready() -> void:
error_dialog = find_node_by_name(root, "ErrorDialog")
# Store [layer name, frame container]
layers.append([tr("Layer") + " 0", HBoxContainer.new()])
frames_container.add_child(layers[0][1])
# Store [Layer name, Layer visibility boolean, Frame container]
layers.append([tr("Layer") + " 0", true, HBoxContainer.new()])
frames_container.add_child(layers[0][2])
# Thanks to https://godotengine.org/qa/17524/how-to-find-an-instanced-scene-by-its-name
func find_node_by_name(root, node_name) -> Node:
@ -457,22 +457,22 @@ func redo(_canvases : Array, layer_index : int = -1) -> void:
c.camera_zoom()
if action_name == "Add Layer":
var layer_container = load("res://Prefabs/LayerContainer.tscn").instance()
_canvases[0].layers[current_layer][2] = tr("Layer") + " %s" % current_layer
layers[current_layer][0] = tr("Layer") + " %s" % current_layer
layer_container.i = current_layer
layer_container.get_child(0).get_child(1).text = _canvases[0].layers[current_layer][2]
layer_container.get_child(0).get_child(2).text = _canvases[0].layers[current_layer][2]
layer_container.get_child(0).get_child(1).text = layers[current_layer][0]
layer_container.get_child(0).get_child(2).text = layers[current_layer][0]
layers_container.add_child(layer_container)
layers_container.move_child(layer_container, 1)
frames_container.add_child(layers[current_layer][1])
frames_container.move_child(layers[current_layer][1], 1)
frames_container.add_child(layers[current_layer][2])
frames_container.move_child(layers[current_layer][2], 1)
for i in range(canvases.size()):
var frame_button = load("res://Prefabs/FrameButton.tscn").instance()
frame_button.frame = i
frame_button.layer = current_layer
frame_button.pressed = true
layers[current_layer][1].add_child(frame_button)
layers[current_layer][2].add_child(frame_button)
# if action_name == "Change Layer Order":

View file

@ -11,7 +11,7 @@ onready var line_edit := $HBoxContainer/LineEdit
func _ready() -> void:
#changed_selection()
if Global.canvas.layers[i][3]:
if Global.layers[i][1]:
visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible.png" % Global.theme_type)
visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible_Hover.png" % Global.theme_type)
else:
@ -76,12 +76,12 @@ func changed_selection() -> void:
child.pressed = false
func _on_VisibilityButton_pressed() -> void:
if Global.canvas.layers[i][3]:
Global.canvas.layers[i][3] = false
if Global.layers[i][1]:
Global.layers[i][1] = false
visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible.png" % Global.theme_type)
visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible_Hover.png" % Global.theme_type)
else:
Global.canvas.layers[i][3] = true
Global.layers[i][1] = true
visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible.png" % Global.theme_type)
visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible_Hover.png" % Global.theme_type)
Global.canvas.update()

View file

@ -163,7 +163,9 @@ func _ready() -> void:
Global.window_title = "(" + tr("untitled") + ") - Pixelorama"
Global.canvas.layers[0][2] = tr("Layer") + " 0"
Global.layers[0][0] = tr("Layer") + " 0"
Global.layers_container.get_child(1).label.text = Global.layers[0][0]
Global.layers_container.get_child(1).line_edit.text = Global.layers[0][0]
Global.canvas.generate_layer_panels()
Import.import_brushes("Brushes")