mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 11:28:06 +01:00
Timeline rework, node, junction color.
This commit is contained in:
parent
7a63c91762
commit
521f82cd0d
51 changed files with 1077 additions and 464 deletions
|
@ -76,7 +76,7 @@
|
|||
{"name":"vector","order":4,"path":"folders/functions/vector.yy",},
|
||||
{"name":"window","order":27,"path":"folders/functions/window.yy",},
|
||||
{"name":"main","order":1,"path":"folders/main.yy",},
|
||||
{"name":"startup scripts","order":2,"path":"folders/main/startup scripts.yy",},
|
||||
{"name":"components","order":2,"path":"folders/main/components.yy",},
|
||||
{"name":"nodes","order":3,"path":"folders/nodes.yy",},
|
||||
{"name":"data","order":1,"path":"folders/nodes/data.yy",},
|
||||
{"name":"3D","order":8,"path":"folders/nodes/data/3D.yy",},
|
||||
|
@ -377,6 +377,7 @@
|
|||
{"name":"o_dialog_panel","order":13,"path":"objects/o_dialog_panel/o_dialog_panel.yy",},
|
||||
{"name":"s_node_vfx","order":9,"path":"sprites/s_node_vfx/s_node_vfx.yy",},
|
||||
{"name":"fd_rectangle_get_velocity_maccormack_weight","order":23,"path":"scripts/fd_rectangle_get_velocity_maccormack_weight/fd_rectangle_get_velocity_maccormack_weight.yy",},
|
||||
{"name":"note_data","order":19,"path":"scripts/note_data/note_data.yy",},
|
||||
{"name":"sh_fd_advect_material_rgba_8_glsl","order":5,"path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",},
|
||||
{"name":"addon_function","order":3,"path":"scripts/addon_function/addon_function.yy",},
|
||||
{"name":"node_armature_bind","order":1,"path":"scripts/node_armature_bind/node_armature_bind.yy",},
|
||||
|
@ -578,6 +579,7 @@
|
|||
{"name":"surface_valid","order":6,"path":"scripts/surface_valid/surface_valid.yy",},
|
||||
{"name":"sh_blur_zoom","order":5,"path":"shaders/sh_blur_zoom/sh_blur_zoom.yy",},
|
||||
{"name":"node_isosurf","order":4,"path":"scripts/node_isosurf/node_isosurf.yy",},
|
||||
{"name":"__add_node_item","order":13,"path":"scripts/__add_node_item/__add_node_item.yy",},
|
||||
{"name":"node_VFX_renderer","order":3,"path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},
|
||||
{"name":"s_node_pb_fx_stack","order":2,"path":"sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy",},
|
||||
{"name":"fd_draw_sprite_to_collision_mask_surface","order":1,"path":"scripts/fd_draw_sprite_to_collision_mask_surface/fd_draw_sprite_to_collision_mask_surface.yy",},
|
||||
|
@ -620,6 +622,7 @@
|
|||
{"name":"pack_bottom_left","order":2,"path":"scripts/pack_bottom_left/pack_bottom_left.yy",},
|
||||
{"name":"o_dialog_lua_reference","order":5,"path":"objects/o_dialog_lua_reference/o_dialog_lua_reference.yy",},
|
||||
{"name":"__node_custom","order":14,"path":"scripts/__node_custom/__node_custom.yy",},
|
||||
{"name":"s_node_note","order":35,"path":"sprites/s_node_note/s_node_note.yy",},
|
||||
{"name":"node_strand_gravity","order":4,"path":"scripts/node_strand_gravity/node_strand_gravity.yy",},
|
||||
{"name":"load_palette","order":3,"path":"scripts/load_palette/load_palette.yy",},
|
||||
{"name":"luaHighlight","order":1,"path":"scripts/luaHighlight/luaHighlight.yy",},
|
||||
|
@ -1202,6 +1205,7 @@
|
|||
{"name":"sh_dilate","order":4,"path":"shaders/sh_dilate/sh_dilate.yy",},
|
||||
{"name":"node_image_sequence","order":1,"path":"scripts/node_image_sequence/node_image_sequence.yy",},
|
||||
{"name":"node_text_file_read","order":7,"path":"scripts/node_text_file_read/node_text_file_read.yy",},
|
||||
{"name":"node_note","order":17,"path":"scripts/node_note/node_note.yy",},
|
||||
{"name":"node_pb_box_divide_grid","order":7,"path":"scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy",},
|
||||
{"name":"panel_preview_onion_setting","order":7,"path":"scripts/panel_preview_onion_setting/panel_preview_onion_setting.yy",},
|
||||
{"name":"d3d_cylinder","order":2,"path":"scripts/d3d_cylinder/d3d_cylinder.yy",},
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"vector","folderPath":"folders/functions/vector.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"window","folderPath":"folders/functions/window.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"main","folderPath":"folders/main.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"startup scripts","folderPath":"folders/main/startup scripts.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"components","folderPath":"folders/main/components.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"nodes","folderPath":"folders/nodes.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/nodes/data.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy",},
|
||||
|
@ -319,6 +319,7 @@
|
|||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animate_clock_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animate_node_go.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animate_onion_skin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animate_prop_go.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_setting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_stretch.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_timing.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||
|
@ -531,9 +532,17 @@
|
|||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junction_name_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_outline_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_outline.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_new_badge.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_note_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_note_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_note_resize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_note_selecting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_note_title.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_state.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
|
||||
|
@ -938,6 +947,7 @@
|
|||
{"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},},
|
||||
{"id":{"name":"fd_rectangle_get_velocity_maccormack_weight","path":"scripts/fd_rectangle_get_velocity_maccormack_weight/fd_rectangle_get_velocity_maccormack_weight.yy",},},
|
||||
{"id":{"name":"s_node_mesh_path","path":"sprites/s_node_mesh_path/s_node_mesh_path.yy",},},
|
||||
{"id":{"name":"note_data","path":"scripts/note_data/note_data.yy",},},
|
||||
{"id":{"name":"sh_fd_advect_material_rgba_8_glsl","path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",},},
|
||||
{"id":{"name":"addon_function","path":"scripts/addon_function/addon_function.yy",},},
|
||||
{"id":{"name":"node_armature_bind","path":"scripts/node_armature_bind/node_armature_bind.yy",},},
|
||||
|
@ -1164,6 +1174,7 @@
|
|||
{"id":{"name":"steam_ugc_collection","path":"scripts/steam_ugc_collection/steam_ugc_collection.yy",},},
|
||||
{"id":{"name":"sh_blur_zoom","path":"shaders/sh_blur_zoom/sh_blur_zoom.yy",},},
|
||||
{"id":{"name":"node_isosurf","path":"scripts/node_isosurf/node_isosurf.yy",},},
|
||||
{"id":{"name":"__add_node_item","path":"scripts/__add_node_item/__add_node_item.yy",},},
|
||||
{"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},},
|
||||
{"id":{"name":"s_node_pb_fx_stack","path":"sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy",},},
|
||||
{"id":{"name":"fd_draw_sprite_to_collision_mask_surface","path":"scripts/fd_draw_sprite_to_collision_mask_surface/fd_draw_sprite_to_collision_mask_surface.yy",},},
|
||||
|
@ -1215,6 +1226,7 @@
|
|||
{"id":{"name":"o_dialog_lua_reference","path":"objects/o_dialog_lua_reference/o_dialog_lua_reference.yy",},},
|
||||
{"id":{"name":"__node_custom","path":"scripts/__node_custom/__node_custom.yy",},},
|
||||
{"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},},
|
||||
{"id":{"name":"s_node_note","path":"sprites/s_node_note/s_node_note.yy",},},
|
||||
{"id":{"name":"node_strand_gravity","path":"scripts/node_strand_gravity/node_strand_gravity.yy",},},
|
||||
{"id":{"name":"load_palette","path":"scripts/load_palette/load_palette.yy",},},
|
||||
{"id":{"name":"sh_alpha_cutoff","path":"shaders/sh_alpha_cutoff/sh_alpha_cutoff.yy",},},
|
||||
|
@ -1870,6 +1882,7 @@
|
|||
{"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},},
|
||||
{"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},},
|
||||
{"id":{"name":"node_text_file_read","path":"scripts/node_text_file_read/node_text_file_read.yy",},},
|
||||
{"id":{"name":"node_note","path":"scripts/node_note/node_note.yy",},},
|
||||
{"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},},
|
||||
{"id":{"name":"node_pb_box_divide_grid","path":"scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy",},},
|
||||
{"id":{"name":"draw_tooltip","path":"scripts/draw_tooltip/draw_tooltip.yy",},},
|
||||
|
|
Binary file not shown.
|
@ -54,6 +54,8 @@ event_inherited();
|
|||
#endregion
|
||||
|
||||
function rightClick(node) { #region
|
||||
if(!is_instanceof(node, NodeObject)) return;
|
||||
|
||||
node_menu_selecting = node;
|
||||
var fav = array_exists(global.FAV_NODES, node.node);
|
||||
|
||||
|
@ -133,10 +135,20 @@ event_inherited();
|
|||
return;
|
||||
}
|
||||
|
||||
if(is_instanceof(_node, AddNodeItem)) {
|
||||
_node.onClick({
|
||||
node_called,
|
||||
junction_hovering
|
||||
});
|
||||
instance_destroy(o_dialog_menubox);
|
||||
instance_destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
var _new_node = noone;
|
||||
var _inputs = 0, _outputs = 0;
|
||||
|
||||
if(instanceof(_node) == "NodeObject") {
|
||||
if(is_instanceof(_node, NodeObject)) {
|
||||
_new_node = _node.build(node_target_x, node_target_y,, _param);
|
||||
if(!_new_node) {
|
||||
instance_destroy();
|
||||
|
@ -153,7 +165,7 @@ event_inherited();
|
|||
|
||||
_inputs = _new_node.inputs;
|
||||
_outputs = _new_node.outputs;
|
||||
} else if(instanceof(_node) == "NodeAction") {
|
||||
} else if(is_instanceof(_node, NodeAction)) {
|
||||
var res = _node.build(node_target_x, node_target_y,, _param);
|
||||
|
||||
if(_node.inputNode != noone)
|
||||
|
@ -413,10 +425,12 @@ event_inherited();
|
|||
var _boxx = _nx + (grid_width - grid_size) / 2;
|
||||
|
||||
BLEND_OVERRIDE;
|
||||
if(instanceof(_node) == "NodeObject")
|
||||
if(is_instanceof(_node, NodeObject))
|
||||
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
||||
else if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS._main_value_positive, 1);
|
||||
else if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.add_node_blend_action, 1);
|
||||
else if(is_instanceof(_node, AddNodeItem))
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.add_node_blend_generic, 1);
|
||||
else
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
|
||||
BLEND_NORMAL;
|
||||
|
@ -436,8 +450,8 @@ event_inherited();
|
|||
if(sprite_exists(_node.spr))
|
||||
draw_sprite_ui_uniform(_node.spr, 0, spr_x, spr_y, 0.5);
|
||||
|
||||
if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS._main_value_positive);
|
||||
if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS.add_node_blend_action);
|
||||
|
||||
if(_node.getTooltip() != "") {
|
||||
if(point_in_rectangle(_m[0], _m[1], _boxx, yy, _boxx + ui(16), yy + ui(16))) {
|
||||
|
@ -459,10 +473,11 @@ event_inherited();
|
|||
draw_sprite_ui_uniform(THEME.node_deprecated_badge, 1, _boxx + grid_size - ui(12), yy + ui(6));
|
||||
}
|
||||
|
||||
var fav = array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav)
|
||||
draw_sprite_ui_uniform(THEME.star, 0, _boxx + grid_size - ui(10), yy + grid_size - ui(10), 0.7, COLORS._main_accent, 1.);
|
||||
|
||||
if(is_instanceof(_node, NodeObject)) {
|
||||
var fav = array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, _boxx + grid_size - ui(10), yy + grid_size - ui(10), 0.7, COLORS._main_accent, 1.);
|
||||
}
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
|
||||
draw_text_ext_add(_boxx + grid_size / 2, yy + grid_size + 4, _node.getName(), -1, grid_width);
|
||||
|
||||
|
@ -549,8 +564,10 @@ event_inherited();
|
|||
rightClick(_node);
|
||||
}
|
||||
|
||||
var fav = array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
||||
if(is_instanceof(_node, NodeObject)) {
|
||||
var fav = array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
||||
}
|
||||
|
||||
var spr_x = list_height / 2 + ui(32);
|
||||
var spr_y = yy + list_height / 2;
|
||||
|
@ -561,8 +578,8 @@ event_inherited();
|
|||
draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1);
|
||||
}
|
||||
|
||||
if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, spr_x + list_height / 2 - 8, spr_y + list_height / 2 - 8, 0.5, COLORS._main_value_positive);
|
||||
if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, spr_x + list_height / 2 - 8, spr_y + list_height / 2 - 8, 0.5, COLORS.add_node_blend_action);
|
||||
|
||||
var tx = list_height + ui(40);
|
||||
|
||||
|
@ -667,7 +684,7 @@ event_inherited();
|
|||
var _node = _content[| j];
|
||||
|
||||
if(is_string(_node)) continue;
|
||||
if(ds_map_exists(search_map, _node.node)) continue;
|
||||
if(ds_map_exists(search_map, _node)) continue;
|
||||
if(struct_try_get(_node, "deprecated")) continue;
|
||||
|
||||
var match = string_partial_match(string_lower(_node.getName()), search_lower);
|
||||
|
@ -683,7 +700,7 @@ event_inherited();
|
|||
if(match == -9999) continue;
|
||||
|
||||
ds_priority_add(pr_list, [_node, param], match);
|
||||
search_map[? _node.node] = 1;
|
||||
search_map[? _node] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -747,10 +764,12 @@ event_inherited();
|
|||
var _boxx = _nx + (grid_width - grid_size) / 2;
|
||||
|
||||
BLEND_OVERRIDE;
|
||||
if(instanceof(_node) == "NodeObject")
|
||||
if(is_instanceof(_node, NodeObject))
|
||||
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
||||
else if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS._main_value_positive, 1);
|
||||
else if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.add_node_blend_action, 1);
|
||||
else if(is_instanceof(_node, AddNodeItem))
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.add_node_blend_generic, 1);
|
||||
else
|
||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
|
||||
BLEND_NORMAL;
|
||||
|
@ -773,8 +792,8 @@ event_inherited();
|
|||
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
||||
}
|
||||
|
||||
if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS._main_value_positive);
|
||||
if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS.add_node_blend_action);
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
|
||||
var txt = _node.getName();
|
||||
|
@ -804,10 +823,11 @@ event_inherited();
|
|||
} else
|
||||
draw_sprite_ui_uniform(THEME.info, 0, _boxx + ui(8), yy + ui(8), 0.7, COLORS._main_icon, 0.5);
|
||||
}
|
||||
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav)
|
||||
draw_sprite_ui_uniform(THEME.star, 0, _boxx + grid_size - ui(10), yy + grid_size - ui(10), 0.7, COLORS._main_accent, 1.);
|
||||
|
||||
if(is_instanceof(_node, NodeObject)) {
|
||||
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, _boxx + grid_size - ui(10), yy + grid_size - ui(10), 0.7, COLORS._main_accent, 1.);
|
||||
}
|
||||
|
||||
if(node_focusing == i)
|
||||
search_pane.scroll_y_to = -max(0, hh - search_pane.h);
|
||||
|
||||
|
@ -857,12 +877,14 @@ event_inherited();
|
|||
|
||||
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
||||
|
||||
if(instanceof(_node) == "NodeAction")
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _sx + list_height / 2 - 8, _sy + list_height / 2 - 8, 0.5, COLORS._main_value_positive);
|
||||
if(is_instanceof(_node, NodeAction))
|
||||
draw_sprite_ui_uniform(THEME.play_action, 0, _sx + list_height / 2 - 8, _sy + list_height / 2 - 8, 0.5, COLORS.add_node_blend_action);
|
||||
}
|
||||
|
||||
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
||||
if(is_instanceof(_node, NodeObject)) {
|
||||
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
||||
}
|
||||
|
||||
draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text);
|
||||
draw_text_add(list_height + ui(40), yy + list_height / 2, _node.getName());
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
/// @description init
|
||||
draw_clear(COLORS.bg);
|
||||
|
||||
if(OS == os_windows && gameframe_is_minimized()) {
|
||||
//gameframe_update();
|
||||
exit;
|
||||
} else if(OS == os_macosx) {
|
||||
mac_window_step();
|
||||
}
|
||||
#region gameframe
|
||||
if(OS == os_windows && gameframe_is_minimized()) {
|
||||
//gameframe_update();
|
||||
exit;
|
||||
} else if(OS == os_macosx) {
|
||||
mac_window_step();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region widget scroll
|
||||
if(!WIDGET_TAB_BLOCK) {
|
||||
|
@ -47,6 +49,11 @@ if(OS == os_windows && gameframe_is_minimized()) {
|
|||
gameframe_update();
|
||||
#endregion
|
||||
|
||||
#region notes
|
||||
for( var i = 0, n = array_length(PROJECT.notes); i < n; i++ )
|
||||
PROJECT.notes[i].draw();
|
||||
#endregion
|
||||
|
||||
#region window
|
||||
var pd = gameframe_resize_padding;
|
||||
|
||||
|
|
24
scripts/__add_node_item/__add_node_item.gml
Normal file
24
scripts/__add_node_item/__add_node_item.gml
Normal file
|
@ -0,0 +1,24 @@
|
|||
function AddNodeItem() constructor {
|
||||
name = "";
|
||||
spr = noone;
|
||||
tags = [];
|
||||
|
||||
tooltip = "";
|
||||
tooltip_spr = noone;
|
||||
new_node = false;
|
||||
|
||||
onClick = -1;
|
||||
|
||||
static getName = function() { return name; }
|
||||
static getTooltip = function() { return tooltip; }
|
||||
}
|
||||
|
||||
function addNodeItem(list, name, spr, onClick) {
|
||||
var item = new AddNodeItem();
|
||||
item.name = name;
|
||||
item.spr = spr;
|
||||
item.onClick = onClick;
|
||||
|
||||
ds_list_add(list, item);
|
||||
return item;
|
||||
}
|
11
scripts/__add_node_item/__add_node_item.yy
Normal file
11
scripts/__add_node_item/__add_node_item.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "__add_node_item",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "__base__",
|
||||
"path": "folders/nodes/data/__base__.yy",
|
||||
},
|
||||
}
|
|
@ -5,6 +5,7 @@ function __Node_Base(x, y) constructor {
|
|||
display_name = "";
|
||||
inputs = ds_list_create();
|
||||
outputs = ds_list_create();
|
||||
input_value_map = {};
|
||||
|
||||
active_index = -1;
|
||||
preview_index = 0;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -135,6 +135,12 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false, override = false
|
|||
if(struct_has(_load_content, "attributes"))
|
||||
struct_override(PROJECT.attributes, _load_content.attributes);
|
||||
|
||||
if(struct_has(_load_content, "notes")) {
|
||||
PROJECT.notes = array_create(array_length(_load_content.notes));
|
||||
for( var i = 0, n = array_length(_load_content.notes); i < n; i++ )
|
||||
PROJECT.notes[i] = new Note.deserialize(_load_content.notes[i]);
|
||||
}
|
||||
|
||||
try {
|
||||
if(struct_has(_load_content, "metadata"))
|
||||
METADATA.deserialize(_load_content.metadata);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -74,12 +74,19 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
cc = expValid? COLORS._main_value_positive : COLORS._main_value_negative;
|
||||
}
|
||||
|
||||
if(global_var)
|
||||
if(string_pos(" ", _name)) cc = COLORS._main_value_negative;
|
||||
if(global_var) if(string_pos(" ", _name)) cc = COLORS._main_value_negative;
|
||||
|
||||
draw_set_text(breakLine? f_p0 : f_p1, fa_left, fa_center, cc);
|
||||
draw_text_add(xx + ui(40), lb_y - ui(2), _name);
|
||||
draw_set_text(f_p0, fa_left, fa_center, cc);
|
||||
var lb_w = string_width(_name) + ui(48);
|
||||
var lb_x = xx + ui(40);
|
||||
|
||||
if(jun.color != -1) { #region
|
||||
draw_sprite_ext(THEME.timeline_color, 1, lb_x + ui(8), lb_y, 1, 1, 0, jun.color, 1);
|
||||
lb_x += ui(24);
|
||||
lb_w += ui(24);
|
||||
} #endregion
|
||||
|
||||
draw_text_add(lb_x, lb_y - ui(2), _name);
|
||||
|
||||
#region tooltip
|
||||
if(jun.tooltip != "") {
|
||||
|
|
|
@ -352,7 +352,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
return array_exists(global.loop_nodes, instanceof(group));
|
||||
} #endregion
|
||||
|
||||
static move = function(_x, _y) { #region
|
||||
static move = function(_x, _y, _s) { #region
|
||||
if(x == _x && y == _y) return;
|
||||
|
||||
x = _x;
|
||||
|
@ -730,8 +730,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
|
||||
var aa = 0.25 + 0.5 * renderActive;
|
||||
if(!isHighlightingInGraph()) aa *= 0.25;
|
||||
var cc = timeline_item.color == -1? color : timeline_item.color;
|
||||
|
||||
draw_sprite_stretched_ext(bg_spr, 0, xx, yy, w * _s, h * _s, color, aa);
|
||||
draw_sprite_stretched_ext(bg_spr, 0, xx, yy, w * _s, h * _s, cc, aa);
|
||||
} #endregion
|
||||
|
||||
static drawGetBbox = function(xx, yy, _s) { #region
|
||||
|
@ -769,8 +770,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
|
||||
var aa = 0.25 + 0.5 * renderActive;
|
||||
if(!isHighlightingInGraph()) aa *= 0.25;
|
||||
var cc = timeline_item.color == -1? color : timeline_item.color;
|
||||
|
||||
draw_sprite_stretched_ext(THEME.node_bg_name, 0, xx, yy, w * _s, ui(20), color, aa);
|
||||
draw_sprite_stretched_ext(THEME.node_bg_name, 0, xx, yy, w * _s, ui(20), cc, aa);
|
||||
|
||||
var cc = COLORS._main_text;
|
||||
if(PREF_MAP[? "node_show_render_status"] && !rendered)
|
||||
|
@ -838,14 +840,16 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
static drawJunctionNames = function(_x, _y, _mx, _my, _s) { #region
|
||||
if(draw_graph_culled) return;
|
||||
if(!active) return;
|
||||
|
||||
var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
|
||||
var jun;
|
||||
|
||||
var xx = x * _s + _x;
|
||||
var yy = y * _s + _y;
|
||||
|
||||
show_input_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx - 8 * _s, yy + 20 * _s, xx + 8 * _s, yy + h * _s);
|
||||
show_output_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx + (w - 8) * _s, yy + 20 * _s, xx + (w + 8) * _s, yy + h * _s);
|
||||
var _hov = PANEL_GRAPH.pHOVER && (PANEL_GRAPH.node_hovering == noone || PANEL_GRAPH.node_hovering == self);
|
||||
show_input_name = _hov && point_in_rectangle(_mx, _my, xx - 8 * _s, yy + 20 * _s, xx + 8 * _s, yy + h * _s);
|
||||
show_output_name = _hov && point_in_rectangle(_mx, _my, xx + (w - 8) * _s, yy + 20 * _s, xx + (w + 8) * _s, yy + h * _s);
|
||||
|
||||
if(show_input_name) {
|
||||
for(var i = 0; i < amo; i++) {
|
||||
|
|
|
@ -144,7 +144,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
var _dtype = getInputData(0);
|
||||
var _range = getInputData(1);
|
||||
var _type = getInputData(2);
|
||||
var _val_type = data_type_map[_type];
|
||||
var _val_type = array_safe_get(data_type_map, _type, VALUE_TYPE.any);
|
||||
var _enum_label = getInputData(3);
|
||||
var _vec_size = getInputData(4);
|
||||
var _step = getInputData(7);
|
||||
|
@ -296,7 +296,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
if(is_undefined(inParent)) return;
|
||||
|
||||
var _type = getInputData(2);
|
||||
var _val_type = data_type_map[_type];
|
||||
var _val_type = array_safe_get(data_type_map, _type, VALUE_TYPE.any);
|
||||
inputs[| 0].display_data.data = array_safe_get(display_list, _val_type);
|
||||
inputs[| 0].editWidget.data_list = array_safe_get(display_list, _val_type);
|
||||
|
||||
|
@ -330,7 +330,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
var _data = getInputData(2);
|
||||
_dstype = array_safe_get(array_safe_get(display_list, _data, []), _dstype);
|
||||
|
||||
var _datype = data_type_map[_data];
|
||||
var _datype = array_safe_get(data_type_map, _data, VALUE_TYPE.any);
|
||||
|
||||
inputs[| 1].setVisible(false);
|
||||
inputs[| 3].setVisible(false);
|
||||
|
|
12
scripts/node_note/node_checkerboard.yy
Normal file
12
scripts/node_note/node_checkerboard.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/nodes/data/generator.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_checkerboard",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
187
scripts/node_note/node_note.gml
Normal file
187
scripts/node_note/node_note.gml
Normal file
|
@ -0,0 +1,187 @@
|
|||
function Node_Note(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "New Note";
|
||||
w = 240;
|
||||
h = 160;
|
||||
alpha = 1;
|
||||
bg_spr = THEME.node_note_bg;
|
||||
bg_sel_spr = THEME.node_note_selecting;
|
||||
|
||||
size_dragging = false;
|
||||
size_dragging_w = w;
|
||||
size_dragging_h = h;
|
||||
size_dragging_mx = w;
|
||||
size_dragging_my = h;
|
||||
|
||||
auto_height = false;
|
||||
name_hover = false;
|
||||
hover_progress = 0;
|
||||
|
||||
color = c_white;
|
||||
text_color = c_black;
|
||||
alpha = 1;
|
||||
content = "";
|
||||
attributes.expand = true;
|
||||
|
||||
inputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 240, 160 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.rejectArray();
|
||||
|
||||
inputs[| 1] = nodeValue("BG Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, CDEF.yellow )
|
||||
.rejectArray();
|
||||
|
||||
inputs[| 2] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
|
||||
.setDisplay(VALUE_DISPLAY.slider)
|
||||
.rejectArray();
|
||||
|
||||
inputs[| 3] = nodeValue("Content", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
||||
.rejectArray();
|
||||
|
||||
inputs[| 4] = nodeValue("Text Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black )
|
||||
.rejectArray();
|
||||
|
||||
input_display_list = [ 3, 0, 4, 1, 2 ];
|
||||
|
||||
static move = function(_x, _y, _s) { #region
|
||||
if(x == _x && y == _y) return;
|
||||
|
||||
var dx = x - _x;
|
||||
var dy = y - _y;
|
||||
|
||||
x += dx / _s;
|
||||
y += dy / _s;
|
||||
|
||||
if(!LOADING) PROJECT.modified = true;
|
||||
} #endregion
|
||||
|
||||
static step = function() {
|
||||
var si = getInputData(0);
|
||||
w = si[0];
|
||||
h = si[1];
|
||||
|
||||
color = getInputData(1);
|
||||
alpha = getInputData(2);
|
||||
content = getInputData(3);
|
||||
}
|
||||
|
||||
static drawNodeBase = function(xx, yy) {
|
||||
if(!attributes.expand) return false;
|
||||
|
||||
draw_sprite_stretched_ext(bg_spr, 0, xx, yy, w, h, color, alpha);
|
||||
hover_progress = lerp_float(hover_progress, name_hover, 2);
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_top, text_color);
|
||||
draw_text_ext_add(round(xx + 8), round(yy + 18), content, -1, w - 16);
|
||||
|
||||
draw_sprite_ext(THEME.node_note_pin, attributes.expand, xx + 10, yy + 10, 1, 1, 0, color, 1);
|
||||
}
|
||||
|
||||
static drawNode = function(_x, _y, _mx, _my, _s) {
|
||||
if(size_dragging) {
|
||||
w = max(32, size_dragging_w + (mouse_mx - size_dragging_mx));
|
||||
h = max(32, size_dragging_h + (mouse_my - size_dragging_my));
|
||||
if(!key_mod_press(CTRL)) {
|
||||
w = max(32, round(w / 32) * 32);
|
||||
h = max(32, round(h / 32) * 32);
|
||||
}
|
||||
|
||||
if(mouse_release(mb_left)) {
|
||||
size_dragging = false;
|
||||
inputs[| 0].setValue([ w, h ]);
|
||||
}
|
||||
}
|
||||
|
||||
var xx = x;
|
||||
var yy = y;
|
||||
|
||||
var x0 = xx;
|
||||
var y0 = yy;
|
||||
var x1 = x0 + 16;
|
||||
var y1 = y0 + 16;
|
||||
|
||||
if(point_in_rectangle(_mx, _my, x0, y0, x1, y1)) {
|
||||
if(!attributes.expand) TOOLTIP = content;
|
||||
|
||||
if(mouse_press(mb_left))
|
||||
attributes.expand = !attributes.expand;
|
||||
}
|
||||
|
||||
if(!attributes.expand) {
|
||||
draw_sprite_ext(THEME.node_note_pin, attributes.expand, xx + 10, yy + 10, 1, 1, 0, color, 1);
|
||||
return false;
|
||||
}
|
||||
|
||||
drawNodeBase(xx, yy, _s);
|
||||
|
||||
if(active_draw_index > -1) {
|
||||
draw_sprite_stretched_ext(bg_sel_spr, 0, xx, yy, w, h, COLORS._main_accent, 1);
|
||||
active_draw_index = -1;
|
||||
}
|
||||
|
||||
var x1 = xx + w;
|
||||
var y1 = yy + h;
|
||||
var x0 = x1 - 16;
|
||||
var y0 = y1 - 16;
|
||||
var cc = merge_color(color, c_black, 0.25);
|
||||
|
||||
if(point_in_rectangle(_mx, _my, x0, y0, x1, y1)) {
|
||||
draw_sprite_ext(THEME.node_note_resize, 1, x1, y1, 1, 1, 0, cc, 1);
|
||||
PANEL_GRAPH.drag_locking = true;
|
||||
|
||||
if(mouse_press(mb_left)) {
|
||||
size_dragging = true;
|
||||
size_dragging_w = w;
|
||||
size_dragging_h = h;
|
||||
size_dragging_mx = mouse_mx;
|
||||
size_dragging_my = mouse_my;
|
||||
}
|
||||
} else draw_sprite_ext(THEME.node_note_resize, 0, x1, y1, 1, 1, 0, cc, 1);
|
||||
|
||||
return noone;
|
||||
}
|
||||
|
||||
static pointIn = function(_x, _y, _mx, _my, _s) {
|
||||
if(!attributes.expand) return false;
|
||||
|
||||
var xx = x;
|
||||
var yy = y;
|
||||
|
||||
var x1 = xx + w;
|
||||
var y1 = yy + h;
|
||||
var x0 = x1 - 16;
|
||||
var y0 = y1 - 16;
|
||||
|
||||
var hover = point_in_rectangle(_mx, _my, xx, yy, xx + w, yy + h) && !point_in_rectangle(_mx, _my, x0, y0, x1, y1);
|
||||
name_hover = hover;
|
||||
|
||||
return hover;
|
||||
}
|
||||
|
||||
static drawBadge = function(_x, _y, _s) { #region
|
||||
if(!active) return;
|
||||
if(!attributes.expand) return false;
|
||||
|
||||
var xx = x + w;
|
||||
var yy = y;
|
||||
|
||||
badgePreview = lerp_float(badgePreview, !!previewing, 2);
|
||||
badgeInspect = lerp_float(badgeInspect, inspecting, 2);
|
||||
|
||||
if(badgePreview > 0) {
|
||||
draw_sprite_ext(THEME.node_state, 0, xx, yy, badgePreview, badgePreview, 0, c_white, 1);
|
||||
xx -= 28 * badgePreview;
|
||||
}
|
||||
|
||||
if(badgeInspect > 0) {
|
||||
draw_sprite_ext(THEME.node_state, 1, xx, yy, badgeInspect, badgeInspect, 0, c_white, 1);
|
||||
xx -= 28 * badgeInspect;
|
||||
}
|
||||
|
||||
if(isTool) {
|
||||
draw_sprite_ext(THEME.node_state, 2, xx, yy, 1, 1, 0, c_white, 1);
|
||||
xx -= 28 * 2;
|
||||
}
|
||||
|
||||
inspecting = false;
|
||||
previewing = 0;
|
||||
} #endregion
|
||||
}
|
11
scripts/node_note/node_note.yy
Normal file
11
scripts/node_note/node_note.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_note",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "misc",
|
||||
"path": "folders/nodes/data/misc.yy",
|
||||
},
|
||||
}
|
12
scripts/node_note/node_stripe.yy
Normal file
12
scripts/node_note/node_stripe.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "generator",
|
||||
"path": "folders/nodes/data/generator.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_stripe",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -262,9 +262,12 @@ function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
var vec = getSingleValue(0,, true);
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
|
||||
var v0 = array_safe_get(vec, 0);
|
||||
var v1 = array_safe_get(vec, 1);
|
||||
|
||||
if(disp == 0 || inputs[| 0].value_from != noone || inputs[| 1].value_from != noone) {
|
||||
draw_set_text(f_h1, fa_center, fa_center, COLORS._main_text);
|
||||
var str = string(vec[0]) + "\n" + string(vec[1]);
|
||||
var str = $"{v0}\n{v1}";
|
||||
var ss = string_scale(str, bbox.w, bbox.h);
|
||||
draw_text_transformed(bbox.xc, bbox.yc, str, ss, ss, 0);
|
||||
return;
|
||||
|
@ -300,9 +303,9 @@ function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
draw_rectangle(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 1);
|
||||
draw_set_alpha(1);
|
||||
|
||||
var pin_x = (vec[0] - wd_minx) / (wd_maxx - wd_minx);
|
||||
var pin_y = (vec[1] - wd_miny) / (wd_maxy - wd_miny);
|
||||
if(point_in_rectangle(vec[0], vec[1], wd_minx, wd_miny, wd_maxx, wd_maxy)) {
|
||||
var pin_x = (v0 - wd_minx) / (wd_maxx - wd_minx);
|
||||
var pin_y = (v1 - wd_miny) / (wd_maxy - wd_miny);
|
||||
if(point_in_rectangle(v0, v1, wd_minx, wd_miny, wd_maxx, wd_maxy)) {
|
||||
var pin_dx = bbox.x0 + bbox.w * pin_x;
|
||||
var pin_dy = bbox.y1 - bbox.h * pin_y;
|
||||
draw_sprite_ext(THEME.node_coor_pin, 0, pin_dx, pin_dy, 1, 1, 0, c_white, 1);
|
||||
|
@ -384,7 +387,7 @@ function Node_Vector2(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
}
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_bottom, COLORS._main_text);
|
||||
var str = "[" + string(vec[0]) + ", " + string(vec[1]) + "]";
|
||||
var str = $"[{v0}, {v1}]";
|
||||
draw_text(bbox.xc, bbox.y1 - 4, str);
|
||||
}
|
||||
}
|
||||
|
@ -433,7 +436,11 @@ function Node_Vector3(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
draw_set_text(f_h1, fa_center, fa_center, COLORS._main_text);
|
||||
var vec = getSingleValue(0,, true);
|
||||
var str = string(vec[0]) + "\n" + string(vec[1]) + "\n" + string(vec[2]);
|
||||
var v0 = array_safe_get(vec, 0);
|
||||
var v1 = array_safe_get(vec, 1);
|
||||
var v2 = array_safe_get(vec, 2);
|
||||
|
||||
var str = $"{v0}\n{v1}\n{v2}";
|
||||
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
var ss = string_scale(str, bbox.w, bbox.h);
|
||||
|
@ -488,7 +495,12 @@ function Node_Vector4(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
draw_set_text(f_h1, fa_center, fa_center, COLORS._main_text);
|
||||
var vec = getSingleValue(0,, true);
|
||||
var str = string(vec[0]) + "\n" + string(vec[1]) + "\n" + string(vec[2]) + "\n" + string(vec[3]);
|
||||
var v0 = array_safe_get(vec, 0);
|
||||
var v1 = array_safe_get(vec, 1);
|
||||
var v2 = array_safe_get(vec, 2);
|
||||
var v3 = array_safe_get(vec, 3);
|
||||
|
||||
var str = $"{v0}\n{v1}\n{v2}\n{v3}";
|
||||
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
var ss = string_scale(str, bbox.w, bbox.h);
|
||||
|
|
|
@ -701,7 +701,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
|
|||
addNodeObject(node, "Widget Test", s_node_print, "Node_Widget_Test", [1, Node_Widget_Test]);
|
||||
|
||||
ds_list_add(node, "System");
|
||||
addNodeObject(node, "Execute Shell", s_node_shell_excecute, "Node_Shell", [1, Node_Shell], ["terminal", "execute", "run"], "Execute shell script.").setVersion(11530);
|
||||
addNodeObject(node, "Execute Shell", s_node_shell_excecute, "Node_Shell", [1, Node_Shell], ["terminal", "execute", "run"], "Execute shell script.").setVersion(11530);
|
||||
//addNodeObject(node, "Note", s_node_note, "Node_Note", [1, Node_Note]).setVersion(11530);
|
||||
#endregion
|
||||
|
||||
var actions = ds_list_create();
|
||||
|
|
|
@ -139,40 +139,86 @@ enum VALUE_TAG {
|
|||
|
||||
function value_color(i) { #region
|
||||
static JUNCTION_COLORS = [
|
||||
$6691ff, //int
|
||||
$78e4ff, //float
|
||||
$5d3f8c, //bool
|
||||
$5dde8f, //color
|
||||
$976bff, //surface
|
||||
$4b00eb, //path
|
||||
$d1c2c2, //curve
|
||||
$e3ff66, //text
|
||||
$b5b5ff, //object
|
||||
$ffa64d, //node
|
||||
#ff9166, //int
|
||||
#ffe478, //float
|
||||
#8c3f5d, //bool
|
||||
#8fde5d, //color
|
||||
#ff6b97, //surface
|
||||
#eb004b, //path
|
||||
#c2c2d1, //curve
|
||||
#66ffe3, //text
|
||||
#ffb5b5, //object
|
||||
#4da6ff, //node
|
||||
#c1007c, //3D
|
||||
$808080, //any
|
||||
$b5b5ff, //path
|
||||
$5dde8f, //particle
|
||||
$e3ff66, //rigid
|
||||
#808080, //any
|
||||
#ffb5b5, //path
|
||||
#8fde5d, //particle
|
||||
#88ffe9, //rigid
|
||||
#4da6ff, //fdomain
|
||||
$5d3f8c, //struct
|
||||
$6691ff, //strand
|
||||
$d1c2c2, //mesh
|
||||
$5dde8f, //trigger
|
||||
$976bff, //atlas
|
||||
#8c3f5d, //struct
|
||||
#ff9166, //strand
|
||||
#c2c2d1, //mesh
|
||||
#8fde5d, //trigger
|
||||
#ff6b97, //atlas
|
||||
#c1007c, //d3vertex
|
||||
$5dde8f, //gradient
|
||||
$6691ff, //armature
|
||||
$808080, //buffer
|
||||
$976bff, //pbBox
|
||||
$ffa64d, //d3Mesh
|
||||
$ffa64d, //d3Light
|
||||
$ffa64d, //d3Camera
|
||||
$ffa64d, //d3Scene
|
||||
$976bff, //d3Material
|
||||
$976bff, //dynaSurf
|
||||
#8fde5d, //gradient
|
||||
#ff9166, //armature
|
||||
#808080, //buffer
|
||||
#ff6b97, //pbBox
|
||||
#4da6ff, //d3Mesh
|
||||
#4da6ff, //d3Light
|
||||
#4da6ff, //d3Camera
|
||||
#4da6ff, //d3Scene
|
||||
#ff6b97, //d3Material
|
||||
#ff6b97, //dynaSurf
|
||||
#c2c2d1, //PCX
|
||||
$5dde8f, //audiobit
|
||||
#8fde5d, //audiobit
|
||||
];
|
||||
|
||||
if(i == 99) return $5dde8f;
|
||||
return JUNCTION_COLORS[safe_mod(max(0, i), array_length(JUNCTION_COLORS))];
|
||||
} #endregion
|
||||
|
||||
function value_color_bg(i) { #region
|
||||
return #3b3b4e;
|
||||
} #endregion
|
||||
|
||||
function value_color_bg_array(i) { #region
|
||||
static JUNCTION_COLORS = [
|
||||
#e36956, //int
|
||||
#ff9166, //float
|
||||
#5e315b, //bool
|
||||
#3ca370, //color
|
||||
#bd4882, //surface
|
||||
#bb003c, //path
|
||||
#83839b, //curve
|
||||
#4da6ff, //text
|
||||
#e28989, //object
|
||||
#4b5bab, //node
|
||||
#64003f, //3D
|
||||
#4d4d4d, //any
|
||||
#e28989, //path
|
||||
#3ca370, //particle
|
||||
#4da6ff, //rigid
|
||||
#4b5bab, //fdomain
|
||||
#5e315b, //struct
|
||||
#e36956, //strand
|
||||
#83839b, //mesh
|
||||
#3ca370, //trigger
|
||||
#9e2a69, //atlas
|
||||
#64003f, //d3vertex
|
||||
#3ca370, //gradient
|
||||
#e36956, //armature
|
||||
#4d4d4d, //buffer
|
||||
#bd4882, //pbBox
|
||||
#4b5bab, //d3Mesh
|
||||
#4b5bab, //d3Light
|
||||
#4b5bab, //d3Camera
|
||||
#4b5bab, //d3Scene
|
||||
#bd4882, //d3Material
|
||||
#bd4882, //dynaSurf
|
||||
#83839b, //PCX
|
||||
#3ca370, //audiobit
|
||||
];
|
||||
|
||||
if(i == 99) return $5dde8f;
|
||||
|
@ -561,6 +607,9 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
drag_my = 0;
|
||||
drag_sx = 0;
|
||||
drag_sy = 0;
|
||||
|
||||
color = -1;
|
||||
color_display = 0;
|
||||
#endregion
|
||||
|
||||
#region ---- timeline ----
|
||||
|
@ -1891,28 +1940,30 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
if(!isVisible()) return false;
|
||||
|
||||
var ss = max(0.25, _s / 2);
|
||||
var is_hover = false;
|
||||
var hov = PANEL_GRAPH.pHOVER && (PANEL_GRAPH.node_hovering == noone || PANEL_GRAPH.node_hovering == node);
|
||||
var is_hover = hov && point_in_circle(_mx, _my, x, y, 10 * _s * sca);
|
||||
|
||||
if(PANEL_GRAPH.pHOVER && point_in_circle(_mx, _my, x, y, 10 * _s * sca)) {
|
||||
//var _to = getJunctionTo();
|
||||
//var _ss = "";
|
||||
//for( var i = 0, n = array_length(_to); i < n; i++ )
|
||||
// _ss += (i? ", " : "") + _to[i].internalName;
|
||||
//TOOLTIP = _ss;
|
||||
|
||||
is_hover = true;
|
||||
if(type == VALUE_TYPE.action)
|
||||
junction_drawing = [THEME.node_junction_inspector, 1];
|
||||
else
|
||||
junction_drawing = [isArray()? THEME.node_junctions_array_hover : THEME.node_junctions_single_hover, draw_junction_index];
|
||||
var _bgS = THEME.node_junctions_bg;
|
||||
var _fgS = is_hover? THEME.node_junctions_outline_hover : THEME.node_junctions_outline;
|
||||
|
||||
var _bgC, _fgC;
|
||||
|
||||
if(color == -1) {
|
||||
_bgC = isArray()? value_color_bg_array(draw_junction_index) : value_color_bg(draw_junction_index);
|
||||
_fgC = value_color(draw_junction_index);
|
||||
} else {
|
||||
if(type == VALUE_TYPE.action)
|
||||
junction_drawing = [THEME.node_junction_inspector, 0];
|
||||
else
|
||||
junction_drawing = [isArray()? THEME.node_junctions_array : THEME.node_junctions_single, draw_junction_index];
|
||||
_bgC = isArray()? merge_color(color, CDEF.main_dkgrey, 0.35) : value_color_bg(draw_junction_index);
|
||||
_fgC = color;
|
||||
}
|
||||
|
||||
draw_sprite_ext(junction_drawing[0], junction_drawing[1], x, y, ss, ss, 0, c_white, 1);
|
||||
if(type == VALUE_TYPE.action) {
|
||||
draw_sprite_ext(THEME.node_junction_inspector, is_hover, x, y, ss, ss, 0, c_white, 1);
|
||||
color_display = #8fde5d;
|
||||
} else {
|
||||
draw_sprite_ext(_bgS, draw_junction_index, x, y, ss, ss, 0, _bgC, 1);
|
||||
draw_sprite_ext(_fgS, draw_junction_index, x, y, ss, ss, 0, _fgC, 1);
|
||||
color_display = _fgC;
|
||||
}
|
||||
|
||||
return is_hover;
|
||||
} #endregion
|
||||
|
@ -2065,11 +2116,11 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
var _fade = PREF_MAP[? "connection_line_highlight_fade"];
|
||||
var _colr = _selc? 1 : _fade;
|
||||
|
||||
c0 = merge_color(bg, value_color(value_from.type), _colr);
|
||||
c1 = merge_color(bg, value_color(type), _colr);
|
||||
c0 = merge_color(bg, value_from.color_display, _colr);
|
||||
c1 = merge_color(bg, color_display, _colr);
|
||||
} else {
|
||||
c0 = value_color(value_from.type);
|
||||
c1 = value_color(type);
|
||||
c0 = value_from.color_display;
|
||||
c1 = color_display;
|
||||
}
|
||||
|
||||
var ss = _s * aa;
|
||||
|
@ -2126,7 +2177,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
var corner = PREF_MAP[? "connection_line_corner"] * ss;
|
||||
var th = PREF_MAP[? "connection_line_width"] * ss;
|
||||
|
||||
var col = value_color(type);
|
||||
var col = color_display;
|
||||
draw_set_color(col);
|
||||
|
||||
switch(PREF_MAP[? "curve_connection_line"]) {
|
||||
|
@ -2313,6 +2364,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
_map.attributes = attributes;
|
||||
|
||||
_map.name_custom = name_custom;
|
||||
_map.color = color;
|
||||
|
||||
return _map;
|
||||
} #endregion
|
||||
|
@ -2341,7 +2393,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
draw_line_shift_y = struct_try_get(_map, "shift_y");
|
||||
|
||||
name_custom = struct_try_get(_map, "name_custom", false);
|
||||
if(name_custom) name = struct_try_get(_map, "name", name);
|
||||
if(name_custom) name = struct_try_get(_map, "name", name);
|
||||
color = struct_try_get(_map, "color", -1);
|
||||
|
||||
animator.deserialize(struct_try_get(_map, "raw_value"), scale);
|
||||
|
||||
|
|
20
scripts/note_data/note_data.gml
Normal file
20
scripts/note_data/note_data.gml
Normal file
|
@ -0,0 +1,20 @@
|
|||
function Note() constructor {
|
||||
content = [];
|
||||
w = 256;
|
||||
h = 256;
|
||||
|
||||
static draw = function() {
|
||||
|
||||
}
|
||||
|
||||
static serialize = function() {
|
||||
var _dat = {};
|
||||
_dat.content = [];
|
||||
return _dat;
|
||||
}
|
||||
|
||||
static deserialize = function(_dat) {
|
||||
content = _dat.content;
|
||||
return self;
|
||||
}
|
||||
}
|
11
scripts/note_data/note_data.yy
Normal file
11
scripts/note_data/note_data.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "note_data",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -27,8 +27,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
dope_sheet_surface = surface_create_valid(dope_sheet_w, 1);
|
||||
dope_sheet_mask = surface_create_valid(dope_sheet_w, 1);
|
||||
|
||||
dope_sheet_name_mask = surface_create_valid(tool_width - ui(16), 1);
|
||||
dope_sheet_name_surface = surface_create_valid(tool_width - ui(16), 1);
|
||||
dope_sheet_name_mask = surface_create_valid(tool_width, 1);
|
||||
dope_sheet_name_surface = surface_create_valid(tool_width, 1);
|
||||
} #endregion
|
||||
initSize();
|
||||
|
||||
|
@ -92,6 +92,9 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
#region ---- display ----
|
||||
show_node_outside_context = true;
|
||||
|
||||
tooltip_loop_prop = noone;
|
||||
tooltip_loop_type = new tooltipSelector(__txtx("panel_animation_looping_mode", "Looping mode"), global.junctionEndName);
|
||||
#endregion
|
||||
|
||||
#region ---- item hover ----
|
||||
|
@ -285,27 +288,41 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
var _clrs = COLORS.timeline_blend;
|
||||
var _item = array_create(array_length(_clrs));
|
||||
|
||||
|
||||
function setSelectingItemColor(color) { if(context_selecting_item == noone) return; context_selecting_item.item.color = color; }
|
||||
|
||||
for( var i = 0, n = array_length(_clrs); i < n; i++ ) {
|
||||
_item[i] = [
|
||||
[ THEME.timeline_color, i > 0, _clrs[i] ],
|
||||
function(_data) {
|
||||
context_selecting_item.item.color = _data.color;
|
||||
setSelectingItemColor(_data.color);
|
||||
}, "", { color: i == 0? -1 : _clrs[i] }
|
||||
];
|
||||
}
|
||||
|
||||
array_push(_item, [
|
||||
[ THEME.timeline_color, 2 ],
|
||||
function(_data) {
|
||||
var dialog = dialogCall(o_dialog_color_selector);
|
||||
dialog.selector.onApply = setSelectingItemColor;
|
||||
dialog.onApply = setSelectingItemColor;
|
||||
}
|
||||
]);
|
||||
|
||||
var clr = menuItemGroup(__txt("Color"), _item);
|
||||
clr.spacing = ui(24);
|
||||
|
||||
name_menu_item = [
|
||||
clr,
|
||||
-1,
|
||||
name_menu_empty[0]
|
||||
];
|
||||
|
||||
name_menu_group = [
|
||||
clr,
|
||||
menuItem(__txt("Rename"), function() { context_selecting_item.item.rename(); }),
|
||||
menuItem(__txt("Delete"), function() { context_selecting_item.item.destroy(); }, THEME.cross),
|
||||
-1,
|
||||
name_menu_empty[0]
|
||||
];
|
||||
#endregion
|
||||
|
@ -364,19 +381,10 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
function onFocusBegin() { PANEL_ANIMATION = self; }
|
||||
|
||||
function onResize() { #region
|
||||
initSize();
|
||||
|
||||
function surfaceVerify() { #region
|
||||
if(w - tool_width > 1) {
|
||||
if(is_surface(timeline_mask) && surface_exists(timeline_mask))
|
||||
surface_size_to(timeline_mask, timeline_w, timeline_h);
|
||||
else
|
||||
timeline_mask = surface_create_valid(timeline_w, timeline_h);
|
||||
|
||||
if(is_surface(timeline_surface) && surface_exists(timeline_surface))
|
||||
surface_size_to(timeline_surface, timeline_w, timeline_h);
|
||||
else
|
||||
timeline_surface = surface_create_valid(timeline_w, timeline_h);
|
||||
timeline_mask = surface_verify(timeline_mask, timeline_w, timeline_h);
|
||||
timeline_surface = surface_verify(timeline_surface, timeline_w, timeline_h);
|
||||
}
|
||||
|
||||
dope_sheet_w = timeline_w;
|
||||
|
@ -385,15 +393,20 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
dope_sheet_mask = surface_verify(dope_sheet_mask, dope_sheet_w, dope_sheet_h);
|
||||
dope_sheet_surface = surface_verify(dope_sheet_surface, dope_sheet_w, dope_sheet_h);
|
||||
|
||||
dope_sheet_name_mask = surface_verify(dope_sheet_name_mask, tool_width, dope_sheet_h);
|
||||
dope_sheet_name_mask = surface_verify(dope_sheet_name_mask, tool_width, dope_sheet_h);
|
||||
dope_sheet_name_surface = surface_verify(dope_sheet_name_surface, tool_width, dope_sheet_h);
|
||||
}
|
||||
} #endregion
|
||||
|
||||
function onResize() { #region
|
||||
initSize();
|
||||
|
||||
surfaceVerify();
|
||||
resetTimelineMask();
|
||||
} #endregion
|
||||
|
||||
function resetTimelineMask() { #region
|
||||
if(!surface_exists(timeline_mask))
|
||||
timeline_mask = surface_create_valid(timeline_w, timeline_h);
|
||||
timeline_mask = surface_verify(timeline_mask, timeline_w, timeline_h);
|
||||
|
||||
surface_set_target(timeline_mask);
|
||||
draw_clear(c_black);
|
||||
|
@ -1004,13 +1017,20 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var tx = tool_width;
|
||||
var ty = animator.y - 1;
|
||||
|
||||
var cc = colorMultiply(_item.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
||||
draw_set_color(cc);
|
||||
if(prop.show_graph) {
|
||||
var _y1 = ty + ui(10) + prop.graph_h + ui(8);
|
||||
var c1 = colorMultiply(_item.item.color_cur, COLORS.panel_animation_dope_key_bg_hover);
|
||||
draw_set_color(c1);
|
||||
draw_rectangle(0, ty + ui(10), tx, _y1, false);
|
||||
}
|
||||
|
||||
var c0 = colorMultiply(_item.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
||||
draw_set_color(c0);
|
||||
draw_rectangle(0, ty - ui(10), tx, ty + ui(10), false);
|
||||
|
||||
#region keyframe control
|
||||
tx = tool_width - ui(20 + 16 * 3);
|
||||
if(buttonInstant(noone, tx - ui(6), ty - ui(6), ui(12), ui(12), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 0, [COLORS._main_icon, COLORS._main_icon_on_inner]) == 2) {
|
||||
if(buttonInstant(noone, tx - ui(10), ty - ui(9), ui(20), ui(17), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 0, [COLORS._main_icon, COLORS._main_icon_on_inner]) == 2) {
|
||||
var _t = -1;
|
||||
for(var k = 0; k < ds_list_size(animator.values); k++) {
|
||||
var _key = animator.values[| k];
|
||||
|
@ -1021,7 +1041,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
}
|
||||
|
||||
tx = tool_width - ui(20 + 16 * 1);
|
||||
if(buttonInstant(noone, tx - ui(6), ty - ui(6), ui(12), ui(12), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 2, [COLORS._main_icon, COLORS._main_icon_on_inner]) == 2) {
|
||||
if(buttonInstant(noone, tx - ui(10), ty - ui(9), ui(20), ui(17), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 2, [COLORS._main_icon, COLORS._main_icon_on_inner]) == 2) {
|
||||
for(var k = 0; k < ds_list_size(animator.values); k++) {
|
||||
var _key = animator.values[| k];
|
||||
if(_key.time > CURRENT_FRAME) {
|
||||
|
@ -1034,7 +1054,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
#region add keyframe
|
||||
tx = tool_width - ui(20 + 16 * 2);
|
||||
if(buttonInstant(noone, tx - ui(6), ty - ui(6), ui(12), ui(12), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 1, [COLORS._main_accent, COLORS._main_icon_on_inner]) == 2) {
|
||||
if(buttonInstant(noone, tx - ui(10), ty - ui(9), ui(20), ui(17), [msx, msy], pFOCUS, pHOVER, "", THEME.prop_keyframe, 1, [COLORS._main_accent, COLORS._main_icon_on_inner]) == 2) {
|
||||
var _add = false;
|
||||
for(var k = 0; k < ds_list_size(animator.values); k++) {
|
||||
var _key = animator.values[| k];
|
||||
|
@ -1055,7 +1075,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
if(isGraphable(prop)) {
|
||||
tx = tool_width - ui(16);
|
||||
if(pHOVER && point_in_circle(msx, msy, tx, ty, ui(8))) {
|
||||
if(pHOVER && point_in_rectangle(msx, msy, tx - ui(9), ty - ui(10), tx + ui(10), ty + ui(8))) {
|
||||
draw_sprite_ui_uniform(THEME.timeline_graph, 1, tx, ty, 1, COLORS._main_icon_on_inner, 1);
|
||||
TOOLTIP = __txtx("panel_animation_show_graph", "Show graph");
|
||||
|
||||
|
@ -1066,9 +1086,14 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
}
|
||||
|
||||
tx = tool_width - ui(20 + 16 * 4.5);
|
||||
if(pHOVER && point_in_circle(msx, msy, tx, ty, ui(6))) {
|
||||
if(pHOVER && point_in_rectangle(msx, msy, tx - ui(10), ty - ui(9), tx + ui(10), ty + ui(8))) {
|
||||
draw_sprite_ui_uniform(THEME.prop_on_end, prop.on_end, tx, ty, 1, COLORS._main_icon_on_inner, 1);
|
||||
TOOLTIP = __txtx("panel_animation_looping_mode", "Looping mode") + ": " + global.junctionEndName[prop.on_end];
|
||||
|
||||
if(tooltip_loop_prop != prop)
|
||||
tooltip_loop_type.arrow_pos = noone;
|
||||
tooltip_loop_prop = prop;
|
||||
tooltip_loop_type.index = prop.on_end;
|
||||
TOOLTIP = tooltip_loop_type;
|
||||
|
||||
if(mouse_release(mb_left, pFOCUS))
|
||||
prop.on_end = safe_mod(prop.on_end + 1, sprite_get_number(THEME.prop_on_end));
|
||||
|
@ -1084,6 +1109,14 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
value_focusing = prop;
|
||||
}
|
||||
|
||||
var _gx = ui(20);
|
||||
var _gy = ty;
|
||||
if(hov)
|
||||
if(buttonInstant(noone, _gx - ui(10), _gy - ui(9), ui(20), ui(17), [msx, msy], pFOCUS, pHOVER, "", THEME.animate_prop_go, 0, [COLORS._main_icon, COLORS._main_icon_on_inner], 0.75) == 2) {
|
||||
graphFocusNode(_node);
|
||||
PANEL_INSPECTOR.highlightProp(prop);
|
||||
}
|
||||
|
||||
var cc = prop.sep_axis? COLORS.axis[animator.index] : COLORS._main_text_inner;
|
||||
if(hov) cc = COLORS._main_text_accent;
|
||||
|
||||
|
@ -1236,9 +1269,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var bar_h = timeline_h;
|
||||
var bar_total_w = TOTAL_FRAMES * ui(timeline_scale);
|
||||
|
||||
dope_sheet_surface = surface_verify(dope_sheet_surface, dope_sheet_w, dope_sheet_h);
|
||||
dope_sheet_name_surface = surface_verify(dope_sheet_name_surface, dope_sheet_w, dope_sheet_h);
|
||||
|
||||
surfaceVerify();
|
||||
|
||||
#region scroll
|
||||
dope_sheet_y = lerp_float(dope_sheet_y, dope_sheet_y_to, 4);
|
||||
|
||||
|
@ -1308,11 +1340,14 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
_cont.h += dope_sheet_node_padding;
|
||||
|
||||
var _ks = key_y;
|
||||
if(_cont.item.color_cur > -1) {
|
||||
if(_cont.item.color_dsp > -1) {
|
||||
draw_set_color(_cont.item.color_dsp);
|
||||
draw_rectangle(0, _ks - 1, bar_show_w, _ks + ui(20), false);
|
||||
|
||||
cc = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
||||
}
|
||||
|
||||
if(_cont.item.color_cur > -1) {
|
||||
var c0 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
||||
var c1 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg_hover);
|
||||
}
|
||||
|
||||
key_y += ui(20) + _expand * ui(10);
|
||||
|
@ -1324,30 +1359,32 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var prop = _cont.props[j];
|
||||
var _prop = prop.prop;
|
||||
prop.y = key_y;
|
||||
|
||||
|
||||
for( var k = 0; k < array_length(prop.animators); k++ ) {
|
||||
prop.animators[k].y = key_y;
|
||||
|
||||
draw_set_color(c_red);
|
||||
|
||||
if(_prop == value_focusing) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(8), bar_show_w, ui(16), COLORS.panel_animation_graph_select, 1);
|
||||
else if(_prop == value_hovering) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(6), bar_show_w, ui(12), COLORS.panel_animation_graph_bg, 1);
|
||||
if(_cont.item.color_cur > -1) {
|
||||
draw_set_color(c0);
|
||||
draw_rectangle(0, key_y - ui(10), bar_show_w, key_y + ui(10), false);
|
||||
|
||||
if(_prop == value_focusing) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(8), bar_show_w, ui(16), c1, 1);
|
||||
//else if(_prop == value_hovering) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(2), bar_show_w, ui( 4), c1, 1);
|
||||
}
|
||||
|
||||
key_y += ui(18);
|
||||
_cont.h += ui(18);
|
||||
}
|
||||
|
||||
if(_prop.show_graph) {
|
||||
draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(4), bar_show_w, _prop.graph_h, COLORS.panel_animation_graph_bg, 1);
|
||||
if(_cont.item.color_cur > -1) {
|
||||
draw_set_color(c1);
|
||||
draw_rectangle(0, key_y - ui(10), bar_show_w, key_y + _prop.graph_h - ui(2), false);
|
||||
}
|
||||
//draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(4), bar_show_w, _prop.graph_h, COLORS.panel_animation_graph_bg, 1);
|
||||
key_y += _prop.graph_h + ui(8);
|
||||
_cont.h += _prop.graph_h + ui(8);
|
||||
}
|
||||
}
|
||||
|
||||
if(_cont.item.color_cur > -1) {
|
||||
draw_set_color(cc);
|
||||
draw_rectangle(0, _ks, bar_show_w, key_y - ui(10), false);
|
||||
}
|
||||
}
|
||||
|
||||
key_y -= _expand * ui(10);
|
||||
|
@ -1897,10 +1934,10 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
PROJECT.timelines.addItem(_dir);
|
||||
}
|
||||
|
||||
by += ui(28);
|
||||
var txt = show_node_outside_context? __txtx("panel_animation_hide_node", "Hide node outside context") : __txtx("panel_animation_show_node", "Show node outside context");
|
||||
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(24), [mx, my], pFOCUS, pHOVER, txt, THEME.junc_visible, show_node_outside_context) == 2)
|
||||
show_node_outside_context = !show_node_outside_context;
|
||||
//by += ui(28);
|
||||
//var txt = show_node_outside_context? __txtx("panel_animation_hide_node", "Hide node outside context") : __txtx("panel_animation_show_node", "Show node outside context");
|
||||
//if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(24), [mx, my], pFOCUS, pHOVER, txt, THEME.junc_visible, show_node_outside_context) == 2)
|
||||
// show_node_outside_context = !show_node_outside_context;
|
||||
|
||||
by += ui(28);
|
||||
var txt = "";
|
||||
|
|
|
@ -374,6 +374,154 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
} #endregion
|
||||
#endregion
|
||||
|
||||
#region ++++ context menu ++++
|
||||
menu_sent_to_preview = menuItem(__txtx("panel_graph_send_to_preview", "Send to preview"), function() { setCurrentPreview(node_hover); });
|
||||
menu_send_to_window = menuItem(__txtx("panel_graph_preview_window", "Send to preview window"), function() { create_preview_window(node_hover); }, noone, ["Graph", "Preview window"]);
|
||||
menu_sent_to_inspector = menuItem(__txtx("panel_graph_inspector_panel", "Send to new inspector"), function() {
|
||||
var pan = panelAdd("Panel_Inspector", true);
|
||||
pan.destroy_on_click_out = false;
|
||||
pan.content.setInspecting(node_hover);
|
||||
pan.content.locked = true;
|
||||
});
|
||||
menu_send_export = menuItem(__txtx("panel_graph_send_to_export", "Send to export"), function() { setCurrentExport(node_hover); }, noone, ["Graph", "Export"]);
|
||||
menu_toggle_preview = menuItem(__txtx("panel_graph_toggle_preview", "Toggle node preview"), function() { setTriggerPreview(); }, noone, ["Graph", "Toggle preview"]);
|
||||
menu_toggle_render = menuItem(__txtx("panel_graph_toggle_render", "Toggle node render"), function() { setTriggerRender(); }, noone, ["Graph", "Toggle render"]);
|
||||
menu_open_group = menuItem(__txtx("panel_graph_enter_group", "Open group"), function() { PANEL_GRAPH.addContext(node_hover); }, THEME.group);
|
||||
menu_open_group_tab = menuItem(__txtx("panel_graph_enter_group_new_tab", "Open group in new tab"), function() {
|
||||
var graph = new Panel_Graph(project);
|
||||
panel.setContent(graph, true);
|
||||
|
||||
for( var i = 0; i < ds_list_size(node_context); i++ )
|
||||
graph.addContext(node_context[| i]);
|
||||
graph.addContext(node_hover);
|
||||
|
||||
setFocus(panel);
|
||||
}, THEME.group);
|
||||
menu_group_ungroup = menuItem(__txt("Ungroup"), function() { doUngroup(); }, THEME.group, ["Graph", "Ungroup"]);
|
||||
menu_group_tool = menuItem(__txt("Set as group tool"), function() { node_hover.setTool(!node_hover.isTool); });
|
||||
|
||||
menu_node_delete_merge = menuItem(__txtx("panel_graph_delete_and_merge_connection", "Delete and merge connection"), function() { doDelete(true); }, THEME.cross, ["Graph", "Delete (merge)"]);
|
||||
menu_node_delete_cut = menuItem(__txtx("panel_graph_delete_and_cut_connection", "Delete and cut connection"), function() { doDelete(false); }, THEME.cross, ["Graph", "Delete (break)"]);
|
||||
menu_node_duplicate = menuItem(__txt("Duplicate"), function() { doDuplicate(); }, THEME.duplicate, ["Graph", "Duplicate"]);
|
||||
menu_node_copy = menuItem(__txt("Copy"), function() { doCopy(); }, THEME.copy, ["Graph", "Copy"]);
|
||||
|
||||
menu_node_transform = menuItem(__txtx("panel_graph_add_transform", "Add transform"), function() { doTransform(); }, noone, ["Graph", "Transform node"]);
|
||||
menu_node_canvas = menuItem(__txtx("panel_graph_canvas", "Canvas"),
|
||||
function(_dat) {
|
||||
return submenuCall(_dat, [
|
||||
menuItem(__txtx("panel_graph_copy_to_canvas", "Copy to canvas"), function() { setCurrentCanvas(node_hover); }, noone, ["Graph", "Canvas"]),
|
||||
menuItem(__txtx("panel_graph_overlay_canvas", "Overlay canvas"), function() { setCurrentCanvasBlend(node_hover); }, noone, ["Graph", "Canvas blend"])
|
||||
]);
|
||||
}).setIsShelf();
|
||||
|
||||
menu_nodes_align = menuItem(__txtx("panel_graph_align_nodes", "Align nodes"), function(_dat) {
|
||||
return submenuCall(_dat, [
|
||||
menuItemGroup(__txtx("horizontal", "Horizontal"), [
|
||||
[ [THEME.inspector_surface_halign, 0], function() { node_halign(nodes_select_list, fa_left); } ],
|
||||
[ [THEME.inspector_surface_halign, 1], function() { node_halign(nodes_select_list, fa_center); } ],
|
||||
[ [THEME.inspector_surface_halign, 2], function() { node_halign(nodes_select_list, fa_right); } ],
|
||||
]),
|
||||
menuItemGroup(__txtx("vertical", "Vertical"), [
|
||||
[ [THEME.inspector_surface_valign, 0], function() { node_valign(nodes_select_list, fa_top); } ],
|
||||
[ [THEME.inspector_surface_valign, 1], function() { node_valign(nodes_select_list, fa_middle); } ],
|
||||
[ [THEME.inspector_surface_valign, 2], function() { node_valign(nodes_select_list, fa_bottom); } ],
|
||||
]),
|
||||
menuItemGroup(__txtx("distribute", "Distribute"), [
|
||||
[ [THEME.obj_distribute_h, 0], function() { node_hdistribute(nodes_select_list); } ],
|
||||
[ [THEME.obj_distribute_v, 0], function() { node_vdistribute(nodes_select_list); } ],
|
||||
]),
|
||||
]);
|
||||
}).setIsShelf();
|
||||
menu_nodes_blend = menuItem(__txtx("panel_graph_blend_nodes", "Blend nodes"), function() { doBlend(); }, noone, ["Graph", "Blend"]);
|
||||
menu_nodes_compose = menuItem(__txtx("panel_graph_compose_nodes", "Compose nodes"), function() { doCompose(); }, noone, ["Graph", "Compose"]);
|
||||
menu_nodes_array = menuItem(__txtx("panel_graph_array_from_nodes", "Array from nodes"), function() { doArray(); }, noone, ["Graph", "Array"]);
|
||||
menu_nodes_group = menuItem(__txtx("panel_graph_group_nodes", "Group nodes"), function() { doGroup(); }, THEME.group, ["Graph", "Group"]);
|
||||
menu_nodes_frame = menuItem(__txtx("panel_graph_frame_nodes", "Frame nodes"), function() { doFrame(); }, noone, ["Graph", "Frame"]);
|
||||
|
||||
#region node color
|
||||
function setSelectingNodeColor(color) {
|
||||
if(node_hover == noone) return;
|
||||
node_hover.timeline_item.color = color;
|
||||
|
||||
for(var i = 0; i < ds_list_size(nodes_select_list); i++)
|
||||
nodes_select_list[| i].timeline_item.color = color;
|
||||
}
|
||||
|
||||
var _clrs = COLORS.timeline_blend;
|
||||
var _item = array_create(array_length(_clrs));
|
||||
|
||||
for( var i = 0, n = array_length(_clrs); i < n; i++ ) {
|
||||
_item[i] = [
|
||||
[ THEME.timeline_color, i > 0, _clrs[i] ],
|
||||
function(_data) {
|
||||
setSelectingNodeColor(_data.color);
|
||||
}, "", { color: i == 0? -1 : _clrs[i] }
|
||||
];
|
||||
}
|
||||
|
||||
array_push(_item, [
|
||||
[ THEME.timeline_color, 2 ],
|
||||
function(_data) {
|
||||
var dialog = dialogCall(o_dialog_color_selector);
|
||||
dialog.selector.onApply = setSelectingNodeColor;
|
||||
dialog.onApply = setSelectingNodeColor;
|
||||
}
|
||||
]);
|
||||
|
||||
menu_node_color = menuItemGroup(__txt("Node Color"), _item);
|
||||
menu_node_color.spacing = ui(24);
|
||||
#endregion
|
||||
|
||||
#region junction color
|
||||
__junction_hovering = noone;
|
||||
|
||||
function setSelectingJuncColor(color) {
|
||||
if(__junction_hovering == noone) return;
|
||||
__junction_hovering.color = color;
|
||||
|
||||
if(__junction_hovering.value_from != noone)
|
||||
__junction_hovering.value_from.color = color;
|
||||
|
||||
for(var i = 0; i < ds_list_size(nodes_select_list); i++) {
|
||||
var _node = nodes_select_list[| i];
|
||||
|
||||
for( var j = 0, m = ds_list_size(_node.inputs); j < m; j++ ) {
|
||||
var _input = _node.inputs[| j];
|
||||
if(_input.value_from == noone) continue;
|
||||
if(!ds_exists(_input.value_from.node, nodes_select_list)) continue;
|
||||
|
||||
_input.color = color;
|
||||
_input.value_from.color = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _clrs = COLORS.timeline_blend;
|
||||
var _item = array_create(array_length(_clrs));
|
||||
|
||||
for( var i = 0, n = array_length(_clrs); i < n; i++ ) {
|
||||
_item[i] = [
|
||||
[ THEME.timeline_color, i > 0, _clrs[i] ],
|
||||
function(_data) {
|
||||
setSelectingJuncColor(_data.color);
|
||||
}, "", { color: i == 0? -1 : _clrs[i] }
|
||||
];
|
||||
}
|
||||
|
||||
array_push(_item, [
|
||||
[ THEME.timeline_color, 2 ],
|
||||
function(_data) {
|
||||
var dialog = dialogCall(o_dialog_color_selector);
|
||||
dialog.selector.onApply = setSelectingJuncColor;
|
||||
dialog.onApply = setSelectingJuncColor;
|
||||
}
|
||||
]);
|
||||
|
||||
menu_junc_color = menuItemGroup(__txt("Connection Color"), _item);
|
||||
menu_junc_color.spacing = ui(24);
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
function getCurrentContext() { #region
|
||||
if(ds_list_empty(node_context)) return noone;
|
||||
return node_context[| ds_list_size(node_context) - 1];
|
||||
|
@ -624,232 +772,105 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
|
||||
#region selection
|
||||
if(mouse_on_graph && pHOVER) {
|
||||
if(NODE_DROPPER_TARGET != noone && node_hovering) {
|
||||
node_hovering.draw_droppable = true;
|
||||
if(mouse_press(mb_left, NODE_DROPPER_TARGET_CAN)) {
|
||||
NODE_DROPPER_TARGET.expression += node_hovering.internalName;
|
||||
NODE_DROPPER_TARGET.expressionUpdate();
|
||||
}
|
||||
} else if(mouse_press(mb_left, pFOCUS)) {
|
||||
if(key_mod_press(SHIFT)) {
|
||||
if(ds_list_empty(nodes_select_list) && node_focus)
|
||||
ds_list_add(nodes_select_list, node_focus);
|
||||
if(node_focus != node_hovering)
|
||||
ds_list_add(nodes_select_list, node_hovering);
|
||||
} else {
|
||||
var _prevFocus = node_focus;
|
||||
if(node_hovering != noone || value_focus == noone)
|
||||
node_focus = node_hovering;
|
||||
|
||||
if(node_focus) {
|
||||
if(instanceof(node_focus) == "Node_Frame") {
|
||||
var fx0 = (node_focus.x + graph_x) * graph_s;
|
||||
var fy0 = (node_focus.y + graph_y) * graph_s;
|
||||
var fx1 = fx0 + node_focus.w * graph_s;
|
||||
var fy1 = fy0 + node_focus.h * graph_s;
|
||||
|
||||
ds_list_clear(nodes_select_list);
|
||||
|
||||
if(!key_mod_press(CTRL))
|
||||
for(var i = 0; i < ds_list_size(nodes_list); i++) { //select content
|
||||
var _node = nodes_list[| i];
|
||||
if(instanceof(_node) == "Node_Frame") continue;
|
||||
var _x = (_node.x + graph_x) * graph_s;
|
||||
var _y = (_node.y + graph_y) * graph_s;
|
||||
var _w = _node.w * graph_s;
|
||||
var _h = _node.h * graph_s;
|
||||
|
||||
if(rectangle_inside_rectangle(fx0, fy0, fx1, fy1, _x, _y, _x + _w, _y + _h))
|
||||
ds_list_add(nodes_select_list, _node);
|
||||
}
|
||||
ds_list_add(nodes_select_list, node_focus);
|
||||
} else if(DOUBLE_CLICK) {
|
||||
PANEL_PREVIEW.setNodePreview(node_focus);
|
||||
} else {
|
||||
if(_prevFocus != node_focus)
|
||||
bringNodeToFront(node_focus);
|
||||
|
||||
var hover_selected = false;
|
||||
for( var i = 0; i < ds_list_size(nodes_select_list); i++ ) {
|
||||
if(nodes_select_list[| i] == node_focus) {
|
||||
hover_selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!hover_selected)
|
||||
ds_list_clear(nodes_select_list);
|
||||
}
|
||||
#region select
|
||||
if(NODE_DROPPER_TARGET != noone && node_hovering) {
|
||||
node_hovering.draw_droppable = true;
|
||||
if(mouse_press(mb_left, NODE_DROPPER_TARGET_CAN)) {
|
||||
NODE_DROPPER_TARGET.expression += node_hovering.internalName;
|
||||
NODE_DROPPER_TARGET.expressionUpdate();
|
||||
}
|
||||
} else if(mouse_press(mb_left, pFOCUS)) {
|
||||
if(key_mod_press(SHIFT)) {
|
||||
if(ds_list_empty(nodes_select_list) && node_focus)
|
||||
ds_list_add(nodes_select_list, node_focus);
|
||||
if(node_focus != node_hovering)
|
||||
ds_list_add(nodes_select_list, node_hovering);
|
||||
} else {
|
||||
if(value_focus == noone)
|
||||
ds_list_clear(nodes_select_list);
|
||||
var _prevFocus = node_focus;
|
||||
if(node_hovering != noone || value_focus == noone)
|
||||
node_focus = node_hovering;
|
||||
|
||||
if(node_focus) {
|
||||
if(instanceof(node_focus) == "Node_Frame") {
|
||||
var fx0 = (node_focus.x + graph_x) * graph_s;
|
||||
var fy0 = (node_focus.y + graph_y) * graph_s;
|
||||
var fx1 = fx0 + node_focus.w * graph_s;
|
||||
var fy1 = fy0 + node_focus.h * graph_s;
|
||||
|
||||
ds_list_clear(nodes_select_list);
|
||||
|
||||
if(!key_mod_press(CTRL))
|
||||
for(var i = 0; i < ds_list_size(nodes_list); i++) { //select content
|
||||
var _node = nodes_list[| i];
|
||||
if(instanceof(_node) == "Node_Frame") continue;
|
||||
var _x = (_node.x + graph_x) * graph_s;
|
||||
var _y = (_node.y + graph_y) * graph_s;
|
||||
var _w = _node.w * graph_s;
|
||||
var _h = _node.h * graph_s;
|
||||
|
||||
if(rectangle_inside_rectangle(fx0, fy0, fx1, fy1, _x, _y, _x + _w, _y + _h))
|
||||
ds_list_add(nodes_select_list, _node);
|
||||
}
|
||||
ds_list_add(nodes_select_list, node_focus);
|
||||
} else if(DOUBLE_CLICK) {
|
||||
PANEL_PREVIEW.setNodePreview(node_focus);
|
||||
} else {
|
||||
if(_prevFocus != node_focus)
|
||||
bringNodeToFront(node_focus);
|
||||
|
||||
var hover_selected = false;
|
||||
for( var i = 0; i < ds_list_size(nodes_select_list); i++ ) {
|
||||
if(nodes_select_list[| i] == node_focus) {
|
||||
hover_selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!hover_selected)
|
||||
ds_list_clear(nodes_select_list);
|
||||
}
|
||||
} else {
|
||||
if(value_focus == noone)
|
||||
ds_list_clear(nodes_select_list);
|
||||
|
||||
if(DOUBLE_CLICK && !PANEL_INSPECTOR.locked)
|
||||
PANEL_INSPECTOR.inspecting = noone;
|
||||
if(DOUBLE_CLICK && !PANEL_INSPECTOR.locked)
|
||||
PANEL_INSPECTOR.inspecting = noone;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
if(mouse_press(mb_right, pFOCUS)) { #region
|
||||
node_hover = node_hovering;
|
||||
|
||||
if(node_hover) {
|
||||
var menu = [];
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_send_to_preview", "Send to preview"), function() {
|
||||
setCurrentPreview(node_hover);
|
||||
}));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_preview_window", "Send to preview window"), function() {
|
||||
create_preview_window(node_hover);
|
||||
}, noone, ["Graph", "Preview window"]));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_inspector_panel", "Send to new inspector"), function() {
|
||||
var pan = panelAdd("Panel_Inspector", true);
|
||||
pan.destroy_on_click_out = false;
|
||||
pan.content.setInspecting(node_hover);
|
||||
pan.content.locked = true;
|
||||
}));
|
||||
array_push(menu, menu_node_color, -1, menu_sent_to_preview, menu_send_to_window, menu_sent_to_inspector);
|
||||
if(!DEMO)
|
||||
array_push(menu, menu_send_export);
|
||||
array_push(menu, -1, menu_toggle_preview, menu_toggle_render);
|
||||
|
||||
if(is_instanceof(node_hover, Node_Collection))
|
||||
array_push(menu, -1, menu_open_group, menu_open_group_tab, menu_group_ungroup);
|
||||
|
||||
if(DEMO) {
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_send_to_export", "Send to export"), function() {
|
||||
setCurrentExport(node_hover);
|
||||
}, noone, ["Graph", "Export"]));
|
||||
}
|
||||
if(node_hover.group != noone)
|
||||
array_push(menu, menu_group_tool);
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_toggle_preview", "Toggle node preview"), function() {
|
||||
setTriggerPreview();
|
||||
}, noone, ["Graph", "Toggle preview"]));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_toggle_render", "Toggle node render"), function() {
|
||||
setTriggerRender();
|
||||
}, noone, ["Graph", "Toggle render"]));
|
||||
|
||||
if(struct_has(node_hover, "nodes")) {
|
||||
array_push(menu, -1);
|
||||
array_push(menu, -1, menu_node_delete_merge, menu_node_delete_cut, menu_node_duplicate, menu_node_copy);
|
||||
array_push(menu, -1, menu_node_transform, menu_node_canvas);
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_enter_group", "Open group"), function() {
|
||||
PANEL_GRAPH.addContext(node_hover);
|
||||
}, THEME.group));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_enter_group_new_tab", "Open group in new tab"), function() {
|
||||
var graph = new Panel_Graph(project);
|
||||
panel.setContent(graph, true);
|
||||
|
||||
for( var i = 0; i < ds_list_size(node_context); i++ )
|
||||
graph.addContext(node_context[| i]);
|
||||
graph.addContext(node_hover);
|
||||
|
||||
setFocus(panel);
|
||||
}, THEME.group));
|
||||
array_push(menu,
|
||||
menuItem(__txt("Ungroup"), function() {
|
||||
doUngroup();
|
||||
}, THEME.group, ["Graph", "Ungroup"]));
|
||||
}
|
||||
|
||||
if(node_hover.group != noone) {
|
||||
array_push(menu,
|
||||
menuItem(__txt("Set as group tool"), function() {
|
||||
node_hover.setTool(!node_hover.isTool);
|
||||
}));
|
||||
}
|
||||
|
||||
array_push(menu, -1);
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_delete_and_merge_connection", "Delete and merge connection"), function() {
|
||||
doDelete(true);
|
||||
}, THEME.cross, ["Graph", "Delete (merge)"]));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_delete_and_cut_connection", "Delete and cut connection"), function() {
|
||||
doDelete(false);
|
||||
}, THEME.cross, ["Graph", "Delete (break)"]));
|
||||
array_push(menu,
|
||||
menuItem(__txt("Duplicate"), function() {
|
||||
doDuplicate();
|
||||
}, THEME.duplicate, ["Graph", "Duplicate"]));
|
||||
array_push(menu,
|
||||
menuItem(__txt("Copy"), function() {
|
||||
doCopy();
|
||||
}, THEME.copy, ["Graph", "Copy"]));
|
||||
|
||||
array_push(menu, -1);
|
||||
array_push(menu, menuItem(__txtx("panel_graph_add_transform", "Add transform"), doTransform, noone, ["Graph", "Transform node"]));
|
||||
array_push(menu, menuItem(__txtx("panel_graph_canvas", "Canvas"),
|
||||
function(_dat) {
|
||||
return submenuCall(_dat, [
|
||||
menuItem(__txtx("panel_graph_copy_to_canvas", "Copy to canvas"), function() {
|
||||
setCurrentCanvas(node_hover);
|
||||
}, noone, ["Graph", "Canvas"]),
|
||||
menuItem(__txtx("panel_graph_overlay_canvas", "Overlay canvas"), function() {
|
||||
setCurrentCanvasBlend(node_hover);
|
||||
}, noone, ["Graph", "Canvas blend"])
|
||||
]);
|
||||
}).setIsShelf()
|
||||
);
|
||||
|
||||
if(ds_list_size(nodes_select_list) >= 2) {
|
||||
array_push(menu, -1);
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_align_nodes", "Align nodes"), function(_dat) {
|
||||
return submenuCall(_dat, [
|
||||
menuItemGroup(__txtx("horizontal", "Horizontal"), [
|
||||
[ [THEME.inspector_surface_halign, 0], function() { node_halign(nodes_select_list, fa_left); } ],
|
||||
[ [THEME.inspector_surface_halign, 1], function() { node_halign(nodes_select_list, fa_center); } ],
|
||||
[ [THEME.inspector_surface_halign, 2], function() { node_halign(nodes_select_list, fa_right); } ],
|
||||
]),
|
||||
menuItemGroup(__txtx("vertical", "Vertical"), [
|
||||
[ [THEME.inspector_surface_valign, 0], function() { node_valign(nodes_select_list, fa_top); } ],
|
||||
[ [THEME.inspector_surface_valign, 1], function() { node_valign(nodes_select_list, fa_middle); } ],
|
||||
[ [THEME.inspector_surface_valign, 2], function() { node_valign(nodes_select_list, fa_bottom); } ],
|
||||
]),
|
||||
menuItemGroup(__txtx("distribute", "Distribute"), [
|
||||
[ [THEME.obj_distribute_h, 0], function() { node_hdistribute(nodes_select_list); } ],
|
||||
[ [THEME.obj_distribute_v, 0], function() { node_vdistribute(nodes_select_list); } ],
|
||||
]),
|
||||
]);
|
||||
}).setIsShelf());
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_blend_nodes", "Blend nodes"), function() {
|
||||
doBlend();
|
||||
}, noone, ["Graph", "Blend"]));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_compose_nodes", "Compose nodes"), function() {
|
||||
doCompose();
|
||||
}, noone, ["Graph", "Compose"]));
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_array_from_nodes", "Array from nodes"), function() {
|
||||
doArray();
|
||||
}, noone, ["Graph", "Array"]));
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_group_nodes", "Group nodes"), function() {
|
||||
doGroup();
|
||||
}, THEME.group, ["Graph", "Group"]));
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txtx("panel_graph_frame_nodes", "Frame nodes"), function() {
|
||||
doFrame();
|
||||
}, noone, ["Graph", "Frame"]));
|
||||
}
|
||||
if(ds_list_size(nodes_select_list) >= 2)
|
||||
array_push(menu, -1, menu_nodes_align, menu_nodes_blend, menu_nodes_compose, menu_nodes_array, menu_nodes_group, menu_nodes_frame);
|
||||
|
||||
menuCall("graph_node_selected_multiple_menu",,, menu );
|
||||
} else {
|
||||
var menu = [];
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txt("Copy"), function() {
|
||||
doCopy();
|
||||
}, THEME.copy, ["Graph", "Copy"]).setActive(node_focus != noone || ds_list_size(nodes_select_list))
|
||||
);
|
||||
|
||||
array_push(menu,
|
||||
menuItem(__txt("Paste"), function() {
|
||||
doPaste();
|
||||
}, THEME.paste, ["Graph", "Paste"]).setActive(clipboard_get_text() != "")
|
||||
);
|
||||
|
||||
__junction_hovering = junction_hovering;
|
||||
if(junction_hovering != noone)
|
||||
array_push(menu, menu_junc_color, -1);
|
||||
|
||||
array_push(menu, menuItem(__txt("Copy"), function() { doCopy(); }, THEME.copy, ["Graph", "Copy"]).setActive(node_focus != noone || ds_list_size(nodes_select_list)));
|
||||
array_push(menu, menuItem(__txt("Paste"), function() { doPaste(); }, THEME.paste, ["Graph", "Paste"]).setActive(clipboard_get_text() != ""));
|
||||
|
||||
callAddDialog();
|
||||
menuCall("graph_node_selected_menu", o_dialog_add_node.dialog_x - ui(8), o_dialog_add_node.dialog_y + ui(4), menu, fa_right );
|
||||
|
@ -959,7 +980,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
ny = round(ny / project.graphGrid.size) * project.graphGrid.size;
|
||||
}
|
||||
|
||||
node_dragging.move(nx, ny);
|
||||
node_dragging.move(nx, ny, graph_s);
|
||||
|
||||
if(mouse_release(mb_left) && (nx != node_drag_sx || ny != node_drag_sy)) {
|
||||
recordAction(ACTION_TYPE.var_modify, node_dragging, [ node_drag_sx, "x", "node x position" ]);
|
||||
|
@ -991,7 +1012,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
_ny = round(_ny / project.graphGrid.size) * project.graphGrid.size;
|
||||
}
|
||||
|
||||
_node.move(_nx, _ny);
|
||||
_node.move(_nx, _ny, graph_s);
|
||||
}
|
||||
|
||||
node_drag_ox = nx;
|
||||
|
|
|
@ -29,6 +29,9 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
#region ---- properties ----
|
||||
prop_hover = noone;
|
||||
prop_selecting = noone;
|
||||
|
||||
prop_highlight = noone;
|
||||
prop_highlight_time = 0;
|
||||
|
||||
prop_dragging = noone;
|
||||
prop_sel_drag_x = 0;
|
||||
|
@ -120,6 +123,55 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
}
|
||||
}),
|
||||
]
|
||||
|
||||
__dialog_junction = noone;
|
||||
menu_junc_reset_value = menuItem(__txtx("panel_inspector_reset", "Reset value"), function() { __dialog_junction.resetValue(); });
|
||||
menu_junc_add_anim = menuItem(__txtx("panel_inspector_add", "Add animation"), function() { __dialog_junction.setAnim(true); });
|
||||
menu_junc_rem_anim = menuItem(__txtx("panel_inspector_remove", "Remove animation"), function() { __dialog_junction.setAnim(false); });
|
||||
menu_junc_combine_axis = menuItem(__txtx("panel_inspector_axis_combine", "Combine axis"), function() { __dialog_junction.sep_axis = false; });
|
||||
menu_junc_separate_axis = menuItem(__txtx("panel_inspector_axis_separate", "Separate axis"), function() { __dialog_junction.sep_axis = true; });
|
||||
menu_junc_expression_ena = menuItem(__txtx("panel_inspector_use_expression", "Use expression"), function() { __dialog_junction.expUse = true; });
|
||||
menu_junc_expression_dis = menuItem(__txtx("panel_inspector_disable_expression", "Disable expression"), function() { __dialog_junction.expUse = false; });
|
||||
menu_junc_extract = menuItem(__txtx("panel_inspector_extract_single", "Extract to node"), function() { __dialog_junction.extractNode(); });
|
||||
|
||||
menu_junc_copy = menuItem(__txt("Copy"), function() { clipboard_set_text(__dialog_junction.getShowString()); }, THEME.copy, ["Inspector", "Copy property"]);
|
||||
menu_junc_paste = menuItem(__txt("Paste"), function() { __dialog_junction.setString(clipboard_get_text()); }, THEME.paste, ["Inspector", "Paste property"]);
|
||||
|
||||
function setSelectingItemColor(color) {
|
||||
if(__dialog_junction == noone) return;
|
||||
|
||||
__dialog_junction.color = color;
|
||||
|
||||
if(__dialog_junction.value_from != noone)
|
||||
__dialog_junction.value_from.color = color;
|
||||
var _val_to = __dialog_junction.getJunctionTo();
|
||||
for( var i = 0, n = array_length(_val_to); i < n; i++ )
|
||||
_val_to[i].color = color;
|
||||
}
|
||||
|
||||
var _clrs = COLORS.timeline_blend;
|
||||
var _item = array_create(array_length(_clrs));
|
||||
|
||||
for( var i = 0, n = array_length(_clrs); i < n; i++ ) {
|
||||
_item[i] = [
|
||||
[ THEME.timeline_color, i > 0, _clrs[i] ],
|
||||
function(_data) {
|
||||
setSelectingItemColor(_data.color);
|
||||
}, "", { color: i == 0? -1 : _clrs[i] }
|
||||
];
|
||||
}
|
||||
|
||||
array_push(_item, [
|
||||
[ THEME.timeline_color, 2 ],
|
||||
function(_data) {
|
||||
var dialog = dialogCall(o_dialog_color_selector);
|
||||
dialog.selector.onApply = setSelectingItemColor;
|
||||
dialog.onApply = setSelectingItemColor;
|
||||
}
|
||||
]);
|
||||
|
||||
menu_junc_color = menuItemGroup(__txt("Color"), _item);
|
||||
menu_junc_color.spacing = ui(24);
|
||||
#endregion
|
||||
|
||||
function setInspecting(inspecting) { #region
|
||||
|
@ -333,6 +385,11 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
return hh;
|
||||
} #endregion
|
||||
|
||||
static highlightProp = function(prop) { #region
|
||||
prop_highlight = prop;
|
||||
prop_highlight_time = 60;
|
||||
} #endregion
|
||||
|
||||
static drawNodeProperties = function(_y, _m, _inspecting = inspecting) { #region
|
||||
var con_w = contentPane.surface_w - ui(4);
|
||||
var _hover = pHOVER && contentPane.hover;
|
||||
|
@ -494,28 +551,35 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
}
|
||||
|
||||
#region ++++ draw widget ++++
|
||||
var lb_h = line_get_height(f_p0) + ui(8);
|
||||
var lb_w = line_get_width(jun.getName(), f_p0) + ui(16);
|
||||
var padd = ui(8);
|
||||
var lb_h = line_get_height(f_p0) + ui(8);
|
||||
var lb_w = line_get_width(jun.getName(), f_p0) + ui(16);
|
||||
var lb_x = ui(48) + (ui(24) * (jun.color != -1));
|
||||
var padd = ui(8);
|
||||
|
||||
var _selY = yy - ui(0);
|
||||
var lbHov = point_in_rectangle(_m[0], _m[1], ui(48), _selY, ui(48) + lb_w, _selY + lb_h);
|
||||
if(lbHov)
|
||||
draw_sprite_stretched_ext(THEME.group_label, 0, ui(48), _selY + ui(2), lb_w, lb_h - ui(4), COLORS._main_icon_dark, 0.85);
|
||||
var _selY = yy;
|
||||
var lbHov = point_in_rectangle(_m[0], _m[1], lb_x, _selY, lb_x + lb_w, _selY + lb_h);
|
||||
if(lbHov) draw_sprite_stretched_ext(THEME.group_label, 0, lb_x, _selY + ui(2), lb_w, lb_h - ui(4), COLORS._main_icon_dark, 0.85);
|
||||
|
||||
var widg = drawWidget(ui(16), yy, contentPane.surface_w - ui(24), _m, jun, false, pHOVER && contentPane.hover, pFOCUS, contentPane, ui(16) + x, top_bar_h + y);
|
||||
var widH = widg[0];
|
||||
var mbRight = widg[1];
|
||||
|
||||
|
||||
hh += lb_h + widH + padd;
|
||||
|
||||
var _selY1 = yy + lb_h + widH + ui(2);
|
||||
var _selH = _selY1 - _selY;
|
||||
|
||||
var _selH = _selY1 - _selY + ui(4);
|
||||
|
||||
if(jun == prop_highlight && prop_highlight_time) {
|
||||
if(prop_highlight_time == 60)
|
||||
contentPane.setScroll(_y - yy);
|
||||
var aa = min(1, prop_highlight_time / 30);
|
||||
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, ui(4), yy, contentPane.surface_w - ui(4), _selH, COLORS._main_accent, aa);
|
||||
}
|
||||
|
||||
if(_hover && lbHov) {
|
||||
if(prop_dragging == noone && mouse_press(mb_left, pFOCUS)) {
|
||||
prop_dragging = jun;
|
||||
|
||||
|
||||
prop_sel_drag_x = mouse_mx;
|
||||
prop_sel_drag_y = mouse_my;
|
||||
}
|
||||
|
@ -543,7 +607,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
NODE_DROPPER_TARGET.expressionUpdate();
|
||||
}
|
||||
} else
|
||||
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, ui(4), _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1);
|
||||
|
||||
if(anim_toggling) {
|
||||
jun.setAnim(!jun.is_anim);
|
||||
|
@ -556,41 +620,15 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
prop_selecting = jun;
|
||||
|
||||
if(mouse_press(mb_right, pFOCUS && mbRight)) { #region right click menu
|
||||
var _menuItem = [];
|
||||
var _menuItem = [ menu_junc_color, -1 ];
|
||||
|
||||
if(i < amoIn) {
|
||||
array_push(_menuItem,
|
||||
menuItem(__txtx("panel_inspector_reset", "Reset value"), function() {
|
||||
__dialog_junction.resetValue();
|
||||
}),
|
||||
menuItem(jun.is_anim? __txtx("panel_inspector_remove", "Remove animation") : __txtx("panel_inspector_add", "Add animation"), function() {
|
||||
__dialog_junction.setAnim(!__dialog_junction.is_anim);
|
||||
}),
|
||||
);
|
||||
|
||||
if(jun.sepable) {
|
||||
array_push(_menuItem,
|
||||
menuItem(jun.sep_axis? __txtx("panel_inspector_axis_combine", "Combine axis") : __txtx("panel_inspector_axis_separate", "Separate axis"), function() {
|
||||
__dialog_junction.sep_axis = !__dialog_junction.sep_axis;
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
array_push(_menuItem, menu_junc_reset_value, jun.is_anim? menu_junc_rem_anim : menu_junc_add_anim);
|
||||
if(jun.sepable) array_push(_menuItem, jun.sep_axis? menu_junc_combine_axis : menu_junc_separate_axis);
|
||||
array_push(_menuItem, -1);
|
||||
}
|
||||
|
||||
array_push(_menuItem,
|
||||
menuItem(__txtx("panel_inspector_use_expression", "Use expression"), function() {
|
||||
__dialog_junction.expUse = !__dialog_junction.expUse;
|
||||
}),
|
||||
-1,
|
||||
menuItem(__txt("Copy"), function() {
|
||||
clipboard_set_text(__dialog_junction.getShowString());
|
||||
}, THEME.copy, ["Inspector", "Copy property"]),
|
||||
menuItem(__txt("Paste"), function() {
|
||||
__dialog_junction.setString(clipboard_get_text());
|
||||
}, THEME.paste, ["Inspector", "Paste property"]),
|
||||
);
|
||||
array_push(_menuItem, jun.expUse? menu_junc_expression_dis : menu_junc_expression_ena, -1, menu_junc_copy, menu_junc_paste);
|
||||
|
||||
if(jun.extract_node != "") {
|
||||
if(is_array(jun.extract_node)) {
|
||||
|
@ -603,12 +641,9 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
|
||||
return submenuCall(_dat, arr);
|
||||
}).setIsShelf();
|
||||
array_insert(_menuItem, 2, ext);
|
||||
} else {
|
||||
array_insert(_menuItem, 2, menuItem(__txtx("panel_inspector_extract_single", "Extract to node"), function() {
|
||||
__dialog_junction.extractNode();
|
||||
}));
|
||||
}
|
||||
array_push(_menuItem, ext);
|
||||
} else
|
||||
array_push(_menuItem, menu_junc_extract);
|
||||
}
|
||||
|
||||
var dia = menuCall("inspector_value_menu",,, _menuItem,, jun);
|
||||
|
@ -656,6 +691,12 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
}
|
||||
#endregion
|
||||
|
||||
if(prop_highlight_time) {
|
||||
prop_highlight_time--;
|
||||
if(prop_highlight_time == 0)
|
||||
prop_highlight = noone;
|
||||
}
|
||||
|
||||
return hh;
|
||||
} #endregion
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -61,6 +61,8 @@
|
|||
|
||||
timelines = new timelineItemGroup();
|
||||
|
||||
notes = [];
|
||||
|
||||
static cleanup = function() { #region
|
||||
if(!ds_map_empty(nodeMap))
|
||||
array_map(ds_map_keys_to_array(nodeMap), function(_key, _ind) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -41,6 +41,7 @@ function save_serialize(project = PROJECT, _outMap = false) {
|
|||
_map.attributes = project.attributes;
|
||||
|
||||
_map.timelines = project.timelines.serialize();
|
||||
_map.notes = array_map(project.notes, function(note) { return node.serialize(); } );
|
||||
|
||||
var prev = PANEL_PREVIEW.getNodePreviewSurface();
|
||||
if(!is_surface(prev)) _map.preview = "";
|
||||
|
|
|
@ -31,6 +31,12 @@ function scrollPane(_w, _h, ondraw) : widget() constructor {
|
|||
surface_h = _h;
|
||||
}
|
||||
|
||||
static setScroll = function(_scroll_y) { #region
|
||||
gml_pragma("forceinline");
|
||||
|
||||
scroll_y_to = clamp(_scroll_y, -content_h, 0);
|
||||
} #endregion
|
||||
|
||||
static draw = function(x, y, _mx = mouse_mx - x, _my = mouse_my - y) {
|
||||
self.x = x;
|
||||
self.y = y;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -2,7 +2,7 @@ function timelineItem() constructor {
|
|||
show = true;
|
||||
|
||||
color = -1;
|
||||
color_cur = -1;
|
||||
color_cur = CDEF.main_grey;
|
||||
color_dsp = -1;
|
||||
parent = noone;
|
||||
|
||||
|
@ -49,8 +49,8 @@ function timelineItemNode(node) : timelineItem() constructor {
|
|||
col = _context.item.color;
|
||||
break;
|
||||
}
|
||||
color_cur = col;
|
||||
if(col == -1) col = CDEF.main_grey;
|
||||
color_cur = col;
|
||||
|
||||
var cc = colorMultiply(col, COLORS.panel_animation_dope_bg);
|
||||
|
||||
|
@ -131,7 +131,10 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||
static rename = function() {
|
||||
renaming = true;
|
||||
tb_name.setFocusHover(true, true);
|
||||
run_in(1, function() { tb_name.activate(); });
|
||||
run_in(1, function() {
|
||||
tb_name._current_text = name;
|
||||
tb_name.activate();
|
||||
});
|
||||
}
|
||||
|
||||
static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) { #region
|
||||
|
@ -151,8 +154,8 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||
hig = false;
|
||||
break;
|
||||
}
|
||||
color_cur = col;
|
||||
if(col == -1) col = CDEF.main_grey;
|
||||
color_cur = col;
|
||||
|
||||
var bnd = hig? merge_color(c_white, COLORS.panel_animation_dope_bg, 0.8) : COLORS.panel_animation_dope_bg;
|
||||
var cc = colorMultiply(col, bnd);
|
||||
|
@ -201,6 +204,16 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||
return self;
|
||||
} #endregion
|
||||
|
||||
static destroy = function() { #region
|
||||
var ind = array_find(parent.contents, self);
|
||||
array_delete(parent.contents, ind, 1);
|
||||
|
||||
for( var i = 0, n = array_length(contents); i < n; i++ ) {
|
||||
array_insert(parent.contents, ind++, contents[i]);
|
||||
contents[i].parent = parent;
|
||||
}
|
||||
} #endregion
|
||||
|
||||
static serialize = function() { #region
|
||||
var _map = {};
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "startup scripts",
|
||||
"path": "folders/main/startup scripts.yy",
|
||||
"name": "components",
|
||||
"path": "folders/main/components.yy",
|
||||
},
|
||||
}
|
|
@ -14,7 +14,7 @@ function tooltipSelector(title, data, index = 0) constructor {
|
|||
var lh = line_get_height();
|
||||
|
||||
var _h = (th + ui(6)) + (lh + ui(4)) * array_length(data);
|
||||
var _w = string_width(title);
|
||||
var _w = ui(16) + string_width(title);
|
||||
|
||||
for( var i = 0, n = array_length(data); i < n; i++ )
|
||||
_w = max(_w, ui(8 + 16) + string_width(data[i]));
|
||||
|
@ -27,7 +27,7 @@ function tooltipSelector(title, data, index = 0) constructor {
|
|||
|
||||
var yy = my + ui(8);
|
||||
draw_set_font(f_p0);
|
||||
draw_text(mx + ui(8), yy, title);
|
||||
draw_text(mx + ui(12), yy, title);
|
||||
yy += th + ui(6);
|
||||
|
||||
draw_set_font(f_p1);
|
||||
|
|
BIN
sprites/s_node_note/88bca569-08cd-47c2-abb5-3184c1d6dd9a.png
Normal file
BIN
sprites/s_node_note/88bca569-08cd-47c2-abb5-3184c1d6dd9a.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 661 B |
Binary file not shown.
After Width: | Height: | Size: 661 B |
74
sprites/s_node_note/s_node_note.yy
Normal file
74
sprites/s_node_note/s_node_note.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_note",
|
||||
"bbox_bottom": 55,
|
||||
"bbox_left": 4,
|
||||
"bbox_right": 59,
|
||||
"bbox_top": 8,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"88bca569-08cd-47c2-abb5-3184c1d6dd9a",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"36776b37-c569-40e4-bf4f-a43f3367a7fa","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "misc",
|
||||
"path": "folders/nodes/icons/misc.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_node_note",
|
||||
"autoRecord": true,
|
||||
"backdropHeight": 768,
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropImagePath": "",
|
||||
"backdropWidth": 1366,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"eventStubScript": null,
|
||||
"eventToFunction": {},
|
||||
"length": 1.0,
|
||||
"lockOrigin": false,
|
||||
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"timeUnits": 1,
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"88bca569-08cd-47c2-abb5-3184c1d6dd9a","path":"sprites/s_node_note/s_node_note.yy",},},},"Disabled":false,"id":"7fe05c22-f647-4a5e-9f2b-6715f62f78a7","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
|
||||
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"volume": 1.0,
|
||||
"xorigin": 32,
|
||||
"yorigin": 32,
|
||||
},
|
||||
"swatchColours": null,
|
||||
"swfPrecision": 2.525,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"type": 0,
|
||||
"VTile": false,
|
||||
"width": 64,
|
||||
}
|
Loading…
Reference in a new issue