mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 03:18:03 +01:00
1.13.8 release
This commit is contained in:
parent
f0de4de9b1
commit
1b22fb0233
70 changed files with 1003 additions and 335 deletions
|
@ -454,6 +454,7 @@
|
|||
{"name":"node_cache","order":9,"path":"scripts/node_cache/node_cache.yy",},
|
||||
{"name":"sh_bw","order":5,"path":"shaders/sh_bw/sh_bw.yy",},
|
||||
{"name":"real_comparison","order":1,"path":"scripts/real_comparison/real_comparison.yy",},
|
||||
{"name":"node_array_zip","order":25,"path":"scripts/node_array_zip/node_array_zip.yy",},
|
||||
{"name":"fd_rectangle_get_collision_mask_sprite_image","order":5,"path":"scripts/fd_rectangle_get_collision_mask_sprite_image/fd_rectangle_get_collision_mask_sprite_image.yy",},
|
||||
{"name":"s_node_stripe","order":16,"path":"sprites/s_node_stripe/s_node_stripe.yy",},
|
||||
{"name":"s_node_lua_global","order":19,"path":"sprites/s_node_lua_global/s_node_lua_global.yy",},
|
||||
|
@ -769,6 +770,7 @@
|
|||
{"name":"s_node_blur_directional","order":9,"path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},
|
||||
{"name":"s_node_average","order":48,"path":"sprites/s_node_average/s_node_average.yy",},
|
||||
{"name":"s_node_sprite_sheet","order":1,"path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},
|
||||
{"name":"s_node_text_length","order":9,"path":"sprites/s_node_text_length/s_node_text_length.yy",},
|
||||
{"name":"s_node_grid_hex","order":4,"path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},
|
||||
{"name":"sh_fd_visualize_colorize_glsl","order":13,"path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},
|
||||
{"name":"o_dialog_preview_window","order":1,"path":"objects/o_dialog_preview_window/o_dialog_preview_window.yy",},
|
||||
|
@ -841,6 +843,7 @@
|
|||
{"name":"mouse_input","order":1,"path":"scripts/mouse_input/mouse_input.yy",},
|
||||
{"name":"string_cut","order":4,"path":"scripts/string_cut/string_cut.yy",},
|
||||
{"name":"node_3d_prim_cylinder","order":7,"path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},
|
||||
{"name":"panel_nodes","order":2,"path":"scripts/panel_nodes/panel_nodes.yy",},
|
||||
{"name":"sh_gradient_points","order":19,"path":"shaders/sh_gradient_points/sh_gradient_points.yy",},
|
||||
{"name":"s_node_vfx_turb","order":5,"path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},
|
||||
{"name":"o_dialog_l_system","order":1,"path":"objects/o_dialog_l_system/o_dialog_l_system.yy",},
|
||||
|
@ -882,6 +885,7 @@
|
|||
{"name":"node_gradient_extract","order":13,"path":"scripts/node_gradient_extract/node_gradient_extract.yy",},
|
||||
{"name":"s_node_normal_light","order":29,"path":"sprites/s_node_normal_light/s_node_normal_light.yy",},
|
||||
{"name":"node_transform_single","order":1,"path":"scripts/node_transform_single/node_transform_single.yy",},
|
||||
{"name":"node_string_length","order":22,"path":"scripts/node_string_length/node_string_length.yy",},
|
||||
{"name":"node_fluid_apply_velo","order":5,"path":"scripts/node_fluid_apply_velo/node_fluid_apply_velo.yy",},
|
||||
{"name":"s_node_path_transform","order":5,"path":"sprites/s_node_path_transform/s_node_path_transform.yy",},
|
||||
{"name":"s_node_path_blend","order":1,"path":"sprites/s_node_path_blend/s_node_path_blend.yy",},
|
||||
|
@ -1059,6 +1063,7 @@
|
|||
{"name":"sh_fd_visualize_pixel_art_fiery_smoke_glsl","order":14,"path":"shaders/sh_fd_visualize_pixel_art_fiery_smoke_glsl/sh_fd_visualize_pixel_art_fiery_smoke_glsl.yy",},
|
||||
{"name":"node_ase_layer","order":15,"path":"scripts/node_ase_layer/node_ase_layer.yy",},
|
||||
{"name":"sh_local_analyze","order":47,"path":"shaders/sh_local_analyze/sh_local_analyze.yy",},
|
||||
{"name":"s_node_array_zip","order":13,"path":"sprites/s_node_array_zip/s_node_array_zip.yy",},
|
||||
{"name":"fd_rectangle_get_material_width","order":15,"path":"scripts/fd_rectangle_get_material_width/fd_rectangle_get_material_width.yy",},
|
||||
{"name":"font_sprite_loader","order":10,"path":"scripts/font_sprite_loader/font_sprite_loader.yy",},
|
||||
{"name":"s_node_noise_aniso","order":9,"path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},
|
||||
|
|
|
@ -163,6 +163,8 @@
|
|||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"icon.png","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"layouts.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Horizontal.json","CopyToMask":-1,"filePath":"datafiles/data/layouts",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Preview.json","CopyToMask":-1,"filePath":"datafiles/data/layouts",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Side menu.json","CopyToMask":-1,"filePath":"datafiles/data/layouts",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Vertical.json","CopyToMask":-1,"filePath":"datafiles/data/layouts",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"en.json","CopyToMask":-1,"filePath":"datafiles/data/locale",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"storepage_533260_english.json","CopyToMask":-1,"filePath":"datafiles/data/locale",},
|
||||
|
@ -880,6 +882,7 @@
|
|||
{"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},},
|
||||
{"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},},
|
||||
{"id":{"name":"sh_sdf_tex","path":"shaders/sh_sdf_tex/sh_sdf_tex.yy",},},
|
||||
{"id":{"name":"node_array_zip","path":"scripts/node_array_zip/node_array_zip.yy",},},
|
||||
{"id":{"name":"fd_rectangle_get_collision_mask_sprite_image","path":"scripts/fd_rectangle_get_collision_mask_sprite_image/fd_rectangle_get_collision_mask_sprite_image.yy",},},
|
||||
{"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},},
|
||||
{"id":{"name":"s_node_lua_global","path":"sprites/s_node_lua_global/s_node_lua_global.yy",},},
|
||||
|
@ -1231,6 +1234,7 @@
|
|||
{"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},},
|
||||
{"id":{"name":"s_node_average","path":"sprites/s_node_average/s_node_average.yy",},},
|
||||
{"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},},
|
||||
{"id":{"name":"s_node_text_length","path":"sprites/s_node_text_length/s_node_text_length.yy",},},
|
||||
{"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},},
|
||||
{"id":{"name":"sh_fd_visualize_colorize_glsl","path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},},
|
||||
{"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},},
|
||||
|
@ -1317,6 +1321,7 @@
|
|||
{"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},},
|
||||
{"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},},
|
||||
{"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},},
|
||||
{"id":{"name":"panel_nodes","path":"scripts/panel_nodes/panel_nodes.yy",},},
|
||||
{"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},},
|
||||
{"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},},
|
||||
{"id":{"name":"o_dialog_l_system","path":"objects/o_dialog_l_system/o_dialog_l_system.yy",},},
|
||||
|
@ -1367,6 +1372,7 @@
|
|||
{"id":{"name":"node_gradient_extract","path":"scripts/node_gradient_extract/node_gradient_extract.yy",},},
|
||||
{"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},},
|
||||
{"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},},
|
||||
{"id":{"name":"node_string_length","path":"scripts/node_string_length/node_string_length.yy",},},
|
||||
{"id":{"name":"node_fluid_apply_velo","path":"scripts/node_fluid_apply_velo/node_fluid_apply_velo.yy",},},
|
||||
{"id":{"name":"s_node_path_transform","path":"sprites/s_node_path_transform/s_node_path_transform.yy",},},
|
||||
{"id":{"name":"s_node_sdf","path":"sprites/s_node_sdf/s_node_sdf.yy",},},
|
||||
|
@ -1573,6 +1579,7 @@
|
|||
{"id":{"name":"sh_fd_visualize_pixel_art_fiery_smoke_glsl","path":"shaders/sh_fd_visualize_pixel_art_fiery_smoke_glsl/sh_fd_visualize_pixel_art_fiery_smoke_glsl.yy",},},
|
||||
{"id":{"name":"node_ase_layer","path":"scripts/node_ase_layer/node_ase_layer.yy",},},
|
||||
{"id":{"name":"sh_local_analyze","path":"shaders/sh_local_analyze/sh_local_analyze.yy",},},
|
||||
{"id":{"name":"s_node_array_zip","path":"sprites/s_node_array_zip/s_node_array_zip.yy",},},
|
||||
{"id":{"name":"fd_rectangle_get_material_width","path":"scripts/fd_rectangle_get_material_width/fd_rectangle_get_material_width.yy",},},
|
||||
{"id":{"name":"font_sprite_loader","path":"scripts/font_sprite_loader/font_sprite_loader.yy",},},
|
||||
{"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},},
|
||||
|
|
Binary file not shown.
|
@ -1,43 +1,35 @@
|
|||
{
|
||||
"panel": {
|
||||
"split": "v",
|
||||
"width": 40,
|
||||
"content": [{
|
||||
"content": "Panel_Menu"
|
||||
},
|
||||
{
|
||||
"split": "h",
|
||||
"width": -400,
|
||||
}, {
|
||||
"content": [{
|
||||
"split": "v",
|
||||
"width": -48,
|
||||
"content": [{
|
||||
"split": "v",
|
||||
"width": -400,
|
||||
"content": [{
|
||||
"content": "Panel_Preview"
|
||||
},
|
||||
{
|
||||
}, {
|
||||
"content": "Panel_Graph"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 300
|
||||
}, {
|
||||
"content": "Panel_Animation"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -48
|
||||
}, {
|
||||
"content": [{
|
||||
"content": "Panel_Workspace"
|
||||
}, {
|
||||
"content": "Panel_Inspector"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"Panel_Collection": {
|
||||
"parent": "Panel_Graph",
|
||||
"width": 460,
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}],
|
||||
"split": "h",
|
||||
"index": 0
|
||||
"width": -400
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}
|
||||
}
|
35
datafiles/data/layouts/Preview.json
Normal file
35
datafiles/data/layouts/Preview.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"panel": {
|
||||
"content": [{
|
||||
"content": "Panel_Menu"
|
||||
}, {
|
||||
"content": [{
|
||||
"content": [{
|
||||
"content": "Panel_Preview"
|
||||
}, {
|
||||
"content": "Panel_Animation"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -48
|
||||
}, {
|
||||
"content": [{
|
||||
"content": "Panel_Workspace"
|
||||
}, {
|
||||
"content": [{
|
||||
"content": "Panel_Inspector"
|
||||
}, {
|
||||
"content": "Panel_Graph"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -300
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}],
|
||||
"split": "h",
|
||||
"width": -400
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}
|
||||
}
|
41
datafiles/data/layouts/Side menu.json
Normal file
41
datafiles/data/layouts/Side menu.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"panel": {
|
||||
"content": [{
|
||||
"content": [{
|
||||
"content": "Panel_Menu"
|
||||
}, {
|
||||
"content": "Panel_Animation"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -84
|
||||
}, {
|
||||
"content": [{
|
||||
"content": [{
|
||||
"content": [{
|
||||
"content": "Panel_Preview"
|
||||
}, {
|
||||
"content": "Panel_Preview"
|
||||
}],
|
||||
"split": "h",
|
||||
"width": 480
|
||||
}, {
|
||||
"content": "Panel_Graph"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -400
|
||||
}, {
|
||||
"content": [{
|
||||
"content": "Panel_Workspace"
|
||||
}, {
|
||||
"content": "Panel_Inspector"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}],
|
||||
"split": "h",
|
||||
"width": -360
|
||||
}],
|
||||
"split": "h",
|
||||
"width": 240
|
||||
}
|
||||
}
|
|
@ -1,43 +1,35 @@
|
|||
{
|
||||
"panel": {
|
||||
"split": "v",
|
||||
"width": 40,
|
||||
"content": [{
|
||||
"content": "Panel_Menu"
|
||||
},
|
||||
{
|
||||
"split": "h",
|
||||
"width": -400,
|
||||
}, {
|
||||
"content": [{
|
||||
"split": "v",
|
||||
"width": -300,
|
||||
"content": [{
|
||||
"split": "h",
|
||||
"width": 400,
|
||||
"content": [{
|
||||
"content": "Panel_Preview"
|
||||
},
|
||||
{
|
||||
}, {
|
||||
"content": "Panel_Graph"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"content": "Panel_Animation"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"content": "Panel_Inspector"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"Panel_Collection": {
|
||||
"parent": "Panel_Animation",
|
||||
"width": 500,
|
||||
}],
|
||||
"split": "h",
|
||||
"index": 0
|
||||
"width": 400
|
||||
}, {
|
||||
"content": "Panel_Animation"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": -300
|
||||
}, {
|
||||
"content": [{
|
||||
"content": "Panel_Workspace"
|
||||
}, {
|
||||
"content": "Panel_Inspector"
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}],
|
||||
"split": "h",
|
||||
"width": -400
|
||||
}],
|
||||
"split": "v",
|
||||
"width": 40
|
||||
}
|
||||
}
|
|
@ -91,7 +91,7 @@
|
|||
}
|
||||
|
||||
if(_menuItem.toggle != noone) {
|
||||
var tog = _menuItem.toggle();
|
||||
var tog = _menuItem.toggle(_menuItem);
|
||||
if(tog) draw_sprite_ui(THEME.icon_toggle, 0, dialog_x + ui(24), yy + hght / 2,,,, COLORS._main_icon);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,11 @@
|
|||
draw_tooltip_text("[" + get_text("tooltip_rigid_object", "Rigidbody Object") + "id: " + string(content[$ "object"]) + "]");
|
||||
break;
|
||||
case VALUE_TYPE.particle :
|
||||
draw_tooltip_text("[" + get_text("tooltip_particle_object", "Particle Object") + "]");
|
||||
var txt = "[" +
|
||||
get_text("tooltip_particle_object", "Particle Object") +
|
||||
" (size: " + string(array_length(content)) + ") " +
|
||||
"]";
|
||||
draw_tooltip_text(txt);
|
||||
break;
|
||||
case VALUE_TYPE.pathnode :
|
||||
draw_tooltip_text("[" + get_text("tooltip_path_object", "Path Object") + "]");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/// @description main directory, parameter
|
||||
print("===== Game Start Begin =====");
|
||||
//print("===== Game Start Begin =====");
|
||||
|
||||
#region directory
|
||||
globalvar DIRECTORY;
|
||||
|
@ -80,4 +80,4 @@ print("===== Game Start Begin =====");
|
|||
lua_error_handler = _lua_error;
|
||||
#endregion
|
||||
|
||||
print("===== Game Start End =====");
|
||||
//print("===== Game Start End =====");
|
|
@ -144,9 +144,9 @@
|
|||
#endregion
|
||||
//print("===== Step end =====");
|
||||
|
||||
if(keyboard_check_pressed(ord("Q"))) {
|
||||
if(key_mod_press(CTRL))
|
||||
print(panelSerializeArray());
|
||||
else
|
||||
print(panelSerialize());
|
||||
}
|
||||
//if(keyboard_check_pressed(ord("Q"))) {
|
||||
// if(key_mod_press(CTRL))
|
||||
// print(panelSerializeArray());
|
||||
// else
|
||||
// print(panelSerialize());
|
||||
//}
|
|
@ -20,6 +20,8 @@ enum ARRAY_OVERFLOW {
|
|||
_default,
|
||||
loop
|
||||
}
|
||||
|
||||
gml_pragma("forceinline");
|
||||
function array_safe_get(arr, index, def = 0, overflow = ARRAY_OVERFLOW._default) {
|
||||
if(!is_array(arr)) return def;
|
||||
|
||||
|
@ -35,6 +37,7 @@ function array_safe_get(arr, index, def = 0, overflow = ARRAY_OVERFLOW._default)
|
|||
return arr[index];
|
||||
}
|
||||
|
||||
|
||||
function array_exists(arr, val) {
|
||||
for( var i = 0; i < array_length(arr); i++ ) {
|
||||
if(arr[i] == val) return true;
|
||||
|
|
|
@ -6,7 +6,7 @@ function fontScrollBox(_onModify) : widget() constructor {
|
|||
open_ry = 0;
|
||||
|
||||
align = fa_center;
|
||||
extra_button = button(function() { shellOpenExplorer(DIRECTORY + "Fonts/"); } )
|
||||
extra_button = button(function() { shellOpenExplorer(DIRECTORY + "Fonts"); } )
|
||||
.setTooltip("Open font folder")
|
||||
.setIcon(THEME.folder_content, 0, COLORS._main_icon);
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ function token_splice(str) {
|
|||
}
|
||||
|
||||
function draw_code(_x, _y, str) {
|
||||
//print(" > Drawing: " + str);
|
||||
var tx = _x
|
||||
var ty = _y;
|
||||
|
||||
|
@ -48,7 +49,7 @@ function draw_code(_x, _y, str) {
|
|||
|
||||
for( var i = 0; i < amo; i++ ) {
|
||||
var _w = strSpl[i];
|
||||
_w = string_trim_end(_w);
|
||||
_w = string_replace_all(_w, "\n", "");
|
||||
|
||||
isStr = !isStr;
|
||||
|
||||
|
|
|
@ -24,6 +24,9 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
inputs[| 5] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
|
||||
|
||||
inputs[| 6] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone )
|
||||
.setVisible(true, false);
|
||||
|
||||
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
|
@ -35,6 +38,7 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
var _rot = inputs[| 3].getValue();
|
||||
var _col = inputs[| 4].getValue();
|
||||
var _alp = inputs[| 5].getValue();
|
||||
var _srf = inputs[| 6].getValue();
|
||||
|
||||
for( var i = 0; i < array_length(parts); i++ ) {
|
||||
var part = parts[i];
|
||||
|
@ -57,6 +61,9 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
if(is_array(_alp) && array_length(_alp) > i )
|
||||
part.alp = array_safe_get(_alp, i);
|
||||
|
||||
if(is_array(_srf) && array_length(_srf) > i )
|
||||
part.surf = array_safe_get(_srf, i);
|
||||
}
|
||||
|
||||
outputs[| 0].setValue(parts);
|
||||
|
|
|
@ -3,12 +3,14 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y
|
|||
color = COLORS.node_blend_vfx;
|
||||
icon = THEME.vfx;
|
||||
|
||||
attributes[? "Output pool"] = false;
|
||||
|
||||
inputs[| input_len + 0] = nodeValue("Spawn trigger", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, false)
|
||||
.setVisible(true, true);
|
||||
|
||||
inputs[| input_len + 1] = nodeValue("Step interval", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1, "How often the 'on step' event is triggered.\nWith 1 being trigger every frame, 2 means triggered once every 2 frames.");
|
||||
|
||||
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, parts );
|
||||
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, [] );
|
||||
outputs[| 1] = nodeValue("On create", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
|
||||
outputs[| 2] = nodeValue("On step", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
|
||||
outputs[| 3] = nodeValue("On destroy", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
|
||||
|
@ -32,6 +34,18 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y
|
|||
if(ANIMATOR.current_frame == 0)
|
||||
reset();
|
||||
runVFX(ANIMATOR.current_frame);
|
||||
|
||||
if(attributes[? "Output pool"]) {
|
||||
outputs[| 0].setValue(parts);
|
||||
return;
|
||||
} else {
|
||||
var _parts = [];
|
||||
for( var i = 0; i < array_length(parts); i++ ) {
|
||||
if(!parts[i].active) continue;
|
||||
array_push(_parts, parts[i]);
|
||||
}
|
||||
outputs[| 0].setValue(_parts);
|
||||
}
|
||||
}
|
||||
|
||||
static onSpawn = function(_time, part) {
|
||||
|
|
|
@ -15,52 +15,60 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
input_display_list = [ 0 ];
|
||||
|
||||
outputs[| 0] = nodeValue("Positions", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 1] = nodeValue("Scales", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 2] = nodeValue("Rotations", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 );
|
||||
outputs[| 2] = nodeValue("Rotations", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 3] = nodeValue("Blending", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, 0 );
|
||||
outputs[| 3] = nodeValue("Blending", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, 0 )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 4] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 );
|
||||
outputs[| 4] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 5] = nodeValue("Life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 );
|
||||
outputs[| 5] = nodeValue("Life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 6] = nodeValue("Max life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 );
|
||||
outputs[| 6] = nodeValue("Max life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 7] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone )
|
||||
.setVisible(false);
|
||||
|
||||
outputs[| 8] = nodeValue("Velocity", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.setVisible(false);
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
var parts = inputs[| 0].getValue();
|
||||
if(!is_array(parts)) return;
|
||||
|
||||
var _get = [];
|
||||
var _val = [];
|
||||
|
||||
for( var i = 0; i < ds_list_size(outputs); i++ ) {
|
||||
_get[i] = false;
|
||||
var _in = outputs[| i];
|
||||
for( var j = 0; j < ds_list_size(_in.value_to); j++ )
|
||||
if(_in.value_to[| j].value_from == _in) _get[i] = true;
|
||||
|
||||
_val[i] = [];
|
||||
if(_get[i]) _val[i] = array_create(array_length(parts));
|
||||
}
|
||||
for( var i = 0; i < ds_list_size(outputs); i++ )
|
||||
_val[i] = array_create(array_length(parts));
|
||||
|
||||
for( var i = 0; i < array_length(parts); i++ ) {
|
||||
var part = parts[i];
|
||||
|
||||
if(_get[0]) _val[0][i] = [part.x, part.y];
|
||||
if(_get[1]) _val[1][i] = [part.scx, part.scy];
|
||||
if(_get[2]) _val[2][i] = part.rot;
|
||||
if(_get[3]) _val[3][i] = part.blend;
|
||||
if(_get[4]) _val[4][i] = part.alp;
|
||||
if(_get[5]) _val[5][i] = part.life;
|
||||
if(_get[6]) _val[6][i] = part.life_total;
|
||||
if(outputs[| 0].visible) _val[0][i] = [part.x, part.y];
|
||||
if(outputs[| 1].visible) _val[1][i] = [part.scx, part.scy];
|
||||
if(outputs[| 2].visible) _val[2][i] = part.rot;
|
||||
if(outputs[| 3].visible) _val[3][i] = part.blend;
|
||||
if(outputs[| 4].visible) _val[4][i] = part.alp;
|
||||
if(outputs[| 5].visible) _val[5][i] = part.life;
|
||||
if(outputs[| 6].visible) _val[6][i] = part.life_total;
|
||||
if(outputs[| 7].visible) _val[7][i] = part.surf;
|
||||
if(outputs[| 8].visible) _val[8][i] = [part.sx, part.sy];
|
||||
}
|
||||
|
||||
for( var i = 0; i < ds_list_size(outputs); i++ )
|
||||
if(_get[i]) outputs[| i].setValue(_val[i]);
|
||||
if(outputs[| i].visible) outputs[| i].setValue(_val[i]);
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
|
|
|
@ -84,4 +84,8 @@ function Node_Array_Add(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
createNewInput();
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
draw_sprite_fit(s_node_array_add, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
}
|
||||
}
|
|
@ -37,6 +37,6 @@ function Node_Array_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
draw_sprite_fit(s_node_array_reverse, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
draw_sprite_fit(s_node_array_shift, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
}
|
||||
}
|
|
@ -32,4 +32,9 @@ function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
|
||||
outputs[| 0].setValue(_arr);
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
draw_sprite_fit(s_node_array_sort, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
}
|
||||
}
|
99
scripts/node_array_zip/node_array_zip.gml
Normal file
99
scripts/node_array_zip/node_array_zip.gml
Normal file
|
@ -0,0 +1,99 @@
|
|||
function Node_Array_Zip(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Array Zip";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
h = 32 + 24;
|
||||
min_h = h;
|
||||
|
||||
inputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0)
|
||||
.setVisible(true, true);
|
||||
|
||||
outputs[| 0] = nodeValue("Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
|
||||
|
||||
input_fix_len = ds_list_size(inputs);
|
||||
data_length = 1;
|
||||
|
||||
static createNewInput = function() {
|
||||
var index = ds_list_size(inputs);
|
||||
|
||||
inputs[| index] = nodeValue("Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1 )
|
||||
.setVisible(true, true);
|
||||
|
||||
return inputs[| index];
|
||||
}
|
||||
if(!LOADING && !APPENDING) createNewInput();
|
||||
|
||||
static refreshDynamicInput = function() {
|
||||
var _l = ds_list_create();
|
||||
|
||||
for( var i = 0; i < ds_list_size(inputs); i++ ) {
|
||||
if(i < input_fix_len || inputs[| i].value_from)
|
||||
ds_list_add(_l, inputs[| i]);
|
||||
else
|
||||
delete inputs[| i];
|
||||
}
|
||||
|
||||
for( var i = 0; i < ds_list_size(_l); i++ )
|
||||
_l[| i].index = i;
|
||||
|
||||
ds_list_destroy(inputs);
|
||||
inputs = _l;
|
||||
|
||||
createNewInput();
|
||||
}
|
||||
|
||||
static onValueFromUpdate = function(index) {
|
||||
if(LOADING || APPENDING) return;
|
||||
|
||||
refreshDynamicInput();
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
var _arr = inputs[| 0].getValue();
|
||||
|
||||
if(inputs[| 0].value_from == noone) {
|
||||
inputs[| 0].type = VALUE_TYPE.any;
|
||||
outputs[| 0].type = VALUE_TYPE.any;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!is_array(_arr)) return;
|
||||
var _type = inputs[| 0].value_from.type;
|
||||
inputs[| 0].type = _type;
|
||||
outputs[| 0].type = _type;
|
||||
|
||||
var len = 1;
|
||||
var val = [];
|
||||
for( var i = 0; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||
val[i] = inputs[| i].getValue();
|
||||
inputs[| i].type = inputs[| i].value_from == noone? inputs[| i].value_from.type : VALUE_TYPE.any;
|
||||
if(!is_array(val[i])) {
|
||||
val[i] = [ val[i] ];
|
||||
continue;
|
||||
}
|
||||
len = max(len, array_length(val[i]));
|
||||
}
|
||||
|
||||
var _out = array_create(len);
|
||||
|
||||
for( var i = 0; i < len; i++ ) {
|
||||
for( var j = 0; j < ds_list_size(inputs) - 1; j += data_length )
|
||||
_out[i][j] = array_safe_get(val[j], i, 0);
|
||||
}
|
||||
|
||||
outputs[| 0].setValue(_out);
|
||||
}
|
||||
|
||||
static postDeserialize = function() {
|
||||
var _inputs = load_map[? "inputs"];
|
||||
|
||||
for(var i = input_fix_len; i < ds_list_size(_inputs); i += data_length )
|
||||
createNewInput();
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
draw_sprite_fit(s_node_array_zip, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
}
|
||||
}
|
11
scripts/node_array_zip/node_array_zip.yy
Normal file
11
scripts/node_array_zip/node_array_zip.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_array_zip",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "array",
|
||||
"path": "folders/nodes/data/value/array.yy",
|
||||
},
|
||||
}
|
12
scripts/node_array_zip/node_counter.yy
Normal file
12
scripts/node_array_zip/node_counter.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "variable",
|
||||
"path": "folders/nodes/data/variable.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_counter",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -63,7 +63,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
|
||||
draw_stack = ds_list_create();
|
||||
|
||||
function surface_update() {
|
||||
function surface_store_buffer() {
|
||||
buffer_delete(surface_buffer);
|
||||
|
||||
surface_w = surface_get_width(canvas_surface);
|
||||
|
@ -85,6 +85,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
draw_clear_alpha(0, 0);
|
||||
surface_reset_target();
|
||||
BLEND_NORMAL;
|
||||
|
||||
surface_store_buffer();
|
||||
}
|
||||
|
||||
function apply_surface() {
|
||||
|
@ -273,8 +275,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
}
|
||||
|
||||
function flood_fill_scanline(_x, _y, _surf, _thres, _corner = false) {
|
||||
surface_update();
|
||||
|
||||
var colorFill = draw_get_color() + (255 << 24);
|
||||
var colorBase = get_color_buffer(_x, _y);
|
||||
|
||||
|
@ -360,8 +360,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
surface_update();
|
||||
}
|
||||
|
||||
function canvas_fill(_x, _y, _surf, _thres) {
|
||||
|
@ -385,8 +383,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
}
|
||||
}
|
||||
draw_set_alpha(1);
|
||||
|
||||
surface_update();
|
||||
}
|
||||
|
||||
mouse_cur_x = 0;
|
||||
|
@ -449,7 +445,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
mouse_holding = false;
|
||||
|
||||
apply_draw_surface();
|
||||
surface_update();
|
||||
}
|
||||
|
||||
mouse_pre_draw_x = mouse_cur_x;
|
||||
|
@ -472,7 +467,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
if(mouse_holding && mouse_release(mb_left)) {
|
||||
mouse_holding = false;
|
||||
apply_draw_surface();
|
||||
surface_update();
|
||||
}
|
||||
|
||||
BLEND_NORMAL;
|
||||
|
@ -510,7 +504,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
BLEND_NORMAL;
|
||||
|
||||
apply_draw_surface();
|
||||
surface_update();
|
||||
mouse_holding = false;
|
||||
}
|
||||
apply_surface();
|
||||
|
@ -529,7 +522,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
break;
|
||||
}
|
||||
|
||||
surface_update();
|
||||
surface_store_buffer();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -600,26 +593,36 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
|
||||
static step = function() {
|
||||
var _outSurf = outputs[| 0].getValue();
|
||||
if(is_surface(_outSurf)) return;
|
||||
|
||||
if(!is_surface(_outSurf)) {
|
||||
_outSurf = surface_create_from_buffer(surface_w, surface_h, surface_buffer);
|
||||
outputs[| 0].setValue(_outSurf);
|
||||
}
|
||||
}
|
||||
|
||||
static update = function(frame = ANIMATOR.current_frame) {
|
||||
apply_surface();
|
||||
}
|
||||
|
||||
static doSerialize = function(_map) {
|
||||
_map[? "surface"] = buffer_base64_encode(surface_buffer, 0, buffer_get_size(surface_buffer));
|
||||
surface_store_buffer();
|
||||
var comp = buffer_compress(surface_buffer, 0, buffer_get_size(surface_buffer));
|
||||
var enc = buffer_base64_encode(comp, 0, buffer_get_size(comp));
|
||||
|
||||
_map[? "surface"] = enc;
|
||||
}
|
||||
|
||||
static postDeserialize = function() {
|
||||
static doApplyDeserialize = function() {
|
||||
if(!ds_map_exists(load_map, "surface")) return;
|
||||
surface_buffer = buffer_base64_decode(load_map[? "surface"]);
|
||||
var buff = buffer_base64_decode(load_map[? "surface"]);
|
||||
surface_buffer = buffer_decompress(buff);
|
||||
|
||||
buffer_set_surface(surface_buffer, canvas_surface, 0);
|
||||
surface_update();
|
||||
var _dim = inputs[| 0].getValue();
|
||||
var _outSurf = outputs[| 0].getValue();
|
||||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
|
||||
canvas_surface = surface_create_from_buffer(_dim[0], _dim[1], surface_buffer);
|
||||
|
||||
apply_surface();
|
||||
}
|
||||
|
||||
static onCleanUp = function() {
|
||||
|
|
|
@ -241,11 +241,6 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
render_time += node_list[| i].render_time;
|
||||
}
|
||||
|
||||
if(PANEL_GRAPH.node_focus == self && panelFocus(PANEL_GRAPH) && DOUBLE_CLICK) {
|
||||
PANEL_GRAPH.addContext(self);
|
||||
DOUBLE_CLICK = false;
|
||||
}
|
||||
|
||||
w = attributes[? "w"];
|
||||
|
||||
onStep();
|
||||
|
|
|
@ -4,7 +4,6 @@ function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
|
||||
w = 96;
|
||||
|
||||
|
||||
inputs[| 0] = nodeValue("Check value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
|
||||
.setVisible(true, true);
|
||||
|
||||
|
@ -77,9 +76,11 @@ function Node_Condition(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||
if(res) {
|
||||
outputs[| 0].setValue(_true);
|
||||
outputs[| 0].type = inputs[| 3].type;
|
||||
outputs[| 0].display_type = inputs[| 3].display_type;
|
||||
} else {
|
||||
outputs[| 0].setValue(_fals);
|
||||
outputs[| 0].type = inputs[| 4].type;
|
||||
outputs[| 0].display_type = inputs[| 4].display_type;
|
||||
}
|
||||
|
||||
outputs[| 1].setValue(res);
|
||||
|
|
|
@ -717,7 +717,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
|
|||
|
||||
static drawNode = function(_x, _y, _mx, _my, _s) {
|
||||
if(!active) return;
|
||||
if(group != PANEL_GRAPH.getCurrentContext()) return;
|
||||
//if(group != PANEL_GRAPH.getCurrentContext()) return;
|
||||
|
||||
var xx = x * _s + _x;
|
||||
var yy = y * _s + _y;
|
||||
|
|
|
@ -47,7 +47,7 @@ function Node_Frame(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
draw_scale = 1;
|
||||
static drawNode = function(_x, _y, _mx, _my, _s) {
|
||||
draw_scale = _s;
|
||||
if(group != PANEL_GRAPH.getCurrentContext()) return;
|
||||
//if(group != PANEL_GRAPH.getCurrentContext()) return;
|
||||
|
||||
if(size_dragging) {
|
||||
w = size_dragging_w + (mouse_mx - size_dragging_mx) / _s;
|
||||
|
|
|
@ -61,6 +61,7 @@ function Node_Gradient(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
|
||||
|
||||
var _gra = _data[1];
|
||||
//print("Draw gradient " + string(_gra))
|
||||
|
||||
var _typ = _data[2];
|
||||
var _ang = _data[3];
|
||||
|
|
|
@ -22,6 +22,8 @@ function Node_Gradient_Out(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
|||
var pal = _data[0];
|
||||
var pos = _data[1];
|
||||
|
||||
//print("Gradient out " + string(pal))
|
||||
|
||||
if(_output_index == 0) return pal;
|
||||
if(_output_index == 1) return pal.eval(pos);
|
||||
return 0;
|
||||
|
|
|
@ -55,6 +55,7 @@ function Node_Iterate_Each(_x, _y, _group = noone) : Node_Collection(_x, _y, _gr
|
|||
if(!is_real(maxIter)) maxIter = 1;
|
||||
|
||||
iterated++;
|
||||
//print("Iterating " + string(iterated) + "/" + string(maxIter))
|
||||
|
||||
if(iterated >= maxIter) {
|
||||
render_time = get_timer() - loop_start_time;
|
||||
|
|
|
@ -136,7 +136,7 @@ function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
oy = ny;
|
||||
}
|
||||
|
||||
if(point_distance(drag_point_mx, drag_point_my, pxx, pxy) > 4) {
|
||||
if(point_distance(drag_point_mx, drag_point_my, pxx, pxy) > 4 / _s) {
|
||||
array_push(drag_points, [ pxx, pxy ]);
|
||||
|
||||
drag_point_mx = pxx;
|
||||
|
@ -181,7 +181,8 @@ function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
var anc = [];
|
||||
|
||||
for( i = 0; i < amo; i++ ) {
|
||||
var _ind = points[i];
|
||||
var ind = replace? i : clamp(i / amo * array_length(points), 0, array_length(points) - 1);
|
||||
var _ind = points[ind];
|
||||
var _p = drag_points[_ind];
|
||||
var dxx = 0;
|
||||
var dxy = 0;
|
||||
|
|
|
@ -28,7 +28,7 @@ function Node_Pin(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
var xx = x * _s + _x;
|
||||
var yy = y * _s + _y;
|
||||
|
||||
return point_in_circle(_mx, _my, xx, yy, 24);
|
||||
return point_in_circle(_mx, _my, xx, yy, _s * 24);
|
||||
}
|
||||
|
||||
static preDraw = function(_x, _y, _s) {
|
||||
|
@ -53,19 +53,19 @@ function Node_Pin(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
isHovering = true;
|
||||
|
||||
draw_sprite_stretched(THEME.node_bg, 0, xx - 12 * _s, yy - 12 * _s, 24 * _s, 24 * _s);
|
||||
if(inputs[| 0].drawJunction(_s, _mx, _my, false))
|
||||
if(inputs[| 0].drawJunction(_s, _mx, _my))
|
||||
hover = inputs[| 0];
|
||||
if(outputs[| 0].drawJunction(_s, _mx, _my, false))
|
||||
if(outputs[| 0].drawJunction(_s, _mx, _my))
|
||||
hover = outputs[| 0];
|
||||
} else if(hoverExpand > 0) {
|
||||
inputs[| 0].drawJunction(_s, _mx, _my, false)
|
||||
outputs[| 0].drawJunction(_s, _mx, _my, false)
|
||||
inputs[| 0].drawJunction(_s, _mx, _my)
|
||||
outputs[| 0].drawJunction(_s, _mx, _my)
|
||||
} else {
|
||||
var jun;
|
||||
if(hov != noone) jun = hov.connect_type == JUNCTION_CONNECT.input? outputs[| 0] : inputs[| 0];
|
||||
else jun = inputs[| 0].value_from == noone? inputs[| 0] : outputs[| 0];
|
||||
|
||||
if(jun.drawJunction(_s, _mx, _my, false))
|
||||
if(jun.drawJunction(_s, _mx, _my,))
|
||||
hover = jun;
|
||||
}
|
||||
|
||||
|
|
|
@ -388,6 +388,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
|||
ds_list_add(values, "Texts");
|
||||
addNodeObject(values, "Text", s_node_text, "Node_String", [1, Node_String]);
|
||||
addNodeObject(values, "Unicode", s_node_unicode, "Node_Unicode", [1, Node_Unicode]);
|
||||
addNodeObject(values, "Text Length", s_node_text_length, "Node_String_Length", [1, Node_String_Length]).setVersion(1138);
|
||||
addNodeObject(values, "Combine Text", s_node_text_combine, "Node_String_Merge", [1, Node_String_Merge]);
|
||||
addNodeObject(values, "Join Text", s_node_text_join, "Node_String_Join", [1, Node_String_Join]).setVersion(1120);
|
||||
addNodeObject(values, "Split Text", s_node_text_splice, "Node_String_Split", [1, Node_String_Split]);
|
||||
|
@ -406,6 +407,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
|||
addNodeObject(values, "Array Remove", s_node_array_remove, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).setVersion(1120);
|
||||
addNodeObject(values, "Array Reverse", s_node_array_reverse, "Node_Array_Reverse", [1, Node_Array_Reverse], ["reverse array"]).setVersion(1120);
|
||||
addNodeObject(values, "Array Shift", s_node_array_shift, "Node_Array_Shift", [1, Node_Array_Shift]).setVersion(1137);
|
||||
addNodeObject(values, "Array Zip", s_node_array_zip, "Node_Array_Zip", [1, Node_Array_Zip]).setVersion(1138);
|
||||
addNodeObject(values, "Sort Array", s_node_array_sort, "Node_Array_Sort", [1, Node_Array_Sort], ["array sort"]).setVersion(1120);
|
||||
addNodeObject(values, "Shuffle Array", s_node_array_shuffle, "Node_Array_Shuffle", [1, Node_Array_Shuffle], ["array shuffle"]).setVersion(1120);
|
||||
|
||||
|
@ -545,6 +547,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
|||
}
|
||||
|
||||
function graphFocusNode(node) {
|
||||
if(!PANEL_INSPECTOR.locked)
|
||||
PANEL_INSPECTOR.inspecting = node;
|
||||
ds_list_clear(PANEL_GRAPH.nodes_select_list);
|
||||
PANEL_GRAPH.node_focus = node;
|
||||
|
|
|
@ -21,7 +21,6 @@ function Node_Rigid_Group(_x, _y, _group = noone) : Node_Collection(_x, _y, _gro
|
|||
instance_destroy(oRigidbody);
|
||||
physics_pause_enable(true);
|
||||
|
||||
time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, function() {
|
||||
var node_list = getNodeList();
|
||||
for( var i = 0; i < ds_list_size(node_list); i++ ) {
|
||||
var n = node_list[| i];
|
||||
|
@ -29,17 +28,11 @@ function Node_Rigid_Group(_x, _y, _group = noone) : Node_Collection(_x, _y, _gro
|
|||
n.reset();
|
||||
}
|
||||
physics_pause_enable(false);
|
||||
}));
|
||||
}
|
||||
|
||||
static onStep = function() {
|
||||
RETURN_ON_REST
|
||||
|
||||
static update = function() {
|
||||
if(ANIMATOR.current_frame == 0)
|
||||
reset();
|
||||
|
||||
setRenderStatus(false);
|
||||
UPDATE |= RENDER_TYPE.full;
|
||||
}
|
||||
|
||||
PATCH_STATIC
|
||||
|
|
|
@ -98,25 +98,26 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
var _path = _data[14];
|
||||
var _bgcol = _bg? colToVec4(_data[11]) : [0, 0, 0, 0];
|
||||
|
||||
inputs[| 11].setVisible(_bg);
|
||||
inputs[| 3].setVisible(true);
|
||||
inputs[| 9].setVisible(true);
|
||||
inputs[| 4].setVisible(true);
|
||||
inputs[| 13].setVisible(true);
|
||||
inputs[| 5].setVisible(true);
|
||||
inputs[| 6].setVisible(_path == noone);
|
||||
inputs[| 7].setVisible(true);
|
||||
inputs[| 8].setVisible(true);
|
||||
inputs[| 9].setVisible(true);
|
||||
inputs[| 11].setVisible(_bg);
|
||||
inputs[| 13].setVisible(true);
|
||||
|
||||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1]);
|
||||
|
||||
if(_path != noone && struct_has(_path, "getPointRatio")) {
|
||||
inputs[| 3].setVisible(false);
|
||||
inputs[| 9].setVisible(false);
|
||||
inputs[| 4].setVisible(false);
|
||||
inputs[| 13].setVisible(false);
|
||||
inputs[| 5].setVisible(false);
|
||||
inputs[| 7].setVisible(false);
|
||||
inputs[| 8].setVisible(false);
|
||||
inputs[| 9].setVisible(false);
|
||||
inputs[| 13].setVisible(false);
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
if(_bg) draw_clear_alpha(0, 1);
|
||||
|
@ -138,7 +139,6 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
var triangles = polygon_triangulate(points);
|
||||
|
||||
draw_set_color(_color);
|
||||
|
||||
draw_primitive_begin(pr_trianglelist);
|
||||
for( var i = 0; i < array_length(triangles); i++ ) {
|
||||
var tri = triangles[i];
|
||||
|
|
|
@ -123,7 +123,7 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
|
|||
if(array_length(anim_drawn) != ANIMATOR.frames_total)
|
||||
array_resize(anim_drawn, ANIMATOR.frames_total);
|
||||
|
||||
if(ANIMATOR.current_frame < ANIMATOR.frames_total) {
|
||||
if(ANIMATOR.current_frame >= 0 && ANIMATOR.current_frame < ANIMATOR.frames_total) {
|
||||
if(anim_drawn[ANIMATOR.current_frame]) return;
|
||||
|
||||
if(ANIMATOR.is_playing && ANIMATOR.frame_progress) {
|
||||
|
@ -204,7 +204,7 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group)
|
|||
}
|
||||
|
||||
if(drawn)
|
||||
anim_drawn[ANIMATOR.current_frame] = true;
|
||||
array_safe_set(anim_drawn, ANIMATOR.current_frame, true);
|
||||
}
|
||||
|
||||
static onInspectorUpdate = function(updateAll = true) {
|
||||
|
|
29
scripts/node_string_length/node_string_length.gml
Normal file
29
scripts/node_string_length/node_string_length.gml
Normal file
|
@ -0,0 +1,29 @@
|
|||
function Node_String_Length(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Text Length";
|
||||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
|
||||
inputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")
|
||||
.setVisible(true, true);
|
||||
|
||||
inputs[| 1] = nodeValue("Mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Character", "Word"]);
|
||||
|
||||
outputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.output, VALUE_TYPE.text, "");
|
||||
|
||||
function process_data(_output, _data, _index = 0) {
|
||||
if(_data[1] == 0)
|
||||
return string_length(_data[0]);
|
||||
else
|
||||
return array_length(string_splice(_data[0], " "));
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text);
|
||||
var str = outputs[| 0].getValue();
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
var ss = string_scale(str, bbox.w, bbox.h);
|
||||
draw_text_transformed(bbox.xc, bbox.yc, str, ss, ss, 0);
|
||||
}
|
||||
}
|
11
scripts/node_string_length/node_string_length.yy
Normal file
11
scripts/node_string_length/node_string_length.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_string_length",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "texts",
|
||||
"path": "folders/nodes/data/value/texts.yy",
|
||||
},
|
||||
}
|
|
@ -8,6 +8,7 @@ function Node_String_Split(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
|||
inputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")
|
||||
.setVisible(true, true);
|
||||
inputs[| 1] = nodeValue("Delimiter", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, " ", "Character that used to split text,\nleave blank to create character array.");
|
||||
inputs[| 1].editWidget.format = TEXT_AREA_FORMAT.delimiter;
|
||||
|
||||
outputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.output, VALUE_TYPE.text, "");
|
||||
|
||||
|
|
|
@ -7,20 +7,71 @@ function Node_String_Trim(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
|
|||
|
||||
inputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")
|
||||
.setVisible(true, true);
|
||||
|
||||
inputs[| 1] = nodeValue("Head", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
|
||||
|
||||
inputs[| 2] = nodeValue("Tail", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
|
||||
|
||||
inputs[| 3] = nodeValue("Trim", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Character", "Word"]);
|
||||
|
||||
inputs[| 4] = nodeValue("Mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0, "Set to progress to use ratio, where 0 means no change and 1 means the entire length of the text.")
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Counter", "Progress"]);
|
||||
|
||||
outputs[| 0] = nodeValue("Text", self, JUNCTION_CONNECT.output, VALUE_TYPE.text, "");
|
||||
|
||||
input_display_list = [
|
||||
["Text", false], 0,
|
||||
["Trim", false], 3, 4, 1, 2,
|
||||
];
|
||||
|
||||
function step() {
|
||||
var mode = inputs[| 4].getValue();
|
||||
|
||||
inputs[| 1].type = mode? VALUE_TYPE.float : VALUE_TYPE.integer;
|
||||
inputs[| 2].type = mode? VALUE_TYPE.float : VALUE_TYPE.integer;
|
||||
}
|
||||
|
||||
function process_data(_output, _data, _index = 0) {
|
||||
var str = _data[0];
|
||||
str = string_copy(str, 1 + _data[1], string_length(str) - _data[1] - _data[2]);
|
||||
var hed = max(0, _data[1]);
|
||||
var tal = max(0, _data[2]);
|
||||
|
||||
return str;
|
||||
var trim = _data[3];
|
||||
var mode = _data[4];
|
||||
|
||||
var _str = str;
|
||||
|
||||
if(trim == 0) {
|
||||
if(mode == 0)
|
||||
_str = string_copy(str, 1 + hed, string_length(str) - hed - tal);
|
||||
else if(mode == 1) {
|
||||
var h = hed * string_length(str);
|
||||
var t = tal * string_length(str);
|
||||
|
||||
_str = string_copy(str, 1 + h, string_length(str) - hed - t);
|
||||
}
|
||||
} else if(trim == 1) {
|
||||
var w = string_splice(str, " ");
|
||||
_str = "";
|
||||
|
||||
if(mode == 1) {
|
||||
hed *= array_length(w);
|
||||
tal *= array_length(w);
|
||||
}
|
||||
|
||||
for( var i = hed; i < array_length(w) - tal; i++ )
|
||||
_str += (i == hed? "" : " ") + w[i];
|
||||
}
|
||||
|
||||
return _str;
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var str = inputs[| 1].getValue();
|
||||
var str = outputs[| 0].getValue();
|
||||
var hed = inputs[| 1].getValue();
|
||||
var tal = inputs[| 2].getValue();
|
||||
|
||||
if(is_array(str) && array_length(str))
|
||||
str = str[0];
|
||||
|
||||
|
|
|
@ -49,7 +49,12 @@ function Node_Text(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
static generateFont = function(_path, _size, _aa, _range) {
|
||||
if(ANIMATOR.is_playing) return;
|
||||
|
||||
if(_path == _font_current && _size == _size_current && _aa == _aa_current && _rang_current[0] == _range[0] && _rang_current[1] == _range[1]) return;
|
||||
if(_path == _font_current &&
|
||||
_size == _size_current &&
|
||||
_aa == _aa_current &&
|
||||
_rang_current[0] == _range[0] &&
|
||||
_rang_current[1] == _range[1]) return;
|
||||
|
||||
_font_current = _path;
|
||||
_size_current = _size;
|
||||
_aa_current = _aa;
|
||||
|
@ -59,6 +64,7 @@ function Node_Text(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
if(file_exists(_path)) {
|
||||
if(font != f_p0 && font_exists(font))
|
||||
font_delete(font);
|
||||
|
||||
font_add_enable_aa(_aa);
|
||||
font = font_add(_path, _size, false, false, _range[0], _range[1]);
|
||||
}
|
||||
|
|
|
@ -800,7 +800,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
var display = nodeFrom.display_type;
|
||||
|
||||
if(display_type == VALUE_DISPLAY.gradient && typeFrom == VALUE_TYPE.color) {
|
||||
if(display == VALUE_DISPLAY.gradient)
|
||||
if(display == VALUE_DISPLAY.gradient || (is_struct(value) && instanceof(value) == "gradientObject"))
|
||||
return value;
|
||||
if(is_array(value)) {
|
||||
var amo = array_length(value);
|
||||
|
@ -964,15 +964,6 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
return val;
|
||||
}
|
||||
|
||||
static getExtraData = function() {
|
||||
if(value_from != noone && value_from != self) {
|
||||
if(display_type == VALUE_DISPLAY.gradient && value_from.display_type != VALUE_DISPLAY.gradient)
|
||||
return extra_data;
|
||||
return value_from.getExtraData();
|
||||
}
|
||||
return extra_data;
|
||||
}
|
||||
|
||||
static __anim = function() {
|
||||
return animator.is_anim || node.update_on_frame;
|
||||
}
|
||||
|
|
|
@ -297,6 +297,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
menuItem(get_text("paste", "Paste"), function() { doPaste(value_focusing); }, THEME.paste, [ "Animation", "Paste" ]),
|
||||
];
|
||||
|
||||
function onFocusBegin() { PANEL_ANIMATION = self; }
|
||||
|
||||
function onResize() {
|
||||
initSize();
|
||||
|
||||
|
@ -879,7 +881,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
} else
|
||||
draw_sprite_ui_uniform(THEME.timeline_clock, 1, ui(22), ty - 1, 1, COLORS._main_icon, 0.75);
|
||||
|
||||
var hov = point_in_rectangle(msx, msy, 0, ty - ui(8), w, ty + ui(8));
|
||||
var hov = pHOVER && point_in_rectangle(msx, msy, 0, ty - ui(8), w, ty + ui(8));
|
||||
if(hov) {
|
||||
value_hovering = prop;
|
||||
if(mouse_click(mb_left, pFOCUS))
|
||||
|
@ -1427,12 +1429,12 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
bx += ui(36);
|
||||
}
|
||||
|
||||
|
||||
by -= ui(36);
|
||||
}
|
||||
|
||||
if(mini) {
|
||||
var y0 = ui(8);
|
||||
var y1 = by - ui(8) + ui(36);
|
||||
var y1 = by + ui(36) - ui(8);
|
||||
var cy = (y0 + y1) / 2;
|
||||
|
||||
if(y1 - y0 < 12) return;
|
||||
|
|
|
@ -293,6 +293,8 @@ function Panel_Collection() : PanelContent() constructor {
|
|||
return hh;
|
||||
});
|
||||
|
||||
function onFocusBegin() { PANEL_COLLECTION = self; }
|
||||
|
||||
function onResize() {
|
||||
initSize();
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
h = _h;
|
||||
split = "";
|
||||
|
||||
min_w = ui(32);
|
||||
min_h = ui(32);
|
||||
min_w = ui(40);
|
||||
min_h = ui(40);
|
||||
|
||||
dragging = -1;
|
||||
drag_sval = 0;
|
||||
|
@ -75,27 +75,19 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
}
|
||||
|
||||
function resizable(dw, dh, oppose = ANCHOR.left) {
|
||||
if(content && (w + dw < content.min_w || h + dh < content.min_h)) {
|
||||
return false;
|
||||
}
|
||||
if(content)
|
||||
return w + dw > content.min_w && h + dh > content.min_h;
|
||||
|
||||
var rec = true;
|
||||
for(var i = 0; i < ds_list_size(childs); i++) {
|
||||
var panel = childs[| i];
|
||||
|
||||
if(panel.anchor != oppose || panel.content == noone)
|
||||
if(!panel.resizable(dw, dh))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
var hori = oppose == ANCHOR.left || oppose == ANCHOR.right;
|
||||
var ind = hori? childs[| 1].w > childs[| 0].w : childs[| 1].h > childs[| 0].h;
|
||||
return childs[| ind].resizable(dw, dh, oppose);
|
||||
}
|
||||
|
||||
function refreshSize(recur = true) { //refresh content surface after resize
|
||||
//__debug_counter("refresh size");
|
||||
if(content) {
|
||||
content.w = w;
|
||||
content.h = h;
|
||||
content.w = max(w, content.min_w);
|
||||
content.h = max(h, content.min_h);
|
||||
content.onResize();
|
||||
} else if(ds_list_size(childs) == 2) {
|
||||
//print("=== Refreshing (" + string(w) + ", " + string(h) + ") " + string(split) + " ===");
|
||||
|
@ -109,26 +101,26 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
childs[| fixChild].y = y;
|
||||
|
||||
if(split == "h") {
|
||||
childs[| fixChild].w = childs[| fixChild].w / tw * w;
|
||||
childs[| fixChild].h = h;
|
||||
childs[| fixChild].w = round(childs[| fixChild].w / tw * w);
|
||||
childs[| fixChild].h = round(h);
|
||||
|
||||
childs[| !fixChild].x = x + childs[| fixChild].w;
|
||||
childs[| !fixChild].y = y;
|
||||
|
||||
childs[| !fixChild].w = w - childs[| fixChild].w;
|
||||
childs[| !fixChild].h = h;
|
||||
childs[| !fixChild].w = round(w - childs[| fixChild].w);
|
||||
childs[| !fixChild].h = round(h);
|
||||
|
||||
childs[| fixChild].anchor = ANCHOR.left;
|
||||
childs[| !fixChild].anchor = ANCHOR.right;
|
||||
} else if(split == "v") {
|
||||
childs[| fixChild].w = w;
|
||||
childs[| fixChild].h = childs[| fixChild].h / th * h;
|
||||
childs[| fixChild].w = round(w);
|
||||
childs[| fixChild].h = round(childs[| fixChild].h / th * h);
|
||||
|
||||
childs[| !fixChild].x = x;
|
||||
childs[| !fixChild].y = y + childs[| fixChild].h;
|
||||
|
||||
childs[| !fixChild].w = w;
|
||||
childs[| !fixChild].h = h - childs[| fixChild].h;
|
||||
childs[| !fixChild].w = round(w);
|
||||
childs[| !fixChild].h = round(h - childs[| fixChild].h);
|
||||
|
||||
childs[| fixChild].anchor = ANCHOR.top;
|
||||
childs[| !fixChild].anchor = ANCHOR.bottom;
|
||||
|
@ -148,15 +140,14 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
|
||||
var _w = dw, _h = dh;
|
||||
|
||||
for(var i = 0; i < ds_list_size(childs); i++) {
|
||||
var panel = childs[| i];
|
||||
|
||||
if(panel.anchor != oppose || panel.content == noone)
|
||||
panel.resize(dw, dh, oppose);
|
||||
if(ds_list_size(childs) == 2) {
|
||||
var hori = oppose == ANCHOR.left || oppose == ANCHOR.right;
|
||||
var ind = hori? childs[| 1].w > childs[| 0].w : childs[| 1].h > childs[| 0].h;
|
||||
childs[| ind].resize(dw, dh, oppose);
|
||||
}
|
||||
|
||||
w = max(w + dw, min_w);
|
||||
h = max(h + dh, min_h);
|
||||
w = max(round(w + dw), min_w);
|
||||
h = max(round(h + dh), min_h);
|
||||
|
||||
refreshSize(false);
|
||||
}
|
||||
|
@ -244,7 +235,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
|
||||
if(dragging == 1) {
|
||||
var _mx = clamp(mouse_mx, ui(16), WIN_W - ui(16));
|
||||
var dw = _mx - drag_sm;
|
||||
var dw = round(_mx - drag_sm);
|
||||
var res = true;
|
||||
|
||||
for(var i = 0; i < ds_list_size(childs); i++) {
|
||||
|
@ -276,10 +267,13 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
if(mouse_release(mb_left)) dragging = -1;
|
||||
if(mouse_release(mb_left)) {
|
||||
refreshSize();
|
||||
dragging = -1;
|
||||
}
|
||||
} else if(dragging == 2) {
|
||||
var _my = clamp(mouse_my, ui(16), WIN_H - ui(16));
|
||||
var dh = _my - drag_sm;
|
||||
var dh = round(_my - drag_sm);
|
||||
var res = true;
|
||||
|
||||
for(var i = 0; i < ds_list_size(childs); i++) {
|
||||
|
@ -311,7 +305,10 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
if(mouse_release(mb_left)) dragging = -1;
|
||||
if(mouse_release(mb_left)) {
|
||||
refreshSize();
|
||||
dragging = -1;
|
||||
}
|
||||
} else {
|
||||
if(content != noone) {
|
||||
if(point_in_rectangle(mouse_mx, mouse_my, x + ui(2), y + ui(2), x + w - ui(4), y + h - ui(4))) {
|
||||
|
@ -355,7 +352,17 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
if(ds_list_empty(childs))
|
||||
return;
|
||||
|
||||
var min_w = ui(32);
|
||||
var min_h = ui(32);
|
||||
var _drag = true;
|
||||
if(split == "h") {
|
||||
min_w = childs[| 0].min_w + childs[| 1].min_w;
|
||||
min_h = max(childs[| 0].min_h + childs[| 1].min_h);
|
||||
} else {
|
||||
min_w = max(childs[| 0].min_w, childs[| 1].min_w);
|
||||
min_h = childs[| 0].min_h + childs[| 1].min_h;
|
||||
}
|
||||
|
||||
for(var i = 0; i < ds_list_size(childs); i++) {
|
||||
var _panel = childs[| i];
|
||||
if(_panel.content && !_panel.content.draggable)
|
||||
|
@ -369,9 +376,10 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
if!(_drag && (HOVER == noone || is_struct(HOVER)))
|
||||
continue;
|
||||
|
||||
var p = ui(6 - 1);
|
||||
switch(_panel.anchor) {
|
||||
case ANCHOR.left :
|
||||
if(!point_in_rectangle(mouse_mx, mouse_my, _panel.x + _panel.w - ui(2), _panel.y, _panel.x + _panel.w + ui(2), _panel.y + _panel.h))
|
||||
if(!point_in_rectangle(mouse_mx, mouse_my, _panel.x + _panel.w - p, _panel.y, _panel.x + _panel.w + p, _panel.y + _panel.h))
|
||||
break;
|
||||
|
||||
CURSOR = cr_size_we;
|
||||
|
@ -382,7 +390,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
}
|
||||
break;
|
||||
case ANCHOR.top :
|
||||
if(!point_in_rectangle(mouse_mx, mouse_my, _panel.x, _panel.y + _panel.h - ui(2), _panel.x + _panel.w, _panel.y + _panel.h + ui(2)))
|
||||
if(!point_in_rectangle(mouse_mx, mouse_my, _panel.x, _panel.y + _panel.h - p, _panel.x + _panel.w, _panel.y + _panel.h + p))
|
||||
break;
|
||||
|
||||
CURSOR = cr_size_ns;
|
||||
|
@ -401,7 +409,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
|
||||
function drawPanel() {
|
||||
if(w <= ui(16)) return;
|
||||
var p = ui(8);
|
||||
var p = ui(6);
|
||||
var m_in = point_in_rectangle(mouse_mx, mouse_my, x + p, y + p, x + w - p, y + h - p);
|
||||
var m_ot = point_in_rectangle(mouse_mx, mouse_my, x, y, x + w, y + h);
|
||||
mouse_active = m_in;
|
||||
|
@ -421,6 +429,7 @@ function Panel(_parent, _x, _y, _w, _h) constructor {
|
|||
if(content) {
|
||||
min_w = content.min_w;
|
||||
min_h = content.min_h;
|
||||
//print(string(instanceof(content) + ": " + string(h)));
|
||||
if(w >= min_w && h >= min_h)
|
||||
content.draw(self);
|
||||
}
|
||||
|
@ -583,11 +592,12 @@ function PanelContent() constructor {
|
|||
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 1;
|
||||
h = 1;
|
||||
w = 640;
|
||||
h = 480;
|
||||
padding = ui(16);
|
||||
|
||||
min_w = ui(32);
|
||||
min_h = ui(32);
|
||||
min_w = ui(40);
|
||||
min_h = ui(40);
|
||||
|
||||
pFOCUS = false;
|
||||
pHOVER = false;
|
||||
|
|
|
@ -58,18 +58,20 @@
|
|||
}
|
||||
}
|
||||
|
||||
function getPanelFromName(name) {
|
||||
function getPanelFromName(name, create = false) {
|
||||
switch(name) {
|
||||
case "Panel_Menu" : return PANEL_MENU;
|
||||
case "Panel_Inspector" : return PANEL_INSPECTOR;
|
||||
case "Panel_Animation" : return PANEL_ANIMATION;
|
||||
case "Panel_Preview" : return PANEL_PREVIEW;
|
||||
case "Panel_Graph" : return PANEL_GRAPH;
|
||||
case "Panel_Collection" : return PANEL_COLLECTION;
|
||||
case "Panel_Menu" : return (create || findPanel(name))? new Panel_Menu() : PANEL_MENU;
|
||||
case "Panel_Inspector" : return (create || findPanel(name))? new Panel_Inspector() : PANEL_INSPECTOR;
|
||||
case "Panel_Animation" : return (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION;
|
||||
case "Panel_Preview" : return (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW;
|
||||
case "Panel_Graph" : return (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH;
|
||||
|
||||
case "Panel_Collection" : return new Panel_Collection();
|
||||
case "Panel_Workspace" : return new Panel_Workspace();
|
||||
case "Panel_Tunnels" : return new Panel_Tunnels();
|
||||
case "Panel_History" : return new Panel_History();
|
||||
case "Panel_Notification" : return new Panel_Notification();
|
||||
case "Panel_Nodes" : return new Panel_Nodes();
|
||||
}
|
||||
|
||||
return noone;
|
||||
|
@ -80,26 +82,10 @@
|
|||
loadPanelStruct(panel, CURRENT_PANEL.panel);
|
||||
}
|
||||
|
||||
function panelAdd(panel) {
|
||||
var f = CURRENT_PANEL;
|
||||
|
||||
if(struct_has(f, panel)) {
|
||||
var str = f[$ panel];
|
||||
var pan = getPanelFromName(str.parent);
|
||||
var p;
|
||||
|
||||
if(str.split == "v")
|
||||
p = pan.panel.split_v(ui(str.width));
|
||||
else if(str.split == "h")
|
||||
p = pan.panel.split_h(ui(str.width));
|
||||
|
||||
p[ str.index].set(PANEL_COLLECTION);
|
||||
p[!str.index].set(pan);
|
||||
} else {
|
||||
var pan = getPanelFromName(panel);
|
||||
function panelAdd(panel, create = false) {
|
||||
var pan = getPanelFromName(panel, create);
|
||||
if(pan) dialogPanelCall(pan);
|
||||
}
|
||||
}
|
||||
|
||||
function panelObjectInit() {
|
||||
PANEL_MAIN = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4));
|
||||
|
@ -115,10 +101,6 @@
|
|||
clearPanel();
|
||||
panelObjectInit();
|
||||
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
||||
|
||||
if(PREF_MAP[? "panel_collection"])
|
||||
panelAdd("Panel_Collection");
|
||||
|
||||
PANEL_MAIN.refresh();
|
||||
}
|
||||
|
||||
|
@ -126,15 +108,14 @@
|
|||
globalvar CURRENT_PANEL;
|
||||
|
||||
panelObjectInit();
|
||||
if(!directory_exists(DIRECTORY + "layouts"))
|
||||
zip_unzip("data/layouts.zip", DIRECTORY);
|
||||
|
||||
var file = DIRECTORY + "layouts/" + PREF_MAP[? "panel_layout_file"] + ".json";
|
||||
if(!file_exists(file))
|
||||
file = DIRECTORY + "layouts/Horizontal.json";
|
||||
loadPanel(file, PANEL_MAIN);
|
||||
|
||||
if(PREF_MAP[? "panel_collection"])
|
||||
panelAdd("Panel_Collection");
|
||||
|
||||
PANEL_ANIMATION.updatePropertyList();
|
||||
PANEL_MAIN.refresh();
|
||||
}
|
||||
|
@ -338,10 +319,10 @@
|
|||
|
||||
#region function
|
||||
function panelHover(content) {
|
||||
return HOVER && is_struct(HOVER) && instanceof(HOVER) == "Panel" && HOVER.content == content;
|
||||
return HOVER && is_struct(HOVER) && instanceof(HOVER) == "Panel" && instanceof(HOVER.content) == instanceof(content);
|
||||
}
|
||||
|
||||
function panelFocus(content) {
|
||||
return FOCUS && is_struct(FOCUS) && instanceof(FOCUS) == "Panel" && FOCUS.content == content;
|
||||
return FOCUS && is_struct(FOCUS) && instanceof(FOCUS) == "Panel" && instanceof(FOCUS.content) == instanceof(content);
|
||||
}
|
||||
#endregion
|
|
@ -221,6 +221,8 @@ function Panel_Graph() : PanelContent() constructor {
|
|||
tun.build_y = PANEL_GRAPH.mouse_grid_y;
|
||||
});
|
||||
|
||||
function onFocusBegin() { PANEL_GRAPH = self; }
|
||||
|
||||
function stepBegin() {
|
||||
var gr_x = graph_x * graph_s;
|
||||
var gr_y = graph_y * graph_s;
|
||||
|
@ -376,9 +378,8 @@ function Panel_Graph() : PanelContent() constructor {
|
|||
var gr_y = graph_y * graph_s;
|
||||
|
||||
//var t = current_time;
|
||||
for(var i = 0; i < ds_list_size(nodes_list); i++) {
|
||||
for(var i = 0; i < ds_list_size(nodes_list); i++)
|
||||
nodes_list[| i].preDraw(gr_x, gr_y, graph_s);
|
||||
}
|
||||
//print("Predraw time: " + string(current_time - t)); t = current_time;
|
||||
|
||||
#region draw frame
|
||||
|
@ -397,6 +398,13 @@ function Panel_Graph() : PanelContent() constructor {
|
|||
if(n.pointIn(gr_x, gr_y, mx, my, graph_s))
|
||||
node_hovering = n;
|
||||
}
|
||||
|
||||
if(node_hovering != noone && pFOCUS && struct_has(node_hovering, "nodes") && DOUBLE_CLICK) {
|
||||
addContext(node_hovering);
|
||||
DOUBLE_CLICK = false;
|
||||
|
||||
node_hovering = noone;
|
||||
}
|
||||
#endregion
|
||||
//print("Hover time: " + string(current_time - t)); t = current_time;
|
||||
|
||||
|
@ -452,7 +460,7 @@ function Panel_Graph() : PanelContent() constructor {
|
|||
} else {
|
||||
ds_list_clear(nodes_select_list);
|
||||
|
||||
if(DOUBLE_CLICK)
|
||||
if(DOUBLE_CLICK && !PANEL_INSPECTOR.locked)
|
||||
PANEL_INSPECTOR.inspecting = noone;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
title = "Inspector";
|
||||
context_str = "Inspector";
|
||||
|
||||
locked = false;
|
||||
inspecting = noone;
|
||||
top_bar_h = ui(96);
|
||||
|
||||
|
@ -86,6 +87,8 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
}),
|
||||
]
|
||||
|
||||
function onFocusBegin() { PANEL_INSPECTOR = self; }
|
||||
|
||||
function onResize() {
|
||||
initSize();
|
||||
contentPane.resize(content_w, content_h);
|
||||
|
@ -131,7 +134,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
var display = meta.displays[j];
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
|
||||
draw_text_over(ui(16), yy, display[0]);
|
||||
draw_text_add(ui(16), yy, display[0]);
|
||||
yy += line_height() + ui(6);
|
||||
hh += line_height() + ui(6);
|
||||
|
||||
|
@ -799,6 +802,11 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub);
|
||||
draw_text(w / 2, ui(56), inspecting.name);
|
||||
|
||||
var lx = w / 2 - string_width(inspecting.name) / 2 - ui(18);
|
||||
var ly = ui(56 - 8);
|
||||
if(buttonInstant(THEME.button_hide, lx, ly, ui(16), ui(16), [mx, my], pFOCUS, pHOVER, "Lock", THEME.lock, !locked, locked? COLORS._main_icon_light : COLORS._main_icon,, 0.5) == 2)
|
||||
locked = !locked;
|
||||
|
||||
var bx = ui(8);
|
||||
var by = ui(12);
|
||||
|
||||
|
@ -850,7 +858,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
}
|
||||
|
||||
function drawContent(panel) {
|
||||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
||||
draw_clear(COLORS.panel_bg_clear);
|
||||
lineBreak = w < PREF_MAP[? "inspector_line_break_width"];
|
||||
|
||||
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(8), top_bar_h - ui(8), w - ui(16), h - top_bar_h);
|
||||
|
@ -867,7 +875,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
txt = context.name;
|
||||
|
||||
draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text);
|
||||
draw_text_over(w / 2, ui(30), txt);
|
||||
draw_text_add(w / 2, ui(30), txt);
|
||||
|
||||
var bx = w - ui(44);
|
||||
var by = ui(12);
|
||||
|
@ -913,7 +921,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
contentPane.active = pHOVER;
|
||||
contentPane.draw(ui(16), top_bar_h, mx - ui(16), my - top_bar_h);
|
||||
|
||||
if(PANEL_GRAPH.node_focus && inspecting != PANEL_GRAPH.node_focus) {
|
||||
if(!locked && PANEL_GRAPH.node_focus && inspecting != PANEL_GRAPH.node_focus) {
|
||||
inspecting = PANEL_GRAPH.node_focus;
|
||||
if(inspecting != noone)
|
||||
inspecting.onInspect();
|
||||
|
|
|
@ -150,6 +150,7 @@ function Panel_Menu() : PanelContent() constructor {
|
|||
|
||||
array_push(arr, menuItem("Save layout", function() {
|
||||
var dia = dialogCall(o_dialog_file_name, mouse_mx + ui(8), mouse_my + ui(8));
|
||||
dia.name = PREF_MAP[? "panel_layout_file"];
|
||||
dia.onModify = function(name) {
|
||||
var cont = panelSerialize();
|
||||
json_save_struct(DIRECTORY + "layouts/" + name + ".json", cont);
|
||||
|
@ -163,22 +164,20 @@ function Panel_Menu() : PanelContent() constructor {
|
|||
PREF_MAP[? "panel_layout_file"] = _path;
|
||||
PREF_SAVE();
|
||||
setPanel();
|
||||
}));
|
||||
},,, function(item) { return item.name == PREF_MAP[? "panel_layout_file"]; } ));
|
||||
}
|
||||
|
||||
return submenuCall(_x, _y, _depth, arr);
|
||||
}).setIsShelf(),
|
||||
-1,
|
||||
menuItem(get_text("panel_menu_collections", "Collections"), function() {
|
||||
PREF_MAP[? "panel_collection"] = !PREF_MAP[? "panel_collection"];
|
||||
resetPanel();
|
||||
PREF_SAVE();
|
||||
},,, function() { return findPanel("Panel_Collection") != noone; } ),
|
||||
menuItem(get_text("panel_menu_graph", "Graph"), function() { panelAdd("Panel_Graph") },,, function() { return findPanel("Panel_Graph") != noone; } ),
|
||||
menuItem(get_text("panel_menu_preview", "Preview"), function() { panelAdd("Panel_Preview") },,, function() { return findPanel("Panel_Preview") != noone; } ),
|
||||
menuItem(get_text("panel_menu_inspector", "Inspector"), function() { panelAdd("Panel_Inspector") },,, function() { return findPanel("Panel_Inspector") != noone; } ),
|
||||
menuItem(get_text("panel_menu_workspace", "Workspace"), function() { panelAdd("Panel_Workspace") },,, function() { return findPanel("Panel_Workspace") != noone; } ),
|
||||
menuItem(get_text("panel_menu_animation", "Animation"), function() { panelAdd("Panel_Animation") },,, function() { return findPanel("Panel_Animation") != noone; } ),
|
||||
menuItem(get_text("panel_menu_collections", "Collections"), function() { panelAdd("Panel_Collection", true) },,, function() { return findPanel("Panel_Collection") != noone; } ),
|
||||
menuItem(get_text("panel_menu_graph", "Graph"), function() { panelAdd("Panel_Graph", true) },,, function() { return findPanel("Panel_Graph") != noone; } ),
|
||||
menuItem(get_text("panel_menu_preview", "Preview"), function() { panelAdd("Panel_Preview", true) },,, function() { return findPanel("Panel_Preview") != noone; } ),
|
||||
menuItem(get_text("panel_menu_inspector", "Inspector"), function() { panelAdd("Panel_Inspector", true) },,, function() { return findPanel("Panel_Inspector") != noone; } ),
|
||||
menuItem(get_text("panel_menu_workspace", "Workspace"), function() { panelAdd("Panel_Workspace", true) },,, function() { return findPanel("Panel_Workspace") != noone; } ),
|
||||
menuItem(get_text("panel_menu_animation", "Animation"), function() { panelAdd("Panel_Animation", true) },,, function() { return findPanel("Panel_Animation") != noone; } ),
|
||||
menuItem(get_text("panel_menu_notification", "Notification"), function() { panelAdd("Panel_Notification", true) },,, function() { return findPanel("Panel_Notification") != noone; } ),
|
||||
menuItem(get_text("panel_menu_nodes", "Nodes"), function() { panelAdd("Panel_Nodes", true) },,, function() { return findPanel("Panel_Nodes") != noone; } ),
|
||||
menuItem(get_text("tunnels", "Tunnels"), function() {
|
||||
dialogPanelCall(new Panel_Tunnels());
|
||||
},, ["Graph", "Tunnels"]),
|
||||
|
@ -214,6 +213,8 @@ function Panel_Menu() : PanelContent() constructor {
|
|||
]]);
|
||||
}
|
||||
|
||||
function onFocusBegin() { PANEL_MENU = self; }
|
||||
|
||||
function setNotiIcon(icon) {
|
||||
noti_icon = icon;
|
||||
noti_icon_time = 90;
|
||||
|
|
120
scripts/panel_nodes/panel_nodes.gml
Normal file
120
scripts/panel_nodes/panel_nodes.gml
Normal file
|
@ -0,0 +1,120 @@
|
|||
function Panel_Nodes() : PanelContent() constructor {
|
||||
#region data
|
||||
title = "Nodes";
|
||||
|
||||
w = ui(320);
|
||||
h = ui(480);
|
||||
|
||||
search_string = "";
|
||||
|
||||
tb_search = new textBox(TEXTBOX_INPUT.text, function(str) {
|
||||
search_string = string(str);
|
||||
});
|
||||
tb_search.align = fa_left;
|
||||
tb_search.auto_update = true;
|
||||
tb_search.boxColor = COLORS._main_icon_light;
|
||||
|
||||
node_collapse = ds_map_create();
|
||||
#endregion
|
||||
|
||||
function onResize() {
|
||||
sc_nodes.resize(w - ui(padding + padding), h - ui(padding + padding + 40));
|
||||
}
|
||||
|
||||
function drawNodeList(_list, _x0, _x1, _y, _m) {
|
||||
var ww = sc_nodes.surface_w;
|
||||
var hg = ui(28);
|
||||
|
||||
var _h = 0;
|
||||
|
||||
for( var i = 0; i < ds_list_size(_list); i++ ) {
|
||||
var node = _list[| i];
|
||||
var name = node.display_name == ""? node.name : node.display_name;
|
||||
|
||||
if(string_lower(search_string) != "" && string_lower(string_pos(search_string, name)) == 0)
|
||||
continue;
|
||||
|
||||
var isGroup = struct_has(node, "nodes");
|
||||
if(isGroup && !ds_map_exists(node_collapse, node.node_id))
|
||||
node_collapse[? node.node_id] = false;
|
||||
|
||||
if(pHOVER && point_in_rectangle(_m[0], _m[1], _x0, _y, _x1 - _x0 - ui(32), _y + hg)) {
|
||||
var cc = merge_color(COLORS._main_icon_light, COLORS._main_icon, 0.25);
|
||||
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, _x0, _y, _x1 - _x0, hg, cc, 1);
|
||||
|
||||
if(sc_nodes.active) {
|
||||
if(DOUBLE_CLICK)
|
||||
PANEL_PREVIEW.setNodePreview(node);
|
||||
else if(mouse_press(mb_left)) {
|
||||
if(isGroup)
|
||||
node_collapse[? node.node_id] = !node_collapse[? node.node_id];
|
||||
if(!PANEL_INSPECTOR.locked)
|
||||
PANEL_INSPECTOR.inspecting = node;
|
||||
ds_list_clear(PANEL_GRAPH.nodes_select_list);
|
||||
PANEL_GRAPH.node_focus = node;
|
||||
}
|
||||
}
|
||||
} else
|
||||
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, _x0, _y, _x1 - _x0, hg, COLORS._main_icon_light, 1);
|
||||
|
||||
var bw = ui(24);
|
||||
var bh = ui(24);
|
||||
var bx = _x1 - ui(4) - bw;
|
||||
var by = _y + (hg - bh) / 2;
|
||||
|
||||
if(buttonInstant(THEME.button_hide, bx, by, bw, bh, _m, sc_nodes.active, sc_nodes.hover, "Go to node", THEME.node_goto,, COLORS._main_icon, 0.75, 0.75) == 2)
|
||||
graphFocusNode(node);
|
||||
bx -= ui(32);
|
||||
|
||||
var _n = ALL_NODES[? instanceof(node)];
|
||||
var spr = _n.spr;
|
||||
draw_sprite_ui(spr, 1, _x0 + ui(4 + 16), _y + hg / 2, 0.5, 0.5, 0, c_white, 0.75);
|
||||
var cc = COLORS._main_text;
|
||||
draw_set_text(f_p1, fa_left, fa_center, cc);
|
||||
draw_text(_x0 + hg + ui(8) + (isGroup * ui(20)), _y + hg / 2, name);
|
||||
if(isGroup)
|
||||
draw_sprite_ui(THEME.arrow, node_collapse[? node.node_id] * 3, _x0 + hg + ui(16), _y + hg / 2,,,,, 0.75);
|
||||
|
||||
_y += hg + ui(4);
|
||||
_h += hg + ui(4);
|
||||
|
||||
if(isGroup && !node_collapse[? node.node_id]) {
|
||||
var hh = drawNodeList(node.nodes, _x0 + ui(16), _x1, _y, _m);
|
||||
_y += hh + ui(4);
|
||||
_h += hh + ui(4);
|
||||
}
|
||||
}
|
||||
|
||||
return _h;
|
||||
}
|
||||
|
||||
#region content
|
||||
sc_nodes = new scrollPane(w - ui(padding + padding), h - ui(padding + padding + 40), function(_y, _m) {
|
||||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
||||
var _h = drawNodeList(NODES, 0, sc_nodes.surface_w, _y, _m);
|
||||
return _h;
|
||||
})
|
||||
#endregion
|
||||
|
||||
function drawContent(panel) {
|
||||
var px = ui(padding);
|
||||
var py = ui(padding);
|
||||
var pw = w - ui(padding + padding);
|
||||
var ph = h - ui(padding + padding);
|
||||
|
||||
draw_sprite_stretched(THEME.ui_panel_bg, !in_dialog, px - ui(8), py - ui(8), pw + ui(16), ph + ui(16));
|
||||
tb_search.setActiveFocus(pFOCUS, pHOVER);
|
||||
tb_search.draw(px, py, pw, ui(32), search_string, [mx, my]);
|
||||
|
||||
sc_nodes.setActiveFocus(pFOCUS, pHOVER);
|
||||
sc_nodes.draw(px, py + ui(40), mx - px, my - (py + ui(40)));
|
||||
|
||||
//var bx = w - ui(32 + 16);
|
||||
//var by = title_height / 2 - ui(14);
|
||||
|
||||
//if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Create tunnel", THEME.tunnel, 1, c_white) == 2) {
|
||||
// nodeBuild("Node_Tunnel_In", build_x, build_y);
|
||||
// instance_destroy();
|
||||
//}
|
||||
}
|
||||
}
|
11
scripts/panel_nodes/panel_nodes.yy
Normal file
11
scripts/panel_nodes/panel_nodes.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "panel_nodes",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "graph",
|
||||
"path": "folders/panels/data/graph.yy",
|
||||
},
|
||||
}
|
|
@ -194,6 +194,8 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
}
|
||||
}
|
||||
|
||||
function onFocusBegin() { PANEL_PREVIEW = self; }
|
||||
|
||||
function dragCanvas() {
|
||||
if(canvas_dragging) {
|
||||
if(!MOUSE_WRAPPING) {
|
||||
|
@ -466,6 +468,13 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
|
||||
function drawPreviewOverlay() {
|
||||
right_menu_y = toolbar_height - ui(4);
|
||||
|
||||
if(PANEL_PREVIEW == self) {
|
||||
draw_set_text(f_p0, fa_right, fa_top, COLORS._main_text_accent);
|
||||
draw_text(w - ui(8), right_menu_y, "Active");
|
||||
right_menu_y += string_height("l");
|
||||
}
|
||||
|
||||
draw_set_text(f_p0, fa_right, fa_top, fps >= ANIMATOR.framerate? COLORS._main_text_sub : COLORS._main_value_negative);
|
||||
draw_text(w - ui(8), right_menu_y, "fps " + string(fps));
|
||||
right_menu_y += string_height("l");
|
||||
|
@ -713,11 +722,13 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
draw_set_color(COLORS._main_text_sub);
|
||||
draw_text(tx, cy + ch / 2, "(" + string(color_get_alpha(sample_color)) + ")");
|
||||
}
|
||||
|
||||
if(sample_x != noone) {
|
||||
draw_set_text(f_p0, fa_right, fa_center, COLORS._main_text_sub);
|
||||
draw_text(w - ui(10), cy + ch / 2, "[" + string(sample_x) + ", " + string(sample_y) + "]");
|
||||
}
|
||||
|
||||
if(pHOVER) {
|
||||
draw_set_text(f_p0, fa_right, fa_center, COLORS._main_text_sub);
|
||||
var mpx = floor((mx - canvas_x) / canvas_s);
|
||||
var mpy = floor((my - canvas_y) / canvas_s);
|
||||
draw_text(w - ui(10), toolbar_height / 2 - ui(4), "[" + string(mpx) + ", " + string(mpy) + "]");
|
||||
}
|
||||
|
||||
draw_set_color(COLORS.panel_toolbar_fill);
|
||||
|
@ -824,7 +835,7 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
mouse_on_preview = pHOVER && point_in_rectangle(mx, my, 0, toolbar_height, w, h - toolbar_height);
|
||||
|
||||
draw_clear(COLORS.panel_bg_clear);
|
||||
if(canvas_bg == -1 && canvas_s >= 1)
|
||||
if(canvas_bg == -1 && canvas_s >= 0.1)
|
||||
draw_sprite_tiled_ext(s_transparent, 0, canvas_x, canvas_y, canvas_s, canvas_s, c_white, 0.5);
|
||||
else
|
||||
draw_clear(canvas_bg);
|
||||
|
@ -850,8 +861,8 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
menuCall(,, [
|
||||
menuItem(get_text("panel_graph_preview_window", "Send to preview window"), function() { previewWindow(getNodePreview()); }, noone, ["Preview", "Preview window"]),
|
||||
-1,
|
||||
menuItem(get_text("panel_preview_save", "Save current preview as") + "...", function() { PANEL_PREVIEW.saveCurrentFrame(); }),
|
||||
menuItem(get_text("panel_preview_save_all", "Save all current previews as") + "...", function() { PANEL_PREVIEW.saveAllCurrentFrames(); }),
|
||||
menuItem(get_text("panel_preview_save", "Save current preview as") + "...", function() { saveCurrentFrame(); }),
|
||||
menuItem(get_text("panel_preview_save_all", "Save all current previews as") + "...", function() { saveAllCurrentFrames(); }),
|
||||
-1,
|
||||
menuItem(get_text("panel_preview_copy_color", "Copy color [") + string(sample_color) + "]", function() { clipboard_set_text(sample_color); }),
|
||||
menuItem(get_text("panel_preview_copy_color", "Copy hex [") + string(color_get_hex(sample_color)) + "]", function() { clipboard_set_text(color_get_hex(sample_color)); }),
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
function Panel_Tunnels() : PanelContent() constructor {
|
||||
#region data
|
||||
title = "Tunnels";
|
||||
showHeader = false;
|
||||
|
||||
w = ui(320);
|
||||
h = ui(480);
|
||||
|
@ -14,7 +15,6 @@ function Panel_Tunnels() : PanelContent() constructor {
|
|||
tunnel_ins = [];
|
||||
tunnel_select = noone;
|
||||
tunnel_hover = noone;
|
||||
showHeader = false;
|
||||
|
||||
function scanNodes() {
|
||||
var amo = ds_map_size(NODE_MAP);
|
||||
|
@ -62,11 +62,11 @@ function Panel_Tunnels() : PanelContent() constructor {
|
|||
function onResize() {
|
||||
PANEL_PADDING
|
||||
|
||||
sc_tunnel.resize(w - ui(padding + padding), h - ui(title_height + padding));
|
||||
sc_tunnel.resize(w - ui(padding + padding), h - ui(title_height + padding + 40));
|
||||
}
|
||||
|
||||
#region content
|
||||
sc_tunnel = new scrollPane(w - ui(padding + padding), h - ui(title_height + padding), function(_y, _m) {
|
||||
sc_tunnel = new scrollPane(w - ui(padding + padding), h - ui(title_height + padding + 40), function(_y, _m) {
|
||||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
||||
var _h = 0;
|
||||
var ww = sc_tunnel.surface_w;
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
function Panel_Workspace() : PanelContent() constructor {
|
||||
workspaces = [];
|
||||
w = ui(480);
|
||||
h = ui(96);
|
||||
h = ui(40);
|
||||
|
||||
scroll = 0;
|
||||
scroll_to = 0;
|
||||
scroll_max = 0;
|
||||
hori = false;
|
||||
|
||||
function refreshContent() {
|
||||
workspaces = [];
|
||||
|
@ -14,13 +19,20 @@ function Panel_Workspace() : PanelContent() constructor {
|
|||
}
|
||||
refreshContent();
|
||||
|
||||
function onFocusBegin() { refreshContent(); }
|
||||
|
||||
function drawContent(panel) {
|
||||
draw_clear(COLORS.panel_bg_clear);
|
||||
|
||||
var hori = w > h;
|
||||
var _hori = hori;
|
||||
hori = w > h;
|
||||
|
||||
var x0 = ui(6), x1;
|
||||
var y0 = ui(6), y1;
|
||||
if(hori != _hori) scroll_to = 0;
|
||||
|
||||
var x0 = hori? ui(6) + scroll : ui(6), x1;
|
||||
var y0 = hori? ui(6) : ui(6) + scroll, y1;
|
||||
var ww = 0;
|
||||
var hh = 0;
|
||||
|
||||
draw_set_text(f_p1, hori? fa_left : fa_center, fa_top, COLORS._main_text_sub);
|
||||
|
||||
|
@ -44,8 +56,29 @@ function Panel_Workspace() : PanelContent() constructor {
|
|||
draw_set_color(PREF_MAP[? "panel_layout_file"] == workspaces[i]? COLORS._main_text : COLORS._main_text_sub)
|
||||
draw_text_add(hori? x0 + ui(8) : (x0 + x1) / 2, y0 + ui(4), workspaces[i]);
|
||||
|
||||
if(hori) x0 += tw + ui(4);
|
||||
else y0 += th + ui(4);
|
||||
if(hori) {
|
||||
x0 += tw + ui(4);
|
||||
ww += tw + ui(4);
|
||||
} else {
|
||||
y0 += th + ui(4);
|
||||
hh += th + ui(4);
|
||||
}
|
||||
}
|
||||
|
||||
scroll = lerp_float(scroll, scroll_to, 5);
|
||||
|
||||
if(hori) {
|
||||
scroll_max = max(ww - w + ui(16), 0);
|
||||
if(pHOVER) {
|
||||
if(mouse_wheel_down()) scroll_to = clamp(scroll_to - ui(128), -scroll_max, 0);
|
||||
if(mouse_wheel_up()) scroll_to = clamp(scroll_to + ui(128), -scroll_max, 0);
|
||||
}
|
||||
} else {
|
||||
scroll_max = max(hh - h + ui(16), 0);
|
||||
if(pHOVER) {
|
||||
if(mouse_wheel_down()) scroll_to = clamp(scroll_to - ui(32), -scroll_max, 0);
|
||||
if(mouse_wheel_up()) scroll_to = clamp(scroll_to + ui(32), -scroll_max, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,7 +30,6 @@
|
|||
PREF_MAP[? "default_surface_side"] = 32;
|
||||
|
||||
PREF_MAP[? "panel_layout_file"] = "Vertical";
|
||||
PREF_MAP[? "panel_collection"] = true;
|
||||
|
||||
PREF_MAP[? "inspector_line_break_width"] = 500;
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ function draw_surface_part_ext_safe(surface, _l, _t, _w, _h, _x, _y, _xs = 1, _y
|
|||
}
|
||||
|
||||
//check
|
||||
gml_pragma("forceinline");
|
||||
function is_surface(s) {
|
||||
if(is_undefined(s)) return false;
|
||||
if(is_array(s)) return false;
|
||||
|
@ -205,13 +206,13 @@ function __surface_array_serialize(arr) {
|
|||
|
||||
function surface_array_deserialize(arr, index = -1) {
|
||||
var _arr = json_try_parse(arr);
|
||||
return index == -1? __surface_array_deserialize(_arr, index) : __surface_array_deserialize(_arr[index]);
|
||||
return index == -1? __surface_array_deserialize(_arr) : __surface_array_deserialize(_arr[index]);
|
||||
}
|
||||
|
||||
function __surface_array_deserialize(arr) {
|
||||
if(!is_array(arr)) {
|
||||
var buff = buffer_base64_decode(arr.buffer);
|
||||
var buff = buffer_decompress(buff);
|
||||
buff = buffer_decompress(buff);
|
||||
return surface_create_from_buffer(arr.width, arr.height, buff);
|
||||
}
|
||||
|
||||
|
|
|
@ -362,6 +362,12 @@ function textArea(_input, _onModify, _extras = noone) : textInput(_input, _onMod
|
|||
_text = string_real(_text);
|
||||
_current_text = _text;
|
||||
|
||||
//if(format == TEXT_AREA_FORMAT.code) {
|
||||
// print("=== TEXT BOX ===");
|
||||
// print(_text);
|
||||
// print(_current_text);
|
||||
//}
|
||||
|
||||
if(extras && instanceof(extras) == "buttonClass") {
|
||||
extras.hover = hover;
|
||||
extras.active = active;
|
||||
|
|
|
@ -43,7 +43,7 @@ void main() {
|
|||
for (int y = -1; y <= 1; y++) {
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x),float(y));
|
||||
vec2 point = random2(i_st + neighbor);
|
||||
vec2 point = random2(mod(i_st + neighbor, scale));
|
||||
point = 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
|
|
|
@ -57,11 +57,9 @@ vec2 cellular(vec2 P) {
|
|||
return sqrt(d1.xy);
|
||||
}
|
||||
|
||||
float color(vec2 xy) { return cellular(xy).y * 2.0 - 1.0; }
|
||||
|
||||
void main() {
|
||||
vec2 p = (v_vTexcoord - position / dimension) * scale * 2.0 - 1.0;
|
||||
float n = 0.5 + 0.5 * color(p);
|
||||
float n = cellular(p).y;
|
||||
|
||||
gl_FragColor = vec4(vec3(n), 1.);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ uniform float radiusShatter;
|
|||
uniform int pattern;
|
||||
|
||||
#define TAU 6.283185307179586
|
||||
#define PI 3.14159265359
|
||||
|
||||
vec2 random2( vec2 p ) {
|
||||
return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453);
|
||||
|
@ -40,8 +41,8 @@ void main() {
|
|||
for (int y = -1; y <= 1; y++) {
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x), float(y));
|
||||
vec2 point = random2(i_st + neighbor);
|
||||
point += 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
vec2 point = random2(mod(i_st + neighbor, scale));
|
||||
point += 0.5 + 0.5 * sin(time + TAU * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
float dist = length(_diff);
|
||||
|
@ -58,11 +59,11 @@ void main() {
|
|||
for(int y = -2; y <= 2; y++)
|
||||
for(int x = -2; x <= 2; x++) {
|
||||
vec2 g = mg + vec2(float(x), float(y));
|
||||
vec2 point = random2(i_st + g);
|
||||
point += 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
vec2 point = random2(mod(i_st + g, scale));
|
||||
point += 0.5 + 0.5 * sin(time + TAU * point);
|
||||
|
||||
vec2 r = g + point - f_st;
|
||||
if(dot(mr - r, mr - r) > .0001)
|
||||
if(dot(mr - r, mr - r) > .000001)
|
||||
md = min( md, dot( 0.5 * (mr + r), normalize(r - mr)) );
|
||||
}
|
||||
} else if(pattern == 1) {
|
||||
|
|
|
@ -41,7 +41,7 @@ void main() {
|
|||
for (int y = -1; y <= 1; y++) {
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x),float(y));
|
||||
vec2 point = random2(i_st + neighbor);
|
||||
vec2 point = random2(mod(i_st + neighbor, scale));
|
||||
point = 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//
|
||||
// Simple passthrough fragment shader
|
||||
//
|
||||
#extension GL_OES_standard_derivatives : require
|
||||
|
||||
varying vec2 v_vTexcoord;
|
||||
varying vec4 v_vColour;
|
||||
|
||||
|
@ -142,7 +141,7 @@ void main() {
|
|||
else if(aa == 0)
|
||||
color = step(d, 0.0);
|
||||
else
|
||||
color = smoothstep(0.05, 0., d);
|
||||
color = smoothstep(0.02, -0.02, d);
|
||||
|
||||
gl_FragColor = mix(bgColor, v_vColour, color);
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
74
sprites/s_node_array_zip/s_node_array_zip.yy
Normal file
74
sprites/s_node_array_zip/s_node_array_zip.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_array_zip",
|
||||
"bbox_bottom": 61,
|
||||
"bbox_left": 0,
|
||||
"bbox_right": 63,
|
||||
"bbox_top": 2,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"48ee54bd-54d6-4f20-9848-4d25dbef1511",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"fa3b4a6e-2119-408a-b47a-d44e1d4ac7ab","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "array",
|
||||
"path": "folders/nodes/icons/value/array.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_node_array_zip",
|
||||
"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":"48ee54bd-54d6-4f20-9848-4d25dbef1511","path":"sprites/s_node_array_zip/s_node_array_zip.yy",},},},"Disabled":false,"id":"7d176fe9-021c-4561-898b-2d3669881999","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,
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 1 KiB |
Binary file not shown.
After Width: | Height: | Size: 1 KiB |
74
sprites/s_node_text_length/s_node_text_length.yy
Normal file
74
sprites/s_node_text_length/s_node_text_length.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_text_length",
|
||||
"bbox_bottom": 53,
|
||||
"bbox_left": 3,
|
||||
"bbox_right": 61,
|
||||
"bbox_top": 15,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6835fcb1-d198-40d6-be02-a700ad634332",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3a81dea0-6b42-4634-a523-7044abdb7446","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "texts",
|
||||
"path": "folders/nodes/icons/value/texts.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_node_text_length",
|
||||
"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":"6835fcb1-d198-40d6-be02-a700ad634332","path":"sprites/s_node_text_length/s_node_text_length.yy",},},},"Disabled":false,"id":"2daca3b0-8e99-4cf9-a7d7-a44846386b1d","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