1.0.1 update

This commit is contained in:
Tanasart 2022-12-19 19:35:30 +07:00
parent 04e17c30f5
commit 5d5e9f8f99
97 changed files with 1397 additions and 1599 deletions

View file

@ -18,6 +18,7 @@
{"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,}, {"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,},
{"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,}, {"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,},
{"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,}, {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,},
{"id":{"name":"draw_text_function","path":"scripts/draw_text_function/draw_text_function.yy",},"order":11,},
{"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":2,}, {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":2,},
{"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,}, {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,},
{"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},"order":1,}, {"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},"order":1,},
@ -418,6 +419,7 @@
{"id":{"name":"node_wrap_mesh","path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",},"order":7,}, {"id":{"name":"node_wrap_mesh","path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",},"order":7,},
{"id":{"name":"sh_blur_alpha","path":"shaders/sh_blur_alpha/sh_blur_alpha.yy",},"order":2,}, {"id":{"name":"sh_blur_alpha","path":"shaders/sh_blur_alpha/sh_blur_alpha.yy",},"order":2,},
{"id":{"name":"node_sprite_sheet","path":"scripts/node_sprite_sheet/node_sprite_sheet.yy",},"order":0,}, {"id":{"name":"node_sprite_sheet","path":"scripts/node_sprite_sheet/node_sprite_sheet.yy",},"order":0,},
{"id":{"name":"value_snap","path":"scripts/value_snap/value_snap.yy",},"order":10,},
{"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},"order":0,}, {"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},"order":0,},
{"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},"order":1,}, {"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},"order":1,},
{"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,}, {"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,},
@ -551,7 +553,7 @@
{"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,}, {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,},
{"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":14,}, {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":14,},
{"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},"order":7,}, {"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},"order":7,},
{"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":12,}, {"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":10,},
{"id":{"name":"s_node_iterator_index","path":"sprites/s_node_iterator_index/s_node_iterator_index.yy",},"order":8,}, {"id":{"name":"s_node_iterator_index","path":"sprites/s_node_iterator_index/s_node_iterator_index.yy",},"order":8,},
{"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},"order":25,}, {"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},"order":25,},
{"id":{"name":"preferences","path":"scripts/preferences/preferences.yy",},"order":4,}, {"id":{"name":"preferences","path":"scripts/preferences/preferences.yy",},"order":4,},
@ -888,7 +890,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_frame_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_frame_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_gradient_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_gradient_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_valign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_valign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_selector_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_selector_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_filter_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_filter_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -947,9 +948,11 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_arrow.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
], ],
"MetaData": { "MetaData": {
"IDEVersion": "2022.11.1.56", "IDEVersion": "2022.11.1.56",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -69,6 +69,7 @@
"node_wiggler_frame": "blue_grey", "node_wiggler_frame": "blue_grey",
"node_border_file_drop": "cyan", "node_border_file_drop": "cyan",
"scrollbar_bg": "blue_dkblack",
"scrollbar_hover": "blue_white", "scrollbar_hover": "blue_white",
"scrollbar_idle": "blue_grey", "scrollbar_idle": "blue_grey",

View file

@ -912,6 +912,13 @@
"yorigin": 18, "yorigin": 18,
"slice": null "slice": null
}, },
"anchor_arrow": {
"path": "./preview/anchor_arrow.png",
"subimages": 2,
"xorigin": 18,
"yorigin": 18,
"slice": null
},
"preview_crosshair": { "preview_crosshair": {
"path": "./preview/s_preview_crosshair.png", "path": "./preview/s_preview_crosshair.png",
"subimages": 1, "subimages": 1,

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

View file

@ -123,7 +123,7 @@ event_inherited();
if(i == ADD_NODE_PAGE) { if(i == ADD_NODE_PAGE) {
draw_sprite_stretched(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg); draw_sprite_stretched(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg);
} else if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _y + hh, ui(100), _y + hh + hg - 1)) { } else if(sHOVER && catagory_pane.hover && point_in_rectangle(_m[0], _m[1], 0, _y + hh, ui(100), _y + hh + hg - 1)) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg, c_white, 0.75); draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg, c_white, 0.75);
if(mouse_click(mb_left, sFOCUS)) { if(mouse_click(mb_left, sFOCUS)) {
setPage(i); setPage(i);
@ -143,7 +143,8 @@ event_inherited();
draw_clear_alpha(c_white, 0); draw_clear_alpha(c_white, 0);
var node_count = ds_list_size(node_list); var node_count = ds_list_size(node_list);
var hh = 0; var hh = 0;
var _hover = sHOVER && content_pane.hover;
if(ADD_NODE_MODE == 0) { if(ADD_NODE_MODE == 0) {
var grid_size = ui(64); var grid_size = ui(64);
@ -170,7 +171,7 @@ event_inherited();
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size); draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
BLEND_NORMAL BLEND_NORMAL
if(sHOVER && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) { if(_hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) if(mouse_press(mb_left, sFOCUS))
buildNode(_node); buildNode(_node);
@ -183,7 +184,7 @@ event_inherited();
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text); draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
name_height = max(name_height, string_height_ext(_node.name, -1, grid_width) + 8); name_height = max(name_height, string_height_ext(_node.name, -1, grid_width) + 8);
draw_text_ext(_boxx + grid_size / 2, yy + grid_size + 4, _node.name, -1, grid_width); draw_text_ext_add(_boxx + grid_size / 2, yy + grid_size + 4, _node.name, -1, grid_width);
} }
} }
var hght = grid_size + grid_space + name_height; var hght = grid_size + grid_space + name_height;
@ -206,7 +207,7 @@ event_inherited();
BLEND_NORMAL BLEND_NORMAL
} }
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) { if(_hover && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) {
draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) if(mouse_press(mb_left, sFOCUS))
buildNode(_node); buildNode(_node);
@ -220,7 +221,7 @@ event_inherited();
} }
draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text);
draw_text(list_height + ui(20), yy + list_height / 2, _node.name); draw_text_add(list_height + ui(20), yy + list_height / 2, _node.name);
yy += list_height; yy += list_height;
hh += list_height; hh += list_height;
@ -302,6 +303,7 @@ event_inherited();
var amo = ds_list_size(search_list); var amo = ds_list_size(search_list);
var hh = 0; var hh = 0;
var _hover = sHOVER && search_pane.hover;
if(ADD_NODE_MODE == 0) { if(ADD_NODE_MODE == 0) {
var grid_size = ui(64); var grid_size = ui(64);
@ -353,9 +355,9 @@ event_inherited();
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text); draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
var txt = _node.name; var txt = _node.name;
name_height = max(name_height, string_height_ext(txt, -1, grid_width) + ui(8)); name_height = max(name_height, string_height_ext(txt, -1, grid_width) + ui(8));
draw_text_ext(_boxx + grid_size / 2, yy + grid_size + 4, txt, -1, grid_width); draw_text_ext_add(_boxx + grid_size / 2, yy + grid_size + 4, txt, -1, grid_width);
if(sHOVER && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) { if(_hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
node_selecting = i; node_selecting = i;
if(mouse_press(mb_left, sFOCUS)) if(mouse_press(mb_left, sFOCUS))
buildNode(_node, _param); buildNode(_node, _param);
@ -417,9 +419,9 @@ event_inherited();
} }
draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text);
draw_text(list_height + ui(20), yy + list_height / 2, _node.name); draw_text_add(list_height + ui(20), yy + list_height / 2, _node.name);
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) { if(_hover && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) {
node_selecting = i; node_selecting = i;
if(mouse_press(mb_left, sFOCUS)) if(mouse_press(mb_left, sFOCUS))
buildNode(_node, _param); buildNode(_node, _param);

View file

@ -79,7 +79,7 @@ event_inherited();
draw_sprite_stretched(THEME.node_bg, 0, xx, yy, grid_size, grid_size); draw_sprite_stretched(THEME.node_bg, 0, xx, yy, grid_size, grid_size);
BLEND_NORMAL BLEND_NORMAL
if(sHOVER && point_in_rectangle(_m[0], _m[1], xx, yy, xx + grid_size, yy + grid_size)) { if(sHOVER && contentPane.hover && point_in_rectangle(_m[0], _m[1], xx, yy, xx + grid_size, yy + grid_size)) {
draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) { if(mouse_press(mb_left, sFOCUS)) {
target.onModify(content.path); target.onModify(content.path);
@ -111,7 +111,8 @@ event_inherited();
var hh = 8; var hh = 8;
for(var i = 0; i < ds_list_size(global.ASSETS.subDir); i++) { for(var i = 0; i < ds_list_size(global.ASSETS.subDir); i++) {
var hg = global.ASSETS.subDir[| i].draw(self, ui(8), _y + 8, _m, folderPane.w - ui(16), sHOVER, sFOCUS, global.ASSETS); var hg = global.ASSETS.subDir[| i].draw(self, ui(8), _y + 8, _m, folderPane.w - ui(16),
sHOVER && folderPane.hover, sFOCUS, global.ASSETS);
hh += hg; hh += hg;
_y += hg; _y += hg;
} }

View file

@ -41,6 +41,7 @@ event_inherited();
var _gs = sp_preset_size; var _gs = sp_preset_size;
var yy = _y + ui(8); var yy = _y + ui(8);
var _height, pre_amo; var _height, pre_amo;
var _hover = sHOVER && sp_presets.hover;
draw_clear_alpha(COLORS.panel_bg_clear, 0); draw_clear_alpha(COLORS.panel_bg_clear, 0);
for(var i = 0; i < ds_list_size(presets); i++) { for(var i = 0; i < ds_list_size(presets); i++) {
@ -53,7 +54,7 @@ event_inherited();
else else
_height = ui(56); _height = ui(56);
var isHover = sHOVER && point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + _height); var isHover = _hover && point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + _height);
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), _height); draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), _height);
if(isHover) if(isHover)
@ -67,7 +68,7 @@ event_inherited();
drawPalette(presets[| i], ui(16), yy + ui(28), ww, ui(20)); drawPalette(presets[| i], ui(16), yy + ui(28), ww, ui(20));
if(!click_block && mouse_click(mb_left, sFOCUS)) { if(!click_block && mouse_click(mb_left, sFOCUS)) {
if(preset_selecting == i && sHOVER && point_in_rectangle(_m[0], _m[1], ui(16), yy + ui(28), ui(16) + ww, yy + ui(28) + _height)) { if(preset_selecting == i && _hover && point_in_rectangle(_m[0], _m[1], ui(16), yy + ui(28), ui(16) + ww, yy + ui(28) + _height)) {
var m_ax = _m[0] - ui(16); var m_ax = _m[0] - ui(16);
var m_ay = _m[1] - (yy + ui(28)); var m_ay = _m[1] - (yy + ui(28));

View file

@ -106,26 +106,25 @@ event_inherited();
var hh = ui(32); var hh = ui(32);
var yy = _y + ui(8); var yy = _y + ui(8);
var hg = ui(52); var hg = ui(52);
var _hover = sHOVER && sp_presets.hover;
draw_clear_alpha(COLORS.panel_bg_clear, 0); draw_clear_alpha(COLORS.panel_bg_clear, 0);
for(var i = 0; i < ds_list_size(presets); i++) { for(var i = 0; i < ds_list_size(presets); i++) {
var isHover = point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + hg); var isHover = point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + hg);
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), hg); draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), hg);
if(sHOVER && isHover) if(_hover && isHover)
draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1);
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub); draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub);
draw_text(ui(16), yy + ui(8), preset_name[| i]); draw_text(ui(16), yy + ui(8), preset_name[| i]);
draw_gradient(ui(16), yy + ui(28), ww, ui(16), presets[| i]); draw_gradient(ui(16), yy + ui(28), ww, ui(16), presets[| i]);
if(sFOCUS && isHover) { if(_hover && isHover && mouse_press(mb_left, sFOCUS)) {
if(mouse_press(mb_left, sFOCUS)) { var target = presets[| i];
var target = presets[| i]; ds_list_clear(gradient);
ds_list_clear(gradient); for( var i = 0; i < ds_list_size(target); i++ ) {
for( var i = 0; i < ds_list_size(target); i++ ) { ds_list_add(gradient, new valueKey(target[| i].time, target[| i].value));
ds_list_add(gradient, new valueKey(target[| i].time, target[| i].value));
}
} }
} }

View file

@ -18,7 +18,7 @@ if !ready exit;
cb_enable.hover = sHOVER; cb_enable.hover = sHOVER;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(dialog_x + ui(32), yy, "Snap to grid"); draw_text(dialog_x + ui(32), yy, "Snap to grid");
cb_enable.draw(dialog_x + dialog_w - ww / 2, yy, PANEL_GRAPH.node_drag_snap, mouse_ui,, fa_center, fa_center); cb_enable.draw(dialog_x + dialog_w - ui(24) - ww / 2, yy, PANEL_GRAPH.node_drag_snap, mouse_ui,, fa_center, fa_center);
yy += ui(40); yy += ui(40);
tb_size.active = sFOCUS; tb_size.active = sFOCUS;

View file

