From f12afc3b4c3287794a60345c6af9be8402522e90 Mon Sep 17 00:00:00 2001 From: MakhamDev Date: Wed, 26 Jan 2022 12:57:34 +0700 Subject: [PATCH] Loop icon, add node parameters --- Pixels Composer.yyp | 5 + objects/o_dialog_add_node/Create_0.gml | 6 +- scripts/node_blend/node_blend.gml | 12 +- scripts/node_data/node_data.gml | 84 ++++----- scripts/node_iterate/node_iterate.gml | 2 +- scripts/node_pin/node_pin.gml | 44 ++++- scripts/node_registry/node_registry.gml | 12 +- scripts/node_statistic/node_counter.yy | 12 ++ scripts/node_statistic/node_statistic.gml | 164 ++++++++++++++++++ scripts/node_statistic/node_statistic.yy | 12 ++ scripts/node_value/node_value.gml | 43 ++++- scripts/panel_graph/panel_graph.gml | 62 ++++--- .../f519baa7-5340-4119-a1d4-d04fdc3ad6c4.png | Bin 0 -> 132 bytes .../fd730733-382b-46ed-96d0-f1cded7d84a6.png | Bin 181 -> 0 bytes .../968a0483-66d2-4ea1-89c4-0320180f3552.png | Bin 0 -> 131 bytes .../fcd5bc94-4043-4840-bd91-ebdb11c7c0e8.png | Bin 178 -> 0 bytes sprites/s_group_16/s_group_16.yy | 10 +- .../ea8927d0-67c9-4828-900b-5254f57c0caf.png | Bin 0 -> 189 bytes .../5f7b9286-4551-4aac-b972-d489f02fd7d6.png | Bin 0 -> 196 bytes sprites/s_loop_16/s_loop_16.yy | 79 +++++++++ .../3abce66a-8e22-4146-94d6-07b9273b37f4.png | Bin 0 -> 554 bytes .../29809c12-6302-4391-bf73-0878185bc4bf.png | Bin 0 -> 525 bytes sprites/s_node_group/s_node_group.yy | 79 +++++++++ .../1ac6820a-11e3-46a6-be15-03bab6868d56.png | Bin 0 -> 612 bytes .../28a778f1-a610-49f1-8bca-4be6215c6504.png | Bin 0 -> 588 bytes sprites/s_node_loop/s_node_loop.yy | 79 +++++++++ .../604a92a7-301f-4d97-9458-fb3556493573.png | Bin 626 -> 0 bytes .../9732a93b-d483-4e79-bede-d66327c3ff93.png | Bin 0 -> 742 bytes .../8e106beb-1be9-406e-954b-3a5f83ae687e.png | Bin 630 -> 0 bytes .../f239b3d3-5ebc-44b5-8261-e22fcc347486.png | Bin 0 -> 749 bytes .../s_node_pin_bg_active.yy | 32 ++-- .../419fe86d-dec4-4a4c-9e22-5a30877d4901.png | Bin 0 -> 302 bytes .../d15005af-1cac-4443-8a8c-c2e55e3a9569.png | Bin 0 -> 295 bytes sprites/s_node_statistic/s_node_statistic.yy | 79 +++++++++ 34 files changed, 700 insertions(+), 116 deletions(-) create mode 100644 scripts/node_statistic/node_counter.yy create mode 100644 scripts/node_statistic/node_statistic.gml create mode 100644 scripts/node_statistic/node_statistic.yy create mode 100644 sprites/s_group_16/f519baa7-5340-4119-a1d4-d04fdc3ad6c4.png delete mode 100644 sprites/s_group_16/fd730733-382b-46ed-96d0-f1cded7d84a6.png create mode 100644 sprites/s_group_16/layers/f519baa7-5340-4119-a1d4-d04fdc3ad6c4/968a0483-66d2-4ea1-89c4-0320180f3552.png delete mode 100644 sprites/s_group_16/layers/fd730733-382b-46ed-96d0-f1cded7d84a6/fcd5bc94-4043-4840-bd91-ebdb11c7c0e8.png create mode 100644 sprites/s_loop_16/ea8927d0-67c9-4828-900b-5254f57c0caf.png create mode 100644 sprites/s_loop_16/layers/ea8927d0-67c9-4828-900b-5254f57c0caf/5f7b9286-4551-4aac-b972-d489f02fd7d6.png create mode 100644 sprites/s_loop_16/s_loop_16.yy create mode 100644 sprites/s_node_group/3abce66a-8e22-4146-94d6-07b9273b37f4.png create mode 100644 sprites/s_node_group/layers/3abce66a-8e22-4146-94d6-07b9273b37f4/29809c12-6302-4391-bf73-0878185bc4bf.png create mode 100644 sprites/s_node_group/s_node_group.yy create mode 100644 sprites/s_node_loop/1ac6820a-11e3-46a6-be15-03bab6868d56.png create mode 100644 sprites/s_node_loop/layers/1ac6820a-11e3-46a6-be15-03bab6868d56/28a778f1-a610-49f1-8bca-4be6215c6504.png create mode 100644 sprites/s_node_loop/s_node_loop.yy delete mode 100644 sprites/s_node_pin_bg_active/604a92a7-301f-4d97-9458-fb3556493573.png create mode 100644 sprites/s_node_pin_bg_active/9732a93b-d483-4e79-bede-d66327c3ff93.png delete mode 100644 sprites/s_node_pin_bg_active/layers/604a92a7-301f-4d97-9458-fb3556493573/8e106beb-1be9-406e-954b-3a5f83ae687e.png create mode 100644 sprites/s_node_pin_bg_active/layers/9732a93b-d483-4e79-bede-d66327c3ff93/f239b3d3-5ebc-44b5-8261-e22fcc347486.png create mode 100644 sprites/s_node_statistic/419fe86d-dec4-4a4c-9e22-5a30877d4901.png create mode 100644 sprites/s_node_statistic/layers/419fe86d-dec4-4a4c-9e22-5a30877d4901/d15005af-1cac-4443-8a8c-c2e55e3a9569.png create mode 100644 sprites/s_node_statistic/s_node_statistic.yy diff --git a/Pixels Composer.yyp b/Pixels Composer.yyp index a28885f42..aaaae0874 100644 --- a/Pixels Composer.yyp +++ b/Pixels Composer.yyp @@ -58,6 +58,7 @@ {"id":{"name":"s_animate_node_go","path":"sprites/s_animate_node_go/s_animate_node_go.yy",},"order":26,}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":64,}, {"id":{"name":"s_node_alpha_grey","path":"sprites/s_node_alpha_grey/s_node_alpha_grey.yy",},"order":8,}, + {"id":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"order":114,}, {"id":{"name":"s_node_processor","path":"sprites/s_node_processor/s_node_processor.yy",},"order":18,}, {"id":{"name":"s_canvas_tools_pencil","path":"sprites/s_canvas_tools_pencil/s_canvas_tools_pencil.yy",},"order":4,}, {"id":{"name":"s_add_32","path":"sprites/s_add_32/s_add_32.yy",},"order":1,}, @@ -134,6 +135,7 @@ {"id":{"name":"s_node_junctions_single_hover","path":"sprites/s_node_junctions_single_hover/s_node_junctions_single_hover.yy",},"order":3,}, {"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":95,}, {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,}, + {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":15,}, {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":32,}, {"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},"order":1,}, {"id":{"name":"sh_blend_normal","path":"shaders/sh_blend_normal/sh_blend_normal.yy",},"order":1,}, @@ -343,6 +345,7 @@ {"id":{"name":"sh_seperate_shape_ite","path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},"order":2,}, {"id":{"name":"s_inspector_text_valign","path":"sprites/s_inspector_text_valign/s_inspector_text_valign.yy",},"order":1,}, {"id":{"name":"o_main","path":"objects/o_main/o_main.yy",},"order":1,}, + {"id":{"name":"s_loop_16","path":"sprites/s_loop_16/s_loop_16.yy",},"order":39,}, {"id":{"name":"area_function","path":"scripts/area_function/area_function.yy",},"order":2,}, {"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,}, {"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":20,}, @@ -443,6 +446,7 @@ {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":20,}, {"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},"order":1,}, {"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},"order":34,}, + {"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":115,}, {"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},"order":10,}, {"id":{"name":"s_search_16","path":"sprites/s_search_16/s_search_16.yy",},"order":20,}, {"id":{"name":"node_3d_prim_cube","path":"scripts/node_3d_prim_cube/node_3d_prim_cube.yy",},"order":5,}, @@ -543,6 +547,7 @@ {"id":{"name":"preferences","path":"scripts/preferences/preferences.yy",},"order":5,}, {"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":68,}, {"id":{"name":"timer_function","path":"scripts/timer_function/timer_function.yy",},"order":0,}, + {"id":{"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",},"order":113,}, {"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},"order":36,}, {"id":{"name":"s_node_image_sequence","path":"sprites/s_node_image_sequence/s_node_image_sequence.yy",},"order":57,}, {"id":{"name":"node_alpha_to_grey","path":"scripts/node_alpha_to_grey/node_alpha_to_grey.yy",},"order":21,}, diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 40ce42d1a..609fcb6b3 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -294,8 +294,10 @@ event_inherited(); draw_sprite(_node.spr, current_time * PREF_MAP[? "collection_preview_speed"] / 3000, _boxx + grid_size / 2, yy + grid_size / 2); draw_set_text(f_p1, fa_center, fa_top, c_white); - name_height = max(name_height, string_height_ext(_node.name, -1, grid_size) + 8); - draw_text_ext(_boxx + grid_size / 2, yy + grid_size + 4, _node.name, -1, grid_width); + var txt = _node.name; + if(_param != "") txt += " (" + _param + ")"; + name_height = max(name_height, string_height_ext(txt, -1, grid_size) + 8); + draw_text_ext(_boxx + grid_size / 2, yy + grid_size + 4, txt, -1, grid_width); if(point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) { node_selecting = i; diff --git a/scripts/node_blend/node_blend.gml b/scripts/node_blend/node_blend.gml index a845ecb41..a72591fcc 100644 --- a/scripts/node_blend/node_blend.gml +++ b/scripts/node_blend/node_blend.gml @@ -1,6 +1,16 @@ -function Node_create_Blend(_x, _y) { +function Node_create_Blend(_x, _y, _param = "") { var node = new Node_Blend(_x, _y); ds_list_add(PANEL_GRAPH.nodes_list, node); + + switch(_param) { + case "normal" : node.inputs[| 2].setValue(BLEND_MODE.normal) break; + case "add" : node.inputs[| 2].setValue(BLEND_MODE.add); break; + case "subtract" : node.inputs[| 2].setValue(BLEND_MODE.subtract); break; + case "multiply" : node.inputs[| 2].setValue(BLEND_MODE.multiply); break; + case "screen" : node.inputs[| 2].setValue(BLEND_MODE.screen); break; + case "maxx" : node.inputs[| 2].setValue(BLEND_MODE.maxx); break; + case "minn" : node.inputs[| 2].setValue(BLEND_MODE.minn); break; + } return node; } diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index cd02d7200..8075b32cc 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -182,9 +182,11 @@ function Node(_x, _y) constructor { } static preDraw = function(_x, _y, _s) { - var yy = y * _s + _y; + var xx = x * _s + _x; + var yy = y * _s + _y; var _in = yy + junction_shift_y * _s; + var amo = input_display_list == -1? ds_list_size(inputs) : max(ds_list_size(inputs), array_length(input_display_list)); for(var i = 0; i < amo; i++) { @@ -196,14 +198,17 @@ function Node(_x, _y) constructor { jun = inputs[| input_display_list[i]]; } + jun.x = xx; jun.y = _in; _in += 24 * _s * jun.isVisible(); } - var _in = yy + junction_shift_y * _s; + xx = xx + w * _s; + _in = yy + junction_shift_y * _s; for(var i = 0; i < ds_list_size(outputs); i++) { var jun = outputs[| i]; + jun.x = xx; jun.y = _in; _in += 24 * _s * jun.isVisible(); } @@ -231,20 +236,16 @@ function Node(_x, _y) constructor { } static drawJunctions = function(_x, _y, _mx, _my, _s) { - var ss = max(0.25, _s / 2); - var xx = x * _s + _x; var hover = noone; var amo = input_display_list == -1? ds_list_size(inputs) : max(ds_list_size(inputs), array_length(input_display_list)); var _show_in = show_input_name; var _show_ot = show_output_name; - var _draw_cc = c_white; - + show_input_name = false; show_output_name = false; - var jx = xx; for(var i = 0; i < amo; i++) { if(input_display_list == -1) jun = inputs[| i]; @@ -254,47 +255,18 @@ function Node(_x, _y) constructor { jun = inputs[| input_display_list[i]]; } - var jy = jun.y; - - if(jun.isVisible()) { - if(point_in_rectangle(_mx, _my, jx - 12 * _s, jy - 12 * _s, jx + 12 * _s, jy + 12 * _s) || DEBUG) { - _draw_cc = c_white; - hover = jun; - show_input_name = true; - draw_sprite_ext(jun.isArray()? s_node_junctions_array_hover : s_node_junctions_single_hover, jun.type, jx, jy, ss, ss, 0, c_white, 1); - } else { - _draw_cc = c_ui_blue_grey; - draw_sprite_ext(jun.isArray()? s_node_junctions_array : s_node_junctions_single, jun.type, jx, jy, ss, ss, 0, c_white, 1); - } - - if(_show_in) { - draw_set_text(f_p1, fa_right, fa_center, _draw_cc); - draw_text(jx - 12 * _s, jy, jun.name); - } + if(jun.drawJunction(_s, _mx, _my, _show_in)) { + show_input_name = true; + hover = jun; } } - var jx = xx + w * _s; for(var i = 0; i < ds_list_size(outputs); i++) { var jun = outputs[| i]; - if(jun.isVisible()) { - var jy = jun.y; - - if(point_in_rectangle(_mx, _my, jx - 12 * _s, jy - 12 * _s, jx + 12 * _s, jy + 12 * _s) || DEBUG) { - _draw_cc = c_white; - hover = jun; - show_output_name = true; - draw_sprite_ext(jun.isArray()? s_node_junctions_array_hover : s_node_junctions_single_hover, jun.type, jx, jy, ss, ss, 0, c_white, 1); - } else { - _draw_cc = c_ui_blue_grey; - draw_sprite_ext(jun.isArray()? s_node_junctions_array : s_node_junctions_single, jun.type, jx, jy, ss, ss, 0, c_white, 1); - } - - if(_show_ot) { - draw_set_text(f_p1, fa_left, fa_center, _draw_cc); - draw_text(jx + 12 * _s, jy, jun.name); - } + if(jun.drawJunction(_s, _mx, _my, _show_ot)) { + show_output_name = true; + hover = jun; } } @@ -302,15 +274,14 @@ function Node(_x, _y) constructor { } static drawConnections = function(_x, _y, mx, my, _s) { - var xx = x * _s + _x; var hovering = noone; for(var i = 0; i < ds_list_size(inputs); i++) { var jun = inputs[| i]; - var jx = xx; + var jx = jun.x; var jy = jun.y; if(jun.value_from && jun.isVisible()) { - var frx = _x + jun.value_from.node.x * _s + jun.value_from.node.w * _s; + var frx = jun.value_from.x; var fry = jun.value_from.y; var c0 = value_color(jun.value_from.type); @@ -341,6 +312,7 @@ function Node(_x, _y) constructor { } static drawPreview = function(_node, xx, yy, _s) { + if(_node.type != VALUE_TYPE.surface) return; var surf = _node.getValue(); if(is_array(surf)) { if(array_length(surf) == 0) return; @@ -380,11 +352,11 @@ function Node(_x, _y) constructor { unit = "us"; draw_set_color(c_ui_lime); } else if(render_time < 1000000) { - rt = round(render_time / 1000); + rt = string_format(render_time / 1000, -1, 2); unit = "ms"; draw_set_color(c_ui_orange); } else { - rt = round(render_time / 1000000); + rt = string_format(render_time / 1000000, -1, 2); unit = "s"; draw_set_color(c_ui_red); } @@ -437,7 +409,7 @@ function Node(_x, _y) constructor { static drawOverlay = function(_active, _x, _y, _s, _mx, _my) {} - static destroy = function() { + static destroy = function(_merge = false) { active = false; if(PANEL_GRAPH.node_hover == self) PANEL_GRAPH.node_hover = noone; if(PANEL_GRAPH.node_focus == self) PANEL_GRAPH.node_focus = noone; @@ -447,9 +419,23 @@ function Node(_x, _y) constructor { for(var i = 0; i < ds_list_size(outputs); i++) { var jun = outputs[| i]; + for(var j = 0; j < ds_list_size(jun.value_to); j++) { - jun.value_to[| j].checkConnection(); + var _vt = jun.value_to[| j]; + if(_vt.value_from == noone) return; + if(_vt.value_from.node != self) return; + + _vt.removeFrom(false); + + if(_merge) { + for( var k = 0; k < ds_list_size(inputs); k++ ) { + if(inputs[| k].value_from == noone) continue; + if(_vt.setFrom(inputs[| k].value_from)) break; + } + } } + + ds_list_clear(jun.value_to); } onDestroy(); diff --git a/scripts/node_iterate/node_iterate.gml b/scripts/node_iterate/node_iterate.gml index cb099f125..adc3af6d6 100644 --- a/scripts/node_iterate/node_iterate.gml +++ b/scripts/node_iterate/node_iterate.gml @@ -7,7 +7,7 @@ function Node_create_Iterate(_x, _y) { function Node_Iterate(_x, _y) : Node_Collection(_x, _y) constructor { name = "Loop"; color = c_ui_lime; - icon = s_group_16; + icon = s_loop_16; iterated = 0; diff --git a/scripts/node_pin/node_pin.gml b/scripts/node_pin/node_pin.gml index b9894973b..6ebe68bd2 100644 --- a/scripts/node_pin/node_pin.gml +++ b/scripts/node_pin/node_pin.gml @@ -12,6 +12,7 @@ function Node_Pin(_x, _y) : Node(_x, _y) constructor { auto_height = false; junction_shift_y = 16; previewable = false; + bg_spr = s_node_pin_bg; bg_sel_spr = s_node_pin_bg_active; @@ -27,13 +28,42 @@ function Node_Pin(_x, _y) : Node(_x, _y) constructor { } doUpdate(); - static drawNodeBase = function(xx, yy, _s) { - if(w * _s > 32) { - draw_sprite_stretched_ext(s_node_pin_bg, 0, xx, yy, w * _s, h * _s, color, 0.75); - bg_sel_spr = s_node_pin_bg_active; - } else { - draw_sprite_stretched_ext(s_node_pin_bg_s, 0, xx, yy, w * _s, h * _s, color, 0.75); - bg_sel_spr = s_node_pin_bg_active_s; + static pointIn = function(_mx, _my) { + return point_in_circle(_mx, _my, x, y, 24); + } + + static preDraw = function(_x, _y, _s) { + var xx = x * _s + _x; + var yy = y * _s + _y; + + inputs[| 0].x = xx; + inputs[| 0].y = yy; + + outputs[| 0].x = xx; + outputs[| 0].y = yy; + } + + static drawJunctions = function(_x, _y, _mx, _my, _s) { + var hover = noone; + + var jun = inputs[| 0].value_from == noone? inputs[| 0] : outputs[| 0]; + if(jun.drawJunction(_s, _mx, _my, false)) + hover = jun; + + return hover; + } + + static drawNode = function(_x, _y, _mx, _my, _s) { + if(group != PANEL_GRAPH.getCurrentContext()) return; + + var xx = x * _s + _x; + var yy = y * _s + _y; + + if(active_draw_index > -1) { + draw_sprite_ext(bg_sel_spr, 0, xx, yy, _s, _s, 0, c_white, 1); + active_draw_index = -1; } + + return drawJunctions(_x, _y, _mx, _my, _s); } } \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index f7afe0d30..7a112440b 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -85,7 +85,7 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { var filter = ds_list_create(); addNodeCatagory("Filter", filter); - addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", Node_create_Blend, ["merge"]); + addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", Node_create_Blend, ["normal", "add", "subtract", "multiply", "screen", "maxx", "minn"]); addNodeObject(filter, "Outline", s_node_border, "Node_Outline", Node_create_Outline, ["border"]); addNodeObject(filter, "Erode", s_node_erode, "Node_Erode", Node_create_Erode); addNodeObject(filter, "Trail", s_node_trail, "Node_Trail", Node_create_Trail); @@ -138,6 +138,7 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { var number = ds_list_create(); addNodeCatagory("Number", number); addNodeObject(number, "Math", s_node_math, "Node_Math", Node_create_Math, ["add", "subtract", "multiply", "divide", "power", "modulo", "round", "ceiling", "floor", "sin", "cos", "tan"]); + addNodeObject(number, "Statistic", s_node_statistic, "Node_Statistic", Node_create_Statistic, ["sum", "average", "mean", "median", "min", "max"]); addNodeObject(number, "Array", s_node_array, "Node_Array", Node_create_Array); addNodeObject(number, "Array length", s_node_array_length, "Node_Array_Length", Node_create_Array_Length); addNodeObject(number, "Array get", s_node_array_get, "Node_Array_Get", Node_create_Array_Get); @@ -195,13 +196,12 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { var node = ds_list_create(); addNodeCatagory("Node", node); + addNodeObject(node, "Group", s_node_group, "Node_Group", Node_create_Group); + addNodeObject(node, "Loop", s_node_loop, "Node_Iterate", Node_create_Iterate); addNodeObject(node, "Pin", s_node_pin, "Node_Pin", Node_create_Pin); addNodeObject(node, "Frame", s_node_frame, "Node_Frame", Node_create_Frame); addNodeObject(node, "Display text", s_node_text, "Node_Display_Text", Node_create_Display_Text); addNodeObject(node, "Condition", s_node_condition, "Node_Condition", Node_create_Condition); - - NODE_CREATE_FUCTION[? "Node_Group"] = Node_create_Group; - NODE_CREATE_FUCTION[? "Node_Iterate"] = Node_create_Iterate; #endregion #region node function @@ -228,10 +228,10 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { return _node; } - function nodeDelete(node) { + function nodeDelete(node, _merge = false) { var list = node.group == -1? NODES : node.group.nodes; ds_list_delete(list, ds_list_find_index(list, node)); - node.destroy(); + node.destroy(_merge); recordAction(ACTION_TYPE.node_delete, node); } diff --git a/scripts/node_statistic/node_counter.yy b/scripts/node_statistic/node_counter.yy new file mode 100644 index 000000000..10832a0b0 --- /dev/null +++ b/scripts/node_statistic/node_counter.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "variable", + "path": "folders/nodes/data/variable.yy", + }, + "resourceVersion": "1.0", + "name": "node_counter", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_statistic/node_statistic.gml b/scripts/node_statistic/node_statistic.gml new file mode 100644 index 000000000..5bedf2ff2 --- /dev/null +++ b/scripts/node_statistic/node_statistic.gml @@ -0,0 +1,164 @@ +enum STAT_OPERATOR { + _sum, + _average, + _median, + _max, + _min +} + +function Node_create_Statistic(_x, _y, _param = "") { + var node = new Node_Statistic(_x, _y); + ds_list_add(PANEL_GRAPH.nodes_list, node); + + switch(_param) { + case "sum" : node.inputs[| 0].setValue(STAT_OPERATOR._sum); break; + case "mean" : + case "average" : node.inputs[| 0].setValue(STAT_OPERATOR._average); break; + case "median" : node.inputs[| 0].setValue(STAT_OPERATOR._median); break; + case "min" : node.inputs[| 0].setValue(STAT_OPERATOR._min); break; + case "max" : node.inputs[| 0].setValue(STAT_OPERATOR._max); break; + } + + return node; +} + +function Node_Statistic(_x, _y) : Node(_x, _y) constructor { + name = "Statistic"; + previewable = false; + + w = 96; + min_h = 0; + + inputs[| 0] = nodeValue(0, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ + "Sum", "Mean", "Median", "Max", "Min"]); + + input_fix_len = ds_list_size(inputs); + + static createNewInput = function() { + var index = ds_list_size(inputs); + inputs[| index] = nodeValue( index, "Input", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, -1 ) + .setVisible(true, true); + } + createNewInput(); + + outputs[| 0] = nodeValue(0, "Statistic", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, -1); + + static updateValueFrom = function(index) { + var _l = ds_list_create(); + + for( var i = 0; i < input_fix_len; i++ ) { + _l[| i] = inputs[| i]; + } + + for( var i = input_fix_len; i < ds_list_size(inputs); i++ ) { + if(inputs[| i].value_from) { + ds_list_add(_l, inputs[| i]); + } else { + delete inputs[| i]; + } + } + + for( var i = 0; i < ds_list_size(_l); i++ ) { + _l[| i].index = i; + } + + ds_list_destroy(inputs); + inputs = _l; + + createNewInput(); + } + + static update = function() { + var type = inputs[| 0].getValue(); + var res = 0; + + switch(type) { + case STAT_OPERATOR._sum : + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + var val = inputs[| i].getValue(); + res += val; + } + break; + case STAT_OPERATOR._average : + if(ds_list_size(inputs) <= input_fix_len + 1) res = 0; + else { + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + var val = inputs[| i].getValue(); + res += val; + } + res /= ds_list_size(inputs) - 1 - input_fix_len; + } + break; + case STAT_OPERATOR._median : + var len = ds_list_size(inputs) - 1 - input_fix_len; + if(len == 0) { + res = 0; + break; + } + + var vals = array_create(len); + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + vals[i - input_fix_len] = inputs[| i].getValue(); + } + + if(len == 1) { + res = vals[0]; + break; + } + + array_sort(vals, true); + if(len % 2 == 0) + res = (vals[len / 2 - 1] + vals[len / 2]) / 2; + else + res = vals[(len - 1) / 2]; + break; + case STAT_OPERATOR._min : + var _min = 9999999999; + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + var val = inputs[| i].getValue(); + _min = min(_min, val); + } + res = _min; + break; + case STAT_OPERATOR._max : + var _max = -9999999999; + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + var val = inputs[| i].getValue(); + _max = max(_max, val); + } + res = _max; + break; + } + + outputs[| 0].setValue(res); + } + doUpdate(); + + static postDeserialize = function() { + var _inputs = load_map[? "inputs"]; + + for(var i = 0; i < ds_list_size(_inputs); i++) { + createNewInput(); + } + } + + function onDrawNode(xx, yy, _mx, _my, _s) { + draw_set_text(f_h3, fa_center, fa_center, c_white); + var str = ""; + switch(inputs[| 0].getValue()) { + case STAT_OPERATOR._average : str = "Avg"; break; + case STAT_OPERATOR._sum : str = "Sum"; break; + case STAT_OPERATOR._median : str = "Med"; break; + case STAT_OPERATOR._min : str = "Min"; break; + case STAT_OPERATOR._max : str = "Max"; break; + } + + var _ss = min((w - 16) * _s / string_width(str), (h - 18) * _s / string_height(str)); + + if(_s * w > 48) + draw_text_transformed(xx + w / 2 * _s, yy + 10 + h / 2 * _s, str, _ss, _ss, 0); + else + draw_text_transformed(xx + w / 2 * _s, yy + h / 2 * _s, str, _ss, _ss, 0); + } +} \ No newline at end of file diff --git a/scripts/node_statistic/node_statistic.yy b/scripts/node_statistic/node_statistic.yy new file mode 100644 index 000000000..b69c025a3 --- /dev/null +++ b/scripts/node_statistic/node_statistic.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "number", + "path": "folders/nodes/data/number.yy", + }, + "resourceVersion": "1.0", + "name": "node_statistic", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index e3216cd52..8f1234643 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -139,6 +139,7 @@ function nodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_TAG._default) constructor { name = _name; node = _node; + x = node.x; y = node.y; index = _index; type = _type; @@ -542,9 +543,9 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T return true; } - static removeFrom = function() { + static removeFrom = function(_remove_list = true) { recordAction(ACTION_TYPE.junction_connect, self, value_from); - if(value_from) + if(_remove_list && value_from != noone) ds_list_remove(value_from.value_to, self); value_from = noone; @@ -594,9 +595,11 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T } } - static checkConnection = function() { - if(value_from && !value_from.node.active) - removeFrom(); + static checkConnection = function(_remove_list = true) { + if(value_from == noone) return; + if(value_from.node.active) return; + + removeFrom(_remove_list); } static searchNodeBackward = function(_node) { @@ -939,6 +942,36 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T return hover; } + static drawJunction = function(_s, _mx, _my, _show) { + if(!isVisible()) return false; + + var ss = max(0.25, _s / 2); + var _draw_cc = c_white; + var is_hover = false; + + if(point_in_circle(_mx, _my, x, y, 10 * _s)) { + is_hover = true; + draw_sprite_ext(isArray()? s_node_junctions_array_hover : s_node_junctions_single_hover, type, x, y, ss, ss, 0, c_white, 1); + } else { + _draw_cc = c_ui_blue_grey; + draw_sprite_ext(isArray()? s_node_junctions_array : s_node_junctions_single, type, x, y, ss, ss, 0, c_white, 1); + } + + if(_show) { + draw_set_text(f_p1, fa_left, fa_center, _draw_cc); + + if(connect_type == JUNCTION_CONNECT.input) { + draw_set_halign(fa_right); + draw_text(x - 12 * _s, y, name); + } else { + draw_set_halign(fa_left); + draw_text(x + 12 * _s, y, name); + } + } + + return is_hover; + } + static isVisible = function() { if(!node.active) return false; return value_from || ( visible && show_in_inspector ); diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 80e4b222e..9f9fefcf8 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -100,11 +100,11 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { addHotkey("Graph", "Frame", "F", MOD_KEY.ctrl, function() { doFrame(); }); - addHotkey("Graph", "Delete", vk_delete, MOD_KEY.none, function() { doDelete(); }); + addHotkey("Graph", "Delete", vk_delete, MOD_KEY.shift, function() { doDelete(false); }); + addHotkey("Graph", "Delete merge", vk_delete, MOD_KEY.none, function() { doDelete(true); }); function stepBegin() { - var gr_x = graph_x * graph_s; - var gr_y = graph_y * graph_s; + var gr_x = graph_x * graph_s; var gr_y = graph_y * graph_s; var m_x = (mx - gr_x) / graph_s; var m_y = (my - gr_y) / graph_s; mouse_graph_x = m_x; @@ -219,6 +219,13 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { nodes_list[| i].preDraw(gr_x, gr_y, graph_s); } + #region draw frame + for(var i = 0; i < ds_list_size(nodes_list); i++) { + if(instanceof(nodes_list[| i]) != "Node_Frame") continue; + nodes_list[| i].drawNode(gr_x, gr_y, mx, my, graph_s); + } + #endregion + #region hover node_hovering = noone; for(var i = 0; i < ds_list_size(nodes_list); i++) { @@ -355,10 +362,6 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { value_focus = noone; #region draw node - for(var i = 0; i < ds_list_size(nodes_list); i++) { - if(instanceof(nodes_list[| i]) != "Node_Frame") continue; - nodes_list[| i].drawNode(gr_x, gr_y, mx, my, graph_s); - } for(var i = 0; i < ds_list_size(nodes_list); i++) { var n = nodes_list[| i]; if(instanceof(n) == "Node_Frame") continue; @@ -459,20 +462,32 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { } #endregion - if(FOCUS == panel && node_focus && value_focus == noone) { - if(mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) { - node_dragging = node_focus; - node_drag_mx = mouse_graph_x; - node_drag_my = mouse_graph_y; - node_drag_sx = node_focus.x; - node_drag_sy = node_focus.y; + if(FOCUS == panel) { + if(node_focus && value_focus == noone) { + if(mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) { + node_dragging = node_focus; + node_drag_mx = mouse_graph_x; + node_drag_my = mouse_graph_y; + node_drag_sx = node_focus.x; + node_drag_sy = node_focus.y; - node_drag_ox = -1; - node_drag_oy = -1; + node_drag_ox = -1; + node_drag_oy = -1; + } + + if(keyboard_check_pressed(vk_f5)) { + node_focus.updateForward(); + } } - if(keyboard_check_pressed(vk_f5)) { - node_focus.updateForward(); + if(DOUBLE_CLICK && junction_hovering != noone) { + var snap = PREF_MAP[? "node_snapping"]; + var _mx = round(mouse_graph_x / snap) * snap; + var _my = round(mouse_graph_y / snap) * snap; + + var _pin = Node_create_Pin(_mx, _my); + _pin.inputs[| 0].setFrom(junction_hovering.value_from); + junction_hovering.setFrom(_pin.outputs[| 0]); } } @@ -663,12 +678,12 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { f.inputs[| 0].setValue([x1 - x0, y1 - y0]); } - function doDelete() { + function doDelete(_merge = false) { if(node_focus != noone) - nodeDelete(node_focus); + nodeDelete(node_focus, _merge); for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - nodeDelete(nodes_select_list[| i]); + nodeDelete(nodes_select_list[| i], _merge); } ds_list_clear(nodes_select_list); } @@ -771,10 +786,9 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { function drawJunctionConnect() { if(value_dragging) { - draw_set_color(c_ui_orange); - var xx = value_dragging.node.x + graph_x + (value_dragging.connect_type == JUNCTION_CONNECT.input? 0 : value_dragging.node.w); - xx *= graph_s; + draw_set_color(value_color(value_dragging.type)); + var xx = value_dragging.x; var yy = value_dragging.y; if(PREF_MAP[? "curve_connection_line"]) diff --git a/sprites/s_group_16/f519baa7-5340-4119-a1d4-d04fdc3ad6c4.png b/sprites/s_group_16/f519baa7-5340-4119-a1d4-d04fdc3ad6c4.png new file mode 100644 index 0000000000000000000000000000000000000000..e33617374194220c99c707ca96794e6f923a2089 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-kvUwAr*6y6Bh_AxV6}?T*u~Tgn;rW`ArIERAvS$xvSHTn1w0SRGi_XZMmJUgDyAxV6}ZI0r=*w}jJ304=bgj6)dh+8;hKH@nbB*tFQ(ad<_=oL=pn1#H&%h;*D zbz%gwMj7L-UYFn9uk;S28lN**G>e;~&1{y{j_wuDn366twps03$~-60WqXOk7RHp_ e4L3>}7#Vy$ch;*D zbz%gwMj7L--URWh*ZngXg4m^`x%no%W@6Xy-NN`Hv5=wNg2y08m#3h$jG6h6^odsw z^cKzHF8H}|BBK!Bw;fk5n#meC{HbqX^zTx6(!|VDaf!i",}, "tracks": [ {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"cd931489-a9ec-4f0a-9dfd-c006030dc7f2","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"fd730733-382b-46ed-96d0-f1cded7d84a6","path":"sprites/s_group_16/s_group_16.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"ecfd6225-716e-4b78-aa1b-a05e9746368e","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f519baa7-5340-4119-a1d4-d04fdc3ad6c4","path":"sprites/s_group_16/s_group_16.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, ], "visibleRange": null, @@ -65,7 +65,7 @@ "resourceType": "GMSequence", }, "layers": [ - {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"fcd5bc94-4043-4840-bd91-ebdb11c7c0e8","tags":[],"resourceType":"GMImageLayer",}, + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"968a0483-66d2-4ea1-89c4-0320180f3552","tags":[],"resourceType":"GMImageLayer",}, ], "nineSlice": null, "parent": { diff --git a/sprites/s_loop_16/ea8927d0-67c9-4828-900b-5254f57c0caf.png b/sprites/s_loop_16/ea8927d0-67c9-4828-900b-5254f57c0caf.png new file mode 100644 index 0000000000000000000000000000000000000000..0d445a3660d1516e061aae42953cfdc5126fdc51 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EuJopAr*6y6Bh_<2)Np?Ho9Mh zVI`--nSSTL?h1MzzHN(aIL-RQ#Mt4fLso$l!!@2Qje@iD7I6Px9L-?%z+OOs`_PXb z2M3RNyBa%AyVZQUQp%_|`{T*rx9S(SS%-hx2k*6%ypy*#JF5nd^@hPO3@kaiIj6-6*7Edq6GI(YFF=(|o;GUz` t(8$E5G|9-1c|m3kqugynhNF!f3@6#O%6f#az5zOm!PC{xWt~$(69C^}MFIc- literal 0 HcmV?d00001 diff --git a/sprites/s_loop_16/s_loop_16.yy b/sprites/s_loop_16/s_loop_16.yy new file mode 100644 index 000000000..5cdaf3858 --- /dev/null +++ b/sprites/s_loop_16/s_loop_16.yy @@ -0,0 +1,79 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 1, + "bbox_right": 14, + "bbox_top": 2, + "bbox_bottom": 13, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 16, + "height": 16, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"compositeImage":{"FrameId":{"name":"ea8927d0-67c9-4828-900b-5254f57c0caf","path":"sprites/s_loop_16/s_loop_16.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"ea8927d0-67c9-4828-900b-5254f57c0caf","path":"sprites/s_loop_16/s_loop_16.yy",},"LayerId":{"name":"5f7b9286-4551-4aac-b972-d489f02fd7d6","path":"sprites/s_loop_16/s_loop_16.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_loop_16","path":"sprites/s_loop_16/s_loop_16.yy",},"resourceVersion":"1.0","name":"ea8927d0-67c9-4828-900b-5254f57c0caf","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_loop_16","path":"sprites/s_loop_16/s_loop_16.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"33ae9c26-2ebe-4a34-b32a-d30918691358","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ea8927d0-67c9-4828-900b-5254f57c0caf","path":"sprites/s_loop_16/s_loop_16.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 8, + "yorigin": 8, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"s_loop_16","path":"sprites/s_loop_16/s_loop_16.yy",}, + "resourceVersion": "1.3", + "name": "s_loop_16", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"5f7b9286-4551-4aac-b972-d489f02fd7d6","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icon", + "path": "folders/sprites/icon.yy", + }, + "resourceVersion": "1.0", + "name": "s_loop_16", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_node_group/3abce66a-8e22-4146-94d6-07b9273b37f4.png b/sprites/s_node_group/3abce66a-8e22-4146-94d6-07b9273b37f4.png new file mode 100644 index 0000000000000000000000000000000000000000..7472ce40b936faa5369e419ca801a8d02749825d GIT binary patch literal 554 zcmV+_0@eMAP)okCKm;GT>K)%SG)->cGkx&0mNxw<4tMrS0R~UC~6TmoE zo^EltMb5ia>@V5?Bs;&rI6X;{&xP(6+5`mp*P4h5Y{c9oC-@&CxHXU2&PM`thMUS6 zan6YNcz>7M;qcT?iUqWdT516t(tDb{gp#wwXA5wUi@0k+fJv-!oG{mK>Z}E{aRun< z5&9PBQ~j(06kN3cj@QfB*07Dmoru;a2{-|fF>oq^S?;WZP1Pt+#i+^vr3KLQs}MT{ zxN1RNsIwN-CZK99s3xFHEvQ8RZ!B%y4fO43CxD^E#1ZnW-lPbO&pI=Z{dr(R0o+fX sWO!FwrWb~m5cvA8W=o+>V0S(L116o&5+kqw?*IS*07*qoM6N<$f~UFuBme*a literal 0 HcmV?d00001 diff --git a/sprites/s_node_group/layers/3abce66a-8e22-4146-94d6-07b9273b37f4/29809c12-6302-4391-bf73-0878185bc4bf.png b/sprites/s_node_group/layers/3abce66a-8e22-4146-94d6-07b9273b37f4/29809c12-6302-4391-bf73-0878185bc4bf.png new file mode 100644 index 0000000000000000000000000000000000000000..613b0bfb1f3a744d13c62f038e294c4a7d177a46 GIT binary patch literal 525 zcmV+o0`mQdP)(U3>`X>wSw_3h_bCxA*#^`P61H%37i^S}$2}2iV4^W|&lD9i2fo-MsOpkg zCLFQdfLqaV**hl(z`-JLiB%sc)6q4#fe(G5EY2$`wq;)N@R}`TOPjLuWK&rMs{j`{ z8NNkR0VZq$G{M?JvJ(HiO92`-f(5x($EyG*o*o`EDiX@{Fiy|#KLp&e zZRs?9yHa|deyI?AmVg!6gD?k{owvdC4auF-2jahG+q(oH`saq(u(ph8vEOWCHZv|p zR3x8Exi4}F2<5jf5mjMXA}9He@#pf*HUX)qTsTNhfDnu=RV>T&?~&u0uIOv zD)#l)5;qahwif84Rt`dI-1w{o@L>fI>Dvl%`aY)sjWU5A%LQ`ajY_^f+l=ZH(f(Wk zbwRu5f0TTJG(YO})g3nsuO+edP&|1KsYk?O5=veyd4Wv6d z2*6Q7;)w9A-lYhBKkCewj^6_b1Yke$rGj29)(t~X2$l3|t`yn@4(<65P!*9C8F_+M P00000NkvXXu0mjfNFd|z literal 0 HcmV?d00001 diff --git a/sprites/s_node_group/s_node_group.yy b/sprites/s_node_group/s_node_group.yy new file mode 100644 index 000000000..30b0b6ab2 --- /dev/null +++ b/sprites/s_node_group/s_node_group.yy @@ -0,0 +1,79 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 0, + "bbox_right": 31, + "bbox_top": 0, + "bbox_bottom": 31, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 32, + "height": 32, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"compositeImage":{"FrameId":{"name":"3abce66a-8e22-4146-94d6-07b9273b37f4","path":"sprites/s_node_group/s_node_group.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"3abce66a-8e22-4146-94d6-07b9273b37f4","path":"sprites/s_node_group/s_node_group.yy",},"LayerId":{"name":"29809c12-6302-4391-bf73-0878185bc4bf","path":"sprites/s_node_group/s_node_group.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"resourceVersion":"1.0","name":"3abce66a-8e22-4146-94d6-07b9273b37f4","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"49e5ed65-05c3-4633-aff7-998683309eb2","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"3abce66a-8e22-4146-94d6-07b9273b37f4","path":"sprites/s_node_group/s_node_group.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": {"x":0.0,"y":0.0,}, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 16, + "yorigin": 16, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",}, + "resourceVersion": "1.3", + "name": "s_node_group", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"29809c12-6302-4391-bf73-0878185bc4bf","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, + "resourceVersion": "1.0", + "name": "s_node_group", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_node_loop/1ac6820a-11e3-46a6-be15-03bab6868d56.png b/sprites/s_node_loop/1ac6820a-11e3-46a6-be15-03bab6868d56.png new file mode 100644 index 0000000000000000000000000000000000000000..7dd8b88d60abe5a813df24051359e784ade89629 GIT binary patch literal 612 zcmV-q0-ODbP)5S>(Ik2e5MAa32r(w%Ywa)fvQi>Q0y2;l_a&LwW#5^n%Ez!SvxLQfd;nIr|F zSoo^CCM47I-ZVWuGp+(wUmp)>rm(I$4K^_U`sQxo3ivtH;79C=0l8aviKSnlJPtGq1{{?6;;YyOQ3O@QR3X;$->Rcp%>paPH zOTx_x-ccNrjG4ZIZ<)ZbN`O{sBhSr-Ya66PRerYAg=lRRAQjFNH=;0000ht}Mh^B0P>IQ4J(7(D_ctSq!h**Jz&Y64UQMPj6n=OK> zHkoC?5!)rWJ=$%1>*N49SOgxi>wV8`Xq()?QXf1=ryP&>4-ppuHFMGrw($A&WmRn8 z#cpI5ss#x7qye$wnr+GB2P|S!)~U`8gi`*n4Q(qbf=Od8#%w({I9+^*fS#1K$N}yb zu!wVhyk#4>`quIRnY0$Uft3hwqPBpxU=x6?LvX@3#LBfkm2yUzU)UTg59!9ZiP&1k z?fvdH0XcaIv@Iyq56B(T`_g{Fmbe5c!OTJuOZ(W;rtjOog)$#d_>={op7e`c0*VtB z>s-47Obg^B@2LM1PfpSa{{<*wvO8fF^j9l7VQA}Y69DfY8)n1IQU`HxGI;uzLttDb zK$W`4ZL3MxMpT|#Y9LCg1R%l%VmR5h5s)L>S&1MM3o-K;f8w!G*?^OF!aeYc{Dvo@ ze=Gs`cKD{qZki+{dK4#z3czH!ck|>mhUCDx;7oQa1;BxXG@xcl=^I<*$_Hx+P!VLD zV8=u*05_Jd?gnx@$_1#CMab3L6v6W&+ZxhtH`fq==!8rKceS}*7&=1e$z9DALfb%o aJ^uwi9I@UQe^yKY0000",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"5a35088e-5c73-469a-a1ef-eccef5aaecce","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"1ac6820a-11e3-46a6-be15-03bab6868d56","path":"sprites/s_node_loop/s_node_loop.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": {"x":0.0,"y":0.0,}, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 16, + "yorigin": 16, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",}, + "resourceVersion": "1.3", + "name": "s_node_loop", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"28a778f1-a610-49f1-8bca-4be6215c6504","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, + "resourceVersion": "1.0", + "name": "s_node_loop", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_node_pin_bg_active/604a92a7-301f-4d97-9458-fb3556493573.png b/sprites/s_node_pin_bg_active/604a92a7-301f-4d97-9458-fb3556493573.png deleted file mode 100644 index 500512ea724b3e3662c8aa6304ab8abc00eab13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP);6ff_v7Xot=VDfD8%#~b zAj$lRtlP+QDnx7}0^%T5Aflb)I5MiStj(3kOaowTNccPfSu`+zQTAnV83BA4I=>V@ z_?U{VAtLV=7YQiinW>{5%cA`?;2{ys1|+`a_b}X&BLW(E1uhedroaIS0w}~cf7z0~ zpNRtjZ_n=r9uRRPEMJtX2|ojX^KyJ|aBtu{Q>^?zK=++$@87cLmj=EC3ld8$O6xMf z%lWm{-jD=^Iaf@ZXou^Wc2ge?Yw9dyWPr-wJtBHHGz)aq0R(bWx7SAxFmnh{e6|Au zwDplI!fgixD$I+gVcX-MfFqE0fSo!5$f&FX0${EnP?}o3JhBrqD$xT08p1@6$S5Is z>rj#M0(JtZ3P>_gJc5AYY`}I!h-5;o*tX9Ejs9J1$p4A}=dx;oDHGb#1mgSI)WNQt zHuU=d1lBsCXoGVS0Ch)YOq*zL+S9g-SI@ELFore<9x0jHs(ld)3uUNw6UI zE~iVCQA9zph7MCx7Z)9lCPQyIxd}xR@QC2R2G{e^ndwB!{OIfXFIvjv zh1)6sISah4^GiH)zX`V+a4&M)Sa0F3Ab#9+^|rPVzBp5|Xk0r2a`oVZ?<29flB(QC z;xRLJ1+nM5wobT90Rtlqn9PWQAF=f@Dp^_Zn7x4wE2u?38^+dN1S|rFWJFs)6P3s> zMiCHUZ7{3n2wdG1fJip$^0}B|L>EB`YYh1}fW5`tP_ckFQ7O*Izu01whFT5J7i!TD z0K(r);<9)JOnU$tmB+rJi55*PAd2egP~tIj!fSxl08}~47Hsw{#ugVz zVmz+X2nx`f?^Qt43uautug5>)(sS9a`Xq@pYLG4s{M zT6BG`UvdFBgxa-eCN@i{UkT8u@-yYB@-GNyRNgQcSARc=#hzBg)1|hX+qza~x*6VN zfmQz4flRx8ah&#B2Ed^98zJpVVvrYG@&DCNR=TzA8<-YS4hecC>cJP)#7}%bCE*rP}>=) zfh6`%^xR&*r%I$~Mj+233xsGF#&K9wV?CQ#B6Ax6&ejS4K_Jii;-l>8;Y|RrU);Y@ zKkzYC+ZiIm+3Gd{GM)>g9_yjgUEp;h%mzp-_3uIbN~#1HIl+gsv@vj%1OiCaw+OG~ zRL+Da;P3o-;8h}yL}8vNTNC9B031J#pAPO9e8(0m@dSA9sP^7NcYbTZcbXt=iD35@uV(?)+rkv1+69)jqbXn@BJKEm-eZ|Jjb$_P090 z{TRTKb;Qqa%=LVwy9E@mob@m3mi3-HS+{u7gB00}WFQ}Wy*2H%06h;_WMd2VXu)n{ zMjwa_XnitRfWBJLuXsR#1I&c=i5pp71Xcw_n~K|CSWso48zAcei)?D)_NIaPYS#%| z2)g8c(8rtUM<6TxQ~~|WIk?8@?*MXVms}f#btv^00`>{#A-_tHLBHi0%t`iKKX6V2 z@__^r3`eu&0c8|8txs3kbN>@r?wqe)_Sh2$u-O#Pr4-Hj92c-AkY5AXpWlrX2RKejaYlZ{5+gNK zG(20VSU&*>doxYTQY&EE0Z^0pzM+X?T{ysziNl8Ck0mA?k%?wdj*yHW-eeen!mmh0Qw*?CmU)f6fkU?a*_{|@u$j5q}mXq9v)C;QEDZ~`1{W6q?(bl zzMgKgy1ZBs$`NPkC0BqOlPiJDS3&3(0{Sd}Pc>Qo72z~V!C+GUyXuRprHF^CEw?P| z8=a|U)CUWaBFTd>#U{v`{Al*!&k(Xn}|5G~|R%?Gyz;uwX>Zp}?GX#6N zjCPB@1nkPlt*W){;z3^(Rko9No44Y3SH-Ur+&{J7@U5G+U~zyUs4l&Rz|1^1JmFqL fm@>vCuOYqx!R04M7UdGl00000NkvXXu0mjfZ9!Qb literal 0 HcmV?d00001 diff --git a/sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy b/sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy index 779ff612f..242f1896d 100644 --- a/sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy +++ b/sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy @@ -8,14 +8,14 @@ "collisionTolerance": 0, "swfPrecision": 2.525, "bbox_left": 0, - "bbox_right": 31, + "bbox_right": 39, "bbox_top": 0, - "bbox_bottom": 31, + "bbox_bottom": 39, "HTile": false, "VTile": false, "For3D": false, - "width": 32, - "height": 32, + "width": 40, + "height": 40, "textureGroupId": { "name": "Default", "path": "texturegroups/Default", @@ -24,9 +24,9 @@ "gridX": 0, "gridY": 0, "frames": [ - {"compositeImage":{"FrameId":{"name":"604a92a7-301f-4d97-9458-fb3556493573","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ - {"FrameId":{"name":"604a92a7-301f-4d97-9458-fb3556493573","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"LayerId":{"name":"8e106beb-1be9-406e-954b-3a5f83ae687e","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, - ],"parent":{"name":"s_node_pin_bg_active","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","name":"604a92a7-301f-4d97-9458-fb3556493573","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"9732a93b-d483-4e79-bede-d66327c3ff93","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"9732a93b-d483-4e79-bede-d66327c3ff93","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"LayerId":{"name":"f239b3d3-5ebc-44b5-8261-e22fcc347486","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_node_pin_bg_active","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","name":"9732a93b-d483-4e79-bede-d66327c3ff93","tags":[],"resourceType":"GMSpriteFrame",}, ], "sequence": { "spriteId": {"name":"s_node_pin_bg_active","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",}, @@ -41,7 +41,7 @@ "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, "tracks": [ {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"9eeb162f-8b68-499f-8214-a3b5d1ff852f","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"604a92a7-301f-4d97-9458-fb3556493573","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + {"id":"f73a62f0-c920-4fc2-a716-dc0a607eb6a5","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9732a93b-d483-4e79-bede-d66327c3ff93","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, ], "visibleRange": null, @@ -54,8 +54,8 @@ "backdropHeight": 768, "backdropXOffset": 0.0, "backdropYOffset": 0.0, - "xorigin": 16, - "yorigin": 16, + "xorigin": 20, + "yorigin": 20, "eventToFunction": {}, "eventStubScript": null, "parent": {"name":"s_node_pin_bg_active","path":"sprites/s_node_pin_bg_active/s_node_pin_bg_active.yy",}, @@ -65,13 +65,13 @@ "resourceType": "GMSequence", }, "layers": [ - {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"8e106beb-1be9-406e-954b-3a5f83ae687e","tags":[],"resourceType":"GMImageLayer",}, + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"f239b3d3-5ebc-44b5-8261-e22fcc347486","tags":[],"resourceType":"GMImageLayer",}, ], "nineSlice": { - "left": 15, - "top": 16, - "right": 16, - "bottom": 15, + "left": 19, + "top": 20, + "right": 20, + "bottom": 19, "guideColour": [ 4294902015, 4294902015, @@ -80,7 +80,7 @@ ], "highlightColour": 1728023040, "highlightStyle": 0, - "enabled": true, + "enabled": false, "tileMode": [ 0, 0, diff --git a/sprites/s_node_statistic/419fe86d-dec4-4a4c-9e22-5a30877d4901.png b/sprites/s_node_statistic/419fe86d-dec4-4a4c-9e22-5a30877d4901.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6ab03d2db91db1318be959723f5c9f8c56e1ff GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJubwWBAr*6y6D1N3Fe#mrzrB&c zMLMcdg{OnLK|#)oe+DxfPmfhXhV_I0N4Bsjg!Zf5IWfb2b>lNWhA6#;qeW~hB;Lw8 z=sIj;ZaDadQG$#4IYU-sAp3*T1ONa3mzLO&YV3B5ZI(4dhGpm`$(wuFh=NHC~p zXghSkvLUWv8J~ih;N>%nN7NoYlx78!Ooxv#_VPq*5)^$JD9i9hQInzCoj;)_qb~Qr zQ>%>I{M&69|DNEx!ExlD!ybkg9V{vC7o-lzTwplD=a9pHYVy w9lT{1@O@m~{?>rOpIO13VI@OV6dx0V-bL?qOD^^;0|o$tr>mdKI;Vst0BH7aCIA2c literal 0 HcmV?d00001 diff --git a/sprites/s_node_statistic/layers/419fe86d-dec4-4a4c-9e22-5a30877d4901/d15005af-1cac-4443-8a8c-c2e55e3a9569.png b/sprites/s_node_statistic/layers/419fe86d-dec4-4a4c-9e22-5a30877d4901/d15005af-1cac-4443-8a8c-c2e55e3a9569.png new file mode 100644 index 0000000000000000000000000000000000000000..376ab32eeb0472354b5dfce635682627ff981ddd GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJcb+beAr*6yfBye(f7pRZOrY@L zk8`XFw+>vgO>~f9VEGtObwI`-A>j(6^Bu;?m!um~Y-eRCJKsCQcFQ^;XcvRnX~_ji zB?Syq8GiDenEjJcf{XbDgH~f8yFifxGxN3_Hz%#-M;Jp+rcJSE&|{d-Y{#>O`2|zP z+Xgl^rp_7D_!P7R`Cn^*NdXBtK894uoSPj{pH}cOe48NBuy--LhZ8T)k5jcCxB0i* zDE{@}yTNhfpTi!87ac4n?iWN3$XsAJ!sn2~f8={(--7nL+>W(@8<-ndona+IRTLi+gRQycifi8KE",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"1c14fa29-6bf4-4e3f-b9d3-7313153e5651","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"419fe86d-dec4-4a4c-9e22-5a30877d4901","path":"sprites/s_node_statistic/s_node_statistic.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": {"x":0.0,"y":0.0,}, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 16, + "yorigin": 16, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",}, + "resourceVersion": "1.3", + "name": "s_node_statistic", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"d15005af-1cac-4443-8a8c-c2e55e3a9569","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, + "resourceVersion": "1.0", + "name": "s_node_statistic", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file