function Node_Feedback_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y, _group) constructor { name = "Feedback Output"; color = COLORS.node_blend_feedback; is_group_io = true; setDimension(96, 32 + 24 * 2); newInput(1, nodeValue("Feedback loop", self, CONNECT_TYPE.input, VALUE_TYPE.node, -1)) .setVisible(true, true); cache_value = -1; static update = function(frame = CURRENT_FRAME) { if(inputs[0].value_from == noone) return; if(IS_LAST_FRAME) { cache_value = noone; return; } var _val_get = getInputData(0); var _arr = inputs[0].value_from.isArray(); var is_surf = inputs[0].type == VALUE_TYPE.surface; if(is_array(cache_value)) { for( var i = 0, n = array_length(cache_value); i < n; i++ ) { if(is_surface(cache_value[i])) surface_free(cache_value[i]); } } else if(is_surface(cache_value)) surface_free(cache_value); if(_arr) { var amo = is_array(_val_get)? array_length(_val_get) : 0; cache_value = array_create(amo); if(is_surf) { for( var i = 0; i < amo; i++ ) { if(is_surface(_val_get[i])) cache_value[i] = surface_clone(_val_get[i]); } } else cache_value = _val_get; } else { if(is_surf) { if(is_surface(_val_get)) cache_value = surface_clone(_val_get); } else cache_value = _val_get; } } }