mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 11:28:06 +01:00
Render bug
This commit is contained in:
parent
3f3789c54d
commit
68ff4e1e38
132 changed files with 426 additions and 493 deletions
|
@ -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.
|
@ -26,7 +26,7 @@
|
|||
|
||||
LATEST_VERSION = 11500;
|
||||
VERSION = 11588;
|
||||
SAVE_VERSION = 11600;
|
||||
SAVE_VERSION = 11600.1;
|
||||
VERSION_STRING = "1.16rc8";
|
||||
BUILD_NUMBER = 11588;
|
||||
|
||||
|
|
|
@ -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) ];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "VFX Override";
|
||||
name = "VFX Override";
|
||||
color = COLORS.node_blend_vfx;
|
||||
icon = THEME.vfx;
|
||||
previewable = false;
|
||||
node_draw_icon = s_node_vfx_override;
|
||||
|
||||
w = 96;
|
||||
|
|
|
@ -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 = [];
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "VFX Variable";
|
||||
name = "VFX Variable";
|
||||
color = COLORS.node_blend_vfx;
|
||||
icon = THEME.vfx;
|
||||
previewable = false;
|
||||
node_draw_icon = s_node_vfx_variable;
|
||||
|
||||
w = 96;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
function Node_Area(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Area";
|
||||
name = "Area";
|
||||
color = COLORS.node_blend_number;
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Array_Range(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Array Range";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Array_Shuffle(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Shuffle Array";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Sort Array";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
function Node_Boolean(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Boolean";
|
||||
name = "Boolean";
|
||||
color = COLORS.node_blend_number;
|
||||
previewable = false;
|
||||
|
||||
w = 64;
|
||||
min_h = 64;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Condition";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -24,9 +24,8 @@ function Node_create_CSV_File_Read_path(_x, _y, path) { #region
|
|||
} #endregion
|
||||
|
||||
function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "CSV File In";
|
||||
name = "CSV File In";
|
||||
color = COLORS.node_blend_input;
|
||||
previewable = false;
|
||||
|
||||
w = 128;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
onDrawNode(xx, yy, _mx, _my, _s, PANEL_GRAPH.node_hovering == self, PANEL_GRAPH.getFocusingNode() == self);
|
||||
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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = [];
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Gradient_Out(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Gradient";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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() {
|
||||
attributes.inherit_name = false;
|
||||
}
|
||||
onSetDisplayName = function() { attributes.inherit_name = false; }
|
||||
|
||||
outputs[| 0].onSetTo = function(juncTo) {
|
||||
if(attributes.inherit_name) {
|
||||
setDisplayName(juncTo.name);
|
||||
attributes.inherit_name = false;
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
name = "Array Length";
|
||||
color = COLORS.node_blend_loop;
|
||||
previewable = false;
|
||||
destroy_when_upgroup = true;
|
||||
|
||||
w = 96;
|
||||
min_h = 80;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
function Node_Iterator_Index(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Index";
|
||||
destroy_when_upgroup = true;
|
||||
name = "Index";
|
||||
color = COLORS.node_blend_loop;
|
||||
previewable = false;
|
||||
destroy_when_upgroup = true;
|
||||
|
||||
w = 96;
|
||||
min_h = 80;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
function Node_Iterator_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Loop Amount";
|
||||
destroy_when_upgroup = true;
|
||||
name = "Loop Amount";
|
||||
color = COLORS.node_blend_loop;
|
||||
previewable = false;
|
||||
destroy_when_upgroup = true;
|
||||
|
||||
w = 96;
|
||||
min_h = 80;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
function Node_Json_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "JSON File Out";
|
||||
name = "JSON File Out";
|
||||
color = COLORS.node_blend_input;
|
||||
previewable = false;
|
||||
|
||||
w = 128;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)));
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Mesh_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Mesh Transform";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
function Node_Number(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
|
||||
name = "Number";
|
||||
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;
|
||||
|
@ -524,9 +522,8 @@ function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
} #endregion
|
||||
|
||||
function Node_Vector3(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
|
||||
name = "Vector3";
|
||||
name = "Vector3";
|
||||
color = COLORS.node_blend_number;
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
min_h = 32 + 24 * 3;
|
||||
|
@ -580,9 +577,8 @@ function Node_Vector3(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
} #endregion
|
||||
|
||||
function Node_Vector4(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
|
||||
name = "Vector4";
|
||||
name = "Vector4";
|
||||
color = COLORS.node_blend_number;
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
min_h = 32 + 24 * 4;
|
||||
|
@ -640,9 +636,8 @@ function Node_Vector4(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
} #endregion
|
||||
|
||||
function Node_Vector_Split(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { #region
|
||||
name = "Vector Split";
|
||||
name = "Vector Split";
|
||||
color = COLORS.node_blend_number;
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
min_h = 32;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Palette";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Palette_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Sort Palette";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ enum _ANCHOR {
|
|||
|
||||
function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
function Node_Path_Anchor(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Path Anchor";
|
||||
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 ] )
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Path Array";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [];
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Reverse Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Shift Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Transform Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Trim(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Trim Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Wave Path";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,8 +88,197 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
|
|||
} #endregion
|
||||
|
||||
static update = function(frame = CURRENT_FRAME) { #region
|
||||
var grup = getInputData(1);
|
||||
|
||||
if(grup == SPRITE_ANIM_GROUP.animation)
|
||||
animationRender();
|
||||
else
|
||||
arrayRender();
|
||||
} #endregion
|
||||
|
||||
static initSurface = function() { #region
|
||||
for(var i = 0; i < TOTAL_FRAMES; i++) anim_drawn[i] = false;
|
||||
|
||||
var grup = getInputData(1);
|
||||
|
||||
if(grup == SPRITE_ANIM_GROUP.animation)
|
||||
animationInit();
|
||||
else
|
||||
arrayRender();
|
||||
} #endregion
|
||||
|
||||
static arrayRender = function() { #region
|
||||
var inpt = getInputData(0);
|
||||
var grup = getInputData(1);
|
||||
var pack = getInputData(3);
|
||||
var alig = getInputData(5);
|
||||
var spac = getInputData(6);
|
||||
var padd = getInputData(7);
|
||||
var rang = getInputData(8);
|
||||
|
||||
var cDep = attrDepth();
|
||||
|
||||
if(!is_array(inpt)) {
|
||||
outputs[| 0].setValue(inpt);
|
||||
outputs[| 1].setValue([]);
|
||||
return;
|
||||
}
|
||||
|
||||
#region frame
|
||||
var _st, _ed;
|
||||
var _ln = array_length(inpt);
|
||||
|
||||
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++) {
|
||||
ww += surface_get_width_safe(inpt[i]);
|
||||
if(i > _st) ww += spac;
|
||||
hh = max(hh, surface_get_height_safe(inpt[i]));
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.vertical :
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
ww = max(ww, surface_get_width_safe(inpt[i]));
|
||||
hh += surface_get_height_safe(inpt[i]);
|
||||
if(i > _st) hh += spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.grid :
|
||||
var col = getInputData(4);
|
||||
var row = ceil(amo / col);
|
||||
|
||||
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 >= _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]));
|
||||
}
|
||||
|
||||
ww = max(ww, row_w);
|
||||
hh += row_h
|
||||
if(i) hh += spac;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
BLEND_OVERRIDE;
|
||||
switch(pack) {
|
||||
case SPRITE_STACK.horizontal :
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
var _w = surface_get_width_safe(inpt[i]);
|
||||
var _h = surface_get_height_safe(inpt[i]);
|
||||
var _sx = px;
|
||||
var _sy = py;
|
||||
|
||||
switch(alig) {
|
||||
case 1 : _sy = py + (hh - _h) / 2; break;
|
||||
case 2 : _sy = py + (hh - _h); break;
|
||||
}
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[i], _sx, _sy));
|
||||
draw_surface_safe(inpt[i], _sx, _sy);
|
||||
|
||||
px += _w + spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.vertical :
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
var _w = surface_get_width_safe(inpt[i]);
|
||||
var _h = surface_get_height_safe(inpt[i]);
|
||||
var _sx = px;
|
||||
var _sy = py;
|
||||
|
||||
switch(alig) {
|
||||
case 1 : _sx = px + (ww - _w) / 2; break;
|
||||
case 2 : _sx = px + (ww - _w); break;
|
||||
}
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[i], _sx, _sy));
|
||||
draw_surface_safe(inpt[i], _sx, _sy);
|
||||
|
||||
py += _h + spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.grid :
|
||||
var amo = array_length(inpt);
|
||||
var col = getInputData(4);
|
||||
var row = ceil(amo / col);
|
||||
|
||||
var row_w = 0;
|
||||
var row_h = 0;
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
|
||||
for(var i = 0; i < row; i++) {
|
||||
row_w = 0;
|
||||
row_h = 0;
|
||||
px = padd[2];
|
||||
|
||||
for(var j = 0; j < col; j++) {
|
||||
var index = _st + i * col + j;
|
||||
if(index >= _ed) break;
|
||||
|
||||
var _w = surface_get_width_safe(inpt[index]);
|
||||
var _h = surface_get_height_safe(inpt[index]);
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[index], px, py));
|
||||
draw_surface_safe(inpt[index], px, py);
|
||||
|
||||
px += _w + spac;
|
||||
row_h = max(row_h, _h);
|
||||
}
|
||||
py += row_h + spac;
|
||||
}
|
||||
break;
|
||||
}
|
||||
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);
|
||||
|
@ -84,357 +290,209 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
|
|||
var _atl = outputs[| 1].getValue();
|
||||
var cDep = attrDepth();
|
||||
|
||||
if(grup != SPRITE_ANIM_GROUP.animation) {
|
||||
initRender();
|
||||
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;
|
||||
}
|
||||
|
||||
if(IS_RENDERING && PROJECT.animator.frame_progress && CURRENT_FRAME == 0 && !refreshSurface) {
|
||||
var skip = getInputData(2);
|
||||
#region check overlap
|
||||
if(array_length(anim_drawn) != TOTAL_FRAMES)
|
||||
array_resize(anim_drawn, TOTAL_FRAMES);
|
||||
|
||||
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(CURRENT_FRAME >= 0 && CURRENT_FRAME < TOTAL_FRAMES && anim_drawn[CURRENT_FRAME]) {
|
||||
printIf(log, $" > Skip drawn");
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
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 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++) {
|
||||
if(!is_surface(inpt[i])) {
|
||||
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)) break;
|
||||
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(inpt[i]);
|
||||
var _h = surface_get_height_safe(inpt[i]);
|
||||
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 :
|
||||
var px = padd[2] + _frame * _w + max(0, _frame) * spac;
|
||||
var _sx = px;
|
||||
var _sy = py;
|
||||
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;
|
||||
}
|
||||
|
||||
_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;
|
||||
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;
|
||||
}
|
||||
|
||||
_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);
|
||||
_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
|
||||
|
||||
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;
|
||||
|
||||
node.initRender();
|
||||
}
|
||||
|
||||
array_push(RENDERING, node_id);
|
||||
} #endregion
|
||||
|
||||
static initRender = function() { #region
|
||||
for(var i = 0; i < array_length(anim_drawn); i++) anim_drawn[i] = false;
|
||||
|
||||
var inpt = getInputData(0);
|
||||
var grup = getInputData(1);
|
||||
var pack = getInputData(3);
|
||||
var alig = getInputData(5);
|
||||
var spac = getInputData(6);
|
||||
var padd = getInputData(7);
|
||||
var rang = getInputData(8);
|
||||
|
||||
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);
|
||||
|
||||
amo = _ed - _st;
|
||||
|
||||
if(_ed <= _st) return;
|
||||
var ww = 0;
|
||||
var hh = 0;
|
||||
var _atl = [];
|
||||
|
||||
switch(pack) {
|
||||
case SPRITE_STACK.horizontal :
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
ww += surface_get_width_safe(inpt[i]);
|
||||
if(i > _st) ww += spac;
|
||||
hh = max(hh, surface_get_height_safe(inpt[i]));
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.vertical :
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
ww = max(ww, surface_get_width_safe(inpt[i]));
|
||||
hh += surface_get_height_safe(inpt[i]);
|
||||
if(i > _st) hh += spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.grid :
|
||||
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;
|
||||
row_w += surface_get_width_safe(inpt[index]);
|
||||
if(j) row_w += spac;
|
||||
row_h = max(row_h, surface_get_height_safe(inpt[index]));
|
||||
}
|
||||
|
||||
ww = max(ww, row_w);
|
||||
hh += row_h
|
||||
if(i) hh += spac;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
ww += padd[0] + padd[2];
|
||||
hh += padd[1] + padd[3];
|
||||
var _surf = surface_create_valid(ww, hh, cDep);
|
||||
|
||||
surface_set_target(_surf);
|
||||
DRAW_CLEAR
|
||||
|
||||
BLEND_OVERRIDE;
|
||||
switch(pack) {
|
||||
case SPRITE_STACK.horizontal :
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
var _w = surface_get_width_safe(inpt[i]);
|
||||
var _h = surface_get_height_safe(inpt[i]);
|
||||
var _sx = px;
|
||||
var _sy = py;
|
||||
|
||||
switch(alig) {
|
||||
case 1 : _sy = py + (hh - _h) / 2; break;
|
||||
case 2 : _sy = py + (hh - _h); break;
|
||||
}
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[i], _sx, _sy));
|
||||
draw_surface_safe(inpt[i], _sx, _sy);
|
||||
|
||||
px += _w + spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.vertical :
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
for(var i = _st; i < _ed; i++) {
|
||||
var _w = surface_get_width_safe(inpt[i]);
|
||||
var _h = surface_get_height_safe(inpt[i]);
|
||||
var _sx = px;
|
||||
var _sy = py;
|
||||
|
||||
switch(alig) {
|
||||
case 1 : _sx = px + (ww - _w) / 2; break;
|
||||
case 2 : _sx = px + (ww - _w); break;
|
||||
}
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[i], _sx, _sy));
|
||||
draw_surface_safe(inpt[i], _sx, _sy);
|
||||
|
||||
py += _h + spac;
|
||||
}
|
||||
break;
|
||||
case SPRITE_STACK.grid :
|
||||
var amo = array_length(inpt);
|
||||
var col = getInputData(4);
|
||||
var row = ceil(amo / col);
|
||||
|
||||
var row_w = 0;
|
||||
var row_h = 0;
|
||||
var px = padd[2];
|
||||
var py = padd[1];
|
||||
|
||||
for(var i = 0; i < row; i++) {
|
||||
var row_w = 0;
|
||||
var row_h = 0;
|
||||
px = padd[2];
|
||||
|
||||
for(var j = 0; j < col; j++) {
|
||||
var index = _st + i * col + j;
|
||||
if(index >= amo) break;
|
||||
|
||||
var _w = surface_get_width_safe(inpt[index]);
|
||||
var _h = surface_get_height_safe(inpt[index]);
|
||||
|
||||
array_push(_atl, new SurfaceAtlas(inpt[index], px, py));
|
||||
draw_surface_safe(inpt[index], px, py);
|
||||
|
||||
px += _w + spac;
|
||||
row_h = max(row_h, _h);
|
||||
}
|
||||
py += row_h + spac;
|
||||
}
|
||||
break;
|
||||
}
|
||||
BLEND_NORMAL;
|
||||
surface_reset_target();
|
||||
|
||||
outputs[| 0].setValue(_surf);
|
||||
outputs[| 1].setValue(_atl);
|
||||
} #endregion
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
function Node_Rigid_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Rigidbody Override";
|
||||
name = "Rigidbody Override";
|
||||
color = COLORS.node_blend_simulation;
|
||||
icon = THEME.rigidSim;
|
||||
previewable = false;
|
||||
node_draw_icon = s_node_rigid_override;
|
||||
|
||||
w = 96;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
function Node_Rigid_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Rigidbody Variable";
|
||||
name = "Rigidbody Variable";
|
||||
color = COLORS.node_blend_simulation;
|
||||
icon = THEME.rigidSim;
|
||||
previewable = false;
|
||||
node_draw_icon = s_node_rigid_variable;
|
||||
|
||||
w = 96;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_String(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Text";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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, "")
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
function Node_String_Join(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Join Text";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue