mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-12 22:35:18 +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:
parent
3df9853dda
commit
a2893e1c1c
7 changed files with 28 additions and 25 deletions
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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":
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Add table
Reference in a new issue