mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-25 20:38:07 +01:00
Multiple project support.
This commit is contained in:
parent
d0d39e52e9
commit
22e8d39950
192 changed files with 915 additions and 770 deletions
|
@ -163,6 +163,7 @@
|
||||||
{"name":"gameframe","order":2,"path":"folders/sprites/gameframe.yy",},
|
{"name":"gameframe","order":2,"path":"folders/sprites/gameframe.yy",},
|
||||||
{"name":"misc","order":3,"path":"folders/sprites/misc.yy",},
|
{"name":"misc","order":3,"path":"folders/sprites/misc.yy",},
|
||||||
{"name":"widgets","order":5,"path":"folders/widgets.yy",},
|
{"name":"widgets","order":5,"path":"folders/widgets.yy",},
|
||||||
|
{"name":"project","order":39,"path":"folders/functions/project.yy",},
|
||||||
],
|
],
|
||||||
"ResourceOrderSettings": [
|
"ResourceOrderSettings": [
|
||||||
{"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",},
|
{"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",},
|
||||||
|
@ -726,6 +727,7 @@
|
||||||
{"name":"s_icon_64","order":2,"path":"sprites/s_icon_64/s_icon_64.yy",},
|
{"name":"s_icon_64","order":2,"path":"sprites/s_icon_64/s_icon_64.yy",},
|
||||||
{"name":"panel_graph_export_image","order":4,"path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},
|
{"name":"panel_graph_export_image","order":4,"path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},
|
||||||
{"name":"__bone","order":2,"path":"scripts/__bone/__bone.yy",},
|
{"name":"__bone","order":2,"path":"scripts/__bone/__bone.yy",},
|
||||||
|
{"name":"save_function","order":1,"path":"scripts/save_function/save_function.yy",},
|
||||||
{"name":"s_node_gradient_replace","order":18,"path":"sprites/s_node_gradient_replace/s_node_gradient_replace.yy",},
|
{"name":"s_node_gradient_replace","order":18,"path":"sprites/s_node_gradient_replace/s_node_gradient_replace.yy",},
|
||||||
{"name":"node_perlin_smear","order":9,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",},
|
{"name":"node_perlin_smear","order":9,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",},
|
||||||
{"name":"node_alpha_cutoff","order":10,"path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},
|
{"name":"node_alpha_cutoff","order":10,"path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},
|
||||||
|
@ -793,7 +795,7 @@
|
||||||
{"name":"safe_operation","order":6,"path":"scripts/safe_operation/safe_operation.yy",},
|
{"name":"safe_operation","order":6,"path":"scripts/safe_operation/safe_operation.yy",},
|
||||||
{"name":"s_node_rigid_override","order":9,"path":"sprites/s_node_rigid_override/s_node_rigid_override.yy",},
|
{"name":"s_node_rigid_override","order":9,"path":"sprites/s_node_rigid_override/s_node_rigid_override.yy",},
|
||||||
{"name":"s_node_array_get","order":3,"path":"sprites/s_node_array_get/s_node_array_get.yy",},
|
{"name":"s_node_array_get","order":3,"path":"sprites/s_node_array_get/s_node_array_get.yy",},
|
||||||
{"name":"o_dialog_load","order":12,"path":"objects/o_dialog_load/o_dialog_load.yy",},
|
{"name":"o_dialog_save","order":12,"path":"objects/o_dialog_save/o_dialog_save.yy",},
|
||||||
{"name":"s_node_BW","order":13,"path":"sprites/s_node_BW/s_node_BW.yy",},
|
{"name":"s_node_BW","order":13,"path":"sprites/s_node_BW/s_node_BW.yy",},
|
||||||
{"name":"s_node_strandSim_collide","order":7,"path":"sprites/s_node_strandSim_collide/s_node_strandSim_collide.yy",},
|
{"name":"s_node_strandSim_collide","order":7,"path":"sprites/s_node_strandSim_collide/s_node_strandSim_collide.yy",},
|
||||||
{"name":"sh_fd_turbulence","order":22,"path":"shaders/sh_fd_turbulence/sh_fd_turbulence.yy",},
|
{"name":"sh_fd_turbulence","order":22,"path":"shaders/sh_fd_turbulence/sh_fd_turbulence.yy",},
|
||||||
|
@ -1211,7 +1213,6 @@
|
||||||
{"name":"__node_value_processor","order":7,"path":"scripts/__node_value_processor/__node_value_processor.yy",},
|
{"name":"__node_value_processor","order":7,"path":"scripts/__node_value_processor/__node_value_processor.yy",},
|
||||||
{"name":"s_node_group_input","order":16,"path":"sprites/s_node_group_input/s_node_group_input.yy",},
|
{"name":"s_node_group_input","order":16,"path":"sprites/s_node_group_input/s_node_group_input.yy",},
|
||||||
{"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",},
|
{"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",},
|
||||||
{"name":"load_function","order":2,"path":"scripts/load_function/load_function.yy",},
|
|
||||||
{"name":"draw_fit","order":12,"path":"scripts/draw_fit/draw_fit.yy",},
|
{"name":"draw_fit","order":12,"path":"scripts/draw_fit/draw_fit.yy",},
|
||||||
{"name":"s_node_morph_surface","order":56,"path":"sprites/s_node_morph_surface/s_node_morph_surface.yy",},
|
{"name":"s_node_morph_surface","order":56,"path":"sprites/s_node_morph_surface/s_node_morph_surface.yy",},
|
||||||
{"name":"fd_rectangle_get_velocity_dissipation_type","order":20,"path":"scripts/fd_rectangle_get_velocity_dissipation_type/fd_rectangle_get_velocity_dissipation_type.yy",},
|
{"name":"fd_rectangle_get_velocity_dissipation_type","order":20,"path":"scripts/fd_rectangle_get_velocity_dissipation_type/fd_rectangle_get_velocity_dissipation_type.yy",},
|
||||||
|
@ -1255,6 +1256,7 @@
|
||||||
{"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",},
|
{"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",},
|
||||||
{"name":"s_noti_icon_error","order":5,"path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},
|
{"name":"s_noti_icon_error","order":5,"path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},
|
||||||
{"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",},
|
{"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",},
|
||||||
|
{"name":"project_function","order":2,"path":"scripts/project_function/project_function.yy",},
|
||||||
{"name":"s_node_zoom","order":54,"path":"sprites/s_node_zoom/s_node_zoom.yy",},
|
{"name":"s_node_zoom","order":54,"path":"sprites/s_node_zoom/s_node_zoom.yy",},
|
||||||
{"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",},
|
{"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",},
|
||||||
{"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",},
|
{"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",},
|
||||||
|
|
|
@ -199,6 +199,7 @@
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Steamworks","folderPath":"folders/Steamworks.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Steamworks","folderPath":"folders/Steamworks.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"UGC","folderPath":"folders/Steamworks/UGC.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"UGC","folderPath":"folders/Steamworks/UGC.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy",},
|
||||||
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"project","folderPath":"folders/functions/project.yy",},
|
||||||
],
|
],
|
||||||
"IncludedFiles": [
|
"IncludedFiles": [
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
|
||||||
|
@ -298,6 +299,7 @@
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_reset_when_preview_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_reset_when_preview_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_revert.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_revert.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save_auto.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save_auto.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_spalsh_show_on_start_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_spalsh_show_on_start_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
@ -356,6 +358,7 @@
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_steam_creator.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_steam_creator.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_steam.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_steam.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_strandSim.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_strandSim.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_tab_exit.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_bullet_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_bullet_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_clock.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_clock.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_graph.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_graph.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
@ -1345,7 +1348,7 @@
|
||||||
{"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},},
|
{"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},},
|
||||||
{"id":{"name":"s_node_rigid_override","path":"sprites/s_node_rigid_override/s_node_rigid_override.yy",},},
|
{"id":{"name":"s_node_rigid_override","path":"sprites/s_node_rigid_override/s_node_rigid_override.yy",},},
|
||||||
{"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},},
|
{"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},},
|
||||||
{"id":{"name":"o_dialog_load","path":"objects/o_dialog_load/o_dialog_load.yy",},},
|
{"id":{"name":"o_dialog_save","path":"objects/o_dialog_save/o_dialog_save.yy",},},
|
||||||
{"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},},
|
{"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},},
|
||||||
{"id":{"name":"s_node_strandSim_collide","path":"sprites/s_node_strandSim_collide/s_node_strandSim_collide.yy",},},
|
{"id":{"name":"s_node_strandSim_collide","path":"sprites/s_node_strandSim_collide/s_node_strandSim_collide.yy",},},
|
||||||
{"id":{"name":"sh_fd_turbulence","path":"shaders/sh_fd_turbulence/sh_fd_turbulence.yy",},},
|
{"id":{"name":"sh_fd_turbulence","path":"shaders/sh_fd_turbulence/sh_fd_turbulence.yy",},},
|
||||||
|
@ -1881,6 +1884,7 @@
|
||||||
{"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},},
|
{"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},},
|
||||||
{"id":{"name":"s_noti_icon_error","path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},},
|
{"id":{"name":"s_noti_icon_error","path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},},
|
||||||
{"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},},
|
{"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},},
|
||||||
|
{"id":{"name":"project_function","path":"scripts/project_function/project_function.yy",},},
|
||||||
{"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},},
|
{"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},},
|
||||||
{"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},},
|
{"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},},
|
||||||
{"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},},
|
{"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},},
|
||||||
|
|
|
@ -310,7 +310,7 @@
|
||||||
"dialog_group_order_add": "Add separator",
|
"dialog_group_order_add": "Add separator",
|
||||||
|
|
||||||
"dialog_exit_title": "Project modified",
|
"dialog_exit_title": "Project modified",
|
||||||
"dialog_exit_content": "Save progress before exit?",
|
"dialog_exit_content": "Save progress before close?",
|
||||||
|
|
||||||
"contest_open_discord": "Open in Discord",
|
"contest_open_discord": "Open in Discord",
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
/// @description
|
/// @description
|
||||||
#region deserialize
|
#region deserialize
|
||||||
if(!struct_has(LOAD_ADDON, name)) exit;
|
if(!struct_has(PROJECT.addons, name)) exit;
|
||||||
var _mp = json_parse(LOAD_ADDON[$ name]);
|
var _mp = json_parse(PROJECT.addons[$ name]);
|
||||||
|
|
||||||
lua_call(thread, "deserialize", _mp);
|
lua_call(thread, "deserialize", _mp);
|
||||||
#endregion
|
#endregion
|
|
@ -8,18 +8,18 @@ event_inherited();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region scaler
|
#region scaler
|
||||||
scale_to = ANIMATOR.frames_total;
|
scale_to = PROJECT.animator.frames_total;
|
||||||
tb_scale_frame = new textBox(TEXTBOX_INPUT.number, function(to) {
|
tb_scale_frame = new textBox(TEXTBOX_INPUT.number, function(to) {
|
||||||
to = toNumber(to);
|
to = toNumber(to);
|
||||||
scale_to = to;
|
scale_to = to;
|
||||||
});
|
});
|
||||||
|
|
||||||
b_apply = button(function() {
|
b_apply = button(function() {
|
||||||
var fac = scale_to / ANIMATOR.frames_total;
|
var fac = scale_to / PROJECT.animator.frames_total;
|
||||||
var key = ds_map_find_first(NODE_MAP);
|
var key = ds_map_find_first(PROJECT.nodeMap);
|
||||||
repeat(ds_map_size(NODE_MAP)) {
|
repeat(ds_map_size(PROJECT.nodeMap)) {
|
||||||
var n = NODE_MAP[? key];
|
var n = PROJECT.nodeMap[? key];
|
||||||
key = ds_map_find_next(NODE_MAP, key);
|
key = ds_map_find_next(PROJECT.nodeMap, key);
|
||||||
if(!n || !n.active) continue;
|
if(!n || !n.active) continue;
|
||||||
|
|
||||||
for(var i = 0; i < ds_list_size(n.inputs); i++) {
|
for(var i = 0; i < ds_list_size(n.inputs); i++) {
|
||||||
|
@ -31,7 +31,7 @@ event_inherited();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ANIMATOR.frames_total = scale_to;
|
PROJECT.animator.frames_total = scale_to;
|
||||||
instance_destroy();
|
instance_destroy();
|
||||||
}).setIcon(THEME.accept, 0, COLORS._main_icon_dark);
|
}).setIcon(THEME.accept, 0, COLORS._main_icon_dark);
|
||||||
#endregion
|
#endregion
|
|
@ -22,7 +22,7 @@ if !ready exit;
|
||||||
|
|
||||||
var sx1 = tb_x + ui(96);
|
var sx1 = tb_x + ui(96);
|
||||||
draw_set_text(f_p1, fa_right, fa_top, COLORS._main_text_sub);
|
draw_set_text(f_p1, fa_right, fa_top, COLORS._main_text_sub);
|
||||||
draw_text(sx1, yy + ui(38), __txtx("anim_scale_scale_factor", "Scaling factor: ") + string(scale_to / ANIMATOR.frames_total));
|
draw_text(sx1, yy + ui(38), __txtx("anim_scale_scale_factor", "Scaling factor: ") + string(scale_to / PROJECT.animator.frames_total));
|
||||||
|
|
||||||
var bx = sx1 + ui(16);
|
var bx = sx1 + ui(16);
|
||||||
var by = yy;
|
var by = yy;
|
||||||
|
|
|
@ -12,14 +12,14 @@ event_inherited();
|
||||||
|
|
||||||
#region data
|
#region data
|
||||||
tb_length = new textBox(TEXTBOX_INPUT.number, function(str) {
|
tb_length = new textBox(TEXTBOX_INPUT.number, function(str) {
|
||||||
ANIMATOR.frames_total = real(str);
|
PROJECT.animator.frames_total = real(str);
|
||||||
})
|
})
|
||||||
|
|
||||||
tb_framerate = new textBox(TEXTBOX_INPUT.number, function(str) {
|
tb_framerate = new textBox(TEXTBOX_INPUT.number, function(str) {
|
||||||
ANIMATOR.framerate = real(str);
|
PROJECT.animator.framerate = real(str);
|
||||||
})
|
})
|
||||||
|
|
||||||
eb_playback = buttonGroup([__txt("Loop"), __txt("Stop")], function(b) {
|
eb_playback = buttonGroup([__txt("Loop"), __txt("Stop")], function(b) {
|
||||||
ANIMATOR.playback = b;
|
PROJECT.animator.playback = b;
|
||||||
});
|
});
|
||||||
#endregion
|
#endregion
|
|
@ -17,19 +17,19 @@ if !ready exit;
|
||||||
tb_length.register();
|
tb_length.register();
|
||||||
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_length", "Animation length"));
|
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_length", "Animation length"));
|
||||||
tb_length.draw(dialog_x + dialog_w - ui(120), yy, ui(96), TEXTBOX_HEIGHT, ANIMATOR.frames_total, mouse_ui);
|
tb_length.draw(dialog_x + dialog_w - ui(120), yy, ui(96), TEXTBOX_HEIGHT, PROJECT.animator.frames_total, mouse_ui);
|
||||||
|
|
||||||
yy += ui(44);
|
yy += ui(44);
|
||||||
tb_framerate.setFocusHover(sFOCUS, sHOVER);
|
tb_framerate.setFocusHover(sFOCUS, sHOVER);
|
||||||
tb_framerate.register();
|
tb_framerate.register();
|
||||||
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_frame_rate", "Preview frame rate"));
|
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_frame_rate", "Preview frame rate"));
|
||||||
tb_framerate.draw(dialog_x + dialog_w - ui(120), yy, ui(96), TEXTBOX_HEIGHT, ANIMATOR.framerate, mouse_ui);
|
tb_framerate.draw(dialog_x + dialog_w - ui(120), yy, ui(96), TEXTBOX_HEIGHT, PROJECT.animator.framerate, mouse_ui);
|
||||||
|
|
||||||
yy += ui(44);
|
yy += ui(44);
|
||||||
eb_playback.setFocusHover(sFOCUS, sHOVER);
|
eb_playback.setFocusHover(sFOCUS, sHOVER);
|
||||||
eb_playback.register();
|
eb_playback.register();
|
||||||
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_on_end", "On end"));
|
draw_text(dialog_x + ui(32), yy + ui(17), __txtx("anim_on_end", "On end"));
|
||||||
eb_playback.draw(dialog_x + dialog_w - ui(152), yy, ui(128), TEXTBOX_HEIGHT, ANIMATOR.playback, mouse_ui);
|
eb_playback.draw(dialog_x + dialog_w - ui(152), yy, ui(128), TEXTBOX_HEIGHT, PROJECT.animator.playback, mouse_ui);
|
||||||
#endregion
|
#endregion
|
|
@ -2,6 +2,7 @@
|
||||||
event_inherited();
|
event_inherited();
|
||||||
|
|
||||||
#region data
|
#region data
|
||||||
dialog_w = ui(400);
|
project = PROJECT;
|
||||||
|
dialog_w = ui(440);
|
||||||
dialog_h = ui(140);
|
dialog_h = ui(140);
|
||||||
#endregion
|
#endregion
|
|
@ -1,10 +1,20 @@
|
||||||
/// @description init
|
/// @description init
|
||||||
if !ready exit;
|
if !ready exit;
|
||||||
|
|
||||||
draw_set_color(c_black);
|
#region dim BG
|
||||||
draw_set_alpha(0.5);
|
var lowest = true;
|
||||||
draw_rectangle(0, 0, WIN_W, WIN_H, false);
|
with(o_dialog_exit) {
|
||||||
draw_set_alpha(1);
|
if(id == other.id) continue;
|
||||||
|
if(depth > other.depth) lowest = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lowest) {
|
||||||
|
draw_set_color(c_black);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
draw_rectangle(0, 0, WIN_W, WIN_H, false);
|
||||||
|
draw_set_alpha(1);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region base UI
|
#region base UI
|
||||||
draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h);
|
draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h);
|
||||||
|
@ -14,12 +24,14 @@ draw_set_alpha(1);
|
||||||
|
|
||||||
#region text
|
#region text
|
||||||
var py = dialog_y + ui(16);
|
var py = dialog_y + ui(16);
|
||||||
|
var txt = $"Project modified";
|
||||||
draw_set_text(f_h5, fa_left, fa_top, COLORS._main_text);
|
draw_set_text(f_h5, fa_left, fa_top, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(24), py, __txtx("dialog_exit_title", "Project modified"));
|
draw_text(dialog_x + ui(24), py, txt);
|
||||||
py += line_get_height(, 4);
|
py += line_get_height(, 4);
|
||||||
|
|
||||||
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
|
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(24), py, __txtx("dialog_exit_content", "Save progress before exit?"));
|
var txt = $"Save project '{filename_name(project.path)}' before exit?";
|
||||||
|
draw_text(dialog_x + ui(24), py, txt);
|
||||||
|
|
||||||
var bw = ui(96), bh = TEXTBOX_HEIGHT;
|
var bw = ui(96), bh = TEXTBOX_HEIGHT;
|
||||||
var bx1 = dialog_x + dialog_w - ui(16);
|
var bx1 = dialog_x + dialog_w - ui(16);
|
||||||
|
@ -38,14 +50,19 @@ draw_set_alpha(1);
|
||||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txtx("dont_save", "Don't save"));
|
draw_text(bx0 + bw / 2, by0 + bh / 2, __txtx("dont_save", "Don't save"));
|
||||||
if(b == 2) {
|
if(b == 2) {
|
||||||
PREF_SAVE();
|
PREF_SAVE();
|
||||||
|
|
||||||
|
if(instance_number(o_dialog_exit) == 1)
|
||||||
game_end();
|
game_end();
|
||||||
|
instance_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
bx0 -= bw + ui(12);
|
bx0 -= bw + ui(12);
|
||||||
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
||||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
||||||
if(b == 2 && SAVE()) {
|
if(b == 2 && SAVE(project)) {
|
||||||
PREF_SAVE();
|
PREF_SAVE();
|
||||||
|
if(instance_number(o_dialog_exit) == 1)
|
||||||
game_end();
|
game_end();
|
||||||
|
instance_destroy();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
|
@ -2,10 +2,7 @@
|
||||||
event_inherited();
|
event_inherited();
|
||||||
|
|
||||||
#region data
|
#region data
|
||||||
newFile = false;
|
project = noone;
|
||||||
path = "";
|
|
||||||
readonly = false;
|
|
||||||
safe_mode = false;
|
|
||||||
|
|
||||||
dialog_w = ui(400);
|
dialog_w = ui(400);
|
||||||
dialog_h = ui(140);
|
dialog_h = ui(140);
|
|
@ -19,7 +19,7 @@ draw_set_alpha(1);
|
||||||
py += line_get_height(, 4);
|
py += line_get_height(, 4);
|
||||||
|
|
||||||
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
|
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
|
||||||
draw_text(dialog_x + ui(24), py, __txtx("dialog_exit_content", "Save progress before exit?"));
|
draw_text(dialog_x + ui(24), py, __txtx("dialog_exit_content", "Save progress before close?"));
|
||||||
|
|
||||||
var bw = ui(96), bh = TEXTBOX_HEIGHT;
|
var bw = ui(96), bh = TEXTBOX_HEIGHT;
|
||||||
var bx1 = dialog_x + dialog_w - ui(16);
|
var bx1 = dialog_x + dialog_w - ui(16);
|
||||||
|
@ -37,8 +37,7 @@ draw_set_alpha(1);
|
||||||
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
||||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txtx("dont_save", "Don't save"));
|
draw_text(bx0 + bw / 2, by0 + bh / 2, __txtx("dont_save", "Don't save"));
|
||||||
if(b == 2) {
|
if(b == 2) {
|
||||||
if(newFile) __NEW();
|
closeProject(project);
|
||||||
else __LOAD_PATH(path, readonly, safe_mode);
|
|
||||||
instance_destroy();
|
instance_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,10 +45,8 @@ draw_set_alpha(1);
|
||||||
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
||||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
||||||
if(b == 2) {
|
if(b == 2) {
|
||||||
SAVE();
|
SAVE(project);
|
||||||
|
closeProject(project);
|
||||||
if(newFile) __NEW();
|
|
||||||
else __LOAD_PATH(path, readonly, safe_mode);
|
|
||||||
instance_destroy();
|
instance_destroy();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"resourceType": "GMObject",
|
"resourceType": "GMObject",
|
||||||
"resourceVersion": "1.0",
|
"resourceVersion": "1.0",
|
||||||
"name": "o_dialog_load",
|
"name": "o_dialog_save",
|
||||||
"eventList": [
|
"eventList": [
|
||||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,},
|
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,},
|
||||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,},
|
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,},
|
|
@ -14,12 +14,12 @@ event_inherited();
|
||||||
tunnel_select = noone;
|
tunnel_select = noone;
|
||||||
tunnel_hover = noone;
|
tunnel_hover = noone;
|
||||||
|
|
||||||
var amo = ds_map_size(NODE_MAP);
|
var amo = ds_map_size(PROJECT.nodeMap);
|
||||||
var k = ds_map_find_first(NODE_MAP);
|
var k = ds_map_find_first(PROJECT.nodeMap);
|
||||||
|
|
||||||
repeat(amo) {
|
repeat(amo) {
|
||||||
var node = NODE_MAP[? k];
|
var node = PROJECT.nodeMap[? k];
|
||||||
k = ds_map_find_next(NODE_MAP, k);
|
k = ds_map_find_next(PROJECT.nodeMap, k);
|
||||||
|
|
||||||
if(instanceof(node) == "Node_Tunnel_In")
|
if(instanceof(node) == "Node_Tunnel_In")
|
||||||
array_push(tunnel_ins, node);
|
array_push(tunnel_ins, node);
|
||||||
|
@ -112,10 +112,10 @@ event_inherited();
|
||||||
k = ds_map_find_next(TUNNELS_OUT, k);
|
k = ds_map_find_next(TUNNELS_OUT, k);
|
||||||
|
|
||||||
var out = TUNNELS_OUT[? _k];
|
var out = TUNNELS_OUT[? _k];
|
||||||
if(out != key || !ds_map_exists(NODE_MAP, _k))
|
if(out != key || !ds_map_exists(PROJECT.nodeMap, _k))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var _node = NODE_MAP[? _k];
|
var _node = PROJECT.nodeMap[? _k];
|
||||||
|
|
||||||
draw_sprite_ui(THEME.tunnel, 0, ui(32), _y + ui(10), 0.75, 0.75, 0, COLORS._main_icon);
|
draw_sprite_ui(THEME.tunnel, 0, ui(32), _y + ui(10), 0.75, 0.75, 0, COLORS._main_icon);
|
||||||
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub);
|
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub);
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
if(!DEMO) {
|
if(!DEMO) {
|
||||||
addHotkey("", "Save", "S", MOD_KEY.ctrl, SAVE );
|
addHotkey("", "Save", "S", MOD_KEY.ctrl, SAVE );
|
||||||
addHotkey("", "Save as", "S", MOD_KEY.ctrl | MOD_KEY.shift, SAVE_AS );
|
addHotkey("", "Save as", "S", MOD_KEY.ctrl | MOD_KEY.shift, SAVE_AS );
|
||||||
|
addHotkey("", "Save all", "S", MOD_KEY.ctrl | MOD_KEY.alt, SAVE_ALL );
|
||||||
addHotkey("", "Open", "O", MOD_KEY.ctrl, function() { LOAD(); });
|
addHotkey("", "Open", "O", MOD_KEY.ctrl, function() { LOAD(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +81,9 @@
|
||||||
UPDATE |= RENDER_TYPE.full;
|
UPDATE |= RENDER_TYPE.full;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addHotkey("", "Close file", "Q", MOD_KEY.ctrl, function() { PANEL_GRAPH.close(); });
|
||||||
|
addHotkey("", "Close program", vk_f4, MOD_KEY.alt, window_close);
|
||||||
|
|
||||||
globalvar HOTKEY_MOD, HOTKEY_BLOCK;
|
globalvar HOTKEY_MOD, HOTKEY_BLOCK;
|
||||||
HOTKEY_MOD = 0;
|
HOTKEY_MOD = 0;
|
||||||
HOTKEY_BLOCK = false;
|
HOTKEY_BLOCK = false;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/// @description init
|
/// @description init
|
||||||
MODIFIED = false;
|
PROJECT.modified = false;
|
||||||
PREF_LOAD();
|
PREF_LOAD();
|
||||||
|
|
||||||
#region reset data
|
#region reset data
|
||||||
|
|
|
@ -3,30 +3,30 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
|
||||||
|
|
||||||
//print("===== Step start =====");
|
//print("===== Step start =====");
|
||||||
#region animation
|
#region animation
|
||||||
if(ANIMATOR.is_playing && ANIMATOR.play_freeze == 0) {
|
if(PROJECT.animator.is_playing && PROJECT.animator.play_freeze == 0) {
|
||||||
ANIMATOR.time_since_last_frame += ANIMATOR.framerate * (delta_time / 1000000);
|
PROJECT.animator.time_since_last_frame += PROJECT.animator.framerate * (delta_time / 1000000);
|
||||||
|
|
||||||
if(ANIMATOR.time_since_last_frame >= 1)
|
if(PROJECT.animator.time_since_last_frame >= 1)
|
||||||
ANIMATOR.setFrame(ANIMATOR.real_frame + 1);
|
PROJECT.animator.setFrame(PROJECT.animator.real_frame + 1);
|
||||||
} else {
|
} else {
|
||||||
ANIMATOR.frame_progress = false;
|
PROJECT.animator.frame_progress = false;
|
||||||
ANIMATOR.setFrame(ANIMATOR.real_frame);
|
PROJECT.animator.setFrame(PROJECT.animator.real_frame);
|
||||||
ANIMATOR.time_since_last_frame = 0;
|
PROJECT.animator.time_since_last_frame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ANIMATOR.play_freeze = max(0, ANIMATOR.play_freeze - 1);
|
PROJECT.animator.play_freeze = max(0, PROJECT.animator.play_freeze - 1);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region step
|
#region step
|
||||||
GLOBAL_NODE.step();
|
PROJECT.globalNode.step();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(PANEL_MAIN != 0)
|
if(PANEL_MAIN != 0)
|
||||||
PANEL_MAIN.step();
|
PANEL_MAIN.step();
|
||||||
|
|
||||||
for(var i = 0; i < ds_list_size(NODES); i++) {
|
for(var i = 0; i < ds_list_size(PROJECT.nodes); i++) {
|
||||||
NODES[| i].triggerCheck();
|
PROJECT.nodes[| i].triggerCheck();
|
||||||
NODES[| i].step();
|
PROJECT.nodes[| i].step();
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
noti_warning("Step error: " + exception_print(e));
|
noti_warning("Step error: " + exception_print(e));
|
||||||
|
@ -110,13 +110,13 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region window
|
#region window
|
||||||
if(_modified != MODIFIED) {
|
if(_modified != PROJECT.modified) {
|
||||||
_modified = MODIFIED;
|
_modified = PROJECT.modified;
|
||||||
|
|
||||||
var cap = "";
|
var cap = "";
|
||||||
if(SAFE_MODE) cap += "[SAFE MODE] ";
|
if(SAFE_MODE) cap += "[SAFE MODE] ";
|
||||||
if(READONLY) cap += "[READ ONLY] ";
|
if(PROJECT.readonly) cap += "[READ ONLY] ";
|
||||||
cap += CURRENT_PATH + (MODIFIED? "*" : "") + " - Pixel Composer";
|
cap += PROJECT.path + (PROJECT.modified? "*" : "") + " - Pixel Composer";
|
||||||
|
|
||||||
window_set_caption(cap);
|
window_set_caption(cap);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,13 +51,13 @@ _HOVERING_ELEMENT = noone;
|
||||||
#region auto save
|
#region auto save
|
||||||
AUTO_SAVE_TIMER += delta_time / 1_000_000;
|
AUTO_SAVE_TIMER += delta_time / 1_000_000;
|
||||||
|
|
||||||
if(MODIFIED && PREF_MAP[? "auto_save_time"] > 0 && AUTO_SAVE_TIMER > PREF_MAP[? "auto_save_time"]) {
|
if(PROJECT.modified && PREF_MAP[? "auto_save_time"] > 0 && AUTO_SAVE_TIMER > PREF_MAP[? "auto_save_time"]) {
|
||||||
AUTO_SAVE_TIMER = 0;
|
AUTO_SAVE_TIMER = 0;
|
||||||
var loc = DIRECTORY + "Autosave/";
|
var loc = DIRECTORY + "Autosave/";
|
||||||
if(!directory_exists(loc))
|
if(!directory_exists(loc))
|
||||||
directory_create(loc);
|
directory_create(loc);
|
||||||
|
|
||||||
var fname = string_replace(filename_name(CURRENT_PATH), filename_ext(CURRENT_PATH), "") +
|
var fname = string_replace(filename_name(PROJECT.path), filename_ext(PROJECT.path), "") +
|
||||||
"_autosave" + string(current_year) + "-" +
|
"_autosave" + string(current_year) + "-" +
|
||||||
string_lead_zero(current_month, 2) + "-" +
|
string_lead_zero(current_month, 2) + "-" +
|
||||||
string_lead_zero(current_day, 2) + "T" +
|
string_lead_zero(current_day, 2) + "T" +
|
||||||
|
@ -65,7 +65,7 @@ _HOVERING_ELEMENT = noone;
|
||||||
string_lead_zero(current_minute, 2) +
|
string_lead_zero(current_minute, 2) +
|
||||||
string_lead_zero(current_second, 2) + ".pxc";
|
string_lead_zero(current_second, 2) + ".pxc";
|
||||||
|
|
||||||
try { SAVE_AT(loc + fname, "Autosaved "); }
|
try { SAVE_AT(PROJECT, loc + fname, "Autosaved "); }
|
||||||
catch(e) { print(exception_print(e)); }
|
catch(e) { print(exception_print(e)); }
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -74,20 +74,20 @@ _HOVERING_ELEMENT = noone;
|
||||||
//physics_pause_enable(true);
|
//physics_pause_enable(true);
|
||||||
DEF_SURFACE_RESET();
|
DEF_SURFACE_RESET();
|
||||||
|
|
||||||
var _k = ds_map_find_first(NODE_MAP);
|
var _k = ds_map_find_first(PROJECT.nodeMap);
|
||||||
var _a = ds_map_size(NODE_MAP);
|
var _a = ds_map_size(PROJECT.nodeMap);
|
||||||
repeat(_a) {
|
repeat(_a) {
|
||||||
NODE_MAP[? _k].stepBegin();
|
PROJECT.nodeMap[? _k].stepBegin();
|
||||||
_k = ds_map_find_next(NODE_MAP, _k);
|
_k = ds_map_find_next(PROJECT.nodeMap, _k);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ANIMATOR.is_playing || ANIMATOR.rendering) {
|
if(PROJECT.animator.is_playing || PROJECT.animator.rendering) {
|
||||||
if(ANIMATOR.frame_progress) {
|
if(PROJECT.animator.frame_progress) {
|
||||||
__addon_preAnim();
|
__addon_preAnim();
|
||||||
Render();
|
Render();
|
||||||
__addon_postAnim();
|
__addon_postAnim();
|
||||||
}
|
}
|
||||||
ANIMATOR.frame_progress = false;
|
PROJECT.animator.frame_progress = false;
|
||||||
} else {
|
} else {
|
||||||
if(UPDATE & RENDER_TYPE.full)
|
if(UPDATE & RENDER_TYPE.full)
|
||||||
Render();
|
Render();
|
||||||
|
|
|
@ -313,9 +313,9 @@ Project.fps = 0;
|
||||||
|
|
||||||
function lua_projectData(state) {
|
function lua_projectData(state) {
|
||||||
lua_add_code(state, @"
|
lua_add_code(state, @"
|
||||||
Project.frame = " + string(ANIMATOR.current_frame) + @";
|
Project.frame = " + string(PROJECT.animator.current_frame) + @";
|
||||||
Project.frameTotal = " + string(ANIMATOR.frames_total) + @";
|
Project.frameTotal = " + string(PROJECT.animator.frames_total) + @";
|
||||||
Project.fps = " + string(ANIMATOR.framerate) + @";
|
Project.fps = " + string(PROJECT.animator.framerate) + @";
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ function __Node_Base(x, y) constructor {
|
||||||
anim_priority = -999;
|
anim_priority = -999;
|
||||||
|
|
||||||
static step = function() {}
|
static step = function() {}
|
||||||
static update = function(frame = ANIMATOR.current_frame) {}
|
static update = function(frame = PROJECT.animator.current_frame) {}
|
||||||
|
|
||||||
static valueUpdate = function(index) {}
|
static valueUpdate = function(index) {}
|
||||||
static triggerRender = function() {}
|
static triggerRender = function() {}
|
||||||
|
|
|
@ -27,7 +27,7 @@ function Node_Iterator(_x, _y, _group = noone) : Node_Collection(_x, _y, _group)
|
||||||
|
|
||||||
static doInitLoop = function() {}
|
static doInitLoop = function() {}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) { initLoop(); }
|
static update = function(frame = PROJECT.animator.current_frame) { initLoop(); }
|
||||||
|
|
||||||
static outputNextNode = function() {
|
static outputNextNode = function() {
|
||||||
LOG_BLOCK_START();
|
LOG_BLOCK_START();
|
||||||
|
|
|
@ -128,7 +128,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
for(var i = 0; i < attributes.part_amount; i++)
|
for(var i = 0; i < attributes.part_amount; i++)
|
||||||
parts[i] = new __part(self);
|
parts[i] = new __part(self);
|
||||||
|
|
||||||
static spawn = function(_time = ANIMATOR.current_frame, _pos = -1) {
|
static spawn = function(_time = PROJECT.animator.current_frame, _pos = -1) {
|
||||||
var _inSurf = current_data[0];
|
var _inSurf = current_data[0];
|
||||||
|
|
||||||
if(_inSurf == 0) {
|
if(_inSurf == 0) {
|
||||||
|
@ -295,7 +295,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
var _loop = inputs[| 21].getValue();
|
var _loop = inputs[| 21].getValue();
|
||||||
if(!_loop) return;
|
if(!_loop) return;
|
||||||
|
|
||||||
for(var i = 0; i < ANIMATOR.frames_total; i++) {
|
for(var i = 0; i < PROJECT.animator.frames_total; i++) {
|
||||||
runVFX(i, false);
|
runVFX(i, false);
|
||||||
updateParticleForward();
|
updateParticleForward();
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static runVFX = function(_time = ANIMATOR.current_frame, _render = true) {
|
static runVFX = function(_time = PROJECT.animator.current_frame, _render = true) {
|
||||||
var _spawn_delay = inputs[| 1].getValue(_time);
|
var _spawn_delay = inputs[| 1].getValue(_time);
|
||||||
var _spawn_type = inputs[| 16].getValue(_time);
|
var _spawn_type = inputs[| 16].getValue(_time);
|
||||||
var _spawn_active = inputs[| 27].getValue(_time);
|
var _spawn_active = inputs[| 27].getValue(_time);
|
||||||
|
@ -357,7 +357,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
|
|
||||||
static onDrawOverlay = -1;
|
static onDrawOverlay = -1;
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _inSurf = inputs[| 0].getValue();
|
var _inSurf = inputs[| 0].getValue();
|
||||||
var _dist = inputs[| 4].getValue();
|
var _dist = inputs[| 4].getValue();
|
||||||
var _scatt = inputs[| 24].getValue();
|
var _scatt = inputs[| 24].getValue();
|
||||||
|
|
|
@ -2,7 +2,7 @@ function Node_Fluid(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
color = COLORS.node_blend_fluid;
|
color = COLORS.node_blend_fluid;
|
||||||
icon = THEME.fluid_sim;
|
icon = THEME.fluid_sim;
|
||||||
|
|
||||||
static updateForward = function(frame = ANIMATOR.current_frame, _update = true) {
|
static updateForward = function(frame = PROJECT.animator.current_frame, _update = true) {
|
||||||
if(_update) update(frame);
|
if(_update) update(frame);
|
||||||
print("Update " + string(frame) + ": " + name);
|
print("Update " + string(frame) + ": " + name);
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ function _Node_Strand_Affector(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
||||||
active &= inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
active &= inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _typ = inputs[| 1].getValue();
|
var _typ = inputs[| 1].getValue();
|
||||||
inputs[| 4].setVisible(_typ == 1);
|
inputs[| 4].setVisible(_typ == 1);
|
||||||
|
|
||||||
|
|
|
@ -785,12 +785,12 @@
|
||||||
[ "noti_warning", noti_warning ],
|
[ "noti_warning", noti_warning ],
|
||||||
|
|
||||||
//animation
|
//animation
|
||||||
[ "animation_playing", function() { return ANIMATOR.is_playing? lua_true : lua_false; }],
|
[ "animation_playing", function() { return PROJECT.animator.is_playing? lua_true : lua_false; }],
|
||||||
[ "animation_play", function() { ANIMATOR.resume(); }],
|
[ "animation_play", function() { PROJECT.animator.resume(); }],
|
||||||
[ "animation_pause", function() { ANIMATOR.pause(); }],
|
[ "animation_pause", function() { PROJECT.animator.pause(); }],
|
||||||
[ "animation_stop", function() { ANIMATOR.stop(); }],
|
[ "animation_stop", function() { PROJECT.animator.stop(); }],
|
||||||
[ "animation_set_frame", function(frame) { ANIMATOR.setFrame(frame); }],
|
[ "animation_set_frame", function(frame) { PROJECT.animator.setFrame(frame); }],
|
||||||
[ "animation_render", function() { ANIMATOR.render(); }],
|
[ "animation_render", function() { PROJECT.animator.render(); }],
|
||||||
|
|
||||||
//panel
|
//panel
|
||||||
[ "set_tooltip", function(txt) { TOOLTIP = txt; }],
|
[ "set_tooltip", function(txt) { TOOLTIP = txt; }],
|
||||||
|
@ -817,29 +817,29 @@
|
||||||
|
|
||||||
//nodes
|
//nodes
|
||||||
[ "node_get", function(nodeId) {
|
[ "node_get", function(nodeId) {
|
||||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||||
return NODE_NAME_MAP[? nodeId];
|
return PROJECT.nodeNameMap[? nodeId];
|
||||||
}],
|
}],
|
||||||
|
|
||||||
[ "node_get_input_value", function(nodeId, input) {
|
[ "node_get_input_value", function(nodeId, input) {
|
||||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||||
var node = NODE_NAME_MAP[? nodeId];
|
var node = PROJECT.nodeNameMap[? nodeId];
|
||||||
|
|
||||||
if(!ds_map_exists(node.inputMap, input)) return 0;
|
if(!ds_map_exists(node.inputMap, input)) return 0;
|
||||||
return node.inputMap[? input].getValue();
|
return node.inputMap[? input].getValue();
|
||||||
}],
|
}],
|
||||||
|
|
||||||
[ "node_set_input_value", function(nodeId, input, value) {
|
[ "node_set_input_value", function(nodeId, input, value) {
|
||||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||||
var node = NODE_NAME_MAP[? nodeId];
|
var node = PROJECT.nodeNameMap[? nodeId];
|
||||||
|
|
||||||
if(!ds_map_exists(node.inputMap, input)) return 0;
|
if(!ds_map_exists(node.inputMap, input)) return 0;
|
||||||
return node.inputMap[? input].setValue(value);
|
return node.inputMap[? input].setValue(value);
|
||||||
}],
|
}],
|
||||||
|
|
||||||
[ "node_get_output_value", function(nodeId, input) {
|
[ "node_get_output_value", function(nodeId, input) {
|
||||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||||
var node = NODE_NAME_MAP[? nodeId];
|
var node = PROJECT.nodeNameMap[? nodeId];
|
||||||
|
|
||||||
if(!ds_map_exists(node.outputMap, input)) return 0;
|
if(!ds_map_exists(node.outputMap, input)) return 0;
|
||||||
return node.outputMap[? input].getValue();
|
return node.outputMap[? input].getValue();
|
||||||
|
|
|
@ -155,8 +155,8 @@ function __addon_lua_panel_variable(lua, panel) {
|
||||||
);
|
);
|
||||||
|
|
||||||
lua_add_code(lua,
|
lua_add_code(lua,
|
||||||
"Animator.frame_current = " + string(ANIMATOR.current_frame) + "\n" +
|
"Animator.frame_current = " + string(PROJECT.animator.current_frame) + "\n" +
|
||||||
"Animator.frame_total = " + string(ANIMATOR.frames_total) + "\n" +
|
"Animator.frame_total = " + string(PROJECT.animator.frames_total) + "\n" +
|
||||||
"Animator.frame_rate = " + string(ANIMATOR.framerate) + "\n"
|
"Animator.frame_rate = " + string(PROJECT.animator.framerate) + "\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
#region global
|
#region global
|
||||||
global.FLAG.keyframe_override = true;
|
global.FLAG.keyframe_override = true;
|
||||||
|
|
||||||
|
enum ANIMATOR_END {
|
||||||
|
loop,
|
||||||
|
stop
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region animation class
|
#region animation class
|
||||||
|
@ -45,13 +50,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
static resetAnimation = function() {
|
static resetAnimation = function() {
|
||||||
var _key = ds_map_find_first(NODE_MAP);
|
var _key = ds_map_find_first(PROJECT.nodeMap);
|
||||||
var amo = ds_map_size(NODE_MAP);
|
var amo = ds_map_size(PROJECT.nodeMap);
|
||||||
|
|
||||||
repeat(amo) {
|
repeat(amo) {
|
||||||
var _node = NODE_MAP[? _key];
|
var _node = PROJECT.nodeMap[? _key];
|
||||||
_node.resetAnimation();
|
_node.resetAnimation();
|
||||||
_key = ds_map_find_next(NODE_MAP, _key);
|
_key = ds_map_find_next(PROJECT.nodeMap, _key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,23 +68,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
static toggle = function() {
|
static toggle = function() {
|
||||||
ANIMATOR.is_playing = !ANIMATOR.is_playing;
|
is_playing = !is_playing;
|
||||||
ANIMATOR.frame_progress = true;
|
frame_progress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static pause = function() {
|
static pause = function() {
|
||||||
ANIMATOR.is_playing = false;
|
is_playing = false;
|
||||||
ANIMATOR.frame_progress = true;
|
frame_progress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static play = function() {
|
static play = function() {
|
||||||
ANIMATOR.is_playing = true;
|
is_playing = true;
|
||||||
ANIMATOR.frame_progress = true;
|
frame_progress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static resume = function() {
|
static resume = function() {
|
||||||
ANIMATOR.is_playing = true;
|
is_playing = true;
|
||||||
ANIMATOR.frame_progress = true;
|
frame_progress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static stop = function() {
|
static stop = function() {
|
||||||
|
@ -88,13 +93,3 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region object
|
|
||||||
enum ANIMATOR_END {
|
|
||||||
loop,
|
|
||||||
stop
|
|
||||||
}
|
|
||||||
|
|
||||||
globalvar ANIMATOR;
|
|
||||||
ANIMATOR = new AnimationManager();
|
|
||||||
#endregion
|
|
|
@ -21,9 +21,9 @@ function __APPEND_MAP(_map, context = PANEL_GRAPH.getCurrentContext()) {
|
||||||
|
|
||||||
if(struct_has(_map, "version")) {
|
if(struct_has(_map, "version")) {
|
||||||
var _v = _map.version;
|
var _v = _map.version;
|
||||||
LOADING_VERSION = _v;
|
PROJECT.version = _v;
|
||||||
if(_v != SAVEFILE_VERSION) {
|
if(_v != SAVE_VERSION) {
|
||||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVEFILE_VERSION);
|
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVE_VERSION);
|
||||||
log_warning("FILE", warn)
|
log_warning("FILE", warn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ function ase_layer(name) constructor {
|
||||||
cels[index] = cel;
|
cels[index] = cel;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getCel = function(index = ANIMATOR.current_frame) {
|
static getCel = function(index = PROJECT.animator.current_frame) {
|
||||||
var ind;
|
var ind;
|
||||||
|
|
||||||
if(tag != noone) {
|
if(tag != noone) {
|
||||||
|
|
|
@ -74,7 +74,7 @@ function exception_print(e) {
|
||||||
function setException() {
|
function setException() {
|
||||||
exception_unhandled_handler(function(ex) {
|
exception_unhandled_handler(function(ex) {
|
||||||
var path = string(DIRECTORY) + "prev_crash.pxc";
|
var path = string(DIRECTORY) + "prev_crash.pxc";
|
||||||
if(!SAVING && !TESTING) SAVE_AT(path);
|
if(!SAVING && !TESTING) SAVE_AT(PROJECT, path);
|
||||||
|
|
||||||
var tt = "\n-------------------------- OH NO --------------------------\n\n";
|
var tt = "\n-------------------------- OH NO --------------------------\n\n";
|
||||||
tt += "\n" + ex.longMessage;
|
tt += "\n" + ex.longMessage;
|
||||||
|
|
|
@ -1,25 +1,47 @@
|
||||||
#region save
|
#region save
|
||||||
globalvar LOADING, LOADING_VERSION, APPENDING, CLONING, SAFE_MODE;
|
globalvar LOADING, APPENDING, CLONING, SAFE_MODE;
|
||||||
globalvar LOAD_ADDON;
|
globalvar CONNECTION_CONFLICT, ALWAYS_FULL;
|
||||||
globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
|
|
||||||
|
|
||||||
LOADING = false;
|
LOADING = false;
|
||||||
LOAD_ADDON = {};
|
|
||||||
CLONING = false;
|
CLONING = false;
|
||||||
LOADING_VERSION = 0;
|
|
||||||
APPENDING = false;
|
APPENDING = false;
|
||||||
READONLY = false;
|
|
||||||
SAFE_MODE = false;
|
SAFE_MODE = false;
|
||||||
|
|
||||||
CURRENT_PATH = "";
|
|
||||||
MODIFIED = false;
|
|
||||||
CONNECTION_CONFLICT = ds_queue_create();
|
CONNECTION_CONFLICT = ds_queue_create();
|
||||||
|
|
||||||
randomize();
|
randomize();
|
||||||
GLOBAL_SEED = irandom(9999999999);
|
|
||||||
ALWAYS_FULL = false;
|
ALWAYS_FULL = false;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region project
|
||||||
|
function Project() constructor {
|
||||||
|
path = "";
|
||||||
|
version = 1440;
|
||||||
|
seed = irandom_range(100000, 999999);
|
||||||
|
|
||||||
|
modified = false;
|
||||||
|
readonly = false;
|
||||||
|
|
||||||
|
nodes = ds_list_create();
|
||||||
|
nodeMap = ds_map_create();
|
||||||
|
nodeNameMap = ds_map_create();
|
||||||
|
|
||||||
|
animator = new AnimationManager();
|
||||||
|
|
||||||
|
globalNode = new Node_Global();
|
||||||
|
|
||||||
|
addons = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
globalvar PROJECTS, PROJECT;
|
||||||
|
|
||||||
|
gml_pragma("global", "__init()");
|
||||||
|
function __init() {
|
||||||
|
PROJECTS = [];
|
||||||
|
PROJECT = new Project();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region main
|
#region main
|
||||||
globalvar OS, DEBUG, THEME, COLOR_KEYS;
|
globalvar OS, DEBUG, THEME, COLOR_KEYS;
|
||||||
OS = os_type;
|
OS = os_type;
|
||||||
|
@ -29,22 +51,17 @@
|
||||||
THEME = new Theme();
|
THEME = new Theme();
|
||||||
COLOR_KEYS = [];
|
COLOR_KEYS = [];
|
||||||
|
|
||||||
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING, BUILD_NUMBER;
|
globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER;
|
||||||
|
|
||||||
VERSION = 1146;
|
VERSION = 1146;
|
||||||
SAVEFILE_VERSION = 1440;
|
SAVE_VERSION = 1440;
|
||||||
VERSION_STRING = "1.14.6";
|
VERSION_STRING = "1.14.6n1";
|
||||||
BUILD_NUMBER = 114600;
|
BUILD_NUMBER = 114600;
|
||||||
|
|
||||||
globalvar NODES, NODE_MAP, APPEND_MAP, NODE_NAME_MAP;
|
globalvar APPEND_MAP;
|
||||||
globalvar HOTKEYS, HOTKEY_CONTEXT, NODE_INSTANCES;
|
|
||||||
|
|
||||||
NODES = ds_list_create();
|
|
||||||
NODE_INSTANCES = ds_list_create();
|
|
||||||
NODE_MAP = ds_map_create();
|
|
||||||
NODE_NAME_MAP = ds_map_create();
|
|
||||||
APPEND_MAP = ds_map_create();
|
APPEND_MAP = ds_map_create();
|
||||||
|
|
||||||
|
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
||||||
HOTKEYS = ds_map_create();
|
HOTKEYS = ds_map_create();
|
||||||
HOTKEY_CONTEXT = ds_list_create();
|
HOTKEY_CONTEXT = ds_list_create();
|
||||||
HOTKEY_CONTEXT[| 0] = "";
|
HOTKEY_CONTEXT[| 0] = "";
|
||||||
|
@ -56,9 +73,8 @@
|
||||||
#region inputs
|
#region inputs
|
||||||
globalvar FOCUS, FOCUS_STR, HOVER, HOVERING_ELEMENT, _HOVERING_ELEMENT;
|
globalvar FOCUS, FOCUS_STR, HOVER, HOVERING_ELEMENT, _HOVERING_ELEMENT;
|
||||||
globalvar DOUBLE_CLICK;
|
globalvar DOUBLE_CLICK;
|
||||||
globalvar CURRENT_PATH, DIALOG_CLICK;
|
globalvar DIALOG_CLICK;
|
||||||
|
|
||||||
CURRENT_PATH = "";
|
|
||||||
DOUBLE_CLICK = false;
|
DOUBLE_CLICK = false;
|
||||||
FOCUS = noone;
|
FOCUS = noone;
|
||||||
FOCUS_STR = "";
|
FOCUS_STR = "";
|
||||||
|
@ -131,7 +147,7 @@
|
||||||
|
|
||||||
#macro printlog if(log) show_debug_message
|
#macro printlog if(log) show_debug_message
|
||||||
|
|
||||||
#macro RETURN_ON_REST if(!ANIMATOR.is_playing || !ANIMATOR.frame_progress) return;
|
#macro RETURN_ON_REST if(!PROJECT.animator.is_playing || !PROJECT.animator.frame_progress) return;
|
||||||
|
|
||||||
#macro PANEL_PAD THEME_VALUE.panel_padding
|
#macro PANEL_PAD THEME_VALUE.panel_padding
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ function globalvar_viewer_draw(xx, yy, ww, _m, focus, hover, _scrollPane, rx, ry
|
||||||
|
|
||||||
if(var_editing) {
|
if(var_editing) {
|
||||||
var del = noone;
|
var del = noone;
|
||||||
if(ds_list_size(GLOBAL_NODE.inputs)) {
|
if(ds_list_size(PROJECT.globalNode.inputs)) {
|
||||||
yy += ui(8);
|
yy += ui(8);
|
||||||
hh += ui(8);
|
hh += ui(8);
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,8 @@ function globalvar_viewer_draw(xx, yy, ww, _m, focus, hover, _scrollPane, rx, ry
|
||||||
var wd_x = xx;
|
var wd_x = xx;
|
||||||
var wd_w = ww;
|
var wd_w = ww;
|
||||||
|
|
||||||
for( var j = 0; j < ds_list_size(GLOBAL_NODE.inputs); j++ ) {
|
for( var j = 0; j < ds_list_size(PROJECT.globalNode.inputs); j++ ) {
|
||||||
var _inpu = GLOBAL_NODE.inputs[| j];
|
var _inpu = PROJECT.globalNode.inputs[| j];
|
||||||
var _edit = _inpu.editor;
|
var _edit = _inpu.editor;
|
||||||
var wd_h = ui(32);
|
var wd_h = ui(32);
|
||||||
|
|
||||||
|
@ -53,15 +53,15 @@ function globalvar_viewer_draw(xx, yy, ww, _m, focus, hover, _scrollPane, rx, ry
|
||||||
}
|
}
|
||||||
|
|
||||||
if(del != noone)
|
if(del != noone)
|
||||||
ds_list_delete(GLOBAL_NODE.inputs, del);
|
ds_list_delete(PROJECT.globalNode.inputs, del);
|
||||||
} else {
|
} else {
|
||||||
for( var j = 0; j < ds_list_size(GLOBAL_NODE.inputs); j++ ) {
|
for( var j = 0; j < ds_list_size(PROJECT.globalNode.inputs); j++ ) {
|
||||||
var widg = drawWidget(xx, yy, ww, _m, GLOBAL_NODE.inputs[| j], true, focus, hover, _scrollPane, rx, ry);
|
var widg = drawWidget(xx, yy, ww, _m, PROJECT.globalNode.inputs[| j], true, focus, hover, _scrollPane, rx, ry);
|
||||||
var widH = widg[0];
|
var widH = widg[0];
|
||||||
var mbRight = widg[1];
|
var mbRight = widg[1];
|
||||||
|
|
||||||
if(hover && point_in_rectangle(_m[0], _m[1], xx, yy, xx + ww, yy + widH))
|
if(hover && point_in_rectangle(_m[0], _m[1], xx, yy, xx + ww, yy + widH))
|
||||||
_HOVERING_ELEMENT = GLOBAL_NODE.inputs[| j];
|
_HOVERING_ELEMENT = PROJECT.globalNode.inputs[| j];
|
||||||
|
|
||||||
yy += lb_h + widH + padd;
|
yy += lb_h + widH + padd;
|
||||||
hh += lb_h + widH + padd;
|
hh += lb_h + widH + padd;
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
function LOAD() {
|
function LOAD() {
|
||||||
if(DEMO) return false;
|
if(DEMO) return false;
|
||||||
|
|
||||||
var path = get_open_filename("Pixel Composer project (.pxc)|*.pxc", "");
|
var path = get_open_filename("Pixel Composer PROJECT (.pxc)|*.pxc", "");
|
||||||
key_release();
|
key_release();
|
||||||
if(path == "") return;
|
if(path == "") return;
|
||||||
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") return;
|
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") return;
|
||||||
|
|
||||||
gc_collect();
|
gc_collect();
|
||||||
LOAD_PATH(path);
|
LOAD_PATH(path);
|
||||||
|
|
||||||
ds_list_clear(STATUSES);
|
|
||||||
ds_list_clear(WARNING);
|
|
||||||
ds_list_clear(ERRORS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function TEST_PATH(path) {
|
function TEST_PATH(path) {
|
||||||
|
@ -21,16 +17,25 @@ function TEST_PATH(path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
if(MODIFIED && !READONLY) {
|
var _PROJECT = PROJECT;
|
||||||
var dia = dialogCall(o_dialog_load);
|
PROJECT = new Project();
|
||||||
dia.path = path;
|
if(PANEL_GRAPH.project.path == "" && !PANEL_GRAPH.project.modified) {
|
||||||
dia.readonly = readonly;
|
PANEL_GRAPH.setProject(PROJECT);
|
||||||
dia.safe_mode = safe_mode;
|
} else {
|
||||||
} else
|
var graph = new Panel_Graph(PROJECT);
|
||||||
__LOAD_PATH(path, readonly, safe_mode);
|
PANEL_GRAPH.panel.setContent(graph, true);
|
||||||
|
PANEL_GRAPH = graph;
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = __LOAD_PATH(path, readonly, safe_mode);
|
||||||
|
if(!res) return;
|
||||||
|
|
||||||
|
array_push(PROJECTS, PROJECT);
|
||||||
|
PANEL_ANIMATION.updatePropertyList();
|
||||||
|
setFocus(PANEL_GRAPH.panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
function __LOAD_PATH(path, readonly = false, safe_mode = false, override = false) {
|
||||||
SAFE_MODE = safe_mode;
|
SAFE_MODE = safe_mode;
|
||||||
|
|
||||||
if(DEMO) return false;
|
if(DEMO) return false;
|
||||||
|
@ -41,43 +46,47 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") {
|
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") {
|
||||||
log_warning("LOAD", "File not a valid project");
|
log_warning("LOAD", "File not a valid PROJECT");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOADING = true;
|
LOADING = true;
|
||||||
|
|
||||||
|
if(override) {
|
||||||
nodeCleanUp();
|
nodeCleanUp();
|
||||||
clearPanel();
|
clearPanel();
|
||||||
setPanel();
|
setPanel();
|
||||||
if(!TESTING)
|
if(!TESTING)
|
||||||
instance_destroy(_p_dialog);
|
instance_destroy(_p_dialog);
|
||||||
ds_list_clear(ERRORS);
|
ds_list_clear(ERRORS);
|
||||||
|
}
|
||||||
|
|
||||||
var temp_path = DIRECTORY + "_temp";
|
var temp_path = DIRECTORY + "temp";
|
||||||
if(file_exists(temp_path)) file_delete(temp_path);
|
if(!directory_exists(temp_path))
|
||||||
file_copy(path, temp_path);
|
directory_create(temp_path);
|
||||||
|
|
||||||
ALWAYS_FULL = false;
|
var temp_file_path = temp_path + "/" + string(UUID_generate(6));
|
||||||
READONLY = readonly;
|
if(file_exists(temp_file_path)) file_delete(temp_file_path);
|
||||||
SET_PATH(path);
|
file_copy(path, temp_file_path);
|
||||||
|
|
||||||
var _load_content = json_load_struct(temp_path);
|
//ALWAYS_FULL = false;
|
||||||
|
PROJECT.readonly = readonly;
|
||||||
|
SET_PATH(PROJECT, path);
|
||||||
|
|
||||||
|
var _load_content = json_load_struct(temp_file_path);
|
||||||
|
|
||||||
if(struct_has(_load_content, "version")) {
|
if(struct_has(_load_content, "version")) {
|
||||||
var _v = _load_content.version;
|
var _v = _load_content.version;
|
||||||
LOADING_VERSION = _v;
|
PROJECT.version = _v;
|
||||||
if(_v != SAVEFILE_VERSION) {
|
if(_v != SAVE_VERSION) {
|
||||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVEFILE_VERSION);
|
var warn = $"File version mismatch : loading file verion {_v} to Pixel Composer {SAVE_VERSION}";
|
||||||
log_warning("LOAD", warn);
|
log_warning("LOAD", warn);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var warn = "File version mismatch : loading old format to Pixel Composer " + string(SAVEFILE_VERSION);
|
var warn = $"File version mismatch : loading old format to Pixel Composer {string(SAVE_VERSION)}";
|
||||||
log_warning("LOAD", warn);
|
log_warning("LOAD", warn);
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeCleanUp();
|
|
||||||
|
|
||||||
var create_list = ds_list_create();
|
var create_list = ds_list_create();
|
||||||
if(struct_has(_load_content, "nodes")) {
|
if(struct_has(_load_content, "nodes")) {
|
||||||
try {
|
try {
|
||||||
|
@ -94,8 +103,8 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
try {
|
try {
|
||||||
if(struct_has(_load_content, "animator")) {
|
if(struct_has(_load_content, "animator")) {
|
||||||
var _anim_map = _load_content.animator;
|
var _anim_map = _load_content.animator;
|
||||||
ANIMATOR.frames_total = _anim_map.frames_total;
|
PROJECT.animator.frames_total = _anim_map.frames_total;
|
||||||
ANIMATOR.framerate = _anim_map.framerate;
|
PROJECT.animator.framerate = _anim_map.framerate;
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log_warning("LOAD, animator", exception_print(e));
|
log_warning("LOAD, animator", exception_print(e));
|
||||||
|
@ -108,12 +117,12 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
log_warning("LOAD, metadata", exception_print(e));
|
log_warning("LOAD, metadata", exception_print(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
GLOBAL_NODE = new Node_Global();
|
PROJECT.globalNode = new Node_Global();
|
||||||
try {
|
try {
|
||||||
if(struct_has(_load_content, "global"))
|
if(struct_has(_load_content, "global"))
|
||||||
GLOBAL_NODE.deserialize(_load_content.global);
|
PROJECT.globalNode.deserialize(_load_content.global);
|
||||||
else if(struct_has(_load_content, "global_node"))
|
else if(struct_has(_load_content, "global_node"))
|
||||||
GLOBAL_NODE.deserialize(_load_content.global_node);
|
PROJECT.globalNode.deserialize(_load_content.global_node);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log_warning("LOAD, global", exception_print(e));
|
log_warning("LOAD, global", exception_print(e));
|
||||||
}
|
}
|
||||||
|
@ -121,10 +130,10 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
try {
|
try {
|
||||||
if(struct_has(_load_content, "addon")) {
|
if(struct_has(_load_content, "addon")) {
|
||||||
var _addon = _load_content.addon;
|
var _addon = _load_content.addon;
|
||||||
LOAD_ADDON = _addon;
|
PROJECT.addons = _addon;
|
||||||
struct_foreach(_addon, function(_name, _value) { addonLoad(_name, false); });
|
struct_foreach(_addon, function(_name, _value) { addonLoad(_name, false); });
|
||||||
} else
|
} else
|
||||||
LOAD_ADDON = {};
|
PROJECT.addons = {};
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log_warning("LOAD, addon", exception_print(e));
|
log_warning("LOAD, addon", exception_print(e));
|
||||||
}
|
}
|
||||||
|
@ -199,9 +208,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
Render();
|
Render();
|
||||||
|
|
||||||
LOADING = false;
|
LOADING = false;
|
||||||
MODIFIED = false;
|
PROJECT.modified = false;
|
||||||
|
|
||||||
PANEL_ANIMATION.updatePropertyList();
|
|
||||||
|
|
||||||
log_message("FILE", "load " + path, THEME.noti_icon_file_load);
|
log_message("FILE", "load " + path, THEME.noti_icon_file_load);
|
||||||
PANEL_MENU.setNotiIcon(THEME.noti_icon_file_load);
|
PANEL_MENU.setNotiIcon(THEME.noti_icon_file_load);
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"isCompatibility": false,
|
"isCompatibility": false,
|
||||||
"isDnD": false,
|
"isDnD": false,
|
||||||
"parent": {
|
"parent": {
|
||||||
"name": "files",
|
"name": "project",
|
||||||
"path": "folders/functions/files.yy",
|
"path": "folders/functions/project.yy",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -87,7 +87,7 @@ function MetaDataManager() constructor {
|
||||||
}
|
}
|
||||||
|
|
||||||
var _aut = __txt("By") + " " + author;
|
var _aut = __txt("By") + " " + author;
|
||||||
var _ver = version < SAVEFILE_VERSION? __txtx("meta_old_version", "Created on an older version") : __txtx("meta_new_version", "Created on a newer version");
|
var _ver = version < SAVE_VERSION? __txtx("meta_old_version", "Created on an older version") : __txtx("meta_new_version", "Created on a newer version");
|
||||||
|
|
||||||
draw_set_font(f_h5);
|
draw_set_font(f_h5);
|
||||||
_h += string_height_ext(name, -1, ww) - ui(4);
|
_h += string_height_ext(name, -1, ww) - ui(4);
|
||||||
|
@ -116,7 +116,7 @@ function MetaDataManager() constructor {
|
||||||
_w = max(_w, string_width_ext(alias, -1, ww));
|
_w = max(_w, string_width_ext(alias, -1, ww));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(version != SAVEFILE_VERSION) {
|
if(version != SAVE_VERSION) {
|
||||||
draw_set_font(f_p2);
|
draw_set_font(f_p2);
|
||||||
_h += ui(8);
|
_h += ui(8);
|
||||||
_h += string_height_ext(_ver, -1, ww);
|
_h += string_height_ext(_ver, -1, ww);
|
||||||
|
@ -177,7 +177,7 @@ function MetaDataManager() constructor {
|
||||||
ty += string_height_ext(alias, -1, _w);
|
ty += string_height_ext(alias, -1, _w);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(version != SAVEFILE_VERSION) {
|
if(version != SAVE_VERSION) {
|
||||||
ty += ui(8);
|
ty += ui(8);
|
||||||
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_accent);
|
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_accent);
|
||||||
draw_text_line(mx + ui(8), ty, _ver, -1, _w);
|
draw_text_line(mx + ui(8), ty, _ver, -1, _w);
|
||||||
|
|
|
@ -99,8 +99,8 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
||||||
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, "", THEME.prop_keyframe, 2) == 2) {
|
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, "", THEME.prop_keyframe, 2) == 2) {
|
||||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||||
var _key = jun.animator.values[| j];
|
var _key = jun.animator.values[| j];
|
||||||
if(_key.time > ANIMATOR.current_frame) {
|
if(_key.time > PROJECT.animator.current_frame) {
|
||||||
ANIMATOR.setFrame(_key.time);
|
PROJECT.animator.setFrame(_key.time);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
||||||
var cc = COLORS.panel_animation_keyframe_unselected;
|
var cc = COLORS.panel_animation_keyframe_unselected;
|
||||||
var kfFocus = false;
|
var kfFocus = false;
|
||||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||||
if(jun.animator.values[| j].time == ANIMATOR.current_frame) {
|
if(jun.animator.values[| j].time == PROJECT.animator.current_frame) {
|
||||||
cc = COLORS.panel_animation_keyframe_selected;
|
cc = COLORS.panel_animation_keyframe_selected;
|
||||||
kfFocus = true;
|
kfFocus = true;
|
||||||
break;
|
break;
|
||||||
|
@ -122,18 +122,18 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
||||||
var _add = false;
|
var _add = false;
|
||||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||||
var _key = jun.animator.values[| j];
|
var _key = jun.animator.values[| j];
|
||||||
if(_key.time == ANIMATOR.current_frame) {
|
if(_key.time == PROJECT.animator.current_frame) {
|
||||||
if(ds_list_size(jun.animator.values) > 1)
|
if(ds_list_size(jun.animator.values) > 1)
|
||||||
ds_list_delete(jun.animator.values, j);
|
ds_list_delete(jun.animator.values, j);
|
||||||
_add = true;
|
_add = true;
|
||||||
break;
|
break;
|
||||||
} else if(_key.time > ANIMATOR.current_frame) {
|
} else if(_key.time > PROJECT.animator.current_frame) {
|
||||||
ds_list_insert(jun.animator.values, j, new valueKey(ANIMATOR.current_frame, jun.showValue(), jun.animator));
|
ds_list_insert(jun.animator.values, j, new valueKey(PROJECT.animator.current_frame, jun.showValue(), jun.animator));
|
||||||
_add = true;
|
_add = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!_add) ds_list_add(jun.animator.values, new valueKey(ANIMATOR.current_frame, jun.showValue(), jun.animator));
|
if(!_add) ds_list_add(jun.animator.values, new valueKey(PROJECT.animator.current_frame, jun.showValue(), jun.animator));
|
||||||
}
|
}
|
||||||
|
|
||||||
bx -= ui(26);
|
bx -= ui(26);
|
||||||
|
@ -141,10 +141,10 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
||||||
var _t = -1;
|
var _t = -1;
|
||||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||||
var _key = jun.animator.values[| j];
|
var _key = jun.animator.values[| j];
|
||||||
if(_key.time < ANIMATOR.current_frame)
|
if(_key.time < PROJECT.animator.current_frame)
|
||||||
_t = _key.time;
|
_t = _key.time;
|
||||||
}
|
}
|
||||||
if(_t > -1) ANIMATOR.setFrame(_t);
|
if(_t > -1) PROJECT.animator.setFrame(_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
var lhf = lb_h / 2 - 4;
|
var lhf = lb_h / 2 - 4;
|
||||||
|
|
|
@ -147,7 +147,7 @@ function Node_3D_Combine(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
_3d_clear_local_transform();
|
_3d_clear_local_transform();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dim = inputs[| 0].getValue();
|
var _dim = inputs[| 0].getValue();
|
||||||
var _lpos = inputs[| 1].getValue();
|
var _lpos = inputs[| 1].getValue();
|
||||||
var _lrot = inputs[| 2].getValue();
|
var _lrot = inputs[| 2].getValue();
|
||||||
|
|
|
@ -310,7 +310,7 @@ function Node_3D_Extrude(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
||||||
case 2 : pass = "norm" break;
|
case 2 : pass = "norm" break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_upda && ANIMATOR.frame_progress)
|
if(_upda && PROJECT.animator.frame_progress)
|
||||||
generateMesh();
|
generateMesh();
|
||||||
|
|
||||||
var _transform = new __3d_transform(_pos,, _sca, _lpos, _lrot, _lsca, false, _dimS );
|
var _transform = new __3d_transform(_pos,, _sca, _lpos, _lrot, _lsca, false, _dimS );
|
||||||
|
|
|
@ -215,7 +215,7 @@ function Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
_3d_clear_local_transform();
|
_3d_clear_local_transform();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(!surface_exists(tex_surface)) reset_tex();
|
if(!surface_exists(tex_surface)) reset_tex();
|
||||||
|
|
||||||
if(do_reset_material) {
|
if(do_reset_material) {
|
||||||
|
|
|
@ -170,7 +170,7 @@
|
||||||
// _3d_clear_local_transform();
|
// _3d_clear_local_transform();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// static update = function(frame = ANIMATOR.current_frame) {
|
// static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
// if(!surface_exists(tex_surface)) reset_tex();
|
// if(!surface_exists(tex_surface)) reset_tex();
|
||||||
|
|
||||||
// if(do_reset_material) {
|
// if(do_reset_material) {
|
||||||
|
|
|
@ -162,7 +162,7 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
inputs[| 21].setVisible(_proj);
|
inputs[| 21].setVisible(_proj);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(frame = ANIMATOR.current_frame) {
|
function update(frame = PROJECT.animator.current_frame) {
|
||||||
var _dim = inputs[| 0].getValue();
|
var _dim = inputs[| 0].getValue();
|
||||||
var _lpos = inputs[| 1].getValue();
|
var _lpos = inputs[| 1].getValue();
|
||||||
var _lrot = inputs[| 2].getValue();
|
var _lrot = inputs[| 2].getValue();
|
||||||
|
|
|
@ -141,7 +141,7 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
onAffect(part, str);
|
onAffect(part, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var val = inputs[| 0].getValue();
|
var val = inputs[| 0].getValue();
|
||||||
outputs[| 0].setValue(val);
|
outputs[| 0].setValue(val);
|
||||||
if(val == -1) return;
|
if(val == -1) return;
|
||||||
|
|
|
@ -29,7 +29,7 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
|
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var parts = inputs[| 0].getValue();
|
var parts = inputs[| 0].getValue();
|
||||||
if(!is_array(parts)) return;
|
if(!is_array(parts)) return;
|
||||||
|
|
||||||
|
|
|
@ -68,8 +68,8 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
outputs[| 0].setValue(_outSurf);
|
outputs[| 0].setValue(_outSurf);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(_time = ANIMATOR.current_frame) {
|
function update(_time = PROJECT.animator.current_frame) {
|
||||||
if(!ANIMATOR.is_playing) {
|
if(!PROJECT.animator.is_playing) {
|
||||||
recoverCache();
|
recoverCache();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,9 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y
|
||||||
static onUpdate = function() {
|
static onUpdate = function() {
|
||||||
RETURN_ON_REST
|
RETURN_ON_REST
|
||||||
|
|
||||||
if(ANIMATOR.current_frame == 0)
|
if(PROJECT.animator.current_frame == 0)
|
||||||
reset();
|
reset();
|
||||||
runVFX(ANIMATOR.current_frame);
|
runVFX(PROJECT.animator.current_frame);
|
||||||
|
|
||||||
if(attributes.Output_pool) {
|
if(attributes.Output_pool) {
|
||||||
outputs[| 0].setValue(parts);
|
outputs[| 0].setValue(parts);
|
||||||
|
|
|
@ -44,7 +44,7 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
.setDisplay(VALUE_DISPLAY.vector)
|
.setDisplay(VALUE_DISPLAY.vector)
|
||||||
.setVisible(false);
|
.setVisible(false);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var parts = inputs[| 0].getValue();
|
var parts = inputs[| 0].getValue();
|
||||||
if(!is_array(parts)) return;
|
if(!is_array(parts)) return;
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ function rearrange_priority(node, newpri) {
|
||||||
var down = prev > newpri;
|
var down = prev > newpri;
|
||||||
node.anim_priority = newpri;
|
node.anim_priority = newpri;
|
||||||
|
|
||||||
var amo = ds_map_size(NODE_MAP);
|
var amo = ds_map_size(PROJECT.nodeMap);
|
||||||
var k = ds_map_find_first(NODE_MAP);
|
var k = ds_map_find_first(PROJECT.nodeMap);
|
||||||
|
|
||||||
repeat(amo) {
|
repeat(amo) {
|
||||||
var _node = NODE_MAP[? k];
|
var _node = PROJECT.nodeMap[? k];
|
||||||
k = ds_map_find_next(NODE_MAP, k);
|
k = ds_map_find_next(PROJECT.nodeMap, k);
|
||||||
|
|
||||||
if(!_node.active) continue;
|
if(!_node.active) continue;
|
||||||
if(_node == node) continue;
|
if(_node == node) continue;
|
||||||
|
|
|
@ -21,25 +21,25 @@ function Node_Animation_Control(_x, _y, _group = noone) : Node(_x, _y, _group) c
|
||||||
|
|
||||||
static step = function() {
|
static step = function() {
|
||||||
if(inputs[| 0].getValue())
|
if(inputs[| 0].getValue())
|
||||||
ANIMATOR.toggle();
|
PROJECT.animator.toggle();
|
||||||
|
|
||||||
if(inputs[| 1].getValue())
|
if(inputs[| 1].getValue())
|
||||||
ANIMATOR.pause();
|
PROJECT.animator.pause();
|
||||||
|
|
||||||
if(inputs[| 2].getValue())
|
if(inputs[| 2].getValue())
|
||||||
ANIMATOR.resume();
|
PROJECT.animator.resume();
|
||||||
|
|
||||||
if(inputs[| 3].getValue()) {
|
if(inputs[| 3].getValue()) {
|
||||||
ANIMATOR.stop();
|
PROJECT.animator.stop();
|
||||||
ANIMATOR.play();
|
PROJECT.animator.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inputs[| 4].getValue())
|
if(inputs[| 4].getValue())
|
||||||
ANIMATOR.render();
|
PROJECT.animator.render();
|
||||||
|
|
||||||
if(inputs[| 5].getValue()) {
|
if(inputs[| 5].getValue()) {
|
||||||
var fr = inputs[| 6].getValue();
|
var fr = inputs[| 6].getValue();
|
||||||
ANIMATOR.setFrame(ANIMATOR.current_frame + fr);
|
PROJECT.animator.setFrame(PROJECT.animator.current_frame + fr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ function Node_Animation_Control(_x, _y, _group = noone) : Node(_x, _y, _group) c
|
||||||
var bbox = drawGetBbox(xx, yy, _s);
|
var bbox = drawGetBbox(xx, yy, _s);
|
||||||
var ind = 0;
|
var ind = 0;
|
||||||
|
|
||||||
if(ANIMATOR.is_playing) ind = 1;
|
if(PROJECT.animator.is_playing) ind = 1;
|
||||||
|
|
||||||
draw_sprite_fit(THEME.sequence_control, ind, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
draw_sprite_fit(THEME.sequence_control, ind, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||||
}
|
}
|
||||||
|
|
|
@ -370,7 +370,7 @@ function Node_Armature(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
outputs[| 0].setValue(attributes.bones);
|
outputs[| 0].setValue(attributes.bones);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -237,7 +237,7 @@ function Node_Armature_Pose(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
if(_boneCount != _b.childCount()) setBone();
|
if(_boneCount != _b.childCount()) setBone();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _b = inputs[| 0].getValue();
|
var _b = inputs[| 0].getValue();
|
||||||
if(_b == noone) return;
|
if(_b == noone) return;
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@ function Node_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
refreshDynamicInput();
|
refreshDynamicInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _typ = getType();
|
var _typ = getType();
|
||||||
|
|
||||||
outputs[| 0].type = _typ;
|
outputs[| 0].type = _typ;
|
||||||
|
|
|
@ -52,7 +52,7 @@ function Node_Array_Add(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
refreshDynamicInput();
|
refreshDynamicInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(inputs[| 0].value_from == noone) {
|
if(inputs[| 0].value_from == noone) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ function Node_Array_Copy(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
outputs[| 0].type = _typ;
|
outputs[| 0].type = _typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
var _ind = inputs[| 1].getValue();
|
var _ind = inputs[| 1].getValue();
|
||||||
var _siz = inputs[| 2].getValue();
|
var _siz = inputs[| 2].getValue();
|
||||||
|
|
|
@ -14,7 +14,7 @@ function Node_Array_CSV_Parse(_x, _y, _group = noone) : Node(_x, _y, _group) con
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0)
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0)
|
||||||
.setArrayDepth(1);
|
.setArrayDepth(1);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _str = inputs[| 0].getValue();
|
var _str = inputs[| 0].getValue();
|
||||||
var _skp = inputs[| 1].getValue();
|
var _skp = inputs[| 1].getValue();
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ function Node_Array_Find(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
outputs[| 0] = nodeValue("Index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
inputs[| 0].type = VALUE_TYPE.any;
|
inputs[| 0].type = VALUE_TYPE.any;
|
||||||
|
|
|
@ -54,7 +54,7 @@ function Node_Array_Get(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
return array_safe_get(_arr, index);
|
return array_safe_get(_arr, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(!is_array(_arr)) return;
|
if(!is_array(_arr)) return;
|
||||||
|
|
|
@ -19,7 +19,7 @@ function Node_Array_Insert(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
inputs[| 0].type = VALUE_TYPE.any;
|
inputs[| 0].type = VALUE_TYPE.any;
|
||||||
|
|
|
@ -11,7 +11,7 @@ function Node_Array_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
outputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
||||||
|
|
||||||
function update(frame = ANIMATOR.current_frame) {
|
function update(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
inputs[| 0].type = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
|
inputs[| 0].type = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ function Node_Array_Range(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, []);
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, []);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var st = inputs[| 0].getValue();
|
var st = inputs[| 0].getValue();
|
||||||
var ed = inputs[| 1].getValue();
|
var ed = inputs[| 1].getValue();
|
||||||
var step = inputs[| 2].getValue();
|
var step = inputs[| 2].getValue();
|
||||||
|
|
|
@ -42,7 +42,7 @@ function Node_Array_Remove(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(!is_array(_arr)) return;
|
if(!is_array(_arr)) return;
|
||||||
|
|
|
@ -11,7 +11,7 @@ function Node_Array_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
inputs[| 0].type = VALUE_TYPE.any;
|
inputs[| 0].type = VALUE_TYPE.any;
|
||||||
|
|
|
@ -16,7 +16,7 @@ function Node_Array_Set(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
inputs[| 0].type = VALUE_TYPE.any;
|
inputs[| 0].type = VALUE_TYPE.any;
|
||||||
|
|
|
@ -13,7 +13,7 @@ function Node_Array_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
var _shf = inputs[| 1].getValue();
|
var _shf = inputs[| 1].getValue();
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ function Node_Array_Shuffle(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Shuffled array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
|
outputs[| 0] = nodeValue("Shuffled array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var arr = inputs[| 0].getValue();
|
var arr = inputs[| 0].getValue();
|
||||||
var sed = inputs[| 1].getValue();
|
var sed = inputs[| 1].getValue();
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
static sortAcs = function(v1, v2) { return v1[1] < v2[1]; }
|
static sortAcs = function(v1, v2) { return v1[1] < v2[1]; }
|
||||||
static sortDes = function(v1, v2) { return v1[1] > v2[1]; }
|
static sortDes = function(v1, v2) { return v1[1] > v2[1]; }
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var arr = inputs[| 0].getValue();
|
var arr = inputs[| 0].getValue();
|
||||||
var asc = inputs[| 1].getValue();
|
var asc = inputs[| 1].getValue();
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ function Node_Array_Zip(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
refreshDynamicInput();
|
refreshDynamicInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(inputs[| 0].value_from == noone) {
|
if(inputs[| 0].value_from == noone) {
|
||||||
|
|
|
@ -120,7 +120,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
var st = tag[? "Frame start"];
|
var st = tag[? "Frame start"];
|
||||||
var ed = tag[? "Frame end"];
|
var ed = tag[? "Frame end"];
|
||||||
var rn = ed - st + 1;
|
var rn = ed - st + 1;
|
||||||
var progFr = safe_mod(ANIMATOR.current_frame - _tag_delay, rn) + 1;
|
var progFr = safe_mod(PROJECT.animator.current_frame - _tag_delay, rn) + 1;
|
||||||
var prog = progFr / rn;
|
var prog = progFr / rn;
|
||||||
var txt = "";
|
var txt = "";
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var path = inputs[| 0].getValue();
|
var path = inputs[| 0].getValue();
|
||||||
var current_tag = inputs[| 2].getValue();
|
var current_tag = inputs[| 2].getValue();
|
||||||
if(path_current != path) updatePaths(path);
|
if(path_current != path) updatePaths(path);
|
||||||
|
@ -311,7 +311,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
_tag_delay = 0;
|
_tag_delay = 0;
|
||||||
for( var i = 0; i < ds_list_size(inputs[| 2].animator.values); i++ ) {
|
for( var i = 0; i < ds_list_size(inputs[| 2].animator.values); i++ ) {
|
||||||
var kf = inputs[| 2].animator.values[| i];
|
var kf = inputs[| 2].animator.values[| i];
|
||||||
if(kf.time > ANIMATOR.current_frame) break;
|
if(kf.time > PROJECT.animator.current_frame) break;
|
||||||
_tag_delay = kf.time;
|
_tag_delay = kf.time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,7 +328,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
|
|
||||||
for( var i = 0; i < array_length(layers); i++ ) {
|
for( var i = 0; i < array_length(layers); i++ ) {
|
||||||
layers[i].tag = tag;
|
layers[i].tag = tag;
|
||||||
var cel = layers[i].getCel(ANIMATOR.current_frame - _tag_delay);
|
var cel = layers[i].getCel(PROJECT.animator.current_frame - _tag_delay);
|
||||||
if(!cel) continue;
|
if(!cel) continue;
|
||||||
if(!array_safe_get(vis, i, true)) continue;
|
if(!array_safe_get(vis, i, true)) continue;
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ function Node_ASE_layer(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var data = inputs[| 0].getValue();
|
var data = inputs[| 0].getValue();
|
||||||
if(data == noone) return;
|
if(data == noone) return;
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ function Node_ASE_layer(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
}
|
}
|
||||||
|
|
||||||
if(layer_object == noone) return;
|
if(layer_object == noone) return;
|
||||||
var cel = layer_object.getCel(ANIMATOR.current_frame - data._tag_delay);
|
var cel = layer_object.getCel(PROJECT.animator.current_frame - data._tag_delay);
|
||||||
|
|
||||||
var celDim = inputs[| 1].getValue();
|
var celDim = inputs[| 1].getValue();
|
||||||
var ww = data.content[? "Width"];
|
var ww = data.content[? "Width"];
|
||||||
|
|
|
@ -12,7 +12,7 @@ function Node_Atlas_Draw(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
|
|
||||||
attribute_interpolation(true);
|
attribute_interpolation(true);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var dim = inputs[| 0].getValue();
|
var dim = inputs[| 0].getValue();
|
||||||
var atl = inputs[| 1].getValue();
|
var atl = inputs[| 1].getValue();
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ function Node_Atlas_Get(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
outputs[| 5] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
outputs[| 5] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
||||||
.setArrayDepth(1);
|
.setArrayDepth(1);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var atl = inputs[| 0].getValue();
|
var atl = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(atl == noone) return;
|
if(atl == noone) return;
|
||||||
|
|
|
@ -27,7 +27,7 @@ function Node_Atlas_Set(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Atlas", self, JUNCTION_CONNECT.output, VALUE_TYPE.atlas, noone);
|
outputs[| 0] = nodeValue("Atlas", self, JUNCTION_CONNECT.output, VALUE_TYPE.atlas, noone);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var atl = inputs[| 0].getValue();
|
var atl = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(atl == noone) return;
|
if(atl == noone) return;
|
||||||
|
|
|
@ -17,7 +17,7 @@ function Node_Audio_Window(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
outputs[| 0] = nodeValue("Windowed Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
outputs[| 0] = nodeValue("Windowed Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
||||||
.setArrayDepth(1);
|
.setArrayDepth(1);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _arr = inputs[| 0].getValue();
|
var _arr = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(!is_array(_arr) || array_length(_arr) < 1) return;
|
if(!is_array(_arr) || array_length(_arr) < 1) return;
|
||||||
|
@ -26,7 +26,7 @@ function Node_Audio_Window(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var sam = inputs[| 1].getValue();
|
var sam = inputs[| 1].getValue();
|
||||||
var siz = inputs[| 2].getValue();
|
var siz = inputs[| 2].getValue();
|
||||||
var res = [];
|
var res = [];
|
||||||
var off = frame / ANIMATOR.framerate * sam;
|
var off = frame / PROJECT.animator.framerate * sam;
|
||||||
|
|
||||||
for( var i = 0; i < array_length(_arr); i++ ) {
|
for( var i = 0; i < array_length(_arr); i++ ) {
|
||||||
var _dat = _arr[i];
|
var _dat = _arr[i];
|
||||||
|
|
|
@ -25,7 +25,7 @@ function Node_Cache(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
cache_result[cache_loading_progress] = true;
|
cache_result[cache_loading_progress] = true;
|
||||||
cache_loading_progress++;
|
cache_loading_progress++;
|
||||||
|
|
||||||
if(cache_loading_progress == ANIMATOR.frames_total) {
|
if(cache_loading_progress == PROJECT.animator.frames_total) {
|
||||||
cache_loading = false;
|
cache_loading = false;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
cache_result[cache_loading_progress] = true;
|
cache_result[cache_loading_progress] = true;
|
||||||
cache_loading_progress++;
|
cache_loading_progress++;
|
||||||
|
|
||||||
if(cache_loading_progress == ANIMATOR.frames_total) {
|
if(cache_loading_progress == PROJECT.animator.frames_total) {
|
||||||
cache_loading = false;
|
cache_loading = false;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
var stp = inputs[| 3].getValue();
|
var stp = inputs[| 3].getValue();
|
||||||
|
|
||||||
if(str == -1) str = 0;
|
if(str == -1) str = 0;
|
||||||
if(lst == -1) lst = ANIMATOR.frames_total;
|
if(lst == -1) lst = PROJECT.animator.frames_total;
|
||||||
|
|
||||||
if(lst > str && stp > 0)
|
if(lst > str && stp > 0)
|
||||||
for( var i = str; i <= lst; i += stp ) {
|
for( var i = str; i <= lst; i += stp ) {
|
||||||
|
@ -55,7 +55,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
}
|
}
|
||||||
outputs[| 0].setValue(ss);
|
outputs[| 0].setValue(ss);
|
||||||
|
|
||||||
if(!ANIMATOR.is_playing) return;
|
if(!PROJECT.animator.is_playing) return;
|
||||||
if(!inputs[| 0].value_from) return;
|
if(!inputs[| 0].value_from) return;
|
||||||
|
|
||||||
var _surf = inputs[| 0].getValue();
|
var _surf = inputs[| 0].getValue();
|
||||||
|
|
|
@ -618,7 +618,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
apply_surface();
|
apply_surface();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -258,7 +258,7 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
static stepBegin = function() {
|
static stepBegin = function() {
|
||||||
use_cache = false;
|
use_cache = false;
|
||||||
|
|
||||||
array_safe_set(cache_result, ANIMATOR.current_frame, true);
|
array_safe_set(cache_result, PROJECT.animator.current_frame, true);
|
||||||
|
|
||||||
var node_list = getNodeList();
|
var node_list = getNodeList();
|
||||||
for(var i = 0; i < ds_list_size(node_list); i++) {
|
for(var i = 0; i < ds_list_size(node_list); i++) {
|
||||||
|
@ -267,8 +267,8 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
if(!n.use_cache) continue;
|
if(!n.use_cache) continue;
|
||||||
|
|
||||||
use_cache = true;
|
use_cache = true;
|
||||||
if(!array_safe_get(n.cache_result, ANIMATOR.current_frame))
|
if(!array_safe_get(n.cache_result, PROJECT.animator.current_frame))
|
||||||
array_safe_set(cache_result, ANIMATOR.current_frame, false);
|
array_safe_set(cache_result, PROJECT.animator.current_frame, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
var out_surf = false;
|
var out_surf = false;
|
||||||
|
|
|
@ -54,7 +54,7 @@ function Node_Compare(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(frame = ANIMATOR.current_frame) {
|
function update(frame = PROJECT.animator.current_frame) {
|
||||||
var mode = inputs[| 0].getValue();
|
var mode = inputs[| 0].getValue();
|
||||||
var a = inputs[| 1].getValue();
|
var a = inputs[| 1].getValue();
|
||||||
var b = inputs[| 2].getValue();
|
var b = inputs[| 2].getValue();
|
||||||
|
|
|
@ -51,7 +51,7 @@ function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
inputs[| 8].setVisible(_mode == 2, _mode == 2);
|
inputs[| 8].setVisible(_mode == 2, _mode == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _true = inputs[| 3].getValue();
|
var _true = inputs[| 3].getValue();
|
||||||
var _fals = inputs[| 4].getValue();
|
var _fals = inputs[| 4].getValue();
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,13 @@ function Node_Counter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
||||||
}
|
}
|
||||||
|
|
||||||
function process_data(_output, _data, _output_index, _array_index = 0) {
|
function process_data(_output, _data, _output_index, _array_index = 0) {
|
||||||
var time = ANIMATOR.current_frame;
|
var time = PROJECT.animator.current_frame;
|
||||||
var mode = _data[2];
|
var mode = _data[2];
|
||||||
var val = 0;
|
var val = 0;
|
||||||
|
|
||||||
switch(mode) {
|
switch(mode) {
|
||||||
case 0 : val = _data[0] + time * _data[1]; break;
|
case 0 : val = _data[0] + time * _data[1]; break;
|
||||||
case 1 : val = time / (ANIMATOR.frames_total - 1) * _data[1]; break;
|
case 1 : val = time / (PROJECT.animator.frames_total - 1) * _data[1]; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
|
|
|
@ -100,7 +100,7 @@ function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var path = inputs[| 0].getValue();
|
var path = inputs[| 0].getValue();
|
||||||
if(path == "") return;
|
if(path == "") return;
|
||||||
if(path_current != path) updatePaths(path);
|
if(path_current != path) updatePaths(path);
|
||||||
|
|
|
@ -48,7 +48,7 @@ function Node_CSV_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
||||||
file_text_close(f);
|
file_text_close(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) { writeFile(); }
|
static update = function(frame = PROJECT.animator.current_frame) { writeFile(); }
|
||||||
static onInspector1Update = function() { writeFile(); }
|
static onInspector1Update = function() { writeFile(); }
|
||||||
|
|
||||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||||
|
|
|
@ -13,7 +13,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
icon = noone;
|
icon = noone;
|
||||||
bg_spr = THEME.node_bg;
|
bg_spr = THEME.node_bg;
|
||||||
bg_sel_spr = THEME.node_active;
|
bg_sel_spr = THEME.node_active;
|
||||||
anim_priority = ds_map_size(NODE_MAP);
|
anim_priority = ds_map_size(PROJECT.nodeMap);
|
||||||
|
|
||||||
static resetInternalName = function() {
|
static resetInternalName = function() {
|
||||||
var str = string_replace_all(name, " ", "_");
|
var str = string_replace_all(name, " ", "_");
|
||||||
|
@ -21,13 +21,13 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
str = string_replace_all(str, "-", "");
|
str = string_replace_all(str, "-", "");
|
||||||
|
|
||||||
internalName = str + string(irandom_range(10000, 99999));
|
internalName = str + string(irandom_range(10000, 99999));
|
||||||
NODE_NAME_MAP[? internalName] = self;
|
PROJECT.nodeNameMap[? internalName] = self;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!LOADING && !APPENDING) {
|
if(!LOADING && !APPENDING) {
|
||||||
recordAction(ACTION_TYPE.node_added, self);
|
recordAction(ACTION_TYPE.node_added, self);
|
||||||
NODE_MAP[? node_id] = self;
|
PROJECT.nodeMap[? node_id] = self;
|
||||||
MODIFIED = true;
|
PROJECT.modified = true;
|
||||||
|
|
||||||
run_in(1, function() {
|
run_in(1, function() {
|
||||||
if(display_name != "") return;
|
if(display_name != "") return;
|
||||||
|
@ -251,7 +251,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
|
|
||||||
x = _x;
|
x = _x;
|
||||||
y = _y;
|
y = _y;
|
||||||
if(!LOADING) MODIFIED = true;
|
if(!LOADING) PROJECT.modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
insp1UpdateTooltip = __txtx("panel_inspector_execute", "Execute node");
|
insp1UpdateTooltip = __txtx("panel_inspector_execute", "Execute node");
|
||||||
|
@ -278,7 +278,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
if(use_cache) cacheArrayCheck();
|
if(use_cache) cacheArrayCheck();
|
||||||
var willUpdate = false;
|
var willUpdate = false;
|
||||||
|
|
||||||
if(ANIMATOR.frame_progress) {
|
if(PROJECT.animator.frame_progress) {
|
||||||
if(update_on_frame) willUpdate = true;
|
if(update_on_frame) willUpdate = true;
|
||||||
if(isAnimated()) willUpdate = true;
|
if(isAnimated()) willUpdate = true;
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
}
|
}
|
||||||
|
|
||||||
static resetRender = function() { setRenderStatus(false); }
|
static resetRender = function() { setRenderStatus(false); }
|
||||||
static isRenderActive = function() { return renderActive || (PREF_MAP[? "render_all_export"] && ANIMATOR.rendering); }
|
static isRenderActive = function() { return renderActive || (PREF_MAP[? "render_all_export"] && PROJECT.animator.rendering); }
|
||||||
|
|
||||||
static isRenderable = function(log = false) { //Check if every input is ready (updated)
|
static isRenderable = function(log = false) { //Check if every input is ready (updated)
|
||||||
if(!active) return false;
|
if(!active) return false;
|
||||||
|
@ -1094,7 +1094,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
static restore = function() {
|
static restore = function() {
|
||||||
if(active) return;
|
if(active) return;
|
||||||
enable();
|
enable();
|
||||||
ds_list_add(group == noone? NODES : group.getNodeList(), self);
|
ds_list_add(group == noone? PROJECT.nodes : group.getNodeList(), self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static onValidate = function() {
|
static onValidate = function() {
|
||||||
|
@ -1117,26 +1117,26 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
}
|
}
|
||||||
|
|
||||||
static cacheArrayCheck = function() {
|
static cacheArrayCheck = function() {
|
||||||
if(array_length(cached_output) != ANIMATOR.frames_total)
|
if(array_length(cached_output) != PROJECT.animator.frames_total)
|
||||||
array_resize(cached_output, ANIMATOR.frames_total);
|
array_resize(cached_output, PROJECT.animator.frames_total);
|
||||||
if(array_length(cache_result) != ANIMATOR.frames_total)
|
if(array_length(cache_result) != PROJECT.animator.frames_total)
|
||||||
array_resize(cache_result, ANIMATOR.frames_total);
|
array_resize(cache_result, PROJECT.animator.frames_total);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cacheCurrentFrame = function(_frame) {
|
static cacheCurrentFrame = function(_frame) {
|
||||||
cacheArrayCheck();
|
cacheArrayCheck();
|
||||||
if(ANIMATOR.current_frame < 0) return;
|
if(PROJECT.animator.current_frame < 0) return;
|
||||||
if(ANIMATOR.current_frame >= array_length(cached_output)) return;
|
if(PROJECT.animator.current_frame >= array_length(cached_output)) return;
|
||||||
|
|
||||||
surface_array_free(cached_output[ANIMATOR.current_frame]);
|
surface_array_free(cached_output[PROJECT.animator.current_frame]);
|
||||||
cached_output[ANIMATOR.current_frame] = surface_array_clone(_frame);
|
cached_output[PROJECT.animator.current_frame] = surface_array_clone(_frame);
|
||||||
|
|
||||||
array_safe_set(cache_result, ANIMATOR.current_frame, true);
|
array_safe_set(cache_result, PROJECT.animator.current_frame, true);
|
||||||
|
|
||||||
return cached_output[ANIMATOR.current_frame];
|
return cached_output[PROJECT.animator.current_frame];
|
||||||
}
|
}
|
||||||
|
|
||||||
static cacheExist = function(frame = ANIMATOR.current_frame) {
|
static cacheExist = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(frame < 0) return false;
|
if(frame < 0) return false;
|
||||||
|
|
||||||
if(frame >= array_length(cached_output)) return false;
|
if(frame >= array_length(cached_output)) return false;
|
||||||
|
@ -1147,7 +1147,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
return is_array(s) || surface_exists(s);
|
return is_array(s) || surface_exists(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getCacheFrame = function(frame = ANIMATOR.current_frame) {
|
static getCacheFrame = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(frame < 0) return false;
|
if(frame < 0) return false;
|
||||||
|
|
||||||
if(!cacheExist(frame)) return noone;
|
if(!cacheExist(frame)) return noone;
|
||||||
|
@ -1155,10 +1155,10 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
return surf;
|
return surf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static recoverCache = function(frame = ANIMATOR.current_frame) {
|
static recoverCache = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(!cacheExist(frame)) return false;
|
if(!cacheExist(frame)) return false;
|
||||||
|
|
||||||
var _s = cached_output[ANIMATOR.current_frame];
|
var _s = cached_output[PROJECT.animator.current_frame];
|
||||||
outputs[| 0].setValue(_s);
|
outputs[| 0].setValue(_s);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1167,8 +1167,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
if(!use_cache) return;
|
if(!use_cache) return;
|
||||||
if(!isRenderActive()) return;
|
if(!isRenderActive()) return;
|
||||||
|
|
||||||
if(array_length(cached_output) != ANIMATOR.frames_total)
|
if(array_length(cached_output) != PROJECT.animator.frames_total)
|
||||||
array_resize(cached_output, ANIMATOR.frames_total);
|
array_resize(cached_output, PROJECT.animator.frames_total);
|
||||||
for(var i = 0; i < array_length(cached_output); i++) {
|
for(var i = 0; i < array_length(cached_output); i++) {
|
||||||
var _s = cached_output[i];
|
var _s = cached_output[i];
|
||||||
if(is_surface(_s))
|
if(is_surface(_s))
|
||||||
|
@ -1259,7 +1259,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
var _node = nodeBuild(_type, x, y, target);
|
var _node = nodeBuild(_type, x, y, target);
|
||||||
CLONING = false;
|
CLONING = false;
|
||||||
|
|
||||||
LOADING_VERSION = SAVEFILE_VERSION;
|
PROJECT.version = SAVE_VERSION;
|
||||||
|
|
||||||
if(!_node) return;
|
if(!_node) return;
|
||||||
|
|
||||||
|
@ -1270,8 +1270,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
_node.applyDeserialize();
|
_node.applyDeserialize();
|
||||||
_node.node_id = _nid;
|
_node.node_id = _nid;
|
||||||
|
|
||||||
NODE_MAP[? node_id] = self;
|
PROJECT.nodeMap[? node_id] = self;
|
||||||
NODE_MAP[? _nid] = _node;
|
PROJECT.nodeMap[? _nid] = _node;
|
||||||
PANEL_ANIMATION.updatePropertyList();
|
PANEL_ANIMATION.updatePropertyList();
|
||||||
CLONING = false;
|
CLONING = false;
|
||||||
|
|
||||||
|
@ -1353,7 +1353,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
if(APPENDING) APPEND_MAP[? load_map.id] = node_id;
|
if(APPENDING) APPEND_MAP[? load_map.id] = node_id;
|
||||||
else node_id = load_map.id;
|
else node_id = load_map.id;
|
||||||
|
|
||||||
NODE_MAP[? node_id] = self;
|
PROJECT.nodeMap[? node_id] = self;
|
||||||
|
|
||||||
if(struct_has(load_map, "name"))
|
if(struct_has(load_map, "name"))
|
||||||
setDisplayName(load_map.name);
|
setDisplayName(load_map.name);
|
||||||
|
@ -1431,8 +1431,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
||||||
} else {
|
} else {
|
||||||
if(APPENDING) _group = GetAppendID(_group);
|
if(APPENDING) _group = GetAppendID(_group);
|
||||||
|
|
||||||
if(ds_map_exists(NODE_MAP, _group)) {
|
if(ds_map_exists(PROJECT.nodeMap, _group)) {
|
||||||
NODE_MAP[? _group].add(self);
|
PROJECT.nodeMap[? _group].add(self);
|
||||||
} else {
|
} else {
|
||||||
var txt = "Group load failed. Can't find node ID " + string(_group);
|
var txt = "Group load failed. Can't find node ID " + string(_group);
|
||||||
log_warning("LOAD", txt);
|
log_warning("LOAD", txt);
|
||||||
|
|
|
@ -71,7 +71,7 @@ function Node_Display_Image(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var path = inputs[| 0].getValue();
|
var path = inputs[| 0].getValue();
|
||||||
if(path == "") return;
|
if(path == "") return;
|
||||||
if(path_current != path) updatePaths(path);
|
if(path_current != path) updatePaths(path);
|
||||||
|
|
|
@ -19,14 +19,14 @@ Animated WebP (.webp)|*.webp",
|
||||||
}
|
}
|
||||||
|
|
||||||
function exportAll() {
|
function exportAll() {
|
||||||
ANIMATOR.rendering = true;
|
PROJECT.animator.rendering = true;
|
||||||
Render();
|
Render();
|
||||||
ANIMATOR.rendering = false;
|
PROJECT.animator.rendering = false;
|
||||||
|
|
||||||
var key = ds_map_find_first(NODE_MAP);
|
var key = ds_map_find_first(PROJECT.nodeMap);
|
||||||
repeat(ds_map_size(NODE_MAP)) {
|
repeat(ds_map_size(PROJECT.nodeMap)) {
|
||||||
var node = NODE_MAP[? key];
|
var node = PROJECT.nodeMap[? key];
|
||||||
key = ds_map_find_next(NODE_MAP, key);
|
key = ds_map_find_next(PROJECT.nodeMap, key);
|
||||||
|
|
||||||
if(!node.active) continue;
|
if(!node.active) continue;
|
||||||
if(instanceof(node) != "Node_Export") continue;
|
if(instanceof(node) != "Node_Export") continue;
|
||||||
|
@ -273,12 +273,12 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
var float_str = string_digits(str);
|
var float_str = string_digits(str);
|
||||||
if(float_str != "") {
|
if(float_str != "") {
|
||||||
var float_val = string_digits(float_str);
|
var float_val = string_digits(float_str);
|
||||||
var str_val = max(float_val - string_length(string(ANIMATOR.current_frame + strt)), 0);
|
var str_val = max(float_val - string_length(string(PROJECT.animator.current_frame + strt)), 0);
|
||||||
repeat(str_val)
|
repeat(str_val)
|
||||||
s += "0";
|
s += "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
s += string(ANIMATOR.current_frame + strt);
|
s += string(PROJECT.animator.current_frame + strt);
|
||||||
res = true;
|
res = true;
|
||||||
break;
|
break;
|
||||||
case "i" :
|
case "i" :
|
||||||
|
@ -383,7 +383,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
if(!is_surface(_surf)) continue;
|
if(!is_surface(_surf)) continue;
|
||||||
|
|
||||||
if(form == NODE_EXPORT_FORMAT.gif) {
|
if(form == NODE_EXPORT_FORMAT.gif) {
|
||||||
p = directory + "/" + string(i) + "/" + string_lead_zero(ANIMATOR.current_frame, 5) + ".png";
|
p = directory + "/" + string(i) + "/" + string_lead_zero(PROJECT.animator.current_frame, 5) + ".png";
|
||||||
} else {
|
} else {
|
||||||
if(is_array(path) && array_length(path) == array_length(surf))
|
if(is_array(path) && array_length(path) == array_length(surf))
|
||||||
p = pathString(path[ safe_mod(i, array_length(path)) ], suff, i);
|
p = pathString(path[ safe_mod(i, array_length(path)) ], suff, i);
|
||||||
|
@ -406,7 +406,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
if(is_array(path)) p = path[0];
|
if(is_array(path)) p = path[0];
|
||||||
|
|
||||||
if(form == NODE_EXPORT_FORMAT.gif)
|
if(form == NODE_EXPORT_FORMAT.gif)
|
||||||
p = directory + "/" + string_lead_zero(ANIMATOR.current_frame, 5) + ".png";
|
p = directory + "/" + string_lead_zero(PROJECT.animator.current_frame, 5) + ".png";
|
||||||
else
|
else
|
||||||
p = pathString(p, suff);
|
p = pathString(p, suff);
|
||||||
|
|
||||||
|
@ -444,9 +444,9 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
var form = inputs[| 3].getValue();
|
var form = inputs[| 3].getValue();
|
||||||
|
|
||||||
if(form == NODE_EXPORT_FORMAT.single) {
|
if(form == NODE_EXPORT_FORMAT.single) {
|
||||||
ANIMATOR.rendering = true;
|
PROJECT.animator.rendering = true;
|
||||||
Render();
|
Render();
|
||||||
ANIMATOR.rendering = false;
|
PROJECT.animator.rendering = false;
|
||||||
|
|
||||||
export();
|
export();
|
||||||
return;
|
return;
|
||||||
|
@ -454,10 +454,10 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
|
|
||||||
playing = true;
|
playing = true;
|
||||||
played = 0;
|
played = 0;
|
||||||
ANIMATOR.real_frame = -1;
|
PROJECT.animator.real_frame = -1;
|
||||||
ANIMATOR.current_frame = -1;
|
PROJECT.animator.current_frame = -1;
|
||||||
ANIMATOR.is_playing = true;
|
PROJECT.animator.is_playing = true;
|
||||||
ANIMATOR.rendering = true;
|
PROJECT.animator.rendering = true;
|
||||||
|
|
||||||
if(directory_exists(directory))
|
if(directory_exists(directory))
|
||||||
directory_destroy(directory);
|
directory_destroy(directory);
|
||||||
|
@ -498,24 +498,24 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
outputs[| 0].visible = isInLoop();
|
outputs[| 0].visible = isInLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var anim = inputs[| 3].getValue();
|
var anim = inputs[| 3].getValue();
|
||||||
if(anim == NODE_EXPORT_FORMAT.single) {
|
if(anim == NODE_EXPORT_FORMAT.single) {
|
||||||
if(isInLoop()) export();
|
if(isInLoop()) export();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ANIMATOR.is_playing) {
|
if(!PROJECT.animator.is_playing) {
|
||||||
playing = false;
|
playing = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ANIMATOR.frame_progress || !playing || ANIMATOR.current_frame <= -1)
|
if(!PROJECT.animator.frame_progress || !playing || PROJECT.animator.current_frame <= -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
export();
|
export();
|
||||||
|
|
||||||
if(ANIMATOR.current_frame < ANIMATOR.frames_total - 1)
|
if(PROJECT.animator.current_frame < PROJECT.animator.frames_total - 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(anim != NODE_EXPORT_FORMAT.gif)
|
if(anim != NODE_EXPORT_FORMAT.gif)
|
||||||
|
|
|
@ -15,7 +15,7 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group)
|
||||||
}
|
}
|
||||||
|
|
||||||
static doStepBegin = function() {
|
static doStepBegin = function() {
|
||||||
if(!ANIMATOR.frame_progress) return;
|
if(!PROJECT.animator.frame_progress) return;
|
||||||
setRenderStatus(false);
|
setRenderStatus(false);
|
||||||
UPDATE |= RENDER_TYPE.full; //force full render
|
UPDATE |= RENDER_TYPE.full; //force full render
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ function Node_Feedback_Input(_x, _y, _group = noone) : Node_Group_Input(_x, _y,
|
||||||
_node_output = vt;
|
_node_output = vt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ANIMATOR.current_frame > 0 && _node_output != noone && _node_output.node.cache_value != noone) //use cache from output
|
if(PROJECT.animator.current_frame > 0 && _node_output != noone && _node_output.node.cache_value != noone) //use cache from output
|
||||||
return [ _node_output.node.cache_value, inParent ];
|
return [ _node_output.node.cache_value, inParent ];
|
||||||
|
|
||||||
return outputs[| 0].getValueDefault();
|
return outputs[| 0].getValueDefault();
|
||||||
|
|
|
@ -11,9 +11,9 @@ function Node_Feedback_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
|
|
||||||
cache_value = -1;
|
cache_value = -1;
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(inputs[| 0].value_from == noone) return;
|
if(inputs[| 0].value_from == noone) return;
|
||||||
if(ANIMATOR.current_frame == ANIMATOR.frames_total - 1) {
|
if(PROJECT.animator.current_frame == PROJECT.animator.frames_total - 1) {
|
||||||
cache_value = noone;
|
cache_value = noone;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ function Node_Fluid_Add(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group) con
|
||||||
|
|
||||||
_prevPos = noone;
|
_prevPos = noone;
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _mat = inputs[| 1].getValue(frame);
|
var _mat = inputs[| 1].getValue(frame);
|
||||||
var _pos = inputs[| 2].getValue(frame);
|
var _pos = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -34,7 +34,7 @@ function Node_Fluid_Add_Collider(_x, _y, _group = noone) : Node_Fluid(_x, _y, _g
|
||||||
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _mat = inputs[| 1].getValue(frame);
|
var _mat = inputs[| 1].getValue(frame);
|
||||||
var _area = inputs[| 2].getValue(frame);
|
var _area = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -39,7 +39,7 @@ function Node_Fluid_Apply_Velocity(_x, _y, _group = noone) : Node_Fluid(_x, _y,
|
||||||
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _mat = inputs[| 1].getValue(frame);
|
var _mat = inputs[| 1].getValue(frame);
|
||||||
var _pos = inputs[| 2].getValue(frame);
|
var _pos = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -54,7 +54,7 @@ function Node_Fluid_Domain(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
domain = fd_rectangle_create(256, 256);
|
domain = fd_rectangle_create(256, 256);
|
||||||
_dim_old = [0, 0];
|
_dim_old = [0, 0];
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
RETURN_ON_REST
|
RETURN_ON_REST
|
||||||
|
|
||||||
var _dim = inputs[| 0].getValue(frame);
|
var _dim = inputs[| 0].getValue(frame);
|
||||||
|
@ -71,7 +71,7 @@ function Node_Fluid_Domain(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
var wrap = inputs[| 11].getValue(frame);
|
var wrap = inputs[| 11].getValue(frame);
|
||||||
//var loop = inputs[| 12].getValue(frame);
|
//var loop = inputs[| 12].getValue(frame);
|
||||||
|
|
||||||
if(ANIMATOR.current_frame == 0 || !is_surface(domain.sf_world)) {
|
if(PROJECT.animator.current_frame == 0 || !is_surface(domain.sf_world)) {
|
||||||
fd_rectangle_clear(domain);
|
fd_rectangle_clear(domain);
|
||||||
fd_rectangle_destroy(domain);
|
fd_rectangle_destroy(domain);
|
||||||
domain = fd_rectangle_create(_dim[0], _dim[1]);
|
domain = fd_rectangle_create(_dim[0], _dim[1]);
|
||||||
|
@ -116,9 +116,9 @@ function Node_Fluid_Domain(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
outputs[| 0].setValue(domain);
|
outputs[| 0].setValue(domain);
|
||||||
|
|
||||||
//if(!loop) return;
|
//if(!loop) return;
|
||||||
//if(ANIMATOR.current_frame != 0) return;
|
//if(PROJECT.animator.current_frame != 0) return;
|
||||||
|
|
||||||
//for( var i = 0; i < ANIMATOR.frames_total; i++ )
|
//for( var i = 0; i < PROJECT.animator.frames_total; i++ )
|
||||||
// updateForward(i, false);
|
// updateForward(i, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ function Node_Fluid_Render(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
|
|
||||||
static onInspector2Update = function() { clearCache(); }
|
static onInspector2Update = function() { clearCache(); }
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(recoverCache() || !ANIMATOR.is_playing)
|
if(recoverCache() || !PROJECT.animator.is_playing)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var _dim = inputs[| 1].getValue(frame);
|
var _dim = inputs[| 1].getValue(frame);
|
||||||
|
|
|
@ -37,7 +37,7 @@ function Node_Fluid_Repulse(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _pos = inputs[| 1].getValue(frame);
|
var _pos = inputs[| 1].getValue(frame);
|
||||||
var _rad = inputs[| 2].getValue(frame);
|
var _rad = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -31,7 +31,7 @@ function Node_Fluid_Turbulence(_x, _y, _group = noone) : Node_Fluid(_x, _y, _gro
|
||||||
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _are = inputs[| 1].getValue(frame);
|
var _are = inputs[| 1].getValue(frame);
|
||||||
var _str = inputs[| 2].getValue(frame);
|
var _str = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -17,8 +17,8 @@ function Node_Fluid_Update(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Fluid Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone);
|
outputs[| 0] = nodeValue("Fluid Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone);
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(!ANIMATOR.is_playing) return;
|
if(!PROJECT.animator.is_playing) return;
|
||||||
|
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _act = inputs[| 1].getValue(frame);
|
var _act = inputs[| 1].getValue(frame);
|
||||||
|
|
|
@ -41,7 +41,7 @@ function Node_Fluid_Vortex(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
||||||
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var _dom = inputs[| 0].getValue(frame);
|
var _dom = inputs[| 0].getValue(frame);
|
||||||
var _pos = inputs[| 1].getValue(frame);
|
var _pos = inputs[| 1].getValue(frame);
|
||||||
var _rad = inputs[| 2].getValue(frame);
|
var _rad = inputs[| 2].getValue(frame);
|
||||||
|
|
|
@ -176,16 +176,8 @@ function variable_editor(nodeVal) constructor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region define
|
|
||||||
globalvar GLOBAL_NODE;
|
|
||||||
gml_pragma("global", @"
|
|
||||||
globalvar GLOBAL_NODE;
|
|
||||||
GLOBAL_NODE = new Node_Global();
|
|
||||||
");
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
|
function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
|
||||||
name = "GLOBAL_NODE";
|
name = "GLOBAL";
|
||||||
display_name = "";
|
display_name = "";
|
||||||
|
|
||||||
group = noone;
|
group = noone;
|
||||||
|
|
|
@ -288,7 +288,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
|
|
||||||
PATCH_STATIC
|
PATCH_STATIC
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
if(is_undefined(inParent)) return;
|
if(is_undefined(inParent)) return;
|
||||||
|
|
||||||
var _dstype = inputs[| 0].getValue();
|
var _dstype = inputs[| 0].getValue();
|
||||||
|
|
|
@ -89,7 +89,7 @@ function Node_Image(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
static update = function(frame = ANIMATOR.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
var path = inputs[| 0].getValue();
|
var path = inputs[| 0].getValue();
|
||||||
var pad = inputs[| 1].getValue();
|
var pad = inputs[| 1].getValue();
|
||||||
if(path == "") return;
|
if(path == "") return;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue