Render bug

This commit is contained in:
Tanasart 2023-12-03 11:02:04 +07:00
parent 3f3789c54d
commit 68ff4e1e38
132 changed files with 426 additions and 493 deletions

View file

@ -398,6 +398,7 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_hamburger_s.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_hamburger.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_heart.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_hide_preview.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_accept_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_accept_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_accept_32.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},

Binary file not shown.

View file

@ -26,7 +26,7 @@
LATEST_VERSION = 11500;
VERSION = 11588;
SAVE_VERSION = 11600;
SAVE_VERSION = 11600.1;
VERSION_STRING = "1.16rc8";
BUILD_NUMBER = 11588;

View file

@ -1,6 +1,5 @@
function Node_3D_Point_Affector(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group) constructor {
name = "Point Affector";
previewable = false;
gizmo_sphere = [ new __3dGizmoSphere(,, 0.75), new __3dGizmoSphere(,, 0.5) ];
gizmo_plane = [ new __3dGizmoPlaneFalloff(,, 0.75) ];

View file

@ -1,6 +1,5 @@
function Node_FFT(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "FFT";
previewable = false;
w = 96;
h = 72;

View file

@ -14,7 +14,6 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr
icon = THEME.vfx;
reloop = true;
previewable = false;
node_draw_icon = s_node_vfx_accel;
w = 96;

View file

@ -2,7 +2,6 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
name = "VFX Override";
color = COLORS.node_blend_vfx;
icon = THEME.vfx;
previewable = false;
node_draw_icon = s_node_vfx_override;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_VFX_Trail(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "VFX Trail";
previewable = false;
w = 96;
length = [];

View file

@ -2,7 +2,6 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr
name = "VFX Variable";
color = COLORS.node_blend_vfx;
icon = THEME.vfx;
previewable = false;
node_draw_icon = s_node_vfx_variable;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Anim_Curve(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Evaluate Curve";
update_on_frame = true;
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Area(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Area";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Armature_Sample(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Armature Sample";
previewable = false;
w = 96;
h = 72;
min_h = h;

View file

@ -1,6 +1,5 @@
function Node_Armature_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Armature Path";
previewable = false;
w = 96;
h = 72;
min_h = h;

View file

@ -1,6 +1,5 @@
function Node_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array";
previewable = false;
w = 96;
@ -173,13 +172,10 @@ function Node_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
outputs[| 0].setType(inputs[| input_fix_len].value_from.type);
outputs[| 0].setValue(res);
if(outputs[| 0].type == VALUE_TYPE.surface) {
if(outputs[| 0].type == VALUE_TYPE.surface)
w = 128;
previewable = true;
} else {
else
w = 96;
previewable = false;
}
} #endregion
static postConnect = function() { #region

View file

@ -1,6 +1,5 @@
function Node_Array_Add(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Add";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Composite(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Composite";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Convolute(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Convolute";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Copy(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Copy";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_CSV_Parse(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "CSV Parse";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Find(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Find";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Get(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Get";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Insert(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Insert";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Length";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Range(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Range";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Array_Remove(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Remove";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Reverse";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Sample(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Sample";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Set(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Set";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Shift";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,6 +1,5 @@
function Node_Array_Shuffle(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Shuffle Array";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Sort Array";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Array_Zip(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Zip";
previewable = false;
w = 96;
h = 32 + 24;

View file

@ -1,7 +1,6 @@
function Node_ASE_layer(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "ASE Layer";
update_on_frame = true;
previewable = false;
inputs[| 0] = nodeValue("ASE data", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, noone)
.setVisible(false, true)

View file

@ -1,6 +1,5 @@
function Node_Audio_Loudness(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Audio Loudness";
previewable = false;
w = 96;
h = 72;

View file

@ -1,6 +1,5 @@
function Node_Audio_Window(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Audio Window";
previewable = false;
w = 128;
h = 128;

View file

@ -1,7 +1,6 @@
function Node_Base_Convert(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Convert Base";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Boolean(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Boolean";
color = COLORS.node_blend_number;
previewable = false;
w = 64;
min_h = 64;

View file

@ -1,6 +1,5 @@
function Node_Color(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Color";
previewable = false;
w = 96;
inputs[| 0] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);

View file

@ -1,6 +1,5 @@
function Node_Color_Data(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Color Data";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Color_HSV(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "HSV Color";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Color_RGB(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "RGB Color";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Color_Mix(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Mix Color";
previewable = false;
w = 96;

View file

@ -25,7 +25,6 @@ function Node_create_Compare(_x, _y, _group = noone, _param = {}) {
function Node_Compare(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Compare";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Condition";
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Counter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Frame Index";
update_on_frame = true;
previewable = false;
w = 96;

View file

@ -26,7 +26,6 @@ function Node_create_CSV_File_Read_path(_x, _y, path) { #region
function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "CSV File In";
color = COLORS.node_blend_input;
previewable = false;
w = 128;

View file

@ -11,7 +11,6 @@ function Node_create_CSV_File_Write(_x, _y, _group = noone) { #region
function Node_CSV_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "CSV File Out";
color = COLORS.node_blend_input;
previewable = false;
w = 128;

View file

@ -337,7 +337,6 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
for( var i = 0; i < ds_list_size(outputs); i++ )
if(outputs[| i].isVisible()) _ho += 24;
//w = max(min_w, attributes.node_width);
h = max(min_h, _prev_surf * 128, _hi, _ho, attributes.node_height);
} run_in(1, function() { setHeight(); }); #endregion
@ -623,6 +622,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
if(!is_instanceof(self, Node_Collection))
render_time = get_timer() - render_timer;
setHeight();
LOG_BLOCK_END();
} #endregion
@ -1250,10 +1250,16 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
draw_sprite_stretched_ext(THEME.node_glow, 0, xx - 9, yy - 9, w * _s + 18, h * _s + 18, COLORS._main_value_negative, 1);
drawNodeBase(xx, yy, _s);
if(previewable) drawPreview(xx, yy, _s);
drawDimension(xx, yy, _s);
if(previewable) {
drawPreview(xx, yy, _s);
onDrawNode(xx, yy, _mx, _my, _s, PANEL_GRAPH.node_hovering == self, PANEL_GRAPH.getFocusingNode() == self);
} else {
var bbox = drawGetBbox(xx, yy, _s);
draw_sprite_ext(THEME.preview_hide, 0, bbox.xc, bbox.yc, _s, _s, 0, c_white, 0.25);
}
drawNodeName(xx, yy, _s);
if(active_draw_index > -1) {
@ -1682,8 +1688,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
_map.y = y;
_map.type = instanceof(self);
_map.group = group == noone? group : group.node_id;
_map.preview = previewable;
_map.tool = isTool;
_map.previewable = previewable;
}
_map.attri = attributeSerialize();
@ -1748,7 +1754,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
x = struct_try_get(load_map, "x");
y = struct_try_get(load_map, "y");
renderActive = struct_try_get(load_map, "render", true);
previewable = struct_try_get(load_map, "preview", previewable);
previewable = struct_try_get(load_map, "previewable", previewable);
isTool = struct_try_get(load_map, "tool");
}

View file

@ -32,7 +32,6 @@ function Node_create_Equation(_x, _y, _group = noone, _param = {}) { #region
function Node_Equation(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Equation";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
ast = [];

View file

@ -1,6 +1,5 @@
function Node_Fluid_Domain_Queue(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group) constructor {
name = "Queue Domain";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Gradient_Extract(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Gradient Data";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Gradient_Out(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Gradient";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Gradient_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Palette to Gradient";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Gradient_Replace_Color(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Gradient Replace";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Gradient_Shift(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Gradient Shift";
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Group Input";
color = COLORS.node_blend_collection;
previewable = false;
is_group_io = true;
destroy_when_upgroup = true;
@ -121,15 +120,18 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
outputs[| 0] = nodeValue("Value", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0)
.uncache();
attributes.inherit_name = !LOADING && !APPENDING;
attributes.inherit_type = !LOADING && !APPENDING;
attributes.inherit_name = true;
attributes.inherit_type = true;
doTrigger = 0;
_onSetDisplayName = function() {
onSetDisplayName = function() { attributes.inherit_name = false; }
outputs[| 0].onSetTo = function(juncTo) {
if(attributes.inherit_name) {
setDisplayName(juncTo.name);
attributes.inherit_name = false;
}
outputs[| 0].onSetTo = function(juncTo) {
if(!attributes.inherit_type) return;
attributes.inherit_type = false;
@ -322,17 +324,6 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
group.inputMap[? string_replace_all(display_name, " ", "_")] = inParent;
}
var _to_list = outputs[| 0].value_to;
onSetDisplayName = _onSetDisplayName;
if(!renamed && attributes.inherit_name && !ds_list_empty(_to_list)) {
for( var i = 0; i < ds_list_size(_to_list); i++ ) {
if(_to_list[| i].value_from != outputs[| 0]) continue;
if(display_name == _to_list[| i].name) break;
onSetDisplayName = noone;
setDisplayName(_to_list[| i].name);
}
}
if(inParent.type == VALUE_TYPE.trigger) {
if(doTrigger == 1) {
outputs[| 0].setValue(true);

View file

@ -1,7 +1,6 @@
function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Group Output";
color = COLORS.node_blend_collection;
previewable = false;
is_group_io = true;
destroy_when_upgroup = true;
@ -17,11 +16,18 @@ function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constr
.uncache()
.setVisible(true, true);
attributes.inherit_name = !LOADING && !APPENDING;
attributes.inherit_name = true;
outParent = undefined;
output_index = -1;
_onSetDisplayName = function() { attributes.inherit_name = false; }
onSetDisplayName = function() { attributes.inherit_name = false; }
inputs[| 0].onSetFrom = function(juncFrom) {
if(attributes.inherit_name) {
setDisplayName(juncFrom.name);
attributes.inherit_name = false;
}
}
static setRenderStatus = function(result) { #region
if(rendered == result) return;
@ -99,14 +105,6 @@ function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constr
outParent.setType(inputs[| 0].type);
outParent.display_type = inputs[| 0].display_type;
onSetDisplayName = _onSetDisplayName;
if(!renamed && attributes.inherit_name && inputs[| 0].value_from != noone) {
if(display_name != inputs[| 0].value_from.name) {
onSetDisplayName = noone;
setDisplayName(inputs[| 0].value_from.name);
}
}
} #endregion
static postDeserialize = function() { #region

View file

@ -1,8 +1,7 @@
function Node_Iterator_Each_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Array Length";
destroy_when_upgroup = true;
color = COLORS.node_blend_loop;
previewable = false;
destroy_when_upgroup = true;
w = 96;
min_h = 80;

View file

@ -1,8 +1,7 @@
function Node_Iterator_Index(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Index";
destroy_when_upgroup = true;
color = COLORS.node_blend_loop;
previewable = false;
destroy_when_upgroup = true;
w = 96;
min_h = 80;

View file

@ -1,8 +1,7 @@
function Node_Iterator_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Loop Amount";
destroy_when_upgroup = true;
color = COLORS.node_blend_loop;
previewable = false;
destroy_when_upgroup = true;
w = 96;
min_h = 80;

View file

@ -26,7 +26,6 @@ function Node_create_Json_File_Read_path(_x, _y, path) {
function Node_Json_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "JSON File In";
color = COLORS.node_blend_input;
previewable = false;
w = 128;

View file

@ -1,7 +1,6 @@
function Node_Json_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "JSON File Out";
color = COLORS.node_blend_input;
previewable = false;
w = 128;

View file

@ -1,7 +1,6 @@
function Node_Lerp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Lerp";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -27,7 +27,6 @@ function Node_create_Logic(_x, _y, _group = noone, _param = {}) {
function Node_Logic(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Logic Opr";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Lua_Compute(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Lua Compute";
previewable = false;
inputs[| 0] = nodeValue("Function name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "render" + string(irandom_range(100000, 999999)));

View file

@ -1,7 +1,6 @@
function Node_Lua_Global(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Lua Global";
preview_channel = 1;
previewable = false;
inputs[| 0] = nodeValue("Lua code", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "", o_dialog_lua_reference)
.setDisplay(VALUE_DISPLAY.codeLUA);

View file

@ -52,7 +52,6 @@ function Node_create_Math(_x, _y, _group = noone, _param = {}) {
function Node_Math(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Math";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Mesh_Create_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Path to Mesh";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Mesh_To_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Mesh to Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Mesh_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Mesh Transform";
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
name = "Number";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32 + 24 * 1;
@ -242,7 +241,6 @@ function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
name = "Vector2";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32 + 24 * 2;
@ -526,7 +524,6 @@ function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
function Node_Vector3(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
name = "Vector3";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32 + 24 * 3;
@ -582,7 +579,6 @@ function Node_Vector3(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
function Node_Vector4(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
name = "Vector4";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32 + 24 * 4;
@ -642,7 +638,6 @@ function Node_Vector4(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
function Node_Vector_Split(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
name = "Vector Split";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32;

View file

@ -1,6 +1,5 @@
function Node_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Palette";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Palette_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Sort Palette";
previewable = false;
w = 96;

View file

@ -11,7 +11,6 @@ enum _ANCHOR {
function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Path";
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Path_Anchor(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Path Anchor";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
inputs[| 0] = nodeValue("Postion", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )

View file

@ -1,6 +1,5 @@
function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Path Array";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Blend Path";
previewable = false;
w = 96;
length = 0;

View file

@ -1,6 +1,5 @@
function Node_Path_Builder(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Path Builder";
previewable = false;
w = 96;
length = [];

View file

@ -12,7 +12,6 @@ function L_Turtle(x = 0, y = 0, ang = 90, w = 1, color = c_white) constructor {
function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "L System";
previewable = false;
w = 96;
inputs[| 0] = nodeValue("Length", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 8);

View file

@ -1,6 +1,5 @@
function Node_Path_Map_Area(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Remap Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Plot Path";
previewable = false;
length = 0;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Reverse Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Sample(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Sample Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Shift Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Transform Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Trim(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Trim Path";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Wave Path";
previewable = false;
w = 96;

View file

@ -5,7 +5,6 @@ function Node_Pin(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
auto_height = false;
junction_shift_y = 16;
previewable = false;
isHovering = false;
hover_scale = 0;

View file

@ -1,7 +1,6 @@
function Node_Move_Point(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Translate Point";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Random(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Random";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -10,6 +10,8 @@ enum SPRITE_ANIM_GROUP {
}
function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
static log = false;
name = "Render Spritesheet";
anim_drawn = array_create(TOTAL_FRAMES + 1, false);
@ -46,8 +48,6 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
outputs[| 1] = nodeValue("Atlas Data", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, [])
.setArrayDepth(1);
refreshSurface = false;
input_display_list = [
["Surfaces", false], 0, 1, 2,
["Sprite", false], 3, 8,
@ -56,6 +56,23 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
attribute_surface_depth();
static onInspector1Update = function(updateAll = true) { #region
var key = ds_map_find_first(PROJECT.nodeMap);
repeat(ds_map_size(PROJECT.nodeMap)) {
var node = PROJECT.nodeMap[? key];
key = ds_map_find_next(PROJECT.nodeMap, key);
if(!node.active) continue;
if(instanceof(node) != "Node_Render_Sprite_Sheet") continue;
initSurface();
}
PROJECT.animator.render();
array_push(RENDERING, node_id);
} #endregion
static step = function() { #region
var grup = getInputData(1);
var pack = getInputData(3);
@ -71,205 +88,26 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
} #endregion
static update = function(frame = CURRENT_FRAME) { #region
var inpt = getInputData(0);
var grup = getInputData(1);
var skip = getInputData(2);
var pack = getInputData(3);
var grid = getInputData(4);
var alig = getInputData(5);
var spac = getInputData(6);
var padd = getInputData(7);
var rang = getInputData(8);
var _atl = outputs[| 1].getValue();
var cDep = attrDepth();
if(grup != SPRITE_ANIM_GROUP.animation) {
initRender();
return;
}
if(IS_RENDERING && PROJECT.animator.frame_progress && CURRENT_FRAME == 0 && !refreshSurface) {
var skip = getInputData(2);
var arr = is_array(inpt);
if(arr && array_length(inpt) == 0) return;
if(!arr) inpt = [ inpt ];
var _surf = [];
var amo = floor(TOTAL_FRAMES / skip);
var _st = clamp(rang[0], 0, amo);
var _ed = rang[1];
if(rang[1] == 0) _ed = amo;
else if(rang[1] < 0) _ed = amo + rang[1];
_ed = clamp(_ed, 0, amo);
if(_ed <= _st) return;
amo = _ed - _st;
for(var i = 0; i < array_length(inpt); i++) {
_atl[i] = [];
if(!is_surface(inpt[i])) continue;
var sw = surface_get_width_safe(inpt[i]);
var sh = surface_get_height_safe(inpt[i]);
var ww = sw, hh = sh;
switch(pack) {
case SPRITE_STACK.horizontal :
ww = sw * amo + spac * (amo - 1);
break;
case SPRITE_STACK.vertical :
hh = sh * amo + spac * (amo - 1);
break;
case SPRITE_STACK.grid :
var amo = floor(TOTAL_FRAMES / skip);
var col = getInputData(4);
var row = ceil(amo / col);
ww = sw * col + spac * (col - 1);
hh = sh * row + spac * (row - 1);
break;
}
ww += padd[0] + padd[2];
hh += padd[1] + padd[3];
_surf[i] = surface_create_valid(ww, hh, cDep);
surface_set_target(_surf[i]);
DRAW_CLEAR
surface_reset_target();
refreshSurface = true;
}
if(!arr) _surf = array_safe_get(_surf, 0);
outputs[| 0].setValue(_surf);
outputs[| 1].setValue(_atl);
}
if(safe_mod(CURRENT_FRAME, skip) != 0) return;
if(array_length(anim_drawn) != TOTAL_FRAMES)
array_resize(anim_drawn, TOTAL_FRAMES);
if(CURRENT_FRAME >= 0 && CURRENT_FRAME < TOTAL_FRAMES) {
if(anim_drawn[CURRENT_FRAME]) return;
if(PROJECT.animator.is_playing && PROJECT.animator.frame_progress) {
if(is_array(inpt) && array_length(inpt) == 0) return;
if(!is_array(inpt)) inpt = [ inpt ];
}
}
var oupt = outputs[| 0].getValue();
if(is_array(oupt) && (array_length(inpt) != array_length(oupt))) return;
if(CURRENT_FRAME % skip != 0) return;
var amo = floor(TOTAL_FRAMES / skip);
var _st = clamp(rang[0], 0, amo);
var _ed = rang[1];
if(rang[1] == 0) _ed = amo;
else if(rang[1] < 0) _ed = amo + rang[1];
_ed = clamp(_ed, 0, amo);
if(_ed <= _st) return;
var _frame = floor(CURRENT_FRAME / skip);
if(_frame < _st || _frame > _ed) return;
_frame -= _st;
var drawn = false;
var px = padd[2];
var py = padd[1];
for(var i = 0; i < array_length(inpt); i++) {
if(!is_surface(inpt[i])) {
_atl[i] = noone;
break;
}
var oo = noone;
if(!is_array(oupt)) oo = oupt;
else oo = oupt[i];
if(!is_surface(oo)) break;
var ww = surface_get_width_safe(oo);
var hh = surface_get_height_safe(oo);
var _w = surface_get_width_safe(inpt[i]);
var _h = surface_get_height_safe(inpt[i]);
surface_set_target(oo);
BLEND_OVERRIDE
switch(pack) {
case SPRITE_STACK.horizontal :
var px = padd[2] + _frame * _w + max(0, _frame) * spac;
var _sx = px;
var _sy = py;
switch(alig) {
case 1 : _sy = py + (hh - _h) / 2; break;
case 2 : _sy = py + (hh - _h); break;
}
_atl[i] = array_push_create(_atl[i], new SurfaceAtlas(inpt[i], _sx, _sy));
draw_surface_safe(inpt[i], _sx, _sy);
break;
case SPRITE_STACK.vertical :
var py = padd[1] + _frame * _h + max(0, _frame) * spac;
var _sx = px;
var _sy = py;
switch(alig) {
case 1 : _sx = px + (ww - _w) / 2; break;
case 2 : _sx = px + (ww - _w); break;
}
_atl[i] = array_push_create(_atl[i], new SurfaceAtlas(inpt[i], _sx, _sy));
draw_surface_safe(inpt[i], _sx, _sy);
break;
case SPRITE_STACK.grid :
var col = getInputData(4);
var _row = floor(_frame / col);
var _col = safe_mod(_frame, col);
px = padd[2] + _col * _w + max(0, _col) * spac;
py = padd[1] + _row * _h + max(0, _row) * spac;
_atl[i] = array_push_create(_atl[i], new SurfaceAtlas(inpt[i], px, py));
draw_surface_safe(inpt[i], px, py);
break;
}
drawn = true;
BLEND_NORMAL;
surface_reset_target();
}
if(drawn) array_safe_set(anim_drawn, CURRENT_FRAME, true);
outputs[| 1].setValue(_atl);
if(grup == SPRITE_ANIM_GROUP.animation)
animationRender();
else
arrayRender();
} #endregion
static onInspector1Update = function(updateAll = true) { #region
var key = ds_map_find_first(PROJECT.nodeMap);
static initSurface = function() { #region
for(var i = 0; i < TOTAL_FRAMES; i++) anim_drawn[i] = false;
repeat(ds_map_size(PROJECT.nodeMap)) {
var node = PROJECT.nodeMap[? key];
key = ds_map_find_next(PROJECT.nodeMap, key);
var grup = getInputData(1);
if(!node.active) continue;
if(instanceof(node) != "Node_Render_Sprite_Sheet") continue;
node.initRender();
}
array_push(RENDERING, node_id);
if(grup == SPRITE_ANIM_GROUP.animation)
animationInit();
else
arrayRender();
} #endregion
static initRender = function() { #region
for(var i = 0; i < array_length(anim_drawn); i++) anim_drawn[i] = false;
static arrayRender = function() { #region
var inpt = getInputData(0);
var grup = getInputData(1);
var pack = getInputData(3);
@ -280,35 +118,35 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
var cDep = attrDepth();
if(grup == SPRITE_ANIM_GROUP.animation) {
refreshSurface = false;
if(!LOADING && !APPENDING)
PROJECT.animator.render();
outputs[| 1].setValue([]);
return;
}
if(!is_array(inpt)) {
outputs[| 0].setValue(inpt);
outputs[| 1].setValue([]);
return;
}
var amo = array_length(inpt);
var _st = clamp(rang[0], 0, amo);
var _ed = rang[1];
if(rang[1] == 0) _ed = amo;
else if(rang[1] < 0) _ed = amo + rang[1];
_ed = clamp(_ed, 0, amo);
#region frame
var _st, _ed;
var _ln = array_length(inpt);
amo = _ed - _st;
if(rang[0] < 0) _st = _ln + rang[0];
else _st = rang[0];
if(rang[1] == 0) _ed = _ln;
else if(rang[1] < 0) _ed = _ln + rang[1];
else _ed = rang[1];
_st = clamp(_st, 0, _ln);
_ed = clamp(_ed, 0, _ln);
if(_ed <= _st) return;
var amo = _ed - _st;
#endregion
var ww = 0;
var hh = 0;
var _atl = [];
#region surface generate
switch(pack) {
case SPRITE_STACK.horizontal :
for(var i = _st; i < _ed; i++) {
@ -328,16 +166,14 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
var col = getInputData(4);
var row = ceil(amo / col);
var row_w = 0;
var row_h = 0;
for(var i = 0; i < row; i++) {
var row_w = 0;
var row_h = 0;
for(var j = 0; j < col; j++) {
var index = _st + i * col + j;
if(index >= amo) break;
if(index >= _ed) break;
row_w += surface_get_width_safe(inpt[index]);
if(j) row_w += spac;
row_h = max(row_h, surface_get_height_safe(inpt[index]));
@ -353,7 +189,9 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
ww += padd[0] + padd[2];
hh += padd[1] + padd[3];
var _surf = surface_create_valid(ww, hh, cDep);
#endregion
#region draw
surface_set_target(_surf);
DRAW_CLEAR
@ -410,13 +248,13 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
var py = padd[1];
for(var i = 0; i < row; i++) {
var row_w = 0;
var row_h = 0;
row_w = 0;
row_h = 0;
px = padd[2];
for(var j = 0; j < col; j++) {
var index = _st + i * col + j;
if(index >= amo) break;
if(index >= _ed) break;
var _w = surface_get_width_safe(inpt[index]);
var _h = surface_get_height_safe(inpt[index]);
@ -433,8 +271,228 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
}
BLEND_NORMAL;
surface_reset_target();
#endregion
outputs[| 0].setValue(_surf);
outputs[| 1].setValue(_atl);
} #endregion
static animationInit = function() { #region
var inpt = getInputData(0);
var skip = getInputData(2);
var pack = getInputData(3);
var grid = getInputData(4);
var alig = getInputData(5);
var spac = getInputData(6);
var padd = getInputData(7);
var rang = getInputData(8);
var _atl = outputs[| 1].getValue();
var cDep = attrDepth();
printIf(log, $"Init animation");
var arr = is_array(inpt);
if(arr && array_length(inpt) == 0) return;
if(!arr) inpt = [ inpt ];
#region frame
var _st, _ed;
if(rang[0] < 0) _st = TOTAL_FRAMES + rang[0];
else _st = rang[0];
if(rang[1] == 0) _ed = TOTAL_FRAMES;
else if(rang[1] < 0) _ed = TOTAL_FRAMES + rang[1];
else _ed = rang[1];
if(_ed <= _st) return;
var amo = floor((_ed - _st) / skip);
#endregion
var skip = getInputData(2);
var _surf = [];
var ww = 1, hh = 1;
for(var i = 0; i < array_length(inpt); i++) {
var _surfi = inpt[i];
if(!is_surface(_surfi)) continue;
_atl[i] = [];
var sw = surface_get_width_safe(_surfi);
var sh = surface_get_height_safe(_surfi);
ww = sw;
hh = sh;
switch(pack) {
case SPRITE_STACK.horizontal :
ww = sw * amo + spac * (amo - 1);
break;
case SPRITE_STACK.vertical :
hh = sh * amo + spac * (amo - 1);
break;
case SPRITE_STACK.grid :
var col = getInputData(4);
var row = ceil(amo / col);
ww = sw * col + spac * (col - 1);
hh = sh * row + spac * (row - 1);
break;
}
ww += padd[0] + padd[2];
hh += padd[1] + padd[3];
_surf[i] = surface_create_valid(ww, hh, cDep);
surface_set_target(_surf[i]);
DRAW_CLEAR
surface_reset_target();
}
if(!arr) _surf = array_safe_get(_surf, 0);
outputs[| 0].setValue(_surf);
outputs[| 1].setValue(_atl);
printIf(log, $"Surface generated [{ww}, {hh}]");
} #endregion
static animationRender = function() { #region
if(!IS_RENDERING) return;
var inpt = getInputData(0);
var skip = getInputData(2);
var pack = getInputData(3);
var grid = getInputData(4);
var alig = getInputData(5);
var spac = getInputData(6);
var padd = getInputData(7);
var rang = getInputData(8);
var _atl = outputs[| 1].getValue();
var cDep = attrDepth();
printIf(log, $"Rendering animation {name}/{CURRENT_FRAME}");
var arr = is_array(inpt);
if(arr && array_length(inpt) == 0) return;
if(!arr) inpt = [ inpt ];
#region frame
var _st, _ed;
if(rang[0] < 0) _st = TOTAL_FRAMES + rang[0];
else _st = rang[0];
if(rang[1] == 0) _ed = TOTAL_FRAMES;
else if(rang[1] < 0) _ed = TOTAL_FRAMES + rang[1];
else _ed = rang[1];
if(_ed <= _st) return;
var amo = floor((_ed - _st) / skip);
#endregion
if(safe_mod(CURRENT_FRAME - _st, skip) != 0) {
printIf(log, $" > Skip frame");
return;
}
#region check overlap
if(array_length(anim_drawn) != TOTAL_FRAMES)
array_resize(anim_drawn, TOTAL_FRAMES);
if(CURRENT_FRAME >= 0 && CURRENT_FRAME < TOTAL_FRAMES && anim_drawn[CURRENT_FRAME]) {
printIf(log, $" > Skip drawn");
return;
}
#endregion
var oupt = outputs[| 0].getValue();
var _frame = floor((CURRENT_FRAME - _st) / skip);
var drawn = false;
var px = padd[2];
var py = padd[1];
for(var i = 0; i < array_length(inpt); i++) { #region
var _surfi = inpt[i];
if(!is_surface(_surfi)) {
printIf(log, $" > Skip input not surface");
_atl[i] = noone;
break;
}
if(!is_array(array_safe_get(_atl, i)))
_atl[i] = [];
var _atli = _atl[i];
var oo = noone;
if(!is_array(oupt)) oo = oupt;
else oo = oupt[i];
if(!is_surface(oo)) {
printIf(log, $" > Skip output not surface");
break;
}
var ww = surface_get_width_safe(oo);
var hh = surface_get_height_safe(oo);
var _w = surface_get_width_safe(_surfi);
var _h = surface_get_height_safe(_surfi);
var px;
var _sx = 0;
var _sy = 0;
surface_set_target(oo);
BLEND_OVERRIDE
switch(pack) {
case SPRITE_STACK.horizontal :
px = padd[2] + _frame * _w + max(0, _frame) * spac;
_sx = px;
_sy = py;
switch(alig) {
case 1 : _sy = py + (hh - _h) / 2; break;
case 2 : _sy = py + (hh - _h); break;
}
break;
case SPRITE_STACK.vertical :
py = padd[1] + _frame * _h + max(0, _frame) * spac;
_sx = px;
_sy = py;
switch(alig) {
case 1 : _sx = px + (ww - _w) / 2; break;
case 2 : _sx = px + (ww - _w); break;
}
break;
case SPRITE_STACK.grid :
var col = getInputData(4);
var _row = floor(_frame / col);
var _col = safe_mod(_frame, col);
_sx = px + _col * _w + max(0, _col) * spac;
_sy = py + _row * _h + max(0, _row) * spac;
break;
}
printIf(log, $" > Drawing frame ({CURRENT_FRAME}) at {_sx}, {_sy}");
array_push(_atli, new SurfaceAtlas(_surfi, _sx, _sy));
draw_surface_safe(inpt[i], _sx, _sy);
drawn = true;
BLEND_NORMAL;
surface_reset_target();
} #endregion
if(drawn) array_safe_set(anim_drawn, CURRENT_FRAME, true);
outputs[| 1].setValue(_atl);
} #endregion
}

View file

@ -2,7 +2,6 @@ function Node_Rigid_Override(_x, _y, _group = noone) : Node(_x, _y, _group) cons
name = "Rigidbody Override";
color = COLORS.node_blend_simulation;
icon = THEME.rigidSim;
previewable = false;
node_draw_icon = s_node_rigid_override;
w = 96;

View file

@ -2,7 +2,6 @@ function Node_Rigid_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) cons
name = "Rigidbody Variable";
color = COLORS.node_blend_simulation;
icon = THEME.rigidSim;
previewable = false;
node_draw_icon = s_node_rigid_variable;
w = 96;

View file

@ -1,7 +1,6 @@
function Node_Scatter_Points(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Scatter Points";
color = COLORS.node_blend_number;
previewable = false;
w = 96;

View file

@ -24,7 +24,6 @@ function Node_create_Statistic(_x, _y, _group = noone, _param = {}) {
function Node_Statistic(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Statistic";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_String(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Text";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_String_Get_Char(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Get Character";
previewable = false;
w = 96;
inputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")

View file

@ -1,6 +1,5 @@
function Node_String_Join(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Join Text";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_String_Length(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Text Length";
previewable = false;
w = 96;

View file

@ -1,6 +1,5 @@
function Node_String_Merge(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Combine Text";
previewable = false;
w = 96;

Some files were not shown because too many files have changed in this diff Show more