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

Timeline UI changes

The onion skinning button replaces the old onion skinning area of the timeline, but there's no way right now to change the settings. This will be added in a future commit. More UI changes will soon follow.
This commit is contained in:
OverloadedOrama 2020-03-26 20:56:30 +02:00
parent 278c9facb2
commit 07db587b6c
21 changed files with 516 additions and 199 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning.png-537ab809ea590d6a9c1fa57d0bd4a037.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png"
dest_files=[ "res://.import/Onion_Skinning.png-537ab809ea590d6a9c1fa57d0bd4a037.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning_Hover.png-7407ca88dd2883315c1f9c97e6621714.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png"
dest_files=[ "res://.import/Onion_Skinning_Hover.png-7407ca88dd2883315c1f9c97e6621714.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning.png-0b2ee1ea6b56d21df30643952294214a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Gold Themes/Timeline/Onion_Skinning.png"
dest_files=[ "res://.import/Onion_Skinning.png-0b2ee1ea6b56d21df30643952294214a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning_Hover.png-3477ab4de75d3475e11b64f5e1fcd522.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Gold Themes/Timeline/Onion_Skinning_Hover.png"
dest_files=[ "res://.import/Onion_Skinning_Hover.png-3477ab4de75d3475e11b64f5e1fcd522.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning.png-ab9dc2240bff22bef72e411409e60cfb.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Light Themes/Onion_Skinning.png"
dest_files=[ "res://.import/Onion_Skinning.png-ab9dc2240bff22bef72e411409e60cfb.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning_Hover.png-7c62f9b026c50d69761ff25d88453c18.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Light Themes/Onion_Skinning_Hover.png"
dest_files=[ "res://.import/Onion_Skinning_Hover.png-7c62f9b026c50d69761ff25d88453c18.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning.png-20b850fa7d92bc476be35626508a6ec0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Light Themes/Timeline/Onion_Skinning.png"
dest_files=[ "res://.import/Onion_Skinning.png-20b850fa7d92bc476be35626508a6ec0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Onion_Skinning_Hover.png-55ed2501c9e4877532776d56f746434e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Graphics/Light Themes/Timeline/Onion_Skinning_Hover.png"
dest_files=[ "res://.import/Onion_Skinning_Hover.png-55ed2501c9e4877532776d56f746434e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=47 format=2] [gd_scene load_steps=49 format=2]
[ext_resource path="res://Scripts/AnimationTimeline.gd" type="Script" id=1] [ext_resource path="res://Scripts/AnimationTimeline.gd" type="Script" id=1]
[ext_resource path="res://Assets/Graphics/Dark Themes/Layers/New_Layer.png" type="Texture" id=2] [ext_resource path="res://Assets/Graphics/Dark Themes/Layers/New_Layer.png" type="Texture" id=2]
@ -34,6 +34,8 @@
[ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Go_To_Last_Frame.png" type="Texture" id=32] [ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Go_To_Last_Frame.png" type="Texture" id=32]
[ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Go_To_Last_Frame_Hover.png" type="Texture" id=33] [ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Go_To_Last_Frame_Hover.png" type="Texture" id=33]
[ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Loop_None.png" type="Texture" id=34] [ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Loop_None.png" type="Texture" id=34]
[ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png" type="Texture" id=35]
[ext_resource path="res://Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png" type="Texture" id=36]
[sub_resource type="InputEventKey" id=1] [sub_resource type="InputEventKey" id=1]
control = true control = true
@ -90,27 +92,32 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="VSeparator" type="VSeparator" parent="."]
anchor_bottom = 1.0
margin_right = 4.0
size_flags_vertical = 3
[node name="AnimationContainer" type="HBoxContainer" parent="."] [node name="AnimationContainer" type="HBoxContainer" parent="."]
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
margin_left = 15.0 __meta__ = {
margin_top = 4.0 "_edit_use_anchors_": false
}
[node name="TimelineContainer" type="VBoxContainer" parent="AnimationContainer"] [node name="ForLayerButtons" type="VBoxContainer" parent="AnimationContainer"]
margin_right = 543.0 margin_right = 68.0
margin_bottom = 196.0 margin_bottom = 200.0
size_flags_horizontal = 3
[node name="LayerButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer"] [node name="SpacerControl" type="Control" parent="AnimationContainer/ForLayerButtons"]
margin_right = 543.0 margin_right = 68.0
margin_bottom = 32.0 margin_bottom = 30.0
rect_min_size = Vector2( 0, 30 )
[node name="AddLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="LayerButtons" type="GridContainer" parent="AnimationContainer/ForLayerButtons"]
margin_top = 34.0
margin_right = 68.0
margin_bottom = 138.0
size_flags_vertical = 0
custom_constants/vseparation = 4
custom_constants/hseparation = 4
columns = 2
[node name="AddLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_right = 32.0 margin_right = 32.0
@ -120,7 +127,7 @@ mouse_default_cursor_shape = 2
texture_normal = ExtResource( 2 ) texture_normal = ExtResource( 2 )
texture_hover = ExtResource( 3 ) texture_hover = ExtResource( 3 )
[node name="RemoveLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="RemoveLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_left = 36.0 margin_left = 36.0
@ -133,12 +140,12 @@ texture_normal = ExtResource( 4 )
texture_hover = ExtResource( 5 ) texture_hover = ExtResource( 5 )
texture_disabled = ExtResource( 6 ) texture_disabled = ExtResource( 6 )
[node name="MoveUpLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="MoveUpLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_left = 72.0 margin_top = 36.0
margin_right = 104.0 margin_right = 32.0
margin_bottom = 32.0 margin_bottom = 68.0
hint_tooltip = "Move up the current layer" hint_tooltip = "Move up the current layer"
mouse_default_cursor_shape = 8 mouse_default_cursor_shape = 8
disabled = true disabled = true
@ -146,12 +153,13 @@ texture_normal = ExtResource( 7 )
texture_hover = ExtResource( 8 ) texture_hover = ExtResource( 8 )
texture_disabled = ExtResource( 9 ) texture_disabled = ExtResource( 9 )
[node name="MoveDownLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="MoveDownLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_left = 108.0 margin_left = 36.0
margin_right = 140.0 margin_top = 36.0
margin_bottom = 32.0 margin_right = 68.0
margin_bottom = 68.0
hint_tooltip = "Move down the current layer" hint_tooltip = "Move down the current layer"
mouse_default_cursor_shape = 8 mouse_default_cursor_shape = 8
disabled = true disabled = true
@ -159,23 +167,24 @@ texture_normal = ExtResource( 10 )
texture_hover = ExtResource( 11 ) texture_hover = ExtResource( 11 )
texture_disabled = ExtResource( 12 ) texture_disabled = ExtResource( 12 )
[node name="CloneLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="CloneLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_left = 144.0 margin_top = 72.0
margin_right = 176.0 margin_right = 32.0
margin_bottom = 32.0 margin_bottom = 104.0
hint_tooltip = "Clone current layer" hint_tooltip = "Clone current layer"
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
texture_normal = ExtResource( 13 ) texture_normal = ExtResource( 13 )
texture_hover = ExtResource( 14 ) texture_hover = ExtResource( 14 )
[node name="MergeDownLayer" type="TextureButton" parent="AnimationContainer/TimelineContainer/LayerButtons" groups=[ [node name="MergeDownLayer" type="TextureButton" parent="AnimationContainer/ForLayerButtons/LayerButtons" groups=[
"UIButtons", "UIButtons",
]] ]]
margin_left = 180.0 margin_left = 36.0
margin_right = 212.0 margin_top = 72.0
margin_bottom = 32.0 margin_right = 68.0
margin_bottom = 104.0
hint_tooltip = "Merge current layer with the one below" hint_tooltip = "Merge current layer with the one below"
mouse_default_cursor_shape = 8 mouse_default_cursor_shape = 8
disabled = true disabled = true
@ -183,18 +192,32 @@ texture_normal = ExtResource( 15 )
texture_hover = ExtResource( 16 ) texture_hover = ExtResource( 16 )
texture_disabled = ExtResource( 17 ) texture_disabled = ExtResource( 17 )
[node name="AnimationTags" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/LayerButtons"] [node name="SpacerControl" type="Control" parent="AnimationContainer"]
margin_left = 72.0
margin_right = 88.0
margin_bottom = 200.0
rect_min_size = Vector2( 16, 0 )
[node name="TimelineContainer" type="VBoxContainer" parent="AnimationContainer"]
margin_left = 92.0
margin_right = 696.0
margin_bottom = 200.0
size_flags_horizontal = 3
[node name="SpacerControl" type="Control" parent="AnimationContainer/TimelineContainer"]
margin_right = 604.0
[node name="AnimationTags" type="VBoxContainer" parent="AnimationContainer/TimelineContainer"]
visible = false visible = false
margin_left = 216.0 margin_right = 471.0
margin_right = 326.0
margin_bottom = 32.0 margin_bottom = 32.0
[node name="Line2D" type="Line2D" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"] [node name="Line2D" type="Line2D" parent="AnimationContainer/TimelineContainer/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 texture_mode = 1313163520
[node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/LayerButtons/AnimationTags"] [node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/AnimationTags"]
margin_right = 110.0 margin_right = 110.0
margin_bottom = 32.0 margin_bottom = 32.0
rect_min_size = Vector2( 110, 32 ) rect_min_size = Vector2( 110, 32 )
@ -204,100 +227,10 @@ text = "Animation Tags"
align = 1 align = 1
valign = 1 valign = 1
[node name="OpacityContainer" type="HBoxContainer" parent="AnimationContainer/TimelineContainer"]
margin_top = 36.0
margin_right = 543.0
margin_bottom = 60.0
custom_constants/separation = 2
[node name="OpacityLabel" type="Label" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_right = 53.0
margin_bottom = 24.0
size_flags_horizontal = 0
size_flags_vertical = 1
text = "Opacity:"
valign = 1
[node name="OpacitySlider" type="HSlider" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_left = 55.0
margin_right = 167.0
margin_bottom = 24.0
rect_min_size = Vector2( 112, 0 )
mouse_default_cursor_shape = 2
size_flags_vertical = 1
value = 100.0
ticks_on_borders = true
[node name="OpacitySpinBox" type="SpinBox" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_left = 169.0
margin_right = 243.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
size_flags_vertical = 4
value = 100.0
align = 1
[node name="TimelineScroll" type="ScrollContainer" parent="AnimationContainer/TimelineContainer"]
margin_top = 64.0
margin_right = 543.0
margin_bottom = 160.0
size_flags_vertical = 3
[node name="LayersAndFrames" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll"]
margin_right = 252.0
margin_bottom = 96.0
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames"]
margin_right = 212.0
margin_bottom = 96.0
[node name="LayerLabel" type="Label" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer"]
margin_right = 212.0
margin_bottom = 16.0
rect_min_size = Vector2( 0, 16 )
text = "Layers"
align = 1
valign = 1
[node name="LayersContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer"]
margin_top = 20.0
margin_right = 212.0
margin_bottom = 56.0
[node name="LayerContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer/LayersContainer" instance=ExtResource( 18 )]
margin_right = 212.0
[node name="VBoxContainer2" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames"]
margin_left = 216.0
margin_right = 252.0
margin_bottom = 96.0
[node name="FrameIDs" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2"]
margin_right = 36.0
margin_bottom = 14.0
[node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2/FrameIDs"]
margin_right = 36.0
margin_bottom = 14.0
rect_min_size = Vector2( 36, 0 )
text = "1"
align = 1
[node name="FramesContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2"]
margin_top = 18.0
margin_right = 36.0
margin_bottom = 18.0
[node name="HSeparator" type="HSeparator" parent="AnimationContainer/TimelineContainer"]
margin_top = 164.0
margin_right = 543.0
margin_bottom = 168.0
[node name="AnimationButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer"] [node name="AnimationButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer"]
margin_top = 172.0 margin_top = 4.0
margin_right = 543.0 margin_right = 604.0
margin_bottom = 196.0 margin_bottom = 28.0
rect_min_size = Vector2( 0, 24 ) rect_min_size = Vector2( 0, 24 )
[node name="CurrentFrame" type="Label" parent="AnimationContainer/TimelineContainer/AnimationButtons"] [node name="CurrentFrame" type="Label" parent="AnimationContainer/TimelineContainer/AnimationButtons"]
@ -320,8 +253,8 @@ texture_normal = ExtResource( 19 )
texture_hover = ExtResource( 20 ) texture_hover = ExtResource( 20 )
[node name="PlaybackButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/AnimationButtons"] [node name="PlaybackButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/AnimationButtons"]
margin_left = 223.0 margin_left = 241.0
margin_right = 363.0 margin_right = 381.0
margin_bottom = 24.0 margin_bottom = 24.0
size_flags_horizontal = 6 size_flags_horizontal = 6
@ -408,13 +341,34 @@ texture_normal = ExtResource( 32 )
texture_hover = ExtResource( 33 ) texture_hover = ExtResource( 33 )
[node name="LoopButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/AnimationButtons"] [node name="LoopButtons" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/AnimationButtons"]
margin_left = 445.0 margin_left = 482.0
margin_right = 543.0 margin_right = 604.0
margin_bottom = 24.0 margin_bottom = 24.0
size_flags_horizontal = 0 size_flags_horizontal = 0
[node name="OnionSkinning" type="TextureButton" parent="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons" groups=[
"UIButtons",
]]
margin_right = 20.0
margin_bottom = 24.0
hint_tooltip = "No loop"
mouse_default_cursor_shape = 2
texture_normal = ExtResource( 35 )
texture_hover = ExtResource( 36 )
[node name="LoopAnim" type="TextureButton" parent="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons" groups=[
"UIButtons",
]]
margin_left = 24.0
margin_right = 44.0
margin_bottom = 24.0
hint_tooltip = "No loop"
mouse_default_cursor_shape = 2
texture_normal = ExtResource( 34 )
[node name="FPSValue" type="SpinBox" parent="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons"] [node name="FPSValue" type="SpinBox" parent="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons"]
margin_right = 74.0 margin_left = 48.0
margin_right = 122.0
margin_bottom = 24.0 margin_bottom = 24.0
hint_tooltip = "FPS_HT" hint_tooltip = "FPS_HT"
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
@ -424,25 +378,107 @@ value = 6.0
align = 1 align = 1
suffix = "FPS" suffix = "FPS"
[node name="LoopAnim" type="TextureButton" parent="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons" groups=[ [node name="HSeparator" type="HSeparator" parent="AnimationContainer/TimelineContainer"]
"UIButtons", margin_top = 32.0
]] margin_right = 604.0
margin_left = 78.0 margin_bottom = 36.0
margin_right = 98.0
[node name="OpacityContainer" type="HBoxContainer" parent="AnimationContainer/TimelineContainer"]
margin_top = 40.0
margin_right = 604.0
margin_bottom = 64.0
custom_constants/separation = 2
[node name="OpacityLabel" type="Label" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_right = 53.0
margin_bottom = 24.0 margin_bottom = 24.0
hint_tooltip = "No loop" size_flags_horizontal = 0
size_flags_vertical = 1
text = "Opacity:"
valign = 1
[node name="OpacitySlider" type="HSlider" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_left = 55.0
margin_right = 167.0
margin_bottom = 24.0
rect_min_size = Vector2( 112, 0 )
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
texture_normal = ExtResource( 34 ) size_flags_vertical = 1
value = 100.0
ticks_on_borders = true
[node name="OpacitySpinBox" type="SpinBox" parent="AnimationContainer/TimelineContainer/OpacityContainer"]
margin_left = 169.0
margin_right = 243.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
size_flags_vertical = 4
value = 100.0
align = 1
[node name="TimelineScroll" type="ScrollContainer" parent="AnimationContainer/TimelineContainer"]
margin_top = 68.0
margin_right = 604.0
margin_bottom = 200.0
size_flags_vertical = 3
[node name="LayersAndFrames" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll"]
margin_right = 252.0
margin_bottom = 132.0
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames"]
margin_right = 212.0
margin_bottom = 132.0
[node name="LayerLabel" type="Label" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer"]
margin_right = 212.0
margin_bottom = 16.0
rect_min_size = Vector2( 0, 16 )
text = "Layers"
align = 1
valign = 1
[node name="LayersContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer"]
margin_top = 20.0
margin_right = 212.0
margin_bottom = 56.0
[node name="LayerContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer/LayersContainer" instance=ExtResource( 18 )]
margin_right = 212.0
[node name="VBoxContainer2" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames"]
margin_left = 216.0
margin_right = 252.0
margin_bottom = 132.0
[node name="FrameIDs" type="HBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2"]
margin_right = 36.0
margin_bottom = 14.0
[node name="Label" type="Label" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2/FrameIDs"]
margin_right = 36.0
margin_bottom = 14.0
rect_min_size = Vector2( 36, 0 )
text = "1"
align = 1
[node name="FramesContainer" type="VBoxContainer" parent="AnimationContainer/TimelineContainer/TimelineScroll/LayersAndFrames/VBoxContainer2"]
margin_top = 18.0
margin_right = 36.0
margin_bottom = 18.0
[node name="VSeparator" type="VSeparator" parent="AnimationContainer"] [node name="VSeparator" type="VSeparator" parent="AnimationContainer"]
margin_left = 547.0 visible = false
margin_right = 551.0 margin_left = 692.0
margin_bottom = 196.0 margin_right = 696.0
margin_bottom = 200.0
[node name="OnionSkinningButtons" type="VBoxContainer" parent="AnimationContainer"] [node name="OnionSkinningButtons" type="VBoxContainer" parent="AnimationContainer"]
margin_left = 555.0 visible = false
margin_right = 681.0 margin_left = 570.0
margin_bottom = 196.0 margin_right = 696.0
margin_bottom = 200.0
[node name="OnionSkinning" type="Label" parent="AnimationContainer/OnionSkinningButtons"] [node name="OnionSkinning" type="Label" parent="AnimationContainer/OnionSkinningButtons"]
margin_right = 126.0 margin_right = 126.0
@ -483,19 +519,17 @@ mouse_default_cursor_shape = 2
text = "Blue-Red Mode" text = "Blue-Red Mode"
[node name="VSeparator2" type="VSeparator" parent="AnimationContainer"] [node name="VSeparator2" type="VSeparator" parent="AnimationContainer"]
margin_left = 685.0 margin_left = 700.0
margin_right = 689.0 margin_right = 704.0
margin_bottom = 196.0 margin_bottom = 200.0
[node name="AnimationTimer" type="Timer" parent="."] [node name="AnimationTimer" type="Timer" parent="."]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/AddLayer" to="." method="add_layer" binds= [ true ]] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/AddLayer" to="." method="add_layer" binds= [ true ]]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/RemoveLayer" to="." method="_on_RemoveLayer_pressed"] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/RemoveLayer" to="." method="_on_RemoveLayer_pressed"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/MoveUpLayer" to="." method="change_layer_order" binds= [ 1 ]] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/MoveUpLayer" to="." method="change_layer_order" binds= [ 1 ]]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/MoveDownLayer" to="." method="change_layer_order" binds= [ -1 ]] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/MoveDownLayer" to="." method="change_layer_order" binds= [ -1 ]]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/CloneLayer" to="." method="add_layer" binds= [ false ]] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/CloneLayer" to="." method="add_layer" binds= [ false ]]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/LayerButtons/MergeDownLayer" to="." method="_on_MergeDownLayer_pressed"] [connection signal="pressed" from="AnimationContainer/ForLayerButtons/LayerButtons/MergeDownLayer" to="." method="_on_MergeDownLayer_pressed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/OpacityContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/OpacityContainer/OpacitySpinBox" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/AddFrame" to="." method="add_frame"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/AddFrame" to="." method="add_frame"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/FirstFrame" to="." method="_on_FirstFrame_pressed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/FirstFrame" to="." method="_on_FirstFrame_pressed"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/PreviousFrame" to="." method="_on_PreviousFrame_pressed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/PreviousFrame" to="." method="_on_PreviousFrame_pressed"]
@ -503,8 +537,11 @@ margin_bottom = 196.0
[connection signal="toggled" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/PlayForward" to="." method="_on_PlayForward_toggled"] [connection signal="toggled" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/PlayForward" to="." method="_on_PlayForward_toggled"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/NextFrame" to="." method="_on_NextFrame_pressed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/NextFrame" to="." method="_on_NextFrame_pressed"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/LastFrame" to="." method="_on_LastFrame_pressed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons/LastFrame" to="." method="_on_LastFrame_pressed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons/FPSValue" to="." method="_on_FPSValue_value_changed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons/OnionSkinning" to="." method="_on_OnionSkinning_pressed"]
[connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons/LoopAnim" to="." method="_on_LoopAnim_pressed"] [connection signal="pressed" from="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons/LoopAnim" to="." method="_on_LoopAnim_pressed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons/FPSValue" to="." method="_on_FPSValue_value_changed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/OpacityContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="value_changed" from="AnimationContainer/TimelineContainer/OpacityContainer/OpacitySpinBox" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="value_changed" from="AnimationContainer/OnionSkinningButtons/PastOnionSkinning" to="." method="_on_PastOnionSkinning_value_changed"] [connection signal="value_changed" from="AnimationContainer/OnionSkinningButtons/PastOnionSkinning" to="." method="_on_PastOnionSkinning_value_changed"]
[connection signal="value_changed" from="AnimationContainer/OnionSkinningButtons/FutureOnionSkinning" to="." method="_on_FutureOnionSkinning_value_changed"] [connection signal="value_changed" from="AnimationContainer/OnionSkinningButtons/FutureOnionSkinning" to="." method="_on_FutureOnionSkinning_value_changed"]
[connection signal="toggled" from="AnimationContainer/OnionSkinningButtons/BlueRedMode" to="." method="_on_BlueRedMode_toggled"] [connection signal="toggled" from="AnimationContainer/OnionSkinningButtons/BlueRedMode" to="." method="_on_BlueRedMode_toggled"]

View file

@ -40,6 +40,12 @@ func add_frame() -> void:
Global.undo_redo.add_undo_property(Global, "current_frame", Global.current_frame) Global.undo_redo.add_undo_property(Global, "current_frame", Global.current_frame)
Global.undo_redo.commit_action() Global.undo_redo.commit_action()
func _on_OnionSkinning_pressed() -> void:
Global.onion_skinning = !Global.onion_skinning
Global.canvas.update()
func _on_LoopAnim_pressed() -> void: func _on_LoopAnim_pressed() -> void:
match animation_loop: match animation_loop:
0: # Make it loop 0: # Make it loop

View file

@ -72,37 +72,38 @@ func _ready() -> void:
func _draw() -> void: func _draw() -> void:
draw_texture_rect(Global.transparent_background, Rect2(location, size), true) # Draw transparent background draw_texture_rect(Global.transparent_background, Rect2(location, size), true) # Draw transparent background
# Onion Skinning # Onion Skinning
# Past if Global.onion_skinning:
if Global.onion_skinning_past_rate > 0: # Past
var color : Color if Global.onion_skinning_past_rate > 0:
if Global.onion_skinning_blue_red: var color : Color
color = Color.blue if Global.onion_skinning_blue_red:
else: color = Color.blue
color = Color.white else:
for i in range(1, Global.onion_skinning_past_rate + 1): color = Color.white
if Global.current_frame >= i: for i in range(1, Global.onion_skinning_past_rate + 1):
var layer_i := 0 if Global.current_frame >= i:
for layer in Global.canvases[Global.current_frame - i].layers: var layer_i := 0
if Global.layers[layer_i][1]: # If it's visible for layer in Global.canvases[Global.current_frame - i].layers:
color.a = 0.6 / i if Global.layers[layer_i][1]: # If it's visible
draw_texture(layer[1], location, color) color.a = 0.6 / i
layer_i += 1 draw_texture(layer[1], location, color)
layer_i += 1
# Future # Future
if Global.onion_skinning_future_rate > 0: if Global.onion_skinning_future_rate > 0:
var color : Color var color : Color
if Global.onion_skinning_blue_red: if Global.onion_skinning_blue_red:
color = Color.red color = Color.red
else: else:
color = Color.white color = Color.white
for i in range(1, Global.onion_skinning_future_rate + 1): for i in range(1, Global.onion_skinning_future_rate + 1):
if Global.current_frame < Global.canvases.size() - i: if Global.current_frame < Global.canvases.size() - i:
var layer_i := 0 var layer_i := 0
for layer in Global.canvases[Global.current_frame + i].layers: for layer in Global.canvases[Global.current_frame + i].layers:
if Global.layers[layer_i][1]: # If it's visible if Global.layers[layer_i][1]: # If it's visible
color.a = 0.6 / i color.a = 0.6 / i
draw_texture(layer[1], location, color) draw_texture(layer[1], location, color)
layer_i += 1 layer_i += 1
# Draw current frame layers # Draw current frame layers
for i in range(layers.size()): for i in range(layers.size()):

View file

@ -111,10 +111,11 @@ var show_guides := true
var show_animation_timeline := true var show_animation_timeline := true
# Onion skinning options # Onion skinning options
var onion_skinning := false
# warning-ignore:unused_class_variable # warning-ignore:unused_class_variable
var onion_skinning_past_rate := 0 var onion_skinning_past_rate := 1
# warning-ignore:unused_class_variable # warning-ignore:unused_class_variable
var onion_skinning_future_rate := 0 var onion_skinning_future_rate := 1
# warning-ignore:unused_class_variable # warning-ignore:unused_class_variable
var onion_skinning_blue_red := false var onion_skinning_blue_red := false

View file

@ -226,7 +226,7 @@ border_width_right = 10
border_width_bottom = 8 border_width_bottom = 8
border_color = Color( 0.2, 0.2, 0.2, 1 ) border_color = Color( 0.2, 0.2, 0.2, 1 )
[sub_resource type="StyleBoxFlat" id=28] [sub_resource type="StyleBoxFlat" id=26]
bg_color = Color( 0.321569, 0.321569, 0.321569, 1 ) bg_color = Color( 0.321569, 0.321569, 0.321569, 1 )
border_width_left = 4 border_width_left = 4
border_width_top = 4 border_width_top = 4
@ -239,7 +239,7 @@ corner_radius_bottom_right = 4
corner_radius_bottom_left = 4 corner_radius_bottom_left = 4
anti_aliasing = false anti_aliasing = false
[sub_resource type="StyleBoxFlat" id=29] [sub_resource type="StyleBoxFlat" id=27]
bg_color = Color( 0.321569, 0.321569, 0.321569, 1 ) bg_color = Color( 0.321569, 0.321569, 0.321569, 1 )
border_width_left = 4 border_width_left = 4
border_width_top = 4 border_width_top = 4
@ -251,7 +251,7 @@ corner_radius_top_right = 4
corner_radius_bottom_right = 4 corner_radius_bottom_right = 4
corner_radius_bottom_left = 4 corner_radius_bottom_left = 4
[sub_resource type="StyleBoxFlat" id=30] [sub_resource type="StyleBoxFlat" id=28]
bg_color = Color( 0.0705882, 0.0705882, 0.0705882, 1 ) bg_color = Color( 0.0705882, 0.0705882, 0.0705882, 1 )
border_width_left = 2 border_width_left = 2
border_width_top = 20 border_width_top = 20
@ -467,7 +467,7 @@ TextEdit/fonts/font = null
TextEdit/icons/tab = null TextEdit/icons/tab = null
TextEdit/styles/completion = null TextEdit/styles/completion = null
TextEdit/styles/focus = null TextEdit/styles/focus = null
TextEdit/styles/normal = SubResource( 28 ) TextEdit/styles/normal = SubResource( 26 )
TextEdit/styles/read_only = null TextEdit/styles/read_only = null
Tree/colors/cursor_color = Color( 0, 0, 0, 1 ) Tree/colors/cursor_color = Color( 0, 0, 0, 1 )
Tree/colors/custom_button_font_highlight = Color( 0.941176, 0.941176, 0.941176, 1 ) Tree/colors/custom_button_font_highlight = Color( 0.941176, 0.941176, 0.941176, 1 )
@ -495,7 +495,7 @@ Tree/icons/checked = null
Tree/icons/select_arrow = null Tree/icons/select_arrow = null
Tree/icons/unchecked = null Tree/icons/unchecked = null
Tree/icons/updown = null Tree/icons/updown = null
Tree/styles/bg = SubResource( 29 ) Tree/styles/bg = SubResource( 27 )
Tree/styles/bg_focus = null Tree/styles/bg_focus = null
Tree/styles/button_pressed = null Tree/styles/button_pressed = null
Tree/styles/cursor = null Tree/styles/cursor = null
@ -526,4 +526,4 @@ WindowDialog/constants/title_height = 20
WindowDialog/fonts/title_font = null WindowDialog/fonts/title_font = null
WindowDialog/icons/close = null WindowDialog/icons/close = null
WindowDialog/icons/close_highlight = null WindowDialog/icons/close_highlight = null
WindowDialog/styles/panel = SubResource( 30 ) WindowDialog/styles/panel = SubResource( 28 )