@ -57,7 +57,7 @@ event_inherited();
draw_sprite_stretched(THEME.ui_panel_bg, 0, xx, yy, ww, hh); draw_sprite_stretched(THEME.ui_panel_bg, 0, xx, yy, ww, hh);
if(sHOVER && point_in_rectangle(_m[0], _m[1], xx, yy, xx + ww, yy + hh)) { if(sHOVER && sp_content.hover && point_in_rectangle(_m[0], _m[1], xx, yy, xx + ww, yy + hh)) {
inb_hover = index; inb_hover = index;
if(dragging == -1) if(dragging == -1)
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, xx, yy, ww, hh, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.ui_panel_active, 0, xx, yy, ww, hh, COLORS._main_accent, 1);

View file

@ -24,7 +24,7 @@ event_inherited();
var amo = ds_list_size(STATUSES); var amo = ds_list_size(STATUSES);
draw_set_font(f_p3); draw_set_font(f_p3);
var timeW = string_width("00:00"); var timeW = string_width("00:00:00");
for( var i = 0; i < ds_list_size(STATUSES); i++ ) { for( var i = 0; i < ds_list_size(STATUSES); i++ ) {
var index = amo - 1 - i; var index = amo - 1 - i;
@ -38,7 +38,7 @@ event_inherited();
var cc = COLORS.dialog_notification_bg; var cc = COLORS.dialog_notification_bg;
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg, 1); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg, 1);
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) { if(sHOVER && sp_noti.hover && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) {
cc = COLORS.dialog_notification_bg_hover; cc = COLORS.dialog_notification_bg_hover;
if(noti.onClick != noone && mouse_press(mb_left, sFOCUS)) if(noti.onClick != noone && mouse_press(mb_left, sFOCUS))

View file

@ -56,7 +56,7 @@ event_inherited();
draw_clear_alpha(COLORS.panel_bg_clear, 0); draw_clear_alpha(COLORS.panel_bg_clear, 0);
for(var i = 0; i < ds_list_size(presets); i++) { for(var i = 0; i < ds_list_size(presets); i++) {
var isHover = sHOVER && point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + hg); var isHover = sHOVER && sp_presets.hover && point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_preset_w - ui(16), yy + hg);
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), hg); draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_preset_w - ui(16), hg);
if(isHover) if(isHover)
draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_preset_w - ui(16), hg, COLORS._main_accent, 1);

View file

@ -278,7 +278,7 @@ event_inherited();
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(8), yy + th / 2, keyStr); draw_text(ui(8), yy + th / 2, keyStr);
var b = buttonInstant(THEME.button, cx, yy + ui(2), cw, ch, _m, sFOCUS, sHOVER); var b = buttonInstant(THEME.button, cx, yy + ui(2), cw, ch, _m, sFOCUS, sHOVER && sp_colors.hover);
draw_sprite_stretched_ext(THEME.color_picker_sample, 0, cx + ui(2), yy + ui(2 + 2), cw - ui(4), ch - ui(4), val, 1); draw_sprite_stretched_ext(THEME.color_picker_sample, 0, cx + ui(2), yy + ui(2 + 2), cw - ui(4), ch - ui(4), val, 1);
if(b == 2) { if(b == 2) {
@ -343,7 +343,7 @@ event_inherited();
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(8), yy + th / 2, _pref[0]); draw_text(ui(8), yy + th / 2, _pref[0]);
_pref[2].active = sFOCUS; _pref[2].active = sFOCUS;
_pref[2].hover = sHOVER; _pref[2].hover = sHOVER && sp_pref.hover;
switch(instanceof(_pref[2])) { switch(instanceof(_pref[2])) {
case "textBox" : case "textBox" :
@ -468,9 +468,10 @@ event_inherited();
draw_sprite_stretched(THEME.button_hide, 2, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12)); draw_sprite_stretched(THEME.button_hide, 2, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12));
} else { } else {
if(buttonInstant(THEME.button_hide, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12), _m, sFOCUS, sHOVER) == 2) { if(buttonInstant(THEME.button_hide, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12),
hk_editing = key; _m, sFOCUS, sHOVER && sp_hotkey.hover) == 2) {
keyboard_lastchar = pkey; hk_editing = key;
keyboard_lastchar = pkey;
} }
} }
draw_set_text(f_p0, fa_right, fa_top, hk_editing == key? COLORS._main_text_accent : COLORS._main_text); draw_set_text(f_p0, fa_right, fa_top, hk_editing == key? COLORS._main_text_accent : COLORS._main_text);

View file

@ -29,7 +29,7 @@ event_inherited();
var preset = pres[i]; var preset = pres[i];
var _yy = _y + hh * i; var _yy = _y + hh * i;
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _yy, sc_presets.w, _yy + hh)) { if(sHOVER && sc_presets.hover && point_in_rectangle(_m[0], _m[1], 0, _yy, sc_presets.w, _yy + hh)) {
draw_sprite_stretched(THEME.node_bg, 0, 0, _yy, sc_presets.w - ui(12), hh); draw_sprite_stretched(THEME.node_bg, 0, 0, _yy, sc_presets.w - ui(12), hh);
if(mouse_click(mb_left, sFOCUS)) { if(mouse_click(mb_left, sFOCUS)) {
node.deserialize(preset.content, true, true); node.deserialize(preset.content, true, true);

View file

@ -3,16 +3,20 @@ event_inherited();
#region data #region data
dialog_w = ui(320); dialog_w = ui(320);
dialog_h = ui(260); dialog_h = ui(300);
destroy_on_click_out = true; destroy_on_click_out = true;
#endregion #endregion
#region data #region data
cb_enable = new checkBox(function(str) { cb_enable = new checkBox(function() {
PANEL_PREVIEW.grid_show = !PANEL_PREVIEW.grid_show; PANEL_PREVIEW.grid_show = !PANEL_PREVIEW.grid_show;
}); });
cb_snap = new checkBox(function() {
PANEL_PREVIEW.grid_snap = !PANEL_PREVIEW.grid_snap;
});
tb_width = new textBox(TEXTBOX_INPUT.number, function(str) { tb_width = new textBox(TEXTBOX_INPUT.number, function(str) {
PANEL_PREVIEW.grid_width = max(1, real(str)); PANEL_PREVIEW.grid_width = max(1, real(str));
}); });

View file

@ -18,7 +18,14 @@ if !ready exit;
cb_enable.hover = sHOVER; cb_enable.hover = sHOVER;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(dialog_x + ui(32), yy, "Enabled"); draw_text(dialog_x + ui(32), yy, "Enabled");
cb_enable.draw(dialog_x + dialog_w - ww / 2, yy, PANEL_PREVIEW.grid_show, mouse_ui,, fa_center, fa_center); cb_enable.draw(dialog_x + dialog_w - ui(24) - ww / 2, yy, PANEL_PREVIEW.grid_show, mouse_ui,, fa_center, fa_center);
yy += ui(40);
cb_snap.active = sFOCUS;
cb_snap.hover = sHOVER;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(dialog_x + ui(32), yy, "Snap to grid");
cb_snap.draw(dialog_x + dialog_w - ui(24) - ww / 2, yy, PANEL_PREVIEW.grid_snap, mouse_ui,, fa_center, fa_center);
yy += ui(40); yy += ui(40);
tb_width.active = sFOCUS; tb_width.active = sFOCUS;

View file

@ -21,7 +21,7 @@ event_inherited();
for(var i = 0; i < array_length(data); i++) { for(var i = 0; i < array_length(data); i++) {
var _ly = _y + i * hght; var _ly = _y + i * hght;
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _ly + 1, _dw, _ly + hght - 1)) { if(sHOVER && sc_content.hover && point_in_rectangle(_m[0], _m[1], 0, _ly + 1, _dw, _ly + hght - 1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, 0, _ly, _dw, hght, COLORS.dialog_menubox_highlight, 1); draw_sprite_stretched_ext(THEME.textbox, 3, 0, _ly, _dw, hght, COLORS.dialog_menubox_highlight, 1);
if(mouse_press(mb_left, sFOCUS)) { if(mouse_press(mb_left, sFOCUS)) {

View file

@ -27,7 +27,7 @@ event_inherited();
if(!file_exists(_rec)) continue; if(!file_exists(_rec)) continue;
draw_sprite_stretched(THEME.ui_panel_bg, 1, 0, _y, ww, hg); draw_sprite_stretched(THEME.ui_panel_bg, 1, 0, _y, ww, hg);
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _y, ww, _y + hg)) { if(sHOVER && sp_recent.hover && point_in_rectangle(_m[0], _m[1], 0, _y, ww, _y + hg)) {
draw_sprite_stretched_ext(THEME.node_active, 0, 0, _y, ww, hg, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, 0, _y, ww, hg, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) { if(mouse_press(mb_left, sFOCUS)) {
@ -77,7 +77,7 @@ event_inherited();
var _boxx = _nx; var _boxx = _nx;
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_width, grid_heigh); draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_width, grid_heigh);
if(sHOVER && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_heigh)) { if(sHOVER && sp_sample.hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_heigh)) {
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_width, grid_heigh, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_width, grid_heigh, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) { if(mouse_press(mb_left, sFOCUS)) {
LOAD_PATH(_node.path, true); LOAD_PATH(_node.path, true);
@ -109,7 +109,7 @@ event_inherited();
draw_set_text(f_p1, fa_center, fa_top, COLORS._main_text); draw_set_text(f_p1, fa_center, fa_top, COLORS._main_text);
name_height = max(name_height, string_height_ext(_node.name, -1, grid_width) + ui(8)); name_height = max(name_height, string_height_ext(_node.name, -1, grid_width) + ui(8));
draw_text_ext(tx, ty + line_height() - ui(2), _node.name, -1, grid_width); draw_text_ext_add(tx, ty + line_height() - ui(2), _node.name, -1, grid_width);
} }
} }
var hght = grid_heigh + grid_space + name_height + ui(20); var hght = grid_heigh + grid_space + name_height + ui(20);

View file

@ -14,15 +14,12 @@
if(fr <= ANIMATOR.real_frame + 1) if(fr <= ANIMATOR.real_frame + 1)
ANIMATOR.real_frame = fr; ANIMATOR.real_frame = fr;
if(round(ANIMATOR.real_frame) >= ANIMATOR.frames_total) { if(round(ANIMATOR.real_frame) >= ANIMATOR.frames_total) {
switch(ANIMATOR.playback) { if(ANIMATOR.playback == ANIMATOR_END.stop || ANIMATOR.stopOnEnd) {
case ANIMATOR_END.loop : ANIMATOR.setFrame(ANIMATOR.frames_total - 1);
ANIMATOR.setFrame(0); ANIMATOR.is_playing = false;
break; ANIMATOR.stopOnEnd = false;
case ANIMATOR_END.stop : } else
ANIMATOR.setFrame(ANIMATOR.frames_total - 1); ANIMATOR.setFrame(0);
ANIMATOR.is_playing = false;
break;
}
} }
} else { } else {
ANIMATOR.setFrame(ANIMATOR.real_frame); ANIMATOR.setFrame(ANIMATOR.real_frame);

View file

@ -2,9 +2,9 @@
"resourceType": "GMWindowsOptions", "resourceType": "GMWindowsOptions",
"resourceVersion": "1.1", "resourceVersion": "1.1",
"name": "Windows", "name": "Windows",
"option_windows_display_name": "Pixel Composer 1.0.0", "option_windows_display_name": "Pixel Composer 1.0.1",
"option_windows_executable_name": "${project_name} 1.0.0.exe", "option_windows_executable_name": "${project_name} 1.0.1.exe",
"option_windows_version": "1.0.0.0", "option_windows_version": "1.0.1.0",
"option_windows_company_info": "MakhamDev", "option_windows_company_info": "MakhamDev",
"option_windows_product_info": "Pixel Composer", "option_windows_product_info": "Pixel Composer",
"option_windows_copyright_info": "", "option_windows_copyright_info": "",

View file

@ -322,8 +322,8 @@ function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
} }
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
if(onDrawOverlay != -1) if(onDrawOverlay != -1)
onDrawOverlay(active, _x, _y, _s, _mx, _my); onDrawOverlay(active, _x, _y, _s, _mx, _my);
} }

View file

@ -55,8 +55,8 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
current_data = []; current_data = [];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
var parts = inputs[| 0].getValue(); var parts = inputs[| 0].getValue();
if(!parts) return; if(!parts) return;

View file

@ -303,8 +303,8 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
runVFX(ANIMATOR.current_frame); runVFX(ANIMATOR.current_frame);
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
if(onDrawOverlay != -1) if(onDrawOverlay != -1)
onDrawOverlay(active, _x, _y, _s, _mx, _my); onDrawOverlay(active, _x, _y, _s, _mx, _my);
} }

View file

@ -7,6 +7,7 @@
is_playing = false; is_playing = false;
frame_progress = false; frame_progress = false;
stopOnEnd = false;
playback = ANIMATOR_END.loop; playback = ANIMATOR_END.loop;
static setFrame = function(frame) { static setFrame = function(frame) {
@ -22,6 +23,11 @@
#endregion #endregion
#region object #region object
enum ANIMATOR_END {
loop,
stop
}
globalvar ANIMATOR; globalvar ANIMATOR;
ANIMATOR = new AnimationManager(); ANIMATOR = new AnimationManager();
#endregion #endregion

View file

@ -5,26 +5,26 @@ function checkBox(_onClick) constructor {
onClick = _onClick; onClick = _onClick;
static draw = function(_x, _y, _value, _m, ss = ui(28), halign = fa_left, valign = fa_top) { static draw = function(_x, _y, _value, _m, ss = ui(28), halign = fa_left, valign = fa_top) {
var _dx, _dy;
switch(halign) { switch(halign) {
case fa_left: _x = _x; break; case fa_left: _dx = _x; break;
case fa_center: _x = _x - ss / 2; break; case fa_center: _dx = _x - ss / 2; break;
case fa_right: _x = _x - ss; break; case fa_right: _dx = _x - ss; break;
} }
switch(valign) { switch(valign) {
case fa_top: _y = _y; break; case fa_top: _dy = _y; break;
case fa_center: _y = _y - ss / 2; break; case fa_center: _dy = _y - ss / 2; break;
case fa_bottom: _y = _y - ss; break; case fa_bottom: _dy = _y - ss; break;
} }
draw_sprite_stretched(THEME.checkbox, _value * 2, _x, _y, ss, ss); draw_sprite_stretched(THEME.checkbox, _value * 2, _dx, _dy, ss, ss);
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + ss, _y + ss)) { if(hover && point_in_rectangle(_m[0], _m[1], _dx, _dy, _dx + ss, _dy + ss)) {
draw_sprite_stretched(THEME.checkbox, _value * 2 + 1, _x, _y, ss, ss); draw_sprite_stretched(THEME.checkbox, _value * 2 + 1, _dx, _dy, ss, ss);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active))
if(onClick) onClick(); if(onClick) onClick();
}
} }
hover = false; hover = false;

