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"] [node name="Line2D" type="Line2D" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"]
points = PoolVector2Array( 0, 32, 0, 0, 110, 0, 110, 32 ) points = PoolVector2Array( 0, 32, 0, 0, 110, 0, 110, 32 )
width = 1.0 width = 1.0
texture_mode = 1313163520
[node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"] [node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"]
margin_right = 110.0 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, "canvas", new_canvas)
Global.undo_redo.add_do_property(Global, "current_frame", new_canvases.size() - 1) Global.undo_redo.add_do_property(Global, "current_frame", new_canvases.size() - 1)
for i in range(Global.layers.size()): 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_do_property(child, "pressed", false)
Global.undo_redo.add_undo_property(child, "pressed", child.pressed) Global.undo_redo.add_undo_property(child, "pressed", child.pressed)
for c in Global.canvases: 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) new_layer.create(Global.canvas.size.x, Global.canvas.size.y, false, Image.FORMAT_RGBA8)
else: # clone layer else: # clone layer
new_layer.copy_from(Global.canvas.layers[Global.current_layer][0]) 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() new_layer.lock()
var new_layer_tex := ImageTexture.new() var new_layer_tex := ImageTexture.new()
new_layer_tex.create_from_image(new_layer, 0) new_layer_tex.create_from_image(new_layer, 0)
var new_layers : Array = Global.layers.duplicate() var new_layers : Array = Global.layers.duplicate()
# Store [layer name, frame container] # Store [Layer name, Layer visibility boolean, Frame container]
new_layers.append([layer_name, HBoxContainer.new()]) new_layers.append([layer_name, true, HBoxContainer.new()])
Global.undos += 1 Global.undos += 1
Global.undo_redo.create_action("Add Layer") Global.undo_redo.create_action("Add Layer")
@ -166,8 +166,8 @@ func add_layer(is_new := true) -> void:
for c in Global.canvases: for c in Global.canvases:
var new_canvas_layers : Array = c.layers.duplicate() var new_canvas_layers : Array = c.layers.duplicate()
# Store [Image, ImageTexture, Visibity boolean, Opacity] # Store [Image, ImageTexture, Opacity]
new_canvas_layers.append([new_layer, new_layer_tex, true, 1]) 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_do_property(c, "layers", new_canvas_layers)
Global.undo_redo.add_undo_property(c, "layers", c.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() Global.undo_redo.commit_action()
func _on_OpacitySlider_value_changed(value) -> void: 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_slider.value = value
Global.layer_opacity_spinbox.value = value Global.layer_opacity_spinbox.value = value
Global.canvas.update() Global.canvas.update()

View file

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

View file

@ -50,7 +50,7 @@ func _on_PopupMenu_id_pressed(ID : int) -> void:
sprite.lock() sprite.lock()
var tex := ImageTexture.new() var tex := ImageTexture.new()
tex.create_from_image(sprite, 0) 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.undos += 1
Global.undo_redo.create_action("Add Frame") Global.undo_redo.create_action("Add Frame")

View file

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

View file

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

View file

@ -163,7 +163,9 @@ func _ready() -> void:
Global.window_title = "(" + tr("untitled") + ") - Pixelorama" 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() Global.canvas.generate_layer_panels()
Import.import_brushes("Brushes") Import.import_brushes("Brushes")