Multiple project support.

This commit is contained in:
Tanasart 2023-07-06 19:49:16 +02:00
parent d0d39e52e9
commit 22e8d39950
192 changed files with 915 additions and 770 deletions

View file

@ -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",},

View file

@ -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",},},

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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,},

View file

@ -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);

View file

@ -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;

View file

@ -1,5 +1,5 @@
/// @description init /// @description init
MODIFIED = false; PROJECT.modified = false;
PREF_LOAD(); PREF_LOAD();
#region reset data #region reset data

View file

@ -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);
} }

View file

@ -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();

View file

@ -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) + @";
"); ");
} }

View file

@ -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() {}

View file

@ -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();

View file

@ -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();

View file

@ -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);

View file

@ -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);

View file

@ -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();

View file

@ -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"
); );
} }

View file

@ -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

View file

@ -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)
} }
} }

View file

@ -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) {

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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);

View file

@ -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",
}, },
} }

View file

@ -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);

View file

@ -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;

View file

@ -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();

View file

@ -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 );

View file

@ -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) {

View file

@ -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) {

View file

@ -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();

View file

@ -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;

View file

@ -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;

View file

@ -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;
} }

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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);
} }

View file

@ -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);
} }

View file

@ -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;

View file

@ -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;

View file

@ -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) {

View file

@ -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();

View file

@ -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();

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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();

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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) {

View file

@ -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;

View file

@ -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"];

View file

@ -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();

View file

@ -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;

View file

@ -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;

View file

@ -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];

View file

@ -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();
} }

View file

@ -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();

View file

@ -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();
} }

View file

@ -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;

View file

@ -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();

View file

@ -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();

View file

@ -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;

View file

@ -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);

View file

@ -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) {

View file

@ -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);

View file

@ -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);

View file

@ -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)

View file

@ -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
} }

View file

@ -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();

View file

@ -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;
} }

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);
} }

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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;

View file

@ -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();

View file

@ -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