1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-22 13:33:13 +00:00

Some timeline UI improvements

This commit is contained in:
Emmanouil Papadeas 2023-12-01 21:13:28 +02:00
parent 2ce81f8c1c
commit 1b22e75034
2 changed files with 93 additions and 100 deletions

View file

@ -1,5 +1,7 @@
extends Panel extends Panel
const FRAME_BUTTON_TSCN := preload("res://src/UI/Timeline/FrameButton.tscn")
var is_animation_running := false var is_animation_running := false
var animation_loop := 1 ## 0 is no loop, 1 is cycle loop, 2 is ping-pong loop var animation_loop := 1 ## 0 is no loop, 1 is cycle loop, 2 is ping-pong loop
var animation_forward := true var animation_forward := true
@ -13,24 +15,21 @@ var max_cel_size := 144
var past_above_canvas := true var past_above_canvas := true
var future_above_canvas := true var future_above_canvas := true
var frame_button_node := preload("res://src/UI/Timeline/FrameButton.tscn")
@onready var old_scroll := 0 ## The previous scroll state of $ScrollContainer @onready var old_scroll := 0 ## The previous scroll state of $ScrollContainer
@onready var tag_spacer = find_child("TagSpacer") @onready var tag_spacer := %TagSpacer as Control
@onready var start_spacer = find_child("StartSpacer") @onready var layer_settings_container := %LayerSettingsContainer as VBoxContainer
@onready var layer_settings_container: VBoxContainer = %LayerSettingsContainer @onready var layer_container := %LayerContainer as VBoxContainer
@onready var layer_container: VBoxContainer = %LayerContainer @onready var add_layer_list := $"%AddLayerList" as MenuButton
@onready var add_layer_list: MenuButton = $"%AddLayerList"
@onready var blend_modes_button := %BlendModes as OptionButton @onready var blend_modes_button := %BlendModes as OptionButton
@onready var timeline_scroll: ScrollContainer = find_child("TimelineScroll") @onready var frame_scroll_container := %FrameScrollContainer as Control
@onready var frame_scroll_container: Control = find_child("FrameScrollContainer") @onready var frame_scroll_bar := %FrameScrollBar as HScrollBar
@onready var frame_scroll_bar: HScrollBar = find_child("FrameScrollBar") @onready var tag_scroll_container := %TagScroll as ScrollContainer
@onready var tag_scroll_container: ScrollContainer = find_child("TagScroll") @onready var layer_frame_h_split := %LayerFrameHSplit as HSplitContainer
@onready var layer_frame_h_split: HSplitContainer = find_child("LayerFrameHSplit") @onready var fps_spinbox := %FPSValue as ValueSlider
@onready var fps_spinbox: ValueSlider = find_child("FPSValue") @onready var onion_skinning_button := %OnionSkinning as BaseButton
@onready var onion_skinning_button: BaseButton = find_child("OnionSkinning") @onready var onion_skinning_settings := $OnionSkinningSettings as Popup
@onready var loop_animation_button: BaseButton = find_child("LoopAnim") @onready var loop_animation_button := %LoopAnim as BaseButton
@onready var drag_highlight: ColorRect = find_child("DragHighlight") @onready var drag_highlight := $DragHighlight as ColorRect
func _ready() -> void: func _ready() -> void:
@ -86,14 +85,14 @@ func _ready() -> void:
var future_above = Global.config_cache.get_value( var future_above = Global.config_cache.get_value(
"timeline", "future_above_canvas", future_above_canvas "timeline", "future_above_canvas", future_above_canvas
) )
$"%PastOnionSkinning".value = past_rate %PastOnionSkinning.value = past_rate
$"%FutureOnionSkinning".value = future_rate %FutureOnionSkinning.value = future_rate
$"%BlueRedMode".button_pressed = blue_red %BlueRedMode.button_pressed = blue_red
$"%PastPlacement".select(0 if past_above else 1) %PastPlacement.select(0 if past_above else 1)
$"%FuturePlacement".select(0 if future_above else 1) %FuturePlacement.select(0 if future_above else 1)
# emit signals that were supposed to be emitted (Check if it's still required in godot 4) # emit signals that were supposed to be emitted (Check if it's still required in godot 4)
$"%PastPlacement".item_selected.emit(0 if past_above else 1) %PastPlacement.item_selected.emit(0 if past_above else 1)
$"%FuturePlacement".item_selected.emit(0 if future_above else 1) %FuturePlacement.item_selected.emit(0 if future_above else 1)
# Makes sure that the frame and tag scroll bars are in the right place: # Makes sure that the frame and tag scroll bars are in the right place:
Global.layer_vbox.emit_signal.call_deferred("resized") Global.layer_vbox.emit_signal.call_deferred("resized")
@ -488,14 +487,8 @@ func _on_OnionSkinning_pressed() -> void:
func _on_OnionSkinningSettings_pressed() -> void: func _on_OnionSkinningSettings_pressed() -> void:
$OnionSkinningSettings.popup( var pos := Vector2i(onion_skinning_button.global_position) - onion_skinning_settings.size
Rect2( onion_skinning_settings.popup(Rect2i(pos.x - 16, pos.y + 32, 136, 126))
onion_skinning_button.global_position.x - $OnionSkinningSettings.size.x - 16,
onion_skinning_button.global_position.y - $OnionSkinningSettings.size.y + 32,
136,
126
)
)
func _on_LoopAnim_pressed() -> void: func _on_LoopAnim_pressed() -> void:
@ -981,11 +974,11 @@ func _on_OpacitySlider_value_changed(value: float) -> void:
func _on_onion_skinning_settings_close_requested() -> void: func _on_onion_skinning_settings_close_requested() -> void:
$OnionSkinningSettings.hide() onion_skinning_settings.hide()
func _on_onion_skinning_settings_visibility_changed() -> void: func _on_onion_skinning_settings_visibility_changed() -> void:
Global.can_draw = not $OnionSkinningSettings.visible Global.can_draw = not onion_skinning_settings.visible
# Methods to update the UI in response to changes in the current project # Methods to update the UI in response to changes in the current project
@ -1005,7 +998,7 @@ func project_changed() -> void:
for i in project.layers.size(): for i in project.layers.size():
project_layer_added(i) project_layer_added(i)
for f in project.frames.size(): for f in project.frames.size():
var button := frame_button_node.instantiate() as Button var button := FRAME_BUTTON_TSCN.instantiate() as Button
button.frame = f button.frame = f
Global.frame_hbox.add_child(button) Global.frame_hbox.add_child(button)
@ -1030,7 +1023,7 @@ func project_changed() -> void:
func project_frame_added(frame: int) -> void: func project_frame_added(frame: int) -> void:
var project := Global.current_project var project := Global.current_project
var button := frame_button_node.instantiate() as Button var button := FRAME_BUTTON_TSCN.instantiate() as Button
button.frame = frame button.frame = frame
Global.frame_hbox.add_child(button) Global.frame_hbox.add_child(button)
Global.frame_hbox.move_child(button, frame) Global.frame_hbox.move_child(button, frame)