View file

@ -18,6 +18,6 @@ function draw_sprite_ui(spr, ind, _x, _y, xscale = 1, yscale = 1, rot = 0, color
draw_sprite_ext(spr, ind, _x, _y, xscale_ui, yscale_ui, rot, color, alpha); draw_sprite_ext(spr, ind, _x, _y, xscale_ui, yscale_ui, rot, color, alpha);
} }
function draw_sprite_ui_uniform(spr, ind, _x, _y, scale = 1, color = c_white, alpha = 1) { function draw_sprite_ui_uniform(spr, ind, _x, _y, scale = 1, color = c_white, alpha = 1, rot = 0) {
draw_sprite_ui(spr, ind, _x, _y, scale, scale, 0, color, alpha); draw_sprite_ui(spr, ind, _x, _y, scale, scale, rot, color, alpha);
} }

View file

@ -0,0 +1,11 @@
function draw_text_add(_x, _y, _text){
BLEND_ADD
draw_text(_x, _y, _text);
BLEND_NORMAL
}
function draw_text_ext_add(_x, _y, _text, _sep, _w){
BLEND_ADD
draw_text_ext(_x, _y, _text, _sep, _w);
BLEND_NORMAL
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "draw_text_function",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "draw",
"path": "folders/functions/draw.yy",
},
}

View file

@ -20,9 +20,9 @@
COLOR_KEYS = []; COLOR_KEYS = [];
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING;
VERSION = 1000; VERSION = 1010;
SAVEFILE_VERSION = 1000; SAVEFILE_VERSION = 1000;
VERSION_STRING = "1.0.0"; VERSION_STRING = "1.0.1";
globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT; globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT;
@ -36,11 +36,6 @@
globalvar CURSOR, TOOLTIP, DIALOG_DEPTH_HOVER, KEYBOARD_STRING; globalvar CURSOR, TOOLTIP, DIALOG_DEPTH_HOVER, KEYBOARD_STRING;
globalvar UPDATE, RENDER_STACK; globalvar UPDATE, RENDER_STACK;
enum ANIMATOR_END {
loop,
stop
}
#endregion #endregion
#region inputs #region inputs

View file

@ -53,7 +53,7 @@ function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con
["Render", false], 11, 10 ["Render", false], 11, 10
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _shape = inputs[| 1].getValue(); var _shape = inputs[| 1].getValue();
switch(_shape) { switch(_shape) {
@ -62,14 +62,14 @@ function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
break; break;
case LIGHT_SHAPE_2D.line : case LIGHT_SHAPE_2D.line :
case LIGHT_SHAPE_2D.line_asym : case LIGHT_SHAPE_2D.line_asym :
case LIGHT_SHAPE_2D.spot : case LIGHT_SHAPE_2D.spot :
inputs[| 6].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 6].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 7].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 7].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
break; break;
} }
} }

View file

@ -142,8 +142,8 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
var _dim = inputs[| 2].getValue(); var _dim = inputs[| 2].getValue();
var _pos = inputs[| 3].getValue(); var _pos = inputs[| 3].getValue();
@ -224,7 +224,7 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
} }
} }
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my) inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)
} }
static update = function() { static update = function() {

View file

@ -182,8 +182,8 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my)) if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny))
active = false; active = false;
var _dim = inputs[| 1].getValue(); var _dim = inputs[| 1].getValue();
@ -265,7 +265,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
} }
} }
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
#region 3D setup #region 3D setup

View file

@ -67,8 +67,8 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my)) if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny))
active = false; active = false;
var _dim = inputs[| 1].getValue(); var _dim = inputs[| 1].getValue();
@ -150,14 +150,11 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
} }
} }
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {
var _inSurf = inputs[| 0].getValue(); var _inSurf = inputs[| 0].getValue();
var _ww = surface_get_width(_inSurf);
var _hh = surface_get_height(_inSurf);
var _dim = inputs[| 1].getValue(); var _dim = inputs[| 1].getValue();
var _pos = inputs[| 2].getValue(); var _pos = inputs[| 2].getValue();
var _rot = inputs[| 3].getValue(); var _rot = inputs[| 3].getValue();
@ -171,6 +168,9 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var _aclr = inputs[| 17].getValue(); var _aclr = inputs[| 17].getValue();
var _usetex = inputs[| 5].getValue(); var _usetex = inputs[| 5].getValue();
var _ww = _usetex? _dim[0] : surface_get_width(_inSurf);
var _hh = _usetex? _dim[1] : surface_get_height(_inSurf);
for(var i = 6; i <= 11; i++) inputs[| i].setVisible(_usetex); for(var i = 6; i <= 11; i++) inputs[| i].setVisible(_usetex);
inputs[| 0].setVisible(true, !_usetex); inputs[| 0].setVisible(true, !_usetex);
@ -212,12 +212,12 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[0])); vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[0]));
matrix_stack_pop(); matrix_stack_pop();
matrix_stack_push(matrix_build(0, 0, -0.5, 0, 0, 0, 1, 1, 1)); matrix_stack_push(matrix_build(0, 0, -0.5, 0, 180, 0, 1, 1, 1));
matrix_set(matrix_world, matrix_stack_top()); matrix_set(matrix_world, matrix_stack_top());
vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[1])); vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[1]));
matrix_stack_pop(); matrix_stack_pop();
matrix_stack_push(matrix_build(0, 0.5, 0, 90, 0, 0, 1, 1, 1)); matrix_stack_push(matrix_build(0, 0.5, 0, -90, 0, 0, 1, 1, 1));
matrix_set(matrix_world, matrix_stack_top()); matrix_set(matrix_world, matrix_stack_top());
vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[2])); vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[2]));
matrix_stack_pop(); matrix_stack_pop();
@ -227,7 +227,7 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[3])); vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[3]));
matrix_stack_pop(); matrix_stack_pop();
matrix_stack_push(matrix_build(0.5, 0, 0, 0, 90, 0, 1, 1, 1)); matrix_stack_push(matrix_build(0.5, 0, 0, 0, -90, 0, 1, 1, 1));
matrix_set(matrix_world, matrix_stack_top()); matrix_set(matrix_world, matrix_stack_top());
vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[4])); vertex_submit(PRIMITIVES[? "plane_normal"], pr_trianglelist, surface_get_texture(face[4]));
matrix_stack_pop(); matrix_stack_pop();

View file

@ -105,8 +105,8 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my)) if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny))
active = false; active = false;
var _dim = inputs[| 2].getValue(); var _dim = inputs[| 2].getValue();
@ -188,7 +188,7 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
} }
} }
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
#region 3D setup #region 3D setup

View file

@ -43,8 +43,8 @@ function Node_3D_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group)
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my)) if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny))
active = false; active = false;
var _out = outputs[| 0].getValue(); var _out = outputs[| 0].getValue();
if(!is_surface(_out) || !surface_exists(_out)) return; if(!is_surface(_out) || !surface_exists(_out)) return;

View file

