UUID, file save load icons

This commit is contained in:
MakhamDev 2022-01-19 09:05:13 +07:00
parent 51d23ef006
commit f045d7619d
67 changed files with 305 additions and 414 deletions

View file

@ -112,7 +112,6 @@
{"id":{"name":"rotatorRange","path":"scripts/rotatorRange/rotatorRange.yy",},"order":12,}, {"id":{"name":"rotatorRange","path":"scripts/rotatorRange/rotatorRange.yy",},"order":12,},
{"id":{"name":"point_rotate","path":"scripts/point_rotate/point_rotate.yy",},"order":1,}, {"id":{"name":"point_rotate","path":"scripts/point_rotate/point_rotate.yy",},"order":1,},
{"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},"order":1,}, {"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},"order":1,},
{"id":{"name":"s_noti_icon_file","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"order":1,},
{"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,}, {"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,},
{"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":53,}, {"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":53,},
{"id":{"name":"s_workspace_0","path":"sprites/s_workspace_0/s_workspace_0.yy",},"order":0,}, {"id":{"name":"s_workspace_0","path":"sprites/s_workspace_0/s_workspace_0.yy",},"order":0,},
@ -269,11 +268,11 @@
{"id":{"name":"sh_bevel","path":"shaders/sh_bevel/sh_bevel.yy",},"order":3,}, {"id":{"name":"sh_bevel","path":"shaders/sh_bevel/sh_bevel.yy",},"order":3,},
{"id":{"name":"s_node_color_out","path":"sprites/s_node_color_out/s_node_color_out.yy",},"order":6,}, {"id":{"name":"s_node_color_out","path":"sprites/s_node_color_out/s_node_color_out.yy",},"order":6,},
{"id":{"name":"node_sprite_stack","path":"scripts/node_sprite_stack/node_sprite_stack.yy",},"order":4,}, {"id":{"name":"node_sprite_stack","path":"scripts/node_sprite_stack/node_sprite_stack.yy",},"order":4,},
{"id":{"name":"node_fracture","path":"scripts/node_fracture/node_fracture.yy",},"order":6,},
{"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},"order":3,}, {"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},"order":3,},
{"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},"order":2,}, {"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},"order":2,},
{"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":28,}, {"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":28,},
{"id":{"name":"node_particle_effector","path":"scripts/node_particle_effector/node_particle_effector.yy",},"order":9,}, {"id":{"name":"node_particle_effector","path":"scripts/node_particle_effector/node_particle_effector.yy",},"order":9,},
{"id":{"name":"s_noti_icon_file_load","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"order":5,},
{"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,}, {"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,},
{"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":39,}, {"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":39,},
{"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":0,}, {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":0,},
@ -456,6 +455,7 @@
{"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,}, {"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,},
{"id":{"name":"s_canvas_tools_rect_fill","path":"sprites/s_canvas_tools_rect_fill/s_canvas_tools_rect_fill.yy",},"order":6,}, {"id":{"name":"s_canvas_tools_rect_fill","path":"sprites/s_canvas_tools_rect_fill/s_canvas_tools_rect_fill.yy",},"order":6,},
{"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,}, {"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,},
{"id":{"name":"s_noti_icon_file_save","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"order":4,},
{"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,},
{"id":{"name":"s_workspace_1","path":"sprites/s_workspace_1/s_workspace_1.yy",},"order":1,}, {"id":{"name":"s_workspace_1","path":"sprites/s_workspace_1/s_workspace_1.yy",},"order":1,},
{"id":{"name":"string_decimal","path":"scripts/string_decimal/string_decimal.yy",},"order":0,}, {"id":{"name":"string_decimal","path":"scripts/string_decimal/string_decimal.yy",},"order":0,},
@ -469,7 +469,6 @@
{"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,}, {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,},
{"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,}, {"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,},
{"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":3,}, {"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":3,},
{"id":{"name":"s_noti_icon_save","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"order":2,},
{"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,},
{"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,},
{"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,}, {"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,},

View file

@ -1,5 +1,4 @@
function APPEND(_path) { function APPEND(_path) {
APPEND_ID = NODE_ID + 1;
APPENDING = true; APPENDING = true;
if(_path == "") return; if(_path == "") return;
@ -29,6 +28,7 @@ function APPEND(_path) {
var node_create = ds_list_create(); var node_create = ds_list_create();
ds_queue_clear(CONNECTION_CONFLICT); ds_queue_clear(CONNECTION_CONFLICT);
ds_map_clear(APPEND_MAP);
for(var i = 0; i < ds_list_size(_node_list); i++) { for(var i = 0; i < ds_list_size(_node_list); i++) {
var _node = nodeLoad(_node_list[| i], true); var _node = nodeLoad(_node_list[| i], true);
@ -89,5 +89,12 @@ function APPEND(_path) {
PANEL_ANIMATION.updatePropertyList(); PANEL_ANIMATION.updatePropertyList();
log_message("FILE", "append file " + _path); log_message("FILE", "append file " + _path);
PANEL_MENU.showNoti("Collection loaded", s_noti_icon_file_load);
return node_create; return node_create;
}
function GetAppendID(old_id) {
if(ds_map_exists(APPEND_MAP, old_id))
return APPEND_MAP[? old_id];
return -1;
} }

View file

@ -1,8 +1,7 @@
#region save #region save
globalvar LOADING, APPENDING, APPEND_ID, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED; globalvar LOADING, APPENDING, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED;
LOADING = false; LOADING = false;
APPENDING = false; APPENDING = false;
APPEND_ID = 0;
READONLY = false; READONLY = false;
CONNECTION_CONFLICT = ds_queue_create(); CONNECTION_CONFLICT = ds_queue_create();
@ -16,14 +15,14 @@
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING;
VERSION = 82; VERSION = 82;
SAVEFILE_VERSION = 80; SAVEFILE_VERSION = 82;
VERSION_STRING = "0.8.2"; VERSION_STRING = "0.8.2";
globalvar NODES, ANIMATOR, NODE_ID, NODE_MAP, HOTKEYS, HOTKEY_CONTEXT; globalvar NODES, ANIMATOR, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT;
NODE_ID = 0;
NODES = ds_list_create(); NODES = ds_list_create();
NODE_MAP = ds_map_create(); NODE_MAP = ds_map_create();
APPEND_MAP = ds_map_create();
HOTKEYS = ds_map_create(); HOTKEYS = ds_map_create();
HOTKEY_CONTEXT = ds_list_create(); HOTKEY_CONTEXT = ds_list_create();

View file

@ -21,7 +21,6 @@ function LOAD_PATH(path, readonly = false) {
if(file_exists(temp_path)) file_delete(temp_path); if(file_exists(temp_path)) file_delete(temp_path);
file_copy(path, temp_path); file_copy(path, temp_path);
APPEND_ID = 0;
LOADING = true; LOADING = true;
READONLY = readonly; READONLY = readonly;
SET_PATH(path); SET_PATH(path);
@ -116,6 +115,6 @@ function LOAD_PATH(path, readonly = false) {
PANEL_ANIMATION.updatePropertyList(); PANEL_ANIMATION.updatePropertyList();
log_message("FILE", "load at " + path); log_message("FILE", "load at " + path);
PANEL_MENU.showNoti("File loaded", s_noti_icon_file); PANEL_MENU.showNoti("File loaded", s_noti_icon_file_load);
return true; return true;
} }

View file

@ -48,8 +48,7 @@ function Node_2D_light(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.slider, [0, 16, 1]); .setDisplay(VALUE_DISPLAY.slider, [0, 16, 1]);
inputs[| 11] = nodeValue(11, "Attenuation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 11] = nodeValue(11, "Attenuation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Quadratic", "Linear"]) .setDisplay(VALUE_DISPLAY.enum_scroll, ["Quadratic", "Linear"]);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 1] = nodeValue(1, "Light only", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 1] = nodeValue(1, "Light only", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -17,18 +17,17 @@ function Node_3D_Obj(_x, _y) : Node(_x, _y) constructor {
}, "Generate"] ); }, "Generate"] );
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue(4, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 180 ]) inputs[| 4] = nodeValue(4, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 180 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue(5, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) inputs[| 5] = nodeValue(5, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
input_display_list = [ 2, input_display_list = [ 2,
["Geometry", false], 0, 1, ["Geometry", false], 0, 1,
["Transform", false], 3, 4, 5 ["Transform", false], 3, 4, 5

View file

@ -9,8 +9,7 @@ function Node_3D_Cube(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Main texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE); inputs[| 0] = nodeValue(0, "Main texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE);
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 2] = nodeValue(2, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);

View file

@ -7,15 +7,12 @@ function Node_create_3D_Cylinder(_x, _y) {
function Node_3D_Cylinder(_x, _y) : Node(_x, _y) constructor { function Node_3D_Cylinder(_x, _y) : Node(_x, _y) constructor {
name = "3D Cylinder"; name = "3D Cylinder";
inputs[| 0] = nodeValue(0, "Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16) inputs[| 0] = nodeValue(0, "Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16);
.setVisible(false);
inputs[| 1] = nodeValue(1, "Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2)
.setVisible(false);
inputs[| 1] = nodeValue(1, "Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2);
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);

View file

@ -19,12 +19,10 @@ function Node_3D_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue(4, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input) inputs[| 4] = nodeValue(4, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 5] = nodeValue(5, "Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
node_input_visible(inputs[| 5], false);
input_display_list = [0, input_display_list = [0,
["Outputs", true], 4, 5, ["Outputs", true], 4, 5,

View file

@ -14,8 +14,7 @@ function Node_Array(_x, _y) : Node(_x, _y) constructor {
w = 96; w = 96;
for(var i = 0; i < input_max; i++) { for(var i = 0; i < input_max; i++) {
inputs[| i] = nodeValue(i, "Value " + string(i), self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0) inputs[| i] = nodeValue(i, "Value " + string(i), self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0);
.setVisible(false);
} }
outputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []); outputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);

View file

@ -12,7 +12,8 @@ function Node_Array_Length(_x, _y) : Node(_x, _y) constructor {
h = 32 + 24; h = 32 + 24;
min_h = h; min_h = h;
inputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0); inputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0); outputs[| 0] = nodeValue(0, "Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);

View file

@ -11,8 +11,7 @@ function Node_Blend(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Foreground", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE); inputs[| 1] = nodeValue(1, "Foreground", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE);
inputs[| 2] = nodeValue(2, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 2] = nodeValue(2, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, BLEND_TYPES ) .setDisplay(VALUE_DISPLAY.enum_scroll, BLEND_TYPES );
.setVisible(false);
inputs[| 3] = nodeValue(3, "Opacity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 3] = nodeValue(3, "Opacity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]);
@ -20,8 +19,7 @@ function Node_Blend(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 4] = nodeValue(4, "Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 4] = nodeValue(4, "Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 5] = nodeValue(5, "Tiling", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Tiling", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Stretch", "Tile" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Stretch", "Tile" ]);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -16,23 +16,19 @@ function Node_Canvas(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.slider, [1, 32, 1]); .setDisplay(VALUE_DISPLAY.slider, [1, 32, 1]);
inputs[| 3] = nodeValue(3, "Fill threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.) inputs[| 3] = nodeValue(3, "Fill threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Fill type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Fill type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["4 connect", "8 connect", "Entire canvas"]) .setDisplay(VALUE_DISPLAY.enum_scroll, ["4 connect", "8 connect", "Entire canvas"]);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Draw preview overlay", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 5] = nodeValue(5, "Draw preview overlay", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Brush", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, -1); inputs[| 6] = nodeValue(6, "Brush", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, -1);
inputs[| 7] = nodeValue(7, "Surface amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); inputs[| 7] = nodeValue(7, "Surface amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 1] = nodeValue(1, "Preview", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)) outputs[| 1] = nodeValue(1, "Preview", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
.setVisible(false);
input_display_list = [ input_display_list = [
["Output", false], 0, ["Output", false], 0,

View file

@ -11,8 +11,7 @@ function Node_Color(_x, _y) : Node(_x, _y) constructor {
min_h = 0; min_h = 0;
w = 96; w = 96;
inputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, []); outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, []);

View file

@ -23,37 +23,29 @@ function Node_Color_adjust(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Brightness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 1] = nodeValue(1, "Brightness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Contrast", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 2] = nodeValue(2, "Contrast", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Hue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 3] = nodeValue(3, "Hue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Saturation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 4] = nodeValue(4, "Saturation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 5] = nodeValue(5, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 6] = nodeValue(6, "Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Blend alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 7] = nodeValue(7, "Blend alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 8] = nodeValue(8, "Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 9] = nodeValue(9, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 9] = nodeValue(9, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -12,13 +12,16 @@ function Node_Color_HSV(_x, _y) : Node(_x, _y) constructor {
min_h = 0; min_h = 0;
inputs[| 0] = nodeValue(0, "Hue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 0] = nodeValue(0, "Hue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Saturation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 1] = nodeValue(1, "Saturation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
inputs[| 2] = nodeValue(2, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 2] = nodeValue(2, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white); outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white);

View file

@ -12,13 +12,16 @@ function Node_Color_RGB(_x, _y) : Node(_x, _y) constructor {
min_h = 0; min_h = 0;
inputs[| 0] = nodeValue(0, "Red", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 0] = nodeValue(0, "Red", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Green", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 1] = nodeValue(1, "Green", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
inputs[| 2] = nodeValue(2, "Blue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 2] = nodeValue(2, "Blue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white); outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white);

View file

@ -25,14 +25,11 @@ function Node_Color_replace(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 3] = nodeValue(3, "Treshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) inputs[| 3] = nodeValue(3, "Treshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
inputs[| 4] = nodeValue(4, "Set others to black", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 4] = nodeValue(4, "Set others to black", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Multiply alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) inputs[| 5] = nodeValue(5, "Multiply alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Hard replace", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 6] = nodeValue(6, "Hard replace", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
input_display_list = [0, input_display_list = [0,
["Color", false], 1, 2, ["Color", false], 1, 2,

View file

@ -20,16 +20,13 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
uniform_for = shader_get_sampler_index(sh_blend_normal_dim, "fore"); uniform_for = shader_get_sampler_index(sh_blend_normal_dim, "fore");
inputs[| 0] = nodeValue(0, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ]) inputs[| 0] = nodeValue(0, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.padding) .setDisplay(VALUE_DISPLAY.padding);
.setVisible(false);
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, COMPOSE_OUTPUT_SCALING.first) inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, COMPOSE_OUTPUT_SCALING.first)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "First surface", "Largest surface", "Constant" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "First surface", "Largest surface", "Constant" ]);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 2] = nodeValue(2, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
input_fix_len = ds_list_size(inputs); input_fix_len = ds_list_size(inputs);
data_length = 4; data_length = 4;
@ -45,16 +42,13 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| index + 0] = nodeValue( index + 0, _s? ("Surface " + string(_s)) : "Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| index + 0] = nodeValue( index + 0, _s? ("Surface " + string(_s)) : "Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| index + 1] = nodeValue( index + 1, "Position " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) inputs[| index + 1] = nodeValue( index + 1, "Position " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| index + 2] = nodeValue( index + 2, "Rotation " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) inputs[| index + 2] = nodeValue( index + 2, "Rotation " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.rotation) .setDisplay(VALUE_DISPLAY.rotation);
.setVisible(false);
inputs[| index + 3] = nodeValue( index + 3, "Scale " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) inputs[| index + 3] = nodeValue( index + 3, "Scale " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
array_push(input_display_list, ["Surface " + string(_s), true], index + 0, index + 1, index + 2, index + 3); array_push(input_display_list, ["Surface " + string(_s), true], index + 0, index + 1, index + 2, index + 3);
} }

View file

@ -1,6 +1,6 @@
function Node(_x, _y) constructor { function Node(_x, _y) constructor {
active = true; active = true;
node_id = NODE_ID++; node_id = generateUUID();
group = -1; group = -1;
color = c_white; color = c_white;
icon = noone; icon = noone;
@ -517,9 +517,14 @@ function Node(_x, _y) constructor {
load_map = -1; load_map = -1;
static deserialize = function(scale = false) { static deserialize = function(scale = false) {
keyframe_scale = scale; keyframe_scale = scale;
node_id = load_map[? "id"] + APPEND_ID;
if(APPENDING) {
APPEND_MAP[? load_map[? "id"]] = node_id;
} else {
node_id = load_map[? "id"];
}
NODE_MAP[? node_id] = self; NODE_MAP[? node_id] = self;
NODE_ID = max(NODE_ID, node_id + 1);
name = load_map[? "name"]; name = load_map[? "name"];
_group = load_map[? "group"]; _group = load_map[? "group"];
@ -547,8 +552,14 @@ function Node(_x, _y) constructor {
var c = PANEL_GRAPH.getCurrentContext(); var c = PANEL_GRAPH.getCurrentContext();
if(c != -1) c.add(self); if(c != -1) c.add(self);
} else { } else {
if(ds_map_exists(NODE_MAP, _group + APPEND_ID)) { if(APPENDING) _group = GetAppendID(_group);
NODE_MAP[? _group + APPEND_ID].add(self);
if(ds_map_exists(NODE_MAP, _group)) {
NODE_MAP[? _group].add(self);
} else {
var txt = "Group load failed. Can't find node ID " + string(_group);
PANEL_MENU.addNotiExtra(txt);
log_warning("LOAD", txt);
} }
} }
} }

View file

@ -28,14 +28,11 @@ function Node_Displace(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]);
inputs[| 5] = nodeValue(5, "Color data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Color data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Ignore", "Vector", "Angle" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Ignore", "Vector", "Angle" ]);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Iterate", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 6] = nodeValue(6, "Iterate", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Wrap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 7] = nodeValue(7, "Wrap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
input_display_list = [ 0, input_display_list = [ 0,
["Displace", false], 1, 3, 4, ["Displace", false], 1, 3, 4,

View file

@ -24,8 +24,7 @@ function Node_Export(_x, _y) : Node(_x, _y) constructor {
.setVisible(true); .setVisible(true);
inputs[| 2] = nodeValue(2, "Template", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "%d%n") inputs[| 2] = nodeValue(2, "Template", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "%d%n")
.setDisplay(VALUE_DISPLAY.export_format) .setDisplay(VALUE_DISPLAY.export_format);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Format", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue(3, "Format", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Single image (.png)", "Image sequence (.png)", "Animated gif (.gif)"]); .setDisplay(VALUE_DISPLAY.enum_scroll, ["Single image (.png)", "Image sequence (.png)", "Animated gif (.gif)"]);
@ -39,14 +38,14 @@ function Node_Export(_x, _y) : Node(_x, _y) constructor {
%i Index" ); %i Index" );
inputs[| 5] = nodeValue(5, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) inputs[| 5] = nodeValue(5, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
.setVisible(false, false); .setVisible(false);
inputs[| 6] = nodeValue(6, "Frame optimization", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 6] = nodeValue(6, "Frame optimization", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
.setVisible(false, false); .setVisible(false);
inputs[| 7] = nodeValue(7, "Color merge", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.02) inputs[| 7] = nodeValue(7, "Color merge", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.02)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(false, false); .setVisible(false);
inputs[| 8] = nodeValue(8, "Dithering", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 8] = nodeValue(8, "Dithering", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
.setVisible(false, false); .setVisible(false);
input_display_list = [ input_display_list = [
["Path", false], 0, 1, 2, 4, ["Path", false], 0, 1, 2, 4,

View file

@ -1,12 +0,0 @@
function Node_create_Fracture(_x, _y) {
var node = new Node_Fracture(_x, _y);
ds_list_add(PANEL_GRAPH.nodes_list, node);
return node;
}
function Node_Fracture(_x, _y) : Node(_x, _y) constructor {
name = "Fracture";
auto_update = false;
use_cache = true;
}

View file

@ -1,12 +0,0 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "generator",
"path": "folders/nodes/data/generator.yy",
},
"resourceVersion": "1.0",
"name": "node_fracture",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -1,12 +0,0 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "generator",
"path": "folders/nodes/data/generator.yy",
},
"resourceVersion": "1.0",
"name": "node_particle",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -22,10 +22,10 @@ function Node_Frame(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 240, 160 ] ) inputs[| 0] = nodeValue(0, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 240, 160 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setVisible(false);
inputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ) inputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white )
.setVisible(false);
static step = function() { static step = function() {
var si = inputs[| 0].getValue(); var si = inputs[| 0].getValue();

View file

@ -24,29 +24,23 @@ function Node_Gradient(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 1] = nodeValue(1, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient) .setDisplay(VALUE_DISPLAY.gradient);
inputs[| 2] = nodeValue(2, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 2] = nodeValue(2, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Linear", "Circular", "Radial" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Linear", "Circular", "Radial" ]);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue(3, "Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation) .setDisplay(VALUE_DISPLAY.rotation);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, .5) inputs[| 4] = nodeValue(4, "Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, .5);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 5] = nodeValue(5, "Shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [-2, 2, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [-2, 2, 0.01]);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [def_surf_size / 2, def_surf_size / 2]) inputs[| 6] = nodeValue(6, "Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [def_surf_size / 2, def_surf_size / 2])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 7] = nodeValue(7, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -12,8 +12,7 @@ function Node_Gradient_Out(_x, _y) : Node(_x, _y) constructor {
w = 96; w = 96;
inputs[| 0] = nodeValue(0, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 0] = nodeValue(0, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient) .setDisplay(VALUE_DISPLAY.gradient);
.setVisible(false);
inputs[| 1] = nodeValue(1, "Sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 1] = nodeValue(1, "Sample", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);

View file

@ -21,27 +21,24 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Display type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 0] = nodeValue(0, "Display type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Default", "Range", "Enum Scroll", "Enum Button", "Rotation", "Rotation range", .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Default", "Range", "Enum Scroll", "Enum Button", "Rotation", "Rotation range",
"Slider", "Slider range", "Gradient", "Palette", "Padding", "Vector", "Vector range", "Area", "Curve" ]) "Slider", "Slider range", "Gradient", "Palette", "Padding", "Vector", "Vector range", "Area", "Curve" ]);
.setVisible(false);
inputs[| 1] = nodeValue(1, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 1]) inputs[| 1] = nodeValue(1, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 1])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setVisible(false, false);
inputs[| 2] = nodeValue(2, "Input type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Integer", "Float", "Boolean", "Color", "Surface", "Path", "Curve", "Text", "Object", "Any" ])
.setVisible(false); .setVisible(false);
inputs[| 2] = nodeValue(2, "Input type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Integer", "Float", "Boolean", "Color", "Surface", "Path", "Curve", "Text", "Object", "Any" ]);
inputs[| 3] = nodeValue(3, "Enum label", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "") inputs[| 3] = nodeValue(3, "Enum label", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")
.setVisible(false, false); .setVisible(false);
inputs[| 4] = nodeValue(4, "Vector size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Vector size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "2", "3", "4" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "2", "3", "4" ])
.setVisible(false, false);
inputs[| 5] = nodeValue(5, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setVisible(false); .setVisible(false);
inputs[| 5] = nodeValue(5, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
input_display_list = [ input_display_list = [
["Data", false], 2, 4, ["Data", false], 2, 4,
["Display", false], 5, 0, 1, 3 ["Display", false], 5, 0, 1, 3
@ -132,7 +129,7 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
group.sortIO(); group.sortIO();
} }
function createInput(override_order = false) { static createInput = function(override_order = false) {
if(group && is_struct(group)) { if(group && is_struct(group)) {
if(override_order) { if(override_order) {
input_index = ds_list_size(group.inputs); input_index = ds_list_size(group.inputs);
@ -141,7 +138,8 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
input_index = inputs[| 5].getValue(); input_index = inputs[| 5].getValue();
} }
inParent = nodeValue(ds_list_size(group.inputs), "Value", group, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1); inParent = nodeValue(ds_list_size(group.inputs), "Value", group, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1)
.setVisible(true, true);
inParent.from = self; inParent.from = self;
ds_list_add(group.inputs, inParent); ds_list_add(group.inputs, inParent);
@ -196,7 +194,7 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
onValueUpdate(0); onValueUpdate(0);
} }
function onDestroy() { static onDestroy = function() {
if(is_undefined(inParent)) return; if(is_undefined(inParent)) return;
ds_list_remove(group.inputs, inParent); ds_list_remove(group.inputs, inParent);

View file

@ -19,8 +19,7 @@ function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1); inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1);
inputs[| 1] = nodeValue(1, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 1] = nodeValue(1, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
.setVisible(false);
outParent = undefined; outParent = undefined;
output_index = -1; output_index = -1;
@ -31,7 +30,7 @@ function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor {
group.sortIO(); group.sortIO();
} }
function createOutput(override_order = true) { static createOutput = function(override_order = true) {
if(group && is_struct(group)) { if(group && is_struct(group)) {
if(override_order) { if(override_order) {
output_index = ds_list_size(group.outputs); output_index = ds_list_size(group.outputs);
@ -40,8 +39,10 @@ function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor {
output_index = inputs[| 1].getValue(); output_index = inputs[| 1].getValue();
} }
outParent = nodeValue(ds_list_size(group.outputs), "Value", group, JUNCTION_CONNECT.output, VALUE_TYPE.any, -1); outParent = nodeValue(ds_list_size(group.outputs), "Value", group, JUNCTION_CONNECT.output, VALUE_TYPE.any, -1)
.setVisible(true, true);
outParent.from = self; outParent.from = self;
ds_list_add(group.outputs, outParent); ds_list_add(group.outputs, outParent);
group.setHeight(); group.setHeight();
group.sortIO(); group.sortIO();
@ -64,7 +65,7 @@ function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor {
inputs[| 0].type = VALUE_TYPE.any; inputs[| 0].type = VALUE_TYPE.any;
} }
} }
function doUpdateForward() { static doUpdateForward = function() {
if(is_undefined(outParent)) return; if(is_undefined(outParent)) return;
for(var j = 0; j < ds_list_size(outParent.value_to); j++) { for(var j = 0; j < ds_list_size(outParent.value_to); j++) {
@ -78,7 +79,7 @@ function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor {
createOutput(false); createOutput(false);
} }
function onDestroy() { static onDestroy = function() {
if(is_undefined(outParent)) return; if(is_undefined(outParent)) return;
ds_list_delete(group.outputs, ds_list_find_index(group.outputs, outParent)); ds_list_delete(group.outputs, ds_list_find_index(group.outputs, outParent));
} }

View file

@ -31,10 +31,10 @@ function Node_Image(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "") inputs[| 0] = nodeValue(0, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
.setDisplay(VALUE_DISPLAY.path_load, ["*.png", ""]); .setDisplay(VALUE_DISPLAY.path_load, ["*.png", ""]);
inputs[| 1] = nodeValue(1, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0, 0, 0]) inputs[| 1] = nodeValue(1, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0, 0, 0])
.setDisplay(VALUE_DISPLAY.padding); .setDisplay(VALUE_DISPLAY.padding);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 1] = nodeValue(1, "Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.path, "") outputs[| 1] = nodeValue(1, "Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.path, "")
.setVisible(true, true); .setVisible(true, true);

View file

@ -44,11 +44,10 @@ function Node_Image_Animated(_x, _y) : Node(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0, 0, 0]) inputs[| 1] = nodeValue(1, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0, 0, 0])
.setDisplay(VALUE_DISPLAY.padding); .setDisplay(VALUE_DISPLAY.padding);
inputs[| 2] = nodeValue(2, "Stretch frame", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); inputs[| 2] = nodeValue(2, "Stretch frame", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 3] = nodeValue(3, "Frame duration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); inputs[| 3] = nodeValue(3, "Frame duration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 4] = nodeValue(4, "Animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Loop", "Ping pong", "Hold last frame", "Hide"]); .setDisplay(VALUE_DISPLAY.enum_scroll, ["Loop", "Ping pong", "Hold last frame", "Hide"]);

View file

@ -43,7 +43,7 @@ function Node_Image_gif(_x, _y) : Node(_x, _y) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 1] = nodeValue(1, "Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.path, "") outputs[| 1] = nodeValue(1, "Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.path, "")
.setVisible(true, true); .setVisible(true);
spr = noone; spr = noone;
path_current = ""; path_current = "";

View file

@ -47,12 +47,10 @@ function Node_Image_Sequence(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.padding); .setDisplay(VALUE_DISPLAY.padding);
inputs[| 2] = nodeValue(2, "Canvas size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 2] = nodeValue(2, "Canvas size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Individual", "Minimum", "Maximum" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Individual", "Minimum", "Maximum" ]);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Sizing method", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue(3, "Sizing method", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Padding / Crop", "Scale" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Padding / Crop", "Scale" ]);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Edit", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Edit", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.button, [ function() { .setDisplay(VALUE_DISPLAY.button, [ function() {

View file

@ -29,14 +29,12 @@ function Node_Image_Sheet(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.padding); .setDisplay(VALUE_DISPLAY.padding);
inputs[| 7] = nodeValue(7, "Output", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 7] = nodeValue(7, "Output", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Animation", "Array"]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Animation", "Array"]);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1); inputs[| 8] = nodeValue(8, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Horizontal", "Vertical"]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Horizontal", "Vertical"]);
.setVisible(false);
inputs[| 10] = nodeValue(10, "Auto fill", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 10] = nodeValue(10, "Auto fill", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.button, [ function() { .setDisplay(VALUE_DISPLAY.button, [ function() {

View file

@ -10,8 +10,7 @@ function Node_Line(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d ) inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Backgroud", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 1] = nodeValue(1, "Backgroud", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Segment", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) inputs[| 2] = nodeValue(2, "Segment", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.slider, [1, 32, 1]); .setDisplay(VALUE_DISPLAY.slider, [1, 32, 1]);
@ -22,12 +21,10 @@ function Node_Line(_x, _y) : Node(_x, _y) constructor {
inputs[| 4] = nodeValue(4, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 4] = nodeValue(4, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [0, 16, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 16, 0.01]);
inputs[| 5] = nodeValue(5, "Random seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Random seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 6] = nodeValue(6, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation) .setDisplay(VALUE_DISPLAY.rotation);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, 0); inputs[| 7] = nodeValue(7, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, 0);

View file

@ -13,11 +13,12 @@ function Node_Math(_x, _y) : Node_Value_Processor(_x, _y) constructor {
min_h = 0; min_h = 0;
inputs[| 0] = nodeValue(0, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 0] = nodeValue(0, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Add", "Subtract", "Multiply", "Divide", "Power", "Root", "Sin", "Cos", "Tan" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Add", "Subtract", "Multiply", "Divide", "Power", "Root", "Sin", "Cos", "Tan" ]);
.setVisible(false);
inputs[| 1] = nodeValue(1, "a", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 1] = nodeValue(1, "a", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| 2] = nodeValue(2, "b", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); .setVisible(true, true);
inputs[| 2] = nodeValue(2, "b", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Math", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); outputs[| 0] = nodeValue(0, "Math", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);

View file

@ -11,37 +11,29 @@ function Node_Cellular(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2]) inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4) inputs[| 2] = nodeValue(2, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 3] = nodeValue(3, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Point", "Edge", "Cell" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Point", "Edge", "Cell" ]);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Contrast", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 5] = nodeValue(5, "Contrast", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 6] = nodeValue(6, "Pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Radial" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Radial" ]);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Middle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) inputs[| 7] = nodeValue(7, "Middle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
.setDisplay(VALUE_DISPLAY.slider, [0., 1., 0.01]) .setDisplay(VALUE_DISPLAY.slider, [0., 1., 0.01]);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Radial scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2) inputs[| 8] = nodeValue(8, "Radial scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2)
.setDisplay(VALUE_DISPLAY.slider, [1., 10., 0.01]) .setDisplay(VALUE_DISPLAY.slider, [1., 10., 0.01]);
.setVisible(false, false);
inputs[| 9] = nodeValue(9, "Radial shatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 9] = nodeValue(9, "Radial shatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [-10., 10., 0.01]) .setDisplay(VALUE_DISPLAY.slider, [-10., 10., 0.01])
.setVisible(false, false); .setVisible(false);
input_display_list = [ input_display_list = [
["Output", false], 0, ["Output", false], 0,

View file

@ -31,8 +31,7 @@ function Node_Normal_Light(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 7] = nodeValue(7, "Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 7] = nodeValue(7, "Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 8] = nodeValue(8, "Light type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 8] = nodeValue(8, "Light type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, ["Point", "Sun"]) .setDisplay(VALUE_DISPLAY.enum_button, ["Point", "Sun"]);
.setVisible(false);
input_display_list = [ 0, input_display_list = [ 0,
["Normal", false], 1, 2, ["Normal", false], 1, 2,

View file

@ -23,17 +23,15 @@ function Node_Outline(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 2] = nodeValue(2, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 2] = nodeValue(2, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 3] = nodeValue(3, "Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0) inputs[| 3] = nodeValue(3, "Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Blend alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) inputs[| 4] = nodeValue(4, "Blend alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
inputs[| 5] = nodeValue(5, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, ["Inside", "Outside"]) .setDisplay(VALUE_DISPLAY.enum_button, ["Inside", "Outside"]);
inputs[| 6] = nodeValue(6, "Anti alising", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0) inputs[| 6] = nodeValue(6, "Anti alising", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 1] = nodeValue(1, "Outline", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 1] = nodeValue(1, "Outline", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -13,8 +13,7 @@ function Node_Palette(_x, _y) : Node(_x, _y) constructor {
min_h = 0; min_h = 0;
inputs[| 0] = nodeValue(0, "Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) inputs[| 0] = nodeValue(0, "Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ])
.setDisplay(VALUE_DISPLAY.palette) .setDisplay(VALUE_DISPLAY.palette);
.setVisible(false);
inputs[| 1] = nodeValue(1, "Trim range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ]) inputs[| 1] = nodeValue(1, "Trim range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ])
.setDisplay(VALUE_DISPLAY.slider_range, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider_range, [0, 1, 0.01]);

View file

@ -177,99 +177,74 @@ function Node_Particle(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue(0, "Particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d) inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4) inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
.setVisible(false); inputs[| 3] = nodeValue(3, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2);
inputs[| 3] = nodeValue(3, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2)
.setVisible(false);
inputs[| 4] = nodeValue(4, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) inputs[| 4] = nodeValue(4, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }) .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); });
.setVisible(false);
inputs[| 5] = nodeValue(5, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]);
.setVisible(false);
inputs[| 6] = nodeValue(6, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ]) inputs[| 6] = nodeValue(6, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ])
.setDisplay(VALUE_DISPLAY.range) .setDisplay(VALUE_DISPLAY.range);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ]) inputs[| 7] = nodeValue(7, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ])
.setDisplay(VALUE_DISPLAY.rotation_range) .setDisplay(VALUE_DISPLAY.rotation_range);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 8] = nodeValue(8, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range) .setDisplay(VALUE_DISPLAY.range);
.setVisible(false);
inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0]) inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0])
.setDisplay(VALUE_DISPLAY.rotation_range) .setDisplay(VALUE_DISPLAY.rotation_range);
.setVisible(false);
inputs[| 10] = nodeValue(10, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 10] = nodeValue(10, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
.setVisible(false);
inputs[| 11] = nodeValue(11, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] ) inputs[| 11] = nodeValue(11, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range) .setDisplay(VALUE_DISPLAY.vector_range);
.setVisible(false);
inputs[| 12] = nodeValue(12, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) inputs[| 12] = nodeValue(12, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 13] = nodeValue(13, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 13] = nodeValue(13, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient) .setDisplay(VALUE_DISPLAY.gradient);
.setVisible(false);
inputs[| 14] = nodeValue(14, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) inputs[| 14] = nodeValue(14, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range) .setDisplay(VALUE_DISPLAY.range);
.setVisible(false); inputs[| 15] = nodeValue(15, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]);
inputs[| 15] = nodeValue(15, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1])
.setVisible(false);
inputs[| 16] = nodeValue(16, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 16] = nodeValue(16, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 17] = nodeValue(17, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 17] = nodeValue(17, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]);
.setVisible(false);
inputs[| 18] = nodeValue(18, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) inputs[| 18] = nodeValue(18, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range) .setDisplay(VALUE_DISPLAY.range);
.setVisible(false);
inputs[| 19] = nodeValue(19, "Draw exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ) inputs[| 19] = nodeValue(19, "Draw exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
.setVisible(false);
inputs[| 20] = nodeValue(20, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] ) inputs[| 20] = nodeValue(20, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] )
.setDisplay(VALUE_DISPLAY.range) .setDisplay(VALUE_DISPLAY.range);
.setVisible(false);
inputs[| 21] = nodeValue(21, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) inputs[| 21] = nodeValue(21, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
.setVisible(false); inputs[| 22] = nodeValue(22, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 22] = nodeValue(22, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
.setVisible(false);
inputs[| 23] = nodeValue(23, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ) inputs[| 23] = nodeValue(23, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
.setVisible(false);
inputs[| 24] = nodeValue(24, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) inputs[| 24] = nodeValue(24, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]);
.setVisible(false);
inputs[| 25] = nodeValue(25, "Surface selection", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) inputs[| 25] = nodeValue(25, "Surface selection", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ])
.setVisible(false, false); .setVisible(false);
inputs[| 26] = nodeValue(26, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) inputs[| 26] = nodeValue(26, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setVisible(false, false);
inputs[| 27] = nodeValue(27, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ])
.setVisible(false); .setVisible(false);
inputs[| 27] = nodeValue(27, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]);
inputs[| 28] = nodeValue(28, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, []) inputs[| 28] = nodeValue(28, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
.setVisible(true, false); .setVisible(false, true);
input_display_list = [ input_display_list = [
["Output", true], 1, ["Output", true], 1,

View file

@ -24,40 +24,30 @@ function Node_Particle_Effector(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Particle data", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 ); inputs[| 0] = nodeValue(0, "Particle data", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 );
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d ) inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false, false);
inputs[| 2] = nodeValue(2, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 4, 4, AREA_SHAPE.rectangle ]) inputs[| 2] = nodeValue(2, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 4, 4, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area) .setDisplay(VALUE_DISPLAY.area);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Falloff", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [0, 0, 1, 1] ) inputs[| 3] = nodeValue(3, "Falloff", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [0, 0, 1, 1] )
.setDisplay(VALUE_DISPLAY.curve) .setDisplay(VALUE_DISPLAY.curve);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Falloff distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 ) inputs[| 4] = nodeValue(4, "Falloff distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 );
.setVisible(false);
inputs[| 5] = nodeValue(5, "Effect type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) inputs[| 5] = nodeValue(5, "Effect type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Wind", "Accelerate", "Attract", "Repel", "Vortex", "Turbulence", "Destroy" ] ) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Wind", "Accelerate", "Attract", "Repel", "Vortex", "Turbulence", "Destroy" ] );
.setVisible(false);
inputs[| 6] = nodeValue(6, "Effect Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -1, 0 ] ) inputs[| 6] = nodeValue(6, "Effect Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -1, 0 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) inputs[| 7] = nodeValue(7, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
.setVisible(false);
inputs[| 8] = nodeValue(8, "Rotate particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) inputs[| 8] = nodeValue(8, "Rotate particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
.setVisible(false);
inputs[| 9] = nodeValue(9, "Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) inputs[| 9] = nodeValue(9, "Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 10] = nodeValue(10, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16 ) inputs[| 10] = nodeValue(10, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16 );
.setVisible(false);
input_display_list = [ 0, 1, input_display_list = [ 0, 1,
["Area", false], 2, 3, 4, ["Area", false], 2, 3, 4,

View file

@ -23,7 +23,7 @@ function Node_Path(_x, _y) : Node(_x, _y) constructor {
inputs[| index] = nodeValue(index, "Anchor", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ _x, _y, 0, 0, 0, 0 ]) inputs[| index] = nodeValue(index, "Anchor", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ _x, _y, 0, 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setVisible(false);
return inputs[| index]; return inputs[| index];
} }

View file

@ -23,12 +23,10 @@ function Node_Pixel_Cloud(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(100000)) inputs[| 1] = nodeValue(1, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(100000));
.setVisible(false, true);
inputs[| 2] = nodeValue(2, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) inputs[| 2] = nodeValue(2, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01]);
.setVisible(false, true);
inputs[| 3] = nodeValue(3, "Strength map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 3] = nodeValue(3, "Strength map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);

View file

@ -11,8 +11,7 @@ function Node_Scale(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1); inputs[| 1] = nodeValue(1, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 2] = nodeValue(2, "Keep dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 2] = nodeValue(2, "Keep dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -27,22 +27,17 @@ function Node_Scatter(_x, _y) : Node(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.rotation_range); .setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 5] = nodeValue(5, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) inputs[| 5] = nodeValue(5, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }) .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); });
.setVisible(false);
inputs[| 6] = nodeValue(6, "Distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 6] = nodeValue(6, "Distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]);
.setVisible(false);
inputs[| 7] = nodeValue(7, "Point at center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 7] = nodeValue(7, "Point at center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Uniform scaling", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) inputs[| 8] = nodeValue(8, "Uniform scaling", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
.setVisible(false);
inputs[| 9] = nodeValue(9, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) inputs[| 9] = nodeValue(9, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random" ]);
.setVisible(false);
inputs[| 10] = nodeValue(10, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999)); inputs[| 10] = nodeValue(10, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999));

View file

@ -14,12 +14,10 @@ function Node_Seperate_Shape(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Output", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) inputs[| 1] = nodeValue(1, "Output", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Node", "Array" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Node", "Array" ]);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Tolerance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2) inputs[| 2] = nodeValue(2, "Tolerance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
.setVisible(false);
static createOutput = function() { static createOutput = function() {
var o = nodeValue(ds_list_size(outputs), "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); var o = nodeValue(ds_list_size(outputs), "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -41,15 +41,14 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 0].getValue(); }); .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 0].getValue(); });
inputs[| 4] = nodeValue(4, "Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 3) inputs[| 4] = nodeValue(4, "Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 3)
.setVisible(false, false); .setVisible(false);
inputs[| 5] = nodeValue(5, "Inner radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) inputs[| 5] = nodeValue(5, "Inner radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01])
.setVisible(false, false);
inputs[| 6] = nodeValue(6, "Anti alising", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
.setVisible(false); .setVisible(false);
inputs[| 6] = nodeValue(6, "Anti alising", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 7] = nodeValue(7, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 7] = nodeValue(7, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation); .setDisplay(VALUE_DISPLAY.rotation);

View file

@ -24,22 +24,17 @@ function Node_Render_Sprite_Sheet(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Sprites", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, surface_create(1, 1)); inputs[| 0] = nodeValue(0, "Sprites", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, surface_create(1, 1));
inputs[| 1] = nodeValue(1, "Sprite set", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 1] = nodeValue(1, "Sprite set", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Animation", "Sprite array" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Animation", "Sprite array" ]);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Frame step", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) inputs[| 2] = nodeValue(2, "Frame step", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Packing type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue(3, "Packing type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Horizontal", "Vertical", "Grid" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Horizontal", "Vertical", "Grid" ]);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Grid column", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4) inputs[| 4] = nodeValue(4, "Grid column", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Alignment", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Alignment", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "First", "Middle", "Last" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "First", "Middle", "Last" ]);
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -12,18 +12,14 @@ function Node_Text(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, ""); inputs[| 0] = nodeValue(0, "Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "");
inputs[| 1] = nodeValue(1, "Font", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "") inputs[| 1] = nodeValue(1, "Font", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
.setDisplay(VALUE_DISPLAY.path_load, ["*.ttf;*.otf", ""]) .setDisplay(VALUE_DISPLAY.path_load, ["*.ttf;*.otf", ""]);
.setVisible(false);
inputs[| 2] = nodeValue(2, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16) inputs[| 2] = nodeValue(2, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16);
.setVisible(false);
inputs[| 3] = nodeValue(3, "Anti-Aliasing ", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 3] = nodeValue(3, "Anti-Aliasing ", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 4] = nodeValue(4, "Character range", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 128 ]) inputs[| 4] = nodeValue(4, "Character range", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 128 ])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 5] = nodeValue(5, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
@ -38,8 +34,7 @@ function Node_Text(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.enum_button, [ s_inspector_text_valign, s_inspector_text_valign, s_inspector_text_valign ]); .setDisplay(VALUE_DISPLAY.enum_button, [ s_inspector_text_valign, s_inspector_text_valign, s_inspector_text_valign ]);
inputs[| 9] = nodeValue(9, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ) inputs[| 9] = nodeValue(9, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Fixed", "Dynamic" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Fixed", "Dynamic" ]);
.setVisible(false);
input_display_list = [ input_display_list = [
["Output", true], 9, 6, ["Output", true], 9, 6,

View file

@ -14,8 +14,7 @@ function Node_Trail(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 3] = nodeValue(3, "Alpha decrease", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 3] = nodeValue(3, "Alpha decrease", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
inputs[| 4] = nodeValue(4, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 4] = nodeValue(4, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, BLEND_TYPES ) .setDisplay(VALUE_DISPLAY.enum_scroll, BLEND_TYPES );
.setVisible(false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));

View file

@ -17,7 +17,7 @@ function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [1, 1], VALUE_TAG.dimension_2d) inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [1, 1], VALUE_TAG.dimension_2d)
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setVisible(false, false); .setVisible(false);
inputs[| 2] = nodeValue(2, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 2] = nodeValue(2, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
@ -27,34 +27,30 @@ function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
.setIcon(s_anchor) .setIcon(s_anchor)
.setTooltip("Set to center")); .setTooltip("Set to center"));
inputs[| 4] = nodeValue(4, "Relative", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) inputs[| 4] = nodeValue(4, "Relative", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
.setVisible(false);
inputs[| 5] = nodeValue(5, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation); .setDisplay(VALUE_DISPLAY.rotation);
inputs[| 6] = nodeValue(6, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) inputs[| 6] = nodeValue(6, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector, button(function() { .setDisplay(VALUE_DISPLAY.vector,
inputs[| 6].modifier = inputs[| 6].modifier == VALUE_MODIFIER.none? VALUE_MODIFIER.linked : VALUE_MODIFIER.none; button(function() {
inputs[| 6].editWidget.extras.icon_index = inputs[| 6].modifier == VALUE_MODIFIER.linked; inputs[| 6].modifier = inputs[| 6].modifier == VALUE_MODIFIER.none? VALUE_MODIFIER.linked : VALUE_MODIFIER.none;
}) inputs[| 6].editWidget.extras.icon_index = inputs[| 6].modifier == VALUE_MODIFIER.linked;
.setIcon(s_padding_link)); })
.setIcon(s_padding_link));
inputs[| 7] = nodeValue(7, "Wrap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 7] = nodeValue(7, "Wrap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
inputs[| 8] = nodeValue(8, "Rotate by velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 8] = nodeValue(8, "Rotate by velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
inputs[| 9] = nodeValue(9, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input) inputs[| 9] = nodeValue(9, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]);
.setVisible(false);
inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true) inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
.setVisible(false);
inputs[| 11] = nodeValue(11, "Relative to surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) inputs[| 11] = nodeValue(11, "Relative to surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
.setVisible(false);
input_display_list = [ 0, input_display_list = [ 0,
["Output", true], 9, 1, 7, ["Output", true], 9, 1, 7,

View file

@ -155,15 +155,15 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
on_end = KEYFRAME_END.hold; on_end = KEYFRAME_END.hold;
extra_data = ds_list_create(); extra_data = ds_list_create();
visible = true; visible = _connect == JUNCTION_CONNECT.output || _type == VALUE_TYPE.surface || _type == VALUE_TYPE.path || ( _tag & VALUE_TAG.dimension_2d );
show_in_inspector = true; show_in_inspector = true;
display_type = VALUE_DISPLAY._default; display_type = VALUE_DISPLAY._default;
display_data = -1; display_data = -1;
static setVisible = function(vis, inspector = true) { static setVisible = function(inspector) {
visible = vis;
show_in_inspector = inspector; show_in_inspector = inspector;
visible = argument_count > 1? argument[1] : visible;
return self; return self;
} }
@ -931,7 +931,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
static isVisible = function() { static isVisible = function() {
if(!node.active) return false; if(!node.active) return false;
return visible && show_in_inspector; return value_from || ( visible && show_in_inspector );
} }
static serialize = function(scale = false) { static serialize = function(scale = false) {
@ -968,8 +968,10 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
if(con_node == -1) return true; if(con_node == -1) return true;
if(con_index == -1) return true; if(con_index == -1) return true;
if(ds_map_exists(NODE_MAP, con_node + APPEND_ID)) { if(APPENDING) con_node = GetAppendID(con_node);
var _nd = NODE_MAP[? con_node + APPEND_ID];
if(ds_map_exists(NODE_MAP, con_node)) {
var _nd = NODE_MAP[? con_node];
var _ol = ds_list_size(_nd.outputs); var _ol = ds_list_size(_nd.outputs);
if(con_index < _ol) { if(con_index < _ol) {
if(setFrom(_nd.outputs[| con_index], false)) if(setFrom(_nd.outputs[| con_index], false))
@ -981,13 +983,10 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Node not exist."); log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Node not exist.");
return false; return false;
} }
} else {
log_warning("LOAD", "[Connect] Connection error, node does not exist.");
} }
var txt = "Node connect error : Node ID " + string(con_node + APPEND_ID) + " not found."; var txt = "Node connect error : Node ID " + string(con_node) + " not found.";
log_warning("LOAD", "[Connect] " + txt); log_warning("LOAD", "[Connect] " + txt);
PANEL_MENU.addNotiExtra(txt); return false;
return true;
} }
} }

View file

@ -12,7 +12,8 @@ function Node_Number(_x, _y) : Node_Value_Processor(_x, _y) constructor {
w = 96; w = 96;
min_h = 32 + 24 * 1; min_h = 32 + 24 * 1;
inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Number", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); outputs[| 0] = nodeValue(0, "Number", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);
@ -44,8 +45,10 @@ function Node_Vector2(_x, _y) : Node_Value_Processor(_x, _y) constructor {
w = 96; w = 96;
min_h = 32 + 24 * 2; min_h = 32 + 24 * 2;
inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); .setVisible(true, true);
inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0 ]) outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.area); .setDisplay(VALUE_DISPLAY.area);
@ -79,9 +82,12 @@ function Node_Vector3(_x, _y) : Node_Value_Processor(_x, _y) constructor {
w = 96; w = 96;
min_h = 32 + 24 * 3; min_h = 32 + 24 * 3;
inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); .setVisible(true, true);
inputs[| 2] = nodeValue(2, "z", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
inputs[| 2] = nodeValue(2, "z", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0 ]) outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
@ -115,10 +121,14 @@ function Node_Vector4(_x, _y) : Node_Value_Processor(_x, _y) constructor {
w = 96; w = 96;
min_h = 32 + 24 * 4; min_h = 32 + 24 * 4;
inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); .setVisible(true, true);
inputs[| 2] = nodeValue(2, "z", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); inputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| 3] = nodeValue(3, "w", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); .setVisible(true, true);
inputs[| 2] = nodeValue(2, "z", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
inputs[| 3] = nodeValue(3, "w", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0, 0 ]) outputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
@ -154,7 +164,8 @@ function Node_Vector_Split(_x, _y) : Node_Value_Processor(_x, _y) constructor {
min_h = 32 + 24 * 4; min_h = 32 + 24 * 4;
inputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ]) inputs[| 0] = nodeValue(0, "Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); outputs[| 0] = nodeValue(0, "x", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);
outputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); outputs[| 1] = nodeValue(1, "y", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);

