From 213f39dabc80b8d0e79bcb51e00a8701e57c57a9 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Sat, 14 Sep 2024 12:37:19 +0700 Subject: [PATCH] shape improvement --- objects/o_dialog_command_palette/Create_0.gml | 4 +- objects/o_dialog_command_palette/Draw_64.gml | 7 ++- scripts/globals/globals.gml | 2 +- scripts/node_shape/node_shape.gml | 30 ++++++++++--- scripts/panel_menu/panel_menu.gml | 1 + shaders/sh_shape/sh_shape.fsh | 41 ++++++++++-------- .../89c97a04-3af5-4197-9771-499813b2fd32.png | Bin 0 -> 474 bytes .../e8dfb98d-070d-4cc7-8d95-66066132cc72.png | Bin 0 -> 474 bytes .../s_node_shape_type/s_node_shape_type.yy | 24 +++++----- 9 files changed, 70 insertions(+), 39 deletions(-) create mode 100644 sprites/s_node_shape_type/89c97a04-3af5-4197-9771-499813b2fd32.png create mode 100644 sprites/s_node_shape_type/layers/89c97a04-3af5-4197-9771-499813b2fd32/e8dfb98d-070d-4cc7-8d95-66066132cc72.png diff --git a/objects/o_dialog_command_palette/Create_0.gml b/objects/o_dialog_command_palette/Create_0.gml index ac6134119..df2945a44 100644 --- a/objects/o_dialog_command_palette/Create_0.gml +++ b/objects/o_dialog_command_palette/Create_0.gml @@ -164,7 +164,7 @@ event_inherited(); var ind = is_array(_spr)? _spr[1] : 0; var _ss = hght / max(sprite_get_width(spr), sprite_get_height(spr)) * .7; - draw_sprite_ext(spr, ind, ui(16), _ty, _ss, _ss, 0, COLORS._main_icon); + draw_sprite_ext(spr, ind, ui(16), _ty, _ss, _ss, 0, COLORS._main_icon_light); } if(_hasKey) { @@ -174,7 +174,7 @@ event_inherited(); var _hx = _dw - ui(6); var _hy = _ty + ui(1); - draw_set_text(f_p2, fa_right, fa_center, COLORS._main_accent); + draw_set_text(f_p3, fa_right, fa_center, COLORS._main_accent); var _ktxt = key_get_name(_key.key, _key.modi); var _tw = string_width(_ktxt); diff --git a/objects/o_dialog_command_palette/Draw_64.gml b/objects/o_dialog_command_palette/Draw_64.gml index 05e2e80a2..f3b9e3cac 100644 --- a/objects/o_dialog_command_palette/Draw_64.gml +++ b/objects/o_dialog_command_palette/Draw_64.gml @@ -1,6 +1,8 @@ /// @description init -draw_sprite_stretched(THEME.textbox, 3, dialog_x, dialog_y, dialog_w, dialog_h); +var _dialog_pd = 12; +// draw_sprite_stretched(THEME.textbox, 3, dialog_x, dialog_y, dialog_w, dialog_h); +draw_sprite_stretched(THEME.dialog, 0, dialog_x - _dialog_pd, dialog_y - _dialog_pd, dialog_w + _dialog_pd * 2, dialog_h + _dialog_pd * 2); WIDGET_CURRENT = tb_search; tb_search.setFocusHover(sHOVER, sFOCUS); @@ -15,4 +17,5 @@ sc_content.draw(dialog_x, dialog_y + ui(32)); draw_set_color(CDEF.main_dkgrey); draw_line(dialog_x, dialog_y + ui(32), dialog_x + dialog_w - 1, dialog_y + ui(32)); -draw_sprite_stretched(THEME.textbox, 1, dialog_x, dialog_y, dialog_w, dialog_h); \ No newline at end of file +// draw_sprite_stretched_ext(THEME.textbox, 1, dialog_x, dialog_y, dialog_w, dialog_h, c_white); +draw_sprite_stretched_ext(THEME.dialog, 1, dialog_x - _dialog_pd, dialog_y - _dialog_pd, dialog_w + _dialog_pd * 2, dialog_h + _dialog_pd * 2, COLORS._main_icon, .2); \ No newline at end of file diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index afc67322d..74093d4ef 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -42,7 +42,7 @@ LATEST_VERSION = 1_17_00; VERSION = 1_17_12_0; SAVE_VERSION = 1_17_10_0; - VERSION_STRING = MAC? "1.18.002m" : "1.18.rc2.001"; + VERSION_STRING = MAC? "1.18.002m" : "1.18.rc2.002"; BUILD_NUMBER = 1_17_12_0; HOTKEYS = ds_map_create(); diff --git a/scripts/node_shape/node_shape.gml b/scripts/node_shape/node_shape.gml index ab526508e..735291ff4 100644 --- a/scripts/node_shape/node_shape.gml +++ b/scripts/node_shape/node_shape.gml @@ -37,7 +37,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con shape_types = [ "Rectangle", "Diamond", "Trapezoid", "Parallelogram", -1, - "Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie", + "Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie", "Squircle", -1, "Regular polygon", "Star", "Cross", "Rounded Cross", -1, @@ -85,7 +85,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con newInput(14, nodeValue_PathNode("Shape path", self, noone)) .setVisible(true, true); - newInput(15, nodeValue_Enum_Scroll("Positioning Mode", self, 0, [ "Area", "Center + Scale", "Full Image" ])) + newInput(15, nodeValue_Enum_Scroll("Positioning Mode", self, 2, [ "Area", "Center + Scale", "Full Image" ])) newInput(16, nodeValue_Vec2("Center", self, [ DEF_SURF_W / 2, DEF_SURF_H / 2 ] )) .setUnitRef(onSurfaceSize); @@ -119,12 +119,16 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con newInput(29, nodeValue("Curve", self, CONNECT_TYPE.input, VALUE_TYPE.curve, CURVE_DEF_01)); + newInput(30, nodeValue_Bool("Caps", self, false)); + + newInput(31, nodeValue_Float("Factor", self, 2.5)); + newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone)); input_display_list = [ ["Output", false], 0, 6, ["Transform", false], 15, 3, 16, 17, 19, 28, - ["Shape", false], 14, 2, 9, 4, 13, 5, 7, 8, 21, 22, 23, 24, 25, 26, 27, + ["Shape", false], 14, 2, 9, 4, 13, 5, 7, 8, 21, 22, 23, 24, 25, 26, 27, 30, 31, ["Render", true], 10, 18, ["Height", true, 12], 29, 20, ["Background", true, 1], 11, @@ -289,6 +293,8 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con inputs[20].setVisible(_path == noone); inputs[13].setVisible(true); inputs[15].setVisible(true); + inputs[30].setVisible(false); + inputs[31].setVisible(false); _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); use_path = _path != noone && struct_has(_path, "getPointRatio"); @@ -427,17 +433,19 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con case "Arc" : inputs[5].setVisible(true); inputs[8].setVisible(true); + inputs[30].setVisible(true); inputs[5].name = "Inner radius"; var ar = _data[8]; var center = degtorad(ar[0] + ar[1]) / 2; - var range = degtorad(ar[0] - ar[1]) / 2; + var range = abs(degtorad(ar[0] - ar[1]) / 2); - shader_set_i("shape", 4); - shader_set_f("angle", center); + shader_set_i("shape", 4); + shader_set_i("endcap", _data[30]); + shader_set_f("angle", center); shader_set_f("angle_range", [ sin(range), cos(range) ] ); - shader_set_f("inner", _data[5] / 2); + shader_set_f("inner", _data[5] / 2); break; case "Teardrop" : @@ -549,6 +557,14 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con shader_set_f("teethAngle", _data[27]); break; + + case "Squircle" : + inputs[31].setVisible(true); + + shader_set_i("shape", 19); + shader_set_f("squircle_factor", abs(_data[31])); + break; + } shader_set_f("dimension", _dim); diff --git a/scripts/panel_menu/panel_menu.gml b/scripts/panel_menu/panel_menu.gml index 4e246a137..ded79c162 100644 --- a/scripts/panel_menu/panel_menu.gml +++ b/scripts/panel_menu/panel_menu.gml @@ -712,6 +712,7 @@ function Panel_Menu() : PanelContent() constructor { tby0 = ty0; } + if(full_name) tw += string_width(".pxc"); var _b = buttonInstant(THEME.button_hide_fill, tbx0, tby0, tw, th, [mx, my], pFOCUS, pHOVER); var _hov = _b > 0; diff --git a/shaders/sh_shape/sh_shape.fsh b/shaders/sh_shape/sh_shape.fsh index f3d28f715..6666c5409 100644 --- a/shaders/sh_shape/sh_shape.fsh +++ b/shaders/sh_shape/sh_shape.fsh @@ -38,6 +38,7 @@ uniform vec2 center; uniform vec2 scale; uniform vec2 trep; uniform float shapeScale; +uniform int endcap; uniform int teeth; uniform vec2 teethSize; @@ -45,6 +46,7 @@ uniform float teethAngle; uniform vec2 arrow; uniform float arrow_head; +uniform float squircle_factor; uniform vec4 bgColor; @@ -185,10 +187,14 @@ float sdStar(in vec2 p, in float r, in int n, in float m, in float ang) { //m=[2 // sca is the sin/cos of the orientation // scb is the sin/cos of the aperture float sdArc( in vec2 p, in vec2 sca, in vec2 scb, in float ra, in float rb ) { + p = -p; p *= mat2(sca.x, sca.y, -sca.y, sca.x); p.x = abs(p.x); - float k = (scb.y * p.x > scb.x * p.y) ? dot(p.xy,scb) : length(p); - return sqrt( dot(p, p) + ra * ra - 2.0 * ra * k ) - rb; + + bool k = scb.y * p.x > scb.x * p.y; + + if(endcap == 1) return (k? length(p - scb * ra) : abs(length(p) - ra)) - rb; + return (k? 1. : abs(length(p) - ra)) - rb; } float sdSegment( in vec2 p, in vec2 a, in vec2 b ) { @@ -422,21 +428,22 @@ void main() { d = sdStar( coord, 0.9 - corner, sides, 2. + inner * (float(sides) - 2.), angle ); d -= corner; - } else if(shape == 4) { d = sdArc( coord, vec2(sin(angle), cos(angle)), angle_range, 0.9 - inner, inner ); } - else if(shape == 5) { d = sdTearDrop( coord + vec2(0., 0.5), stRad, edRad, 1. ); } - else if(shape == 6) { d = sdCross( coord, vec2(1. + corner, outer), corner ); } - else if(shape == 7) { d = sdVesica( coord, inner, outer ); } - else if(shape == 8) { d = sdCrescent( coord, inner, outer, angle ); } - else if(shape == 9) { d = sdDonut( coord, inner ); } - else if(shape == 10) { d = sdRhombus( coord, vec2(1. - corner) ) - corner; } - else if(shape == 11) { d = sdTrapezoid( coord, trep.x - corner, trep.y - corner, 1. - corner ) - corner; } - else if(shape == 12) { d = sdParallelogram( coord, 1. - corner - parall, 1. - corner, parall) - corner; } - else if(shape == 13) { d = sdHeart( coord ); } - else if(shape == 14) { d = sdCutDisk( coord, 1., inner ); } - else if(shape == 15) { d = sdPie( coord, vec2(sin(angle), cos(angle)), 1. ); } - else if(shape == 16) { d = sdRoundedCross( coord, 1. - corner ) - corner; } - else if(shape == 17) { d = sdArrow( coord, arrow.x, arrow.y, arrow_head); } - else if(shape == 18) { d = sdGear( coord, inner, teeth, teethSize, teethAngle); } + } else if(shape == 4) { d = sdArc( coord, vec2(sin(angle), cos(angle)), angle_range, 1. - inner, inner ); } + else if(shape == 5) { d = sdTearDrop( coord + vec2(0., 0.5), stRad, edRad, 1. ); } + else if(shape == 6) { d = sdCross( coord, vec2(1. + corner, outer), corner ); } + else if(shape == 7) { d = sdVesica( coord, inner, outer ); } + else if(shape == 8) { d = sdCrescent( coord, inner, outer, angle ); } + else if(shape == 9) { d = sdDonut( coord, inner ); } + else if(shape == 10) { d = sdRhombus( coord, vec2(1. - corner) ) - corner; } + else if(shape == 11) { d = sdTrapezoid( coord, trep.x - corner, trep.y - corner, 1. - corner ) - corner; } + else if(shape == 12) { d = sdParallelogram( coord, 1. - corner - parall, 1. - corner, parall) - corner; } + else if(shape == 13) { d = sdHeart( coord ); } + else if(shape == 14) { d = sdCutDisk( coord, 1., inner ); } + else if(shape == 15) { d = sdPie( coord, vec2(sin(angle), cos(angle)), 1. ); } + else if(shape == 16) { d = sdRoundedCross( coord, 1. - corner ) - corner; } + else if(shape == 17) { d = sdArrow( coord, arrow.x, arrow.y, arrow_head); } + else if(shape == 18) { d = sdGear( coord, inner, teeth, teethSize, teethAngle); } + else if(shape == 19) { d = pow(pow(abs(coord.x), squircle_factor) + pow(abs(coord.y), squircle_factor), 1. / squircle_factor) - 1.; } float cc, color = 0.; diff --git a/sprites/s_node_shape_type/89c97a04-3af5-4197-9771-499813b2fd32.png b/sprites/s_node_shape_type/89c97a04-3af5-4197-9771-499813b2fd32.png new file mode 100644 index 0000000000000000000000000000000000000000..8e379e8c33229c17a8182af6d3d036ba17049082 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj3dtTpz6=aiY77hwEes65fI|H(?D00@*#WBR=_}i)0e9Z;| zF2_BY!x=OKRIYo?jA;{g;tHM-?J_wna6)Rcy@uC8kLa88+QloyEVd|a-RAL$X8~(~ zcjzV)MuVUz&98lnCh2(EdGg)4rcixaqF6Q|CtD@*Mx8qQW4;BR8Q)#ct^01XLD%l< zr~7-%GZFv?xr#?leIZ3b-+d9uet+sMd}QG1~+|& zppB;)N@ky&C0KS#w9L-K@sr>T@4atIXSMUpVY}aGY_GI=g<;hLnW$IHXI0$ieGQrX z0q8N+64!{5l*E!$tK_0oAjM#0U}U0eV5w_p5@KL#Wn^GwY^H5sU}a!X`t|w)6b-rg uDVb@NxHYh>$d3VP(16=el9`)YT#}eufLl-SUcY9b9tKZWKbLh*2~7aMww$*B literal 0 HcmV?d00001 diff --git a/sprites/s_node_shape_type/layers/89c97a04-3af5-4197-9771-499813b2fd32/e8dfb98d-070d-4cc7-8d95-66066132cc72.png b/sprites/s_node_shape_type/layers/89c97a04-3af5-4197-9771-499813b2fd32/e8dfb98d-070d-4cc7-8d95-66066132cc72.png new file mode 100644 index 0000000000000000000000000000000000000000..8e379e8c33229c17a8182af6d3d036ba17049082 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj3dtTpz6=aiY77hwEes65fI|H(?D00@*#WBR=_}i)0e9Z;| zF2_BY!x=OKRIYo?jA;{g;tHM-?J_wna6)Rcy@uC8kLa88+QloyEVd|a-RAL$X8~(~ zcjzV)MuVUz&98lnCh2(EdGg)4rcixaqF6Q|CtD@*Mx8qQW4;BR8Q)#ct^01XLD%l< zr~7-%GZFv?xr#?leIZ3b-+d9uet+sMd}QG1~+|& zppB;)N@ky&C0KS#w9L-K@sr>T@4atIXSMUpVY}aGY_GI=g<;hLnW$IHXI0$ieGQrX z0q8N+64!{5l*E!$tK_0oAjM#0U}U0eV5w_p5@KL#Wn^GwY^H5sU}a!X`t|w)6b-rg uDVb@NxHYh>$d3VP(16=el9`)YT#}eufLl-SUcY9b9tKZWKbLh*2~7aMww$*B literal 0 HcmV?d00001 diff --git a/sprites/s_node_shape_type/s_node_shape_type.yy b/sprites/s_node_shape_type/s_node_shape_type.yy index 38e37ae08..1a048e3b3 100644 --- a/sprites/s_node_shape_type/s_node_shape_type.yy +++ b/sprites/s_node_shape_type/s_node_shape_type.yy @@ -22,6 +22,7 @@ {"$GMSpriteFrame":"","%Name":"83cbb736-e130-438e-b366-d4834ff26292","name":"83cbb736-e130-438e-b366-d4834ff26292","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, {"$GMSpriteFrame":"","%Name":"c993ff0d-daf9-4950-9c17-252474cc9195","name":"c993ff0d-daf9-4950-9c17-252474cc9195","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, {"$GMSpriteFrame":"","%Name":"41c086f9-4334-4833-a514-0a6c3194841b","name":"41c086f9-4334-4833-a514-0a6c3194841b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"89c97a04-3af5-4197-9771-499813b2fd32","name":"89c97a04-3af5-4197-9771-499813b2fd32","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, {"$GMSpriteFrame":"","%Name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, {"$GMSpriteFrame":"","%Name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, {"$GMSpriteFrame":"","%Name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, @@ -67,7 +68,7 @@ }, "eventStubScript":null, "eventToFunction":{}, - "length":19.0, + "length":20.0, "lockOrigin":false, "moments":{ "$KeyframeStore":"", @@ -116,33 +117,36 @@ {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"41c086f9-4334-4833-a514-0a6c3194841b","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, },"Disabled":false,"id":"4c444757-09fd-40d2-a457-c3a3ff5cc662","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"89c97a04-3af5-4197-9771-499813b2fd32","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"a574c8c1-ff17-4631-b4f2-f91557514995","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"45408932-cb01-462e-9fee-4188d46331b4","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"45408932-cb01-462e-9fee-4188d46331b4","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"12a7f51a-f928-49aa-8f69-1261ddf60d83","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"12a7f51a-f928-49aa-8f69-1261ddf60d83","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"f2a3bc4d-69bd-4b2a-95dc-b8b4095852ec","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"f2a3bc4d-69bd-4b2a-95dc-b8b4095852ec","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"68cedd47-7826-45d0-936a-09d3f0b2514e","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"9b4d9126-b4d4-4c7a-82ce-cce6f63de1b1","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"9b4d9126-b4d4-4c7a-82ce-cce6f63de1b1","IsCreationKey":false,"Key":14.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"d327df90-02a8-4278-a2f0-bad7924956ff","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"08e182fb-9797-4ce1-b4bd-d39862c036c0","IsCreationKey":false,"Key":14.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"08e182fb-9797-4ce1-b4bd-d39862c036c0","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"4dd803df-0824-47d6-a1d9-a4c0b94aa30f","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"7b49830e-1876-4d95-99a2-c9a3f8401044","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"7b49830e-1876-4d95-99a2-c9a3f8401044","IsCreationKey":false,"Key":16.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"60deee41-cb26-435b-b3dd-7f03e79b3f50","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"ebd5e057-56d6-4239-9544-690c95b076f6","IsCreationKey":false,"Key":16.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"ebd5e057-56d6-4239-9544-690c95b076f6","IsCreationKey":false,"Key":17.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"49f66653-48bb-46ca-adb5-39604325a9d1","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"cd22fe67-e516-45a9-96de-b624bf5c6754","IsCreationKey":false,"Key":17.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"cd22fe67-e516-45a9-96de-b624bf5c6754","IsCreationKey":false,"Key":18.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, {"$Keyframe":"","Channels":{ "0":{"$SpriteFrameKeyframe":"","Id":{"name":"71e478b1-ed0d-4f73-b942-57d5680a935e","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"e6879ae7-52d0-4dfe-89fe-0ec9d4d53e26","IsCreationKey":false,"Key":18.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + },"Disabled":false,"id":"e6879ae7-52d0-4dfe-89fe-0ec9d4d53e26","IsCreationKey":false,"Key":19.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, ],"resourceType":"KeyframeStore","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange":null,