mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-13 06:45:17 +00:00
Add/remove/move frames should now work
With Undo/Redo. Cloning frames doesn't work yet, will fix shortly.
This commit is contained in:
parent
98e6b0f56b
commit
120e47d0f9
2 changed files with 30 additions and 23 deletions
|
@ -31,7 +31,6 @@ var pen_pressure := 1.0 # For tablet pressure sensitivity
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var fill_layers := layers.empty()
|
var fill_layers := layers.empty()
|
||||||
for i in range(Global.layers.size()):
|
for i in range(Global.layers.size()):
|
||||||
print(i)
|
|
||||||
if fill_layers:
|
if fill_layers:
|
||||||
# The sprite itself
|
# The sprite itself
|
||||||
var sprite := Image.new()
|
var sprite := Image.new()
|
||||||
|
@ -54,14 +53,6 @@ func _ready() -> void:
|
||||||
# Store [Image, ImageTexture, Opacity]
|
# Store [Image, ImageTexture, Opacity]
|
||||||
layers.append([sprite, tex, 1])
|
layers.append([sprite, tex, 1])
|
||||||
|
|
||||||
var frame_button = load("res://Prefabs/FrameButton.tscn").instance()
|
|
||||||
frame_button.frame = frame
|
|
||||||
frame_button.layer = i
|
|
||||||
frame_button.pressed = true
|
|
||||||
#frame_button.get_node("FrameID").text = str(frame + 1)
|
|
||||||
#frame_button.get_node("FrameID").add_color_override("font_color", Color("#3c5d75"))
|
|
||||||
Global.layers[i][2].add_child(frame_button)
|
|
||||||
|
|
||||||
# Only handle camera zoom settings & offset on the first frame
|
# Only handle camera zoom settings & offset on the first frame
|
||||||
if Global.canvases[0] == self:
|
if Global.canvases[0] == self:
|
||||||
camera_zoom()
|
camera_zoom()
|
||||||
|
|
|
@ -13,6 +13,7 @@ var undos := 0 # The number of times we added undo properties
|
||||||
var saved := true # Checks if the user has saved
|
var saved := true # Checks if the user has saved
|
||||||
|
|
||||||
# Canvas related stuff
|
# Canvas related stuff
|
||||||
|
var canvases := [] setget canvases_changed
|
||||||
var layers := [] setget layers_changed
|
var layers := [] setget layers_changed
|
||||||
var current_frame := 0 setget frame_changed
|
var current_frame := 0 setget frame_changed
|
||||||
var current_layer := 0 setget layer_changed
|
var current_layer := 0 setget layer_changed
|
||||||
|
@ -20,7 +21,6 @@ var current_layer := 0 setget layer_changed
|
||||||
var can_draw := false
|
var can_draw := false
|
||||||
# warning-ignore:unused_class_variable
|
# warning-ignore:unused_class_variable
|
||||||
var has_focus := false
|
var has_focus := false
|
||||||
var canvases := []
|
|
||||||
# warning-ignore:unused_class_variable
|
# warning-ignore:unused_class_variable
|
||||||
var hidden_canvases := []
|
var hidden_canvases := []
|
||||||
var pressure_sensitivity_mode = Pressure_Sensitivity.NONE
|
var pressure_sensitivity_mode = Pressure_Sensitivity.NONE
|
||||||
|
@ -412,7 +412,6 @@ func undo(_canvases : Array, layer_index : int = -1) -> void:
|
||||||
|
|
||||||
if action_name == "Add Frame":
|
if action_name == "Add Frame":
|
||||||
canvas_parent.remove_child(_canvases[0])
|
canvas_parent.remove_child(_canvases[0])
|
||||||
frames_container.remove_child(_canvases[0].frame_button)
|
|
||||||
# This actually means that canvases.size is one, but it hasn't been updated yet
|
# This actually means that canvases.size is one, but it hasn't been updated yet
|
||||||
if canvases.size() == 2: # Stop animating
|
if canvases.size() == 2: # Stop animating
|
||||||
play_forward.pressed = false
|
play_forward.pressed = false
|
||||||
|
@ -421,10 +420,7 @@ func undo(_canvases : Array, layer_index : int = -1) -> void:
|
||||||
elif action_name == "Remove Frame":
|
elif action_name == "Remove Frame":
|
||||||
canvas_parent.add_child(_canvases[0])
|
canvas_parent.add_child(_canvases[0])
|
||||||
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
||||||
frames_container.add_child(_canvases[0].frame_button)
|
|
||||||
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
|
|
||||||
elif action_name == "Change Frame Order":
|
elif action_name == "Change Frame Order":
|
||||||
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
|
|
||||||
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
||||||
|
|
||||||
canvas.update()
|
canvas.update()
|
||||||
|
@ -451,22 +447,15 @@ func redo(_canvases : Array, layer_index : int = -1) -> void:
|
||||||
|
|
||||||
if action_name == "Add Frame":
|
if action_name == "Add Frame":
|
||||||
canvas_parent.add_child(_canvases[0])
|
canvas_parent.add_child(_canvases[0])
|
||||||
var label := Label.new()
|
|
||||||
label.rect_min_size.x = 36
|
|
||||||
label.align = Label.ALIGN_CENTER
|
|
||||||
label.text = str(canvases.size() + 1)
|
|
||||||
frame_ids.add_child(label)
|
|
||||||
#if !frames_container.is_a_parent_of(_canvases[0].frame_button):
|
#if !frames_container.is_a_parent_of(_canvases[0].frame_button):
|
||||||
# frames_container.add_child(_canvases[0].frame_button)
|
# frames_container.add_child(_canvases[0].frame_button)
|
||||||
elif action_name == "Remove Frame":
|
elif action_name == "Remove Frame":
|
||||||
canvas_parent.remove_child(_canvases[0])
|
canvas_parent.remove_child(_canvases[0])
|
||||||
frames_container.remove_child(_canvases[0].frame_button)
|
|
||||||
if canvases.size() == 1: # Stop animating
|
if canvases.size() == 1: # Stop animating
|
||||||
play_forward.pressed = false
|
play_forward.pressed = false
|
||||||
play_backwards.pressed = false
|
play_backwards.pressed = false
|
||||||
animation_timer.stop()
|
animation_timer.stop()
|
||||||
elif action_name == "Change Frame Order":
|
elif action_name == "Change Frame Order":
|
||||||
frames_container.move_child(_canvases[0].frame_button, _canvases[0].frame)
|
|
||||||
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
canvas_parent.move_child(_canvases[0], _canvases[0].frame)
|
||||||
|
|
||||||
canvas.update()
|
canvas.update()
|
||||||
|
@ -480,10 +469,37 @@ func title_changed(value : String) -> void:
|
||||||
window_title = value
|
window_title = value
|
||||||
OS.set_window_title(value)
|
OS.set_window_title(value)
|
||||||
|
|
||||||
|
func canvases_changed(value : Array) -> void:
|
||||||
|
canvases = value
|
||||||
|
for container in frames_container.get_children():
|
||||||
|
for button in container.get_children():
|
||||||
|
button.queue_free()
|
||||||
|
frames_container.remove_child(container)
|
||||||
|
|
||||||
|
for frame_id in frame_ids.get_children():
|
||||||
|
frame_id.queue_free()
|
||||||
|
|
||||||
|
for i in range(layers.size() - 1, -1, -1):
|
||||||
|
frames_container.add_child(layers[i][2])
|
||||||
|
|
||||||
|
for j in range(canvases.size()):
|
||||||
|
var label := Label.new()
|
||||||
|
label.rect_min_size.x = 36
|
||||||
|
label.align = Label.ALIGN_CENTER
|
||||||
|
label.text = str(j + 1)
|
||||||
|
frame_ids.add_child(label)
|
||||||
|
|
||||||
|
for i in range(layers.size() - 1, -1, -1):
|
||||||
|
var frame_button = load("res://Prefabs/FrameButton.tscn").instance()
|
||||||
|
frame_button.frame = j
|
||||||
|
frame_button.layer = i
|
||||||
|
frame_button.pressed = true
|
||||||
|
frame_button.get_child(0).texture = Global.canvases[j].layers[i][1]
|
||||||
|
|
||||||
|
layers[i][2].add_child(frame_button)
|
||||||
|
|
||||||
func layers_changed(value : Array) -> void:
|
func layers_changed(value : Array) -> void:
|
||||||
layers = value
|
layers = value
|
||||||
print(layers)
|
|
||||||
print(str(layers_container.get_child_count()) + " " + str(frames_container.get_child_count()))
|
|
||||||
|
|
||||||
for container in layers_container.get_children():
|
for container in layers_container.get_children():
|
||||||
container.queue_free()
|
container.queue_free()
|
||||||
|
|
Loading…
Add table
Reference in a new issue