View file

@ -20,8 +20,7 @@ function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor {
inputs[| 2] = nodeValue(2, "Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 3, 5 ] ) inputs[| 2] = nodeValue(2, "Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 3, 5 ] )
.setDisplay(VALUE_DISPLAY.range); .setDisplay(VALUE_DISPLAY.range);
inputs[| 3] = nodeValue(3, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999) ) inputs[| 3] = nodeValue(3, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999) );
.setVisible(false);
outputs[| 0] = nodeValue(0, "Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); outputs[| 0] = nodeValue(0, "Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);

View file

@ -28,7 +28,7 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
var index = ds_list_size(inputs); var index = ds_list_size(inputs);
inputs[| index] = nodeValue(index, "Control point range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 8, 0, 32]) inputs[| index] = nodeValue(index, "Control point range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 8, 0, 32])
.setDisplay(VALUE_DISPLAY.puppet_control) .setDisplay(VALUE_DISPLAY.puppet_control)
.setVisible(false);
return inputs[| index]; return inputs[| index];
} }

View file

@ -51,6 +51,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
value_dragging = noone; value_dragging = noone;
show_grid = true; show_grid = true;
drag_key = mb_middle;
addHotkey("Graph", "Add node", "A", MOD_KEY.none, function() { callAddDialog(); }); addHotkey("Graph", "Add node", "A", MOD_KEY.none, function() { callAddDialog(); });
addHotkey("Graph", "Focus content", "F", MOD_KEY.none, function() { fullView(); }); addHotkey("Graph", "Focus content", "F", MOD_KEY.none, function() { fullView(); });
@ -120,12 +121,21 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
graph_x += dx / graph_s; graph_x += dx / graph_s;
graph_y += dy / graph_s; graph_y += dy / graph_s;
if(mouse_check_button_released(mb_middle)) if(mouse_check_button_released(drag_key))
graph_dragging = false; graph_dragging = false;
} }
if(FOCUS == panel) { if(FOCUS == panel) {
var _doDragging = false;
if(mouse_check_button_pressed(mb_middle)) { if(mouse_check_button_pressed(mb_middle)) {
_doDragging = true;
drag_key = mb_middle;
} else if(mouse_check_button_pressed(mb_left) && keyboard_check(vk_control)) {
_doDragging = true;
drag_key = mb_left;
}
if(_doDragging) {
graph_dragging = true; graph_dragging = true;
graph_drag_mx = mx; graph_drag_mx = mx;
graph_drag_my = my; graph_drag_my = my;
@ -215,7 +225,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
#endregion #endregion
if(FOCUS == panel) { if(FOCUS == panel) {
if(mouse_check_button_pressed(mb_left)) { if(mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) {
if(keyboard_check(vk_shift)) { if(keyboard_check(vk_shift)) {
if(ds_list_empty(nodes_select_list) && node_focus) if(ds_list_empty(nodes_select_list) && node_focus)
ds_list_add(nodes_select_list, node_focus); ds_list_add(nodes_select_list, node_focus);
@ -374,7 +384,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
if(!_recur) { if(!_recur) {
_node.drawActive(gr_x, gr_y, graph_s, 1); _node.drawActive(gr_x, gr_y, graph_s, 1);
if(mouse_check_button_released(mb_left)) { if(mouse_check_button_released(mb_left) && !keyboard_check(vk_control)) {
if(ds_list_size(nodes_select_list) == 0) { if(ds_list_size(nodes_select_list) == 0) {
_node.add(node_dragging); _node.add(node_dragging);
node_dragging.checkConnectGroup(); node_dragging.checkConnectGroup();
@ -403,7 +413,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
node_dragging.move(nx, ny); node_dragging.move(nx, ny);
if(mouse_check_button_released(mb_left)) { if(mouse_check_button_released(mb_left) && !keyboard_check(vk_control)) {
if(nx != node_drag_sx || ny != node_drag_sy) { if(nx != node_drag_sx || ny != node_drag_sy) {
recordAction(ACTION_TYPE.var_modify, node_dragging, [ node_drag_sx, "x" ]); recordAction(ACTION_TYPE.var_modify, node_dragging, [ node_drag_sx, "x" ]);
recordAction(ACTION_TYPE.var_modify, node_dragging, [ node_drag_sy, "y" ]); recordAction(ACTION_TYPE.var_modify, node_dragging, [ node_drag_sy, "y" ]);
@ -443,7 +453,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
#endregion #endregion
if(FOCUS == panel && node_focus && value_focus == noone) { if(FOCUS == panel && node_focus && value_focus == noone) {
if(mouse_check_button_pressed(mb_left)) { if(mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) {
node_dragging = node_focus; node_dragging = node_focus;
node_drag_mx = mouse_graph_x; node_drag_mx = mouse_graph_x;
node_drag_my = mouse_graph_y; node_drag_my = mouse_graph_y;
@ -487,7 +497,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
nodes_select_drag = false; nodes_select_drag = false;
} }
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) { if(FOCUS == panel && mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) {
if(!node_focus && !value_focus && node_hovering != -1) { if(!node_focus && !value_focus && node_hovering != -1) {
nodes_select_drag = true; nodes_select_drag = true;
nodes_select_mx = mx; nodes_select_mx = mx;
@ -763,7 +773,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
} }
} else { } else {
if(value_focus) { if(value_focus) {
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) { if(FOCUS == panel && mouse_check_button_pressed(mb_left) && !keyboard_check(vk_control)) {
value_dragging = value_focus; value_dragging = value_focus;
} }
} }

View file

@ -15,4 +15,13 @@ function getWiggle(_min, _max, _fmin, _fmax, _time, seed_shift = 0) {
var _val = lerp(_x0, _x1, (_time - _t_prev) / (_t_next - _t_prev)); var _val = lerp(_x0, _x1, (_time - _t_prev) / (_t_next - _t_prev));
return _val; return _val;
}
function generateUUID() {
randomize();
var uuid;
do {
uuid = irandom(1000000000);
} until(!ds_map_exists(NODE_MAP, uuid))
return uuid;
} }

View file

@ -4,6 +4,7 @@ function NEW() {
room_restart(); room_restart();
gc_collect(); gc_collect();
CURRENT_PATH = "";
} }
function clearNodes() { function clearNodes() {
@ -95,7 +96,7 @@ function SAVE_AT(path) {
READONLY = false; READONLY = false;
log_message("FILE", "save at " + path); log_message("FILE", "save at " + path);
PANEL_MENU.showNoti("File saved", s_noti_icon_save); PANEL_MENU.showNoti("File saved", s_noti_icon_file_save);
} }
function SAVE_COLLECTIONS(_list, _path, save_surface = true) { function SAVE_COLLECTIONS(_list, _path, save_surface = true) {

View file

@ -50,6 +50,7 @@ function surface_valid(s) {
function is_surface(s) { function is_surface(s) {
if(is_array(s)) return false; if(is_array(s)) return false;
if(!is_real(s)) return false;
if(!s) return false; if(!s) return false;
if(!surface_exists(s)) return false; if(!surface_exists(s)) return false;

View file

@ -24,12 +24,12 @@
"gridX": 0, "gridX": 0,
"gridY": 0, "gridY": 0,
"frames": [ "frames": [
{"compositeImage":{"FrameId":{"name":"2417222e-9981-4289-8e46-b6a3da22aaa3","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ {"compositeImage":{"FrameId":{"name":"22ca1d06-e7da-4af2-8fd7-67c3a2b40024","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[
{"FrameId":{"name":"2417222e-9981-4289-8e46-b6a3da22aaa3","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"LayerId":{"name":"49f8948b-7323-4e00-acbb-0f86b8b3b3c8","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, {"FrameId":{"name":"22ca1d06-e7da-4af2-8fd7-67c3a2b40024","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"LayerId":{"name":"b09919d3-76f0-47d0-9f21-1330a8233bc5","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},
],"parent":{"name":"s_noti_icon_save","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"resourceVersion":"1.0","name":"2417222e-9981-4289-8e46-b6a3da22aaa3","tags":[],"resourceType":"GMSpriteFrame",}, ],"parent":{"name":"s_noti_icon_file_load","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"resourceVersion":"1.0","name":"22ca1d06-e7da-4af2-8fd7-67c3a2b40024","tags":[],"resourceType":"GMSpriteFrame",},
], ],
"sequence": { "sequence": {
"spriteId": {"name":"s_noti_icon_save","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",}, "spriteId": {"name":"s_noti_icon_file_load","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},
"timeUnits": 1, "timeUnits": 1,
"playback": 1, "playback": 1,
"playbackSpeed": 30.0, "playbackSpeed": 30.0,
@ -41,10 +41,10 @@
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",}, "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [ "tracks": [
{"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"df4c1f53-b662-4794-8b21-116532ab3b58","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"2417222e-9981-4289-8e46-b6a3da22aaa3","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",}, {"id":"49dd490c-b474-4f73-9464-65e13ec106f9","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"22ca1d06-e7da-4af2-8fd7-67c3a2b40024","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, ],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],},
], ],
"visibleRange": null, "visibleRange": {"x":0.0,"y":0.0,},
"lockOrigin": false, "lockOrigin": false,
"showBackdrop": true, "showBackdrop": true,
"showBackdropImage": false, "showBackdropImage": false,
@ -58,14 +58,14 @@
"yorigin": 10, "yorigin": 10,
"eventToFunction": {}, "eventToFunction": {},
"eventStubScript": null, "eventStubScript": null,
"parent": {"name":"s_noti_icon_save","path":"sprites/s_noti_icon_save/s_noti_icon_save.yy",}, "parent": {"name":"s_noti_icon_file_load","path":"sprites/s_noti_icon_file_load/s_noti_icon_file_load.yy",},
"resourceVersion": "1.3", "resourceVersion": "1.3",
"name": "s_noti_icon_save", "name": "s_noti_icon_file_load",
"tags": [], "tags": [],
"resourceType": "GMSequence", "resourceType": "GMSequence",
}, },
"layers": [ "layers": [
{"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"49f8948b-7323-4e00-acbb-0f86b8b3b3c8","tags":[],"resourceType":"GMImageLayer",}, {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"b09919d3-76f0-47d0-9f21-1330a8233bc5","tags":[],"resourceType":"GMImageLayer",},
], ],
"nineSlice": null, "nineSlice": null,
"parent": { "parent": {
@ -73,7 +73,7 @@
"path": "folders/sprites/panels/noti.yy", "path": "folders/sprites/panels/noti.yy",
}, },
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "s_noti_icon_save", "name": "s_noti_icon_file_load",
"tags": [], "tags": [],
"resourceType": "GMSprite", "resourceType": "GMSprite",
} }

View file

@ -24,12 +24,12 @@
"gridX": 0, "gridX": 0,
"gridY": 0, "gridY": 0,
"frames": [ "frames": [
{"compositeImage":{"FrameId":{"name":"d6ea4330-e9f1-44aa-a1ad-9296fe286780","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ {"compositeImage":{"FrameId":{"name":"83b4d62c-3fd9-4292-ab92-8e5458746328","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[
{"FrameId":{"name":"d6ea4330-e9f1-44aa-a1ad-9296fe286780","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"LayerId":{"name":"50297819-1ba0-43f5-a6ac-e7deb4a12589","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, {"FrameId":{"name":"83b4d62c-3fd9-4292-ab92-8e5458746328","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"LayerId":{"name":"48cc33cc-baa4-46fe-9dda-5e191165b554","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},
],"parent":{"name":"s_noti_icon_file","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"resourceVersion":"1.0","name":"d6ea4330-e9f1-44aa-a1ad-9296fe286780","tags":[],"resourceType":"GMSpriteFrame",}, ],"parent":{"name":"s_noti_icon_file_save","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"resourceVersion":"1.0","name":"83b4d62c-3fd9-4292-ab92-8e5458746328","tags":[],"resourceType":"GMSpriteFrame",},
], ],
"sequence": { "sequence": {
"spriteId": {"name":"s_noti_icon_file","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",}, "spriteId": {"name":"s_noti_icon_file_save","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},
"timeUnits": 1, "timeUnits": 1,
"playback": 1, "playback": 1,
"playbackSpeed": 30.0, "playbackSpeed": 30.0,
@ -41,10 +41,10 @@
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",}, "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
"tracks": [ "tracks": [
{"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[
{"id":"a2c8aab9-043c-47c0-8e1c-f2ab13e70707","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d6ea4330-e9f1-44aa-a1ad-9296fe286780","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",}, {"id":"fd78b19f-074b-4186-884e-4e33d281d7a1","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"83b4d62c-3fd9-4292-ab92-8e5458746328","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, ],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],},
], ],
"visibleRange": null, "visibleRange": {"x":0.0,"y":0.0,},
"lockOrigin": false, "lockOrigin": false,
"showBackdrop": true, "showBackdrop": true,
"showBackdropImage": false, "showBackdropImage": false,
@ -58,14 +58,14 @@
"yorigin": 10, "yorigin": 10,
"eventToFunction": {}, "eventToFunction": {},
"eventStubScript": null, "eventStubScript": null,
"parent": {"name":"s_noti_icon_file","path":"sprites/s_noti_icon_file/s_noti_icon_file.yy",}, "parent": {"name":"s_noti_icon_file_save","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},
"resourceVersion": "1.3", "resourceVersion": "1.3",
"name": "s_noti_icon_file", "name": "s_noti_icon_file_save",
"tags": [], "tags": [],
"resourceType": "GMSequence", "resourceType": "GMSequence",
}, },
"layers": [ "layers": [
{"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"50297819-1ba0-43f5-a6ac-e7deb4a12589","tags":[],"resourceType":"GMImageLayer",}, {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"48cc33cc-baa4-46fe-9dda-5e191165b554","tags":[],"resourceType":"GMImageLayer",},
], ],
"nineSlice": null, "nineSlice": null,
"parent": { "parent": {
@ -73,7 +73,7 @@
"path": "folders/sprites/panels/noti.yy", "path": "folders/sprites/panels/noti.yy",
}, },
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "s_noti_icon_file", "name": "s_noti_icon_file_save",
"tags": [], "tags": [],
"resourceType": "GMSprite", "resourceType": "GMSprite",
} }