From 174cdcf18e409ae86f038368ad534f20e1a603a5 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Mon, 3 Feb 2025 11:28:15 +0700 Subject: [PATCH] [Globalvar] Improve editing interface. --- datafiles/data/Locale/en/words.json | 3 + datafiles/data/Nodes/Internal.zip | Bin 9100580 -> 9100580 bytes datafiles/data/locale/en/words.json | 3 + objects/o_main/KeyPress_1.gml | 8 +- objects/o_main/Keyboard_1.gml | 1 + scripts/globals/globals.gml | 5 +- scripts/globalvar_drawer/globalvar_drawer.gml | 11 +- scripts/nodeValue_drawer/nodeValue_drawer.gml | 10 +- scripts/node_global/node_global.gml | 123 ++++++++++-------- scripts/node_surface_tag/node_surface_tag.gml | 14 +- scripts/node_threshold/node_threshold.gml | 13 +- scripts/node_value/node_value.gml | 26 ++++ scripts/panel_globalvar/panel_globalvar.gml | 35 +++-- scripts/panel_inspector/panel_inspector.gml | 15 ++- scripts/panel_menu/panel_menu.gml | 13 +- scripts/scrollBox/scrollBox.gml | 3 + scripts/struct_functions/struct_functions.gml | 7 + scripts/textArea/textArea.gml | 1 + scripts/textBox/textBox.gml | 3 +- scripts/vectorBox/vectorBox.gml | 2 + shaders/sh_threshold/sh_threshold.fsh | 8 +- .../sh_threshold_adaptive.fsh | 5 + .../0a7b17bd-81c5-455a-8e4a-08c78714ae06.png | Bin 0 -> 1680 bytes .../48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31.png | Bin 2006 -> 0 bytes .../4cb4c25a-07f0-4695-b0e0-5f8b60c5af80.png | Bin 0 -> 1680 bytes .../99a715df-5b64-4a74-92f3-b40b6eb55d83.png | Bin 2006 -> 0 bytes .../s_node_composite_tag.yy | 14 +- .../870b1093-75c1-4b28-8a93-74b80af32021.png | Bin 0 -> 1451 bytes .../ce622434-3c89-4399-84ec-f319e262251f.png | Bin 1485 -> 0 bytes .../8f274f47-0a94-4a8f-8ab9-a38ee2d7d7b3.png | Bin 0 -> 1451 bytes .../db386a22-99a6-4a60-82fb-052f2eb34503.png | Bin 1485 -> 0 bytes .../s_node_surface_tag/s_node_surface_tag.yy | 14 +- 32 files changed, 224 insertions(+), 113 deletions(-) create mode 100644 sprites/s_node_composite_tag/0a7b17bd-81c5-455a-8e4a-08c78714ae06.png delete mode 100644 sprites/s_node_composite_tag/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31.png create mode 100644 sprites/s_node_composite_tag/layers/0a7b17bd-81c5-455a-8e4a-08c78714ae06/4cb4c25a-07f0-4695-b0e0-5f8b60c5af80.png delete mode 100644 sprites/s_node_composite_tag/layers/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31/99a715df-5b64-4a74-92f3-b40b6eb55d83.png create mode 100644 sprites/s_node_surface_tag/870b1093-75c1-4b28-8a93-74b80af32021.png delete mode 100644 sprites/s_node_surface_tag/ce622434-3c89-4399-84ec-f319e262251f.png create mode 100644 sprites/s_node_surface_tag/layers/870b1093-75c1-4b28-8a93-74b80af32021/8f274f47-0a94-4a8f-8ab9-a38ee2d7d7b3.png delete mode 100644 sprites/s_node_surface_tag/layers/ce622434-3c89-4399-84ec-f319e262251f/db386a22-99a6-4a60-82fb-052f2eb34503.png diff --git a/datafiles/data/Locale/en/words.json b/datafiles/data/Locale/en/words.json index 8c86f1fb0..173fce32f 100644 --- a/datafiles/data/Locale/en/words.json +++ b/datafiles/data/Locale/en/words.json @@ -499,5 +499,8 @@ "use_expression" : "Use Expression", "view_settings" : "View Settings", + //1.18 + + "" : "" } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal.zip b/datafiles/data/Nodes/Internal.zip index de2e6fa2742deb9ffb28598b656720db9d65efef..ee06e53523ffd6aeaf479860ceab7b3892c825a3 100644 GIT binary patch delta 1413 zcmZA0TTB#J7zgmS%et_NK#R5RiVCfQq6qbZfC$KVMXbHZUa*S2c)uW)wl4M3_U~@z z7)*HayvUkueKRJ87`JH}O}Y!D573vkBrOmhj3y?=CVj5@pN|>DZt~mw&v(xG&dkp2 z)t|0qT%~h(8Lz;F47f239%Ld5UQEXfWMd|Bkc&LLir0{jS$G|@@doC=2S4Vb0P`>( z3s8t6yotB45Q|WZ5-i3Nlwv8Cp$yAWjtabu6nQBz;Dm^f`S&U(zXxP#1kgr|ArxrE~N( zeM8?Sy{(9MxW4DFcWnq&5*`d;wH1;JhVi3EN`L=>8fTGTpBY8|l%Lqzyz@^~=P`uk zVc1_q`ot&-^y7%~PCh4VF}s!Ox-OL&bB}<|C*32_J8stxoEsdCR!HExQK;K`Ro3KI zYr1?aTK;_c?hWP97sjGqDRGWFa$;_M+bKzt_W1vrNOezId8XWi)%>t^rrten z_he~>)jY;M6iX(?zbm}UH*nXc|PtDNB1J^ki98TIv>Ya~?kD!pqo6EFFh!5(EO40)Hp{Yp|qe-9J`oAA{+$Q-={^vXAeCOUfcdq|- zBkej}##oGl18Hz#JX}ae2Hco{iO9qxWMMM0@ew{o4yIr#reQi}zymL4A{VnT8*`9{ ze0+jWF&FbtfI`g20u*5(7NHo6QG!w|!BQ;4a;!iZR-zmgsKhE%VKu5zgIf4d_lr^I zclbJd`tN|@(anA%Q${U*qgXh2!!4zzfU#J@ z)quT-`#pLvU`&=W4=IpP6J)tKXk?{E^CcV$8if*iMj{@4VF;7--Jso@=X&&uSIE#W z-z$0lXK8lGUd0Rd=->Ozi4z=YIb*Dkb#qc3K7PfWxw-z`I&Yy!&buA550+D^8lxFe zcauS%(HdGy>u5b~pnBR!4YY|qr_Hp5w$c~0jkZ%G`6)m_3Q-e%NjqpK?V@JdO?zlB z?W6s4fDY0jI!s6CC>^8Ybb?M&3!S1?`ij1$Habmb=q#P1FtyWpxw}v(Y8`o}ESj!&j@Ug}T52_q zat}r0JtN;2{%O5TU45okKfh^rSZ70YN{n_6Q%hj?e3s!Wr|{pg&km%x?l zB^(Z`4H9mJRYPixH=ft7?&rzy#ZRhM0x#Mp;Xmu@JG<4~RN1Q^cdLTbT#ba 0) kb_hkey = keyboard_key; -if(keyboard_lastkey > 0) kb_hkey = keyboard_lastkey; +if(kb_hkey < 0 && keyboard_key > 0) kb_hkey = keyboard_key; +if(kb_hkey < 0 && keyboard_lastkey > 0) kb_hkey = keyboard_lastkey; -if(kb_hkey <= 0) for(var i = 2; i < 256; i++) if(keyboard_check_pressed(i)) { kb_hkey = i; break; } +if(kb_hkey <= 0) for(var i = 2; i < 320; i++) if(keyboard_check_pressed(i)) { kb_hkey = i; break; } kb_time = 0; kb_hold = false; @@ -11,7 +11,7 @@ KEYBOARD_PRESSED = kb_hkey; if(keyboard_check(vk_backspace)) KEYBOARD_STRING = string_copy(KEYBOARD_STRING, 1, string_length(KEYBOARD_STRING) - 1); else KEYBOARD_STRING += keyboard_lastchar; - + if(KEYBOARD_PRESSED == -1) { for( var i = 0, n = array_length(global.KEYS_VK); i < n; i++ ) { if(keyboard_check(global.KEYS_VK[i])) diff --git a/objects/o_main/Keyboard_1.gml b/objects/o_main/Keyboard_1.gml index c3b659f4b..db5f0f73a 100644 --- a/objects/o_main/Keyboard_1.gml +++ b/objects/o_main/Keyboard_1.gml @@ -6,6 +6,7 @@ kb_time += DELTA_TIME; if(kb_hold && kb_time >= PREFERENCES.keyboard_repeat_speed) { trigger = true; kb_time = 0; + } else if(!kb_hold && kb_time >= PREFERENCES.keyboard_repeat_start) { trigger = true; kb_time = 0; diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 6459f83d0..4217a6c2d 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -43,8 +43,8 @@ LATEST_VERSION = 1_18_00_0; VERSION = 1_18_07_2; SAVE_VERSION = 1_18_05_0; - VERSION_STRING = MAC? "1.18.003m" : "1.18.8.008"; - BUILD_NUMBER = 118072.008; + VERSION_STRING = MAC? "1.18.003m" : "1.18.8.010"; + BUILD_NUMBER = 118072.010; PREF_VERSION = 1_17_1; var _vsp = string_split(VERSION_STRING, "."); @@ -61,7 +61,6 @@ globalvar CURRENT_COLOR; CURRENT_COLOR = cola(c_white); - // gml_release_mode(true); #endregion #region input diff --git a/scripts/globalvar_drawer/globalvar_drawer.gml b/scripts/globalvar_drawer/globalvar_drawer.gml index 0a91b15c8..5faf8a809 100644 --- a/scripts/globalvar_drawer/globalvar_drawer.gml +++ b/scripts/globalvar_drawer/globalvar_drawer.gml @@ -1,5 +1,6 @@ function GlobalVarDrawer() constructor { editing = false; + ID = UUID_generate(); drawWidgetInit(); @@ -71,7 +72,7 @@ function GlobalVarDrawer() constructor { _hg += _hh; var _wd_ww = (wd_w - ui(32)) / 2 - ui(2); - _edit.sc_type.draw(_wd_xx, _yy, _wd_ww, _wd_h, _edit.val_type_name[_edit.type_index], _m, rx, ry); + _edit.sc_type.draw(_wd_xx, _yy, _wd_ww, _wd_h, global.GLOBALVAR_TYPES_NAME[_edit.type_index], _m, rx, ry); var _wd_xx2 = _wd_xx + _wd_ww + ui(4); _edit.sc_disp.draw(_wd_xx2, _yy, _wd_ww, _wd_h, _edit.sc_disp.data_list[_edit.disp_index], _m, rx, ry); @@ -144,13 +145,13 @@ function GlobalVarDrawer() constructor { var _font = viewMode == INSP_VIEW_MODE.spacious? f_p0 : f_p2; var _padd = viewMode == INSP_VIEW_MODE.spacious? ui(8) : ui(4); - if(viewMode == INSP_VIEW_MODE.compact) { - yy += ui(4); - hh += ui(4); + if(viewMode == INSP_VIEW_MODE.compact) { + yy += ui(4); + hh += ui(4); } for( var j = 0; j < array_length(_node.inputs); j++ ) { - var widg = drawWidget(xx, yy, ww, _m, _node.inputs[j], true, hover, focus, _scrollPane, rx, ry); + var widg = drawWidget(xx, yy, ww, _m, _node.inputs[j], true, hover, focus, _scrollPane, rx, ry, ID); var widH = widg[0]; var mbRight = widg[1]; var widHov = widg[2]; diff --git a/scripts/nodeValue_drawer/nodeValue_drawer.gml b/scripts/nodeValue_drawer/nodeValue_drawer.gml index a73de18c1..7b128115e 100644 --- a/scripts/nodeValue_drawer/nodeValue_drawer.gml +++ b/scripts/nodeValue_drawer/nodeValue_drawer.gml @@ -14,7 +14,7 @@ function drawWidgetInit() { tooltip_loop_type = new tooltipSelector(__txtx("panel_animation_looping_mode", "Looping mode"), global.junctionEndName); } -function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _focus = false, _scrollPane = noone, rx = 0, ry = 0) { +function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _focus = false, _scrollPane = noone, rx = 0, ry = 0, _ID = undefined) { #region data var con_w = ww - ui(4); var xc = xx + ww / 2; @@ -25,6 +25,14 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc var _name = jun.getName(); var wid = jun.editWidget; + + if(_ID != undefined) { + var _map = jun.editWidgetMap; + if(!struct_has(_map, _ID)) + _map[$ _ID] = wid.clone(); + wid = _map[$ _ID]; + } + var cHov = false; switch(instanceof(wid)) { diff --git a/scripts/node_global/node_global.gml b/scripts/node_global/node_global.gml index fc36b7f86..fb4e338ec 100644 --- a/scripts/node_global/node_global.gml +++ b/scripts/node_global/node_global.gml @@ -1,9 +1,7 @@ -function variable_editor(nodeVal) constructor { - value = nodeVal; - - val_type = [ VALUE_TYPE.integer, VALUE_TYPE.float, VALUE_TYPE.boolean, VALUE_TYPE.color, VALUE_TYPE.gradient, VALUE_TYPE.path, VALUE_TYPE.curve, VALUE_TYPE.text ]; - val_type_name = [ "Integer", "Float", "Boolean", "Color", "Gradient", "Path", "Curve", "Text" ]; - display_list = [ +#region data + global.GLOBALVAR_TYPES = [ VALUE_TYPE.integer, VALUE_TYPE.float, VALUE_TYPE.boolean, VALUE_TYPE.color, VALUE_TYPE.gradient, VALUE_TYPE.path, VALUE_TYPE.curve, VALUE_TYPE.text ]; + global.GLOBALVAR_TYPES_NAME = [ "Integer", "Float", "Boolean", "Color", "Gradient", "Path", "Curve", "Text" ]; + global.GLOBALVAR_DISPLAY = [ /*Integer*/ [ "Default", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector2", "Vector3", "Vector4", "Vector range", "Vector2 range", "Area" ], /*Float*/ [ "Default", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector2", "Vector3", "Vector4", "Vector range", "Vector2 range", "Area" ], /*Boolean*/ [ "Default" ], @@ -12,9 +10,32 @@ function variable_editor(nodeVal) constructor { /*Path*/ [ "Read", "Write", "Font" ], /*Curve*/ [ "Default", ], /*Text*/ [ "Default", ], - ] + ]; - tb_name = new textBox(TEXTBOX_INPUT.text, function(s) /*=>*/ { + global.GLOBALVAR_DISPLAY_MAP = {} + global.GLOBALVAR_DISPLAY_MAP[$ "Default"] = VALUE_DISPLAY._default; + global.GLOBALVAR_DISPLAY_MAP[$ "Range"] = VALUE_DISPLAY.range; + global.GLOBALVAR_DISPLAY_MAP[$ "Rotation"] = VALUE_DISPLAY.rotation; + global.GLOBALVAR_DISPLAY_MAP[$ "Rotation range"] = VALUE_DISPLAY.rotation_range; + global.GLOBALVAR_DISPLAY_MAP[$ "Slider"] = VALUE_DISPLAY.slider; + global.GLOBALVAR_DISPLAY_MAP[$ "Slider range"] = VALUE_DISPLAY.slider_range; + global.GLOBALVAR_DISPLAY_MAP[$ "Padding"] = VALUE_DISPLAY.padding; + global.GLOBALVAR_DISPLAY_MAP[$ "Vector2"] = VALUE_DISPLAY.vector; + global.GLOBALVAR_DISPLAY_MAP[$ "Vector3"] = VALUE_DISPLAY.vector; + global.GLOBALVAR_DISPLAY_MAP[$ "Vector4"] = VALUE_DISPLAY.vector; + global.GLOBALVAR_DISPLAY_MAP[$ "Vector range"] = VALUE_DISPLAY.vector_range; + global.GLOBALVAR_DISPLAY_MAP[$ "Vector2 range"] = VALUE_DISPLAY.vector_range; + global.GLOBALVAR_DISPLAY_MAP[$ "Area"] = VALUE_DISPLAY.area; + global.GLOBALVAR_DISPLAY_MAP[$ "Palette"] = VALUE_DISPLAY.palette; + global.GLOBALVAR_DISPLAY_MAP[$ "Read"] = VALUE_DISPLAY.path_load; + global.GLOBALVAR_DISPLAY_MAP[$ "Write"] = VALUE_DISPLAY.path_save; + global.GLOBALVAR_DISPLAY_MAP[$ "Font"] = VALUE_DISPLAY.path_font; +#endregion + +function variable_editor(nodeVal) constructor { + value = nodeVal; + + tb_name = new textBox(TEXTBOX_INPUT.text, function(s) /*=>*/ { if(string_pos(" ", s)) { noti_warning("Global variable name can't have space."); return; } var _node = value.node; @@ -30,37 +51,30 @@ function variable_editor(nodeVal) constructor { value.name = s; RENDER_ALL - }); - tb_name.hide = 1; - tb_name.slidable = false; - - vb_range = new vectorBox(2, function(v, i) /*=>*/ { slider_range[i] = v; refreshInput(); }); - vb_range.linkable = false; + }).setHide(1).setSlide(false); + vb_range = new vectorBox(2, function(v, i) /*=>*/ { slider_range[i] = v; refreshInput(); }).setLinkable(false); tb_step = new textBox(TEXTBOX_INPUT.number, function(v) /*=>*/ { slider_step = v; refreshInput(); }); - sc_type = new scrollBox(val_type_name, function(v) /*=>*/ { + sc_type = new scrollBox(global.GLOBALVAR_TYPES_NAME, function(v) /*=>*/ { + sc_disp.data_list = global.GLOBALVAR_DISPLAY[v]; type_index = v; - sc_disp.data_list = display_list[v]; disp_index = 0; refreshInput(); RENDER_ALL - }); - sc_type.text_color = CDEF.main_mdwhite; - sc_type.update_hover = false; - - sc_disp = new scrollBox(display_list[0], function(v) /*=>*/ { + + }).setTextColor(CDEF.main_mdwhite).setUpdateHover(false); + sc_disp = new scrollBox(global.GLOBALVAR_DISPLAY[0], function(v) /*=>*/ { disp_index = v; refreshInput(); RENDER_ALL - }); - sc_disp.text_color = CDEF.main_mdwhite; - sc_disp.update_hover = false; + + }).setTextColor(CDEF.main_mdwhite).setUpdateHover(false); - type_index = 0; + type_index = 0; _type_index = 0; - disp_index = 0; + disp_index = 0; _disp_index = 0; slider_range = [ 0, 1 ]; @@ -77,7 +91,7 @@ function variable_editor(nodeVal) constructor { } static refreshInput = function() { - value.setType(val_type[type_index]); + value.setType(global.GLOBALVAR_TYPES[type_index]); if(_type_index != type_index || _disp_index != disp_index) { switch(value.type) { @@ -121,30 +135,34 @@ function variable_editor(nodeVal) constructor { _type_index = type_index; _disp_index = disp_index; + var _dtype = global.GLOBALVAR_DISPLAY_MAP[$ sc_disp.data_list[disp_index]]; switch(sc_disp.data_list[disp_index]) { - case "Default" : value.setDisplay(VALUE_DISPLAY._default); break; - case "Range" : value.setDisplay(VALUE_DISPLAY.range); break; - case "Rotation" : value.setDisplay(VALUE_DISPLAY.rotation); break; - case "Rotation range" : value.setDisplay(VALUE_DISPLAY.rotation_range); break; - case "Slider" : value.setDisplay(VALUE_DISPLAY.slider, { range: [slider_range[0], slider_range[1], slider_step] }); break; - case "Slider range" : value.setDisplay(VALUE_DISPLAY.slider_range, { range: [slider_range[0], slider_range[1], slider_step] }); break; - - case "Padding" : value.setDisplay(VALUE_DISPLAY.padding); break; - case "Vector2" : - case "Vector3" : - case "Vector4" : value.setDisplay(VALUE_DISPLAY.vector); break; - case "Vector range" : - case "Vector2 range" : value.setDisplay(VALUE_DISPLAY.vector_range); break; - case "Area" : value.setDisplay(VALUE_DISPLAY.area); break; - case "Palette" : value.setDisplay(VALUE_DISPLAY.palette); break; + case "Slider" : + case "Slider range" : + value.setDisplay(_dtype, { range: [slider_range[0], slider_range[1], slider_step] }); break; - case "Read" : value.setDisplay(VALUE_DISPLAY.path_load, { filter: "" }); break; - case "Write" : value.setDisplay(VALUE_DISPLAY.path_save, { filter: "" }); break; - case "Font" : value.setDisplay(VALUE_DISPLAY.path_font); break; + case "Read" : + case "Write" : + value.setDisplay(_dtype, { filter: "" }); break; + + default : value.setDisplay(_dtype); break; } } + static updateType = function() { + type_index = array_find(global.GLOBALVAR_TYPES, value.type); + disp_index = 0; + sc_disp.data_list = global.GLOBALVAR_DISPLAY[type_index]; + + var _disp = value.display_type; + var _disK = struct_find_key(global.GLOBALVAR_DISPLAY_MAP, _disp); + if(_disK == undefined) return self; + + disp_index = array_find(sc_disp.data_list, _disK); + return self; + } + static draw = function(_x, _y, _w, _m, _focus, _hover, viewMode) { var _h = 0; var _font = viewMode == INSP_VIEW_MODE.spacious? f_p0 : f_p2; @@ -179,25 +197,24 @@ function variable_editor(nodeVal) constructor { } function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { - name = "GLOBAL"; + name = "GLOBAL"; display_name = ""; - node_id = 0; - group = noone; - + node_id = 0; + group = noone; use_cache = CACHE_USE.none; value = ds_map_create(); input_display_list = -1; - anim_priority = -999; + anim_priority = -999; static isActiveDynamic = function(frame = CURRENT_FRAME) { return true; } static valueUpdate = function(index) { RENDER_ALL } static createValue = function() { - var _key = $"NewValue{array_length(inputs)}"; - var _in = nodeValue_Float(_key, self, 0); + var _key = $"NewValue{array_length(inputs)}"; + var _in = nodeValue_Float(_key, self, 0); _in.editor = new variable_editor(_in); array_push(inputs, _in); @@ -222,6 +239,8 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { } static step = function() { + ds_map_clear(value); + for( var i = 0; i < array_length(inputs); i++ ) { var _inp = inputs[i]; value[? _inp.name] = _inp; diff --git a/scripts/node_surface_tag/node_surface_tag.gml b/scripts/node_surface_tag/node_surface_tag.gml index b23cfed0d..fdaaa4fc3 100644 --- a/scripts/node_surface_tag/node_surface_tag.gml +++ b/scripts/node_surface_tag/node_surface_tag.gml @@ -173,12 +173,20 @@ function Node_Surface_Tag(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou static step = function() {} + static processData_prebatch = function() { + var _amo = getInputAmount(); + for( var i = 0; i < _amo; i++ ) { + var _ind = input_fix_len + i * data_length; + var _tag_name = getSingleValue(_ind + 0); + inputs[_ind + 1].setName($"{_tag_name} positions"); + } + } + static processData = function(_outSurf, _data, _output_index, _array_index = 0) { - var _amo = getInputAmount(); var _surf = _data[0]; + var _srf = new taggedSurf(_surf); - var _srf = new taggedSurf(_surf); - + var _amo = getInputAmount(); for( var i = 0; i < _amo; i++ ) { var _ind = input_fix_len + i * data_length; var _tag_name = _data[_ind + 0]; diff --git a/scripts/node_threshold/node_threshold.gml b/scripts/node_threshold/node_threshold.gml index e76073d62..3eff21e51 100644 --- a/scripts/node_threshold/node_threshold.gml +++ b/scripts/node_threshold/node_threshold.gml @@ -45,12 +45,16 @@ function Node_Threshold(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) newInput(16, nodeValue_Int("Adaptive Radius", self, 4)) + newInput(17, nodeValue_Bool("Brightness Invert", self, false)); + + newInput(18, nodeValue_Bool("Alpha Invert", self, false)); + newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone)); input_display_list = [ 6, 10, ["Surfaces", true], 0, 4, 5, 11, 12, - ["Brightness", true, 1], 15, 2, 13, 3,16, - ["Alpha", true, 7], 8, 14, 9, + ["Brightness", true, 1], 15, 2, 13, 3, 16, 17, + ["Alpha", true, 7], 8, 14, 9, 18, ]; attribute_surface_depth(); @@ -77,6 +81,9 @@ function Node_Threshold(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var _algo = _data[15]; var _adap_size = _data[16]; + var _brightInv = _data[17]; + var _alhpaInv = _data[18]; + inputs[16].setVisible(_algo == 1); var _shader = sh_threshold; @@ -86,12 +93,14 @@ function Node_Threshold(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) shader_set_dim(, _surf); shader_set_i("bright", _bright); + shader_set_i("brightInvert", _brightInv); shader_set_f_map("brightThreshold", _brightThr, _data[13], inputs[2]); shader_set_f("brightSmooth", _brightSmt); shader_set_f("adaptiveRadius", _adap_size); shader_set_f("gaussianCoeff", __gaussian_get_kernel(_adap_size)); shader_set_i("alpha", _alph); + shader_set_i("alphaInvert", _alhpaInv); shader_set_f_map("alphaThreshold", _alphThr, _data[14], inputs[8]); shader_set_f("alphaSmooth", _alphSmt); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 5f59ba2f8..c30ff0a5e 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -36,6 +36,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru tooltip = _tooltip; editWidget = noone; editWidgetRaw = noone; + editWidgetMap = {}; editable = true; graphWidget = noone; @@ -2327,6 +2328,31 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru ////- MISC + static globalExtractable = function() { return array_exists(global.GLOBALVAR_TYPES, type) && struct_find_key(global.GLOBALVAR_DISPLAY_MAP, display_type) != undefined; } + + static extractGlobal = function() { + if(!globalExtractable()) return noone; + + var _key = $"{node.getDisplayName()}_{name}"; + var _glb = node.project.globalNode; + + if(_glb.inputExist(_key)) + _key += string(array_length(_glb.inputs)); + + var _newVal = _glb.createValue(); + + _newVal.name = _key; + _newVal.setType(type); + _newVal.setDisplay(display_type, display_data); + _newVal.editor.updateType(); + _newVal.setValue(getValue()); + _glb.step(); + + if(!expUse) setExpression(_key); + + return _newVal; + } + static extractNode = function(_type = extract_node) { if(_type == "") return noone; diff --git a/scripts/panel_globalvar/panel_globalvar.gml b/scripts/panel_globalvar/panel_globalvar.gml index 80879ce6d..bf50346df 100644 --- a/scripts/panel_globalvar/panel_globalvar.gml +++ b/scripts/panel_globalvar/panel_globalvar.gml @@ -2,29 +2,24 @@ function Panel_Globalvar() : PanelContent() constructor { title = __txtx("panel_globalvar", "Global Variables"); context_str = "Globalvar"; padding = 8; - + auto_pin = true; + w = ui(320); h = ui(480); - b_edit = button(function() /*=>*/ { var_editing = !var_editing; }).setTooltip("Edit").setIcon(THEME.gear, 0, COLORS._main_icon, .6); - - // title_actions = [ b_edit ]; - - globalvar_viewer_init(); - drawWidgetInit(); + global_drawer = new GlobalVarDrawer(); function onResize() { contentPane.resize(w - ui(padding + padding), h - ui(padding + padding) - ui(28)); } contentPane = new scrollPane(w - ui(padding + padding), h - ui(padding + padding) - ui(28), function(_y, _m) { - draw_clear_alpha(COLORS.panel_bg_clear, 0); + draw_clear_alpha(COLORS.panel_bg_clear_inner, 1); var _hover = pHOVER && contentPane.hover; - var hh = 0; - var yy = _y; - var _x = ui(8); + var hh = 0; + var yy = _y; - var glPar = globalvar_viewer_draw(_x, yy, contentPane.surface_w - _x - ui(8), _m, pFOCUS, _hover, contentPane, x + _x + ui(padding), y + ui(title_height)); - var gvh = glPar[0]; + var glPar = global_drawer.draw(ui(8), yy, contentPane.surface_w - ui(16), _m, pFOCUS, _hover, contentPane, x + ui(padding), y + ui(padding)); + var gvh = glPar[0]; if(glPar[1]) contentPane.hover_content = true; yy += gvh + ui(8); @@ -34,7 +29,7 @@ function Panel_Globalvar() : PanelContent() constructor { }); function drawContent(panel) { - draw_clear_alpha(COLORS.panel_bg_clear, 0); + draw_clear_alpha(COLORS.panel_bg_clear, 1); var px = ui(padding); var py = ui(padding); @@ -51,13 +46,13 @@ function Panel_Globalvar() : PanelContent() constructor { var _by = h - _add_h; var _ww = w; - if(var_editing) { + if(global_drawer.editing) { var _bw = _ww / 2 - ui(4); var _hov = pHOVER && point_in_rectangle(mx, my, _bx, _by, _bx + _bw, _by + _add_h); draw_sprite_stretched_ext(THEME.ui_panel, 0, _bx, _by, _bw, _add_h, _hov? COLORS._main_value_positive : COLORS._main_icon, .3 + _hov * .1); draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _bw, _add_h, _hov? COLORS._main_value_positive : COLORS._main_icon, .6 + _hov * .25); - draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_value_positive : COLORS._main_icon); + draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_value_positive : COLORS._main_icon_light); draw_text_add(_bx + _bw / 2, _by + _add_h / 2, __txt("Add")); contentPane.hover_content |= _hov; @@ -69,24 +64,24 @@ function Panel_Globalvar() : PanelContent() constructor { draw_sprite_stretched_ext(THEME.ui_panel, 0, _bx, _by, _bw, _add_h, _hov? COLORS._main_icon_light : COLORS._main_icon, .3 + _hov * .1); draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _bw, _add_h, _hov? COLORS._main_icon_light : COLORS._main_icon, .6 + _hov * .25); - draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_icon_light : COLORS._main_icon); + draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_icon_light : COLORS._main_icon_light); draw_text_add(_bx + _bw / 2, _by + _add_h / 2, __txt("Apply")); contentPane.hover_content |= _hov; if(mouse_press(mb_left, _hov && pFOCUS)) - var_editing = false; + global_drawer.editing = false; } else { var _hov = pHOVER && point_in_rectangle(mx, my, _bx, _by, _ww, _by + _add_h); draw_sprite_stretched_ext(THEME.ui_panel, 0, _bx, _by, _ww, _add_h, _hov? COLORS._main_value_positive : COLORS._main_icon, .3 + _hov * .1); draw_sprite_stretched_ext(THEME.ui_panel, 1, _bx, _by, _ww, _add_h, _hov? COLORS._main_value_positive : COLORS._main_icon, .6 + _hov * .25); - draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_value_positive : COLORS._main_icon); + draw_set_text(f_p2, fa_center, fa_center, _hov? COLORS._main_value_positive : COLORS._main_icon_light); draw_text_add(_bx + _ww / 2, _by + _add_h / 2, __txt("Edit")); contentPane.hover_content |= _hov; if(mouse_press(mb_left, _hov && pFOCUS)) - var_editing = true; + global_drawer.editing = true; } } diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 40d1f3e1b..2bd0c2594 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -16,8 +16,9 @@ function panel_inspector_axis_separate() { CALL("inspector_axis_separate"); PANEL_INSPECTOR.junction_axis_separate(); } function panel_inspector_use_expression() { CALL("inspector_use_expression"); PANEL_INSPECTOR.junction_use_expression(); } function panel_inspector_disable_expression() { CALL("inspector_disable_expression"); PANEL_INSPECTOR.junction_disable_expression(); } + function panel_inspector_extract_global() { CALL("inspector_extract_global"); PANEL_INSPECTOR.junction_extract_global(); } function panel_inspector_extract_single() { CALL("inspector_extract_single"); PANEL_INSPECTOR.junction_extract_single(); } - function panel_inspector_junction_bypass_toggle() { CALL("inspector_extract_single"); PANEL_INSPECTOR.junction_bypass_toggle(); } + function panel_inspector_junction_bypass_toggle() { CALL("inspector_junc_bypass"); PANEL_INSPECTOR.junction_bypass_toggle(); } function __fnInit_Inspector() { registerFunction("", "Color Picker", "", MOD_KEY.alt, panel_inspector_color_pick ).setMenu("color_picker") @@ -36,6 +37,7 @@ registerFunction("Inspector", "Separate Axis", "", MOD_KEY.none, panel_inspector_axis_separate ).setMenu("inspector_separate_axis") registerFunction("Inspector", "Use Expression", "", MOD_KEY.none, panel_inspector_use_expression ).setMenu("inspector_use_expression") registerFunction("Inspector", "Disable Expression", "", MOD_KEY.none, panel_inspector_disable_expression ).setMenu("inspector_disable_expression") + registerFunction("Inspector", "Extract to Globalvar", "", MOD_KEY.none, panel_inspector_extract_global ).setMenu("inspector_extract_global") registerFunction("Inspector", "Extract Value", "", MOD_KEY.none, panel_inspector_extract_single ).setMenu("inspector_extract_value") registerFunction("Inspector", "Toggle Bypass", "", MOD_KEY.none, panel_inspector_junction_bypass_toggle ).setMenu("inspector_bypass_toggle") @@ -221,8 +223,8 @@ function Panel_Inspector() : PanelContent() constructor { meta_display = [ [ __txt("Project Settings"), false, "settings" ], [ __txt("Metadata"), true , "metadata" ], - [ __txt("Global variables"), true , "globalvar" ], - [ __txt("Group Properties"), true , "group prop" ], + [ __txt("Global variables"), false, "globalvar" ], + [ __txt("Group Properties"), false, "group prop" ], ]; meta_steam_avatar = new checkBox(function() { STEAM_UGC_ITEM_AVATAR = !STEAM_UGC_ITEM_AVATAR; }); @@ -281,6 +283,7 @@ function Panel_Inspector() : PanelContent() constructor { function junction_axis_separate() { if(__dialog_junction == noone) return; __dialog_junction.sep_axis = true; } function junction_use_expression() { if(__dialog_junction == noone) return; __dialog_junction.expUse = true; } function junction_disable_expression() { if(__dialog_junction == noone) return; __dialog_junction.expUse = false; } + function junction_extract_global() { if(__dialog_junction == noone) return; __dialog_junction.extractGlobal(); } function junction_extract_single() { if(__dialog_junction == noone) return; __dialog_junction.extractNode(); } function junction_bypass_toggle() { if(__dialog_junction == noone || __dialog_junction.bypass_junc == noone) return; @@ -301,6 +304,7 @@ function Panel_Inspector() : PanelContent() constructor { menu_junc_separate_axis = MENU_ITEMS.inspector_separate_axis; menu_junc_expression_ena = MENU_ITEMS.inspector_use_expression; menu_junc_expression_dis = MENU_ITEMS.inspector_disable_expression; + menu_junc_extract_global = MENU_ITEMS.inspector_extract_global; menu_junc_extract = MENU_ITEMS.inspector_extract_value; menu_junc_bypass_toggle = MENU_ITEMS.inspector_bypass_toggle; @@ -633,8 +637,8 @@ function Panel_Inspector() : PanelContent() constructor { break; - case "globalvar" : - if(findPanel("Panel_Globalvar")) { yy += ui(4); hh += ui(4); continue; } + case "globalvar" : + // if(findPanel("Panel_Globalvar")) { yy += ui(4); hh += ui(4); continue; } if(_m[1] > yy) contentPane.hover_content = true; global_drawer.viewMode = viewMode; @@ -1130,6 +1134,7 @@ function Panel_Inspector() : PanelContent() constructor { } array_push(_menuItem, jun.expUse? menu_junc_expression_dis : menu_junc_expression_ena); + if(jun.globalExtractable()) array_push(_menuItem, menu_junc_extract_global); if(_inp) array_push(_menuItem, menu_junc_bypass_toggle); array_push(_menuItem, -1, menu_junc_copy); diff --git a/scripts/panel_menu/panel_menu.gml b/scripts/panel_menu/panel_menu.gml index 68163e5fb..999adfbea 100644 --- a/scripts/panel_menu/panel_menu.gml +++ b/scripts/panel_menu/panel_menu.gml @@ -823,8 +823,17 @@ function Panel_Menu() : PanelContent() constructor { #endregion #region drag - if(mouse_press(mb_left, _draggable)) - winMan_initDrag(0b10000); + if(_draggable) { + if(DOUBLE_CLICK) { + if(window_is_maximized) + winMan_Unmaximize(); + else + winMan_Maximize(); + DISPLAY_REFRESH + } + + if(mouse_press(mb_left)) winMan_initDrag(0b10000); + } #endregion } } \ No newline at end of file diff --git a/scripts/scrollBox/scrollBox.gml b/scripts/scrollBox/scrollBox.gml index 921cb4652..84538ff55 100644 --- a/scripts/scrollBox/scrollBox.gml +++ b/scripts/scrollBox/scrollBox.gml @@ -38,6 +38,9 @@ function scrollBox(_data, _onModify, update_hover = true) : widget() constructor type = 0; hide = 0; + static setTextColor = function(_l = noone) { text_color = _l; return self; } + static setUpdateHover = function(_l = noone) { update_hover = _l; return self; } + static trigger = function() { data = is_method(data_list)? data_list() : data_list; diff --git a/scripts/struct_functions/struct_functions.gml b/scripts/struct_functions/struct_functions.gml index 28d27681b..d609d7d00 100644 --- a/scripts/struct_functions/struct_functions.gml +++ b/scripts/struct_functions/struct_functions.gml @@ -63,3 +63,10 @@ function struct_toggle(struct, key) { if(struct_has(struct, key)) struct_remove(struct, key); else struct[$ key] = 1; } + +function struct_find_key(struct, value) { + var _keys = struct_get_names(struct); + for( var i = 0, n = array_length(_keys); i < n; i++ ) + if(value == struct[$ _keys[i]]) return _keys[i]; + return undefined; +} \ No newline at end of file diff --git a/scripts/textArea/textArea.gml b/scripts/textArea/textArea.gml index aec873f21..1dab0b296 100644 --- a/scripts/textArea/textArea.gml +++ b/scripts/textArea/textArea.gml @@ -521,6 +521,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor cursor_select = -1; modified = true; + } else if(KEYBOARD_STRING != "" && KEYBOARD_STRING != "\b" && KEYBOARD_STRING != "\r") { var ch = KEYBOARD_STRING; diff --git a/scripts/textBox/textBox.gml b/scripts/textBox/textBox.gml index 3b8cd3a07..15b6ffa19 100644 --- a/scripts/textBox/textBox.gml +++ b/scripts/textBox/textBox.gml @@ -116,6 +116,7 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor { else onModify(value, onModifyParam); } + static setSlide = function(_slidable) { slidable = _slidable; return self; } static setSlideType = function(_slide_int = false) { slide_int = _slide_int; return self; } static setSlideStep = function(_slide_step = 0) { slide_snap = _slide_step; return self; } static setSlideRange = function(_min = 0, _max = 1) { slide_range = [_min, _max]; return self; } @@ -607,7 +608,7 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor { ////- Slide var hoverRect = point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h); - + if(sliding > 0) { #region slide slide_delta += PEN_USE? PEN_X_DELTA : window_mouse_get_delta_x(); slide_delta += PEN_USE? PEN_Y_DELTA : window_mouse_get_delta_y(); diff --git a/scripts/vectorBox/vectorBox.gml b/scripts/vectorBox/vectorBox.gml index 792750599..25e808882 100644 --- a/scripts/vectorBox/vectorBox.gml +++ b/scripts/vectorBox/vectorBox.gml @@ -48,6 +48,8 @@ function vectorBox(_size, _onModify, _unit = noone) : widget() constructor { tb[i].slidable = true; } + static setLinkable = function(_l = noone) { linkable = _l; return self; } + static setFont = function(_f = noone) { for( var i = 0; i < size; i++ ) tb[i].setFont(_f); diff --git a/shaders/sh_threshold/sh_threshold.fsh b/shaders/sh_threshold/sh_threshold.fsh index 3ca3d8f63..68ed71769 100644 --- a/shaders/sh_threshold/sh_threshold.fsh +++ b/shaders/sh_threshold/sh_threshold.fsh @@ -2,12 +2,14 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; uniform int bright; +uniform int brightInvert; uniform vec2 brightThreshold; uniform int brightThresholdUseSurf; uniform sampler2D brightThresholdSurf; uniform float brightSmooth; uniform int alpha; +uniform int alphaInvert; uniform vec2 alphaThreshold; uniform int alphaThresholdUseSurf; uniform sampler2D alphaThresholdSurf; @@ -32,11 +34,15 @@ void main() { if(bright == 1) { float cbright = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)); - col.rgb = vec3(brightSmooth == 0.? _step(bri, cbright) : smoothstep(bri - brightSmooth, bri + brightSmooth, cbright)); + float vBright = brightSmooth == 0.? _step(bri, cbright) : smoothstep(bri - brightSmooth, bri + brightSmooth, cbright); + if(brightInvert == 1) vBright = 1. - vBright; + + col.rgb = vec3(vBright); } if(alpha == 1) { col.a = alphaSmooth == 0.? _step(alp, col.a) : smoothstep(alp - alphaSmooth, alp + alphaSmooth, col.a); + if(alphaInvert == 1) col.a = 1. - col.a; } gl_FragColor = col; diff --git a/shaders/sh_threshold_adaptive/sh_threshold_adaptive.fsh b/shaders/sh_threshold_adaptive/sh_threshold_adaptive.fsh index b5b4bb433..723461a4a 100644 --- a/shaders/sh_threshold_adaptive/sh_threshold_adaptive.fsh +++ b/shaders/sh_threshold_adaptive/sh_threshold_adaptive.fsh @@ -5,6 +5,7 @@ uniform vec2 dimension; uniform float gaussianCoeff[128]; uniform int bright; +uniform int brightInvert; uniform vec2 brightThreshold; uniform int brightThresholdUseSurf; uniform sampler2D brightThresholdSurf; @@ -12,6 +13,7 @@ uniform float brightSmooth; uniform float adaptiveRadius; uniform int alpha; +uniform int alphaInvert; uniform vec2 alphaThreshold; uniform int alphaThresholdUseSurf; uniform sampler2D alphaThresholdSurf; @@ -50,11 +52,14 @@ void main() { bNeight -= bri; float _res = brightSmooth == 0.? _step(bNeight, cbright) : smoothstep(bNeight - brightSmooth, bNeight + brightSmooth, cbright); + if(brightInvert == 1) _res = 1. - _res; + col.rgb = vec3(_res); } if(alpha == 1) { col.a = alphaSmooth == 0.? _step(alp, col.a) : smoothstep(alp - alphaSmooth, alp + alphaSmooth, col.a); + if(alphaInvert == 1) col.a = 1. - col.a; } gl_FragColor = col; diff --git a/sprites/s_node_composite_tag/0a7b17bd-81c5-455a-8e4a-08c78714ae06.png b/sprites/s_node_composite_tag/0a7b17bd-81c5-455a-8e4a-08c78714ae06.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50679cbbc56f0fdc7d90591df341135c067036 GIT binary patch literal 1680 zcmZ{kc{JN;7sr3LSc9CYHl?+TQ7uUr+gLJaNE5^^>a8tl8B%+L#ulNWt=jjgEk=(P zZ)#M@>m_Pe{{KFN!}R|n&~{m+az+@i?^GL>GObc0+%*MsoL z5OPw2DkSdPCFeS7{AFA@332;9C%WVMXe0IsajE2G_Ll3(l01*2wR-79Ms+l;pcj#& z>#OLcb8(aB)NtiXsl&!eyim|A_(;7ud6;%nXf2r6#C!f}get~pjB7Ddq5#+dE@urH z2*b5rD9lK%$m^i>=8E+(8v2+Yi_1;jiuK8OB!5*7dc;4AiW@rPmwR=fb;gxZTz1b^ zmSZ+IqIZdhvzJVlxKR*Hxp5;-_(~?I{m6A{P#ppF8l9M6_VF+j%1-TG_jT(ceNKZ@ z8T4*s{Ahha@tY}DfmZ3qc0G?g z#cMKGEvlrx_HyNiVkJti{!ER`j!-3Q=kujvLh#_4BOdY;f+^MU;a5 z$GoX33gs5JS)v|8Js^wF+=f!cvmXIi2?D=)tY|_7m$~TZsnoQ^@>Rz6-pf<#$=M$) zVGm7mU$%W1_(A~VX$1unC{Cq@+;F8L%E<})A4o{oN&9K3;{zGimrw(?uR%ZKfrN>_ zsd!8+uye`Txc)@y0f>LzI`Dg$ew4&;0H zb9ohwVAk5N@-_Vobs(gB{`Ed~Av(w0{1^P?n?*DlHUIW)TD7N++1zr|dKd zwxIk&d2U~+;J@4*O`-A~I!|RJYir*FVhPA8Q#$tLjf{*=sP!S+ObiWccH491Io}_- zSowWr$U1#t?2wOj5CkaZ#^nYLu>BZqO4nS8k9|IGmE2 z8XHmb+cu9aTVj-e{`~t=h8Yt1naFobsnVhn?x1DvkJEiUsfU5ZR8a60(9p<8XH2kK zjRjd6)x^d7`CUp+UzYyKj}1FmTv?fH#_oCJ3ib2&{O9J&X@hlyvVYo$s%F(W*DTJm z@5Dh6+S?d>%d{tfz*+2yYMCi3J<&A#W1N+`b!@%v)9&s-MTn#LQMpS?SikZ-CUd}k zb>gRtST=8FW?N_SG1&I<>*GjhG95iI+L%;(KCs(X2@c&Yt*H1$gME%U96fQd!-Es{ z5{Wetl`@%D#l`V3zT`cgXby3(Wt_awMjT(3IURx|Jx&n3i!iUYj+mCp$yt|-$r$hJ ztn1{?OHI-IrAR~U`I(P)WTRNl7{V^5n_ngYKnw4?6m3qowXHBmEF?x;tolfn~S7I`aMyEjpBZeuY3V3T!Kn zns2`~!wwQMWbG#&9c4bX+L&K?^F}w?!dSs>xad1=ugc$gN-K7BZBn@(SR0`LDz&$$ zwbfD&Id)%B3h?swe$c+`5f=7l%pB0x`2m}>_it-bi78V8V6j*UW3b==sa1jn0bkgU z1VgVODn?0>fOI+L;q2phaAsA8Ll6XX9@Hv<|H9K7jt z13eHD;Nd@?)*f^iKB@#Yv`!f#FhpPVYw5?3h%)~(wgH&H#ZLxqgdA07bDKc)`t7Li zg?vjGX6gu=2D+|!#&?`pB{BIN(E}U!`2f+w(hwTPD#!FpDft+u1p3&Wd)WA=J$5|Q z>JnW!#2>Ul;>CbOVrU}CCOn=b761uHes=+myZ|@zfg^0h#~f}9hugs6k0^Dq y{|As`h>=%Q{vP0+GaMHK-~KfrF_KJ5NDL*%{ymfL0QyGE0GNyJ&h3sNwEqEug!@wf literal 0 HcmV?d00001 diff --git a/sprites/s_node_composite_tag/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31.png b/sprites/s_node_composite_tag/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31.png deleted file mode 100644 index b41633a07d382e7dbbb24c468acb852206bfef1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2006 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 O0f;Bb_!|45)c*oQP@hNu diff --git a/sprites/s_node_composite_tag/layers/0a7b17bd-81c5-455a-8e4a-08c78714ae06/4cb4c25a-07f0-4695-b0e0-5f8b60c5af80.png b/sprites/s_node_composite_tag/layers/0a7b17bd-81c5-455a-8e4a-08c78714ae06/4cb4c25a-07f0-4695-b0e0-5f8b60c5af80.png new file mode 100644 index 0000000000000000000000000000000000000000..8a50679cbbc56f0fdc7d90591df341135c067036 GIT binary patch literal 1680 zcmZ{kc{JN;7sr3LSc9CYHl?+TQ7uUr+gLJaNE5^^>a8tl8B%+L#ulNWt=jjgEk=(P zZ)#M@>m_Pe{{KFN!}R|n&~{m+az+@i?^GL>GObc0+%*MsoL z5OPw2DkSdPCFeS7{AFA@332;9C%WVMXe0IsajE2G_Ll3(l01*2wR-79Ms+l;pcj#& z>#OLcb8(aB)NtiXsl&!eyim|A_(;7ud6;%nXf2r6#C!f}get~pjB7Ddq5#+dE@urH z2*b5rD9lK%$m^i>=8E+(8v2+Yi_1;jiuK8OB!5*7dc;4AiW@rPmwR=fb;gxZTz1b^ zmSZ+IqIZdhvzJVlxKR*Hxp5;-_(~?I{m6A{P#ppF8l9M6_VF+j%1-TG_jT(ceNKZ@ z8T4*s{Ahha@tY}DfmZ3qc0G?g z#cMKGEvlrx_HyNiVkJti{!ER`j!-3Q=kujvLh#_4BOdY;f+^MU;a5 z$GoX33gs5JS)v|8Js^wF+=f!cvmXIi2?D=)tY|_7m$~TZsnoQ^@>Rz6-pf<#$=M$) zVGm7mU$%W1_(A~VX$1unC{Cq@+;F8L%E<})A4o{oN&9K3;{zGimrw(?uR%ZKfrN>_ zsd!8+uye`Txc)@y0f>LzI`Dg$ew4&;0H zb9ohwVAk5N@-_Vobs(gB{`Ed~Av(w0{1^P?n?*DlHUIW)TD7N++1zr|dKd zwxIk&d2U~+;J@4*O`-A~I!|RJYir*FVhPA8Q#$tLjf{*=sP!S+ObiWccH491Io}_- zSowWr$U1#t?2wOj5CkaZ#^nYLu>BZqO4nS8k9|IGmE2 z8XHmb+cu9aTVj-e{`~t=h8Yt1naFobsnVhn?x1DvkJEiUsfU5ZR8a60(9p<8XH2kK zjRjd6)x^d7`CUp+UzYyKj}1FmTv?fH#_oCJ3ib2&{O9J&X@hlyvVYo$s%F(W*DTJm z@5Dh6+S?d>%d{tfz*+2yYMCi3J<&A#W1N+`b!@%v)9&s-MTn#LQMpS?SikZ-CUd}k zb>gRtST=8FW?N_SG1&I<>*GjhG95iI+L%;(KCs(X2@c&Yt*H1$gME%U96fQd!-Es{ z5{Wetl`@%D#l`V3zT`cgXby3(Wt_awMjT(3IURx|Jx&n3i!iUYj+mCp$yt|-$r$hJ ztn1{?OHI-IrAR~U`I(P)WTRNl7{V^5n_ngYKnw4?6m3qowXHBmEF?x;tolfn~S7I`aMyEjpBZeuY3V3T!Kn zns2`~!wwQMWbG#&9c4bX+L&K?^F}w?!dSs>xad1=ugc$gN-K7BZBn@(SR0`LDz&$$ zwbfD&Id)%B3h?swe$c+`5f=7l%pB0x`2m}>_it-bi78V8V6j*UW3b==sa1jn0bkgU z1VgVODn?0>fOI+L;q2phaAsA8Ll6XX9@Hv<|H9K7jt z13eHD;Nd@?)*f^iKB@#Yv`!f#FhpPVYw5?3h%)~(wgH&H#ZLxqgdA07bDKc)`t7Li zg?vjGX6gu=2D+|!#&?`pB{BIN(E}U!`2f+w(hwTPD#!FpDft+u1p3&Wd)WA=J$5|Q z>JnW!#2>Ul;>CbOVrU}CCOn=b761uHes=+myZ|@zfg^0h#~f}9hugs6k0^Dq y{|As`h>=%Q{vP0+GaMHK-~KfrF_KJ5NDL*%{ymfL0QyGE0GNyJ&h3sNwEqEug!@wf literal 0 HcmV?d00001 diff --git a/sprites/s_node_composite_tag/layers/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31/99a715df-5b64-4a74-92f3-b40b6eb55d83.png b/sprites/s_node_composite_tag/layers/48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31/99a715df-5b64-4a74-92f3-b40b6eb55d83.png deleted file mode 100644 index b41633a07d382e7dbbb24c468acb852206bfef1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2006 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 O0f;Bb_!|45)c*oQP@hNu diff --git a/sprites/s_node_composite_tag/s_node_composite_tag.yy b/sprites/s_node_composite_tag/s_node_composite_tag.yy index 904560ea3..61ae1459b 100644 --- a/sprites/s_node_composite_tag/s_node_composite_tag.yy +++ b/sprites/s_node_composite_tag/s_node_composite_tag.yy @@ -2,24 +2,24 @@ "$GMSprite":"", "%Name":"s_node_composite_tag", "bboxMode":0, - "bbox_bottom":61, + "bbox_bottom":53, "bbox_left":2, - "bbox_right":61, - "bbox_top":2, + "bbox_right":60, + "bbox_top":10, "collisionKind":1, "collisionTolerance":0, "DynamicTexturePage":false, "edgeFiltering":false, "For3D":false, "frames":[ - {"$GMSpriteFrame":"","%Name":"48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31","name":"48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"0a7b17bd-81c5-455a-8e4a-08c78714ae06","name":"0a7b17bd-81c5-455a-8e4a-08c78714ae06","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, ], "gridX":0, "gridY":0, "height":64, "HTile":false, "layers":[ - {"$GMImageLayer":"","%Name":"99a715df-5b64-4a74-92f3-b40b6eb55d83","blendMode":0,"displayName":"default","isLocked":false,"name":"99a715df-5b64-4a74-92f3-b40b6eb55d83","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,}, + {"$GMImageLayer":"","%Name":"4cb4c25a-07f0-4695-b0e0-5f8b60c5af80","blendMode":0,"displayName":"default","isLocked":false,"name":"4cb4c25a-07f0-4695-b0e0-5f8b60c5af80","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,}, ], "name":"s_node_composite_tag", "nineSlice":null, @@ -69,8 +69,8 @@ "tracks":[ {"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore":"","Keyframes":[ {"$Keyframe":"","Channels":{ - "0":{"$SpriteFrameKeyframe":"","Id":{"name":"48fa7fe0-e1f9-4ad3-b869-f4d6709c4d31","path":"sprites/s_node_composite_tag/s_node_composite_tag.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"309ec169-aa07-406f-8044-d57913d3613b","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"0a7b17bd-81c5-455a-8e4a-08c78714ae06","path":"sprites/s_node_composite_tag/s_node_composite_tag.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"9d630b55-4169-4442-b2df-c8d5a1d377f4","IsCreationKey":false,"Key":0.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, diff --git a/sprites/s_node_surface_tag/870b1093-75c1-4b28-8a93-74b80af32021.png b/sprites/s_node_surface_tag/870b1093-75c1-4b28-8a93-74b80af32021.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f7d9b21cbf2906a7168693921e6e52fb5bde5f GIT binary patch literal 1451 zcmZ{kdo&Y#7{`Be%RPEYE-y}LS&_L`b6Z*#$z`d~016JLP#BRS z|4wNsQDyoDPKiYK>M6__0B%D8phg2A6t$>}00hAS_}~QqA`1XDQtop%E73se&(mlW z*#6rewUwm;Ad&BYI_@4au}trG(L`&pZLdZ_;;0t~x|C+Dl6laFq-4+djzYhjXeEp` zrUGS+Vxm+_F-6R{DJGMx%|r$)=_r*PbW_yBpmZEhO3I!~b1W~?Mh3|;(lSGvRmbwR zLH$vSB+i6?cZ9R)R!&|vpW-urq{Y(fU#qcHu2m~ZBRu*&WaneC>xfNbU?s&8XQ|pn zr;eng)u9~654_H_fq5rn*r3rJeW|OGekqI^iw*H0PntyP-bt2tu1{&wvgbL57Q_|= zRLzI8ly6LaAdt!OurF)w(j>(FW^%bqW`&cl&`o-+aW_#PjZEha4iD4#)dlMSbB}Lp zkHu0d%N@^zul2Z=5FMlVwv2)WW2XlXU#$D+7Qdc?TG}AWikQb9x!~H>tMvD|Ian98 z?!tcEi_J|XZQ55ZvHA|KidE&vCM#++{A9;*VFq@u%Z4fk7NOMsxz5@0?rDA9J@PZ_ z);?Zd)Y4KVP`#?~`S_3-Bi;LUuyJR7`TpVMbD8)m=qT|gS-E4j{QdjhhIs$l3pL}{ zKk+Yfm)}qXD>8#KSqT%{im~6`Pn+H4#JE2j--`JD<7}T~&#PBu&xN!mi$b4qXtW_m{M~Otm zFnzGm=O&!~@YG_6Nv8XP`EMO~lj$!bGi1aOLrY`h?6F{h3dVratM|^nEw5NId&v+< zAV6uf1yai-u8EYNnAoM6vH2~`$;E};z){nl=JJ$x@9UQf%72Mk$f?%H3O06i_%-l& zJg3laHei5YTISLo#Xg%Y$R`~gh}vOo6t9$kTKxENVY;9`Y?e}^bZN!2(L<0v%JslH zVOq$xR$STu}3DBgXwgQUJi%me^$6^rcE#Wf^SXWA+98QuttR!$Fju$0ECyp;6VcumDSnuq!{2`ZJt@eO z$zIwMEWq3Bh=zXrVkLpu1=-#Khywcrcd!MR+j4u4ei_0sjK-b79fFhSHD-YRN zp-$<&jhCza9v2c8hI_^>Eh3fzh>DMdguyY#gIvf3ooZ@*q1Qdsc@+|m5@p^ zTjE_Fi_H|&Iu0hV)FIGuOH-?QF2##9*; zbe+ZuBP|SF?rWgE73BZ1VA!^J+KCk5lvZq`=y&ZWpS(cEUm<%VuHN((2{3`1m>a@P z4B@8kaASlhOwA9$;RrZ8i*N%+!O)&|6L&a61{JcuMkPUW_X>t QRU!sBoODJ#vGcn37fZvI{r~^~ literal 0 HcmV?d00001 diff --git a/sprites/s_node_surface_tag/ce622434-3c89-4399-84ec-f319e262251f.png b/sprites/s_node_surface_tag/ce622434-3c89-4399-84ec-f319e262251f.png deleted file mode 100644 index d7690f59570d5385d8db40021ebf1a1f96bc672a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1485 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 QRU!sBoODJ#vGcn37fZvI{r~^~ literal 0 HcmV?d00001 diff --git a/sprites/s_node_surface_tag/layers/ce622434-3c89-4399-84ec-f319e262251f/db386a22-99a6-4a60-82fb-052f2eb34503.png b/sprites/s_node_surface_tag/layers/ce622434-3c89-4399-84ec-f319e262251f/db386a22-99a6-4a60-82fb-052f2eb34503.png deleted file mode 100644 index d7690f59570d5385d8db40021ebf1a1f96bc672a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1485 zcmZ`(dpHw%82)W@8--*eRFgBITC-3s9G2@`mTN_)+-E|=Hu03EutecdSmaWandMSp zSW6=0RuPfbQH>moBZbmg|D5MJfAoBp_j|tYd!O&0?|D-Xx!SK+)KUZhtao&{&U}LwN}J@$Rex=(5Z?$rjbP@~ zs(ytxgx`CGr|3)~3Fekik*M=WR_mim-R7-YaD6Y^b6PTe*6H6%ls+qH%JPzVVsUOm z3_0(^2gEIt*W%&dWYiG|>V%y zCO56Ci)d%xF+4u*iUKE{YBrIB2&?3$pX7kIPGpE8!g5!wt*N1*TWA=+y}w@)HK%rM zstp-`GFIOBjJENzQ^Vxk<~{Wv&vWN&ih7)g>dnVV(r3z4Gsa*1`n`iXFt(@jaLn!_ za66WW(c~c`w3Kc8YSGsBmZgEtxbWwxYm8E#_u>N{a4UyxYnbD@f9P9RL349QGX>*R zNB?UgCp5pivht)M)Jh@9W9tGTrs0mcFSR>DfBT-5i;~svh5)6vv4VI3oFWTE)6v>P zhrju2XygX?s7^txhRnihRiOr_|LUm2c6y9@anW7p*gG*8V>}-DVrCImoJh+jjwEmh9#Gu5il69+9!O*_Vv#bSxc-SbVcb2azx(~T1CJjRqt z($m-Z_^>M~;=b50;^GcWYiT{Tklgvqn~v?dX%yNsUDqK zT%@^qdTQpvLhAA#JW#3NEonhf<@<$GwEpq&l)Qund<<=|jI{ivq)>gAS}mNuAZ{K# zSo0B5;7!si(Lwi|0De<_vQH5A(YRv)eHP(OIpM z2!*kBtDLmbE1+bq-Vv^6%B0h6qoNWA1QdOi-rib+Z&ig_LKr16gectrZeW z)v5o4kb(w-8eAq>ISVm":"","Keyframes":[ {"$Keyframe":"","Channels":{ - "0":{"$SpriteFrameKeyframe":"","Id":{"name":"ce622434-3c89-4399-84ec-f319e262251f","path":"sprites/s_node_surface_tag/s_node_surface_tag.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"dccab5d0-cb8a-45b9-a7df-7f2339ecdd7f","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"870b1093-75c1-4b28-8a93-74b80af32021","path":"sprites/s_node_surface_tag/s_node_surface_tag.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"29ef40d3-0612-4a43-8c9b-28b8f86a4b16","IsCreationKey":false,"Key":0.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,