From 07db587b6c644af2c983dd3fef5160404baf6c9b Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Thu, 26 Mar 2020 20:56:30 +0200 Subject: [PATCH] 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. --- .../Dark Themes/Timeline/Onion_Skinning.png | Bin 0 -> 660 bytes .../Timeline/Onion_Skinning.png.import | 34 ++ .../Timeline/Onion_Skinning_Hover.png | Bin 0 -> 2581 bytes .../Timeline/Onion_Skinning_Hover.png.import | 34 ++ .../Gold Themes/Timeline/Onion_Skinning.png | Bin 0 -> 3451 bytes .../Timeline/Onion_Skinning.png.import | 34 ++ .../Timeline/Onion_Skinning_Hover.png | Bin 0 -> 3506 bytes .../Timeline/Onion_Skinning_Hover.png.import | 34 ++ .../Graphics/Light Themes/Onion_Skinning.png | Bin 0 -> 3145 bytes .../Light Themes/Onion_Skinning.png.import | 34 ++ .../Light Themes/Onion_Skinning_Hover.png | Bin 0 -> 3343 bytes .../Onion_Skinning_Hover.png.import | 34 ++ .../Light Themes/Timeline/Onion_Skinning.png | Bin 0 -> 3145 bytes .../Timeline/Onion_Skinning.png.import | 34 ++ .../Timeline/Onion_Skinning_Hover.png | Bin 0 -> 3343 bytes .../Timeline/Onion_Skinning_Hover.png.import | 34 ++ Prefabs/AnimationTimeline.tscn | 359 ++++++++++-------- Scripts/AnimationTimeline.gd | 6 + Scripts/Canvas.gd | 61 +-- Scripts/Global.gd | 5 +- Themes & Styles/Dark Theme/Dark Theme.tres | 12 +- 21 files changed, 516 insertions(+), 199 deletions(-) create mode 100644 Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png create mode 100644 Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png.import create mode 100644 Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png create mode 100644 Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png.import create mode 100644 Assets/Graphics/Gold Themes/Timeline/Onion_Skinning.png create mode 100644 Assets/Graphics/Gold Themes/Timeline/Onion_Skinning.png.import create mode 100644 Assets/Graphics/Gold Themes/Timeline/Onion_Skinning_Hover.png create mode 100644 Assets/Graphics/Gold Themes/Timeline/Onion_Skinning_Hover.png.import create mode 100644 Assets/Graphics/Light Themes/Onion_Skinning.png create mode 100644 Assets/Graphics/Light Themes/Onion_Skinning.png.import create mode 100644 Assets/Graphics/Light Themes/Onion_Skinning_Hover.png create mode 100644 Assets/Graphics/Light Themes/Onion_Skinning_Hover.png.import create mode 100644 Assets/Graphics/Light Themes/Timeline/Onion_Skinning.png create mode 100644 Assets/Graphics/Light Themes/Timeline/Onion_Skinning.png.import create mode 100644 Assets/Graphics/Light Themes/Timeline/Onion_Skinning_Hover.png create mode 100644 Assets/Graphics/Light Themes/Timeline/Onion_Skinning_Hover.png.import diff --git a/Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png b/Assets/Graphics/Dark Themes/Timeline/Onion_Skinning.png new file mode 100644 index 0000000000000000000000000000000000000000..93acce0c25ea7253514a50f5d3fe353ae04dd115 GIT binary patch literal 660 zcmV;F0&D$=P)EX>4Tx04R}tkv&MmKpe$iQ$^8=phZL+GPF(>L`58>ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9CsG4OY zV^J}aT@|}t(Tf29VGK#k)Z?keG(5-GJ$!tV@h8Y7ldA+q zjs;YpLUR1zfAG6oGe0%yCIzBE=ZkHBgn_PIpi#5!?_=9;oB;l3;7V)xD|KM@lk{3k z3mpOd+rY(jOOyA2%N=0&NtX=Ck^D4;d>(i|qi@OrgSSA>n%i4*AEysMnz~xP0S*p< zu>xhUd%U~5y|;hQH2eDjW3O_d7Y=~l00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|mf3BrA^;p#cB@02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003-BL_t(I%VT60+9>?Rix-n-AT~|7ETf;7iHS|3 u4Ma~e=wUVjk`1od#05rR@x@5(DgXe3!5ucJ5`=C50000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+TB=Naw{ne{bv=k1V9MEa(Jm~b}-AIBf9O_PMr8A z`MU11X@gowI(pG={r9iBfAArnqf0C$*PJ~*siqnmZi+uXZT|+J_V4j0oonHK-dz_W zrU)Y)e@i~+7v>}A<2gT0J`MAH!>F!vq2DjGlTj?^2Iu@`BMQd`ex8il$%x{)^C@9J zch0rQtqSLJUeEPy27I0UB$Ajp2TAx%(Tn7Y`x1Q;*lqHDFjjkx`-Rc{e|I5`kSQ(- z_fr8C*nvP`juS%0LfdR&7_*PFUYve}GyzQHvWXBa|y@m=(FO2$oLR zFau&S1pqEU4T!<94KrUtO3{!r%zTZA3XTwx4V)PaF(8;$h^*m?-HDuo6@LXcCuQRn ze~O$l=w3wbJ#HVNHZ9+cjo1-}W>imzKCG|as}^QexIGWW?37BP3koJdX=<)bA;lJ& zmTCuEdvu^9NT|V0J?F+N^a;E4(MMe~ERqfz6<>IkI%;N`6Lk%KRUyt=tF%~}Rq1bx z?i&wk^jcas*-g_f3OyY%78F$;#L||QDI;*JQYvx9LL5taN(IKB8Oa&IBVmME6dD1U z5doHJaqyD1U@o1jPE|n!nU%`knzd~)(42fVx>pJR8b+}Xh4&*sIr))^#)RMHjzSki zV~cA$Wro{HZXMm17;Br#dB3g2rNckDkVI86sD5ZYS*FE3xi;?M02Zzl5&L@z9zOqpYg0$9( zD9nOXiYjvbZ?DzN_)s+-Y$7phww3@K+*pMnK1L#^=4p+@MeJ&vgpX$R{WR#L4XEut%>3QsM2HR z%AL&!4uv*tpD~RxicafX-R(VR=kX?s4L~mU4fRE^_IJ(ildMD3b%{LD@S(5`3XLav@P>FFP!CyvjV)Oq_Hx8g zYh$imj&RV}p_E@})~4LWGcbVVw*lbUmm(B?)RDONar{CUm${{Q)1{NUQ}^rb3AyD| z=G2Aj*4F)5`g%UP+ldO+igN;!)i6ki#&+IRic6vR2sWp`0UES)zXF-PW4nXw9p& zUOT7IBU=$h{{VMMo^Kw!J`FYoINvAg_T19gKC53$bk6aX8OvRmS$6 z@^}Dt@h2zZR~W58Blm>_p86nZ!+N$XR%=Jryn3ue(cUCSEFrOZOB--2_}z$;kGBAm zj<*2$cniQN8PN66a?e4}?UK+G>BJHTy4qRY|NUMfkQE*$CIA2dg=s@WP)S2WAaHVT zW@&6?004NLeUUv#!$2IxUsI(b6%ji~5zJ7XEQpFYN)?M>p|llRbuhW~3z{?}DK3tJ zYr(;f#j1mgv#t)Vf*|+-;^gS0=prTlFDbN$@!+^0@9sVB-T^|R!c?s^#*d7t}p^eK6h0X~st?f%Ws^E4huXpWMoqF#35p_*uioKvy!0_PZLKJRik_%>$1Xm zi?dp(vDQ8L3xj!WCCzo3!-!)E2_zvxMh#_DU{POXXr!1((SFRsA9nmna>?W>gOOta zRj800KlmT~?$#_!O}a_J7|{J<+aIGqU>9iCZTtJ!wwot_{~5T_+Wu+-nEfQZ-qs>V zK>s#yaoyJBJ>YT&7<$qrLvkcPO`%W#-p}Zpa=_p%(7WdL*4oGE1CXJvmT!QALtv~( z+3Ozf?&<99-!rZLegL}^a>P6XPUQdq00v@9M??Tn0KEWirrcGi00009a7bBm001r{ z001r{0eGc9b^rhX2XskIMF->q8WAr7*z>L#0000PbVXQnLvL+uWo~o;Lvm$dbY)~9 zcWHEJAV*0}P*;Ht7XSbNYe_^wR5;6HWME)mm@#9Tnhh=_=gW*|OIge)7PVTcaI#l^9*Vc_M@vk_;r2 r&PG78AvGLX$W1asHw+o6T?GID!uB19f_U-^00000NkvXXu0mjfDK(|k literal 0 HcmV?d00001 diff --git a/Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png.import b/Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png.import new file mode 100644 index 000000000..2134f9f4f --- /dev/null +++ b/Assets/Graphics/Dark Themes/Timeline/Onion_Skinning_Hover.png.import @@ -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 diff --git a/Assets/Graphics/Gold Themes/Timeline/Onion_Skinning.png b/Assets/Graphics/Gold Themes/Timeline/Onion_Skinning.png new file mode 100644 index 0000000000000000000000000000000000000000..bb2f2a55f4b5f2b5e7b2b77c4ad52b7f56cc85fa GIT binary patch literal 3451 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 void: Global.undo_redo.add_undo_property(Global, "current_frame", Global.current_frame) Global.undo_redo.commit_action() + +func _on_OnionSkinning_pressed() -> void: + Global.onion_skinning = !Global.onion_skinning + Global.canvas.update() + + func _on_LoopAnim_pressed() -> void: match animation_loop: 0: # Make it loop diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index 6ce894b3a..f889700ac 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -72,37 +72,38 @@ func _ready() -> void: func _draw() -> void: draw_texture_rect(Global.transparent_background, Rect2(location, size), true) # Draw transparent background # Onion Skinning - # Past - if Global.onion_skinning_past_rate > 0: - var color : Color - if Global.onion_skinning_blue_red: - color = Color.blue - else: - color = Color.white - for i in range(1, Global.onion_skinning_past_rate + 1): - if Global.current_frame >= i: - var layer_i := 0 - for layer in Global.canvases[Global.current_frame - i].layers: - if Global.layers[layer_i][1]: # If it's visible - color.a = 0.6 / i - draw_texture(layer[1], location, color) - layer_i += 1 + if Global.onion_skinning: + # Past + if Global.onion_skinning_past_rate > 0: + var color : Color + if Global.onion_skinning_blue_red: + color = Color.blue + else: + color = Color.white + for i in range(1, Global.onion_skinning_past_rate + 1): + if Global.current_frame >= i: + var layer_i := 0 + for layer in Global.canvases[Global.current_frame - i].layers: + if Global.layers[layer_i][1]: # If it's visible + color.a = 0.6 / i + draw_texture(layer[1], location, color) + layer_i += 1 - # Future - if Global.onion_skinning_future_rate > 0: - var color : Color - if Global.onion_skinning_blue_red: - color = Color.red - else: - color = Color.white - for i in range(1, Global.onion_skinning_future_rate + 1): - if Global.current_frame < Global.canvases.size() - i: - var layer_i := 0 - for layer in Global.canvases[Global.current_frame + i].layers: - if Global.layers[layer_i][1]: # If it's visible - color.a = 0.6 / i - draw_texture(layer[1], location, color) - layer_i += 1 + # Future + if Global.onion_skinning_future_rate > 0: + var color : Color + if Global.onion_skinning_blue_red: + color = Color.red + else: + color = Color.white + for i in range(1, Global.onion_skinning_future_rate + 1): + if Global.current_frame < Global.canvases.size() - i: + var layer_i := 0 + for layer in Global.canvases[Global.current_frame + i].layers: + if Global.layers[layer_i][1]: # If it's visible + color.a = 0.6 / i + draw_texture(layer[1], location, color) + layer_i += 1 # Draw current frame layers for i in range(layers.size()): diff --git a/Scripts/Global.gd b/Scripts/Global.gd index e305ae6f0..3fd347861 100644 --- a/Scripts/Global.gd +++ b/Scripts/Global.gd @@ -111,10 +111,11 @@ var show_guides := true var show_animation_timeline := true # Onion skinning options +var onion_skinning := false # warning-ignore:unused_class_variable -var onion_skinning_past_rate := 0 +var onion_skinning_past_rate := 1 # warning-ignore:unused_class_variable -var onion_skinning_future_rate := 0 +var onion_skinning_future_rate := 1 # warning-ignore:unused_class_variable var onion_skinning_blue_red := false diff --git a/Themes & Styles/Dark Theme/Dark Theme.tres b/Themes & Styles/Dark Theme/Dark Theme.tres index f6f0407c2..496bebd46 100644 --- a/Themes & Styles/Dark Theme/Dark Theme.tres +++ b/Themes & Styles/Dark Theme/Dark Theme.tres @@ -226,7 +226,7 @@ border_width_right = 10 border_width_bottom = 8 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 ) border_width_left = 4 border_width_top = 4 @@ -239,7 +239,7 @@ corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 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 ) border_width_left = 4 border_width_top = 4 @@ -251,7 +251,7 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 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 ) border_width_left = 2 border_width_top = 20 @@ -467,7 +467,7 @@ TextEdit/fonts/font = null TextEdit/icons/tab = null TextEdit/styles/completion = null TextEdit/styles/focus = null -TextEdit/styles/normal = SubResource( 28 ) +TextEdit/styles/normal = SubResource( 26 ) TextEdit/styles/read_only = null Tree/colors/cursor_color = Color( 0, 0, 0, 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/unchecked = null Tree/icons/updown = null -Tree/styles/bg = SubResource( 29 ) +Tree/styles/bg = SubResource( 27 ) Tree/styles/bg_focus = null Tree/styles/button_pressed = null Tree/styles/cursor = null @@ -526,4 +526,4 @@ WindowDialog/constants/title_height = 20 WindowDialog/fonts/title_font = null WindowDialog/icons/close = null WindowDialog/icons/close_highlight = null -WindowDialog/styles/panel = SubResource( 30 ) +WindowDialog/styles/panel = SubResource( 28 )