From 662e1dee54c55734eb87c81c780d8f5a7417c5bb Mon Sep 17 00:00:00 2001 From: Tanasart Date: Wed, 29 Jan 2025 10:24:29 +0700 Subject: [PATCH] [Composite] Dynamic selection now allow none selection. --- datafiles/data/Nodes/Internal.zip | Bin 9100058 -> 9100058 bytes scripts/node_2d_light/node_2d_light.gml | 1 + scripts/node_composite/node_composite.gml | 252 ++++++++++------------ scripts/node_data/node_data.gml | 50 +++-- scripts/node_processor/node_processor.gml | 8 +- scripts/panel_graph/panel_graph.gml | 2 +- 6 files changed, 151 insertions(+), 162 deletions(-) diff --git a/datafiles/data/Nodes/Internal.zip b/datafiles/data/Nodes/Internal.zip index 4abd8e06198dc1d4450d59ce59421b3ab0779109..ce3bcbcf79a4e728d27b43eed65de97b89ed010e 100644 GIT binary patch delta 1292 zcmYk(TWnNS6b4`|tz(BmD^>yLNMR6KpdHG!&~|z~TA*0!fX=0eC|4~?>8Ks8Rn)&{ zI6F0g2iZw4iEqYWkPyQ_jL}Y8qDdQH+W0`n5P}c-B3cteAn3n(hT2KK{8{U)eaY#!ahuo0WE8D-dlttdwYD&a>Js!@Yl)S>=s zvp$&dS3v(3GCg{K(3~g5@u0a@^0T11Msh4@mPpl-{Jb=xyqt7`;R9QYXDfUGzSEKqu)#`iMSG zxLdI8M8;G=?-@n8#f)=^x)Yrf z)>Kx;-vQlr%~~(XclGMF+m=g@U9;TMsg=%8cde|mlTL#p8`2-v%`B-YjJx!}{}Wz) zYf!mny()M5WzyOx3z%NLIb|)lzxr%d+!c?eEQ)^~O`W=4>=#X$k3;T>;h?W+bxm>!)*RLWG_h< z<&rJK_EyRBeag@mhwVZsc!r_>8MeJMMcIf`@K%QI7_pbjm+9hiy5M~(rRllqY$$sq z+OOJOU&<@|*{*g-`lG6WnXsa&GE*9NVm$YHhbm1^8QK?9J}LIaRHNj%m}+7sIQi=` z`TuV8syfN(E7$d@LMdANRBgIhpRNs^+pkv4Oa}U$$?0V}U3}lKOqpOB+B=|%?vE#q J4ycR%{{T>B8W;co delta 1292 zcmYk(TWnNS6b4`{En|m53!y?&9z!8pmQlAcmpj;>3|)n6_mec zI6IKQgY2Z2#5ZCvYKUPp#%QN4(WJzeHa^fX#OQ;*2;qSciTbaep>~olf7Uu{UoyM* z>gDWSI)#Ujg_+1k4ralFhmi{}W+M-CFcg;95gH}!qg-QzVa(;B94VUIVjrD7@U|-2 zOj~FxZKLh9gPQ0WdX}1LC$-RXw2OAr9(tZ$pb&*ALQ!g^z4RjOqnBtu9iW%#6?&Ck zqu1#m9ilhrO=_dV^cKBMN2r~SQU}H87#*i~sFULKE}ft*dXKv4eL6{}=mYwYPA9#s z*mg9lNSQsOsFXZEiV9}($5DLkkw(`zO3fEzD3BsG=1%=HhAOG6#!D4{N5D)DfLv9g@MA-pWkcFFQ1y+)$dMDE;E_p`+lutf@vB5fG&A3o;)<5 HuLS=C%@WpS diff --git a/scripts/node_2d_light/node_2d_light.gml b/scripts/node_2d_light/node_2d_light.gml index 45057f284..8d3cd9825 100644 --- a/scripts/node_2d_light/node_2d_light.gml +++ b/scripts/node_2d_light/node_2d_light.gml @@ -22,6 +22,7 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) new scrollItem("Spot", s_node_2d_light_shape, 5), new scrollItem("Flame", s_node_2d_light_shape, 6), ]; + typeListStr = array_create_ext(array_length(typeList), function(i) /*=>*/ {return typeList[i].name}); static createNewInput = function() { diff --git a/scripts/node_composite/node_composite.gml b/scripts/node_composite/node_composite.gml index 04abc1a68..4800f1200 100644 --- a/scripts/node_composite/node_composite.gml +++ b/scripts/node_composite/node_composite.gml @@ -24,6 +24,7 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) attribute_surface_depth(); attribute_interpolation(); + dynamic_input_inspecting = noone; attributes.layer_visible = []; attributes.layer_selectable = []; properties_expand = []; @@ -44,9 +45,9 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) if(is_real(renaming)) inputs[renaming].setName(_name); - else if(is_struct(renaming) && is_instanceof(renaming, Node)) + else if(is_struct(renaming) && is(renaming, Node)) renaming.setDisplayName(_name) - + renaming = noone; renaming_index = noone; }); @@ -92,37 +93,35 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var _lh = lh + ui(4) + _exp * eh; _h += _lh; - #region extended - if(_exp) { - var _px = _x + ui(4); - var _py = _cy + lh + ui(4); - var _pw = _w - ui(8); - var _ph = eh - ui(4); - - var _pww = (_pw - ui(8)) / 2 - ui(8); - var _pwh = _ph - ui(8); - - draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, _px, _py, _pw, _ph, COLORS.node_composite_bg_blend, 1); - - var jn_bld = inputs[index + 4]; - var jn_alp = inputs[index + 5]; - - var wd_bld = jn_bld.editWidget; - var wd_alp = jn_alp.editWidget; - - var _param = new widgetParam(_px + ui(4), _py + ui(4), _pww, _pwh, jn_bld.showValue(), jn_bld.display_data, _m, layer_renderer.rx, layer_renderer.ry); - _param.font = f_p2; - - wd_bld.setFocusHover(_focus, _hover); - wd_bld.drawParam(_param); - - var _param = new widgetParam(_px + ui(4) + _pww + ui(8), _py + ui(4), _pww, _pwh, jn_alp.showValue(), jn_alp.display_data, _m, layer_renderer.rx, layer_renderer.ry); - _param.font = f_p2; - - wd_alp.setFocusHover(_focus, _hover); - wd_alp.drawParam(_param); - } - #endregion + if(_exp) { // expanded + var _px = _x + ui(4); + var _py = _cy + lh + ui(4); + var _pw = _w - ui(8); + var _ph = eh - ui(4); + + var _pww = (_pw - ui(8)) / 2 - ui(8); + var _pwh = _ph - ui(8); + + draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, _px, _py, _pw, _ph, COLORS.node_composite_bg_blend, 1); + + var jn_bld = inputs[index + 4]; + var jn_alp = inputs[index + 5]; + + var wd_bld = jn_bld.editWidget; + var wd_alp = jn_alp.editWidget; + + var _param = new widgetParam(_px + ui(4), _py + ui(4), _pww, _pwh, jn_bld.showValue(), jn_bld.display_data, _m, layer_renderer.rx, layer_renderer.ry); + _param.font = f_p2; + + wd_bld.setFocusHover(_focus, _hover); + wd_bld.drawParam(_param); + + var _param = new widgetParam(_px + ui(4) + _pww + ui(8), _py + ui(4), _pww, _pwh, jn_alp.showValue(), jn_alp.display_data, _m, layer_renderer.rx, layer_renderer.ry); + _param.font = f_p2; + + wd_alp.setFocusHover(_focus, _hover); + wd_alp.drawParam(_param); + } #region draw buttons if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, ui(16))) { @@ -175,8 +174,8 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var _sss = min(ssh / _ssw, ssh / _ssh); draw_surface_ext_safe(_surf, _sx0, _sy0, _sss, _sss, 0, c_white, 1); - if(surface_selecting == index) draw_sprite_stretched_add(THEME.box_r2, 1, _sx0, _sy0, ssh, ssh, COLORS._main_accent, 1); - else draw_sprite_stretched_add(THEME.box_r2, 1, _sx0, _sy0, ssh, ssh, COLORS._main_icon, 0.3); + if(dynamic_input_inspecting == ind) draw_sprite_stretched_add(THEME.box_r2, 1, _sx0, _sy0, ssh, ssh, COLORS._main_accent, 1); + else draw_sprite_stretched_add(THEME.box_r2, 1, _sx0, _sy0, ssh, ssh, COLORS._main_icon, 0.3); #endregion #region canvas layers @@ -196,9 +195,10 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) if(_junc_canvas) hover &= _m[0] > _txx + ui(8 + 16); var tc = ind == dynamic_input_inspecting? COLORS._main_text_accent : COLORS._main_icon; + var tf = ind == dynamic_input_inspecting? f_p1b : f_p1; if(hover) tc = COLORS._main_text; - draw_set_text(f_p1, fa_left, fa_center, tc); + draw_set_text(tf, fa_left, fa_center, tc); if(canvas_draw != noone && _junc_canvas) _txt = _junc_canvas.display_name; @@ -238,49 +238,47 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) } #endregion - #region modifiers - if(_jun_layer) { - var _modis = _jun_layer.modifier; - var _mdx = _sx0; - var _mdy = _cy + _lh; - var mh = ui(24); + if(_jun_layer) { // modifiers + var _modis = _jun_layer.modifier; + var _mdx = _sx0; + var _mdy = _cy + _lh; + var mh = ui(24); + + for (var j = array_length(_modis) - 1; j >= 0; j--) { + var _modi = _modis[j]; + var _mtx = _mdx; - for (var j = array_length(_modis) - 1; j >= 0; j--) { - var _modi = _modis[j]; - var _mtx = _mdx; + if(_modi.active_index != -1) { + var _bx = _mtx + ui(12); + var _by = _mdy + mh / 2; - if(_modi.active_index != -1) { - var _bx = _mtx + ui(12); - var _by = _mdy + mh / 2; + var _acti = _modi.getInputData(_modi.active_index); + + if(_hover && point_in_circle(_m[0], _m[1], _bx, _by, ui(12))) { + draw_sprite_ui_uniform(THEME.visible_12, _acti, _bx, _by - ui(2), 1, c_white); - var _acti = _modi.getInputData(_modi.active_index); + if(mouse_press(mb_left, _focus)) + _modi.inputs[_modi.active_index].setValue(!_acti); + } else + draw_sprite_ui_uniform(THEME.visible_12, _acti, _bx, _by - ui(2), 1, COLORS._main_icon); - if(_hover && point_in_circle(_m[0], _m[1], _bx, _by, ui(12))) { - draw_sprite_ui_uniform(THEME.visible_12, _acti, _bx, _by - ui(2), 1, c_white); - - if(mouse_press(mb_left, _focus)) - _modi.inputs[_modi.active_index].setValue(!_acti); - } else - draw_sprite_ui_uniform(THEME.visible_12, _acti, _bx, _by - ui(2), 1, COLORS._main_icon); - - } - - _mtx += ui(24); - var _mhov = _hover && point_in_rectangle(_m[0], _m[1], _mtx, _mdy, _x + _w, _mdy + mh - 1); - draw_set_text(f_p2, fa_left, fa_center, _mhov? COLORS._main_text : COLORS._main_text_sub); - draw_text_add(_mtx, _mdy + mh / 2 - ui(2), _modi.display_name); - - if(_mhov && DOUBLE_CLICK) { - var pan = panelAdd("Panel_Inspector", true); - pan.content.setInspecting(_modi, true); - } - - _h += mh; - _lh += mh; - _mdy += mh; } + + _mtx += ui(24); + var _mhov = _hover && point_in_rectangle(_m[0], _m[1], _mtx, _mdy, _x + _w, _mdy + mh - 1); + draw_set_text(f_p2, fa_left, fa_center, _mhov? COLORS._main_text : COLORS._main_text_sub); + draw_text_add(_mtx, _mdy + mh / 2 - ui(2), _modi.display_name); + + if(_mhov && DOUBLE_CLICK) { + var pan = panelAdd("Panel_Inspector", true); + pan.content.setInspecting(_modi, true); + } + + _h += mh; + _lh += mh; + _mdy += mh; } - #endregion + } if(_hover && point_in_rectangle(_m[0], _m[1], _x, _cy, _x + _w, _cy + lh)) { hoverIndex = ind; @@ -319,10 +317,8 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) } if(mouse_press(mb_left, _focus)) { - layer_dragging = ind; - surface_selecting = index; - - dynamic_input_inspecting = ind; + dynamic_input_inspecting = dynamic_input_inspecting == ind? noone : ind; + layer_dragging = ind; refreshDynamicDisplay(); } } @@ -419,9 +415,7 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) .setUnitRef(function(index) { return [ overlay_w, overlay_h ]; }); newInput(index + 2, nodeValue_Rotation($"Rotation {_s}", self, 0)); - inputs[index + 2].options_histories = [ BLEND_TYPES, - { cond: function() /*=>*/ {return LOADING_VERSION < 1_18_00_0}, list: global.BLEND_TYPES_18 } - ]; + inputs[index + 2].options_histories = [ BLEND_TYPES, { cond: function() /*=>*/ {return LOADING_VERSION < 1_18_00_0}, list: global.BLEND_TYPES_18 } ]; newInput(index + 3, nodeValue_Vec2($"Scale {_s}", self, [ 1, 1 ] )); @@ -430,11 +424,8 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) newInput(index + 5, nodeValue_Float($"Opacity {_s}", self, 1)) .setDisplay(VALUE_DISPLAY.slider); - while(_s >= array_length(attributes.layer_visible)) - array_push(attributes.layer_visible, true); - - while(_s >= array_length(attributes.layer_selectable)) - array_push(attributes.layer_selectable, true); + while(_s >= array_length(attributes.layer_visible)) array_push(attributes.layer_visible, true); + while(_s >= array_length(attributes.layer_selectable)) array_push(attributes.layer_selectable, true); refreshDynamicDisplay(); return inputs[index + 0]; @@ -445,6 +436,10 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) ["Transform", false], 1, 2, 3, ]; + input_display_dynamic_full = [ + ["Surface", false], 0, 4, 5, 1, 2, 3, + ]; + input_display_list = [ ["Output", true], 0, 1, 2, ["Layers", false], layer_renderer, @@ -463,7 +458,6 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) temp_surface = [ surface_create(1, 1), surface_create(1, 1), surface_create(1, 1) ]; blend_temp_surface = temp_surface[2]; - surface_selecting = noone; surf_dragging = -1; input_dragging = -1; drag_type = 0; @@ -479,13 +473,6 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) overlay_h = 0; static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { - // var amo = getInputAmount(); - // for( var i = 0; i < amo; i++ ) { - // var index = input_fix_len + i * data_length; - // var _surf = inputs[index].getValue(); - // draw_surface_ext_safe(_surf, 8 + 128 * i, 64, .5, .5, 0, c_white, 1); - // } - PROCESSOR_OVERLAY_CHECK var pad = current_data[0]; @@ -670,19 +657,23 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var a = anchors[index]; if(!is_struct(a)) continue; - if(surface_selecting == index) { + var _hov = point_in_rectangle_points(_mx, _my, a.d0[0], a.d0[1], a.d1[0], a.d1[1], a.d2[0], a.d2[1], a.d3[0], a.d3[1]); + + if(dynamic_input_inspecting == i) { var _ri = 0; var _si = 0; if(point_in_circle(_mx, _my, a.d3[0], a.d3[1], 12)) { - hovering = index; + hovering = i; hovering_type = NODE_COMPOSE_DRAG.scale; _si = 1; - } else if(point_in_rectangle_points(_mx, _my, a.d0[0], a.d0[1], a.d1[0], a.d1[1], a.d2[0], a.d2[1], a.d3[0], a.d3[1])) { - hovering = index; + + } else if(_hov) { + hovering = i; hovering_type = NODE_COMPOSE_DRAG.move; + } else if(point_in_circle(_mx, _my, a.rr[0], a.rr[1], 12)) { - hovering = index; + hovering = i; hovering_type = NODE_COMPOSE_DRAG.rotate; _ri = 1; } @@ -690,27 +681,27 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) draw_sprite_colored(THEME.anchor_rotate, _ri, a.rr[0], a.rr[1],, a.rot); draw_sprite_colored(THEME.anchor_scale, _si, a.d3[0], a.d3[1],, a.rot); - } else if(point_in_rectangle_points(_mx, _my, a.d0[0], a.d0[1], a.d1[0], a.d1[1], a.d2[0], a.d2[1], a.d3[0], a.d3[1]) && - (hovering != surface_selecting || surface_selecting == noone)) { - - hovering = index; + } else if(_hov && (hovering != dynamic_input_inspecting || dynamic_input_inspecting == noone)) { + hovering = i; hovering_type = NODE_COMPOSE_DRAG.move; } } if(mouse_press(mb_left, active)) { - surface_selecting = hovering; - // dynamic_input_inspecting = hovering; + dynamic_input_inspecting = hovering; refreshDynamicDisplay(); } - if(surface_selecting != noone) { - var a = array_safe_get_fast(anchors, surface_selecting, noone); - if(!is_struct(a)) surface_selecting = noone; + if(dynamic_input_inspecting != noone) { + var _ss = input_fix_len + dynamic_input_inspecting * data_length; + var a = array_safe_get_fast(anchors, _ss, noone); + + if(!is_struct(a)) _ss = noone; } if(hovering != noone) { - var a = anchors[hovering]; + var hi = input_fix_len + hovering * data_length; + var a = anchors[hi]; draw_set_color(COLORS.node_composite_overlay_border); draw_line(a.d0[0], a.d0[1], a.d1[0], a.d1[1]); @@ -719,8 +710,9 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) draw_line(a.d3[0], a.d3[1], a.d2[0], a.d2[1]); } - if(surface_selecting != noone) { - var a = anchors[surface_selecting]; + if(dynamic_input_inspecting != noone) { + var _ss = input_fix_len + dynamic_input_inspecting * data_length; + var a = anchors[_ss]; draw_set_color(COLORS._main_accent); draw_line(a.d0[0], a.d0[1], a.d1[0], a.d1[1]); @@ -730,27 +722,30 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) } if(hovering != noone && mouse_press(mb_left, active)) { - var a = anchors[hovering]; + var hi = input_fix_len + hovering * data_length; + var a = anchors[hi]; if(hovering_type == NODE_COMPOSE_DRAG.move) { - surf_dragging = hovering; - input_dragging = hovering + 1; + surf_dragging = hi; + input_dragging = hi + 1; drag_type = hovering_type; - dragging_sx = current_data[hovering + 1][0]; - dragging_sy = current_data[hovering + 1][1]; + dragging_sx = current_data[hi + 1][0]; + dragging_sy = current_data[hi + 1][1]; dragging_mx = _mx; dragging_my = _my; + } else if(hovering_type == NODE_COMPOSE_DRAG.rotate) { //rot - surf_dragging = hovering; - input_dragging = hovering + 2; + surf_dragging = hi; + input_dragging = hi + 2; drag_type = hovering_type; - dragging_sx = current_data[hovering + 2]; + dragging_sx = current_data[hi + 2]; rot_anc_x = overlay_x(a.cx, _x, _s); rot_anc_y = overlay_y(a.cy, _y, _s); dragging_mx = point_direction(rot_anc_x, rot_anc_y, _mx, _my); + } else if(hovering_type == NODE_COMPOSE_DRAG.scale) { //sca - surf_dragging = hovering; - input_dragging = hovering + 3; + surf_dragging = hi; + input_dragging = hi + 3; drag_type = hovering_type; dragging_sx = _sca[0]; dragging_sy = _sca[1]; @@ -763,18 +758,13 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) static step = function() { var _dim_type = getSingleValue(1); - inputs[2].setVisible(_dim_type == COMPOSE_OUTPUT_SCALING.constant); - - if(canvas_draw != noone && surface_selecting == noone && getInputAmount()) - surface_selecting = input_fix_len; } static processData = function(_outData, _data, _output_index, _array_index) { var _outSurf = _outData[0]; if(getInputAmount() == 0) return _outData; - dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1); var _pad = _data[0]; var _dim_type = _data[1]; @@ -840,8 +830,6 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var _alp = _data[_ind + 5]; if(!is_surface(_s)) continue; - // print($" < {CURRENT_FRAME}: in {_s}") - var _ww = surface_get_width_safe(_s); var _hh = surface_get_height_safe(_s); var _sw = _ww * _sca[0]; @@ -867,11 +855,10 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) draw_surface_safe(temp_surface[!_bg]); surface_reset_shader(); - // print($" > {CURRENT_FRAME}: out {_outSurf}\n") - _outData[0] = _outSurf; _outData[1] = _atlas; _outData[2] = [ww, hh]; + return _outData; } @@ -886,10 +873,7 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) static attributeDeserialize = function(attr) { struct_append(attributes, attr); - if(struct_has(attr, "layer_visible")) - attributes.layer_visible = attr.layer_visible; - - if(struct_has(attr, "layer_selectable")) - attributes.layer_selectable = attr.layer_selectable; + if(struct_has(attr, "layer_visible")) attributes.layer_visible = attr.layer_visible; + if(struct_has(attr, "layer_selectable")) attributes.layer_selectable = attr.layer_selectable; } } \ No newline at end of file diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index ce21a5bb8..cc71f7813 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -404,12 +404,13 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { ////- DYNAMIC IO - dummy_input = noone; - auto_input = false; - dyna_input_check_shift = 0; - input_display_dynamic = -1; - dynamic_input_inspecting = 0; - static createNewInput = -1; + dummy_input = noone; + auto_input = false; + dyna_input_check_shift = 0; + input_display_dynamic = -1; + input_display_dynamic_full = -1; + dynamic_input_inspecting = 0; + static createNewInput = -1; static setDynamicInput = function(_data_length = 1, _auto_input = true, _dummy_type = VALUE_TYPE.any, _dynamic_input_cond = DYNA_INPUT_COND.connection) { is_dynamic_input = true; @@ -440,7 +441,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { for( var i = 0; i < input_fix_len; i++ ) array_push(_in, inputs[i]); - input_display_list = array_clone(input_display_list_raw, 1); + var _input_display_list = array_clone(input_display_list_raw, 1); var sep = false; for( var i = input_fix_len; i < array_length(inputs); i += data_length ) { @@ -456,14 +457,14 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { } if(_active) { - if(sep && data_length > 1) array_push(input_display_list, new Inspector_Spacer(20, true)); + if(sep && data_length > 1) array_push(_input_display_list, new Inspector_Spacer(20, true)); sep = true; for( var j = 0; j < data_length; j++ ) { var _ind = i + j; - if(input_display_list != -1) - array_push(input_display_list, array_length(_in)); + if(_input_display_list != -1) + array_push(_input_display_list, array_length(_in)); array_push(_in, inputs[_ind]); } } else { @@ -477,10 +478,10 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { _in[i].index = i; if(dummy_input) dummy_input.index = _ina; - inputs = _in; - refreshNodeDisplay(); + + if(input_display_dynamic == -1) input_display_list = _input_display_list; } static refreshDynamicDisplay = function() { @@ -488,18 +489,25 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { array_resize(input_display_list, array_length(input_display_list_raw)); var _amo = getInputAmount(); - if(_amo == 0) { - dynamic_input_inspecting = 0; + if(_amo == 0) { dynamic_input_inspecting = 0; return; } + + dynamic_input_inspecting = min(dynamic_input_inspecting, _amo - 1); + + if(dynamic_input_inspecting == noone) { + var _list = input_display_dynamic_full == -1? input_display_dynamic : input_display_dynamic_full; + for( var j = 0; j < _amo; j++ ) { + var _ind = input_fix_len + j * data_length; + for( var i = 0, n = array_length(_list); i < n; i++ ) { + var v = _list[i]; if(is_real(v)) v += _ind; + array_push(input_display_list, v); + } + } return; - } + } - dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1); var _ind = input_fix_len + dynamic_input_inspecting * data_length; - for( var i = 0, n = array_length(input_display_dynamic); i < n; i++ ) { - var v = input_display_dynamic[i]; - if(is_real(v)) v += _ind; - + var v = input_display_dynamic[i]; if(is_real(v)) v += _ind; array_push(input_display_list, v); } } @@ -558,7 +566,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { var _ind = input_fix_len + index * data_length; array_delete(inputs, _ind, data_length); - dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1); + dynamic_input_inspecting = min(dynamic_input_inspecting, getInputAmount() - 1); refreshDynamicDisplay(); triggerRender(); } diff --git a/scripts/node_processor/node_processor.gml b/scripts/node_processor/node_processor.gml index a6168dc77..268031e4a 100644 --- a/scripts/node_processor/node_processor.gml +++ b/scripts/node_processor/node_processor.gml @@ -26,12 +26,8 @@ function Node_Processor(_x, _y, _group = noone) : Node(_x, _y, _group) construct icon = THEME.node_processor_icon; array_push(attributeEditors, "Array processor"); - array_push(attributeEditors, [ "Array process type", function() { return attributes.array_process; }, - new scrollBox([ "Loop", "Hold", "Expand", "Expand inverse" ], - function(val) { - attributes.array_process = val; - triggerRender(); - }, false) ]); + array_push(attributeEditors, [ "Array process type", function() /*=>*/ {return attributes.array_process}, + new scrollBox([ "Loop", "Hold", "Expand", "Expand inverse" ], function(val) /*=>*/ { attributes.array_process = val; triggerRender(); }, false) ]); static getInputData = function(index, def = 0) { INLINE return array_safe_get_fast(inputs_data, index, def); } diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index f4c39ce75..30ce92494 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -3114,7 +3114,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { } cx = cx + 160; - cy = round(cy / len / 32) * 32; + cy = value_snap(cy / len, 16); var _compose = nodeBuild(_ty, cx, cy, getCurrentContext()).skipDefault();