@ -26,7 +26,7 @@ function Node_9Slice(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
} }
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(process_multiple) return; if(process_multiple) return;
if(array_length(current_data) < 1) return; if(array_length(current_data) < 1) return;
@ -66,7 +66,7 @@ function Node_9Slice(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
} }
} }
if(!inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my)) { if(!inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) {
if(distance_to_line_infinite(_mx, _my, sp_r, -hh, sp_r, hh) < 12) { if(distance_to_line_infinite(_mx, _my, sp_r, -hh, sp_r, hh) < 12) {
draw_line_width(sp_r, -hh, sp_r, hh, 3); draw_line_width(sp_r, -hh, sp_r, hh, 3);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {

View file

@ -40,8 +40,8 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
current_data = []; current_data = [];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
var area = inputs[| 1].getValue(); var area = inputs[| 1].getValue();
var cx = _x + area[0] * _s; var cx = _x + area[0] * _s;

View file

@ -19,7 +19,7 @@ function Node_Area(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) c
outputs[| 0] = nodeValue(0, "Area", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0, 0, AREA_SHAPE.rectangle ]) outputs[| 0] = nodeValue(0, "Area", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0, 0, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _pos = inputs[| 0].getValue(); var _pos = inputs[| 0].getValue();
var _span = inputs[| 1].getValue(); var _span = inputs[| 1].getValue();
var _shape = inputs[| 2].getValue(); var _shape = inputs[| 2].getValue();
@ -38,8 +38,8 @@ function Node_Area(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) c
break; break;
} }
inputs[| 0].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 0].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 1].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 1].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
} }
function process_value_data(_data, index = 0) { function process_value_data(_data, index = 0) {

View file

@ -13,7 +13,7 @@ function Node_Blur_Directional(_x, _y, _group = -1) : Node_Processor(_x, _y, _gr
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _surf = outputs[| 0].getValue(); var _surf = outputs[| 0].getValue();
if(is_array(_surf)) { if(is_array(_surf)) {
if(array_length(_surf) == 0) return; if(array_length(_surf) == 0) return;
@ -23,7 +23,7 @@ function Node_Blur_Directional(_x, _y, _group = -1) : Node_Processor(_x, _y, _gr
var ww = surface_get_width(_surf); var ww = surface_get_width(_surf);
var hh = surface_get_height(_surf); var hh = surface_get_height(_surf);
inputs[| 2].drawOverlay(active, _x + ww / 2 * _s, _y + hh / 2 * _s, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x + ww / 2 * _s, _y + hh / 2 * _s, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -12,13 +12,13 @@ function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group)
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 2].getValue(); var pos = inputs[| 2].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 1].drawOverlay(active, px, py, _s, _mx, _my, 0, 64, THEME.anchor_scale_hori); inputs[| 1].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 64, THEME.anchor_scale_hori);
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -10,14 +10,14 @@ function Node_Camera(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
static getPreviewValue = function() { return inputs[| 0]; } static getPreviewValue = function() { return inputs[| 0]; }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _out = outputs[| 0].getValue(); var _out = outputs[| 0].getValue();
var _area = current_data[1]; var _area = current_data[1];
var _px = _x + (_area[0] - _area[2]) * _s; var _px = _x + (_area[0] - _area[2]) * _s;
var _py = _y + (_area[1] - _area[3]) * _s; var _py = _y + (_area[1] - _area[3]) * _s;
draw_surface_ext_safe(_out, _px, _py, _s, _s); draw_surface_ext_safe(_out, _px, _py, _s, _s);
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -324,7 +324,7 @@ function Node_Canvas(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
surface_update(); surface_update();
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(!active) return; if(!active) return;
if(keyboard_check(vk_alt)) return; if(keyboard_check(vk_alt)) return;

View file

@ -33,13 +33,13 @@ function Node_Checker(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
["Render", false], 4, 5, ["Render", false], 4, 5,
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 3].getValue(); var pos = inputs[| 3].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -15,12 +15,12 @@ function Node_Chromatic_Aberration(_x, _y, _group = -1) : Node_Processor(_x, _y,
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 1].getValue(); var pos = inputs[| 1].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -9,8 +9,8 @@ function Node_Sampler(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
outputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white); outputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
_input = -1; _input = -1;

View file

@ -227,7 +227,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
createNewSurface(); createNewSurface();
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pad = inputs[| 0].getValue(); var pad = inputs[| 0].getValue();
var ww = overlay_w; var ww = overlay_w;
var hh = overlay_h; var hh = overlay_h;
@ -244,12 +244,8 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
if(input_dragging > -1) { if(input_dragging > -1) {
if(drag_type == 0) { if(drag_type == 0) {
var pos_x = dragging_sx + (_mx - dragging_mx) / _s; var pos_x = value_snap(dragging_sx + (_mx - dragging_mx) / _s, _snx);
var pos_y = dragging_sy + (_my - dragging_my) / _s; var pos_y = value_snap(dragging_sy + (_my - dragging_my) / _s, _sny);
if(keyboard_check(vk_control)) {
pos_x = round(pos_x);
pos_y = round(pos_y);
}
if(inputs[| input_dragging].setValue([ pos_x, pos_y ])) if(inputs[| input_dragging].setValue([ pos_x, pos_y ]))
UNDO_HOLDING = true; UNDO_HOLDING = true;

View file

@ -15,7 +15,7 @@ function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
static getPreviewValue = function() { return inputs[| 0]; } static getPreviewValue = function() { return inputs[| 0]; }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(array_length(current_data) < 2) return; if(array_length(current_data) < 2) return;
var _inSurf = current_data[0]; var _inSurf = current_data[0];
@ -44,10 +44,10 @@ function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
if(drag_side > -1) { if(drag_side > -1) {
var vv; var vv;
if(drag_side == 0) vv = drag_sv - (_mx - drag_mx) / _s; if(drag_side == 0) vv = value_snap(drag_sv - (_mx - drag_mx) / _s, _snx);
else if(drag_side == 2) vv = drag_sv + (_mx - drag_mx) / _s; else if(drag_side == 2) vv = value_snap(drag_sv + (_mx - drag_mx) / _s, _snx);
else if(drag_side == 1) vv = drag_sv + (_my - drag_my) / _s; else if(drag_side == 1) vv = value_snap(drag_sv + (_my - drag_my) / _s, _sny);
else vv = drag_sv - (_my - drag_my) / _s; else vv = value_snap(drag_sv - (_my - drag_my) / _s, _sny);
_splice[drag_side] = vv; _splice[drag_side] = vv;
if(inputs[| 1].setValue(_splice)) if(inputs[| 1].setValue(_splice))

View file

@ -484,7 +484,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
active_draw_index = ind; active_draw_index = ind;
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) {} static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {}
static getPreviewValue = function() { static getPreviewValue = function() {
if(preview_channel > ds_list_size(outputs)) return noone; if(preview_channel > ds_list_size(outputs)) return noone;

View file

@ -17,13 +17,13 @@ function Node_Dilate(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 1].getValue(); var pos = inputs[| 1].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, 0, 1, THEME.anchor_scale_hori); inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -14,7 +14,10 @@ function Node_create_Export(_x, _y, _group = -1) {
function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Export"; name = "Export";
auto_update = false; auto_update = false;
previewable = false;
w = 96;
min_h = 0;
playing = false; playing = false;
played = 0; played = 0;

View file

@ -46,8 +46,8 @@ function Node_Gradient(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
["Shape", false], 2, 3, 4, 6 ["Shape", false], 2, 3, 4, 6
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 6].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 6].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -33,11 +33,11 @@ function Node_Gradient_Points(_x, _y, _group = -1) : Node(_x, _y, _group) constr
["Colors", false], 2, 4, 6, 8, ["Colors", false], 2, 4, 6, 8,
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
if(inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; if(inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
if(inputs[| 7].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; if(inputs[| 7].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
} }
static update = function() { static update = function() {

View file

@ -51,8 +51,8 @@ function Node_Grid(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -30,8 +30,8 @@ function Node_Grid_Hex(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -30,8 +30,8 @@ function Node_Grid_Tri(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -10,8 +10,9 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
inputs[| 1] = nodeValue(1, "Sprite size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 32 ]) inputs[| 1] = nodeValue(1, "Sprite size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 32 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Sprite amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); inputs[| 2] = nodeValue(2, "Row", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); //unused
inputs[| 3] = nodeValue(3, "Sprite per row", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); inputs[| 3] = nodeValue(3, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue(4, "Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0 ]) inputs[| 4] = nodeValue(4, "Offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
@ -48,54 +49,43 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
var fill_w = floor((ww - _offs[0]) / sh_w); var fill_w = floor((ww - _offs[0]) / sh_w);
var fill_h = floor((hh - _offs[1]) / sh_h); var fill_h = floor((hh - _offs[1]) / sh_h);
var amo = fill_w * fill_h, row; if(_orie == 0)
if(_orie == 0) { inputs[| 3].setValue([ fill_w, fill_h ]);
row = fill_w; else
} else { inputs[| 3].setValue([ fill_h, fill_w ]);
row = fill_h;
}
inputs[| 2].setValue(amo);
inputs[| 3].setValue(row);
doUpdate(); doUpdate();
}, "Generate"] ); }, "Generate"] );
inputs[| 11] = nodeValue(11, "Sync animation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 11] = nodeValue(11, "Sync animation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.button, [ function() { .setDisplay(VALUE_DISPLAY.button, [ function() {
var _amo = inputs[| 2].getValue(); var _amo = inputs[| 3].getValue();
ANIMATOR.frames_total = max(1, _amo - 1); ANIMATOR.frames_total = max(1, _amo[0] * _amo[1]);
}, "Sync frames"] ); }, "Sync frames"] );
input_display_list = [ input_display_list = [
["Sprite", false], 0, 1, 6, 10, ["Sprite", false], 0, 1, 6, 10,
["Sheet", false], 2, 3, 9, 4, 5, ["Sheet", false], 3, 9, 4, 5,
["Output", false], 7, 8, 11 ["Output", false], 7, 8, 11
]; ];
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
tools = [ drag_type = 0;
[ "Draw boundary", THEME.splice_draw ] drag_sx = 0;
]; drag_sy = 0;
drag_mx = 0;
drag_my = 0;
curr_off = [0, 0];
curr_dim = [0, 0];
curr_amo = [0, 0];
bound_drag = 0; static getPreviewValue = function() { return inputs[| 0]; }
bound_sx = 0;
bound_sy = 0;
bound_mx = 0;
bound_my = 0;
cell_sx = 0;
cell_sy = 0;
cell_cx = 0;
cell_cy = 0;
cell_mx = 0;
cell_my = 0;
function getSpritePosition(index) { function getSpritePosition(index) {
var _dim = inputs[| 1].getValue(); var _dim = curr_dim;
var _col = inputs[| 3].getValue(); var _col = curr_amo[0];
var _off = inputs[| 4].getValue(); var _off = curr_off;
var _spa = inputs[| 5].getValue(); var _spa = inputs[| 5].getValue();
var _ori = inputs[| 9].getValue(); var _ori = inputs[| 9].getValue();
@ -113,108 +103,145 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
return [_y, _x]; return [_y, _x];
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(inputs[| 0].value_from == noone) return; if(inputs[| 0].value_from == noone) return;
var _inSurf = inputs[| 0].getValue(); var _inSurf = inputs[| 0].getValue();
var _dim = inputs[| 1].getValue();
var _amo = inputs[| 2].getValue();
var _off = inputs[| 4].getValue();
var _out = inputs[| 7].getValue(); var _out = inputs[| 7].getValue();
var _pad = inputs[| 6].getValue(); var _spc = inputs[| 5].getValue();
var _spd = inputs[| 8].getValue(); var _spd = inputs[| 8].getValue();
if(drag_type == 0) {
curr_dim = inputs[| 1].getValue();
curr_amo = inputs[| 3].getValue();
curr_off = inputs[| 4].getValue();
}
var ii; var _amo = curr_amo[0] * curr_amo[1];
if(_out == 0) for(var i = _amo - 1; i >= 0; i--) {
ii = safe_mod(ANIMATOR.current_frame * _spd, _amo);
else
ii = preview_index;
var _spr_pos = getSpritePosition(ii);
var _orig_x = _x - (_spr_pos[0] - _pad[2]) * _s;
var _orig_y = _y - (_spr_pos[1] - _pad[1]) * _s;
draw_surface_ext_safe(_inSurf, _orig_x, _orig_y, _s, _s, 0 ,c_white, 0.25);
for(var i = 0; i < _amo; i++) {
var _f = getSpritePosition(i); var _f = getSpritePosition(i);
var _fx0 = _orig_x + (_f[0] - _pad[2]) * _s; var _fx0 = _x + _f[0] * _s;
var _fy0 = _orig_y + (_f[1] - _pad[1]) * _s; var _fy0 = _y + _f[1] * _s;
var _fx1 = _fx0 + _dim[0] * _s; var _fx1 = _fx0 + curr_dim[0] * _s;
var _fy1 = _fy0 + _dim[1] * _s; var _fy1 = _fy0 + curr_dim[1] * _s;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_rectangle(_fx0, _fy0, _fx1, _fy1, true); draw_set_alpha(i == 0? 1 : 0.75);
draw_rectangle(_fx0, _fy0, _fx1 - 1, _fy1 - 1, true);
draw_set_alpha(1);
//draw_set_text(f_p1, fa_left, fa_top); //draw_set_text(f_p1, fa_left, fa_top);
//draw_text(_fx0 + 2, _fy0 + 2, string(i)); //draw_text(_fx0 + 2, _fy0 + 2, string(i));
} }
var _tool = PANEL_PREVIEW.tool_index; var __ax = curr_off[0];
var _ex = (_mx - _x) / _s; var __ay = curr_off[1];
var _ey = (_my - _y) / _s; var __aw = curr_dim[0];
var __ah = curr_dim[1];
if(_tool == 0) { var _ax = __ax * _s + _x;
if(bound_drag) { var _ay = __ay * _s + _y;
if(keyboard_check(vk_shift)) { var _aw = __aw * _s;
cell_cx = max(2, round(cell_sx + (_ex - cell_mx))); var _ah = __ah * _s;
cell_cy = max(2, round(cell_sy + (_ey - cell_my)));
} else {
bound_mx = _ex;
bound_my = _ey;
cell_mx = _ex; var _bw = curr_amo[0] * (curr_dim[0] + _spc[0]) - _spc[0]; _bw *= _s;
cell_my = _ey; var _bh = curr_amo[1] * (curr_dim[1] + _spc[1]) - _spc[1]; _bh *= _s;
}
var fr_x0 = _x + bound_sx * _s; draw_sprite_ui_uniform(THEME.anchor, 0, _ax, _ay);
var fr_y0 = _y + bound_sy * _s; draw_sprite_ui_uniform(THEME.anchor_selector, 0, _ax + _aw, _ay + _ah);
var fr_x1 = _x + bound_mx * _s; draw_sprite_ui_uniform(THEME.anchor_arrow, 0, _ax + _bw + _s * 4, _ay + _bh / 2);
var fr_y1 = _y + bound_my * _s; draw_sprite_ui_uniform(THEME.anchor_arrow, 0, _ax + _bw / 2, _ay + _bh + _s * 4,,,, -90);
var col = floor((bound_mx - bound_sx) / cell_cx); if(active) {
var row = floor((bound_my - bound_sy) / cell_cy); if(point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, 8))
draw_sprite_ui_uniform(THEME.anchor_selector, 1, _ax + _aw, _ay + _ah);
draw_set_color(COLORS._main_accent); else if(point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah))
for( var i = 0; i < row; i++ ) { draw_sprite_ui_uniform(THEME.anchor, 0, _ax, _ay, 1.25, c_white);
for( var j = 0; j < col; j++ ) { else if(point_in_circle(_mx, _my, _ax + _bw + _s * 4, _ay + _bh / 2, 8))
var cl_x0 = fr_x0 + j * (cell_cx * _s); draw_sprite_ui_uniform(THEME.anchor_arrow, 1, _ax + _bw + _s * 4, _ay + _bh / 2);
var cl_y0 = fr_y0 + i * (cell_cy * _s); else if(point_in_circle(_mx, _my, _ax + _bw / 2, _ay + _bh + _s * 4, 8))
var cl_x1 = cl_x0 + (cell_cx * _s); draw_sprite_ui_uniform(THEME.anchor_arrow, 1, _ax + _bw / 2, _ay + _bh + _s * 4,,,, -90);
var cl_y1 = cl_y0 + (cell_cy * _s);
draw_rectangle(cl_x0, cl_y0, cl_x1 - 1, cl_y1 - 1, 1);
}
}
draw_set_color(COLORS._main_accent);
draw_line_width(fr_x0, 0, fr_x0, room_height, 1);
draw_line_width(0, fr_y0, room_width, fr_y0, 1);
draw_line_width(fr_x1, 0, fr_x1, room_height, 1);
draw_line_width(0, fr_y1, room_width, fr_y1, 1);
if(mouse_release(mb_left, active)) {
bound_drag = 0;
if(row && col) {
inputs[| 1].setValue([ cell_cx, cell_cy ]);
inputs[| 2].setValue(row * col);
inputs[| 3].setValue(col);
inputs[| 4].setValue([ bound_sx + _off[0], bound_sy + _off[1]]);
}
}
} else if(mouse_press(mb_left, active)) {
bound_drag = 1;
bound_sx = _ex;
bound_sy = _ey;
cell_cx = _dim[0];
cell_cy = _dim[1];
cell_sx = _dim[0];
cell_sy = _dim[1];
}
} }
#region area
var __dim = inputs[| 1].getValue();
var __amo = inputs[| 3].getValue();
var __off = inputs[| 4].getValue();
var _ax = __off[0] * _s + _x;
var _ay = __off[1] * _s + _y;
var _aw = __dim[0] * _s;
var _ah = __dim[1] * _s;
//draw_set_color(COLORS._main_accent);
//draw_rectangle(_ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah, true);
if(drag_type == 1) {
var _xx = value_snap(round(drag_sx + (_mx - drag_mx) / _s), _snx);
var _yy = value_snap(round(drag_sy + (_my - drag_my) / _s), _sny);
var off = [_xx, _yy];
curr_off = off;
if(mouse_release(mb_left)) {
drag_type = 0;
inputs[| 4].setValue(off);
}
} else if(drag_type == 2) {
var _dx = value_snap(round(abs((_mx - drag_mx) / _s)), _snx);
var _dy = value_snap(round(abs((_my - drag_my) / _s)), _sny);
var dim = [_dx, _dy];
curr_dim = dim;
if(keyboard_check(vk_shift)) {
dim[0] = max(_dx, _dy);
dim[1] = max(_dx, _dy);
}
if(mouse_release(mb_left)) {
drag_type = 0;
inputs[| 1].setValue(dim);
}
} else if(drag_type == 3) {
var _col = floor((abs(_mx - drag_mx) / _s - _spc[0]) / (__dim[0] + _spc[0]));
curr_amo[0] = _col;
if(mouse_release(mb_left)) {
drag_type = 0;
inputs[| 3].setValue(curr_amo);
}
} else if(drag_type == 4) {
var _row = floor((abs(_my - drag_my) / _s - _spc[1]) / (__dim[1] + _spc[1]));
curr_amo[1] = _row;
if(mouse_release(mb_left)) {
drag_type = 0;
inputs[| 3].setValue(curr_amo);
}
}
if(mouse_press(mb_left, active)) {
if(point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, 8)) { // drag size
drag_type = 2;
drag_mx = _ax;
drag_my = _ay;
} else if(point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah)) { // drag position
drag_type = 1;
drag_sx = __off[0];
drag_sy = __off[1];
drag_mx = _mx;
drag_my = _my;
} else if(point_in_circle(_mx, _my, _ax + _bw + _s * 4, _ay + _bh / 2, 8)) { // drag col
drag_type = 3;
drag_mx = _ax;
drag_my = _ay;
} else if(point_in_circle(_mx, _my, _ax + _bw / 2, _ay + _bh + _s * 4, 8)) { // drag row
drag_type = 4;
drag_mx = _ax;
drag_my = _ay;
}
}
#endregion
} }
static update = function() { static update = function() {
@ -224,7 +251,8 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
var _outSurf = outputs[| 0].getValue(); var _outSurf = outputs[| 0].getValue();
var _dim = inputs[| 1].getValue(); var _dim = inputs[| 1].getValue();
var _amo = inputs[| 2].getValue(); var _amo = inputs[| 3].getValue();
var _total = _amo[0] * _amo[1];
var _pad = inputs[| 6].getValue(); var _pad = inputs[| 6].getValue();
var ww = _dim[0] + _pad[0] + _pad[2]; var ww = _dim[0] + _pad[0] + _pad[2];
@ -244,7 +272,7 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
outputs[| 0].setValue(_outSurf); outputs[| 0].setValue(_outSurf);
} }
var ii = safe_mod(ANIMATOR.current_frame * _spd, _amo); var ii = safe_mod(ANIMATOR.current_frame * _spd, _total);
var _spr_pos = getSpritePosition(ii); var _spr_pos = getSpritePosition(ii);
surface_set_target(_outSurf); surface_set_target(_outSurf);
@ -257,8 +285,8 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
update_on_frame = false; update_on_frame = false;
inputs[| 8].setVisible(false); inputs[| 8].setVisible(false);
surf_array = array_create(_amo); surf_array = array_create(_total);
for(var i = 0; i < _amo; i++) { for(var i = 0; i < _total; i++) {
surf_array[i] = surface_create_valid(ww, hh); surf_array[i] = surface_create_valid(ww, hh);
var _spr_pos = getSpritePosition(i); var _spr_pos = getSpritePosition(i);

View file

@ -14,7 +14,7 @@ function Node_Mirror(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _pos = inputs[| 1].getValue(); var _pos = inputs[| 1].getValue();
var _ang = inputs[| 2].getValue(); var _ang = inputs[| 2].getValue();
var _posx = _pos[0] * _s + _x; var _posx = _pos[0] * _s + _x;
@ -28,8 +28,8 @@ function Node_Mirror(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_line(dx0, dy0, dx1, dy1); draw_line(dx0, dy0, dx1, dy1);
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, _posx, _posy, _s, _mx, _my); inputs[| 2].drawOverlay(active, _posx, _posy, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -28,8 +28,8 @@ function Node_Noise_Aniso(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -38,8 +38,8 @@ function Node_Cellular(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -34,8 +34,8 @@ function Node_Grid_Noise(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -34,13 +34,13 @@ function Node_Normal_Light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group)
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 4].getValue(); var pos = inputs[| 4].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -41,14 +41,14 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
drag_point_sx = 0; drag_point_sx = 0;
drag_point_sy = 0; drag_point_sy = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var sample = PREF_MAP[? "path_resolution"]; var sample = PREF_MAP[? "path_resolution"];
var loop = inputs[| 1].getValue(); var loop = inputs[| 1].getValue();
var ansize = ds_list_size(inputs) - list_start; var ansize = ds_list_size(inputs) - list_start;
if(drag_point > -1) { if(drag_point > -1) {
var dx = drag_point_sx + (_mx - drag_point_mx) / _s; var dx = value_snap(drag_point_sx + (_mx - drag_point_mx) / _s, _snx);
var dy = drag_point_sy + (_my - drag_point_my) / _s; var dy = value_snap(drag_point_sy + (_my - drag_point_my) / _s, _sny);
if(drag_type < 2) { if(drag_type < 2) {
var inp = inputs[| list_start + drag_point]; var inp = inputs[| list_start + drag_point];
@ -91,6 +91,11 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var miny = min((_my - _y) / _s, (drag_point_my - _y) / _s); var miny = min((_my - _y) / _s, (drag_point_my - _y) / _s);
var maxy = max((_my - _y) / _s, (drag_point_my - _y) / _s); var maxy = max((_my - _y) / _s, (drag_point_my - _y) / _s);
minx = value_snap(minx, _snx);
maxx = value_snap(maxx, _snx);
miny = value_snap(miny, _sny);
maxy = value_snap(maxy, _sny);
var a = []; var a = [];
for( var i = 0; i < 4; i++ ) for( var i = 0; i < 4; i++ )
a[i] = inputs[| list_start + i].getValue(); a[i] = inputs[| list_start + i].getValue();
@ -115,6 +120,11 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var miny = min((_my - _y) / _s, (drag_point_my - _y) / _s); var miny = min((_my - _y) / _s, (drag_point_my - _y) / _s);
var maxy = max((_my - _y) / _s, (drag_point_my - _y) / _s); var maxy = max((_my - _y) / _s, (drag_point_my - _y) / _s);
minx = value_snap(minx, _snx);
maxx = value_snap(maxx, _snx);
miny = value_snap(miny, _sny);
maxy = value_snap(maxy, _sny);
var a = []; var a = [];
for( var i = 0; i < 4; i++ ) for( var i = 0; i < 4; i++ )
a[i] = inputs[| list_start + i].getValue(); a[i] = inputs[| list_start + i].getValue();
@ -285,7 +295,7 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
drag_point = ds_list_size(inputs) - list_start; drag_point = ds_list_size(inputs) - list_start;
createAnchor((_mx - _x) / _s, (_my - _y) / _s); createAnchor(value_snap((_mx - _x) / _s, _snx), value_snap((_my - _y) / _s, _sny));
drag_type = -1; drag_type = -1;
drag_point_mx = _mx; drag_point_mx = _mx;
@ -307,7 +317,7 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
inputs[| 1].setValue(true); inputs[| 1].setValue(true);
repeat(4) repeat(4)
createAnchor((_mx - _x) / _s, (_my - _y) / _s); createAnchor(value_snap((_mx - _x) / _s, _snx), value_snap((_my - _y) / _s, _sny));
} }
} }
} }

View file

@ -44,8 +44,8 @@ function Node_Scatter(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
temp_surf = [ PIXEL_SURFACE, PIXEL_SURFACE ]; temp_surf = [ PIXEL_SURFACE, PIXEL_SURFACE ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -22,7 +22,7 @@ function Node_Shadow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _surf = outputs[| 0].getValue(); var _surf = outputs[| 0].getValue();
if(is_array(_surf)) { if(is_array(_surf)) {
if(array_length(_surf) == 0) return; if(array_length(_surf) == 0) return;
@ -32,7 +32,7 @@ function Node_Shadow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const
var ww = surface_get_width(_surf) * _s; var ww = surface_get_width(_surf) * _s;
var hh = surface_get_height(_surf) * _s; var hh = surface_get_height(_surf) * _s;
inputs[| 3].drawOverlay(active, _x + ww / 2, _y + hh / 2, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x + ww / 2, _y + hh / 2, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -67,8 +67,8 @@ function Node_Shape(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr
["Render", true], 10, 1, 11, 12 ["Render", true], 10, 1, 11, 12
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -36,8 +36,8 @@ function Node_Skew(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
inputs[| 4].setValue([ww / 2, hh / 2]); inputs[| 4].setValue([ww / 2, hh / 2]);
} }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -134,6 +134,12 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) co
var alig = inputs[| 5].getValue(); var alig = inputs[| 5].getValue();
if(grup == SPRITE_ANIM_GROUP.animation) { if(grup == SPRITE_ANIM_GROUP.animation) {
if(!LOADING && !APPENDING) {
ANIMATOR.setFrame(-1);
ANIMATOR.is_playing = true;
ANIMATOR.stopOnEnd = true;
}
var skip = inputs[| 2].getValue(); var skip = inputs[| 2].getValue();
if(is_array(inpt) && array_length(inpt) == 0) return; if(is_array(inpt) && array_length(inpt) == 0) return;

View file

@ -30,13 +30,13 @@ function Node_Sprite_Stack(_x, _y, _group = -1) : Node(_x, _y, _group) construct
["Render", false], 6, 7, ["Render", false], 6, 7,
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 4].getValue(); var pos = inputs[| 4].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -44,13 +44,13 @@ function Node_Stripe(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
["Render", false], 3, 6, 7 ["Render", false], 3, 6, 7
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 4].getValue(); var pos = inputs[| 4].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my); inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -21,7 +21,7 @@ function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
.setIcon(THEME.anchor) .setIcon(THEME.anchor)
.setTooltip("Set to center")); .setTooltip("Set to center"));
inputs[| 4] = nodeValue(4, "Relative", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); inputs[| 4] = nodeValue(4, "Relative anchor", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 5] = nodeValue(5, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 5] = nodeValue(5, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation); .setDisplay(VALUE_DISPLAY.rotation);
@ -44,7 +44,7 @@ function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 11] = nodeValue(11, "Relative to surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); inputs[| 11] = nodeValue(11, "Relative position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
input_display_list = [ 0, input_display_list = [ 0,
["Output", true], 9, 1, 7, ["Output", true], 9, 1, 7,
@ -244,7 +244,7 @@ function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
overlay_drag_ma = 0; overlay_drag_ma = 0;
overlay_drag_sa = 0; overlay_drag_sa = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(array_length(current_data) < ds_list_size(inputs)) return; if(array_length(current_data) < ds_list_size(inputs)) return;
var _surf = inputs[| 0].getValue(); var _surf = inputs[| 0].getValue();
@ -349,10 +349,8 @@ function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
pos_y = overlay_drag_sy + py / _s; pos_y = overlay_drag_sy + py / _s;
} }
if(keyboard_check(vk_control)) { pos_x = value_snap(pos_x, _snx);
pos_x = round(pos_x); pos_y = value_snap(pos_y, _sny);
pos_y = round(pos_y);
}
if(overlay_dragging == 1) { if(overlay_dragging == 1) {
if(pos_rel) { if(pos_rel) {
@ -418,31 +416,31 @@ function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
overlay_dragging = 0; overlay_dragging = 0;
UNDO_HOLDING = false; UNDO_HOLDING = false;
} }
} else { }
if(mouse_press(mb_left, active)) {
if(point_in_circle(_mx, _my, bax, bay, 8)) { if(overlay_dragging == 0 && mouse_press(mb_left, active)) {
overlay_dragging = 2; if(point_in_circle(_mx, _my, bax, bay, 8)) {
overlay_drag_mx = _mx; overlay_dragging = 2;
overlay_drag_my = _my; overlay_drag_mx = _mx;
overlay_drag_sx = anc[0]; overlay_drag_my = _my;
overlay_drag_sy = anc[1]; overlay_drag_sx = anc[0];
} else if(point_in_circle(_mx, _my, tl[0], tl[1], 8) || point_in_circle(_mx, _my, tr[0], tr[1], 8) || point_in_circle(_mx, _my, bl[0], bl[1], 8) || point_in_circle(_mx, _my, br[0], br[1], 8)) { overlay_drag_sy = anc[1];
overlay_dragging = 4; } else if(point_in_circle(_mx, _my, tl[0], tl[1], 8) || point_in_circle(_mx, _my, tr[0], tr[1], 8) || point_in_circle(_mx, _my, bl[0], bl[1], 8) || point_in_circle(_mx, _my, br[0], br[1], 8)) {
overlay_drag_mx = _mx; overlay_dragging = 4;
overlay_drag_my = _my; overlay_drag_mx = _mx;
overlay_drag_sx = sca[0]; overlay_drag_my = _my;
overlay_drag_sy = sca[1]; overlay_drag_sx = sca[0];
} else if(point_in_circle(_mx, _my, rth[0], rth[1], 8)) { overlay_drag_sy = sca[1];
overlay_dragging = 3; } else if(point_in_circle(_mx, _my, rth[0], rth[1], 8)) {
overlay_drag_ma = point_direction(bax, bay, _mx, _my); overlay_dragging = 3;
overlay_drag_sa = rot; overlay_drag_ma = point_direction(bax, bay, _mx, _my);
} else if(point_in_triangle(_mx, _my, tl[0], tl[1], tr[0], tr[1], bl[0], bl[1]) || point_in_triangle(_mx, _my, tr[0], tr[1], bl[0], bl[1], br[0], br[1])) { overlay_drag_sa = rot;
overlay_dragging = 1; } else if(point_in_triangle(_mx, _my, tl[0], tl[1], tr[0], tr[1], bl[0], bl[1]) || point_in_triangle(_mx, _my, tr[0], tr[1], bl[0], bl[1], br[0], br[1])) {
overlay_drag_mx = _mx; overlay_dragging = 1;
overlay_drag_my = _my; overlay_drag_mx = _mx;
overlay_drag_sx = _pos[0]; overlay_drag_my = _my;
overlay_drag_sy = _pos[1]; overlay_drag_sx = _pos[0];
} overlay_drag_sy = _pos[1];
} }
} }
} }

View file

@ -47,7 +47,7 @@ function Node_Transform_Single(_x, _y, _group = -1) : Node_Processor(_x, _y, _gr
overlay_drag_ma = 0; overlay_drag_ma = 0;
overlay_drag_sa = 0; overlay_drag_sa = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(array_length(current_data) < ds_list_size(inputs)) return; if(array_length(current_data) < ds_list_size(inputs)) return;
var _surf = outputs[| 0].getValue(); var _surf = outputs[| 0].getValue();
@ -108,8 +108,8 @@ function Node_Transform_Single(_x, _y, _group = -1) : Node_Processor(_x, _y, _gr
#endregion #endregion
if(overlay_dragging && overlay_dragging < 3) { if(overlay_dragging && overlay_dragging < 3) {
var px = _mx - overlay_drag_mx; var px = value_snap(_mx - overlay_drag_mx, _snx);
var py = _my - overlay_drag_my; var py = value_snap(_my - overlay_drag_my, _sny);
var pos_x, pos_y; var pos_x, pos_y;
if(keyboard_check(vk_shift)) { if(keyboard_check(vk_shift)) {

View file

@ -17,13 +17,13 @@ function Node_Twirl(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var pos = inputs[| 1].getValue(); var pos = inputs[| 1].getValue();
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, 0, 1, THEME.anchor_scale_hori); inputs[| 3].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -726,7 +726,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
drag_my = 0; drag_my = 0;
drag_sx = 0; drag_sx = 0;
drag_sy = 0; drag_sy = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var _val = getValue(); var _val = getValue();
var hover = -1; var hover = -1;
@ -735,9 +735,9 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
case VALUE_TYPE.float : case VALUE_TYPE.float :
switch(display_type) { switch(display_type) {
case VALUE_DISPLAY._default : #region case VALUE_DISPLAY._default : #region
var _angle = argument_count > 6? argument[6] : 0; var _angle = argument_count > 8? argument[8] : 0;
var _scale = argument_count > 7? argument[7] : 1; var _scale = argument_count > 9? argument[9] : 1;
var spr = argument_count > 8? argument[8] : THEME.anchor_selector; var spr = argument_count > 10? argument[10] : THEME.anchor_selector;
var index = 0; var index = 0;
var __ax = lengthdir_x(_val * _scale, _angle); var __ax = lengthdir_x(_val * _scale, _angle);
@ -777,7 +777,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
break; break;
#endregion #endregion
case VALUE_DISPLAY.rotation : #region case VALUE_DISPLAY.rotation : #region
var _rad = argument_count > 6? argument[6] : 64; var _rad = argument_count > 8? argument[8] : 64;
var _ax = _x + lengthdir_x(_rad, _val); var _ax = _x + lengthdir_x(_rad, _val);
var _ay = _y + lengthdir_y(_rad, _val); var _ay = _y + lengthdir_y(_rad, _val);
@ -822,11 +822,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
break; break;
#endregion #endregion
case VALUE_DISPLAY.vector : #region case VALUE_DISPLAY.vector : #region
var _psx = argument_count > 6? argument[6] : 1; var __ax = _val[0];
var _psy = argument_count > 7? argument[7] : 1; var __ay = _val[1];
var __ax = _val[0] * _psx;
var __ay = _val[1] * _psy;
var _ax = __ax * _s + _x; var _ax = __ax * _s + _x;
var _ay = __ay * _s + _y; var _ay = __ay * _s + _y;
@ -835,8 +832,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
if(drag_type) { if(drag_type) {
draw_sprite_ui_uniform(THEME.anchor_selector, 1, _ax, _ay); draw_sprite_ui_uniform(THEME.anchor_selector, 1, _ax, _ay);
var _nx = (drag_sx + (_mx - drag_mx) - _x) / _s / _psx; var _nx = value_snap((drag_sx + (_mx - drag_mx) - _x) / _s, _snx);
var _ny = (drag_sy + (_my - drag_my) - _y) / _s / _psy; var _ny = value_snap((drag_sy + (_my - drag_my) - _y) / _s, _sny);
if(keyboard_check(vk_control)) { if(keyboard_check(vk_control)) {
_val[0] = round(_nx); _val[0] = round(_nx);
_val[1] = round(_ny); _val[1] = round(_ny);
@ -898,8 +895,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
draw_sprite_ui_uniform(THEME.anchor, 0, _ax, _ay, 1.25, c_white); draw_sprite_ui_uniform(THEME.anchor, 0, _ax, _ay, 1.25, c_white);
if(drag_type == 1) { if(drag_type == 1) {
var _xx = drag_sx + (_mx - drag_mx) / _s; var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
var _yy = drag_sy + (_my - drag_my) / _s; var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
if(keyboard_check(vk_control)) { if(keyboard_check(vk_control)) {
_val[0] = round(_xx); _val[0] = round(_xx);
@ -917,8 +914,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
UNDO_HOLDING = false; UNDO_HOLDING = false;
} }
} else if(drag_type == 2) { } else if(drag_type == 2) {
var _dx = (_mx - drag_mx) / _s; var _dx = value_snap((_mx - drag_mx) / _s, _snx);
var _dy = (_my - drag_my) / _s; var _dy = value_snap((_my - drag_my) / _s, _sny);
if(keyboard_check(vk_control)) { if(keyboard_check(vk_control)) {
_val[2] = round(_dx); _val[2] = round(_dx);
@ -1016,8 +1013,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
if(drag_type == 1) { if(drag_type == 1) {
draw_sprite_ui_uniform(THEME.anchor_selector, 1, _ax, _ay); draw_sprite_ui_uniform(THEME.anchor_selector, 1, _ax, _ay);
var _nx = drag_sx + (_mx - drag_mx) / _s; var _nx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
var _ny = drag_sy + (_my - drag_my) / _s; var _ny = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
if(keyboard_check(vk_control)) { if(keyboard_check(vk_control)) {
_val[PUPPET_CONTROL.cx] = round(_nx); _val[PUPPET_CONTROL.cx] = round(_nx);
@ -1036,8 +1033,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
} }
} else if(drag_type == 2) { } else if(drag_type == 2) {
draw_sprite_ui_uniform(THEME.anchor_selector, 0, _ax1, _ay1); draw_sprite_ui_uniform(THEME.anchor_selector, 0, _ax1, _ay1);
var _nx = drag_sx + (_mx - drag_mx) / _s; var _nx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
var _ny = drag_sy + (_my - drag_my) / _s; var _ny = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
if(keyboard_check(vk_control)) { if(keyboard_check(vk_control)) {
_val[PUPPET_CONTROL.fx] = round(_nx); _val[PUPPET_CONTROL.fx] = round(_nx);

View file

@ -6,23 +6,38 @@ function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
inputs[| 1] = nodeValue(1, "Top left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) inputs[| 1] = nodeValue(1, "Top left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 0 ] ) inputs[| 2] = nodeValue(2, "Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue(3, "Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ] ) inputs[| 3] = nodeValue(3, "Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue(4, "Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) inputs[| 4] = nodeValue(4, "Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] )
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
drag_side = -1; drag_side = -1;
drag_mx = 0; drag_mx = 0;
drag_my = 0; drag_my = 0;
drag_sv = 0; drag_s = [[0, 0], [0, 0]];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static onValueUpdate = function(index) {
if(index != 0) return;
var _inSurf = inputs[| 0].getValue();
if(!is_surface(_inSurf)) return;
var ww = surface_get_width(_inSurf);
var hh = surface_get_height(_inSurf);
inputs[| 1].setValue([ 0, 0]);
inputs[| 2].setValue([ww, 0]);
inputs[| 3].setValue([ 0, hh]);
inputs[| 4].setValue([ww, hh]);
}
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(array_length(current_data) < ds_list_size(inputs)) return; if(array_length(current_data) < ds_list_size(inputs)) return;
var _surf = outputs[| 0].getValue(); var _surf = outputs[| 0].getValue();
@ -31,22 +46,20 @@ function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
_surf = _surf[preview_index]; _surf = _surf[preview_index];
} }
var ww = surface_get_width(_surf);
var hh = surface_get_height(_surf);
var tl = current_data[1]; var tl = current_data[1];
var tr = current_data[2]; var tr = current_data[2];
var bl = current_data[3]; var bl = current_data[3];
var br = current_data[4]; var br = current_data[4];
tl[0] = _x + tl[0] * ww * _s; tl[0] = _x + tl[0] * _s;
tr[0] = _x + tr[0] * ww * _s; tr[0] = _x + tr[0] * _s;
bl[0] = _x + bl[0] * ww * _s; bl[0] = _x + bl[0] * _s;
br[0] = _x + br[0] * ww * _s; br[0] = _x + br[0] * _s;
tl[1] = _y + tl[1] * hh * _s; tl[1] = _y + tl[1] * _s;
tr[1] = _y + tr[1] * hh * _s; tr[1] = _y + tr[1] * _s;
bl[1] = _y + bl[1] * hh * _s; bl[1] = _y + bl[1] * _s;
br[1] = _y + br[1] * hh * _s; br[1] = _y + br[1] * _s;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_line(tl[0], tl[1], tr[0], tr[1]); draw_line(tl[0], tl[1], tr[0], tr[1]);
@ -54,23 +67,17 @@ function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
draw_line(br[0], br[1], tr[0], tr[1]); draw_line(br[0], br[1], tr[0], tr[1]);
draw_line(br[0], br[1], bl[0], bl[1]); draw_line(br[0], br[1], bl[0], bl[1]);
if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, ww, hh)) if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
active = false; if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
if(inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, ww, hh)) if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
active = false; if(inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny)) active = false;
if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, ww, hh))
active = false;
if(inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, ww, hh))
active = false;
var dx = 0; var dx = 0;
var dy = 0; var dy = 0;
if(drag_side > -1) { if(drag_side > -1) {
dx = (_mx - drag_mx) / _s / ww; dx = (_mx - drag_mx) / _s;
dy = (_my - drag_my) / _s / hh; dy = (_my - drag_my) / _s;
drag_mx = _mx;
drag_my = _my;
if(mouse_release(mb_left)) { if(mouse_release(mb_left)) {
drag_side = -1; drag_side = -1;
@ -82,84 +89,91 @@ function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
if(drag_side == 0) { if(drag_side == 0) {
draw_line_width(tl[0], tl[1], tr[0], tr[1], 3); draw_line_width(tl[0], tl[1], tr[0], tr[1], 3);
var _tlx = current_data[1][0] + dx; var _tlx = value_snap(drag_s[0][0] + dx, _snx);
var _tly = current_data[1][1] + dy; var _tly = value_snap(drag_s[0][1] + dy, _sny);
var _trx = current_data[2][0] + dx; var _trx = value_snap(drag_s[1][0] + dx, _snx);
var _try = current_data[2][1] + dy; var _try = value_snap(drag_s[1][1] + dy, _sny);
inputs[| 1].setValue([ _tlx, _tly ]) inputs[| 1].setValue([ _tlx, _tly ])
if(inputs[| 2].setValue([ _trx, _try ])) UNDO_HOLDING = true; if(inputs[| 2].setValue([ _trx, _try ])) UNDO_HOLDING = true;
} else if(drag_side == 1) { } else if(drag_side == 1) {
draw_line_width(tl[0], tl[1], bl[0], bl[1], 3); draw_line_width(tl[0], tl[1], bl[0], bl[1], 3);
var _tlx = current_data[1][0] + dx; var _tlx = value_snap(drag_s[0][0] + dx, _snx);
var _tly = current_data[1][1] + dy; var _tly = value_snap(drag_s[0][1] + dy, _sny);
var _blx = current_data[3][0] + dx; var _blx = value_snap(drag_s[1][0] + dx, _snx);
var _bly = current_data[3][1] + dy; var _bly = value_snap(drag_s[1][1] + dy, _sny);
inputs[| 1].setValue([ _tlx, _tly ]); inputs[| 1].setValue([ _tlx, _tly ]);
if(inputs[| 3].setValue([ _blx, _bly ])) UNDO_HOLDING = true; if(inputs[| 3].setValue([ _blx, _bly ])) UNDO_HOLDING = true;
} else if(drag_side == 2) { } else if(drag_side == 2) {
draw_line_width(br[0], br[1], tr[0], tr[1], 3); draw_line_width(br[0], br[1], tr[0], tr[1], 3);
var _brx = current_data[4][0] + dx; var _brx = value_snap(drag_s[0][0] + dx, _snx);
var _bry = current_data[4][1] + dy; var _bry = value_snap(drag_s[0][1] + dy, _sny);
var _trx = current_data[2][0] + dx; var _trx = value_snap(drag_s[1][0] + dx, _snx);
var _try = current_data[2][1] + dy; var _try = value_snap(drag_s[1][1] + dy, _sny);
inputs[| 4].setValue([ _brx, _bry ]); inputs[| 4].setValue([ _brx, _bry ]);
if(inputs[| 2].setValue([ _trx, _try ])) UNDO_HOLDING = true; if(inputs[| 2].setValue([ _trx, _try ])) UNDO_HOLDING = true;
} else if(drag_side == 3) { } else if(drag_side == 3) {
draw_line_width(br[0], br[1], bl[0], bl[1], 3); draw_line_width(br[0], br[1], bl[0], bl[1], 3);
var _brx = current_data[4][0] + dx; var _brx = value_snap(drag_s[0][0] + dx, _snx);
var _bry = current_data[4][1] + dy; var _bry = value_snap(drag_s[0][1] + dy, _sny);
var _blx = current_data[3][0] + dx; var _blx = value_snap(drag_s[1][0] + dx, _snx);
var _bly = current_data[3][1] + dy; var _bly = value_snap(drag_s[1][1] + dy, _sny);
inputs[| 4].setValue([ _brx, _bry ]); inputs[| 4].setValue([ _brx, _bry ]);
if(inputs[| 3].setValue([ _blx, _bly ])) UNDO_HOLDING = true; if(inputs[| 3].setValue([ _blx, _bly ])) UNDO_HOLDING = true;
} else { } else if(active) {
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
if(distance_to_line_infinite(_mx, _my, tl[0], tl[1], tr[0], tr[1]) < 12) { if(distance_to_line_infinite(_mx, _my, tl[0], tl[1], tr[0], tr[1]) < 12) {
draw_line_width(tl[0], tl[1], tr[0], tr[1], 3); draw_line_width(tl[0], tl[1], tr[0], tr[1], 3);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
drag_side = 0; drag_side = 0;
drag_mx = _mx; drag_mx = _mx;
drag_my = _my; drag_my = _my;
drag_s = [ current_data[1], current_data[2] ];
} }
} else if(distance_to_line_infinite(_mx, _my, tl[0], tl[1], bl[0], bl[1]) < 12) { } else if(distance_to_line_infinite(_mx, _my, tl[0], tl[1], bl[0], bl[1]) < 12) {
draw_line_width(tl[0], tl[1], bl[0], bl[1], 3); draw_line_width(tl[0], tl[1], bl[0], bl[1], 3);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
drag_side = 1; drag_side = 1;
drag_mx = _mx; drag_mx = _mx;
drag_my = _my; drag_my = _my;
drag_s = [ current_data[1], current_data[3] ];
} }
} else if(distance_to_line_infinite(_mx, _my, br[0], br[1], tr[0], tr[1]) < 12) { } else if(distance_to_line_infinite(_mx, _my, br[0], br[1], tr[0], tr[1]) < 12) {
draw_line_width(br[0], br[1], tr[0], tr[1], 3); draw_line_width(br[0], br[1], tr[0], tr[1], 3);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
drag_side = 2; drag_side = 2;
drag_mx = _mx; drag_mx = _mx;
drag_my = _my; drag_my = _my;
drag_s = [ current_data[4], current_data[2] ];
} }
} else if(distance_to_line_infinite(_mx, _my, br[0], br[1], bl[0], bl[1]) < 12) { } else if(distance_to_line_infinite(_mx, _my, br[0], br[1], bl[0], bl[1]) < 12) {
draw_line_width(br[0], br[1], bl[0], bl[1], 3); draw_line_width(br[0], br[1], bl[0], bl[1], 3);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
drag_side = 3; drag_side = 3;
drag_mx = _mx; drag_mx = _mx;
drag_my = _my; drag_my = _my;
drag_s = [ current_data[4], current_data[3] ];
} }
} }
} }
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {
var ww = surface_get_width(_data[0]);
var hh = surface_get_height(_data[0]);
var tl = _data[1]; var tl = _data[1];
var tr = _data[2]; var tr = _data[2];
var bl = _data[3]; var bl = _data[3];
@ -175,14 +189,14 @@ function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
var res = 4; var res = 4;
var _i0, _i1, _j0, _j1; var _i0, _i1, _j0, _j1;
var tl_x = tl[0] * ww; var tl_x = tl[0];
var tl_y = tl[1] * hh; var tl_y = tl[1];
var tr_x = tr[0] * ww; var tr_x = tr[0];
var tr_y = tr[1] * hh; var tr_y = tr[1];
var bl_x = bl[0] * ww; var bl_x = bl[0];
var bl_y = bl[1] * hh; var bl_y = bl[1];
var br_x = br[0] * ww; var br_x = br[0];
var br_y = br[1] * hh; var br_y = br[1];
for( var i = 0; i < res; i++ ) { for( var i = 0; i < res; i++ ) {
for( var j = 0; j < res; j++ ) { for( var j = 0; j < res; j++ ) {

View file

@ -7,8 +7,8 @@ function Node_Wrap_Area(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static process_data = function(_outSurf, _data, _output_index) { static process_data = function(_outSurf, _data, _output_index) {

View file

@ -47,7 +47,7 @@ function Node_Mesh_Warp(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
attributes[? "pin"] = ds_map_create(); attributes[? "pin"] = ds_map_create();
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
for(var i = 0; i < ds_list_size(data.tris); i++) { for(var i = 0; i < ds_list_size(data.tris); i++) {
data.tris[| i].drawPoints(_x, _y, _s); data.tris[| i].drawPoints(_x, _y, _s);
} }
@ -57,7 +57,7 @@ function Node_Mesh_Warp(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
var hover = -1; var hover = -1;
for(var i = control_index; i < ds_list_size(inputs); i++) { for(var i = control_index; i < ds_list_size(inputs); i++) {
if(inputs[| i].drawOverlay(active, _x, _y, _s, _mx, _my)) if(inputs[| i].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny))
hover = i; hover = i;
} }
@ -69,7 +69,7 @@ function Node_Mesh_Warp(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
if(mouse_press(mb_left)) { if(mouse_press(mb_left)) {
if(hover == -1) { if(hover == -1) {
var i = createControl(); var i = createControl();
i.setValue( [PUPPET_FORCE_MODE.move, (_mx - _x) / _s, (_my - _y) / _s, 0, 0, 8, 8] ); i.setValue( [PUPPET_FORCE_MODE.move, value_snap(_mx - _x, _snx) / _s, value_snap(_my - _y, _sny) / _s, 0, 0, 8, 8] );
i.drag_type = 2; i.drag_type = 2;
i.drag_sx = 0; i.drag_sx = 0;
i.drag_sy = 0; i.drag_sy = 0;

View file

@ -31,8 +31,8 @@ function Node_Zigzag(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
["Render", false], 3, 4, 5, ["Render", false], 3, 4, 5,
]; ];
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
} }
static update = function() { static update = function() {

View file

@ -24,7 +24,7 @@
self.onClick = noone; self.onClick = noone;
self.time = string_lead_zero(current_hour, 2) + ":" + string_lead_zero(current_minute, 2); self.time = string_lead_zero(current_hour, 2) + ":" + string_lead_zero(current_minute, 2) + "." + string_lead_zero(current_second, 2);
} }
function noti_status(str, icon = noone) { function noti_status(str, icon = noone) {

View file

@ -58,6 +58,7 @@ function Panel_Collection() : PanelContent() constructor {
var hh = 0; var hh = 0;
var frame = current_time * PREF_MAP[? "collection_preview_speed"] / 3000; var frame = current_time * PREF_MAP[? "collection_preview_speed"] / 3000;
var _cw = contentPane.surface_w; var _cw = contentPane.surface_w;
var _hover = pHOVER && contentPane.hover;
if(contentView == 0) { if(contentView == 0) {
var grid_size = ui(64); var grid_size = ui(64);
@ -83,7 +84,7 @@ function Panel_Collection() : PanelContent() constructor {
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size); draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
BLEND_NORMAL BLEND_NORMAL
if(pHOVER && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) { if(_hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_press(mb_left, pFOCUS)) if(mouse_press(mb_left, pFOCUS))
file_dragging = _node; file_dragging = _node;
@ -135,7 +136,7 @@ function Panel_Collection() : PanelContent() constructor {
BLEND_NORMAL BLEND_NORMAL
} }
if(pHOVER && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) { if(_hover && point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) {
draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1);
if(mouse_press(mb_left, pFOCUS)) if(mouse_press(mb_left, pFOCUS))
file_dragging = _node; file_dragging = _node;
@ -180,7 +181,7 @@ function Panel_Collection() : PanelContent() constructor {
var hh = ui(8); var hh = ui(8);
for(var i = 0; i < ds_list_size(root.subDir); i++) { for(var i = 0; i < ds_list_size(root.subDir); i++) {
var hg = root.subDir[| i].draw(self, ui(8), _y, _m, folderPane.w - ui(20), pHOVER, pFOCUS, root); var hg = root.subDir[| i].draw(self, ui(8), _y, _m, folderPane.w - ui(20), pHOVER && folderPane.hover, pFOCUS, root);
hh += hg; hh += hg;
_y += hg; _y += hg;
} }

View file

@ -458,13 +458,11 @@ function Panel_Graph() : PanelContent() constructor {
} }
} }
if(node_hovering && node_hovering.on_dragdrop_file != -1) { if(node_hovering && node_hovering.on_dragdrop_file != -1)
node_hovering.drawActive(gr_x, gr_y, graph_s, 1); node_hovering.drawActive(gr_x, gr_y, graph_s, 1);
}
if(node_focus) { if(node_focus)
node_focus.drawActive(gr_x, gr_y, graph_s); node_focus.drawActive(gr_x, gr_y, graph_s);
}
for(var i = 0; i < ds_list_size(nodes_select_list); i++) { for(var i = 0; i < ds_list_size(nodes_select_list); i++) {
var _node = nodes_select_list[| i]; var _node = nodes_select_list[| i];
@ -477,7 +475,8 @@ function Panel_Graph() : PanelContent() constructor {
var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, graph_s, mx, my, hoverable); var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, graph_s, mx, my, hoverable);
if(_hov != noone) hov = _hov; if(_hov != noone) hov = _hov;
} }
junction_hovering = hov;
junction_hovering = node_hovering == noone? hov : noone;
value_focus = noone; value_focus = noone;
@ -876,16 +875,10 @@ function Panel_Graph() : PanelContent() constructor {
if(_outp == -1) return; if(_outp == -1) return;
var _export; var _export = nodeBuild("Node_Export", _node.x + _node.w + 64, _node.y);
if(_path == -1) if(_path != -1)
_export = nodeBuild("Node_Export", _node.x + _node.w + 64, _node.y);
else {
_export = new Node_Export(_node.x + _node.w + 64, _node.y);
_export.inputs[| 1].setFrom(_path); _export.inputs[| 1].setFrom(_path);
ds_list_add(PANEL_GRAPH.nodes_list, _export);
}
_export.inputs[| 0].setFrom(_outp); _export.inputs[| 0].setFrom(_outp);
} }

View file

@ -82,6 +82,7 @@ function Panel_Inspector() : PanelContent() constructor {
var jun = noone; var jun = noone;
var amo = inspecting.input_display_list == -1? ds_list_size(inspecting.inputs) : array_length(inspecting.input_display_list); var amo = inspecting.input_display_list == -1? ds_list_size(inspecting.inputs) : array_length(inspecting.input_display_list);
var hh = ui(8); var hh = ui(8);
var _hover = pHOVER && contentPane.hover;
for(var i = 0; i < amo; i++) { for(var i = 0; i < amo; i++) {
var xc = con_w / 2; var xc = con_w / 2;
@ -95,7 +96,7 @@ function Panel_Inspector() : PanelContent() constructor {
var txt = jun_disp[0]; var txt = jun_disp[0];
var coll = jun_disp[1] && filter_text == ""; var coll = jun_disp[1] && filter_text == "";
if(pHOVER && point_in_rectangle(_m[0], _m[1], 0, yy, con_w, yy + ui(32))) { if(_hover && point_in_rectangle(_m[0], _m[1], 0, yy, con_w, yy + ui(32))) {
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy, con_w, ui(32), COLORS.panel_inspector_group_hover, 1); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy, con_w, ui(32), COLORS.panel_inspector_group_hover, 1);
if(mouse_press(mb_left, pFOCUS)) if(mouse_press(mb_left, pFOCUS))
@ -128,9 +129,7 @@ function Panel_Inspector() : PanelContent() constructor {
} }
continue; continue;
} else if(is_struct(jun_disp) && instanceof(jun_disp) == "Inspector_Custom_Renderer") { } else if(is_struct(jun_disp) && instanceof(jun_disp) == "Inspector_Custom_Renderer") {
var hov = pHOVER; jun_disp.draw(ui(6), yy, con_w - ui(12), _m, _hover, pFOCUS);
var foc = pFOCUS;
jun_disp.draw(ui(6), yy, con_w - ui(12), _m, hov, foc);
hh += jun_disp.h + ui(20); hh += jun_disp.h + ui(20);
continue; continue;
} }
@ -150,7 +149,7 @@ function Panel_Inspector() : PanelContent() constructor {
var butx = ui(16); var butx = ui(16);
var index = jun.value_from == noone? jun.animator.is_anim : 2; var index = jun.value_from == noone? jun.animator.is_anim : 2;
draw_sprite_ui_uniform(THEME.animate_clock, index, butx, lb_y, 1,, 0.8); draw_sprite_ui_uniform(THEME.animate_clock, index, butx, lb_y, 1,, 0.8);
if(pHOVER && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) { if(_hover && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) {
draw_sprite_ui_uniform(THEME.animate_clock, index, butx, lb_y, 1,, 1); draw_sprite_ui_uniform(THEME.animate_clock, index, butx, lb_y, 1,, 1);
TOOLTIP = "Toggle animation"; TOOLTIP = "Toggle animation";
@ -166,7 +165,7 @@ function Panel_Inspector() : PanelContent() constructor {
butx += ui(20); butx += ui(20);
index = jun.visible; index = jun.visible;
draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 0.8); draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 0.8);
if(pHOVER && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) { if(_hover && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) {
draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 1); draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 1);
TOOLTIP = "Visibility"; TOOLTIP = "Visibility";
@ -175,14 +174,14 @@ function Panel_Inspector() : PanelContent() constructor {
} }
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_text(ui(56), lb_y - ui(2), jun.name); draw_text_add(ui(56), lb_y - ui(2), jun.name);
var lb_w = string_width(jun.name) + ui(32); var lb_w = string_width(jun.name) + ui(32);
#region anim #region anim
if(lineBreak && jun.animator.is_anim) { if(lineBreak && jun.animator.is_anim) {
var bx = w - ui(64); var bx = w - ui(64);
var by = lb_y; var by = lb_y;
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, pHOVER, "", THEME.prop_keyframe, 2) == 2) { if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, _hover, "", THEME.prop_keyframe, 2) == 2) {
for(var j = 0; j < ds_list_size(jun.animator.values); j++) { for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
var _key = jun.animator.values[| j]; var _key = jun.animator.values[| j];
if(_key.time > ANIMATOR.current_frame) { if(_key.time > ANIMATOR.current_frame) {
@ -203,7 +202,7 @@ function Panel_Inspector() : PanelContent() constructor {
} }
} }
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, pHOVER, kfFocus? "Remove keyframe" : "Add keyframe", THEME.prop_keyframe, 1, cc) == 2) { if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, _hover, kfFocus? "Remove keyframe" : "Add keyframe", THEME.prop_keyframe, 1, cc) == 2) {
var _add = false; var _add = false;
for(var j = 0; j < ds_list_size(jun.animator.values); j++) { for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
var _key = jun.animator.values[| j]; var _key = jun.animator.values[| j];
@ -222,7 +221,7 @@ function Panel_Inspector() : PanelContent() constructor {
} }
bx -= ui(26); bx -= ui(26);
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, pHOVER, "", THEME.prop_keyframe, 0) == 2) { if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, _hover, "", THEME.prop_keyframe, 0) == 2) {
var _t = -1; var _t = -1;
for(var j = 0; j < ds_list_size(jun.animator.values); j++) { for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
var _key = jun.animator.values[| j]; var _key = jun.animator.values[| j];
@ -241,7 +240,7 @@ function Panel_Inspector() : PanelContent() constructor {
draw_line(bx - ui(20), by - lhf, bx - ui(20), by + lhf); draw_line(bx - ui(20), by - lhf, bx - ui(20), by + lhf);
bx -= ui(26 + 12); bx -= ui(26 + 12);
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, pHOVER, "Looping mode " + ON_END_NAME[jun.on_end], THEME.prop_on_end, jun.on_end) == 2) if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, pFOCUS, _hover, "Looping mode " + ON_END_NAME[jun.on_end], THEME.prop_on_end, jun.on_end) == 2)
jun.on_end = safe_mod(jun.on_end + 1, sprite_get_number(THEME.prop_on_end)); jun.on_end = safe_mod(jun.on_end + 1, sprite_get_number(THEME.prop_on_end));
} }
#endregion #endregion
@ -261,7 +260,7 @@ function Panel_Inspector() : PanelContent() constructor {
if(jun.editWidget) { if(jun.editWidget) {
jun.editWidget.active = pFOCUS; jun.editWidget.active = pFOCUS;
jun.editWidget.hover = pHOVER; jun.editWidget.hover = _hover;
switch(jun.display_type) { switch(jun.display_type) {
case VALUE_DISPLAY.button : case VALUE_DISPLAY.button :
@ -343,7 +342,7 @@ function Panel_Inspector() : PanelContent() constructor {
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_text_cut(editBoxX + ui(8), editBoxY + editBoxH / 2, txt, editBoxW - ui(60)); draw_text_cut(editBoxX + ui(8), editBoxY + editBoxH / 2, txt, editBoxW - ui(60));
if(!pathExist && pHOVER && point_in_rectangle(_m[0], _m[1], icx - ui(17), icy - ui(17), icx + ui(17), icy + ui(17))) if(!pathExist && _hover && point_in_rectangle(_m[0], _m[1], icx - ui(17), icy - ui(17), icx + ui(17), icy + ui(17)))
TOOLTIP = "File not exist"; TOOLTIP = "File not exist";
break; break;
case VALUE_DISPLAY.path_font : case VALUE_DISPLAY.path_font :
@ -372,7 +371,7 @@ function Panel_Inspector() : PanelContent() constructor {
} }
} else if(jun.display_type == VALUE_DISPLAY.label) { } else if(jun.display_type == VALUE_DISPLAY.label) {
draw_set_text(f_p1, fa_left, fa_top, COLORS._main_text_sub); draw_set_text(f_p1, fa_left, fa_top, COLORS._main_text_sub);
draw_text(ui(32), _hsy, jun.display_data); draw_text_add(ui(32), _hsy, jun.display_data);
widH = string_height(jun.display_data); widH = string_height(jun.display_data);
} }
@ -395,7 +394,7 @@ function Panel_Inspector() : PanelContent() constructor {
var _selY1 = yy + lb_h + widH + ui(2); var _selY1 = yy + lb_h + widH + ui(2);
var _selH = _selY1 - _selY; var _selH = _selY1 - _selY;
if(pHOVER && point_in_rectangle(_m[0], _m[1], 4, _selY, contentPane.surface_w - ui(4), _selY + _selH)) { if(_hover && point_in_rectangle(_m[0], _m[1], 4, _selY, contentPane.surface_w - ui(4), _selY + _selH)) {
draw_sprite_stretched_ext(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1);
if(anim_toggling) { if(anim_toggling) {
jun.animator.is_anim = !jun.animator.is_anim; jun.animator.is_anim = !jun.animator.is_anim;
@ -471,7 +470,7 @@ function Panel_Inspector() : PanelContent() constructor {
var bx = w - ui(44); var bx = w - ui(44);
var by = ui(12); var by = ui(12);
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Execute node", THEME.sequence_control, 1) == 2) if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Execute node", THEME.sequence_control, 1, COLORS._main_value_positive) == 2)
inspecting.doUpdate(); inspecting.doUpdate();
} }

View file

@ -156,7 +156,7 @@ function Panel_Menu() : PanelContent() constructor {
} }
draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text);
draw_text(xx + ww / 2, y + h / 2, menus[i][0]); draw_text_add(xx + ww / 2, y + h / 2, menus[i][0]);
xx += ww + 8; xx += ww + 8;
} }

View file

@ -35,6 +35,7 @@ function Panel_Preview() : PanelContent() constructor {
preview_rate = 10; preview_rate = 10;
grid_show = false; grid_show = false;
grid_snap = false;
grid_width = 16; grid_width = 16;
grid_height = 16; grid_height = 16;
grid_opacity = 0.5; grid_opacity = 0.5;
@ -146,6 +147,7 @@ function Panel_Preview() : PanelContent() constructor {
var _prev_val = node.getPreviewValue(); var _prev_val = node.getPreviewValue();
if(_prev_val == undefined) continue;
if(_prev_val == noone) continue; if(_prev_val == noone) continue;
if(_prev_val.type != VALUE_TYPE.surface) continue; if(_prev_val.type != VALUE_TYPE.surface) continue;
@ -493,7 +495,19 @@ function Panel_Preview() : PanelContent() constructor {
} }
} }
_node.drawOverlay(active && isHover, canvas_x + _node.preview_x * canvas_s, canvas_y + _node.preview_y * canvas_s, canvas_s, _mx, _my); var cx = canvas_x + _node.preview_x * canvas_s;
var cy = canvas_y + _node.preview_y * canvas_s;
var _snx = 0, _sny = 0;
if(keyboard_check(vk_control)) {
_snx = grid_show? grid_width : 1;
_sny = grid_show? grid_height : 1;
} else if(grid_snap) {
_snx = grid_width;
_sny = grid_height;
}
_node.drawOverlay(active && isHover, cx, cy, canvas_s, _mx, _my, _snx, _sny);
if(_node.tools != -1) { if(_node.tools != -1) {
var xx = ui(16); var xx = ui(16);

View file

@ -42,9 +42,8 @@ function scrollBox(_data, _onModify) constructor {
} }
if(mouse_click(mb_left, active)) if(mouse_click(mb_left, active))
draw_sprite_stretched(THEME.textbox, 2, _x, _y, ww, _h); draw_sprite_stretched(THEME.textbox, 2, _x, _y, ww, _h);
} else { } else
draw_sprite_stretched(THEME.textbox, 0, _x, _y, ww, _h); draw_sprite_stretched(THEME.textbox, 0, _x, _y, ww, _h);
}
draw_set_text(f_p0, align, fa_center, COLORS._main_text); draw_set_text(f_p0, align, fa_center, COLORS._main_text);
if(align == fa_center) if(align == fa_center)

View file

@ -12,12 +12,14 @@ function scrollPane(_w, _h, ondraw) constructor {
drawFunc = ondraw; drawFunc = ondraw;
content_h = 0; content_h = 0;
hover = false;
is_scroll = true; is_scroll = true;
scroll_step = 64; scroll_step = 64;
active = false; active = false;
is_scrolling = false; is_scrolling = false;
scroll_ms = 0;
static resize = function(_w, _h) { static resize = function(_w, _h) {
w = _w; w = _w;
@ -35,11 +37,7 @@ function scrollPane(_w, _h, ondraw) constructor {
static draw = function(x, y, _mx = mouse_mx - x, _my = mouse_my - y) { static draw = function(x, y, _mx = mouse_mx - x, _my = mouse_my - y) {
var mx = _mx, my = _my; var mx = _mx, my = _my;
hover = point_in_rectangle(mx, my, 0, 0, surface_w, surface_h);
if(!point_in_rectangle(mx, my, 0, 0, surface_w, surface_h)) {
mx = -100;
my = -100;
}
if(!is_surface(surface)) surface = surface_create_valid(surface_w, surface_h); if(!is_surface(surface)) surface = surface_create_valid(surface_w, surface_h);
surface_set_target(surface); surface_set_target(surface);
@ -53,7 +51,6 @@ function scrollPane(_w, _h, ondraw) constructor {
if(sc != is_scroll) if(sc != is_scroll)
resize(w, h); resize(w, h);
scroll_y_to = clamp(scroll_y_to, -content_h, 0);
scroll_y_raw = lerp_float(scroll_y_raw, scroll_y_to, 4); scroll_y_raw = lerp_float(scroll_y_raw, scroll_y_to, 4);
scroll_y = round(scroll_y_raw); scroll_y = round(scroll_y_raw);
draw_surface_safe(surface, x, y); draw_surface_safe(surface, x, y);
@ -64,43 +61,55 @@ function scrollPane(_w, _h, ondraw) constructor {
} }
if(abs(content_h) > 0) { if(abs(content_h) > 0) {
draw_scroll(x + surface_w + ui(4), y + ui(6), true, surface_h - ui(12), -scroll_y / content_h, surface_h / (surface_h + content_h), COLORS.scrollbar_idle, COLORS.scrollbar_hover, x + _mx, y + _my); draw_scroll(x + surface_w + ui(4), y + ui(6), true, surface_h - ui(12), -scroll_y / content_h, surface_h / (surface_h + content_h),
COLORS.scrollbar_bg, COLORS.scrollbar_idle, COLORS.scrollbar_hover, x + _mx, y + _my);
} }
} }
static draw_scroll = function(scr_x, scr_y, is_vert, scr_s, scr_prog, scr_size, bar_col, bar_hcol, mx, my) { static draw_scroll = function(scr_x, scr_y, is_vert, scr_s, scr_prog, scr_ratio, bg_col, bar_col, bar_hcol, mx, my) {
var scr_scale_s = scr_s * scr_size; var scr_scale_s = scr_s * scr_ratio;
var scr_prog_s = scr_prog * (scr_s - scr_scale_s); var scr_prog_s = scr_prog * (scr_s - scr_scale_s);
var scr_w, scr_h, bar_w, bar_h, bar_x, bar_y; var scr_w, scr_h, bar_w, bar_h, bar_x, bar_y;
if(is_vert) { if(is_vert) {
scr_w = ui(sprite_get_width(THEME.ui_scrollbar)); scr_w = ui(sprite_get_width(THEME.ui_scrollbar));
scr_h = scr_s; scr_h = scr_s;
bar_w = ui(sprite_get_width(THEME.ui_scrollbar)); bar_w = ui(sprite_get_width(THEME.ui_scrollbar));
bar_h = scr_scale_s; bar_h = scr_scale_s;
bar_x = scr_x; bar_x = scr_x;
bar_y = scr_y + scr_prog_s; bar_y = scr_y + scr_prog_s;
} else { } else {
scr_w = scr_s; scr_w = scr_s;
scr_h = ui(sprite_get_width(THEME.ui_scrollbar)); scr_h = ui(sprite_get_width(THEME.ui_scrollbar));
bar_w = scr_scale_s; bar_w = scr_scale_s;
bar_h = ui(sprite_get_width(THEME.ui_scrollbar)); bar_h = ui(sprite_get_width(THEME.ui_scrollbar));
bar_x = scr_x + scr_prog_s; bar_x = scr_x + scr_prog_s;
bar_y = scr_y; bar_y = scr_y;
} }
if(is_scrolling) {
var delta = (is_vert? my : mx) - scroll_ms;
scroll_ms = is_vert? my : mx;
scroll_y_to -= (delta / scr_scale_s) * scr_s;
scroll_y_to = clamp(scroll_y_to, -content_h, 0);
if(mouse_release(mb_left))
is_scrolling = false;
}
draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, scr_x, scr_y, scr_w, scr_h, bg_col, 1);
draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, bar_x, bar_y, bar_w, bar_h, bar_col, 1); draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, bar_x, bar_y, bar_w, bar_h, bar_col, 1);
if(active && point_in_rectangle(mx, my, scr_x - 2, scr_y - 2, scr_x + scr_w + 2, scr_y + scr_h + 2) || is_scrolling) { if(active && point_in_rectangle(mx, my, scr_x - 2, scr_y - 2, scr_x + scr_w + 2, scr_y + scr_h + 2) || is_scrolling) {
draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, bar_x, bar_y, bar_w, bar_h, bar_hcol, 1); draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, bar_x, bar_y, bar_w, bar_h, bar_hcol, 1);
if(mouse_click(mb_left, active)) { if(mouse_click(mb_left, active)) {
if(is_vert)
scroll_y_to = clamp((my - scr_y - scr_scale_s / 2) / (scr_s - scr_scale_s), 0, 1) * -content_h;
else
scroll_y_to = clamp((mx - scr_x - scr_scale_s / 2) / (scr_s - scr_scale_s), 0, 1) * -content_h;
is_scrolling = true; is_scrolling = true;
} else scroll_ms = is_vert? my : mx;
is_scrolling = false; }
} else }
is_scrolling = false;
} }
} }

View file

@ -4,7 +4,8 @@ function __init_theme() {
directory_create(root); directory_create(root);
var _l = root + "\\_theme" + string(VERSION); var _l = root + "\\_theme" + string(VERSION);
if(file_exists(_l)) return;
//if(file_exists(_l)) return;
log_message("THEME", "unzipping default theme to DIRECTORY."); log_message("THEME", "unzipping default theme to DIRECTORY.");
var f = file_text_open_write(_l); var f = file_text_open_write(_l);
file_text_write_real(f, 0); file_text_write_real(f, 0);

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "sprites", "name": "scritps",
"path": "folders/sprites.yy", "path": "folders/main/scritps.yy",
}, },
} }

View file

@ -18,7 +18,7 @@ function textBox(_input, _onModify) constructor {
slidable = false; slidable = false;
sliding = false; sliding = false;
slide_mx = 0; slide_mx = 0;
slide_sx = 0; slide_my = 0;
slide_speed = 1 / 16; slide_speed = 1 / 16;
starting_char = 1; starting_char = 1;
@ -265,22 +265,34 @@ function textBox(_input, _onModify) constructor {
if(sliding > 0) { if(sliding > 0) {
var dx = _m[0] - slide_mx; var dx = _m[0] - slide_mx;
if(abs(dx) > 16) var dy = slide_my - _m[1];
if(sliding == 1 && (abs(dx) > 16 || abs(dy) > 16)) {
sliding = 2; sliding = 2;
slide_mx = _m[0];
slide_my = _m[1];
}
if(sliding == 2) { if(sliding == 2) {
var spd = dx * slide_speed; var spd = (abs(dx) > abs(dy)? dx : dy) * slide_speed;
if(keyboard_check(vk_alt)) if(keyboard_check(vk_alt))
spd /= 10; spd /= 10;
if(keyboard_check(vk_control)) if(keyboard_check(vk_control))
spd *= 10; spd *= 10;
_input_text = slide_sx + spd; var _ip = _input_text;
_input_text = _input_text + spd;
switch(input) { switch(input) {
case TEXTBOX_INPUT.number : _input_text = round(_input_text); break; case TEXTBOX_INPUT.number : _input_text = round(_input_text); break;
} }
if(_input_text != _ip) {
slide_mx = _m[0];
slide_my = _m[1];
}
apply(); apply();
UNDO_HOLDING = true; UNDO_HOLDING = true;
@ -428,8 +440,9 @@ function textBox(_input, _onModify) constructor {
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + hh)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + hh)) {
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
sliding = 1; sliding = 1;
slide_mx = _m[0]; slide_mx = _m[0];
slide_sx = toNumber(_text); slide_my = _m[1];
} }
} }
} }

View file

@ -0,0 +1,4 @@
function value_snap(val, snap) {
if(snap == 0) return val;
return round(val / snap) * snap;
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "value_snap",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "value",
"path": "folders/functions/value.yy",
},
}