diff --git a/objects/o_dialog_textbox_slider/Draw_64.gml b/objects/o_dialog_textbox_slider/Draw_64.gml index faf112521..8f299936c 100644 --- a/objects/o_dialog_textbox_slider/Draw_64.gml +++ b/objects/o_dialog_textbox_slider/Draw_64.gml @@ -9,12 +9,16 @@ if(!MOUSE_WRAPPING) { else if(slide_da == 0 && abs(_ady) > abs(_adx) + 8 && abs(mouse_my - slide_dy) > 64) slide_da = 1; else if(slide_da == 1 && abs(_adx) > abs(_ady) + 8 && abs(mouse_mx - slide_dx) > 64) slide_da = 0; - var spd = (slide_da? _ady : _adx) * tb.slide_speed; - var _val = value_snap(tb.slide_sv + spd, tb.slide_speed); + var _s = tb.slide_speed; + if(key_mod_press(CTRL)) _s *= 10; + if(key_mod_press(ALT)) _s /= 10; + + var spd = (slide_da? _ady : _adx) * _s; + var _val = value_snap(tb.slide_sv + spd, _s); draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text); - var _stp_sz = 50 * tb.slide_speed; + var _stp_sz = 50 * _s; var _stp_fl = round(_val / _stp_sz) * _stp_sz; var _stp_md = _val - _stp_fl; @@ -24,9 +28,9 @@ if(!MOUSE_WRAPPING) { _tw = max(_tw, string_width(_v) + 16); } - var _snp_s = 50 * tb.slide_speed; + var _snp_s = 50 * _s; var _snp_v = round(_val / _snp_s) * _snp_s; - if(abs(_val - _snp_v) < 5 * tb.slide_speed) + if(abs(_val - _snp_v) < 5 * _s) _val = _snp_v; if(slide_da) { @@ -41,11 +45,11 @@ if(!MOUSE_WRAPPING) { var _v = _stp_fl + i * _stp_sz; draw_set_alpha(0.4 - abs(i) * 0.1); - draw_text(slide_dx, slide_dy - (_v - tb.slide_sv) / tb.slide_speed, _v); + draw_text(slide_dx, slide_dy - (_v - tb.slide_sv) / _s, _v); } draw_set_alpha(1); - draw_text(slide_dx, slide_dy - (_val - tb.slide_sv) / tb.slide_speed, _val); + draw_text(slide_dx, slide_dy - (_val - tb.slide_sv) / _s, _val); } else { var _sdw = 240; var _sdh = 48; @@ -58,11 +62,11 @@ if(!MOUSE_WRAPPING) { var _v = _stp_fl + i * _stp_sz; draw_set_alpha(0.4 - abs(i) * 0.1); - draw_text(slide_dx + (_v - tb.slide_sv) / tb.slide_speed, slide_dy, _v); + draw_text(slide_dx + (_v - tb.slide_sv) / _s, slide_dy, _v); } draw_set_alpha(1); - draw_text(slide_dx + (_val - tb.slide_sv) / tb.slide_speed, slide_dy, _val); + draw_text(slide_dx + (_val - tb.slide_sv) / _s, slide_dy, _val); } tb._input_text = string_real(_val); diff --git a/scripts/node_collection/node_collection.gml b/scripts/node_collection/node_collection.gml index 96701c974..f037dc32f 100644 --- a/scripts/node_collection/node_collection.gml +++ b/scripts/node_collection/node_collection.gml @@ -468,11 +468,13 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc for( var i = siz - 1; i >= custom_output_index; i-- ) ds_list_delete(outputs, i); + for( var i = 0; i < siz; i++ ) + array_push(output_display_list, i); + for( var i = custom_output_index; i < siz; i++ ) { var _jout = ds_priority_delete_min(ar); _jout.index = i; ds_list_add(outputs, _jout); - array_push(output_display_list, i); } ds_priority_destroy(ar); diff --git a/scripts/node_iterate_each/node_iterate_each.gml b/scripts/node_iterate_each/node_iterate_each.gml index 3477e97b7..deb6af16a 100644 --- a/scripts/node_iterate_each/node_iterate_each.gml +++ b/scripts/node_iterate_each/node_iterate_each.gml @@ -13,7 +13,7 @@ function Node_Iterate_Each(_x, _y, _group = noone) : Node_Iterator(_x, _y, _grou outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, [] ); - custom_input_index = ds_list_size(inputs); + custom_input_index = ds_list_size(inputs); custom_output_index = ds_list_size(inputs); loop_start_time = 0; ALWAYS_FULL = true; diff --git a/scripts/node_iterator_each_output/node_iterator_each_output.gml b/scripts/node_iterator_each_output/node_iterator_each_output.gml index f929723f6..2bdb88885 100644 --- a/scripts/node_iterator_each_output/node_iterator_each_output.gml +++ b/scripts/node_iterator_each_output/node_iterator_each_output.gml @@ -8,23 +8,23 @@ function Node_Iterator_Each_Output(_x, _y, _group = noone) : Node(_x, _y, _group .setVisible(true, true); outputs[| 0] = nodeValue("Preview", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0 ) - .setVisible(false); + .setVisible(false, false); - static getNextNodes = function() { + static getNextNodes = function() { #region if(!struct_has(group, "outputNextNode")) return []; return group.outputNextNode(); - } + } #endregion - static step = function() { + static step = function() { #region if(!variable_struct_exists(group, "iterated")) return; var type = inputs[| 0].isLeaf()? VALUE_TYPE.any : inputs[| 0].value_from.type; inputs[| 0].setType(type); group.outputs[| 0].setType(type); outputs[| 0].setType(type); - } + } #endregion - static cloneValue = function(_prev_val, _val) { + static cloneValue = function(_prev_val, _val) { #region if(inputs[| 0].isLeaf()) return _prev_val; var is_surf = inputs[| 0].value_from.type == VALUE_TYPE.surface; @@ -35,9 +35,9 @@ function Node_Iterator_Each_Output(_x, _y, _group = noone) : Node(_x, _y, _group else _new_val = array_clone(_val); return _new_val; - } + } #endregion - static update = function(frame = CURRENT_FRAME) { + static update = function(frame = CURRENT_FRAME) { #region if(inputs[| 0].isLeaf()) { group.iterationUpdate(); return; @@ -55,7 +55,7 @@ function Node_Iterator_Each_Output(_x, _y, _group = noone) : Node(_x, _y, _group outputs[| 0].setValue(_val); group.outputs[| 0].setValue(_val); group.iterationUpdate(); - } + } #endregion static onLoadGroup = function() { #region if(group == noone) nodeDelete(self); diff --git a/scripts/node_number/node_number.gml b/scripts/node_number/node_number.gml index 653f50d6d..74792f861 100644 --- a/scripts/node_number/node_number.gml +++ b/scripts/node_number/node_number.gml @@ -37,6 +37,8 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co inputs[| 4] = nodeValue("Step", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.01) + inputs[| 5] = nodeValue("Clamp to range", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) + outputs[| 0] = nodeValue("Number", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region @@ -57,6 +59,7 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co case 0 : inputs[| 3].setVisible(false); inputs[| 4].setVisible(false); + inputs[| 5].setVisible(false); break; case 1 : if(inputs[| 0].isLeaf()) { @@ -65,6 +68,7 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co } inputs[| 3].setVisible(true); inputs[| 4].setVisible(true); + inputs[| 5].setVisible(true); break; case 2 : if(inputs[| 0].isLeaf()) { @@ -73,6 +77,7 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co } inputs[| 3].setVisible(false); inputs[| 4].setVisible(false); + inputs[| 5].setVisible(false); break; } @@ -97,6 +102,7 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co var disp = getInputData(2); var rang = getInputData(3); var stp = getInputData(4); + var cmp = getInputData(5); var _col = getColor(); if(inputs[| 0].value_from != noone || disp == 0) { #region @@ -147,6 +153,7 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co var _valM = (_mx - sl_x0) / (sl_x1 - sl_x0); var _valL = lerp(_minn, _maxx, _valM); _valL = value_snap(_valL, stp); + if(cmp) _valL = clamp(_valL, _minn, _maxx); inputs[| 0].setValue(_valL); if(mouse_release(mb_left))