View file

@ -188,7 +188,6 @@ anchor_bottom = 1.0
[node name="TimelineButtons" type="HBoxContainer" parent="TimelineContainer"] [node name="TimelineButtons" type="HBoxContainer" parent="TimelineContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3
[node name="LayerTools" type="PanelContainer" parent="TimelineContainer/TimelineButtons"] [node name="LayerTools" type="PanelContainer" parent="TimelineContainer/TimelineButtons"]
layout_mode = 2 layout_mode = 2
@ -199,11 +198,10 @@ layout_mode = 2
[node name="LayerButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"] [node name="LayerButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 9 theme_override_constants/separation = 9
[node name="AddLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="AddLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(44, 22) custom_minimum_size = Vector2(44, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -256,7 +254,7 @@ offset_bottom = 6.0
texture = ExtResource("10") texture = ExtResource("10")
[node name="RemoveLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="RemoveLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -281,7 +279,7 @@ size_flags_vertical = 0
texture = ExtResource("6") texture = ExtResource("6")
[node name="MoveUpLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="MoveUpLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -306,7 +304,7 @@ size_flags_vertical = 0
texture = ExtResource("4") texture = ExtResource("4")
[node name="MoveDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="MoveDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -331,7 +329,7 @@ size_flags_vertical = 0
texture = ExtResource("3") texture = ExtResource("3")
[node name="CloneLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="CloneLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -355,7 +353,7 @@ size_flags_vertical = 0
texture = ExtResource("7") texture = ExtResource("7")
[node name="MergeDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]] [node name="MergeDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
@ -379,31 +377,26 @@ size_flags_horizontal = 0
size_flags_vertical = 0 size_flags_vertical = 0
texture = ExtResource("5") texture = ExtResource("5")
[node name="HBoxContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"] [node name="LayerFX" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons"]
layout_mode = 2 custom_minimum_size = Vector2(24, 24)
[node name="LayerFX" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 4
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
text = "FX" text = "FX"
[node name="BlendModeLabel" type="Label" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"] [node name="BlendContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"]
layout_mode = 2
[node name="BlendModeLabel" type="Label" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer"]
layout_mode = 2 layout_mode = 2
text = "Blend mode:" text = "Blend mode:"
[node name="BlendModes" type="OptionButton" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"] [node name="BlendModes" type="OptionButton" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
[node name="OpacitySlider" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer" instance=ExtResource("9")]
custom_minimum_size = Vector2(207, 24)
layout_mode = 2
size_flags_vertical = 0
value = 100.0
prefix = "Opacity:"
[node name="VBoxContainer" type="VBoxContainer" parent="TimelineContainer/TimelineButtons"] [node name="VBoxContainer" type="VBoxContainer" parent="TimelineContainer/TimelineButtons"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
@ -421,14 +414,14 @@ size_flags_horizontal = 10
custom_minimum_size = Vector2(0, 24) custom_minimum_size = Vector2(0, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_constants/separation = 40 theme_override_constants/separation = 24
alignment = 2 alignment = 2
[node name="FrameButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons"] [node name="FrameButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons"]
layout_mode = 2 layout_mode = 2
[node name="AddFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="AddFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Add a new frame" tooltip_text = "Add a new frame"
@ -449,7 +442,7 @@ offset_bottom = 6.0
texture = ExtResource("19") texture = ExtResource("19")
[node name="DeleteFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="DeleteFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Remove Frame" tooltip_text = "Remove Frame"
@ -472,7 +465,7 @@ size_flags_vertical = 0
texture = ExtResource("20") texture = ExtResource("20")
[node name="CopyFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="CopyFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Clone Frame" tooltip_text = "Clone Frame"
@ -493,7 +486,7 @@ offset_bottom = 7.0
texture = ExtResource("27") texture = ExtResource("27")
[node name="FrameTagButton" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="FrameTagButton" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Manage frame tags" tooltip_text = "Manage frame tags"
@ -514,7 +507,7 @@ offset_bottom = 7.0
texture = ExtResource("28") texture = ExtResource("28")
[node name="MoveLeft" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="MoveLeft" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Move the selected frame to the left." tooltip_text = "Move the selected frame to the left."
@ -536,7 +529,7 @@ texture = ExtResource("8")
flip_h = true flip_h = true
[node name="MoveRight" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]] [node name="MoveRight" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Move the selected frame to the right." tooltip_text = "Move the selected frame to the right."
@ -560,7 +553,7 @@ texture = ExtResource("8")
layout_mode = 2 layout_mode = 2
[node name="FirstFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="FirstFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Jump to the first frame" tooltip_text = "Jump to the first frame"
focus_mode = 0 focus_mode = 0
@ -580,7 +573,7 @@ offset_bottom = 6.0
texture = ExtResource("21") texture = ExtResource("21")
[node name="PreviousFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="PreviousFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Go to the previous frame" tooltip_text = "Go to the previous frame"
focus_mode = 0 focus_mode = 0
@ -600,7 +593,7 @@ offset_bottom = 6.0
texture = ExtResource("23") texture = ExtResource("23")
[node name="PlayBackwards" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="PlayBackwards" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Play the animation backwards (from end to beginning)" tooltip_text = "Play the animation backwards (from end to beginning)"
focus_mode = 0 focus_mode = 0
@ -621,7 +614,7 @@ offset_bottom = 6.0
texture = ExtResource("24") texture = ExtResource("24")
[node name="PlayForward" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="PlayForward" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Play the animation forward (from beginning to end)" tooltip_text = "Play the animation forward (from beginning to end)"
@ -643,7 +636,7 @@ offset_bottom = 6.0
texture = ExtResource("22") texture = ExtResource("22")
[node name="NextFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="NextFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Go to the next frame" tooltip_text = "Go to the next frame"
focus_mode = 0 focus_mode = 0
@ -663,7 +656,7 @@ offset_bottom = 6.0
texture = ExtResource("26") texture = ExtResource("26")
[node name="LastFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]] [node name="LastFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Jump to the last frame" tooltip_text = "Jump to the last frame"
focus_mode = 0 focus_mode = 0
@ -686,7 +679,7 @@ texture = ExtResource("25")
layout_mode = 2 layout_mode = 2
[node name="OnionSkinningSettings" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]] [node name="OnionSkinningSettings" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
tooltip_text = "Onion Skinning settings" tooltip_text = "Onion Skinning settings"
@ -709,7 +702,8 @@ size_flags_vertical = 0
texture = ExtResource("30") texture = ExtResource("30")
[node name="OnionSkinning" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]] [node name="OnionSkinning" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Enable/disable Onion Skinning" tooltip_text = "Enable/disable Onion Skinning"
focus_mode = 0 focus_mode = 0
@ -731,7 +725,8 @@ size_flags_vertical = 0
texture = ExtResource("29") texture = ExtResource("29")
[node name="LoopAnim" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]] [node name="LoopAnim" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0) unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2 layout_mode = 2
tooltip_text = "Cycle loop" tooltip_text = "Cycle loop"
focus_mode = 0 focus_mode = 0
@ -751,24 +746,28 @@ offset_bottom = 7.0
texture = ExtResource("31") texture = ExtResource("31")
[node name="FPSValue" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" instance=ExtResource("9")] [node name="FPSValue" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" instance=ExtResource("9")]
unique_name_in_owner = true
custom_minimum_size = Vector2(72, 24) custom_minimum_size = Vector2(72, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 1 size_flags_horizontal = 1
tooltip_text = "How many frames per second should the animation preview be? tooltip_text = "How many frames per second should the animation preview be?
The more FPS, the faster the animation plays." The more FPS, the faster the animation plays."
min_value = 0.1 min_value = 0.1
max_value = 50.0
step = 0.1 step = 0.1
value = 6.0 value = 6.0
allow_greater = true allow_greater = true
suffix = "FPS" suffix = "FPS"
[node name="TagScroll" type="ScrollContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer"] [node name="TagScroll" type="ScrollContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer"]
custom_minimum_size = Vector2(0, 32) unique_name_in_owner = true
custom_minimum_size = Vector2(0, 24)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
mouse_filter = 2 mouse_filter = 2
theme = SubResource("20") theme = SubResource("20")
vertical_scroll_mode = 3
[node name="HBoxContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll"] [node name="HBoxContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll"]
layout_mode = 2 layout_mode = 2
@ -777,60 +776,67 @@ size_flags_vertical = 3
theme_override_constants/separation = 0 theme_override_constants/separation = 0
[node name="TagSpacer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"] [node name="TagSpacer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
[node name="TagContainer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"] [node name="TagContainer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="PanelContainer" type="PanelContainer" parent="TimelineContainer"] [node name="MainBodyPanel" type="PanelContainer" parent="TimelineContainer"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="TimelineContainer/PanelContainer"] [node name="MainBodyVBoxContainer" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="TimelineScroll" type="ScrollContainer" parent="TimelineContainer/PanelContainer/VBoxContainer"] [node name="TimelineScroll" type="ScrollContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
[node name="LayerFrameHSplit" type="HSplitContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll"] [node name="LayerFrameHSplit" type="HSplitContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll"]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="LayerContainer" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit"] [node name="LayerContainer" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
[node name="LayerLabel" type="Label" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"] [node name="OpacitySlider" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer" instance=ExtResource("9")]
custom_minimum_size = Vector2(207, 30)
layout_mode = 2 layout_mode = 2
text = "Layers" size_flags_vertical = 0
value = 100.0
prefix = "Opacity:"
[node name="LayerVBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"] [node name="LayerVBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="FrameScrollContainer" type="Container" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit"] [node name="FrameScrollContainer" type="Container" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit"]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
script = ExtResource("11") script = ExtResource("11")
h_scroll_bar_node_path = NodePath("../../../BreakFreeFromContainer/FrameScrollBar") h_scroll_bar_node_path = NodePath("../../../BreakFreeFromContainer/FrameScrollBar")
[node name="FrameAndCelBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer"] [node name="FrameAndCelBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer"]
layout_mode = 2 layout_mode = 2
[node name="FrameHBox" type="HBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"] [node name="FrameHBox" type="HBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
custom_minimum_size = Vector2(0, 30) custom_minimum_size = Vector2(0, 30)
layout_mode = 2 layout_mode = 2
[node name="CelVBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"] [node name="CelVBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
layout_mode = 2 layout_mode = 2
[node name="BreakFreeFromContainer" type="Control" parent="TimelineContainer/PanelContainer/VBoxContainer"] [node name="BreakFreeFromContainer" type="Control" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer"]
layout_mode = 2 layout_mode = 2
[node name="FrameScrollBar" type="HScrollBar" parent="TimelineContainer/PanelContainer/VBoxContainer/BreakFreeFromContainer"] [node name="FrameScrollBar" type="HScrollBar" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/BreakFreeFromContainer"]
unique_name_in_owner = true
layout_mode = 0 layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
offset_left = 41.0 offset_left = 41.0
@ -840,8 +846,8 @@ size_flags_horizontal = 3
[node name="AnimationTimer" type="Timer" parent="."] [node name="AnimationTimer" type="Timer" parent="."]
[node name="OnionSkinningSettings" type="Popup" parent="."] [node name="OnionSkinningSettings" type="Popup" parent="."]
position = Vector2i(0, 36) position = Vector2i(0, 24)
size = Vector2i(315, 299) size = Vector2i(288, 207)
unresizable = false unresizable = false
borderless = false borderless = false
@ -919,12 +925,6 @@ popup/item_0/id = 0
popup/item_1/text = "Below canvas" popup/item_1/text = "Below canvas"
popup/item_1/id = 1 popup/item_1/id = 1
[node name="Label" type="Label" parent="OnionSkinningSettings/OnionSkinningButtons"]
layout_mode = 2
theme_override_colors/font_color = Color(0.333333, 0.901961, 0.462745, 1)
text = "If you want a layer to ignore onion skinning simply add the \"_io\" suffix in its name."
autowrap_mode = 3
[node name="FrameTagDialog" parent="." instance=ExtResource("42")] [node name="FrameTagDialog" parent="." instance=ExtResource("42")]
[node name="LayerEffectsSettings" parent="." instance=ExtResource("26_vbrbd")] [node name="LayerEffectsSettings" parent="." instance=ExtResource("26_vbrbd")]
@ -946,9 +946,8 @@ script = ExtResource("12")
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MoveDownLayer" to="." method="change_layer_order" binds= [false]] [connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MoveDownLayer" to="." method="change_layer_order" binds= [false]]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/CloneLayer" to="." method="_on_CloneLayer_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/CloneLayer" to="." method="_on_CloneLayer_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MergeDownLayer" to="." method="_on_MergeDownLayer_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MergeDownLayer" to="." method="_on_MergeDownLayer_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer/LayerFX" to="." method="_on_layer_fx_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/LayerFX" to="." method="_on_layer_fx_pressed"]
[connection signal="item_selected" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer/BlendModes" to="." method="_on_blend_modes_item_selected"] [connection signal="item_selected" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer/BlendModes" to="." method="_on_blend_modes_item_selected"]
[connection signal="value_changed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/AddFrame" to="." method="add_frame"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/AddFrame" to="." method="add_frame"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/DeleteFrame" to="." method="_on_DeleteFrame_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/DeleteFrame" to="." method="_on_DeleteFrame_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/CopyFrame" to="." method="_on_CopyFrame_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/CopyFrame" to="." method="_on_CopyFrame_pressed"]
@ -965,8 +964,9 @@ script = ExtResource("12")
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/OnionSkinning" to="." method="_on_OnionSkinning_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/OnionSkinning" to="." method="_on_OnionSkinning_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/LoopAnim" to="." method="_on_LoopAnim_pressed"] [connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/LoopAnim" to="." method="_on_LoopAnim_pressed"]
[connection signal="value_changed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/FPSValue" to="." method="_on_FPSValue_value_changed"] [connection signal="value_changed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/FPSValue" to="." method="_on_FPSValue_value_changed"]
[connection signal="gui_input" from="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit" to="." method="_on_LayerFrameSplitContainer_gui_input"] [connection signal="gui_input" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit" to="." method="_on_LayerFrameSplitContainer_gui_input"]
[connection signal="resized" from="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/LayerVBox" to="." method="_on_LayerVBox_resized"] [connection signal="value_changed" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="resized" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/LayerVBox" to="." method="_on_LayerVBox_resized"]
[connection signal="timeout" from="AnimationTimer" to="." method="_on_AnimationTimer_timeout"] [connection signal="timeout" from="AnimationTimer" to="." method="_on_AnimationTimer_timeout"]
[connection signal="close_requested" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_close_requested"] [connection signal="close_requested" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_close_requested"]
[connection signal="visibility_changed" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_visibility_changed"] [connection signal="visibility_changed" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_visibility_changed"]