mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-23 21:46:17 +01:00
Multiple project support.
This commit is contained in:
parent
d0d39e52e9
commit
22e8d39950
192 changed files with 915 additions and 770 deletions
|
@ -163,6 +163,7 @@
|
|||
{"name":"gameframe","order":2,"path":"folders/sprites/gameframe.yy",},
|
||||
{"name":"misc","order":3,"path":"folders/sprites/misc.yy",},
|
||||
{"name":"widgets","order":5,"path":"folders/widgets.yy",},
|
||||
{"name":"project","order":39,"path":"folders/functions/project.yy",},
|
||||
],
|
||||
"ResourceOrderSettings": [
|
||||
{"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":"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":"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":"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",},
|
||||
|
@ -793,7 +795,7 @@
|
|||
{"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_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_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",},
|
||||
|
@ -1211,7 +1213,6 @@
|
|||
{"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":"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":"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",},
|
||||
|
@ -1255,6 +1256,7 @@
|
|||
{"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":"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":"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",},
|
||||
|
|
|
@ -199,6 +199,7 @@
|
|||
{"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":"widgets","folderPath":"folders/widgets.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"project","folderPath":"folders/functions/project.yy",},
|
||||
],
|
||||
"IncludedFiles": [
|
||||
{"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_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_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.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.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_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",},
|
||||
|
@ -1345,7 +1348,7 @@
|
|||
{"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_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_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",},},
|
||||
|
@ -1881,6 +1884,7 @@
|
|||
{"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":"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":"migration_function","path":"scripts/migration_function/migration_function.yy",},},
|
||||
{"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},},
|
||||
|
|
|
@ -310,7 +310,7 @@
|
|||
"dialog_group_order_add": "Add separator",
|
||||
|
||||
"dialog_exit_title": "Project modified",
|
||||
"dialog_exit_content": "Save progress before exit?",
|
||||
"dialog_exit_content": "Save progress before close?",
|
||||
|
||||
"contest_open_discord": "Open in Discord",
|
||||
|
||||
|
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
|||
/// @description
|
||||
#region deserialize
|
||||
if(!struct_has(LOAD_ADDON, name)) exit;
|
||||
var _mp = json_parse(LOAD_ADDON[$ name]);
|
||||
if(!struct_has(PROJECT.addons, name)) exit;
|
||||
var _mp = json_parse(PROJECT.addons[$ name]);
|
||||
|
||||
lua_call(thread, "deserialize", _mp);
|
||||
#endregion
|
|
@ -8,18 +8,18 @@ event_inherited();
|
|||
#endregion
|
||||
|
||||
#region scaler
|
||||
scale_to = ANIMATOR.frames_total;
|
||||
scale_to = PROJECT.animator.frames_total;
|
||||
tb_scale_frame = new textBox(TEXTBOX_INPUT.number, function(to) {
|
||||
to = toNumber(to);
|
||||
scale_to = to;
|
||||
});
|
||||
|
||||
b_apply = button(function() {
|
||||
var fac = scale_to / ANIMATOR.frames_total;
|
||||
var key = ds_map_find_first(NODE_MAP);
|
||||
repeat(ds_map_size(NODE_MAP)) {
|
||||
var n = NODE_MAP[? key];
|
||||
key = ds_map_find_next(NODE_MAP, key);
|
||||
var fac = scale_to / PROJECT.animator.frames_total;
|
||||
var key = ds_map_find_first(PROJECT.nodeMap);
|
||||
repeat(ds_map_size(PROJECT.nodeMap)) {
|
||||
var n = PROJECT.nodeMap[? key];
|
||||
key = ds_map_find_next(PROJECT.nodeMap, key);
|
||||
if(!n || !n.active) continue;
|
||||
|
||||
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();
|
||||
}).setIcon(THEME.accept, 0, COLORS._main_icon_dark);
|
||||
#endregion
|
|
@ -22,7 +22,7 @@ if !ready exit;
|
|||
|
||||
var sx1 = tb_x + ui(96);
|
||||
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 by = yy;
|
||||
|
|
|
@ -12,14 +12,14 @@ event_inherited();
|
|||
|
||||
#region data
|
||||
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) {
|
||||
ANIMATOR.framerate = real(str);
|
||||
PROJECT.animator.framerate = real(str);
|
||||
})
|
||||
|
||||
eb_playback = buttonGroup([__txt("Loop"), __txt("Stop")], function(b) {
|
||||
ANIMATOR.playback = b;
|
||||
PROJECT.animator.playback = b;
|
||||
});
|
||||
#endregion
|
|
@ -17,19 +17,19 @@ if !ready exit;
|
|||
tb_length.register();
|
||||
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"));
|
||||
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);
|
||||
tb_framerate.setFocusHover(sFOCUS, sHOVER);
|
||||
tb_framerate.register();
|
||||
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"));
|
||||
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);
|
||||
eb_playback.setFocusHover(sFOCUS, sHOVER);
|
||||
eb_playback.register();
|
||||
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"));
|
||||
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
|
|
@ -2,6 +2,7 @@
|
|||
event_inherited();
|
||||
|
||||
#region data
|
||||
dialog_w = ui(400);
|
||||
project = PROJECT;
|
||||
dialog_w = ui(440);
|
||||
dialog_h = ui(140);
|
||||
#endregion
|
|
@ -1,10 +1,20 @@
|
|||
/// @description init
|
||||
if !ready exit;
|
||||
|
||||
draw_set_color(c_black);
|
||||
draw_set_alpha(0.5);
|
||||
draw_rectangle(0, 0, WIN_W, WIN_H, false);
|
||||
draw_set_alpha(1);
|
||||
#region dim BG
|
||||
var lowest = true;
|
||||
with(o_dialog_exit) {
|
||||
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
|
||||
draw_sprite_stretched(THEME.dialog_bg, 0, dialog_x, dialog_y, dialog_w, dialog_h);
|
||||
|
@ -13,13 +23,15 @@ draw_set_alpha(1);
|
|||
#endregion
|
||||
|
||||
#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_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);
|
||||
|
||||
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 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"));
|
||||
if(b == 2) {
|
||||
PREF_SAVE();
|
||||
game_end();
|
||||
|
||||
if(instance_number(o_dialog_exit) == 1)
|
||||
game_end();
|
||||
instance_destroy();
|
||||
}
|
||||
|
||||
bx0 -= bw + ui(12);
|
||||
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
||||
if(b == 2 && SAVE()) {
|
||||
if(b == 2 && SAVE(project)) {
|
||||
PREF_SAVE();
|
||||
game_end();
|
||||
if(instance_number(o_dialog_exit) == 1)
|
||||
game_end();
|
||||
instance_destroy();
|
||||
}
|
||||
#endregion
|
|
@ -2,10 +2,7 @@
|
|||
event_inherited();
|
||||
|
||||
#region data
|
||||
newFile = false;
|
||||
path = "";
|
||||
readonly = false;
|
||||
safe_mode = false;
|
||||
project = noone;
|
||||
|
||||
dialog_w = ui(400);
|
||||
dialog_h = ui(140);
|
|
@ -19,7 +19,7 @@ draw_set_alpha(1);
|
|||
py += line_get_height(, 4);
|
||||
|
||||
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 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);
|
||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txtx("dont_save", "Don't save"));
|
||||
if(b == 2) {
|
||||
if(newFile) __NEW();
|
||||
else __LOAD_PATH(path, readonly, safe_mode);
|
||||
closeProject(project);
|
||||
instance_destroy();
|
||||
}
|
||||
|
||||
|
@ -46,10 +45,8 @@ draw_set_alpha(1);
|
|||
var b = buttonInstant(THEME.button, bx0, by0, bw, bh, mouse_ui, sFOCUS, sHOVER);
|
||||
draw_text(bx0 + bw / 2, by0 + bh / 2, __txt("Save"));
|
||||
if(b == 2) {
|
||||
SAVE();
|
||||
|
||||
if(newFile) __NEW();
|
||||
else __LOAD_PATH(path, readonly, safe_mode);
|
||||
SAVE(project);
|
||||
closeProject(project);
|
||||
instance_destroy();
|
||||
}
|
||||
#endregion
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"resourceType": "GMObject",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "o_dialog_load",
|
||||
"name": "o_dialog_save",
|
||||
"eventList": [
|
||||
{"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,},
|
|
@ -14,12 +14,12 @@ event_inherited();
|
|||
tunnel_select = noone;
|
||||
tunnel_hover = noone;
|
||||
|
||||
var amo = ds_map_size(NODE_MAP);
|
||||
var k = ds_map_find_first(NODE_MAP);
|
||||
var amo = ds_map_size(PROJECT.nodeMap);
|
||||
var k = ds_map_find_first(PROJECT.nodeMap);
|
||||
|
||||
repeat(amo) {
|
||||
var node = NODE_MAP[? k];
|
||||
k = ds_map_find_next(NODE_MAP, k);
|
||||
var node = PROJECT.nodeMap[? k];
|
||||
k = ds_map_find_next(PROJECT.nodeMap, k);
|
||||
|
||||
if(instanceof(node) == "Node_Tunnel_In")
|
||||
array_push(tunnel_ins, node);
|
||||
|
@ -112,10 +112,10 @@ event_inherited();
|
|||
k = ds_map_find_next(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;
|
||||
|
||||
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_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub);
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
if(!DEMO) {
|
||||
addHotkey("", "Save", "S", MOD_KEY.ctrl, SAVE );
|
||||
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(); });
|
||||
}
|
||||
|
||||
|
@ -80,6 +81,9 @@
|
|||
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;
|
||||
HOTKEY_MOD = 0;
|
||||
HOTKEY_BLOCK = false;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/// @description init
|
||||
MODIFIED = false;
|
||||
PROJECT.modified = false;
|
||||
PREF_LOAD();
|
||||
|
||||
#region reset data
|
||||
|
|
|
@ -3,30 +3,30 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
|
|||
|
||||
//print("===== Step start =====");
|
||||
#region animation
|
||||
if(ANIMATOR.is_playing && ANIMATOR.play_freeze == 0) {
|
||||
ANIMATOR.time_since_last_frame += ANIMATOR.framerate * (delta_time / 1000000);
|
||||
if(PROJECT.animator.is_playing && PROJECT.animator.play_freeze == 0) {
|
||||
PROJECT.animator.time_since_last_frame += PROJECT.animator.framerate * (delta_time / 1000000);
|
||||
|
||||
if(ANIMATOR.time_since_last_frame >= 1)
|
||||
ANIMATOR.setFrame(ANIMATOR.real_frame + 1);
|
||||
if(PROJECT.animator.time_since_last_frame >= 1)
|
||||
PROJECT.animator.setFrame(PROJECT.animator.real_frame + 1);
|
||||
} else {
|
||||
ANIMATOR.frame_progress = false;
|
||||
ANIMATOR.setFrame(ANIMATOR.real_frame);
|
||||
ANIMATOR.time_since_last_frame = 0;
|
||||
PROJECT.animator.frame_progress = false;
|
||||
PROJECT.animator.setFrame(PROJECT.animator.real_frame);
|
||||
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
|
||||
|
||||
#region step
|
||||
GLOBAL_NODE.step();
|
||||
PROJECT.globalNode.step();
|
||||
|
||||
try {
|
||||
if(PANEL_MAIN != 0)
|
||||
PANEL_MAIN.step();
|
||||
|
||||
for(var i = 0; i < ds_list_size(NODES); i++) {
|
||||
NODES[| i].triggerCheck();
|
||||
NODES[| i].step();
|
||||
for(var i = 0; i < ds_list_size(PROJECT.nodes); i++) {
|
||||
PROJECT.nodes[| i].triggerCheck();
|
||||
PROJECT.nodes[| i].step();
|
||||
}
|
||||
} catch(e) {
|
||||
noti_warning("Step error: " + exception_print(e));
|
||||
|
@ -110,13 +110,13 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
|
|||
#endregion
|
||||
|
||||
#region window
|
||||
if(_modified != MODIFIED) {
|
||||
_modified = MODIFIED;
|
||||
if(_modified != PROJECT.modified) {
|
||||
_modified = PROJECT.modified;
|
||||
|
||||
var cap = "";
|
||||
if(SAFE_MODE) cap += "[SAFE MODE] ";
|
||||
if(READONLY) cap += "[READ ONLY] ";
|
||||
cap += CURRENT_PATH + (MODIFIED? "*" : "") + " - Pixel Composer";
|
||||
if(PROJECT.readonly) cap += "[READ ONLY] ";
|
||||
cap += PROJECT.path + (PROJECT.modified? "*" : "") + " - Pixel Composer";
|
||||
|
||||
window_set_caption(cap);
|
||||
}
|
||||
|
|
|
@ -51,13 +51,13 @@ _HOVERING_ELEMENT = noone;
|
|||
#region auto save
|
||||
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;
|
||||
var loc = DIRECTORY + "Autosave/";
|
||||
if(!directory_exists(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) + "-" +
|
||||
string_lead_zero(current_month, 2) + "-" +
|
||||
string_lead_zero(current_day, 2) + "T" +
|
||||
|
@ -65,7 +65,7 @@ _HOVERING_ELEMENT = noone;
|
|||
string_lead_zero(current_minute, 2) +
|
||||
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)); }
|
||||
}
|
||||
#endregion
|
||||
|
@ -74,20 +74,20 @@ _HOVERING_ELEMENT = noone;
|
|||
//physics_pause_enable(true);
|
||||
DEF_SURFACE_RESET();
|
||||
|
||||
var _k = ds_map_find_first(NODE_MAP);
|
||||
var _a = ds_map_size(NODE_MAP);
|
||||
var _k = ds_map_find_first(PROJECT.nodeMap);
|
||||
var _a = ds_map_size(PROJECT.nodeMap);
|
||||
repeat(_a) {
|
||||
NODE_MAP[? _k].stepBegin();
|
||||
_k = ds_map_find_next(NODE_MAP, _k);
|
||||
PROJECT.nodeMap[? _k].stepBegin();
|
||||
_k = ds_map_find_next(PROJECT.nodeMap, _k);
|
||||
}
|
||||
|
||||
if(ANIMATOR.is_playing || ANIMATOR.rendering) {
|
||||
if(ANIMATOR.frame_progress) {
|
||||
if(PROJECT.animator.is_playing || PROJECT.animator.rendering) {
|
||||
if(PROJECT.animator.frame_progress) {
|
||||
__addon_preAnim();
|
||||
Render();
|
||||
__addon_postAnim();
|
||||
}
|
||||
ANIMATOR.frame_progress = false;
|
||||
PROJECT.animator.frame_progress = false;
|
||||
} else {
|
||||
if(UPDATE & RENDER_TYPE.full)
|
||||
Render();
|
||||
|
|
|
@ -313,9 +313,9 @@ Project.fps = 0;
|
|||
|
||||
function lua_projectData(state) {
|
||||
lua_add_code(state, @"
|
||||
Project.frame = " + string(ANIMATOR.current_frame) + @";
|
||||
Project.frameTotal = " + string(ANIMATOR.frames_total) + @";
|
||||
Project.fps = " + string(ANIMATOR.framerate) + @";
|
||||
Project.frame = " + string(PROJECT.animator.current_frame) + @";
|
||||
Project.frameTotal = " + string(PROJECT.animator.frames_total) + @";
|
||||
Project.fps = " + string(PROJECT.animator.framerate) + @";
|
||||
");
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ function __Node_Base(x, y) constructor {
|
|||
anim_priority = -999;
|
||||
|
||||
static step = function() {}
|
||||
static update = function(frame = ANIMATOR.current_frame) {}
|
||||
static update = function(frame = PROJECT.animator.current_frame) {}
|
||||
|
||||
static valueUpdate = function(index) {}
|
||||
static triggerRender = function() {}
|
||||
|
|
|
@ -27,7 +27,7 @@ function Node_Iterator(_x, _y, _group = noone) : Node_Collection(_x, _y, _group)
|
|||
|
||||
static doInitLoop = function() {}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) { initLoop(); }
|
||||
static update = function(frame = PROJECT.animator.current_frame) { initLoop(); }
|
||||
|
||||
static outputNextNode = function() {
|
||||
LOG_BLOCK_START();
|
||||
|
|
|
@ -128,7 +128,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
for(var i = 0; i < attributes.part_amount; i++)
|
||||
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];
|
||||
|
||||
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();
|
||||
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);
|
||||
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_type = inputs[| 16].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 update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _inSurf = inputs[| 0].getValue();
|
||||
var _dist = inputs[| 4].getValue();
|
||||
var _scatt = inputs[| 24].getValue();
|
||||
|
|
|
@ -2,7 +2,7 @@ function Node_Fluid(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
color = COLORS.node_blend_fluid;
|
||||
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);
|
||||
print("Update " + string(frame) + ": " + name);
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ function _Node_Strand_Affector(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
active &= inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _typ = inputs[| 1].getValue();
|
||||
inputs[| 4].setVisible(_typ == 1);
|
||||
|
||||
|
|
|
@ -785,12 +785,12 @@
|
|||
[ "noti_warning", noti_warning ],
|
||||
|
||||
//animation
|
||||
[ "animation_playing", function() { return ANIMATOR.is_playing? lua_true : lua_false; }],
|
||||
[ "animation_play", function() { ANIMATOR.resume(); }],
|
||||
[ "animation_pause", function() { ANIMATOR.pause(); }],
|
||||
[ "animation_stop", function() { ANIMATOR.stop(); }],
|
||||
[ "animation_set_frame", function(frame) { ANIMATOR.setFrame(frame); }],
|
||||
[ "animation_render", function() { ANIMATOR.render(); }],
|
||||
[ "animation_playing", function() { return PROJECT.animator.is_playing? lua_true : lua_false; }],
|
||||
[ "animation_play", function() { PROJECT.animator.resume(); }],
|
||||
[ "animation_pause", function() { PROJECT.animator.pause(); }],
|
||||
[ "animation_stop", function() { PROJECT.animator.stop(); }],
|
||||
[ "animation_set_frame", function(frame) { PROJECT.animator.setFrame(frame); }],
|
||||
[ "animation_render", function() { PROJECT.animator.render(); }],
|
||||
|
||||
//panel
|
||||
[ "set_tooltip", function(txt) { TOOLTIP = txt; }],
|
||||
|
@ -817,29 +817,29 @@
|
|||
|
||||
//nodes
|
||||
[ "node_get", function(nodeId) {
|
||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
||||
return NODE_NAME_MAP[? nodeId];
|
||||
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||
return PROJECT.nodeNameMap[? nodeId];
|
||||
}],
|
||||
|
||||
[ "node_get_input_value", function(nodeId, input) {
|
||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
||||
var node = NODE_NAME_MAP[? nodeId];
|
||||
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||
var node = PROJECT.nodeNameMap[? nodeId];
|
||||
|
||||
if(!ds_map_exists(node.inputMap, input)) return 0;
|
||||
return node.inputMap[? input].getValue();
|
||||
}],
|
||||
|
||||
[ "node_set_input_value", function(nodeId, input, value) {
|
||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
||||
var node = NODE_NAME_MAP[? nodeId];
|
||||
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||
var node = PROJECT.nodeNameMap[? nodeId];
|
||||
|
||||
if(!ds_map_exists(node.inputMap, input)) return 0;
|
||||
return node.inputMap[? input].setValue(value);
|
||||
}],
|
||||
|
||||
[ "node_get_output_value", function(nodeId, input) {
|
||||
if(!ds_map_exists(NODE_NAME_MAP, nodeId)) return 0;
|
||||
var node = NODE_NAME_MAP[? nodeId];
|
||||
if(!ds_map_exists(PROJECT.nodeNameMap, nodeId)) return 0;
|
||||
var node = PROJECT.nodeNameMap[? nodeId];
|
||||
|
||||
if(!ds_map_exists(node.outputMap, input)) return 0;
|
||||
return node.outputMap[? input].getValue();
|
||||
|
|
|
@ -155,8 +155,8 @@ function __addon_lua_panel_variable(lua, panel) {
|
|||
);
|
||||
|
||||
lua_add_code(lua,
|
||||
"Animator.frame_current = " + string(ANIMATOR.current_frame) + "\n" +
|
||||
"Animator.frame_total = " + string(ANIMATOR.frames_total) + "\n" +
|
||||
"Animator.frame_rate = " + string(ANIMATOR.framerate) + "\n"
|
||||
"Animator.frame_current = " + string(PROJECT.animator.current_frame) + "\n" +
|
||||
"Animator.frame_total = " + string(PROJECT.animator.frames_total) + "\n" +
|
||||
"Animator.frame_rate = " + string(PROJECT.animator.framerate) + "\n"
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
#region global
|
||||
global.FLAG.keyframe_override = true;
|
||||
|
||||
enum ANIMATOR_END {
|
||||
loop,
|
||||
stop
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region animation class
|
||||
|
@ -45,13 +50,13 @@
|
|||
}
|
||||
|
||||
static resetAnimation = function() {
|
||||
var _key = ds_map_find_first(NODE_MAP);
|
||||
var amo = ds_map_size(NODE_MAP);
|
||||
var _key = ds_map_find_first(PROJECT.nodeMap);
|
||||
var amo = ds_map_size(PROJECT.nodeMap);
|
||||
|
||||
repeat(amo) {
|
||||
var _node = NODE_MAP[? _key];
|
||||
var _node = PROJECT.nodeMap[? _key];
|
||||
_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() {
|
||||
ANIMATOR.is_playing = !ANIMATOR.is_playing;
|
||||
ANIMATOR.frame_progress = true;
|
||||
is_playing = !is_playing;
|
||||
frame_progress = true;
|
||||
}
|
||||
|
||||
static pause = function() {
|
||||
ANIMATOR.is_playing = false;
|
||||
ANIMATOR.frame_progress = true;
|
||||
is_playing = false;
|
||||
frame_progress = true;
|
||||
}
|
||||
|
||||
static play = function() {
|
||||
ANIMATOR.is_playing = true;
|
||||
ANIMATOR.frame_progress = true;
|
||||
is_playing = true;
|
||||
frame_progress = true;
|
||||
}
|
||||
|
||||
static resume = function() {
|
||||
ANIMATOR.is_playing = true;
|
||||
ANIMATOR.frame_progress = true;
|
||||
is_playing = true;
|
||||
frame_progress = true;
|
||||
}
|
||||
|
||||
static stop = function() {
|
||||
|
@ -87,14 +92,4 @@
|
|||
setFrame(0);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region object
|
||||
enum ANIMATOR_END {
|
||||
loop,
|
||||
stop
|
||||
}
|
||||
|
||||
globalvar ANIMATOR;
|
||||
ANIMATOR = new AnimationManager();
|
||||
#endregion
|
|
@ -21,9 +21,9 @@ function __APPEND_MAP(_map, context = PANEL_GRAPH.getCurrentContext()) {
|
|||
|
||||
if(struct_has(_map, "version")) {
|
||||
var _v = _map.version;
|
||||
LOADING_VERSION = _v;
|
||||
if(_v != SAVEFILE_VERSION) {
|
||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVEFILE_VERSION);
|
||||
PROJECT.version = _v;
|
||||
if(_v != SAVE_VERSION) {
|
||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVE_VERSION);
|
||||
log_warning("FILE", warn)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ function ase_layer(name) constructor {
|
|||
cels[index] = cel;
|
||||
}
|
||||
|
||||
static getCel = function(index = ANIMATOR.current_frame) {
|
||||
static getCel = function(index = PROJECT.animator.current_frame) {
|
||||
var ind;
|
||||
|
||||
if(tag != noone) {
|
||||
|
|
|
@ -74,7 +74,7 @@ function exception_print(e) {
|
|||
function setException() {
|
||||
exception_unhandled_handler(function(ex) {
|
||||
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";
|
||||
tt += "\n" + ex.longMessage;
|
||||
|
|
|
@ -1,25 +1,47 @@
|
|||
#region save
|
||||
globalvar LOADING, LOADING_VERSION, APPENDING, CLONING, SAFE_MODE;
|
||||
globalvar LOAD_ADDON;
|
||||
globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
|
||||
globalvar LOADING, APPENDING, CLONING, SAFE_MODE;
|
||||
globalvar CONNECTION_CONFLICT, ALWAYS_FULL;
|
||||
|
||||
LOADING = false;
|
||||
LOAD_ADDON = {};
|
||||
CLONING = false;
|
||||
LOADING_VERSION = 0;
|
||||
APPENDING = false;
|
||||
READONLY = false;
|
||||
SAFE_MODE = false;
|
||||
LOADING = false;
|
||||
CLONING = false;
|
||||
APPENDING = false;
|
||||
SAFE_MODE = false;
|
||||
|
||||
CURRENT_PATH = "";
|
||||
MODIFIED = false;
|
||||
CONNECTION_CONFLICT = ds_queue_create();
|
||||
|
||||
randomize();
|
||||
GLOBAL_SEED = irandom(9999999999);
|
||||
ALWAYS_FULL = false;
|
||||
#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
|
||||
globalvar OS, DEBUG, THEME, COLOR_KEYS;
|
||||
OS = os_type;
|
||||
|
@ -29,22 +51,17 @@
|
|||
THEME = new Theme();
|
||||
COLOR_KEYS = [];
|
||||
|
||||
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING, BUILD_NUMBER;
|
||||
globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER;
|
||||
|
||||
VERSION = 1146;
|
||||
SAVEFILE_VERSION = 1440;
|
||||
VERSION_STRING = "1.14.6";
|
||||
BUILD_NUMBER = 114600;
|
||||
VERSION = 1146;
|
||||
SAVE_VERSION = 1440;
|
||||
VERSION_STRING = "1.14.6n1";
|
||||
BUILD_NUMBER = 114600;
|
||||
|
||||
globalvar NODES, NODE_MAP, APPEND_MAP, NODE_NAME_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();
|
||||
globalvar APPEND_MAP;
|
||||
APPEND_MAP = ds_map_create();
|
||||
|
||||
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
||||
HOTKEYS = ds_map_create();
|
||||
HOTKEY_CONTEXT = ds_list_create();
|
||||
HOTKEY_CONTEXT[| 0] = "";
|
||||
|
@ -56,9 +73,8 @@
|
|||
#region inputs
|
||||
globalvar FOCUS, FOCUS_STR, HOVER, HOVERING_ELEMENT, _HOVERING_ELEMENT;
|
||||
globalvar DOUBLE_CLICK;
|
||||
globalvar CURRENT_PATH, DIALOG_CLICK;
|
||||
globalvar DIALOG_CLICK;
|
||||
|
||||
CURRENT_PATH = "";
|
||||
DOUBLE_CLICK = false;
|
||||
FOCUS = noone;
|
||||
FOCUS_STR = "";
|
||||
|
@ -131,7 +147,7 @@
|
|||
|
||||
#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
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ function globalvar_viewer_draw(xx, yy, ww, _m, focus, hover, _scrollPane, rx, ry
|
|||
|
||||
if(var_editing) {
|
||||
var del = noone;
|
||||
if(ds_list_size(GLOBAL_NODE.inputs)) {
|
||||
if(ds_list_size(PROJECT.globalNode.inputs)) {
|
||||
yy += 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_w = ww;
|
||||
|
||||
for( var j = 0; j < ds_list_size(GLOBAL_NODE.inputs); j++ ) {
|
||||
var _inpu = GLOBAL_NODE.inputs[| j];
|
||||
for( var j = 0; j < ds_list_size(PROJECT.globalNode.inputs); j++ ) {
|
||||
var _inpu = PROJECT.globalNode.inputs[| j];
|
||||
var _edit = _inpu.editor;
|
||||
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)
|
||||
ds_list_delete(GLOBAL_NODE.inputs, del);
|
||||
ds_list_delete(PROJECT.globalNode.inputs, del);
|
||||
} else {
|
||||
for( var j = 0; j < ds_list_size(GLOBAL_NODE.inputs); j++ ) {
|
||||
var widg = drawWidget(xx, yy, ww, _m, GLOBAL_NODE.inputs[| j], true, focus, hover, _scrollPane, rx, ry);
|
||||
for( var j = 0; j < ds_list_size(PROJECT.globalNode.inputs); j++ ) {
|
||||
var widg = drawWidget(xx, yy, ww, _m, PROJECT.globalNode.inputs[| j], true, focus, hover, _scrollPane, rx, ry);
|
||||
var widH = widg[0];
|
||||
var mbRight = widg[1];
|
||||
|
||||
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;
|
||||
hh += lb_h + widH + padd;
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
function LOAD() {
|
||||
function LOAD() {
|
||||
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();
|
||||
if(path == "") return;
|
||||
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") return;
|
||||
|
||||
gc_collect();
|
||||
LOAD_PATH(path);
|
||||
|
||||
ds_list_clear(STATUSES);
|
||||
ds_list_clear(WARNING);
|
||||
ds_list_clear(ERRORS);
|
||||
}
|
||||
|
||||
function TEST_PATH(path) {
|
||||
|
@ -21,16 +17,25 @@ function TEST_PATH(path) {
|
|||
}
|
||||
|
||||
function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||
if(MODIFIED && !READONLY) {
|
||||
var dia = dialogCall(o_dialog_load);
|
||||
dia.path = path;
|
||||
dia.readonly = readonly;
|
||||
dia.safe_mode = safe_mode;
|
||||
} else
|
||||
__LOAD_PATH(path, readonly, safe_mode);
|
||||
var _PROJECT = PROJECT;
|
||||
PROJECT = new Project();
|
||||
if(PANEL_GRAPH.project.path == "" && !PANEL_GRAPH.project.modified) {
|
||||
PANEL_GRAPH.setProject(PROJECT);
|
||||
} else {
|
||||
var graph = new Panel_Graph(PROJECT);
|
||||
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;
|
||||
|
||||
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") {
|
||||
log_warning("LOAD", "File not a valid project");
|
||||
log_warning("LOAD", "File not a valid PROJECT");
|
||||
return false;
|
||||
}
|
||||
|
||||
LOADING = true;
|
||||
|
||||
nodeCleanUp();
|
||||
clearPanel();
|
||||
setPanel();
|
||||
if(!TESTING)
|
||||
instance_destroy(_p_dialog);
|
||||
ds_list_clear(ERRORS);
|
||||
|
||||
var temp_path = DIRECTORY + "_temp";
|
||||
if(file_exists(temp_path)) file_delete(temp_path);
|
||||
file_copy(path, temp_path);
|
||||
if(override) {
|
||||
nodeCleanUp();
|
||||
clearPanel();
|
||||
setPanel();
|
||||
if(!TESTING)
|
||||
instance_destroy(_p_dialog);
|
||||
ds_list_clear(ERRORS);
|
||||
}
|
||||
|
||||
ALWAYS_FULL = false;
|
||||
READONLY = readonly;
|
||||
SET_PATH(path);
|
||||
var temp_path = DIRECTORY + "temp";
|
||||
if(!directory_exists(temp_path))
|
||||
directory_create(temp_path);
|
||||
|
||||
var _load_content = json_load_struct(temp_path);
|
||||
var temp_file_path = temp_path + "/" + string(UUID_generate(6));
|
||||
if(file_exists(temp_file_path)) file_delete(temp_file_path);
|
||||
file_copy(path, temp_file_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")) {
|
||||
var _v = _load_content.version;
|
||||
LOADING_VERSION = _v;
|
||||
if(_v != SAVEFILE_VERSION) {
|
||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVEFILE_VERSION);
|
||||
PROJECT.version = _v;
|
||||
if(_v != SAVE_VERSION) {
|
||||
var warn = $"File version mismatch : loading file verion {_v} to Pixel Composer {SAVE_VERSION}";
|
||||
log_warning("LOAD", warn);
|
||||
}
|
||||
} 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);
|
||||
}
|
||||
|
||||
nodeCleanUp();
|
||||
|
||||
var create_list = ds_list_create();
|
||||
if(struct_has(_load_content, "nodes")) {
|
||||
try {
|
||||
|
@ -93,9 +102,9 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
|||
|
||||
try {
|
||||
if(struct_has(_load_content, "animator")) {
|
||||
var _anim_map = _load_content.animator;
|
||||
ANIMATOR.frames_total = _anim_map.frames_total;
|
||||
ANIMATOR.framerate = _anim_map.framerate;
|
||||
var _anim_map = _load_content.animator;
|
||||
PROJECT.animator.frames_total = _anim_map.frames_total;
|
||||
PROJECT.animator.framerate = _anim_map.framerate;
|
||||
}
|
||||
} catch(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));
|
||||
}
|
||||
|
||||
GLOBAL_NODE = new Node_Global();
|
||||
PROJECT.globalNode = new Node_Global();
|
||||
try {
|
||||
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"))
|
||||
GLOBAL_NODE.deserialize(_load_content.global_node);
|
||||
PROJECT.globalNode.deserialize(_load_content.global_node);
|
||||
} catch(e) {
|
||||
log_warning("LOAD, global", exception_print(e));
|
||||
}
|
||||
|
@ -121,10 +130,10 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
|||
try {
|
||||
if(struct_has(_load_content, "addon")) {
|
||||
var _addon = _load_content.addon;
|
||||
LOAD_ADDON = _addon;
|
||||
PROJECT.addons = _addon;
|
||||
struct_foreach(_addon, function(_name, _value) { addonLoad(_name, false); });
|
||||
} else
|
||||
LOAD_ADDON = {};
|
||||
PROJECT.addons = {};
|
||||
} catch(e) {
|
||||
log_warning("LOAD, addon", exception_print(e));
|
||||
}
|
||||
|
@ -199,9 +208,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
|
|||
Render();
|
||||
|
||||
LOADING = false;
|
||||
MODIFIED = false;
|
||||
|
||||
PANEL_ANIMATION.updatePropertyList();
|
||||
PROJECT.modified = false;
|
||||
|
||||
log_message("FILE", "load " + path, THEME.noti_icon_file_load);
|
||||
PANEL_MENU.setNotiIcon(THEME.noti_icon_file_load);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "files",
|
||||
"path": "folders/functions/files.yy",
|
||||
"name": "project",
|
||||
"path": "folders/functions/project.yy",
|
||||
},
|
||||
}
|
|
@ -87,7 +87,7 @@ function MetaDataManager() constructor {
|
|||
}
|
||||
|
||||
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);
|
||||
_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));
|
||||
}
|
||||
|
||||
if(version != SAVEFILE_VERSION) {
|
||||
if(version != SAVE_VERSION) {
|
||||
draw_set_font(f_p2);
|
||||
_h += ui(8);
|
||||
_h += string_height_ext(_ver, -1, ww);
|
||||
|
@ -177,7 +177,7 @@ function MetaDataManager() constructor {
|
|||
ty += string_height_ext(alias, -1, _w);
|
||||
}
|
||||
|
||||
if(version != SAVEFILE_VERSION) {
|
||||
if(version != SAVE_VERSION) {
|
||||
ty += ui(8);
|
||||
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_accent);
|
||||
draw_text_line(mx + ui(8), ty, _ver, -1, _w);
|
||||
|
|
|
@ -99,8 +99,8 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, "", THEME.prop_keyframe, 2) == 2) {
|
||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||
var _key = jun.animator.values[| j];
|
||||
if(_key.time > ANIMATOR.current_frame) {
|
||||
ANIMATOR.setFrame(_key.time);
|
||||
if(_key.time > PROJECT.animator.current_frame) {
|
||||
PROJECT.animator.setFrame(_key.time);
|
||||
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 kfFocus = false;
|
||||
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;
|
||||
kfFocus = true;
|
||||
break;
|
||||
|
@ -122,18 +122,18 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
var _add = false;
|
||||
for(var j = 0; j < ds_list_size(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)
|
||||
ds_list_delete(jun.animator.values, j);
|
||||
_add = true;
|
||||
break;
|
||||
} else if(_key.time > ANIMATOR.current_frame) {
|
||||
ds_list_insert(jun.animator.values, j, new valueKey(ANIMATOR.current_frame, jun.showValue(), jun.animator));
|
||||
} else if(_key.time > PROJECT.animator.current_frame) {
|
||||
ds_list_insert(jun.animator.values, j, new valueKey(PROJECT.animator.current_frame, jun.showValue(), jun.animator));
|
||||
_add = true;
|
||||
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);
|
||||
|
@ -141,10 +141,10 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
var _t = -1;
|
||||
for(var j = 0; j < ds_list_size(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;
|
||||
}
|
||||
if(_t > -1) ANIMATOR.setFrame(_t);
|
||||
if(_t > -1) PROJECT.animator.setFrame(_t);
|
||||
}
|
||||
|
||||
var lhf = lb_h / 2 - 4;
|
||||
|
|
|
@ -147,7 +147,7 @@ function Node_3D_Combine(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
_3d_clear_local_transform();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dim = inputs[| 0].getValue();
|
||||
var _lpos = inputs[| 1].getValue();
|
||||
var _lrot = inputs[| 2].getValue();
|
||||
|
|
|
@ -310,7 +310,7 @@ function Node_3D_Extrude(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
|||
case 2 : pass = "norm" break;
|
||||
}
|
||||
|
||||
if(_upda && ANIMATOR.frame_progress)
|
||||
if(_upda && PROJECT.animator.frame_progress)
|
||||
generateMesh();
|
||||
|
||||
var _transform = new __3d_transform(_pos,, _sca, _lpos, _lrot, _lsca, false, _dimS );
|
||||
|
|
|
@ -215,7 +215,7 @@ function Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
_3d_clear_local_transform();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
if(!surface_exists(tex_surface)) reset_tex();
|
||||
|
||||
if(do_reset_material) {
|
||||
|
|
|
@ -170,7 +170,7 @@
|
|||
// _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(do_reset_material) {
|
||||
|
|
|
@ -162,7 +162,7 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
inputs[| 21].setVisible(_proj);
|
||||
}
|
||||
|
||||
function update(frame = ANIMATOR.current_frame) {
|
||||
function update(frame = PROJECT.animator.current_frame) {
|
||||
var _dim = inputs[| 0].getValue();
|
||||
var _lpos = inputs[| 1].getValue();
|
||||
var _lrot = inputs[| 2].getValue();
|
||||
|
|
|
@ -141,7 +141,7 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
onAffect(part, str);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var val = inputs[| 0].getValue();
|
||||
outputs[| 0].setValue(val);
|
||||
if(val == -1) return;
|
||||
|
|
|
@ -29,7 +29,7 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var parts = inputs[| 0].getValue();
|
||||
if(!is_array(parts)) return;
|
||||
|
||||
|
|
|
@ -68,8 +68,8 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
outputs[| 0].setValue(_outSurf);
|
||||
}
|
||||
|
||||
function update(_time = ANIMATOR.current_frame) {
|
||||
if(!ANIMATOR.is_playing) {
|
||||
function update(_time = PROJECT.animator.current_frame) {
|
||||
if(!PROJECT.animator.is_playing) {
|
||||
recoverCache();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y
|
|||
static onUpdate = function() {
|
||||
RETURN_ON_REST
|
||||
|
||||
if(ANIMATOR.current_frame == 0)
|
||||
if(PROJECT.animator.current_frame == 0)
|
||||
reset();
|
||||
runVFX(ANIMATOR.current_frame);
|
||||
runVFX(PROJECT.animator.current_frame);
|
||||
|
||||
if(attributes.Output_pool) {
|
||||
outputs[| 0].setValue(parts);
|
||||
|
|
|
@ -44,7 +44,7 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.setVisible(false);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var parts = inputs[| 0].getValue();
|
||||
if(!is_array(parts)) return;
|
||||
|
||||
|
|
|
@ -5,12 +5,12 @@ function rearrange_priority(node, newpri) {
|
|||
var down = prev > newpri;
|
||||
node.anim_priority = newpri;
|
||||
|
||||
var amo = ds_map_size(NODE_MAP);
|
||||
var k = ds_map_find_first(NODE_MAP);
|
||||
var amo = ds_map_size(PROJECT.nodeMap);
|
||||
var k = ds_map_find_first(PROJECT.nodeMap);
|
||||
|
||||
repeat(amo) {
|
||||
var _node = NODE_MAP[? k];
|
||||
k = ds_map_find_next(NODE_MAP, k);
|
||||
var _node = PROJECT.nodeMap[? k];
|
||||
k = ds_map_find_next(PROJECT.nodeMap, k);
|
||||
|
||||
if(!_node.active) continue;
|
||||
if(_node == node) continue;
|
||||
|
|
|
@ -21,25 +21,25 @@ function Node_Animation_Control(_x, _y, _group = noone) : Node(_x, _y, _group) c
|
|||
|
||||
static step = function() {
|
||||
if(inputs[| 0].getValue())
|
||||
ANIMATOR.toggle();
|
||||
PROJECT.animator.toggle();
|
||||
|
||||
if(inputs[| 1].getValue())
|
||||
ANIMATOR.pause();
|
||||
PROJECT.animator.pause();
|
||||
|
||||
if(inputs[| 2].getValue())
|
||||
ANIMATOR.resume();
|
||||
PROJECT.animator.resume();
|
||||
|
||||
if(inputs[| 3].getValue()) {
|
||||
ANIMATOR.stop();
|
||||
ANIMATOR.play();
|
||||
PROJECT.animator.stop();
|
||||
PROJECT.animator.play();
|
||||
}
|
||||
|
||||
if(inputs[| 4].getValue())
|
||||
ANIMATOR.render();
|
||||
PROJECT.animator.render();
|
||||
|
||||
if(inputs[| 5].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 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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -237,7 +237,7 @@ function Node_Armature_Pose(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
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();
|
||||
if(_b == noone) return;
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ function Node_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
refreshDynamicInput();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _typ = getType();
|
||||
|
||||
outputs[| 0].type = _typ;
|
||||
|
|
|
@ -52,7 +52,7 @@ function Node_Array_Add(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
refreshDynamicInput();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
if(inputs[| 0].value_from == noone) {
|
||||
|
|
|
@ -25,7 +25,7 @@ function Node_Array_Copy(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
outputs[| 0].type = _typ;
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
var _ind = inputs[| 1].getValue();
|
||||
var _siz = inputs[| 2].getValue();
|
||||
|
|
|
@ -14,7 +14,7 @@ function Node_Array_CSV_Parse(_x, _y, _group = noone) : Node(_x, _y, _group) con
|
|||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0)
|
||||
.setArrayDepth(1);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _str = inputs[| 0].getValue();
|
||||
var _skp = inputs[| 1].getValue();
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ function Node_Array_Find(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
|
||||
outputs[| 0] = nodeValue("Index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
inputs[| 0].type = VALUE_TYPE.any;
|
||||
|
|
|
@ -54,7 +54,7 @@ function Node_Array_Get(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
return array_safe_get(_arr, index);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
if(!is_array(_arr)) return;
|
||||
|
|
|
@ -19,7 +19,7 @@ function Node_Array_Insert(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
inputs[| 0].type = VALUE_TYPE.any;
|
||||
|
|
|
@ -11,7 +11,7 @@ function Node_Array_Length(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
outputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
||||
|
||||
function update(frame = ANIMATOR.current_frame) {
|
||||
function update(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
inputs[| 0].type = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ function Node_Array_Range(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, []);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var st = inputs[| 0].getValue();
|
||||
var ed = inputs[| 1].getValue();
|
||||
var step = inputs[| 2].getValue();
|
||||
|
|
|
@ -42,7 +42,7 @@ function Node_Array_Remove(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
if(!is_array(_arr)) return;
|
||||
|
|
|
@ -11,7 +11,7 @@ function Node_Array_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
|
||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
inputs[| 0].type = VALUE_TYPE.any;
|
||||
|
|
|
@ -16,7 +16,7 @@ function Node_Array_Set(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
|
||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
inputs[| 0].type = VALUE_TYPE.any;
|
||||
|
|
|
@ -13,7 +13,7 @@ function Node_Array_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
var _shf = inputs[| 1].getValue();
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ function Node_Array_Shuffle(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
|
||||
outputs[| 0] = nodeValue("Shuffled array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var arr = inputs[| 0].getValue();
|
||||
var sed = inputs[| 1].getValue();
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
static sortAcs = function(v1, v2) { return v1[1] < v2[1]; }
|
||||
static 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 asc = inputs[| 1].getValue();
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ function Node_Array_Zip(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
refreshDynamicInput();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
if(inputs[| 0].value_from == noone) {
|
||||
|
|
|
@ -120,7 +120,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
var st = tag[? "Frame start"];
|
||||
var ed = tag[? "Frame end"];
|
||||
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 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 current_tag = inputs[| 2].getValue();
|
||||
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;
|
||||
for( var i = 0; i < ds_list_size(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;
|
||||
}
|
||||
|
||||
|
@ -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++ ) {
|
||||
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(!array_safe_get(vis, i, true)) continue;
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ function Node_ASE_layer(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
}
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var data = inputs[| 0].getValue();
|
||||
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;
|
||||
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 ww = data.content[? "Width"];
|
||||
|
|
|
@ -12,7 +12,7 @@ function Node_Atlas_Draw(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
|
||||
attribute_interpolation(true);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var dim = inputs[| 0].getValue();
|
||||
var atl = inputs[| 1].getValue();
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ function Node_Atlas_Get(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
outputs[| 5] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
||||
.setArrayDepth(1);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var atl = inputs[| 0].getValue();
|
||||
|
||||
if(atl == noone) return;
|
||||
|
|
|
@ -27,7 +27,7 @@ function Node_Atlas_Set(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
|
||||
outputs[| 0] = nodeValue("Atlas", self, JUNCTION_CONNECT.output, VALUE_TYPE.atlas, noone);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var atl = inputs[| 0].getValue();
|
||||
|
||||
if(atl == noone) return;
|
||||
|
|
|
@ -17,7 +17,7 @@ function Node_Audio_Window(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
outputs[| 0] = nodeValue("Windowed Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
|
||||
.setArrayDepth(1);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
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 siz = inputs[| 2].getValue();
|
||||
var res = [];
|
||||
var off = frame / ANIMATOR.framerate * sam;
|
||||
var off = frame / PROJECT.animator.framerate * sam;
|
||||
|
||||
for( var i = 0; i < array_length(_arr); i++ ) {
|
||||
var _dat = _arr[i];
|
||||
|
|
|
@ -25,7 +25,7 @@ function Node_Cache(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
cache_result[cache_loading_progress] = true;
|
||||
cache_loading_progress++;
|
||||
|
||||
if(cache_loading_progress == ANIMATOR.frames_total) {
|
||||
if(cache_loading_progress == PROJECT.animator.frames_total) {
|
||||
cache_loading = false;
|
||||
update();
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
cache_result[cache_loading_progress] = true;
|
||||
cache_loading_progress++;
|
||||
|
||||
if(cache_loading_progress == ANIMATOR.frames_total) {
|
||||
if(cache_loading_progress == PROJECT.animator.frames_total) {
|
||||
cache_loading = false;
|
||||
update();
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
var stp = inputs[| 3].getValue();
|
||||
|
||||
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)
|
||||
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);
|
||||
|
||||
if(!ANIMATOR.is_playing) return;
|
||||
if(!PROJECT.animator.is_playing) return;
|
||||
if(!inputs[| 0].value_from) return;
|
||||
|
||||
var _surf = inputs[| 0].getValue();
|
||||
|
|
|
@ -618,7 +618,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
}
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
apply_surface();
|
||||
}
|
||||
|
||||
|
|
|
@ -258,7 +258,7 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
static stepBegin = function() {
|
||||
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();
|
||||
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;
|
||||
|
||||
use_cache = true;
|
||||
if(!array_safe_get(n.cache_result, ANIMATOR.current_frame))
|
||||
array_safe_set(cache_result, ANIMATOR.current_frame, false);
|
||||
if(!array_safe_get(n.cache_result, PROJECT.animator.current_frame))
|
||||
array_safe_set(cache_result, PROJECT.animator.current_frame, false);
|
||||
}
|
||||
|
||||
var out_surf = false;
|
||||
|
|
|
@ -54,7 +54,7 @@ function Node_Compare(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
return 0;
|
||||
}
|
||||
|
||||
function update(frame = ANIMATOR.current_frame) {
|
||||
function update(frame = PROJECT.animator.current_frame) {
|
||||
var mode = inputs[| 0].getValue();
|
||||
var a = inputs[| 1].getValue();
|
||||
var b = inputs[| 2].getValue();
|
||||
|
|
|
@ -51,7 +51,7 @@ function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
inputs[| 8].setVisible(_mode == 2, _mode == 2);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _true = inputs[| 3].getValue();
|
||||
var _fals = inputs[| 4].getValue();
|
||||
|
||||
|
|
|
@ -27,13 +27,13 @@ function Node_Counter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
}
|
||||
|
||||
function process_data(_output, _data, _output_index, _array_index = 0) {
|
||||
var time = ANIMATOR.current_frame;
|
||||
var time = PROJECT.animator.current_frame;
|
||||
var mode = _data[2];
|
||||
var val = 0;
|
||||
|
||||
switch(mode) {
|
||||
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;
|
||||
|
|
|
@ -100,7 +100,7 @@ function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
update();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var path = inputs[| 0].getValue();
|
||||
if(path == "") return;
|
||||
if(path_current != path) updatePaths(path);
|
||||
|
|
|
@ -48,7 +48,7 @@ function Node_CSV_File_Write(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
|||
file_text_close(f);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) { writeFile(); }
|
||||
static update = function(frame = PROJECT.animator.current_frame) { writeFile(); }
|
||||
static onInspector1Update = function() { writeFile(); }
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
|
|
|
@ -13,7 +13,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
icon = noone;
|
||||
bg_spr = THEME.node_bg;
|
||||
bg_sel_spr = THEME.node_active;
|
||||
anim_priority = ds_map_size(NODE_MAP);
|
||||
anim_priority = ds_map_size(PROJECT.nodeMap);
|
||||
|
||||
static resetInternalName = function() {
|
||||
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, "-", "");
|
||||
|
||||
internalName = str + string(irandom_range(10000, 99999));
|
||||
NODE_NAME_MAP[? internalName] = self;
|
||||
PROJECT.nodeNameMap[? internalName] = self;
|
||||
}
|
||||
|
||||
if(!LOADING && !APPENDING) {
|
||||
recordAction(ACTION_TYPE.node_added, self);
|
||||
NODE_MAP[? node_id] = self;
|
||||
MODIFIED = true;
|
||||
PROJECT.nodeMap[? node_id] = self;
|
||||
PROJECT.modified = true;
|
||||
|
||||
run_in(1, function() {
|
||||
if(display_name != "") return;
|
||||
|
@ -251,7 +251,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
|
||||
x = _x;
|
||||
y = _y;
|
||||
if(!LOADING) MODIFIED = true;
|
||||
if(!LOADING) PROJECT.modified = true;
|
||||
}
|
||||
|
||||
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();
|
||||
var willUpdate = false;
|
||||
|
||||
if(ANIMATOR.frame_progress) {
|
||||
if(PROJECT.animator.frame_progress) {
|
||||
if(update_on_frame) 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 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)
|
||||
if(!active) return false;
|
||||
|
@ -1094,7 +1094,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
static restore = function() {
|
||||
if(active) return;
|
||||
enable();
|
||||
ds_list_add(group == noone? NODES : group.getNodeList(), self);
|
||||
ds_list_add(group == noone? PROJECT.nodes : group.getNodeList(), self);
|
||||
}
|
||||
|
||||
static onValidate = function() {
|
||||
|
@ -1117,26 +1117,26 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
}
|
||||
|
||||
static cacheArrayCheck = function() {
|
||||
if(array_length(cached_output) != ANIMATOR.frames_total)
|
||||
array_resize(cached_output, ANIMATOR.frames_total);
|
||||
if(array_length(cache_result) != ANIMATOR.frames_total)
|
||||
array_resize(cache_result, ANIMATOR.frames_total);
|
||||
if(array_length(cached_output) != PROJECT.animator.frames_total)
|
||||
array_resize(cached_output, PROJECT.animator.frames_total);
|
||||
if(array_length(cache_result) != PROJECT.animator.frames_total)
|
||||
array_resize(cache_result, PROJECT.animator.frames_total);
|
||||
}
|
||||
|
||||
static cacheCurrentFrame = function(_frame) {
|
||||
cacheArrayCheck();
|
||||
if(ANIMATOR.current_frame < 0) return;
|
||||
if(ANIMATOR.current_frame >= array_length(cached_output)) return;
|
||||
if(PROJECT.animator.current_frame < 0) return;
|
||||
if(PROJECT.animator.current_frame >= array_length(cached_output)) return;
|
||||
|
||||
surface_array_free(cached_output[ANIMATOR.current_frame]);
|
||||
cached_output[ANIMATOR.current_frame] = surface_array_clone(_frame);
|
||||
surface_array_free(cached_output[PROJECT.animator.current_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 >= 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);
|
||||
}
|
||||
|
||||
static getCacheFrame = function(frame = ANIMATOR.current_frame) {
|
||||
static getCacheFrame = function(frame = PROJECT.animator.current_frame) {
|
||||
if(frame < 0) return false;
|
||||
|
||||
if(!cacheExist(frame)) return noone;
|
||||
|
@ -1155,10 +1155,10 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
return surf;
|
||||
}
|
||||
|
||||
static recoverCache = function(frame = ANIMATOR.current_frame) {
|
||||
static recoverCache = function(frame = PROJECT.animator.current_frame) {
|
||||
if(!cacheExist(frame)) return false;
|
||||
|
||||
var _s = cached_output[ANIMATOR.current_frame];
|
||||
var _s = cached_output[PROJECT.animator.current_frame];
|
||||
outputs[| 0].setValue(_s);
|
||||
|
||||
return true;
|
||||
|
@ -1167,8 +1167,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
if(!use_cache) return;
|
||||
if(!isRenderActive()) return;
|
||||
|
||||
if(array_length(cached_output) != ANIMATOR.frames_total)
|
||||
array_resize(cached_output, ANIMATOR.frames_total);
|
||||
if(array_length(cached_output) != PROJECT.animator.frames_total)
|
||||
array_resize(cached_output, PROJECT.animator.frames_total);
|
||||
for(var i = 0; i < array_length(cached_output); i++) {
|
||||
var _s = cached_output[i];
|
||||
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);
|
||||
CLONING = false;
|
||||
|
||||
LOADING_VERSION = SAVEFILE_VERSION;
|
||||
PROJECT.version = SAVE_VERSION;
|
||||
|
||||
if(!_node) return;
|
||||
|
||||
|
@ -1270,8 +1270,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
_node.applyDeserialize();
|
||||
_node.node_id = _nid;
|
||||
|
||||
NODE_MAP[? node_id] = self;
|
||||
NODE_MAP[? _nid] = _node;
|
||||
PROJECT.nodeMap[? node_id] = self;
|
||||
PROJECT.nodeMap[? _nid] = _node;
|
||||
PANEL_ANIMATION.updatePropertyList();
|
||||
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;
|
||||
else node_id = load_map.id;
|
||||
|
||||
NODE_MAP[? node_id] = self;
|
||||
PROJECT.nodeMap[? node_id] = self;
|
||||
|
||||
if(struct_has(load_map, "name"))
|
||||
setDisplayName(load_map.name);
|
||||
|
@ -1431,8 +1431,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
} else {
|
||||
if(APPENDING) _group = GetAppendID(_group);
|
||||
|
||||
if(ds_map_exists(NODE_MAP, _group)) {
|
||||
NODE_MAP[? _group].add(self);
|
||||
if(ds_map_exists(PROJECT.nodeMap, _group)) {
|
||||
PROJECT.nodeMap[? _group].add(self);
|
||||
} else {
|
||||
var txt = "Group load failed. Can't find node ID " + string(_group);
|
||||
log_warning("LOAD", txt);
|
||||
|
|
|
@ -71,7 +71,7 @@ function Node_Display_Image(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
return false;
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var path = inputs[| 0].getValue();
|
||||
if(path == "") return;
|
||||
if(path_current != path) updatePaths(path);
|
||||
|
|
|
@ -19,14 +19,14 @@ Animated WebP (.webp)|*.webp",
|
|||
}
|
||||
|
||||
function exportAll() {
|
||||
ANIMATOR.rendering = true;
|
||||
PROJECT.animator.rendering = true;
|
||||
Render();
|
||||
ANIMATOR.rendering = false;
|
||||
PROJECT.animator.rendering = false;
|
||||
|
||||
var key = ds_map_find_first(NODE_MAP);
|
||||
repeat(ds_map_size(NODE_MAP)) {
|
||||
var node = NODE_MAP[? key];
|
||||
key = ds_map_find_next(NODE_MAP, key);
|
||||
var key = ds_map_find_first(PROJECT.nodeMap);
|
||||
repeat(ds_map_size(PROJECT.nodeMap)) {
|
||||
var node = PROJECT.nodeMap[? key];
|
||||
key = ds_map_find_next(PROJECT.nodeMap, key);
|
||||
|
||||
if(!node.active) continue;
|
||||
if(instanceof(node) != "Node_Export") continue;
|
||||
|
@ -273,12 +273,12 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
var float_str = string_digits(str);
|
||||
if(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)
|
||||
s += "0";
|
||||
}
|
||||
|
||||
s += string(ANIMATOR.current_frame + strt);
|
||||
s += string(PROJECT.animator.current_frame + strt);
|
||||
res = true;
|
||||
break;
|
||||
case "i" :
|
||||
|
@ -383,7 +383,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
if(!is_surface(_surf)) continue;
|
||||
|
||||
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 {
|
||||
if(is_array(path) && array_length(path) == array_length(surf))
|
||||
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(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
|
||||
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();
|
||||
|
||||
if(form == NODE_EXPORT_FORMAT.single) {
|
||||
ANIMATOR.rendering = true;
|
||||
PROJECT.animator.rendering = true;
|
||||
Render();
|
||||
ANIMATOR.rendering = false;
|
||||
PROJECT.animator.rendering = false;
|
||||
|
||||
export();
|
||||
return;
|
||||
|
@ -454,10 +454,10 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
|
||||
playing = true;
|
||||
played = 0;
|
||||
ANIMATOR.real_frame = -1;
|
||||
ANIMATOR.current_frame = -1;
|
||||
ANIMATOR.is_playing = true;
|
||||
ANIMATOR.rendering = true;
|
||||
PROJECT.animator.real_frame = -1;
|
||||
PROJECT.animator.current_frame = -1;
|
||||
PROJECT.animator.is_playing = true;
|
||||
PROJECT.animator.rendering = true;
|
||||
|
||||
if(directory_exists(directory))
|
||||
directory_destroy(directory);
|
||||
|
@ -498,24 +498,24 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
outputs[| 0].visible = isInLoop();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var anim = inputs[| 3].getValue();
|
||||
if(anim == NODE_EXPORT_FORMAT.single) {
|
||||
if(isInLoop()) export();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!ANIMATOR.is_playing) {
|
||||
if(!PROJECT.animator.is_playing) {
|
||||
playing = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!ANIMATOR.frame_progress || !playing || ANIMATOR.current_frame <= -1)
|
||||
if(!PROJECT.animator.frame_progress || !playing || PROJECT.animator.current_frame <= -1)
|
||||
return;
|
||||
|
||||
export();
|
||||
|
||||
if(ANIMATOR.current_frame < ANIMATOR.frames_total - 1)
|
||||
if(PROJECT.animator.current_frame < PROJECT.animator.frames_total - 1)
|
||||
return;
|
||||
|
||||
if(anim != NODE_EXPORT_FORMAT.gif)
|
||||
|
|
|
@ -15,7 +15,7 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group)
|
|||
}
|
||||
|
||||
static doStepBegin = function() {
|
||||
if(!ANIMATOR.frame_progress) return;
|
||||
if(!PROJECT.animator.frame_progress) return;
|
||||
setRenderStatus(false);
|
||||
UPDATE |= RENDER_TYPE.full; //force full render
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ function Node_Feedback_Input(_x, _y, _group = noone) : Node_Group_Input(_x, _y,
|
|||
_node_output = vt;
|
||||
}
|
||||
|
||||
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 outputs[| 0].getValueDefault();
|
||||
|
|
|
@ -11,9 +11,9 @@ function Node_Feedback_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
|||
|
||||
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(ANIMATOR.current_frame == ANIMATOR.frames_total - 1) {
|
||||
if(PROJECT.animator.current_frame == PROJECT.animator.frames_total - 1) {
|
||||
cache_value = noone;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ function Node_Fluid_Add(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group) con
|
|||
|
||||
_prevPos = noone;
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _mat = inputs[| 1].getValue(frame);
|
||||
var _pos = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -34,7 +34,7 @@ function Node_Fluid_Add_Collider(_x, _y, _group = noone) : Node_Fluid(_x, _y, _g
|
|||
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _mat = inputs[| 1].getValue(frame);
|
||||
var _area = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -39,7 +39,7 @@ function Node_Fluid_Apply_Velocity(_x, _y, _group = noone) : Node_Fluid(_x, _y,
|
|||
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _mat = inputs[| 1].getValue(frame);
|
||||
var _pos = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -54,7 +54,7 @@ function Node_Fluid_Domain(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
|||
domain = fd_rectangle_create(256, 256);
|
||||
_dim_old = [0, 0];
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
RETURN_ON_REST
|
||||
|
||||
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 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_destroy(domain);
|
||||
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);
|
||||
|
||||
//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);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,8 +30,8 @@ function Node_Fluid_Render(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
|||
|
||||
static onInspector2Update = function() { clearCache(); }
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
if(recoverCache() || !ANIMATOR.is_playing)
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
if(recoverCache() || !PROJECT.animator.is_playing)
|
||||
return;
|
||||
|
||||
var _dim = inputs[| 1].getValue(frame);
|
||||
|
|
|
@ -37,7 +37,7 @@ function Node_Fluid_Repulse(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
|||
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _pos = inputs[| 1].getValue(frame);
|
||||
var _rad = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -31,7 +31,7 @@ function Node_Fluid_Turbulence(_x, _y, _group = noone) : Node_Fluid(_x, _y, _gro
|
|||
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _are = inputs[| 1].getValue(frame);
|
||||
var _str = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -17,8 +17,8 @@ function Node_Fluid_Update(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
|||
|
||||
outputs[| 0] = nodeValue("Fluid Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
if(!ANIMATOR.is_playing) return;
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
if(!PROJECT.animator.is_playing) return;
|
||||
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _act = inputs[| 1].getValue(frame);
|
||||
|
|
|
@ -41,7 +41,7 @@ function Node_Fluid_Vortex(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
|
|||
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var _dom = inputs[| 0].getValue(frame);
|
||||
var _pos = inputs[| 1].getValue(frame);
|
||||
var _rad = inputs[| 2].getValue(frame);
|
||||
|
|
|
@ -176,16 +176,8 @@ function variable_editor(nodeVal) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
#region define
|
||||
globalvar GLOBAL_NODE;
|
||||
gml_pragma("global", @"
|
||||
globalvar GLOBAL_NODE;
|
||||
GLOBAL_NODE = new Node_Global();
|
||||
");
|
||||
#endregion
|
||||
|
||||
function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
|
||||
name = "GLOBAL_NODE";
|
||||
name = "GLOBAL";
|
||||
display_name = "";
|
||||
|
||||
group = noone;
|
||||
|
|
|
@ -288,7 +288,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
PATCH_STATIC
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
if(is_undefined(inParent)) return;
|
||||
|
||||
var _dstype = inputs[| 0].getValue();
|
||||
|
|
|
@ -89,7 +89,7 @@ function Node_Image(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
update();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
static update = function(frame = PROJECT.animator.current_frame) {
|
||||
var path = inputs[| 0].getValue();
|
||||
var pad = inputs[| 1].getValue();
|
||||
if(path == "") return;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue