diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index c69efdb20..e3ac2806d 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -240,6 +240,7 @@ {"name":"button","order":34,"path":"folders/widgets/button.yy",}, {"name":"rotator","order":35,"path":"folders/widgets/rotator.yy",}, {"name":"text","order":36,"path":"folders/widgets/text.yy",}, + {"name":"PC effects","order":24,"path":"folders/nodes/data/PC effects.yy",}, ], "ResourceOrderSettings": [ {"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",}, @@ -1116,6 +1117,7 @@ {"name":"sh_pb_shade_half","order":5,"path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",}, {"name":"node_polar","order":4,"path":"scripts/node_polar/node_polar.yy",}, {"name":"s_node_twirl","order":41,"path":"sprites/s_node_twirl/s_node_twirl.yy",}, + {"name":"s_node_perlin_extra","order":31,"path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",}, {"name":"sh_2d_light","order":28,"path":"shaders/sh_2d_light/sh_2d_light.yy",}, {"name":"node_image_animated","order":2,"path":"scripts/node_image_animated/node_image_animated.yy",}, {"name":"s_node_transform_array","order":17,"path":"sprites/s_node_transform_array/s_node_transform_array.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index e4bf053d8..c996f990d 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -275,6 +275,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"button","folderPath":"folders/widgets/button.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"rotator","folderPath":"folders/widgets/rotator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"text","folderPath":"folders/widgets/text.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"PC effects","folderPath":"folders/nodes/data/PC effects.yy",}, ], "IncludedFiles": [ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",}, @@ -1799,6 +1800,7 @@ {"id":{"name":"sh_pb_shade_half","path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",},}, {"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},}, {"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},}, + {"id":{"name":"s_node_perlin_extra","path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",},}, {"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},}, {"id":{"name":"instance_variable_set","path":"scripts/instance_variable_set/instance_variable_set.yy",},}, {"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},}, @@ -1878,6 +1880,7 @@ {"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},}, {"id":{"name":"s_node_armature_pose","path":"sprites/s_node_armature_pose/s_node_armature_pose.yy",},}, {"id":{"name":"sh_fd_visualize_pressure_glsl","path":"shaders/sh_fd_visualize_pressure_glsl/sh_fd_visualize_pressure_glsl.yy",},}, + {"id":{"name":"node_pc_balls","path":"scripts/node_pc_balls/node_pc_balls.yy",},}, {"id":{"name":"s_node_rigidSim_force","path":"sprites/s_node_rigidSim_force/s_node_rigidSim_force.yy",},}, {"id":{"name":"fd_rectangle_set_acceleration","path":"scripts/fd_rectangle_set_acceleration/fd_rectangle_set_acceleration.yy",},}, {"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},}, diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 54f377565..a81dee540 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -265,13 +265,11 @@ event_inherited(); var name = ""; if(i == -1) { - //draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent); name = "All"; } else { var cat = category[| i]; name = cat.name; - //draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); - + if(array_length(cat.filter)) { if(!array_exists(cat.filter, context)) { if(ADD_NODE_PAGE == i) @@ -282,9 +280,12 @@ event_inherited(); } } - BLEND_OVERRIDE; + var _hov = false; + BLEND_OVERRIDE if(sHOVER && catagory_pane.hover && point_in_rectangle(_m[0], _m[1], 0, _y + hh, category_width - ui(32), _y + hh + hg - 1)) { draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, category_width - ui(32), hg, CDEF.main_white, 1); + _hov = true; + if(i != ADD_NODE_PAGE && mouse_click(mb_left, sFOCUS)) { setPage(i); content_pane.scroll_y = 0; @@ -292,13 +293,29 @@ event_inherited(); content_pane.scroll_y_to = 0; } } - BLEND_NORMAL; + BLEND_NORMAL if(i == ADD_NODE_PAGE) draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent); else draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_inner); + var _is_extra = name == "Extra"; name = __txt(name); - draw_text(ui(8), _y + hh + hg / 2, name); + + var _tx = ui(8); + var _ty = _y + hh + hg / 2; + draw_text(_tx, _ty, name); + + if(_is_extra) { + var _cx = _tx + string_width(name) + ui(4); + var _cy = _ty - string_height(name) / 2 + ui(6); + + gpu_set_colorwriteenable(1, 1, 1, 0); + draw_sprite_ext(s_patreon_supporter, 0, _cx, _cy, 1, 1, 0, _hov? COLORS._main_icon_dark : COLORS.panel_bg_clear, 1); + gpu_set_colorwriteenable(1, 1, 1, 1); + + draw_sprite_ext(s_patreon_supporter, 1, _cx, _cy, 1, 1, 0, i == ADD_NODE_PAGE? COLORS._main_text_accent : COLORS._main_text_inner, 1); + } + hh += hg; } diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index 2f2386fee..ddf11f988 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -1166,7 +1166,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x static groupCheck = function(_x, _y, _s, _mx, _my) {} - static drawNodeBG = function(_x, _y, _mx, _my, _s, display_parameter = noone) {} + static drawNodeBG = function(_x, _y, _mx, _my, _s, display_parameter = noone) { return false; } static drawNode = function(_x, _y, _mx, _my, _s, display_parameter = noone) { #region if(draw_graph_culled) return; diff --git a/scripts/node_frame/node_frame.gml b/scripts/node_frame/node_frame.gml index 9b4ab5b98..09cf1eaaa 100644 --- a/scripts/node_frame/node_frame.gml +++ b/scripts/node_frame/node_frame.gml @@ -118,7 +118,8 @@ function Node_Frame(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { size_dragging_my = mouse_my; } } - return noone; + + return point_in_rectangle(_mx, _my, xx, yy, x1, y1); } #endregion static pointIn = function(_x, _y, _mx, _my, _s) { #region diff --git a/scripts/node_pc_balls/node_pc_balls.gml b/scripts/node_pc_balls/node_pc_balls.gml new file mode 100644 index 000000000..f895f4a90 --- /dev/null +++ b/scripts/node_pc_balls/node_pc_balls.gml @@ -0,0 +1,97 @@ +function Node_PC_Balls(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Pixel Cloud"; + + shader = sh_pixel_cloud; + uniform_sed = shader_get_uniform(shader, "seed"); + uniform_str = shader_get_uniform(shader, "strength"); + uniform_dis = shader_get_uniform(shader, "dist"); + + uniform_map_use = shader_get_uniform(shader, "useMap"); + uniform_map = shader_get_sampler_index(shader, "strengthMap"); + + uniform_grad_blend = shader_get_uniform(shader, "gradient_blend"); + uniform_grad = shader_get_uniform(shader, "gradient_color"); + uniform_grad_time = shader_get_uniform(shader, "gradient_time"); + uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); + + uniform_alpha = shader_get_uniform(shader, "alpha_curve"); + uniform_alamo = shader_get_uniform(shader, "curve_amount"); + uniform_rnd = shader_get_uniform(shader, "randomAmount"); + + inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + + inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(100000)); + + inputs[| 2] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01] }); + + inputs[| 3] = nodeValue("Strength map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + + inputs[| 4] = nodeValue("Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ); + + inputs[| 5] = nodeValue("Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1); + + inputs[| 6] = nodeValue("Alpha over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11); + + inputs[| 7] = nodeValue("Random blending", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider); + + inputs[| 8] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); + active_index = 8; + + input_display_list = [ 8, + ["Input", true], 0, 1, + ["Movement", false], 5, 2, 3, + ["Color", true], 4, 6, 7 + ] + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + attribute_surface_depth(); + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _sed = _data[1]; + var _str = _data[2]; + var _map = _data[3]; + var _gra = _data[4]; + var _dis = _data[5]; + var _alp = _data[6]; + var _rnd = _data[7]; + + var _grad = _gra.toArray(); + var _grad_color = _grad[0]; + var _grad_time = _grad[1]; + + surface_set_target(_outSurf); + DRAW_CLEAR + BLEND_OVERRIDE; + + shader_set(shader); + shader_set_uniform_f(uniform_sed, _sed); + shader_set_uniform_f(uniform_str, _str); + shader_set_uniform_f(uniform_dis, _dis); + if(is_surface(_map)) { + shader_set_uniform_i(uniform_map_use, 1); + texture_set_stage(uniform_map, surface_get_texture(_map)); + } else { + shader_set_uniform_i(uniform_map_use, 0); + } + + shader_set_uniform_i(uniform_grad_blend, _gra.type); + shader_set_uniform_f_array_safe(uniform_grad, _grad_color); + shader_set_uniform_f_array_safe(uniform_grad_time, _grad_time); + shader_set_uniform_i(uniform_grad_key, array_length(_gra.keys)); + + shader_set_uniform_f_array_safe(uniform_alpha, _alp); + shader_set_uniform_i(uniform_alamo, array_length(_alp)); + shader_set_uniform_f(uniform_rnd, _rnd); + + draw_surface_safe(_data[0], 0, 0); + shader_reset(); + + BLEND_NORMAL; + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pc_balls/node_pc_balls.yy b/scripts/node_pc_balls/node_pc_balls.yy new file mode 100644 index 000000000..b9b10ccf6 --- /dev/null +++ b/scripts/node_pc_balls/node_pc_balls.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pc_balls", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "PC effects", + "path": "folders/nodes/data/PC effects.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_perlin_extra/node_perlin_extra.gml b/scripts/node_perlin_extra/node_perlin_extra.gml index d268e4331..775bf6b87 100644 --- a/scripts/node_perlin_extra/node_perlin_extra.gml +++ b/scripts/node_perlin_extra/node_perlin_extra.gml @@ -40,9 +40,13 @@ function Node_Perlin_Extra(_x, _y, _group = noone) : Node_Shader_Generator(_x, _ .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Absolute worley", "Fluid", "Noisy perlin", "Camo" ]); addShaderProp(SHADER_UNIFORM.integer, "type"); + inputs[| 11] = nodeValue("Parameter A", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) + .setDisplay(VALUE_DISPLAY.slider); + addShaderProp(SHADER_UNIFORM.float, "param"); + input_display_list = [ ["Output", true], 0, 5, - ["Noise", false], 10, 1, 2, 3, 4, + ["Noise", false], 10, 1, 2, 3, 4, 11, ["Render", false], 6, 7, 8, 9, ]; diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index c59d3b332..54307e233 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -46,6 +46,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio static patreonExtra = function() { INLINE is_patreon_extra = true; + + ds_list_add(global.SUPPORTER_NODES, self); return self; } @@ -206,6 +208,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio global.RECENT_NODES = file_exists(recPath)? json_load_struct(recPath) : []; if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = []; + global.SUPPORTER_NODES = ds_list_create(); + var group = ds_list_create(); #region addNodeCatagory("Group", group, ["Node_Group"]); ds_list_add(group, "Groups"); @@ -549,7 +553,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio addNodeObject(generator, "Simplex Noise", s_node_noise_simplex, "Node_Noise_Simplex", [1, Node_Noise_Simplex], ["perlin"], "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.").setVersion(1080); addNodeObject(generator, "Cellular Noise", s_node_noise_cell, "Node_Cellular", [1, Node_Cellular], ["voronoi", "worley"], "Generate voronoi pattern."); addNodeObject(generator, "Anisotropic Noise", s_node_noise_aniso, "Node_Noise_Aniso", [1, Node_Noise_Aniso],, "Generate anisotropic noise."); - /**/ addNodeObject(generator, "Extra Perlins", s_node_noise_aniso, "Node_Perlin_Extra", [1, Node_Perlin_Extra], ["noise"], "Random perlin noise made with different algorithms.").patreonExtra(); + addNodeObject(generator, "Extra Perlins", s_node_perlin_extra, "Node_Perlin_Extra", [1, Node_Perlin_Extra], ["noise"], "Random perlin noise made with different algorithms.").patreonExtra(); ds_list_add(generator, "Patterns"); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); @@ -814,6 +818,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio addNodeCatagory("Custom", customs); __initNodeCustom(customs); + if(IS_PATREON) addNodeCatagory("Extra", global.SUPPORTER_NODES); + //var vct = ds_list_create(); //addNodeCatagory("VCT", vct); // addNodeObject(vct, "Biterator", s_node_print, "Node_Biterator", [1, Node_Biterator]); diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index b1ddce456..d58291055 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -314,10 +314,21 @@ function Panel_Collection() : PanelContent() constructor { folderPane = new scrollPane(group_w - ui(8), content_h, function(_y, _m) { #region draw_clear_alpha(COLORS.panel_bg_clear, 1); - //draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(8), 0, folderPane.surface_w - ui(8), folderPane.surface_h); var hh = ui(8); _y += ui(8); + if(pHOVER && folderPane.hover && point_in_rectangle(_m[0], _m[1], ui(32), _y - ui(2), group_w - ui(32), _y + ui(24))) { + draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, ui(32), _y - ui(2), group_w - ui(64), ui(24), CDEF.main_white, 1); + if(mouse_press(mb_left, pFOCUS)) + setContext(root); + } + + draw_set_alpha(0.25 + (context == root) * 0.5); + draw_set_text(f_p2, fa_center, fa_top, context == root? COLORS._main_text_accent : COLORS._main_text_inner); + draw_text(group_w / 2, _y, __txt("uncategorized")); + draw_set_alpha(1); + _y += ui(24); + for(var i = 0; i < ds_list_size(root.subDir); i++) { var hg = root.subDir[| i].draw(self, ui(8 + in_dialog * 8), _y, _m, folderPane.w - ui(20), pHOVER && folderPane.hover, pFOCUS, root); hh += hg; diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 851f5eb0d..fac1ec038 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -73,6 +73,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { selection_block = 0; nodes_selecting = []; nodes_select_drag = 0; + nodes_select_frame = 0; nodes_select_mx = 0; nodes_select_my = 0; @@ -724,6 +725,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { var log = false; var t = current_time; + var frame_hovering = noone; + for(var i = 0; i < ds_list_size(nodes_list); i++) { nodes_list[| i].cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64); nodes_list[| i].preDraw(gr_x, gr_y, graph_s, gr_x, gr_y); @@ -731,8 +734,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { printIf(log, "Predraw time: " + string(current_time - t)); t = current_time; #region draw frame - for(var i = 0; i < ds_list_size(nodes_list); i++) - nodes_list[| i].drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter); + for(var i = 0; i < ds_list_size(nodes_list); i++) { + if(nodes_list[| i].drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter)) + frame_hovering = nodes_list[| i]; + } #endregion printIf(log, "Frame draw time: " + string(current_time - t)); t = current_time; @@ -1064,7 +1069,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { for(var i = 0; i < ds_list_size(nodes_list); i++) { var _node = nodes_list[| i]; - if(is_instanceof(_node, Node_Frame)) continue; + if(is_instanceof(_node, Node_Frame) && !nodes_select_frame) continue; var _x = (_node.x + graph_x) * graph_s; var _y = (_node.y + graph_y) * graph_s; var _w = _node.w * graph_s; @@ -1096,7 +1101,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { if(mouse_release(mb_left)) nodes_junction_d = noone; } - + if(mouse_on_graph && mouse_press(mb_left, pFOCUS) && !graph_dragging_key && !graph_zooming_key) { if(junction_hovering && junction_hovering.draw_line_shift_hover) { nodes_select_mx = mx; @@ -1105,7 +1110,9 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { nodes_junction_dx = junction_hovering.draw_line_shift_x; nodes_junction_dy = junction_hovering.draw_line_shift_y; } else if(array_empty(nodes_selecting) && !value_focus && !drag_locking) { - nodes_select_drag = 1; + nodes_select_drag = 1; + nodes_select_frame = frame_hovering == noone; + nodes_select_mx = mx; nodes_select_my = my; } diff --git a/shaders/sh_perlin_extra/sh_perlin_extra.fsh b/shaders/sh_perlin_extra/sh_perlin_extra.fsh index 4cf8138dc..eba32f037 100644 --- a/shaders/sh_perlin_extra/sh_perlin_extra.fsh +++ b/shaders/sh_perlin_extra/sh_perlin_extra.fsh @@ -11,6 +11,7 @@ uniform vec2 u_resolution; uniform vec2 scale; uniform int iteration; uniform float seed; +uniform float param; uniform int tile; uniform int colored; @@ -88,7 +89,7 @@ float perlin(in vec2 st) { #region if(type == 3) { m += _n * amp; if(mod(i, 3.) == 2.) { - n += smoothstep(0.4, 0.6, m) * amp; + n += smoothstep(0.5 - param, 0.5 + param, m) * amp; m = 0.; sc /= 1.5; @@ -111,12 +112,12 @@ float perlin(in vec2 st) { #region } else if(type == 1) { sc *= 2.; amp *= .5; - pos *= 1. + _n; + pos *= 1. + _n + param; } else if(type == 2) { sc *= 2.; amp *= .5; pos += random2(vec2(n), seed) / sc; - pos *= 2.; + pos *= (2. + param); } } diff --git a/sprites/s_node_perlin_extra/5ae9f0ed-a137-4815-82ce-948069e175e0.png b/sprites/s_node_perlin_extra/5ae9f0ed-a137-4815-82ce-948069e175e0.png new file mode 100644 index 000000000..93d518cd2 Binary files /dev/null and b/sprites/s_node_perlin_extra/5ae9f0ed-a137-4815-82ce-948069e175e0.png differ diff --git a/sprites/s_node_perlin_extra/layers/5ae9f0ed-a137-4815-82ce-948069e175e0/13a61b1b-f8ef-4199-a2cb-e3a78caa9d2a.png b/sprites/s_node_perlin_extra/layers/5ae9f0ed-a137-4815-82ce-948069e175e0/13a61b1b-f8ef-4199-a2cb-e3a78caa9d2a.png new file mode 100644 index 000000000..93d518cd2 Binary files /dev/null and b/sprites/s_node_perlin_extra/layers/5ae9f0ed-a137-4815-82ce-948069e175e0/13a61b1b-f8ef-4199-a2cb-e3a78caa9d2a.png differ diff --git a/sprites/s_node_perlin_extra/s_node_perlin_extra.yy b/sprites/s_node_perlin_extra/s_node_perlin_extra.yy new file mode 100644 index 000000000..70e4cf273 --- /dev/null +++ b/sprites/s_node_perlin_extra/s_node_perlin_extra.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_perlin_extra", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5ae9f0ed-a137-4815-82ce-948069e175e0",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"13a61b1b-f8ef-4199-a2cb-e3a78caa9d2a","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "generator", + "path": "folders/nodes/icons/generator.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_perlin_extra", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"5ae9f0ed-a137-4815-82ce-948069e175e0","path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",},},},"Disabled":false,"id":"f209861b-34aa-4a7b-8f3f-e4d4990f027e","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file