diff --git a/datafiles/data/Nodes/Internal.zip b/datafiles/data/Nodes/Internal.zip index ac9ab11d9..59ef3feb9 100644 Binary files a/datafiles/data/Nodes/Internal.zip and b/datafiles/data/Nodes/Internal.zip differ diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index ed43f9369..4b2a4d001 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -1283,7 +1283,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { } __nextNodesToLoop = noone; - for(var i = 0; i < array_length(outputs); i++) { + for( var i = 0, n = array_length(outputs); i < n; i++ ) { var _ot = outputs[i]; if(!_ot.forward) continue; @@ -1300,30 +1300,36 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { if(__nextNodes != noone) return __nextNodes; var nodes = []; - for(var i = 0; i < array_length(outputs); i++) { + for( var i = 0, n = array_length(outputs); i < n; i++ ) { var _ot = outputs[i]; if(!_ot.forward) continue; - var arr = _ot.getJunctionTo(); - array_map_ext(arr, function(t) /*=>*/ {return t.node}); - nodes = array_concat(nodes, arr); + for( var j = 0, m = array_length(_ot.value_to); j < m; j++ ) { + var _jto = _ot.value_to[j]; + if(_jto.value_from != _jto || !_jto.node.active) continue; + array_push(nodes, _jto.node); + } } - for(var i = 0; i < array_length(junc_meta); i++) { + for( var i = 0, n = array_length(junc_meta); i < n; i++ ) { var _ot = junc_meta[i]; - var arr = _ot.getJunctionTo(); - array_map_ext(arr, function(t) /*=>*/ {return t.node}); - nodes = array_concat(nodes, arr); + for( var j = 0, m = array_length(_ot.value_to); j < m; j++ ) { + var _jto = _ot.value_to[j]; + if(_jto.value_from != _jto || !_jto.node.active) continue; + array_push(nodes, _jto.node); + } } - for(var i = 0; i < array_length(inputs); i++) { + for( var i = 0, n = array_length(inputs); i < n; i++ ) { var _in = inputs[i]; if(_in.bypass_junc == noone) continue; - var arr = _in.bypass_junc.getJunctionTo(); - array_map_ext(arr, function(t) /*=>*/ {return t.node}); - nodes = array_concat(nodes, arr); + for( var j = 0, m = array_length(_in.value_to); j < m; j++ ) { + var _jto = _in.value_to[j]; + if(_jto.value_from != _jto || !_jto.node.active) continue; + array_push(nodes, _jto.node); + } } array_unique_ext(nodes); @@ -1405,8 +1411,6 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor { } static refreshNodeDisplay = function() { - // print("refreshNodeDisplay"); printCallStack(); - // if(IS_PLAYING) return; updateIO(); setHeight(); getJunctionList(); diff --git a/scripts/node_pixel_sort/node_pixel_sort.gml b/scripts/node_pixel_sort/node_pixel_sort.gml index 221c666a9..cfc403484 100644 --- a/scripts/node_pixel_sort/node_pixel_sort.gml +++ b/scripts/node_pixel_sort/node_pixel_sort.gml @@ -1,12 +1,6 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Pixel Sort"; - shader = sh_pixel_sort; - uniform_dim = shader_get_uniform(shader, "dimension"); - uniform_itr = shader_get_uniform(shader, "iteration"); - uniform_tre = shader_get_uniform(shader, "threshold"); - uniform_dir = shader_get_uniform(shader, "direction"); - newInput(0, nodeValue_Surface("Surface in", self)); newInput(1, nodeValue_Int("Iteration", self, 2)); @@ -38,12 +32,14 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group attribute_surface_depth(); - static step = function() { #region - __step_mask_modifier(); - } #endregion + temp_surface = [ 0, 0 ]; - static processData = function(_outSurf, _data, _output_index, _array_index) { #region - var _in = _data[0]; + static step = function() { + __step_mask_modifier(); + } + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; var _it = _data[1]; var _tr = _data[2]; @@ -52,40 +48,42 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group if(_it <= 0) { surface_set_target(_outSurf); BLEND_OVERRIDE - draw_surface_safe(_in); + draw_surface_safe(_surf); BLEND_NORMAL surface_reset_target(); return _outSurf; } - var sw = surface_get_width_safe(_outSurf); - var sh = surface_get_height_safe(_outSurf); + var sw = surface_get_width_safe(_surf); + var sh = surface_get_height_safe(_surf); + + temp_surface[0] = surface_verify(temp_surface[0], sw, sh); + temp_surface[1] = surface_verify(temp_surface[1], sw, sh); - var pp = [ surface_create_valid(sw, sh), surface_create_valid(sw, sh) ]; var sBase, sDraw; - surface_set_target(pp[1]); + surface_set_target(temp_surface[1]); DRAW_CLEAR BLEND_OVERRIDE - draw_surface_safe(_in); + draw_surface_safe(_surf); BLEND_NORMAL surface_reset_target(); - shader_set(shader); - shader_set_uniform_f(uniform_dim, surface_get_width_safe(_in), surface_get_height_safe(_in)); - shader_set_uniform_f(uniform_tre, _tr); - shader_set_uniform_i(uniform_dir, _dr); + shader_set(sh_pixel_sort); + shader_set_2("dimension", [sw, sh]); + shader_set_f("threshold", _tr); + shader_set_i("direction", _dr); for( var i = 0; i < _it; i++ ) { var it = i % 2; - sBase = pp[it]; - sDraw = pp[!it]; + sBase = temp_surface[it]; + sDraw = temp_surface[!it]; surface_set_target(sBase); DRAW_CLEAR BLEND_OVERRIDE - shader_set_uniform_f(uniform_itr, i); + shader_set_f("iteration", i); draw_surface_safe(sDraw); BLEND_NORMAL surface_reset_target(); @@ -99,13 +97,10 @@ function Node_Pixel_Sort(_x, _y, _group = noone) : Node_Processor(_x, _y, _group BLEND_NORMAL surface_reset_target(); - surface_free(pp[0]); - surface_free(pp[1]); - __process_mask_modifier(_data); _outSurf = mask_apply(_data[0], _outSurf, _data[4], _data[5]); _outSurf = channel_apply(_data[0], _outSurf, _data[7]); return _outSurf; - } #endregion + } } \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index bf972cce4..99e1f5556 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -526,6 +526,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru static setVisible = function(inspector) { var v = visible; + var _ref = false; if(connect_type == CONNECT_TYPE.input) { show_in_inspector = inspector; @@ -534,7 +535,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru } else visible = inspector; - if(NOT_LOAD) node.toRefreshNodeDisplay = true; + if(v != visible && NOT_LOAD) + node.toRefreshNodeDisplay = true; return self; } diff --git a/scripts/project_data/project_data.gml b/scripts/project_data/project_data.gml index e5134abf0..9b0a2f695 100644 --- a/scripts/project_data/project_data.gml +++ b/scripts/project_data/project_data.gml @@ -29,9 +29,6 @@ function Project() constructor { nodeMap = ds_map_create(); nodeNameMap = ds_map_create(); - useRenderList = false; - renderList = []; - pathInputs = []; composer = noone; diff --git a/scripts/render_data/render_data.gml b/scripts/render_data/render_data.gml index 1485d5e56..9554907f9 100644 --- a/scripts/render_data/render_data.gml +++ b/scripts/render_data/render_data.gml @@ -41,8 +41,6 @@ function NodeTopoSort() { array_foreach(PROJECT.allNodes, function(n) /*=>*/ { if(is(n, Node_Collection)) n.refreshNodes(); }); PROJECT.nodeTopo = []; - PROJECT.renderList = []; - PROJECT.useRenderList = true; __topoSort(PROJECT.nodeTopo, PROJECT.nodes); // print(PROJECT.nodeTopo); @@ -171,22 +169,6 @@ function Render(partial = false, runAction = false) { LOG_BLOCK_START(); LOG_IF(global.FLAG.render, $"============================== RENDER START [{partial? "PARTIAL" : "FULL"}] [frame {CURRENT_FRAME}] =============================="); - // global.getvalue_hit = 0; - - // if(PROJECT.useRenderList && !array_empty(PROJECT.renderList)) { - // for( var i = 0, n = array_length(PROJECT.renderList); i < n; i++ ) { - - // var render_pt = get_timer(); - // var rendering = PROJECT.renderList[i]; - - // rendering.doUpdate(); - // rendering.getNextNodes(true); - - // if(PROFILER_STAT) rendering.summarizeReport(render_pt); - // } - // return; - // } - try { var t = get_timer(); var t1 = get_timer(); @@ -237,14 +219,11 @@ function Render(partial = false, runAction = false) { rendering = RENDER_QUEUE.dequeue(); renderable = rendering.isRenderable(); - if(is(rendering, Node_Iterate_Sort_Inline)) - PROJECT.useRenderList = false; // LOG_IF(global.FLAG.render == 1, $"Rendering {rendering.internalName} ({rendering.display_name}) : {renderable? "Update" : "Pass"} ({rendering.rendered})"); if(renderable) { var render_pt = get_timer(); rendering.doUpdate(); - array_push(PROJECT.renderList, rendering); _render_time += get_timer() - render_pt; var nextNodes = rendering.getNextNodes();