1.0.0 update

This commit is contained in:
Tanasart 2022-12-16 15:18:09 +07:00
parent 119095a461
commit 9c5e39a11f
386 changed files with 4506 additions and 1834 deletions

View file

@ -3,55 +3,59 @@
"resourceVersion": "1.6", "resourceVersion": "1.6",
"name": "Pixels Composer", "name": "Pixels Composer",
"resources": [ "resources": [
{"id":{"name":"s_node_corner","path":"sprites/s_node_corner/s_node_corner.yy",},"order":88,}, {"id":{"name":"s_node_corner","path":"sprites/s_node_corner/s_node_corner.yy",},"order":14,},
{"id":{"name":"panel_function","path":"scripts/panel_function/panel_function.yy",},"order":5,}, {"id":{"name":"panel_function","path":"scripts/panel_function/panel_function.yy",},"order":5,},
{"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},"order":33,}, {"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},"order":33,},
{"id":{"name":"sh_perlin","path":"shaders/sh_perlin/sh_perlin.yy",},"order":1,}, {"id":{"name":"sh_perlin","path":"shaders/sh_perlin/sh_perlin.yy",},"order":1,},
{"id":{"name":"sh_normal_light","path":"shaders/sh_normal_light/sh_normal_light.yy",},"order":0,}, {"id":{"name":"sh_normal_light","path":"shaders/sh_normal_light/sh_normal_light.yy",},"order":0,},
{"id":{"name":"sh_scale3x","path":"shaders/sh_scale3x/sh_scale3x.yy",},"order":33,}, {"id":{"name":"sh_scale3x","path":"shaders/sh_scale3x/sh_scale3x.yy",},"order":33,},
{"id":{"name":"surface_modify","path":"scripts/surface_modify/surface_modify.yy",},"order":2,}, {"id":{"name":"surface_functions","path":"scripts/surface_functions/surface_functions.yy",},"order":2,},
{"id":{"name":"s_node_normal","path":"sprites/s_node_normal/s_node_normal.yy",},"order":19,}, {"id":{"name":"s_node_normal","path":"sprites/s_node_normal/s_node_normal.yy",},"order":28,},
{"id":{"name":"buffer_surface","path":"scripts/buffer_surface/buffer_surface.yy",},"order":3,}, {"id":{"name":"buffer_surface","path":"scripts/buffer_surface/buffer_surface.yy",},"order":3,},
{"id":{"name":"node_pixel_sort","path":"scripts/node_pixel_sort/node_pixel_sort.yy",},"order":46,},
{"id":{"name":"sh_dither","path":"shaders/sh_dither/sh_dither.yy",},"order":32,}, {"id":{"name":"sh_dither","path":"shaders/sh_dither/sh_dither.yy",},"order":32,},
{"id":{"name":"panel_data","path":"scripts/panel_data/panel_data.yy",},"order":0,}, {"id":{"name":"panel_data","path":"scripts/panel_data/panel_data.yy",},"order":0,},
{"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,}, {"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,},
{"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,}, {"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,},
{"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":7,}, {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":5,},
{"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":2,}, {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":2,},
{"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,}, {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,},
{"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},"order":79,}, {"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},"order":1,},
{"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},"order":40,}, {"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},"order":40,},
{"id":{"name":"s_node_color","path":"sprites/s_node_color/s_node_color.yy",},"order":17,}, {"id":{"name":"s_node_color","path":"sprites/s_node_color/s_node_color.yy",},"order":0,},
{"id":{"name":"s_node_image_gif","path":"sprites/s_node_image_gif/s_node_image_gif.yy",},"order":69,}, {"id":{"name":"s_node_image_gif","path":"sprites/s_node_image_gif/s_node_image_gif.yy",},"order":7,},
{"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":7,}, {"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":7,},
{"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":114,}, {"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":3,},
{"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":45,}, {"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":6,},
{"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":36,}, {"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":36,},
{"id":{"name":"node_dither","path":"scripts/node_dither/node_dither.yy",},"order":11,}, {"id":{"name":"node_dither","path":"scripts/node_dither/node_dither.yy",},"order":11,},
{"id":{"name":"sh_perlin_smear","path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",},"order":7,}, {"id":{"name":"sh_perlin_smear","path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",},"order":7,},
{"id":{"name":"sh_corner","path":"shaders/sh_corner/sh_corner.yy",},"order":23,}, {"id":{"name":"sh_corner","path":"shaders/sh_corner/sh_corner.yy",},"order":23,},
{"id":{"name":"node_array","path":"scripts/node_array/node_array.yy",},"order":3,}, {"id":{"name":"node_array","path":"scripts/node_array/node_array.yy",},"order":8,},
{"id":{"name":"sh_colorize","path":"shaders/sh_colorize/sh_colorize.yy",},"order":5,}, {"id":{"name":"sh_colorize","path":"shaders/sh_colorize/sh_colorize.yy",},"order":5,},
{"id":{"name":"s_node_particle_effector","path":"sprites/s_node_particle_effector/s_node_particle_effector.yy",},"order":52,}, {"id":{"name":"node_string","path":"scripts/node_string/node_string.yy",},"order":13,},
{"id":{"name":"s_node_particle_effector","path":"sprites/s_node_particle_effector/s_node_particle_effector.yy",},"order":13,},
{"id":{"name":"s_node_loop_input","path":"sprites/s_node_loop_input/s_node_loop_input.yy",},"order":14,},
{"id":{"name":"perlin_noise","path":"scripts/perlin_noise/perlin_noise.yy",},"order":5,}, {"id":{"name":"perlin_noise","path":"scripts/perlin_noise/perlin_noise.yy",},"order":5,},
{"id":{"name":"node_functions","path":"scripts/node_functions/node_functions.yy",},"order":2,}, {"id":{"name":"node_functions","path":"scripts/node_functions/node_functions.yy",},"order":2,},
{"id":{"name":"node_math","path":"scripts/node_math/node_math.yy",},"order":6,}, {"id":{"name":"node_math","path":"scripts/node_math/node_math.yy",},"order":1,},
{"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},"order":2,}, {"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},"order":2,},
{"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},"order":3,}, {"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},"order":3,},
{"id":{"name":"s_node_colorize","path":"sprites/s_node_colorize/s_node_colorize.yy",},"order":90,}, {"id":{"name":"s_node_colorize","path":"sprites/s_node_colorize/s_node_colorize.yy",},"order":13,},
{"id":{"name":"panel_preview","path":"scripts/panel_preview/panel_preview.yy",},"order":3,}, {"id":{"name":"panel_preview","path":"scripts/panel_preview/panel_preview.yy",},"order":3,},
{"id":{"name":"s_node_sepearte_shape","path":"sprites/s_node_sepearte_shape/s_node_sepearte_shape.yy",},"order":42,}, {"id":{"name":"s_node_sepearte_shape","path":"sprites/s_node_sepearte_shape/s_node_sepearte_shape.yy",},"order":33,},
{"id":{"name":"s_node_polar","path":"sprites/s_node_polar/s_node_polar.yy",},"order":49,}, {"id":{"name":"s_node_polar","path":"sprites/s_node_polar/s_node_polar.yy",},"order":5,},
{"id":{"name":"o_dialog_notifications","path":"objects/o_dialog_notifications/o_dialog_notifications.yy",},"order":28,}, {"id":{"name":"o_dialog_notifications","path":"objects/o_dialog_notifications/o_dialog_notifications.yy",},"order":28,},
{"id":{"name":"s_node_alpha_grey","path":"sprites/s_node_alpha_grey/s_node_alpha_grey.yy",},"order":110,}, {"id":{"name":"s_node_alpha_grey","path":"sprites/s_node_alpha_grey/s_node_alpha_grey.yy",},"order":2,},
{"id":{"name":"node_blend","path":"scripts/node_blend/node_blend.yy",},"order":13,}, {"id":{"name":"node_blend","path":"scripts/node_blend/node_blend.yy",},"order":13,},
{"id":{"name":"s_node_level","path":"sprites/s_node_level/s_node_level.yy",},"order":64,}, {"id":{"name":"s_node_level","path":"sprites/s_node_level/s_node_level.yy",},"order":26,},
{"id":{"name":"node_scatter","path":"scripts/node_scatter/node_scatter.yy",},"order":3,}, {"id":{"name":"node_scatter","path":"scripts/node_scatter/node_scatter.yy",},"order":3,},
{"id":{"name":"s_node_bloom","path":"sprites/s_node_bloom/s_node_bloom.yy",},"order":104,}, {"id":{"name":"s_node_bloom","path":"sprites/s_node_bloom/s_node_bloom.yy",},"order":6,},
{"id":{"name":"node_image","path":"scripts/node_image/node_image.yy",},"order":0,}, {"id":{"name":"node_image","path":"scripts/node_image/node_image.yy",},"order":0,},
{"id":{"name":"s_node_vfx_render","path":"sprites/s_node_vfx_render/s_node_vfx_render.yy",},"order":1,},
{"id":{"name":"sh_cell_noise","path":"shaders/sh_cell_noise/sh_cell_noise.yy",},"order":0,}, {"id":{"name":"sh_cell_noise","path":"shaders/sh_cell_noise/sh_cell_noise.yy",},"order":0,},
{"id":{"name":"sh_blend_max","path":"shaders/sh_blend_max/sh_blend_max.yy",},"order":8,}, {"id":{"name":"sh_blend_max","path":"shaders/sh_blend_max/sh_blend_max.yy",},"order":8,},
{"id":{"name":"s_node_color_out","path":"sprites/s_node_color_out/s_node_color_out.yy",},"order":93,}, {"id":{"name":"s_node_color_out","path":"sprites/s_node_color_out/s_node_color_out.yy",},"order":5,},
{"id":{"name":"_3D","path":"scripts/_3D/_3D.yy",},"order":6,}, {"id":{"name":"_3D","path":"scripts/_3D/_3D.yy",},"order":6,},
{"id":{"name":"node_outline","path":"scripts/node_outline/node_outline.yy",},"order":0,}, {"id":{"name":"node_outline","path":"scripts/node_outline/node_outline.yy",},"order":0,},
{"id":{"name":"math_function","path":"scripts/math_function/math_function.yy",},"order":7,}, {"id":{"name":"math_function","path":"scripts/math_function/math_function.yy",},"order":7,},
@ -59,41 +63,42 @@
{"id":{"name":"o_dialog_exit","path":"objects/o_dialog_exit/o_dialog_exit.yy",},"order":27,}, {"id":{"name":"o_dialog_exit","path":"objects/o_dialog_exit/o_dialog_exit.yy",},"order":27,},
{"id":{"name":"node_gradient_points","path":"scripts/node_gradient_points/node_gradient_points.yy",},"order":20,}, {"id":{"name":"node_gradient_points","path":"scripts/node_gradient_points/node_gradient_points.yy",},"order":20,},
{"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,}, {"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,},
{"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":9,},
{"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,}, {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,},
{"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,},
{"id":{"name":"sh_cell_noise_edge","path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},"order":5,}, {"id":{"name":"sh_cell_noise_edge","path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},"order":5,},
{"id":{"name":"node_stripe","path":"scripts/node_stripe/node_stripe.yy",},"order":11,}, {"id":{"name":"node_stripe","path":"scripts/node_stripe/node_stripe.yy",},"order":11,},
{"id":{"name":"sh_texture_atlas","path":"shaders/sh_texture_atlas/sh_texture_atlas.yy",},"order":0,}, {"id":{"name":"sh_texture_atlas","path":"shaders/sh_texture_atlas/sh_texture_atlas.yy",},"order":0,},
{"id":{"name":"s_node_displace","path":"sprites/s_node_displace/s_node_displace.yy",},"order":83,}, {"id":{"name":"s_node_displace","path":"sprites/s_node_displace/s_node_displace.yy",},"order":18,},
{"id":{"name":"sh_polar","path":"shaders/sh_polar/sh_polar.yy",},"order":1,}, {"id":{"name":"sh_polar","path":"shaders/sh_polar/sh_polar.yy",},"order":1,},
{"id":{"name":"s_node_warp_mesh","path":"sprites/s_node_warp_mesh/s_node_warp_mesh.yy",},"order":22,}, {"id":{"name":"s_node_warp_mesh","path":"sprites/s_node_warp_mesh/s_node_warp_mesh.yy",},"order":10,},
{"id":{"name":"sh_pixel_cloud","path":"shaders/sh_pixel_cloud/sh_pixel_cloud.yy",},"order":13,}, {"id":{"name":"sh_pixel_cloud","path":"shaders/sh_pixel_cloud/sh_pixel_cloud.yy",},"order":13,},
{"id":{"name":"node_iterate","path":"scripts/node_iterate/node_iterate.yy",},"order":1,}, {"id":{"name":"node_iterate","path":"scripts/node_iterate/node_iterate.yy",},"order":1,},
{"id":{"name":"sh_de_stray","path":"shaders/sh_de_stray/sh_de_stray.yy",},"order":16,}, {"id":{"name":"sh_de_stray","path":"shaders/sh_de_stray/sh_de_stray.yy",},"order":16,},
{"id":{"name":"sh_chromatic_aberration","path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",},"order":35,}, {"id":{"name":"sh_chromatic_aberration","path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",},"order":35,},
{"id":{"name":"sh_cell_noise_round","path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",},"order":9,}, {"id":{"name":"sh_cell_noise_round","path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",},"order":9,},
{"id":{"name":"event_recorder","path":"scripts/event_recorder/event_recorder.yy",},"order":3,}, {"id":{"name":"event_recorder","path":"scripts/event_recorder/event_recorder.yy",},"order":3,},
{"id":{"name":"s_node_noise_cell","path":"sprites/s_node_noise_cell/s_node_noise_cell.yy",},"order":58,}, {"id":{"name":"s_node_noise_cell","path":"sprites/s_node_noise_cell/s_node_noise_cell.yy",},"order":10,},
{"id":{"name":"node_colorize","path":"scripts/node_colorize/node_colorize.yy",},"order":9,}, {"id":{"name":"node_colorize","path":"scripts/node_colorize/node_colorize.yy",},"order":9,},
{"id":{"name":"s_node_color_adjust","path":"sprites/s_node_color_adjust/s_node_color_adjust.yy",},"order":97,}, {"id":{"name":"s_node_color_adjust","path":"sprites/s_node_color_adjust/s_node_color_adjust.yy",},"order":1,},
{"id":{"name":"sh_channel_B","path":"shaders/sh_channel_B/sh_channel_B.yy",},"order":13,}, {"id":{"name":"sh_channel_B","path":"shaders/sh_channel_B/sh_channel_B.yy",},"order":13,},
{"id":{"name":"s_node_2d_light","path":"sprites/s_node_2d_light/s_node_2d_light.yy",},"order":117,}, {"id":{"name":"s_node_2d_light","path":"sprites/s_node_2d_light/s_node_2d_light.yy",},"order":0,},
{"id":{"name":"s_node_trail","path":"sprites/s_node_trail/s_node_trail.yy",},"order":31,}, {"id":{"name":"s_node_trail","path":"sprites/s_node_trail/s_node_trail.yy",},"order":38,},
{"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},"order":27,}, {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},"order":27,},
{"id":{"name":"string_eval","path":"scripts/string_eval/string_eval.yy",},"order":0,}, {"id":{"name":"string_eval","path":"scripts/string_eval/string_eval.yy",},"order":0,},
{"id":{"name":"globals","path":"scripts/globals/globals.yy",},"order":1,}, {"id":{"name":"globals","path":"scripts/globals/globals.yy",},"order":1,},
{"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},"order":123,}, {"id":{"name":"s_node_noise_perlin","path":"sprites/s_node_noise_perlin/s_node_noise_perlin.yy",},"order":11,},
{"id":{"name":"s_node_noise_perlin","path":"sprites/s_node_noise_perlin/s_node_noise_perlin.yy",},"order":57,}, {"id":{"name":"s_node_dithering","path":"sprites/s_node_dithering/s_node_dithering.yy",},"order":19,},
{"id":{"name":"s_node_dithering","path":"sprites/s_node_dithering/s_node_dithering.yy",},"order":82,},
{"id":{"name":"node_normal_light","path":"scripts/node_normal_light/node_normal_light.yy",},"order":0,}, {"id":{"name":"node_normal_light","path":"scripts/node_normal_light/node_normal_light.yy",},"order":0,},
{"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,}, {"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,},
{"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,}, {"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,},
{"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,}, {"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,},
{"id":{"name":"node_VFX_group","path":"scripts/node_VFX_group/node_VFX_group.yy",},"order":6,}, {"id":{"name":"node_VFX_group","path":"scripts/node_VFX_group/node_VFX_group.yy",},"order":6,},
{"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":50,}, {"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":8,},
{"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":30,},
{"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,}, {"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,},
{"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},"order":89,}, {"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},"order":1,},
{"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},"order":86,}, {"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},"order":2,},
{"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},"order":3,}, {"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},"order":3,},
{"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},"order":2,}, {"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},"order":2,},
{"id":{"name":"sh_blend_multiply","path":"shaders/sh_blend_multiply/sh_blend_multiply.yy",},"order":0,}, {"id":{"name":"sh_blend_multiply","path":"shaders/sh_blend_multiply/sh_blend_multiply.yy",},"order":0,},
@ -102,66 +107,70 @@
{"id":{"name":"font_loader","path":"scripts/font_loader/font_loader.yy",},"order":8,}, {"id":{"name":"font_loader","path":"scripts/font_loader/font_loader.yy",},"order":8,},
{"id":{"name":"point_rotate","path":"scripts/point_rotate/point_rotate.yy",},"order":1,}, {"id":{"name":"point_rotate","path":"scripts/point_rotate/point_rotate.yy",},"order":1,},
{"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,}, {"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,},
{"id":{"name":"s_node_vec4","path":"sprites/s_node_vec4/s_node_vec4.yy",},"order":24,}, {"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":3,},
{"id":{"name":"s_node_vec4","path":"sprites/s_node_vec4/s_node_vec4.yy",},"order":8,},
{"id":{"name":"buttonGroup","path":"scripts/buttonGroup/buttonGroup.yy",},"order":5,}, {"id":{"name":"buttonGroup","path":"scripts/buttonGroup/buttonGroup.yy",},"order":5,},
{"id":{"name":"s_node_image_sheet","path":"sprites/s_node_image_sheet/s_node_image_sheet.yy",},"order":67,}, {"id":{"name":"s_node_image_sheet","path":"sprites/s_node_image_sheet/s_node_image_sheet.yy",},"order":10,},
{"id":{"name":"o_dialog_scrollbox","path":"objects/o_dialog_scrollbox/o_dialog_scrollbox.yy",},"order":2,}, {"id":{"name":"o_dialog_scrollbox","path":"objects/o_dialog_scrollbox/o_dialog_scrollbox.yy",},"order":2,},
{"id":{"name":"s_node_palette","path":"sprites/s_node_palette/s_node_palette.yy",},"order":54,}, {"id":{"name":"s_node_palette","path":"sprites/s_node_palette/s_node_palette.yy",},"order":9,},
{"id":{"name":"curve_damping_function","path":"scripts/curve_damping_function/curve_damping_function.yy",},"order":2,}, {"id":{"name":"curve_damping_function","path":"scripts/curve_damping_function/curve_damping_function.yy",},"order":2,},
{"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":24,}, {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":24,},
{"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,},
{"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,}, {"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,},
{"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,}, {"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,},
{"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":18,}, {"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":18,},
{"id":{"name":"s_node_chromatic_abarration","path":"sprites/s_node_chromatic_abarration/s_node_chromatic_abarration.yy",},"order":1,}, {"id":{"name":"s_node_chromatic_abarration","path":"sprites/s_node_chromatic_abarration/s_node_chromatic_abarration.yy",},"order":12,},
{"id":{"name":"node_blur_directional","path":"scripts/node_blur_directional/node_blur_directional.yy",},"order":26,}, {"id":{"name":"node_blur_directional","path":"scripts/node_blur_directional/node_blur_directional.yy",},"order":26,},
{"id":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"order":5,}, {"id":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"order":4,},
{"id":{"name":"o_dialog_splash","path":"objects/o_dialog_splash/o_dialog_splash.yy",},"order":19,}, {"id":{"name":"o_dialog_splash","path":"objects/o_dialog_splash/o_dialog_splash.yy",},"order":19,},
{"id":{"name":"json_file","path":"scripts/json_file/json_file.yy",},"order":4,}, {"id":{"name":"json_file","path":"scripts/json_file/json_file.yy",},"order":4,},
{"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":0,}, {"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":0,},
{"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,}, {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,},
{"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":15,}, {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":7,},
{"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":1,}, {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":1,},
{"id":{"name":"sh_blend_subtract_alpha","path":"shaders/sh_blend_subtract_alpha/sh_blend_subtract_alpha.yy",},"order":14,}, {"id":{"name":"sh_blend_subtract_alpha","path":"shaders/sh_blend_subtract_alpha/sh_blend_subtract_alpha.yy",},"order":14,},
{"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},"order":1,}, {"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},"order":1,},
{"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},"order":85,}, {"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},"order":1,},
{"id":{"name":"sh_blend_normal","path":"shaders/sh_blend_normal/sh_blend_normal.yy",},"order":1,}, {"id":{"name":"sh_blend_normal","path":"shaders/sh_blend_normal/sh_blend_normal.yy",},"order":1,},
{"id":{"name":"node_feedback_output","path":"scripts/node_feedback_output/node_feedback_output.yy",},"order":2,},
{"id":{"name":"sh_blur_directional","path":"shaders/sh_blur_directional/sh_blur_directional.yy",},"order":15,}, {"id":{"name":"sh_blur_directional","path":"shaders/sh_blur_directional/sh_blur_directional.yy",},"order":15,},
{"id":{"name":"node_processor","path":"scripts/node_processor/node_processor.yy",},"order":8,}, {"id":{"name":"node_processor","path":"scripts/node_processor/node_processor.yy",},"order":8,},
{"id":{"name":"animation_controller","path":"scripts/animation_controller/animation_controller.yy",},"order":1,}, {"id":{"name":"animation_controller","path":"scripts/animation_controller/animation_controller.yy",},"order":1,},
{"id":{"name":"s_node_shadow","path":"sprites/s_node_shadow/s_node_shadow.yy",},"order":41,}, {"id":{"name":"s_node_shadow","path":"sprites/s_node_shadow/s_node_shadow.yy",},"order":34,},
{"id":{"name":"sh_zigzag","path":"shaders/sh_zigzag/sh_zigzag.yy",},"order":11,}, {"id":{"name":"sh_zigzag","path":"shaders/sh_zigzag/sh_zigzag.yy",},"order":11,},
{"id":{"name":"sh_color_remove","path":"shaders/sh_color_remove/sh_color_remove.yy",},"order":26,}, {"id":{"name":"sh_color_remove","path":"shaders/sh_color_remove/sh_color_remove.yy",},"order":26,},
{"id":{"name":"s_node_blur","path":"sprites/s_node_blur/s_node_blur.yy",},"order":103,}, {"id":{"name":"s_node_blur","path":"sprites/s_node_blur/s_node_blur.yy",},"order":7,},
{"id":{"name":"textArea","path":"scripts/textArea/textArea.yy",},"order":20,}, {"id":{"name":"textArea","path":"scripts/textArea/textArea.yy",},"order":20,},
{"id":{"name":"s_node_gradient_4points","path":"sprites/s_node_gradient_4points/s_node_gradient_4points.yy",},"order":130,}, {"id":{"name":"s_node_gradient_4points","path":"sprites/s_node_gradient_4points/s_node_gradient_4points.yy",},"order":2,},
{"id":{"name":"s_node_gradient_out","path":"sprites/s_node_gradient_out/s_node_gradient_out.yy",},"order":76,}, {"id":{"name":"s_node_gradient_out","path":"sprites/s_node_gradient_out/s_node_gradient_out.yy",},"order":8,},
{"id":{"name":"s_node_vec3","path":"sprites/s_node_vec3/s_node_vec3.yy",},"order":25,}, {"id":{"name":"s_node_vec3","path":"sprites/s_node_vec3/s_node_vec3.yy",},"order":7,},
{"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":3,}, {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":3,},
{"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":17,}, {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":17,},
{"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,}, {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,},
{"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":65,}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":25,},
{"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":14,}, {"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":10,},
{"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},"order":14,}, {"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},"order":14,},
{"id":{"name":"sh_twirl","path":"shaders/sh_twirl/sh_twirl.yy",},"order":3,}, {"id":{"name":"sh_twirl","path":"shaders/sh_twirl/sh_twirl.yy",},"order":3,},
{"id":{"name":"s_node_shape","path":"sprites/s_node_shape/s_node_shape.yy",},"order":40,}, {"id":{"name":"s_node_shape","path":"sprites/s_node_shape/s_node_shape.yy",},"order":14,},
{"id":{"name":"string_formatting","path":"scripts/string_formatting/string_formatting.yy",},"order":7,}, {"id":{"name":"string_formatting","path":"scripts/string_formatting/string_formatting.yy",},"order":7,},
{"id":{"name":"node_level_selector","path":"scripts/node_level_selector/node_level_selector.yy",},"order":39,}, {"id":{"name":"node_level_selector","path":"scripts/node_level_selector/node_level_selector.yy",},"order":39,},
{"id":{"name":"node_posterize","path":"scripts/node_posterize/node_posterize.yy",},"order":10,}, {"id":{"name":"node_posterize","path":"scripts/node_posterize/node_posterize.yy",},"order":10,},
{"id":{"name":"o_dialog_image_array_edit","path":"objects/o_dialog_image_array_edit/o_dialog_image_array_edit.yy",},"order":0,}, {"id":{"name":"o_dialog_image_array_edit","path":"objects/o_dialog_image_array_edit/o_dialog_image_array_edit.yy",},"order":0,},
{"id":{"name":"s_ui_base_white","path":"sprites/s_ui_base_white/s_ui_base_white.yy",},"order":2,}, {"id":{"name":"s_ui_base_white","path":"sprites/s_ui_base_white/s_ui_base_white.yy",},"order":2,},
{"id":{"name":"s_node_array_range","path":"sprites/s_node_array_range/s_node_array_range.yy",},"order":14,},
{"id":{"name":"node_blur","path":"scripts/node_blur/node_blur.yy",},"order":16,}, {"id":{"name":"node_blur","path":"scripts/node_blur/node_blur.yy",},"order":16,},
{"id":{"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",},"order":4,}, {"id":{"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",},"order":5,},
{"id":{"name":"node_zigzag","path":"scripts/node_zigzag/node_zigzag.yy",},"order":12,}, {"id":{"name":"node_zigzag","path":"scripts/node_zigzag/node_zigzag.yy",},"order":12,},
{"id":{"name":"preset_data","path":"scripts/preset_data/preset_data.yy",},"order":7,}, {"id":{"name":"preset_data","path":"scripts/preset_data/preset_data.yy",},"order":7,},
{"id":{"name":"_f_h5","path":"fonts/_f_h5/_f_h5.yy",},"order":2,}, {"id":{"name":"_f_h5","path":"fonts/_f_h5/_f_h5.yy",},"order":2,},
{"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,}, {"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,},
{"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},"order":10,}, {"id":{"name":"node_string_split","path":"scripts/node_string_split/node_string_split.yy",},"order":14,},
{"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},"order":4,},
{"id":{"name":"load_palette","path":"scripts/load_palette/load_palette.yy",},"order":3,}, {"id":{"name":"load_palette","path":"scripts/load_palette/load_palette.yy",},"order":3,},
{"id":{"name":"sh_alpha_cutoff","path":"shaders/sh_alpha_cutoff/sh_alpha_cutoff.yy",},"order":25,}, {"id":{"name":"sh_alpha_cutoff","path":"shaders/sh_alpha_cutoff/sh_alpha_cutoff.yy",},"order":25,},
{"id":{"name":"checkbox","path":"scripts/checkbox/checkbox.yy",},"order":7,}, {"id":{"name":"checkbox","path":"scripts/checkbox/checkbox.yy",},"order":7,},
{"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},"order":53,}, {"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},"order":12,},
{"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},"order":92,}, {"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},"order":6,},
{"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,}, {"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,},
{"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,}, {"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,},
{"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,}, {"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,},
@ -172,16 +181,15 @@
{"id":{"name":"sh_seperate_shape_index","path":"shaders/sh_seperate_shape_index/sh_seperate_shape_index.yy",},"order":0,}, {"id":{"name":"sh_seperate_shape_index","path":"shaders/sh_seperate_shape_index/sh_seperate_shape_index.yy",},"order":0,},
{"id":{"name":"node_registry","path":"scripts/node_registry/node_registry.yy",},"order":5,}, {"id":{"name":"node_registry","path":"scripts/node_registry/node_registry.yy",},"order":5,},
{"id":{"name":"sh_checkerboard","path":"shaders/sh_checkerboard/sh_checkerboard.yy",},"order":12,}, {"id":{"name":"sh_checkerboard","path":"shaders/sh_checkerboard/sh_checkerboard.yy",},"order":12,},
{"id":{"name":"node_character","path":"scripts/node_character/node_character.yy",},"order":9,}, {"id":{"name":"node_unicode","path":"scripts/node_unicode/node_unicode.yy",},"order":3,},
{"id":{"name":"draw_set_text","path":"scripts/draw_set_text/draw_set_text.yy",},"order":1,}, {"id":{"name":"draw_set_text","path":"scripts/draw_set_text/draw_set_text.yy",},"order":1,},
{"id":{"name":"s_node_array","path":"sprites/s_node_array/s_node_array.yy",},"order":108,}, {"id":{"name":"s_node_array","path":"sprites/s_node_array/s_node_array.yy",},"order":10,},
{"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":23,}, {"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":9,},
{"id":{"name":"color_function","path":"scripts/color_function/color_function.yy",},"order":9,}, {"id":{"name":"color_function","path":"scripts/color_function/color_function.yy",},"order":9,},
{"id":{"name":"node_color_data","path":"scripts/node_color_data/node_color_data.yy",},"order":4,}, {"id":{"name":"node_color_data","path":"scripts/node_color_data/node_color_data.yy",},"order":4,},
{"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":5,}, {"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":5,},
{"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"order":122,}, {"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":8,},
{"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":30,}, {"id":{"name":"node_canvas","path":"scripts/node_canvas/node_canvas.yy",},"order":5,},
{"id":{"name":"node_canvas","path":"scripts/node_canvas/node_canvas.yy",},"order":6,},
{"id":{"name":"node_display_image","path":"scripts/node_display_image/node_display_image.yy",},"order":4,}, {"id":{"name":"node_display_image","path":"scripts/node_display_image/node_display_image.yy",},"order":4,},
{"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},"order":45,}, {"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},"order":45,},
{"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,}, {"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,},
@ -189,37 +197,38 @@
{"id":{"name":"sh_skew","path":"shaders/sh_skew/sh_skew.yy",},"order":6,}, {"id":{"name":"sh_skew","path":"shaders/sh_skew/sh_skew.yy",},"order":6,},
{"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":14,}, {"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":14,},
{"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,}, {"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,},
{"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":125,},
{"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,}, {"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,},
{"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":36,}, {"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":16,},
{"id":{"name":"sh_grey_alpha","path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",},"order":10,}, {"id":{"name":"sh_grey_alpha","path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",},"order":10,},
{"id":{"name":"sh_normal","path":"shaders/sh_normal/sh_normal.yy",},"order":1,}, {"id":{"name":"sh_normal","path":"shaders/sh_normal/sh_normal.yy",},"order":1,},
{"id":{"name":"s_node_time_map","path":"sprites/s_node_time_map/s_node_time_map.yy",},"order":33,}, {"id":{"name":"s_node_time_map","path":"sprites/s_node_time_map/s_node_time_map.yy",},"order":37,},
{"id":{"name":"node_crop","path":"scripts/node_crop/node_crop.yy",},"order":8,}, {"id":{"name":"node_crop","path":"scripts/node_crop/node_crop.yy",},"order":8,},
{"id":{"name":"buttonPalette","path":"scripts/buttonPalette/buttonPalette.yy",},"order":6,}, {"id":{"name":"buttonPalette","path":"scripts/buttonPalette/buttonPalette.yy",},"order":6,},
{"id":{"name":"s_node_wiggler","path":"sprites/s_node_wiggler/s_node_wiggler.yy",},"order":21,}, {"id":{"name":"s_node_wiggler","path":"sprites/s_node_wiggler/s_node_wiggler.yy",},"order":2,},
{"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},"order":34,}, {"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},"order":34,},
{"id":{"name":"s_node_area","path":"sprites/s_node_area/s_node_area.yy",},"order":109,}, {"id":{"name":"s_node_area","path":"sprites/s_node_area/s_node_area.yy",},"order":0,},
{"id":{"name":"type_conversion","path":"scripts/type_conversion/type_conversion.yy",},"order":8,}, {"id":{"name":"type_conversion","path":"scripts/type_conversion/type_conversion.yy",},"order":8,},
{"id":{"name":"node_keyframe","path":"scripts/node_keyframe/node_keyframe.yy",},"order":4,}, {"id":{"name":"node_keyframe","path":"scripts/node_keyframe/node_keyframe.yy",},"order":4,},
{"id":{"name":"ac_flash","path":"animcurves/ac_flash/ac_flash.yy",},"order":0,}, {"id":{"name":"ac_flash","path":"animcurves/ac_flash/ac_flash.yy",},"order":0,},
{"id":{"name":"o_dialog_drag_folder","path":"objects/o_dialog_drag_folder/o_dialog_drag_folder.yy",},"order":2,}, {"id":{"name":"o_dialog_drag_folder","path":"objects/o_dialog_drag_folder/o_dialog_drag_folder.yy",},"order":2,},
{"id":{"name":"node_VFX_effect_repel","path":"scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy",},"order":11,}, {"id":{"name":"node_VFX_effect_repel","path":"scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy",},"order":11,},
{"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":111,}, {"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":1,},
{"id":{"name":"node_VFX_effect_attract","path":"scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy",},"order":10,}, {"id":{"name":"node_VFX_effect_attract","path":"scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy",},"order":10,},
{"id":{"name":"s_node_text_splice","path":"sprites/s_node_text_splice/s_node_text_splice.yy",},"order":17,},
{"id":{"name":"sh_blend_multiply_alpha","path":"shaders/sh_blend_multiply_alpha/sh_blend_multiply_alpha.yy",},"order":4,}, {"id":{"name":"sh_blend_multiply_alpha","path":"shaders/sh_blend_multiply_alpha/sh_blend_multiply_alpha.yy",},"order":4,},
{"id":{"name":"draw_sprite_ext_override","path":"scripts/draw_sprite_ext_override/draw_sprite_ext_override.yy",},"order":9,}, {"id":{"name":"draw_sprite_ext_override","path":"scripts/draw_sprite_ext_override/draw_sprite_ext_override.yy",},"order":9,},
{"id":{"name":"node_array_add","path":"scripts/node_array_add/node_array_add.yy",},"order":9,},
{"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},"order":2,}, {"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},"order":2,},
{"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},"order":17,}, {"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},"order":17,},
{"id":{"name":"mtl_reader","path":"scripts/mtl_reader/mtl_reader.yy",},"order":6,}, {"id":{"name":"mtl_reader","path":"scripts/mtl_reader/mtl_reader.yy",},"order":6,},
{"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":31,}, {"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":31,},
{"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,}, {"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,},
{"id":{"name":"node_vector","path":"scripts/node_vector/node_vector.yy",},"order":2,}, {"id":{"name":"node_vector","path":"scripts/node_vector/node_vector.yy",},"order":0,},
{"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,}, {"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,},
{"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,}, {"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,},
{"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,}, {"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,},
{"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,}, {"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,},
{"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":0,}, {"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,},
{"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,}, {"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,},
{"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":6,}, {"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":6,},
{"id":{"name":"slider","path":"scripts/slider/slider.yy",},"order":15,}, {"id":{"name":"slider","path":"scripts/slider/slider.yy",},"order":15,},
@ -227,20 +236,23 @@
{"id":{"name":"sh_grid_hex","path":"shaders/sh_grid_hex/sh_grid_hex.yy",},"order":21,}, {"id":{"name":"sh_grid_hex","path":"shaders/sh_grid_hex/sh_grid_hex.yy",},"order":21,},
{"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},"order":1,}, {"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},"order":1,},
{"id":{"name":"node_wiggler","path":"scripts/node_wiggler/node_wiggler.yy",},"order":2,}, {"id":{"name":"node_wiggler","path":"scripts/node_wiggler/node_wiggler.yy",},"order":2,},
{"id":{"name":"s_node_checker","path":"sprites/s_node_checker/s_node_checker.yy",},"order":98,}, {"id":{"name":"s_node_checker","path":"sprites/s_node_checker/s_node_checker.yy",},"order":0,},
{"id":{"name":"s_node_grid_noise","path":"sprites/s_node_grid_noise/s_node_grid_noise.yy",},"order":72,}, {"id":{"name":"s_node_grid_noise","path":"sprites/s_node_grid_noise/s_node_grid_noise.yy",},"order":5,},
{"id":{"name":"o_dialog_preview_grid","path":"objects/o_dialog_preview_grid/o_dialog_preview_grid.yy",},"order":0,}, {"id":{"name":"o_dialog_preview_grid","path":"objects/o_dialog_preview_grid/o_dialog_preview_grid.yy",},"order":0,},
{"id":{"name":"node_image_gif","path":"scripts/node_image_gif/node_image_gif.yy",},"order":7,}, {"id":{"name":"node_image_gif","path":"scripts/node_image_gif/node_image_gif.yy",},"order":6,},
{"id":{"name":"o_dialog_anim_time_scaler","path":"objects/o_dialog_anim_time_scaler/o_dialog_anim_time_scaler.yy",},"order":0,}, {"id":{"name":"o_dialog_anim_time_scaler","path":"objects/o_dialog_anim_time_scaler/o_dialog_anim_time_scaler.yy",},"order":0,},
{"id":{"name":"sh_blend_screen_alpha","path":"shaders/sh_blend_screen_alpha/sh_blend_screen_alpha.yy",},"order":6,}, {"id":{"name":"sh_blend_screen_alpha","path":"shaders/sh_blend_screen_alpha/sh_blend_screen_alpha.yy",},"order":6,},
{"id":{"name":"boneObject","path":"scripts/boneObject/boneObject.yy",},"order":0,}, {"id":{"name":"boneObject","path":"scripts/boneObject/boneObject.yy",},"order":0,},
{"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},"order":38,}, {"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},"order":38,},
{"id":{"name":"s_node_grid","path":"sprites/s_node_grid/s_node_grid.yy",},"order":73,}, {"id":{"name":"s_node_grid","path":"sprites/s_node_grid/s_node_grid.yy",},"order":3,},
{"id":{"name":"node_perlin","path":"scripts/node_perlin/node_perlin.yy",},"order":1,}, {"id":{"name":"node_perlin","path":"scripts/node_perlin/node_perlin.yy",},"order":1,},
{"id":{"name":"node_feedback_input","path":"scripts/node_feedback_input/node_feedback_input.yy",},"order":1,},
{"id":{"name":"o_dialog_add_multiple_images","path":"objects/o_dialog_add_multiple_images/o_dialog_add_multiple_images.yy",},"order":0,}, {"id":{"name":"o_dialog_add_multiple_images","path":"objects/o_dialog_add_multiple_images/o_dialog_add_multiple_images.yy",},"order":0,},
{"id":{"name":"assets_data","path":"scripts/assets_data/assets_data.yy",},"order":0,}, {"id":{"name":"assets_data","path":"scripts/assets_data/assets_data.yy",},"order":0,},
{"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},"order":2,}, {"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},"order":2,},
{"id":{"name":"surface_get_palette","path":"scripts/surface_get_palette/surface_get_palette.yy",},"order":2,}, {"id":{"name":"surface_get_palette","path":"scripts/surface_get_palette/surface_get_palette.yy",},"order":2,},
{"id":{"name":"sh_pixel_sort","path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",},"order":41,},
{"id":{"name":"s_node_vfx_destroy","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},"order":7,},
{"id":{"name":"sh_texture_remap","path":"shaders/sh_texture_remap/sh_texture_remap.yy",},"order":28,}, {"id":{"name":"sh_texture_remap","path":"shaders/sh_texture_remap/sh_texture_remap.yy",},"order":28,},
{"id":{"name":"ds_list","path":"scripts/ds_list/ds_list.yy",},"order":1,}, {"id":{"name":"ds_list","path":"scripts/ds_list/ds_list.yy",},"order":1,},
{"id":{"name":"o_dialog_gradient","path":"objects/o_dialog_gradient/o_dialog_gradient.yy",},"order":1,}, {"id":{"name":"o_dialog_gradient","path":"objects/o_dialog_gradient/o_dialog_gradient.yy",},"order":1,},
@ -248,19 +260,16 @@
{"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":0,}, {"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":0,},
{"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,}, {"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,},
{"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":17,}, {"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":17,},
{"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},"order":20,}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},"order":18,},
{"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":129,},
{"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":39,}, {"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":39,},
{"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":22,}, {"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":22,},
{"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":60,}, {"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":3,},
{"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":2,}, {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":2,},
{"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,}, {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,},
{"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":4,}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":4,},
{"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,}, {"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,},
{"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":120,}, {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":20,},
{"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":2,},
{"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},"order":22,}, {"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},"order":22,},
{"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":127,},
{"id":{"name":"node_blur_radial","path":"scripts/node_blur_radial/node_blur_radial.yy",},"order":29,}, {"id":{"name":"node_blur_radial","path":"scripts/node_blur_radial/node_blur_radial.yy",},"order":29,},
{"id":{"name":"node_bloom","path":"scripts/node_bloom/node_bloom.yy",},"order":15,}, {"id":{"name":"node_bloom","path":"scripts/node_bloom/node_bloom.yy",},"order":15,},
{"id":{"name":"sh_bevel","path":"shaders/sh_bevel/sh_bevel.yy",},"order":3,}, {"id":{"name":"sh_bevel","path":"shaders/sh_bevel/sh_bevel.yy",},"order":3,},
@ -271,9 +280,10 @@
{"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},"order":1,}, {"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},"order":1,},
{"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,}, {"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,},
{"id":{"name":"o_dialog_preset","path":"objects/o_dialog_preset/o_dialog_preset.yy",},"order":1,}, {"id":{"name":"o_dialog_preset","path":"objects/o_dialog_preset/o_dialog_preset.yy",},"order":1,},
{"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},"order":81,}, {"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},"order":21,},
{"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":19,}, {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":19,},
{"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,}, {"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,},
{"id":{"name":"node_array_range","path":"scripts/node_array_range/node_array_range.yy",},"order":12,},
{"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,}, {"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,},
{"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,}, {"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,},
{"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,}, {"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,},
@ -285,19 +295,20 @@
{"id":{"name":"draw_circle_border","path":"scripts/draw_circle_border/draw_circle_border.yy",},"order":3,}, {"id":{"name":"draw_circle_border","path":"scripts/draw_circle_border/draw_circle_border.yy",},"order":3,},
{"id":{"name":"sliderRange","path":"scripts/sliderRange/sliderRange.yy",},"order":16,}, {"id":{"name":"sliderRange","path":"scripts/sliderRange/sliderRange.yy",},"order":16,},
{"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,}, {"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,},
{"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":105,}, {"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":4,},
{"id":{"name":"color_selector","path":"scripts/color_selector/color_selector.yy",},"order":4,}, {"id":{"name":"color_selector","path":"scripts/color_selector/color_selector.yy",},"order":4,},
{"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},"order":13,}, {"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},"order":13,},
{"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,}, {"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,},
{"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},"order":37,}, {"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},"order":35,},
{"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,}, {"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,},
{"id":{"name":"s_node_vfx_output","path":"sprites/s_node_vfx_output/s_node_vfx_output.yy",},"order":11,},
{"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,}, {"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,},
{"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,}, {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,},
{"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":20,}, {"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":20,},
{"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,}, {"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,},
{"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":3,}, {"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":3,},
{"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":18,}, {"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":17,},
{"id":{"name":"s_node_grey_alpha","path":"sprites/s_node_grey_alpha/s_node_grey_alpha.yy",},"order":75,}, {"id":{"name":"s_node_grey_alpha","path":"sprites/s_node_grey_alpha/s_node_grey_alpha.yy",},"order":23,},
{"id":{"name":"o_dialog_color_selector","path":"objects/o_dialog_color_selector/o_dialog_color_selector.yy",},"order":0,}, {"id":{"name":"o_dialog_color_selector","path":"objects/o_dialog_color_selector/o_dialog_color_selector.yy",},"order":0,},
{"id":{"name":"sh_bloom_pass1","path":"shaders/sh_bloom_pass1/sh_bloom_pass1.yy",},"order":0,}, {"id":{"name":"sh_bloom_pass1","path":"shaders/sh_bloom_pass1/sh_bloom_pass1.yy",},"order":0,},
{"id":{"name":"node_seperate_shapes","path":"scripts/node_seperate_shapes/node_seperate_shapes.yy",},"order":9,}, {"id":{"name":"node_seperate_shapes","path":"scripts/node_seperate_shapes/node_seperate_shapes.yy",},"order":9,},
@ -306,46 +317,52 @@
{"id":{"name":"sh_posterize_palette","path":"shaders/sh_posterize_palette/sh_posterize_palette.yy",},"order":8,}, {"id":{"name":"sh_posterize_palette","path":"shaders/sh_posterize_palette/sh_posterize_palette.yy",},"order":8,},
{"id":{"name":"collection_data","path":"scripts/collection_data/collection_data.yy",},"order":8,}, {"id":{"name":"collection_data","path":"scripts/collection_data/collection_data.yy",},"order":8,},
{"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},"order":6,}, {"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},"order":6,},
{"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},"order":6,}, {"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},"order":11,},
{"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":100,}, {"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":11,},
{"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":2,},
{"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,}, {"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,},
{"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},"order":96,}, {"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},"order":2,},
{"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":4,}, {"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":4,},
{"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},"order":42,}, {"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},"order":42,},
{"id":{"name":"s_node_feedback","path":"sprites/s_node_feedback/s_node_feedback.yy",},"order":3,},
{"id":{"name":"getGradientData","path":"scripts/getGradientData/getGradientData.yy",},"order":1,}, {"id":{"name":"getGradientData","path":"scripts/getGradientData/getGradientData.yy",},"order":1,},
{"id":{"name":"s_node_character","path":"sprites/s_node_character/s_node_character.yy",},"order":99,}, {"id":{"name":"s_node_character","path":"sprites/s_node_character/s_node_character.yy",},"order":1,},
{"id":{"name":"node_glow","path":"scripts/node_glow/node_glow.yy",},"order":14,}, {"id":{"name":"node_glow","path":"scripts/node_glow/node_glow.yy",},"order":14,},
{"id":{"name":"sh_blend_min","path":"shaders/sh_blend_min/sh_blend_min.yy",},"order":9,}, {"id":{"name":"sh_blend_min","path":"shaders/sh_blend_min/sh_blend_min.yy",},"order":9,},
{"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},"order":5,}, {"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},"order":5,},
{"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},"order":29,}, {"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},"order":39,},
{"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},"order":11,}, {"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},"order":11,},
{"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},"order":2,}, {"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},"order":2,},
{"id":{"name":"s_node_solid","path":"sprites/s_node_solid/s_node_solid.yy",},"order":39,}, {"id":{"name":"s_node_solid","path":"sprites/s_node_solid/s_node_solid.yy",},"order":15,},
{"id":{"name":"string_hexadecimal","path":"scripts/string_hexadecimal/string_hexadecimal.yy",},"order":1,}, {"id":{"name":"string_hexadecimal","path":"scripts/string_hexadecimal/string_hexadecimal.yy",},"order":1,},
{"id":{"name":"s_node_camera","path":"sprites/s_node_camera/s_node_camera.yy",},"order":3,},
{"id":{"name":"sh_vertex_pnt_light","path":"shaders/sh_vertex_pnt_light/sh_vertex_pnt_light.yy",},"order":4,}, {"id":{"name":"sh_vertex_pnt_light","path":"shaders/sh_vertex_pnt_light/sh_vertex_pnt_light.yy",},"order":4,},
{"id":{"name":"surfaceBox","path":"scripts/surfaceBox/surfaceBox.yy",},"order":22,}, {"id":{"name":"surfaceBox","path":"scripts/surfaceBox/surfaceBox.yy",},"order":22,},
{"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},"order":107,}, {"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},"order":12,},
{"id":{"name":"string_splice","path":"scripts/string_splice/string_splice.yy",},"order":5,}, {"id":{"name":"string_splice","path":"scripts/string_splice/string_splice.yy",},"order":5,},
{"id":{"name":"s_node_vfx_input","path":"sprites/s_node_vfx_input/s_node_vfx_input.yy",},"order":12,},
{"id":{"name":"sh_seperate_shape_ite","path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},"order":2,}, {"id":{"name":"sh_seperate_shape_ite","path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},"order":2,},
{"id":{"name":"o_main","path":"objects/o_main/o_main.yy",},"order":1,}, {"id":{"name":"o_main","path":"objects/o_main/o_main.yy",},"order":1,},
{"id":{"name":"area_function","path":"scripts/area_function/area_function.yy",},"order":2,}, {"id":{"name":"area_function","path":"scripts/area_function/area_function.yy",},"order":2,},
{"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":3,}, {"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":4,},
{"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,}, {"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,},
{"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":12,}, {"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":12,},
{"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":118,}, {"id":{"name":"s_node_skew","path":"sprites/s_node_skew/s_node_skew.yy",},"order":11,},
{"id":{"name":"s_node_feedback_input","path":"sprites/s_node_feedback_input/s_node_feedback_input.yy",},"order":10,},
{"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":8,},
{"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":19,}, {"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":19,},
{"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":15,}, {"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":15,},
{"id":{"name":"sh_alpha_grey","path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",},"order":9,}, {"id":{"name":"sh_alpha_grey","path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",},"order":9,},
{"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},"order":1,}, {"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},"order":1,},
{"id":{"name":"o_dialog_animation","path":"objects/o_dialog_animation/o_dialog_animation.yy",},"order":1,}, {"id":{"name":"o_dialog_animation","path":"objects/o_dialog_animation/o_dialog_animation.yy",},"order":1,},
{"id":{"name":"s_node_grid_tri","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"order":131,}, {"id":{"name":"s_node_grid_tri","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"order":6,},
{"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},"order":5,}, {"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},"order":5,},
{"id":{"name":"o_dialog_keyframe_curve","path":"objects/o_dialog_keyframe_curve/o_dialog_keyframe_curve.yy",},"order":2,}, {"id":{"name":"o_dialog_keyframe_curve","path":"objects/o_dialog_keyframe_curve/o_dialog_keyframe_curve.yy",},"order":2,},
{"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},"order":26,}, {"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},"order":6,},
{"id":{"name":"node_twirl","path":"scripts/node_twirl/node_twirl.yy",},"order":30,}, {"id":{"name":"node_twirl","path":"scripts/node_twirl/node_twirl.yy",},"order":30,},
{"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},"order":10,}, {"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},"order":15,},
{"id":{"name":"s_node_gradient","path":"sprites/s_node_gradient/s_node_gradient.yy",},"order":77,}, {"id":{"name":"s_node_gradient","path":"sprites/s_node_gradient/s_node_gradient.yy",},"order":1,},
{"id":{"name":"s_node_padding","path":"sprites/s_node_padding/s_node_padding.yy",},"order":55,}, {"id":{"name":"s_node_padding","path":"sprites/s_node_padding/s_node_padding.yy",},"order":4,},
{"id":{"name":"sh_blend_add_alpha_adj","path":"shaders/sh_blend_add_alpha_adj/sh_blend_add_alpha_adj.yy",},"order":2,}, {"id":{"name":"sh_blend_add_alpha_adj","path":"shaders/sh_blend_add_alpha_adj/sh_blend_add_alpha_adj.yy",},"order":2,},
{"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":10,}, {"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":10,},
{"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":7,}, {"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":7,},
@ -353,49 +370,50 @@
{"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},"order":19,}, {"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},"order":19,},
{"id":{"name":"sh_draw_vertex_aa","path":"shaders/sh_draw_vertex_aa/sh_draw_vertex_aa.yy",},"order":0,}, {"id":{"name":"sh_draw_vertex_aa","path":"shaders/sh_draw_vertex_aa/sh_draw_vertex_aa.yy",},"order":0,},
{"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":40,}, {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":40,},
{"id":{"name":"s_node_destray","path":"sprites/s_node_destray/s_node_destray.yy",},"order":9,}, {"id":{"name":"s_node_destray","path":"sprites/s_node_destray/s_node_destray.yy",},"order":16,},
{"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":1,}, {"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":1,},
{"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},"order":1,}, {"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},"order":1,},
{"id":{"name":"node_path","path":"scripts/node_path/node_path.yy",},"order":8,}, {"id":{"name":"node_path","path":"scripts/node_path/node_path.yy",},"order":2,},
{"id":{"name":"node_wrap_area","path":"scripts/node_wrap_area/node_wrap_area.yy",},"order":11,}, {"id":{"name":"node_wrap_area","path":"scripts/node_wrap_area/node_wrap_area.yy",},"order":11,},
{"id":{"name":"sh_seperate_shape_sep","path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",},"order":3,}, {"id":{"name":"sh_seperate_shape_sep","path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",},"order":3,},
{"id":{"name":"s_node_image_sequence","path":"sprites/s_node_image_sequence/s_node_image_sequence.yy",},"order":68,}, {"id":{"name":"s_node_image_sequence","path":"sprites/s_node_image_sequence/s_node_image_sequence.yy",},"order":8,},
{"id":{"name":"sh_content_sampler","path":"shaders/sh_content_sampler/sh_content_sampler.yy",},"order":34,}, {"id":{"name":"sh_content_sampler","path":"shaders/sh_content_sampler/sh_content_sampler.yy",},"order":34,},
{"id":{"name":"s_menu_white","path":"sprites/s_menu_white/s_menu_white.yy",},"order":1,}, {"id":{"name":"s_menu_white","path":"sprites/s_menu_white/s_menu_white.yy",},"order":1,},
{"id":{"name":"color_loader","path":"scripts/color_loader/color_loader.yy",},"order":13,}, {"id":{"name":"color_loader","path":"scripts/color_loader/color_loader.yy",},"order":13,},
{"id":{"name":"node_trail","path":"scripts/node_trail/node_trail.yy",},"order":6,}, {"id":{"name":"node_trail","path":"scripts/node_trail/node_trail.yy",},"order":6,},
{"id":{"name":"byte_reader","path":"scripts/byte_reader/byte_reader.yy",},"order":0,}, {"id":{"name":"byte_reader","path":"scripts/byte_reader/byte_reader.yy",},"order":0,},
{"id":{"name":"s_node_loop_output","path":"sprites/s_node_loop_output/s_node_loop_output.yy",},"order":13,},
{"id":{"name":"_p_dialog","path":"objects/_p_dialog/_p_dialog.yy",},"order":0,}, {"id":{"name":"_p_dialog","path":"objects/_p_dialog/_p_dialog.yy",},"order":0,},
{"id":{"name":"render_data","path":"scripts/render_data/render_data.yy",},"order":2,}, {"id":{"name":"render_data","path":"scripts/render_data/render_data.yy",},"order":2,},
{"id":{"name":"_node_VFX","path":"scripts/_node_VFX/_node_VFX.yy",},"order":4,}, {"id":{"name":"_node_VFX","path":"scripts/_node_VFX/_node_VFX.yy",},"order":4,},
{"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":8,}, {"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":9,},
{"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,}, {"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,},
{"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":38,}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":1,},
{"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"order":132,}, {"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"order":4,},
{"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":116,}, {"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":0,},
{"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},"order":46,}, {"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},"order":10,},
{"id":{"name":"node_animate_curve","path":"scripts/node_animate_curve/node_animate_curve.yy",},"order":0,}, {"id":{"name":"node_animate_curve","path":"scripts/node_animate_curve/node_animate_curve.yy",},"order":0,},
{"id":{"name":"curve_bounce_function","path":"scripts/curve_bounce_function/curve_bounce_function.yy",},"order":1,}, {"id":{"name":"curve_bounce_function","path":"scripts/curve_bounce_function/curve_bounce_function.yy",},"order":1,},
{"id":{"name":"s_node_number","path":"sprites/s_node_number/s_node_number.yy",},"order":12,}, {"id":{"name":"s_node_number","path":"sprites/s_node_number/s_node_number.yy",},"order":9,},
{"id":{"name":"gif_reader","path":"scripts/gif_reader/gif_reader.yy",},"order":4,}, {"id":{"name":"gif_reader","path":"scripts/gif_reader/gif_reader.yy",},"order":4,},
{"id":{"name":"s_node_vfx_vortex","path":"sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy",},"order":121,},
{"id":{"name":"_f_p3","path":"fonts/_f_p3/_f_p3.yy",},"order":7,}, {"id":{"name":"_f_p3","path":"fonts/_f_p3/_f_p3.yy",},"order":7,},
{"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},"order":1,}, {"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},"order":1,},
{"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},"order":6,}, {"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},"order":6,},
{"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},"order":4,}, {"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},"order":4,},
{"id":{"name":"s_node_greyscale","path":"sprites/s_node_greyscale/s_node_greyscale.yy",},"order":74,}, {"id":{"name":"s_node_greyscale","path":"sprites/s_node_greyscale/s_node_greyscale.yy",},"order":24,},
{"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},"order":4,}, {"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},"order":4,},
{"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},"order":1,}, {"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},"order":1,},
{"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},"order":0,}, {"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},"order":0,},
{"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},"order":0,}, {"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},"order":0,},
{"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},"order":0,}, {"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},"order":0,},
{"id":{"name":"sh_cell_noise_random","path":"shaders/sh_cell_noise_random/sh_cell_noise_random.yy",},"order":6,}, {"id":{"name":"sh_cell_noise_random","path":"shaders/sh_cell_noise_random/sh_cell_noise_random.yy",},"order":6,},
{"id":{"name":"node_iteration_input","path":"scripts/node_iteration_input/node_iteration_input.yy",},"order":2,}, {"id":{"name":"node_iterator_input","path":"scripts/node_iterator_input/node_iterator_input.yy",},"order":2,},
{"id":{"name":"s_node_atlas","path":"sprites/s_node_atlas/s_node_atlas.yy",},"order":106,}, {"id":{"name":"s_node_atlas","path":"sprites/s_node_atlas/s_node_atlas.yy",},"order":3,},
{"id":{"name":"node_normal","path":"scripts/node_normal/node_normal.yy",},"order":1,}, {"id":{"name":"node_normal","path":"scripts/node_normal/node_normal.yy",},"order":1,},
{"id":{"name":"s_node_glow","path":"sprites/s_node_glow/s_node_glow.yy",},"order":78,}, {"id":{"name":"s_node_glow","path":"sprites/s_node_glow/s_node_glow.yy",},"order":22,},
{"id":{"name":"s_node_condition","path":"sprites/s_node_condition/s_node_condition.yy",},"order":11,}, {"id":{"name":"s_node_condition","path":"sprites/s_node_condition/s_node_condition.yy",},"order":0,},
{"id":{"name":"node_array_length","path":"scripts/node_array_length/node_array_length.yy",},"order":13,}, {"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},"order":6,},
{"id":{"name":"node_array_length","path":"scripts/node_array_length/node_array_length.yy",},"order":11,},
{"id":{"name":"node_erode","path":"scripts/node_erode/node_erode.yy",},"order":31,}, {"id":{"name":"node_erode","path":"scripts/node_erode/node_erode.yy",},"order":31,},
{"id":{"name":"node_wrap_mesh","path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",},"order":7,}, {"id":{"name":"node_wrap_mesh","path":"scripts/node_wrap_mesh/node_wrap_mesh.yy",},"order":7,},
{"id":{"name":"sh_blur_alpha","path":"shaders/sh_blur_alpha/sh_blur_alpha.yy",},"order":2,}, {"id":{"name":"sh_blur_alpha","path":"shaders/sh_blur_alpha/sh_blur_alpha.yy",},"order":2,},
@ -409,24 +427,23 @@
{"id":{"name":"node_blur_contrast","path":"scripts/node_blur_contrast/node_blur_contrast.yy",},"order":36,}, {"id":{"name":"node_blur_contrast","path":"scripts/node_blur_contrast/node_blur_contrast.yy",},"order":36,},
{"id":{"name":"s_fx_pixel","path":"sprites/s_fx_pixel/s_fx_pixel.yy",},"order":0,}, {"id":{"name":"s_fx_pixel","path":"sprites/s_fx_pixel/s_fx_pixel.yy",},"order":0,},
{"id":{"name":"gradients_function","path":"scripts/gradients_function/gradients_function.yy",},"order":0,}, {"id":{"name":"gradients_function","path":"scripts/gradients_function/gradients_function.yy",},"order":0,},
{"id":{"name":"s_node_border","path":"sprites/s_node_border/s_node_border.yy",},"order":101,}, {"id":{"name":"s_node_border","path":"sprites/s_node_border/s_node_border.yy",},"order":10,},
{"id":{"name":"d3_vector","path":"scripts/d3_vector/d3_vector.yy",},"order":1,}, {"id":{"name":"d3_vector","path":"scripts/d3_vector/d3_vector.yy",},"order":1,},
{"id":{"name":"s_node_pin","path":"sprites/s_node_pin/s_node_pin.yy",},"order":16,}, {"id":{"name":"s_node_pin","path":"sprites/s_node_pin/s_node_pin.yy",},"order":2,},
{"id":{"name":"s_node_9patch","path":"sprites/s_node_9patch/s_node_9patch.yy",},"order":112,}, {"id":{"name":"s_node_9patch","path":"sprites/s_node_9patch/s_node_9patch.yy",},"order":0,},
{"id":{"name":"s_node_blur_contrast","path":"sprites/s_node_blur_contrast/s_node_blur_contrast.yy",},"order":102,}, {"id":{"name":"s_node_blur_contrast","path":"sprites/s_node_blur_contrast/s_node_blur_contrast.yy",},"order":8,},
{"id":{"name":"s_node_text","path":"sprites/s_node_text/s_node_text.yy",},"order":35,}, {"id":{"name":"s_node_text_render","path":"sprites/s_node_text_render/s_node_text_render.yy",},"order":17,},
{"id":{"name":"s_node_color_from_rgb","path":"sprites/s_node_color_from_rgb/s_node_color_from_rgb.yy",},"order":94,}, {"id":{"name":"s_node_color_from_rgb","path":"sprites/s_node_color_from_rgb/s_node_color_from_rgb.yy",},"order":4,},
{"id":{"name":"node_scale_algo","path":"scripts/node_scale_algo/node_scale_algo.yy",},"order":43,}, {"id":{"name":"node_scale_algo","path":"scripts/node_scale_algo/node_scale_algo.yy",},"order":13,},
{"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},"order":1,}, {"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},"order":1,},
{"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},"order":4,}, {"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},"order":4,},
{"id":{"name":"s_node_vfx_destroy","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},"order":124,},
{"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},"order":7,}, {"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},"order":7,},
{"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},"order":19,}, {"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},"order":19,},
{"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"order":5,},
{"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,}, {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,},
{"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,},
{"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,}, {"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,},
{"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},"order":1,}, {"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},"order":1,},
{"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},"order":4,},
{"id":{"name":"directory_object","path":"scripts/directory_object/directory_object.yy",},"order":3,}, {"id":{"name":"directory_object","path":"scripts/directory_object/directory_object.yy",},"order":3,},
{"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},"order":34,}, {"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},"order":34,},
{"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},"order":10,}, {"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},"order":10,},
@ -435,86 +452,93 @@
{"id":{"name":"node_3d_transform","path":"scripts/node_3d_transform/node_3d_transform.yy",},"order":2,}, {"id":{"name":"node_3d_transform","path":"scripts/node_3d_transform/node_3d_transform.yy",},"order":2,},
{"id":{"name":"node_display_text","path":"scripts/node_display_text/node_display_text.yy",},"order":3,}, {"id":{"name":"node_display_text","path":"scripts/node_display_text/node_display_text.yy",},"order":3,},
{"id":{"name":"s_kenney","path":"sprites/s_kenney/s_kenney.yy",},"order":0,}, {"id":{"name":"s_kenney","path":"sprites/s_kenney/s_kenney.yy",},"order":0,},
{"id":{"name":"node_feedback","path":"scripts/node_feedback/node_feedback.yy",},"order":0,},
{"id":{"name":"sh_grid_noise","path":"shaders/sh_grid_noise/sh_grid_noise.yy",},"order":8,}, {"id":{"name":"sh_grid_noise","path":"shaders/sh_grid_noise/sh_grid_noise.yy",},"order":8,},
{"id":{"name":"s_node_line","path":"sprites/s_node_line/s_node_line.yy",},"order":62,}, {"id":{"name":"s_node_line","path":"sprites/s_node_line/s_node_line.yy",},"order":7,},
{"id":{"name":"panel_graph","path":"scripts/panel_graph/panel_graph.yy",},"order":1,}, {"id":{"name":"panel_graph","path":"scripts/panel_graph/panel_graph.yy",},"order":1,},
{"id":{"name":"node_counter","path":"scripts/node_counter/node_counter.yy",},"order":1,}, {"id":{"name":"node_counter","path":"scripts/node_counter/node_counter.yy",},"order":1,},
{"id":{"name":"sh_color_picker_hue","path":"shaders/sh_color_picker_hue/sh_color_picker_hue.yy",},"order":3,}, {"id":{"name":"sh_color_picker_hue","path":"shaders/sh_color_picker_hue/sh_color_picker_hue.yy",},"order":3,},
{"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},"order":32,}, {"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},"order":2,},
{"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},"order":14,}, {"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},"order":14,},
{"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":18,}, {"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":29,},
{"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,}, {"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,},
{"id":{"name":"s_node_3d_extrude","path":"sprites/s_node_3d_extrude/s_node_3d_extrude.yy",},"order":119,}, {"id":{"name":"s_node_3d_extrude","path":"sprites/s_node_3d_extrude/s_node_3d_extrude.yy",},"order":2,},
{"id":{"name":"s_node_vfx_render","path":"sprites/s_node_vfx_render/s_node_vfx_render.yy",},"order":128,},
{"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,}, {"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,},
{"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":34,}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,},
{"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":63,}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":27,},
{"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,},
{"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":66,}, {"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},"order":6,},
{"id":{"name":"string_decimal","path":"scripts/string_decimal/string_decimal.yy",},"order":0,}, {"id":{"name":"string_decimal","path":"scripts/string_decimal/string_decimal.yy",},"order":0,},
{"id":{"name":"_f_h3","path":"fonts/_f_h3/_f_h3.yy",},"order":3,}, {"id":{"name":"_f_h3","path":"fonts/_f_h3/_f_h3.yy",},"order":3,},
{"id":{"name":"s_node_math","path":"sprites/s_node_math/s_node_math.yy",},"order":61,}, {"id":{"name":"s_node_math","path":"sprites/s_node_math/s_node_math.yy",},"order":2,},
{"id":{"name":"node_iteration_index","path":"scripts/node_iteration_index/node_iteration_index.yy",},"order":4,}, {"id":{"name":"node_iterator_index","path":"scripts/node_iterator_index/node_iterator_index.yy",},"order":4,},
{"id":{"name":"node_greyscale","path":"scripts/node_greyscale/node_greyscale.yy",},"order":19,}, {"id":{"name":"node_greyscale","path":"scripts/node_greyscale/node_greyscale.yy",},"order":19,},
{"id":{"name":"node_color_adjustment","path":"scripts/node_color_adjustment/node_color_adjustment.yy",},"order":5,}, {"id":{"name":"node_color_adjustment","path":"scripts/node_color_adjustment/node_color_adjustment.yy",},"order":5,},
{"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},"order":4,}, {"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},"order":4,},
{"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},"order":0,}, {"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},"order":0,},
{"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,}, {"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,},
{"id":{"name":"sh_grid_tri","path":"shaders/sh_grid_tri/sh_grid_tri.yy",},"order":20,}, {"id":{"name":"sh_grid_tri","path":"shaders/sh_grid_tri/sh_grid_tri.yy",},"order":20,},
{"id":{"name":"s_node_text","path":"sprites/s_node_text/s_node_text.yy",},"order":16,},
{"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,}, {"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,},
{"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,},
{"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,},
{"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,}, {"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,},
{"id":{"name":"node_skew","path":"scripts/node_skew/node_skew.yy",},"order":12,}, {"id":{"name":"node_skew","path":"scripts/node_skew/node_skew.yy",},"order":12,},
{"id":{"name":"s_node_canvas","path":"sprites/s_node_canvas/s_node_canvas.yy",},"order":15,}, {"id":{"name":"s_node_canvas","path":"sprites/s_node_canvas/s_node_canvas.yy",},"order":3,},
{"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},"order":38,}, {"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},"order":38,},
{"id":{"name":"path_parser","path":"scripts/path_parser/path_parser.yy",},"order":3,}, {"id":{"name":"path_parser","path":"scripts/path_parser/path_parser.yy",},"order":3,},
{"id":{"name":"s_node_unicode","path":"sprites/s_node_unicode/s_node_unicode.yy",},"order":28,}, {"id":{"name":"s_node_unicode","path":"sprites/s_node_unicode/s_node_unicode.yy",},"order":15,},
{"id":{"name":"s_node_color_from_hsv","path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",},"order":95,}, {"id":{"name":"s_node_color_from_hsv","path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",},"order":3,},
{"id":{"name":"node_area","path":"scripts/node_area/node_area.yy",},"order":11,}, {"id":{"name":"node_area","path":"scripts/node_area/node_area.yy",},"order":5,},
{"id":{"name":"s_node_posterize","path":"sprites/s_node_posterize/s_node_posterize.yy",},"order":48,}, {"id":{"name":"s_node_vfx_accel","path":"sprites/s_node_vfx_accel/s_node_vfx_accel.yy",},"order":0,},
{"id":{"name":"s_node_counter","path":"sprites/s_node_counter/s_node_counter.yy",},"order":87,}, {"id":{"name":"s_node_posterize","path":"sprites/s_node_posterize/s_node_posterize.yy",},"order":31,},
{"id":{"name":"s_node_image_sequence_to_anim","path":"sprites/s_node_image_sequence_to_anim/s_node_image_sequence_to_anim.yy",},"order":13,}, {"id":{"name":"s_node_vfx_vortex","path":"sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy",},"order":4,},
{"id":{"name":"s_node_array_add","path":"sprites/s_node_array_add/s_node_array_add.yy",},"order":13,},
{"id":{"name":"s_node_counter","path":"sprites/s_node_counter/s_node_counter.yy",},"order":0,},
{"id":{"name":"s_node_image_sequence_to_anim","path":"sprites/s_node_image_sequence_to_anim/s_node_image_sequence_to_anim.yy",},"order":9,},
{"id":{"name":"_node_VFX_spawner","path":"scripts/_node_VFX_spawner/_node_VFX_spawner.yy",},"order":15,},
{"id":{"name":"draw_UI_scale","path":"scripts/draw_UI_scale/draw_UI_scale.yy",},"order":8,}, {"id":{"name":"draw_UI_scale","path":"scripts/draw_UI_scale/draw_UI_scale.yy",},"order":8,},
{"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},"order":4,}, {"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},"order":4,},
{"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},"order":47,}, {"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},"order":32,},
{"id":{"name":"s_node_export","path":"sprites/s_node_export/s_node_export.yy",},"order":80,}, {"id":{"name":"s_node_export","path":"sprites/s_node_export/s_node_export.yy",},"order":0,},
{"id":{"name":"node_grey_to_alpha","path":"scripts/node_grey_to_alpha/node_grey_to_alpha.yy",},"order":23,}, {"id":{"name":"node_grey_to_alpha","path":"scripts/node_grey_to_alpha/node_grey_to_alpha.yy",},"order":23,},
{"id":{"name":"sh_blend_add","path":"shaders/sh_blend_add/sh_blend_add.yy",},"order":7,}, {"id":{"name":"sh_blend_add","path":"shaders/sh_blend_add/sh_blend_add.yy",},"order":7,},
{"id":{"name":"node_de_stray","path":"scripts/node_de_stray/node_de_stray.yy",},"order":27,}, {"id":{"name":"node_de_stray","path":"scripts/node_de_stray/node_de_stray.yy",},"order":27,},
{"id":{"name":"sh_channel_G","path":"shaders/sh_channel_G/sh_channel_G.yy",},"order":12,}, {"id":{"name":"sh_channel_G","path":"shaders/sh_channel_G/sh_channel_G.yy",},"order":12,},
{"id":{"name":"s_node_dilate","path":"sprites/s_node_dilate/s_node_dilate.yy",},"order":84,}, {"id":{"name":"s_node_dilate","path":"sprites/s_node_dilate/s_node_dilate.yy",},"order":17,},
{"id":{"name":"node_collection","path":"scripts/node_collection/node_collection.yy",},"order":0,}, {"id":{"name":"node_collection","path":"scripts/node_collection/node_collection.yy",},"order":0,},
{"id":{"name":"node_value","path":"scripts/node_value/node_value.yy",},"order":6,}, {"id":{"name":"node_value","path":"scripts/node_value/node_value.yy",},"order":6,},
{"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},"order":5,}, {"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},"order":5,},
{"id":{"name":"s_node_vfx_accel","path":"sprites/s_node_vfx_accel/s_node_vfx_accel.yy",},"order":126,},
{"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,}, {"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,},
{"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,}, {"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,},
{"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":43,}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":19,},
{"id":{"name":"_f_p2","path":"fonts/_f_p2/_f_p2.yy",},"order":4,}, {"id":{"name":"_f_p2","path":"fonts/_f_p2/_f_p2.yy",},"order":4,},
{"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,}, {"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,},
{"id":{"name":"node_VFX_effector","path":"scripts/node_VFX_effector/node_VFX_effector.yy",},"order":8,}, {"id":{"name":"node_VFX_effector","path":"scripts/node_VFX_effector/node_VFX_effector.yy",},"order":8,},
{"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":1,}, {"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":1,},
{"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":115,}, {"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":1,},
{"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},"order":27,}, {"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},"order":5,},
{"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},"order":9,}, {"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},"order":9,},
{"id":{"name":"_f_p1","path":"fonts/_f_p1/_f_p1.yy",},"order":1,}, {"id":{"name":"_f_p1","path":"fonts/_f_p1/_f_p1.yy",},"order":1,},
{"id":{"name":"curve_bezier_function","path":"scripts/curve_bezier_function/curve_bezier_function.yy",},"order":0,}, {"id":{"name":"curve_bezier_function","path":"scripts/curve_bezier_function/curve_bezier_function.yy",},"order":0,},
{"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},"order":70,}, {"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},"order":5,},
{"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},"order":9,},
{"id":{"name":"draw_line_dashed","path":"scripts/draw_line_dashed/draw_line_dashed.yy",},"order":7,}, {"id":{"name":"draw_line_dashed","path":"scripts/draw_line_dashed/draw_line_dashed.yy",},"order":7,},
{"id":{"name":"regex","path":"scripts/regex/regex.yy",},"order":0,}, {"id":{"name":"regex","path":"scripts/regex/regex.yy",},"order":0,},
{"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},"order":41,}, {"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},"order":41,},
{"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":51,}, {"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":3,},
{"id":{"name":"node_level","path":"scripts/node_level/node_level.yy",},"order":12,}, {"id":{"name":"node_level","path":"scripts/node_level/node_level.yy",},"order":12,},
{"id":{"name":"o_dialog_warning","path":"objects/o_dialog_warning/o_dialog_warning.yy",},"order":14,}, {"id":{"name":"o_dialog_warning","path":"objects/o_dialog_warning/o_dialog_warning.yy",},"order":14,},
{"id":{"name":"s_node_group_output","path":"sprites/s_node_group_output/s_node_group_output.yy",},"order":15,},
{"id":{"name":"string_scale","path":"scripts/string_scale/string_scale.yy",},"order":6,}, {"id":{"name":"string_scale","path":"scripts/string_scale/string_scale.yy",},"order":6,},
{"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":71,}, {"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":4,},
{"id":{"name":"node_value_processor","path":"scripts/node_value_processor/node_value_processor.yy",},"order":7,}, {"id":{"name":"node_value_processor","path":"scripts/node_value_processor/node_value_processor.yy",},"order":7,},
{"id":{"name":"s_node_group_input","path":"sprites/s_node_group_input/s_node_group_input.yy",},"order":16,},
{"id":{"name":"sample_projects","path":"scripts/sample_projects/sample_projects.yy",},"order":5,}, {"id":{"name":"sample_projects","path":"scripts/sample_projects/sample_projects.yy",},"order":5,},
{"id":{"name":"load_function","path":"scripts/load_function/load_function.yy",},"order":2,}, {"id":{"name":"load_function","path":"scripts/load_function/load_function.yy",},"order":2,},
{"id":{"name":"ds_map","path":"scripts/ds_map/ds_map.yy",},"order":0,}, {"id":{"name":"ds_map","path":"scripts/ds_map/ds_map.yy",},"order":0,},
{"id":{"name":"s_node_3d_transform","path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},"order":113,}, {"id":{"name":"s_node_3d_transform","path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},"order":4,},
{"id":{"name":"s_node_output","path":"sprites/s_node_output/s_node_output.yy",},"order":56,}, {"id":{"name":"s_node_output","path":"sprites/s_node_output/s_node_output.yy",},"order":7,},
{"id":{"name":"sh_atlas","path":"shaders/sh_atlas/sh_atlas.yy",},"order":30,}, {"id":{"name":"sh_atlas","path":"shaders/sh_atlas/sh_atlas.yy",},"order":30,},
{"id":{"name":"node_3d_extrude","path":"scripts/node_3d_extrude/node_3d_extrude.yy",},"order":9,}, {"id":{"name":"node_3d_extrude","path":"scripts/node_3d_extrude/node_3d_extrude.yy",},"order":9,},
{"id":{"name":"node_scale","path":"scripts/node_scale/node_scale.yy",},"order":9,}, {"id":{"name":"node_scale","path":"scripts/node_scale/node_scale.yy",},"order":9,},
@ -523,32 +547,39 @@
{"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,}, {"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,},
{"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":9,}, {"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":9,},
{"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,}, {"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,},
{"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":44,}, {"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":7,},
{"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,}, {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,},
{"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":14,}, {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":14,},
{"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},"order":7,},
{"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":12,}, {"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":12,},
{"id":{"name":"s_node_iterator_index","path":"sprites/s_node_iterator_index/s_node_iterator_index.yy",},"order":14,}, {"id":{"name":"s_node_iterator_index","path":"sprites/s_node_iterator_index/s_node_iterator_index.yy",},"order":8,},
{"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},"order":25,}, {"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},"order":25,},
{"id":{"name":"preferences","path":"scripts/preferences/preferences.yy",},"order":4,}, {"id":{"name":"preferences","path":"scripts/preferences/preferences.yy",},"order":4,},
{"id":{"name":"sh_solid","path":"shaders/sh_solid/sh_solid.yy",},"order":15,}, {"id":{"name":"sh_solid","path":"shaders/sh_solid/sh_solid.yy",},"order":15,},
{"id":{"name":"timer_function","path":"scripts/timer_function/timer_function.yy",},"order":0,}, {"id":{"name":"timer_function","path":"scripts/timer_function/timer_function.yy",},"order":0,},
{"id":{"name":"font_data","path":"scripts/font_data/font_data.yy",},"order":9,},
{"id":{"name":"animation_curve","path":"scripts/animation_curve/animation_curve.yy",},"order":0,}, {"id":{"name":"animation_curve","path":"scripts/animation_curve/animation_curve.yy",},"order":0,},
{"id":{"name":"s_node_color_replace","path":"sprites/s_node_color_replace/s_node_color_replace.yy",},"order":91,}, {"id":{"name":"node_camera","path":"scripts/node_camera/node_camera.yy",},"order":3,},
{"id":{"name":"s_node_color_replace","path":"sprites/s_node_color_replace/s_node_color_replace.yy",},"order":7,},
{"id":{"name":"draw_surface_functions","path":"scripts/draw_surface_functions/draw_surface_functions.yy",},"order":4,},
{"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},"order":36,}, {"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},"order":36,},
{"id":{"name":"node_alpha_to_grey","path":"scripts/node_alpha_to_grey/node_alpha_to_grey.yy",},"order":21,}, {"id":{"name":"node_alpha_to_grey","path":"scripts/node_alpha_to_grey/node_alpha_to_grey.yy",},"order":21,},
{"id":{"name":"shell_helper","path":"scripts/shell_helper/shell_helper.yy",},"order":20,},
{"id":{"name":"o_dialog_preference","path":"objects/o_dialog_preference/o_dialog_preference.yy",},"order":15,}, {"id":{"name":"o_dialog_preference","path":"objects/o_dialog_preference/o_dialog_preference.yy",},"order":15,},
{"id":{"name":"node_wrap","path":"scripts/node_wrap/node_wrap.yy",},"order":2,}, {"id":{"name":"node_wrap","path":"scripts/node_wrap/node_wrap.yy",},"order":2,},
{"id":{"name":"o_dialog_about","path":"objects/o_dialog_about/o_dialog_about.yy",},"order":13,}, {"id":{"name":"o_dialog_about","path":"objects/o_dialog_about/o_dialog_about.yy",},"order":13,},
{"id":{"name":"dialog_management","path":"scripts/dialog_management/dialog_management.yy",},"order":5,}, {"id":{"name":"dialog_management","path":"scripts/dialog_management/dialog_management.yy",},"order":5,},
{"id":{"name":"draw_shapes","path":"scripts/draw_shapes/draw_shapes.yy",},"order":10,},
{"id":{"name":"node_channels","path":"scripts/node_channels/node_channels.yy",},"order":24,}, {"id":{"name":"node_channels","path":"scripts/node_channels/node_channels.yy",},"order":24,},
{"id":{"name":"execute_shell_simple_ext","path":"extensions/execute_shell_simple_ext/execute_shell_simple_ext.yy",},"order":5,}, {"id":{"name":"execute_shell_simple_ext","path":"extensions/execute_shell_simple_ext/execute_shell_simple_ext.yy",},"order":5,},
{"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":14,}, {"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":14,},
{"id":{"name":"node_iteration_output","path":"scripts/node_iteration_output/node_iteration_output.yy",},"order":3,}, {"id":{"name":"node_iterator_output","path":"scripts/node_iterator_output/node_iterator_output.yy",},"order":3,},
{"id":{"name":"debug","path":"scripts/debug/debug.yy",},"order":9,}, {"id":{"name":"debug","path":"scripts/debug/debug.yy",},"order":9,},
{"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},"order":3,}, {"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},"order":3,},
{"id":{"name":"node_lerp","path":"scripts/node_lerp/node_lerp.yy",},"order":12,}, {"id":{"name":"node_lerp","path":"scripts/node_lerp/node_lerp.yy",},"order":6,},
{"id":{"name":"s_node_pixel_sort","path":"sprites/s_node_pixel_sort/s_node_pixel_sort.yy",},"order":40,},
{"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},"order":32,}, {"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},"order":32,},
{"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":59,}, {"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":9,},
{"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,}, {"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,},
{"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":2,}, {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":2,},
{"id":{"name":"rm_main","path":"rooms/rm_main/rm_main.yy",},"order":0,}, {"id":{"name":"rm_main","path":"rooms/rm_main/rm_main.yy",},"order":0,},
@ -587,20 +618,20 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"font","folderPath":"folders/font.yy","order":8,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"font","folderPath":"folders/font.yy","order":8,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy","order":21,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy","order":19,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"bones","folderPath":"folders/functions/bones.yy","order":20,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"bones","folderPath":"folders/functions/bones.yy","order":18,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"compat","folderPath":"folders/functions/compat.yy","order":13,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"compat","folderPath":"folders/functions/compat.yy","order":13,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"curve","folderPath":"folders/functions/curve.yy","order":12,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"curve","folderPath":"folders/functions/curve.yy","order":12,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"debug","folderPath":"folders/functions/debug.yy","order":15,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"debug","folderPath":"folders/functions/debug.yy","order":14,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/functions/draw.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/functions/draw.yy","order":2,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"ds","folderPath":"folders/functions/ds.yy","order":5,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"ds","folderPath":"folders/functions/ds.yy","order":5,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"eval","folderPath":"folders/functions/eval.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"eval","folderPath":"folders/functions/eval.yy","order":10,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"files","folderPath":"folders/functions/files.yy","order":16,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"files","folderPath":"folders/functions/files.yy","order":15,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"importers","folderPath":"folders/functions/importers.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"importers","folderPath":"folders/functions/importers.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inputs","folderPath":"folders/functions/inputs.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"inputs","folderPath":"folders/functions/inputs.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"physics","folderPath":"folders/functions/physics.yy","order":14,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"physics","folderPath":"folders/functions/physics.yy","order":21,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"regex","folderPath":"folders/functions/regex.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"regex","folderPath":"folders/functions/regex.yy","order":11,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/functions/shader.yy","order":17,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/functions/shader.yy","order":16,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"string","folderPath":"folders/functions/string.yy","order":4,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"string","folderPath":"folders/functions/string.yy","order":4,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"surface","folderPath":"folders/functions/surface.yy","order":8,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"surface","folderPath":"folders/functions/surface.yy","order":8,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"value","folderPath":"folders/functions/value.yy","order":1,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"value","folderPath":"folders/functions/value.yy","order":1,},
@ -613,16 +644,29 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/data/3D.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/data/3D.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy","order":5,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy","order":5,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/data/color.yy","order":9,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/data/color.yy","order":9,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"feedback","folderPath":"folders/nodes/data/feedback.yy","order":14,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy","order":1,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy","order":1,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/data/generator.yy","order":4,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/data/generator.yy","order":4,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"group","folderPath":"folders/nodes/data/group.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"group","folderPath":"folders/nodes/data/group.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"input","folderPath":"folders/nodes/data/input.yy","order":0,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"input","folderPath":"folders/nodes/data/input.yy","order":0,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"iterate","folderPath":"folders/nodes/data/iterate.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"iterate","folderPath":"folders/nodes/data/iterate.yy","order":10,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/data/node.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/data/node.yy","order":11,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"number","folderPath":"folders/nodes/data/number.yy","order":3,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/data/render.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/data/render.yy","order":2,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"transform","folderPath":"folders/nodes/data/transform.yy","order":8,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"transform","folderPath":"folders/nodes/data/transform.yy","order":8,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"value","folderPath":"folders/nodes/data/value.yy","order":3,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/data/VFX.yy","order":13,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"icons","folderPath":"folders/nodes/icons.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"icons","folderPath":"folders/nodes/icons.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/icons/3D.yy","order":133,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/icons/animation.yy","order":135,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/icons/color.yy","order":136,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/icons/filter.yy","order":141,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/icons/generator.yy","order":142,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"input","folderPath":"folders/nodes/icons/input.yy","order":143,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/icons/node.yy","order":139,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/icons/render.yy","order":140,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"transform","folderPath":"folders/nodes/icons/transform.yy","order":145,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"value","folderPath":"folders/nodes/icons/value.yy","order":144,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/icons/VFX.yy","order":134,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"panels","folderPath":"folders/panels.yy","order":3,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"panels","folderPath":"folders/panels.yy","order":3,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspectors","folderPath":"folders/panels/data/inspectors.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspectors","folderPath":"folders/panels/data/inspectors.yy","order":6,},
@ -636,11 +680,10 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/shader/generator.yy","order":19,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/shader/generator.yy","order":19,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shape seperator","folderPath":"folders/shader/shape seperator.yy","order":35,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shape seperator","folderPath":"folders/shader/shape seperator.yy","order":35,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy","order":20,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy","order":20,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"warp","folderPath":"folders/shader/warp.yy","order":41,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/sprites.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/sprites.yy","order":10,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":2,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/data/VFX.yy","order":13,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"warp","folderPath":"folders/shader/warp.yy","order":41,},
], ],
"AudioGroups": [ "AudioGroups": [
{"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,},
@ -702,7 +745,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"5 Particle and effectors.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"5 Particle and effectors.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"4 Looping operation.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"4 Looping operation.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"2 animation.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"2 animation.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"tile_0126.png","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"tile_0126.png","CopyToMask":-1,"filePath":"datafiles/Getting started",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"card_back.png","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"card_back.png","CopyToMask":-1,"filePath":"datafiles/Getting started",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"card_clubs_02.png","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"card_clubs_02.png","CopyToMask":-1,"filePath":"datafiles/Getting started",},
@ -890,7 +932,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_dialog_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_dialog_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_refresh_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_refresh_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_tile_view_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_tile_view_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preset.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preset.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_stretch.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_stretch.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -907,8 +948,10 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
], ],
"MetaData": { "MetaData": {
"IDEVersion": "2022.11.0.54", "IDEVersion": "2022.11.1.56",
}, },
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -60,7 +60,9 @@
"node_blend_default": "blue_ltgrey", "node_blend_default": "blue_ltgrey",
"node_blend_number": "cyan", "node_blend_number": "cyan",
"node_blend_input": ["white", "lime", 0.5], "node_blend_input": ["white", "lime", 0.5],
"node_blend_loop": "lime", "node_blend_loop": "cyan",
"node_blend_vfx": "lime",
"node_blend_feedback": "pink",
"node_blend_collection": "yellow", "node_blend_collection": "yellow",
"node_blend_canvas": ["white", "orange", 0.5], "node_blend_canvas": ["white", "orange", 0.5],
"node_path_overlay_control_line": "blue_grey", "node_path_overlay_control_line": "blue_grey",
@ -89,7 +91,6 @@
"panel_bg_clear_inner": "blue_dkblack", "panel_bg_clear_inner": "blue_dkblack",
"panel_bg_clear": "blue_black", "panel_bg_clear": "blue_black",
"panel_graph_grid": "blue_dkgrey",
"panel_graph_minimap_outline": "blue_dkgrey", "panel_graph_minimap_outline": "blue_dkgrey",
"panel_graph_node_dimension": "blue_grey", "panel_graph_node_dimension": "blue_grey",
"panel_graph_minimap_focus": "blue_ltgrey", "panel_graph_minimap_focus": "blue_ltgrey",

View file

@ -1,91 +0,0 @@
{
"resourceType": "GMExtension",
"resourceVersion": "1.2",
"name": "FileDropper",
"optionsFile": "options.json",
"options": [],
"exportToGame": true,
"supportedTargets": 202375362,
"extensionVersion": "1.0.0",
"packageId": "",
"productId": "",
"author": "",
"date": "2019-05-07T04:22:47",
"license": "Free to use, also for commercial games.",
"description": "",
"helpfile": "",
"iosProps": false,
"tvosProps": false,
"androidProps": false,
"installdir": "",
"files": [
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"FileDropper.dll","origname":"extensions\\FileDropper.dll","init":"","final":"","kind":1,"uncompress":false,"functions":[
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_get_enabled","externalName":"file_dnd_get_enabled","kind":12,"help":"file_dnd_get_enabled()","hidden":false,"returnType":2,"argCount":-1,"args":[],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_set_enabled","externalName":"file_dnd_set_enabled","kind":12,"help":"file_dnd_set_enabled(enable)","hidden":false,"returnType":2,"argCount":1,"args":[
2,
],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_get_files","externalName":"file_dnd_get_files","kind":12,"help":"file_dnd_get_files()","hidden":false,"returnType":1,"argCount":-1,"args":[],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_set_files","externalName":"file_dnd_set_files","kind":12,"help":"file_dnd_set_files(pattern,allowfiles,allowdirs,allowmulti)","hidden":false,"returnType":2,"argCount":4,"args":[
1,
2,
2,
2,
],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_get_hwnd","externalName":"file_dnd_get_hwnd","kind":1,"help":"file_dnd_get_hwnd()","hidden":false,"returnType":1,"argCount":0,"args":[],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dnd_set_hwnd","externalName":"file_dnd_set_hwnd","kind":1,"help":"file_dnd_set_hwnd(hwnd)","hidden":false,"returnType":2,"argCount":0,"args":[
1,
],"documentation":"",},
],"constants":[
{"resourceType":"GMExtensionConstant","resourceVersion":"1.0","name":"hwnd_main","value":"window_handle()","hidden":false,},
{"resourceType":"GMExtensionConstant","resourceVersion":"1.0","name":"hwnd_default","value":"pointer_null","hidden":false,},
],"ProxyFiles":[
{"resourceType":"GMProxyFile","resourceVersion":"1.0","name":"FileDropper.dylib","TargetMask":1,},
],"copyToTargets":66,"usesRunnerInterface":false,"order":[
{"name":"file_dnd_get_enabled","path":"extensions/FileDropper/FileDropper.yy",},
{"name":"file_dnd_set_enabled","path":"extensions/FileDropper/FileDropper.yy",},
{"name":"file_dnd_get_files","path":"extensions/FileDropper/FileDropper.yy",},
{"name":"file_dnd_set_files","path":"extensions/FileDropper/FileDropper.yy",},
{"name":"file_dnd_get_hwnd","path":"extensions/FileDropper/FileDropper.yy",},
{"name":"file_dnd_set_hwnd","path":"extensions/FileDropper/FileDropper.yy",},
],},
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"FileDropper.dll.zip","origname":"extensions\\FileDropper.dll.zip","init":"","final":"","kind":4,"uncompress":false,"functions":[],"constants":[],"ProxyFiles":[],"copyToTargets":0,"usesRunnerInterface":false,"order":[],},
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"FileDropper.dylib.zip","origname":"extensions\\FileDropper.dylib.zip","init":"","final":"","kind":4,"uncompress":false,"functions":[],"constants":[],"ProxyFiles":[],"copyToTargets":0,"usesRunnerInterface":false,"order":[],},
],
"classname": "",
"tvosclassname": "",
"tvosdelegatename": "",
"iosdelegatename": "",
"androidclassname": "",
"sourcedir": "",
"androidsourcedir": "",
"macsourcedir": "",
"maccompilerflags": "",
"tvosmaccompilerflags": "",
"maclinkerflags": "",
"tvosmaclinkerflags": "",
"iosplistinject": "",
"tvosplistinject": "",
"androidinject": "",
"androidmanifestinject": "",
"androidactivityinject": "",
"gradleinject": "",
"androidcodeinjection": "",
"hasConvertedCodeInjection": true,
"ioscodeinjection": "",
"tvoscodeinjection": "",
"iosSystemFrameworkEntries": [],
"tvosSystemFrameworkEntries": [],
"iosThirdPartyFrameworkEntries": [],
"tvosThirdPartyFrameworkEntries": [],
"IncludedResources": [],
"androidPermissions": [],
"copyToTargets": 202375362,
"iosCocoaPods": "",
"tvosCocoaPods": "",
"iosCocoaPodDependencies": "",
"tvosCocoaPodDependencies": "",
"parent": {
"name": "Extensions",
"path": "folders/Extensions.yy",
},
}

View file

@ -0,0 +1,6 @@
#define file_dropper_init
/// file_dropper_init()->bool
var _buf = file_dropper_prepare_buffer(8);
buffer_write(_buf, buffer_u64, int64(window_handle()));
return file_dropper_init_raw(buffer_get_address(_buf), 8);

View file

@ -0,0 +1,495 @@
#pragma once
#include "stdafx.h"
// As per http://help.yoyogames.com/hc/en-us/articles/216755258:
typedef int gml_ds_map;
//
typedef void (*gml_event_perform_async_t)(gml_ds_map map, int event_type);
typedef int (*gml_ds_map_create_ext_t)(int n, ...);
typedef bool (*gml_ds_map_set_double_t)(gml_ds_map map, char* key, double value);
typedef bool (*gml_ds_map_set_string_t)(gml_ds_map map, char* key, const char* value);
//
extern gml_event_perform_async_t gml_event_perform_async;
extern gml_ds_map_create_ext_t gml_ds_map_create_ext;
extern gml_ds_map_set_double_t gml_ds_map_set_double;
extern gml_ds_map_set_string_t gml_ds_map_set_string;
//
inline gml_ds_map gml_ds_map_create() {
return gml_ds_map_create_ext(0);
}
// A wrapper for queuing async events for GML easier.
class gml_async_event {
private:
gml_ds_map map;
public:
gml_async_event() {
map = gml_ds_map_create();
}
gml_async_event(char* type) {
map = gml_ds_map_create();
gml_ds_map_set_string(map, "event_type", type);
}
~gml_async_event() {
//
}
/// Dispatches this event and cleans up the map.
void dispatch(int kind) {
gml_event_perform_async(map, kind);
}
bool set(char* key, double value) {
return gml_ds_map_set_double(map, key, value);
}
bool set(char* key, const char* value) {
return gml_ds_map_set_string(map, key, value);
}
};#pragma once
#include "stdafx.h"
#include <vector>
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
#include <optional>
#endif
#include <stdint.h>
#include <cstring>
#include <tuple>
using namespace std;
#define dllg /* tag */
#if defined(WIN32)
#define dllx extern "C" __declspec(dllexport)
#elif defined(GNUC)
#define dllx extern "C" __attribute__ ((visibility("default")))
#else
#define dllx extern "C"
#endif
#ifdef _WINDEF_
typedef HWND GAME_HWND;
#endif
struct gml_buffer {
private:
uint8_t* _data;
int32_t _size;
int32_t _tell;
public:
gml_buffer() : _data(nullptr), _tell(0), _size(0) {}
gml_buffer(uint8_t* data, int32_t size, int32_t tell) : _data(data), _size(size), _tell(tell) {}
inline uint8_t* data() { return _data; }
inline int32_t tell() { return _tell; }
inline int32_t size() { return _size; }
};
class gml_istream {
uint8_t* pos;
uint8_t* start;
public:
gml_istream(void* origin) : pos((uint8_t*)origin), start((uint8_t*)origin) {}
template<class T> T read() {
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable to be read");
T result{};
std::memcpy(&result, pos, sizeof(T));
pos += sizeof(T);
return result;
}
char* read_string() {
char* r = (char*)pos;
while (*pos != 0) pos++;
pos++;
return r;
}
template<class T> std::vector<T> read_vector() {
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable to be read");
auto n = read<uint32_t>();
std::vector<T> vec(n);
std::memcpy(vec.data(), pos, sizeof(T) * n);
pos += sizeof(T) * n;
return vec;
}
gml_buffer read_gml_buffer() {
auto _data = (uint8_t*)read<int64_t>();
auto _size = read<int32_t>();
auto _tell = read<int32_t>();
return gml_buffer(_data, _size, _tell);
}
#pragma region Tuples
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
template<typename... Args>
std::tuple<Args...> read_tuple() {
std::tuple<Args...> tup;
std::apply([this](auto&&... arg) {
((
arg = this->read<std::remove_reference_t<decltype(arg)>>()
), ...);
}, tup);
return tup;
}
template<class T> optional<T> read_optional() {
if (read<bool>()) {
return read<T>;
} else return {};
}
#else
template<class A, class B> std::tuple<A, B> read_tuple() {
A a = read<A>();
B b = read<B>();
return std::tuple<A, B>(a, b);
}
template<class A, class B, class C> std::tuple<A, B, C> read_tuple() {
A a = read<A>();
B b = read<B>();
C c = read<C>();
return std::tuple<A, B, C>(a, b, c);
}
template<class A, class B, class C, class D> std::tuple<A, B, C, D> read_tuple() {
A a = read<A>();
B b = read<B>();
C c = read<C>();
D d = read<d>();
return std::tuple<A, B, C, D>(a, b, c, d);
}
#endif
};
class gml_ostream {
uint8_t* pos;
uint8_t* start;
public:
gml_ostream(void* origin) : pos((uint8_t*)origin), start((uint8_t*)origin) {}
template<class T> void write(T val) {
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable to be write");
memcpy(pos, &val, sizeof(T));
pos += sizeof(T);
}
void write_string(const char* s) {
for (int i = 0; s[i] != 0; i++) write<char>(s[i]);
write<char>(0);
}
template<class T> void write_vector(std::vector<T>& vec) {
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable to be write");
auto n = vec.size();
write<uint32_t>(n);
memcpy(pos, vec.data(), n * sizeof(T));
pos += n * sizeof(T);
}
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
template<typename... Args>
void write_tuple(std::tuple<Args...> tup) {
std::apply([this](auto&&... arg) {
(this->write(arg), ...);
}, tup);
}
template<class T> void write_optional(optional<T>& val) {
auto hasValue = val.has_value();
write<bool>(hasValue);
if (hasValue) write<T>(val.value());
}
#else
template<class A, class B> void write_tuple(std::tuple<A, B>& tup) {
write<A>(std::get<0>(tup));
write<B>(std::get<1>(tup));
}
template<class A, class B, class C> void write_tuple(std::tuple<A, B, C>& tup) {
write<A>(std::get<0>(tup));
write<B>(std::get<1>(tup));
write<C>(std::get<2>(tup));
}
template<class A, class B, class C, class D> void write_tuple(std::tuple<A, B, C, D>& tup) {
write<A>(std::get<0>(tup));
write<B>(std::get<1>(tup));
write<C>(std::get<2>(tup));
write<D>(std::get<3>(tup));
}
#endif
};
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by file_dropper.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifdef _WINDOWS
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#endif
#if defined(WIN32)
#define dllx extern "C" __declspec(dllexport)
#elif defined(GNUC)
#define dllx extern "C" __attribute__ ((visibility("default")))
#else
#define dllx extern "C"
#endif
#define trace(...) { printf("[file_dropper:%d] ", __LINE__); printf(__VA_ARGS__); printf("\n"); fflush(stdout); }
#include "gml_ext.h"
// TODO: reference additional headers your program requires here#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
#pragma once
#include "stdafx.h"
template<typename T> T* malloc_arr(size_t count) {
return (T*)malloc(sizeof(T) * count);
}
template<typename T> T* realloc_arr(T* arr, size_t count) {
return (T*)realloc(arr, sizeof(T) * count);
}
template<typename T> T* memcpy_arr(T* dst, const T* src, size_t count) {
return (T*)memcpy(dst, src, sizeof(T) * count);
}
template<typename C> class tiny_string_t {
C* _data = nullptr;
size_t _size = 0;
size_t _capacity = 0;
public:
tiny_string_t() {}
inline void init(size_t capacity = 32) {
_data = malloc_arr<C>(capacity);
_size = 0;
_capacity = capacity;
}
inline void init(const C* val) {
init(4);
set(val);
}
/// Returns current size, in characters (not including final NUL)
inline size_t size() { return _size; }
inline void setSize(size_t size) { _size = size; }
inline bool empty() {
return _size == 0;
}
inline C* c_str() {
return _data;
}
inline C* prepare(size_t capacity) {
if (_capacity < capacity) {
auto new_data = realloc_arr(_data, capacity);
if (new_data == nullptr) {
trace("Failed to reallocate %zu bytes in tiny_string::prepare", sizeof(C) * capacity);
return nullptr;
}
_data = new_data;
_capacity = capacity;
}
return _data;
}
inline const C* set(const C* value, size_t len = SIZE_MAX) {
if (len == SIZE_MAX) {
const C* iter = value;
len = 1;
while (*iter) { iter++; len++; }
}
C* result = prepare(len);
memcpy_arr(result, value, len);
_size = len - 1;
return result;
}
//
inline void operator=(const C* value) { set(value); }
template<size_t size> inline void operator =(const C(&value)[size]) { set(value, size); }
};
struct tiny_string : public tiny_string_t<char> {
public:
inline char* conv(const wchar_t* wstr) {
auto size = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
auto str = prepare(size);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, size, NULL, NULL);
setSize(size - 1);
return str;
}
inline void operator=(const char* value) { set(value); }
template<size_t size> inline void operator =(const char(&value)[size]) { set(value, size); }
};
struct tiny_wstring : public tiny_string_t<wchar_t> {
public:
inline wchar_t* conv(const char* str) {
auto size = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
auto wstr = prepare(size);
MultiByteToWideChar(CP_UTF8, 0, str, -1, wstr, size);
setSize(size - 1);
return wstr;
}
inline void operator=(const wchar_t* value) { set(value); }
template<size_t size> inline void operator =(const wchar_t(&value)[size]) { set(value, size); }
};#include "gml_ext.h"
extern bool file_dropper_init(GAME_HWND hwnd);
dllx double file_dropper_init_raw(void* _in_ptr, double _in_ptr_size) {
gml_istream _in(_in_ptr);
GAME_HWND _arg_hwnd;
_arg_hwnd = (GAME_HWND)_in.read<uint64_t>();
return file_dropper_init(_arg_hwnd);
}
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/// @author YellowAfterlife
#include <oleidl.h>
#include "stdafx.h"
#include "gml_async_glue.h"
#include "tiny_string.h"
static tiny_string utf8c;
static UINT GMDropTarget_refCount = 0;
struct GMDropTarget : IDropTarget {
// Inherited via IDropTarget
virtual HRESULT __stdcall QueryInterface(REFIID riid, void** ppvObject) override {
if (IsEqualIID(riid, IID_IDropTarget) || IsEqualIID(riid, IID_IUnknown)) {
*ppvObject = this;
this->AddRef();
return NOERROR;
} else {
*ppvObject = nullptr;
return E_NOINTERFACE;
}
}
virtual ULONG __stdcall AddRef(void) override {
return ++GMDropTarget_refCount;
}
virtual ULONG __stdcall Release(void) override {
return --GMDropTarget_refCount;
}
virtual HRESULT __stdcall DragEnter(IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) override {
return S_OK;
}
virtual HRESULT __stdcall DragOver(DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) override {
return S_OK;
}
virtual HRESULT __stdcall DragLeave(void) override {
return S_OK;
}
virtual HRESULT __stdcall Drop(IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) override {
//trace("drop");
FORMATETC formatEtc;
formatEtc.cfFormat = CF_HDROP;
formatEtc.dwAspect = DVASPECT_CONTENT;
formatEtc.lindex = -1;
formatEtc.ptd = NULL;
formatEtc.tymed = TYMED_HGLOBAL;
STGMEDIUM medium;
auto hr = pDataObj->GetData(&formatEtc, &medium);
if (FAILED(hr)) return hr;
if (medium.tymed != TYMED_HGLOBAL) return S_OK;
auto drop = (HDROP)medium.hGlobal;
auto fileCount = DragQueryFileW(drop, UINT32_MAX, NULL, 0);
//trace("fileCount=%d", fileCount);
for (auto k = 0u; k < fileCount; k++) {
auto nameLen = DragQueryFileW(drop, k, nullptr, 0);
if (nameLen == 0) continue;
auto wname = malloc_arr<wchar_t>(nameLen + 1);
DragQueryFile(drop, k, wname, nameLen + 1);
auto name = utf8c.conv(wname);
gml_async_event e("file_drop");
e.set("filename", name);
e.dispatch(75); // async system
delete wname;
}
return S_OK;
}
};
static GMDropTarget* dropTarget = nullptr;
dllg bool file_dropper_init(GAME_HWND hwnd) {
if (dropTarget != nullptr) return true;
auto hr = OleInitialize(0);
if (hr != S_OK && hr != S_FALSE) {
trace("OleInitialize failed, hresult=0x%x", hr);
return false;
}
dropTarget = new GMDropTarget();
utf8c.init();
hr = RegisterDragDrop(hwnd, dropTarget);
if (FAILED(hr)) trace("RegisterDragDrop failed, hresult=0x%x", hr);
return SUCCEEDED(hr);
}
#include "gml_async_glue.h"
gml_event_perform_async_t gml_event_perform_async = nullptr;
gml_ds_map_create_ext_t gml_ds_map_create_ext = nullptr;
gml_ds_map_set_double_t gml_ds_map_set_double = nullptr;
gml_ds_map_set_string_t gml_ds_map_set_string = nullptr;
// Called by GM on DLL init
dllx double RegisterCallbacks(void* f1, void* f2, void* f3, void* f4) {
gml_event_perform_async = (gml_event_perform_async_t)f1;
gml_ds_map_create_ext = (gml_ds_map_create_ext_t)f2;
gml_ds_map_set_double = (gml_ds_map_set_double_t)f3;
gml_ds_map_set_string = (gml_ds_map_set_string_t)f4;
return 0;
}// stdafx.cpp : source file that includes just the standard includes
// file_dropper.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

Binary file not shown.

View file

@ -0,0 +1,13 @@
#define file_dropper_prepare_buffer
/// (size:int)->buffer~
var _size = argument0;
gml_pragma("global", "global.__file_dropper_buffer = undefined");
var _buf = global.__file_dropper_buffer;
if (_buf == undefined) {
_buf = buffer_create(_size, buffer_grow, 1);
global.__file_dropper_buffer = _buf;
} else if (buffer_get_size(_buf) < _size) {
buffer_resize(_buf, _size);
}
buffer_seek(_buf, buffer_seek_start, 0);
return _buf;

View file

@ -0,0 +1,89 @@
{
"resourceType": "GMExtension",
"resourceVersion": "1.2",
"name": "file_dropper",
"optionsFile": "options.json",
"options": [],
"exportToGame": true,
"supportedTargets": 113497714299118,
"extensionVersion": "1.0.0",
"packageId": "",
"productId": "",
"author": "",
"date": "2019-12-12T01:34:29",
"license": "Proprietary",
"description": "",
"helpfile": "",
"iosProps": true,
"tvosProps": false,
"androidProps": true,
"installdir": "",
"files": [
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"file_dropper.dll","origname":"extensions\\file_dropper.dll","init":"","final":"","kind":1,"uncompress":false,"functions":[
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dropper_init_raw","externalName":"file_dropper_init_raw","kind":11,"help":"","hidden":true,"returnType":2,"argCount":2,"args":[
1,
2,
],"documentation":"",},
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"RegisterCallbacks","externalName":"RegisterCallbacks","kind":11,"help":"","hidden":true,"returnType":2,"argCount":4,"args":[
1,
1,
1,
1,
],"documentation":"",},
],"constants":[],"ProxyFiles":[
{"resourceType":"GMProxyFile","resourceVersion":"1.0","name":"file_dropper_x64.dll","TargetMask":6,},
],"copyToTargets":9223372036854775807,"usesRunnerInterface":false,"order":[
{"name":"file_dropper_init_raw","path":"extensions/file_dropper/file_dropper.yy",},
{"name":"RegisterCallbacks","path":"extensions/file_dropper/file_dropper.yy",},
],},
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"file_dropper.gml","origname":"extensions\\gml.gml","init":"","final":"","kind":2,"uncompress":false,"functions":[
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dropper_prepare_buffer","externalName":"file_dropper_prepare_buffer","kind":11,"help":"","hidden":true,"returnType":2,"argCount":1,"args":[
2,
],"documentation":"",},
],"constants":[],"ProxyFiles":[],"copyToTargets":9223372036854775807,"usesRunnerInterface":false,"order":[
{"name":"file_dropper_prepare_buffer","path":"extensions/file_dropper/file_dropper.yy",},
],},
{"resourceType":"GMExtensionFile","resourceVersion":"1.0","name":"","filename":"autogen.gml","origname":"extensions\\autogen.gml","init":"","final":"","kind":2,"uncompress":false,"functions":[
{"resourceType":"GMExtensionFunction","resourceVersion":"1.0","name":"file_dropper_init","externalName":"file_dropper_init","kind":2,"help":"file_dropper_init()->bool","hidden":false,"returnType":2,"argCount":0,"args":[],"documentation":"",},
],"constants":[],"ProxyFiles":[],"copyToTargets":-1,"usesRunnerInterface":false,"order":[
{"name":"file_dropper_init","path":"extensions/file_dropper/file_dropper.yy",},
],},
],
"classname": "",
"tvosclassname": "",
"tvosdelegatename": "",
"iosdelegatename": "",
"androidclassname": "",
"sourcedir": "",
"androidsourcedir": "",
"macsourcedir": "",
"maccompilerflags": "",
"tvosmaccompilerflags": "",
"maclinkerflags": "",
"tvosmaclinkerflags": "",
"iosplistinject": "",
"tvosplistinject": "",
"androidinject": "",
"androidmanifestinject": "",
"androidactivityinject": "",
"gradleinject": "",
"androidcodeinjection": "",
"hasConvertedCodeInjection": true,
"ioscodeinjection": "",
"tvoscodeinjection": "",
"iosSystemFrameworkEntries": [],
"tvosSystemFrameworkEntries": [],
"iosThirdPartyFrameworkEntries": [],
"tvosThirdPartyFrameworkEntries": [],
"IncludedResources": [],
"androidPermissions": [],
"copyToTargets": 113497714299118,
"iosCocoaPods": "",
"tvosCocoaPods": "",
"iosCocoaPodDependencies": "",
"tvosCocoaPodDependencies": "",
"parent": {
"name": "Extensions",
"path": "folders/Extensions.yy",
},
}

Binary file not shown.

View file

@ -16,6 +16,7 @@ event_inherited();
[ "Chromatic aberration shader", "jcant0n" ], [ "Chromatic aberration shader", "jcant0n" ],
[ "gif importer\nWindow commands\nExecute shell simple", "YellowAfterLife" ], [ "gif importer\nWindow commands\nExecute shell simple", "YellowAfterLife" ],
[ "Triangle grid", "Farini" ], [ "Triangle grid", "Farini" ],
[ "Pixel sort", "Ciphrd" ],
] ]
sc_thank = new scrollPane(dialog_w - ui(64), thank_h, function(_y, _m) { sc_thank = new scrollPane(dialog_w - ui(64), thank_h, function(_y, _m) {

View file

@ -13,11 +13,10 @@ event_inherited();
function setPath(path) { function setPath(path) {
paths = path; paths = path;
is_dir = directory_exists(path); is_dir = directory_exists(path[0]);
if(is_dir) { if(is_dir)
dialog_h += ui(96); dialog_h += ui(96);
}
} }
cb_recursive = new checkBox(function(val) { dir_recursive = !dir_recursive; }); cb_recursive = new checkBox(function(val) { dir_recursive = !dir_recursive; });
@ -27,8 +26,8 @@ event_inherited();
#region nodes #region nodes
nodes = [ nodes = [
nodeFind("Image"), ALL_NODES[? "Node_Image"],
nodeFind("Image array"), ALL_NODES[? "Node_Image_Sequence"],
nodeFind("Animation"), ALL_NODES[? "Node_Image_Animated"],
]; ];
#endregion #endregion

View file

@ -29,7 +29,7 @@ if !ready exit;
if(sHOVER && point_in_rectangle(mouse_mx, mouse_my, xx, yy, xx + grid_width, yy + grid_size)) { if(sHOVER && point_in_rectangle(mouse_mx, mouse_my, xx, yy, xx + grid_width, yy + grid_size)) {
draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1); draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_press(mb_left, sFOCUS)) { if(mouse_press(mb_left, sFOCUS)) {
var path_arr = paths_to_array(paths, dir_recursive, dir_filter); var path_arr = path_search(paths, dir_recursive, dir_filter);
switch(i) { switch(i) {
case 0 : case 0 :
for( var i = 0; i < array_length(path_arr); i++ ) { for( var i = 0; i < array_length(path_arr); i++ ) {

View file

@ -11,7 +11,7 @@ event_inherited();
if(ADD_NODE_W == -1 || ADD_NODE_H == -1) { if(ADD_NODE_W == -1 || ADD_NODE_H == -1) {
ADD_NODE_W = ui(532); ADD_NODE_W = ui(532);
ADD_NODE_H = ui(346); ADD_NODE_H = ui(400);
} }
dialog_w = ADD_NODE_W; dialog_w = ADD_NODE_W;
@ -24,8 +24,11 @@ event_inherited();
anchor = ANCHOR.left | ANCHOR.top; anchor = ANCHOR.left | ANCHOR.top;
page_key = ADD_NODE_PAGE == ""? NODE_CATAGORY[| 3] : ADD_NODE_PAGE; function setPage(pageIndex) {
page = ALL_NODES[? page_key]; ADD_NODE_PAGE = pageIndex;
node_list = NODE_CATEGORY[| ADD_NODE_PAGE].list;
}
setPage(ADD_NODE_PAGE);
function buildNode(_node, _param = "") { function buildNode(_node, _param = "") {
instance_destroy(); instance_destroy();
@ -36,7 +39,7 @@ event_inherited();
var _inputs = 0, _outputs = 0; var _inputs = 0, _outputs = 0;
if(is_struct(_node) && instanceof(_node) == "NodeObject") { if(is_struct(_node) && instanceof(_node) == "NodeObject") {
_new_node = _node.build(node_target_x, node_target_y, _param); _new_node = _node.build(node_target_x, node_target_y,, _param);
if(!_new_node) return; if(!_new_node) return;
_inputs = _new_node.inputs; _inputs = _new_node.inputs;
_outputs = _new_node.outputs; _outputs = _new_node.outputs;
@ -102,54 +105,44 @@ event_inherited();
var hh = 0; var hh = 0;
var hg = ui(28); var hg = ui(28);
var key = ds_map_find_first(ALL_NODES);
var cnt = PANEL_GRAPH.getCurrentContext(); var cnt = PANEL_GRAPH.getCurrentContext();
var context = cnt == -1? "" : instanceof(cnt); var context = cnt == -1? "" : instanceof(cnt);
for(var i = 0; i < ds_list_size(NODE_CATAGORY); i++) { for(var i = 0; i < ds_list_size(NODE_CATEGORY); i++) {
var key = NODE_CATAGORY[| i]; var cat = NODE_CATEGORY[| i];
var name = cat.name;
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
switch(key) { if(cat.filter != "") {
case "Group" : if(context != cat.filter) {
if(context != "Node_Group") continue; if(ADD_NODE_PAGE == i) setPage(NODE_PAGE_DEFAULT);
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent); continue;
break; }
case "Loop" : draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent);
if(context != "Node_Iterate") continue;
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent);
break;
case "VFX" :
if(context != "Node_VFX_Group") continue;
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent);
break;
} }
if(key == page_key) { if(i == ADD_NODE_PAGE) {
draw_sprite_stretched(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg); draw_sprite_stretched(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg);
} else if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _y + hh, ui(100), _y + hh + hg - 1)) { } else if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _y + hh, ui(100), _y + hh + hg - 1)) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh + ui(3), ui(103), hg - ui(6), c_white, 0.75); draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, ui(132), hg, c_white, 0.75);
if(mouse_click(mb_left, sFOCUS)) { if(mouse_click(mb_left, sFOCUS)) {
page_key = key; setPage(i);
ADD_NODE_PAGE = key;
page = ALL_NODES[? page_key];
content_pane.scroll_y = 0; content_pane.scroll_y = 0;
content_pane.scroll_y_to = 0; content_pane.scroll_y_to = 0;
} }
} }
draw_text(ui(8), _y + hh + hg / 2, key); draw_text(ui(8), _y + hh + hg / 2, name);
hh += hg; hh += hg;
} }
return hh; return hh;
}); });
content_pane = new scrollPane(dialog_w - ui(144), dialog_h - ui(66), function(_y, _m) { content_pane = new scrollPane(dialog_w - ui(136), dialog_h - ui(66), function(_y, _m) {
draw_clear_alpha(c_white, 0); draw_clear_alpha(c_white, 0);
var nodes = page; var node_count = ds_list_size(node_list);
var node_count = ds_list_size(nodes);
var hh = 0; var hh = 0;
if(ADD_NODE_MODE == 0) { if(ADD_NODE_MODE == 0) {
@ -167,7 +160,7 @@ event_inherited();
for(var j = 0; j < col; j++) { for(var j = 0; j < col; j++) {
var index = i * col + j; var index = i * col + j;
if(index < node_count) { if(index < node_count) {
var _node = nodes[| index]; var _node = node_list[| index];
if(!_node) continue; if(!_node) continue;
var _nx = grid_space + (grid_width + grid_space) * j; var _nx = grid_space + (grid_width + grid_space) * j;
@ -204,7 +197,7 @@ event_inherited();
hh += list_height; hh += list_height;
for(var i = 0; i < node_count; i++) { for(var i = 0; i < node_count; i++) {
var _node = nodes[| i]; var _node = node_list[| i];
if(!_node) continue; if(!_node) continue;
if(i % 2) { if(i % 2) {
@ -242,13 +235,13 @@ event_inherited();
dialog_resizable = true; dialog_resizable = true;
dialog_w_min = ui(200); dialog_w_min = ui(200);
dialog_h_min = ui(120); dialog_h_min = ui(120);
dialog_w_max = ui(800); dialog_w_max = ui(960);
dialog_h_max = ui(640); dialog_h_max = ui(800);
onResize = function() { onResize = function() {
catagory_pane.resize(ui(132), dialog_h - ui(66)); catagory_pane.resize(ui(132), dialog_h - ui(66));
content_pane.resize(dialog_w - ui(144), dialog_h - ui(66)); content_pane.resize(dialog_w - ui(136), dialog_h - ui(66));
search_pane.resize(dialog_w - ui(40), dialog_h - ui(66)); search_pane.resize(dialog_w - ui(32), dialog_h - ui(66));
ADD_NODE_W = dialog_w; ADD_NODE_W = dialog_w;
ADD_NODE_H = dialog_h; ADD_NODE_H = dialog_h;
@ -276,18 +269,15 @@ event_inherited();
var context = cnt == -1? "" : instanceof(cnt); var context = cnt == -1? "" : instanceof(cnt);
var search_lower = string_lower(search_string); var search_lower = string_lower(search_string);
for(var i = 0; i < ds_list_size(NODE_CATAGORY); i++) { for(var i = 0; i < ds_list_size(NODE_CATEGORY); i++) {
var key = NODE_CATAGORY[| i]; var cat = NODE_CATEGORY[| i];
switch(key) { if(cat.filter != "" && context != cat.filter)
case "Group" : if(context != "Node_Group") continue; break; continue;
case "Loop" : if(context != "Node_Iterate") continue; break;
}
var _page = ALL_NODES[? key]; var _content = cat.list;
for(var j = 0; j < ds_list_size(_content); j++) {
for(var j = 0; j < ds_list_size(_page); j++) { var _node = _content[| j];
var _node = _page[| j];
if(!_node) continue; if(!_node) continue;
var match = string_pos(search_lower, string_lower(_node.name)) > 0; var match = string_pos(search_lower, string_lower(_node.name)) > 0;
@ -307,7 +297,7 @@ event_inherited();
searchCollection(search_list, search_string, false); searchCollection(search_list, search_string, false);
} }
search_pane = new scrollPane(dialog_w - ui(40), dialog_h - ui(66), function(_y, _m) { search_pane = new scrollPane(dialog_w - ui(32), dialog_h - ui(66), function(_y, _m) {
draw_clear_alpha(c_white, 0); draw_clear_alpha(c_white, 0);
var amo = ds_list_size(search_list); var amo = ds_list_size(search_list);

View file

@ -1,8 +1,9 @@
/// @description init /// @description init
#region pos #region pos
var hght = line_height(f_p0, 8); var hght = line_height(f_p0, 8);
var hh = array_length(scrollbox.data_list) * hght; var hh = array_length(scrollbox.data) * hght;
dialog_h = hh; dialog_h = min(max_h, hh);
sc_content.resize(dialog_w, dialog_h);
#endregion #endregion
event_inherited(); event_inherited();

View file

@ -2,6 +2,7 @@
event_inherited(); event_inherited();
#region #region
max_h = 640;
align = fa_center; align = fa_center;
draggable = false; draggable = false;
destroy_on_click_out = true; destroy_on_click_out = true;
@ -9,4 +10,33 @@ event_inherited();
scrollbox = noone; scrollbox = noone;
anchor = ANCHOR.top | ANCHOR.left; anchor = ANCHOR.top | ANCHOR.left;
sc_content = new scrollPane(0, 0, function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
var hght = line_height(f_p0, 8);
var data = scrollbox.data;
var _h = array_length(data) * hght;
var _dw = sc_content.surface_w;
for(var i = 0; i < array_length(data); i++) {
var _ly = _y + i * hght;
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _ly + 1, _dw, _ly + hght - 1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, 0, _ly, _dw, hght, COLORS.dialog_menubox_highlight, 1);
if(mouse_press(mb_left, sFOCUS)) {
scrollbox.onModify(i);
instance_destroy();
}
}
draw_set_text(f_p0, align, fa_center, COLORS._main_text);
if(align == fa_center)
draw_text_cut(_dw / 2, _ly + hght / 2, data[i], _dw);
else if(align == fa_left)
draw_text_cut(ui(8), _ly + hght / 2, data[i], _dw);
}
return _h;
});
#endregion #endregion

View file

@ -1,25 +1,6 @@
/// @description init /// @description init
#region draw #region draw
var hght = line_height(f_p0, 8);
draw_sprite_stretched(THEME.textbox, 1, dialog_x, dialog_y, dialog_w, dialog_h); draw_sprite_stretched(THEME.textbox, 1, dialog_x, dialog_y, dialog_w, dialog_h);
sc_content.active = sHOVER;
for(var i = 0; i < array_length(scrollbox.data_list); i++) { sc_content.draw(dialog_x, dialog_y);
var _ly = dialog_y + i * hght;
if(sHOVER && point_in_rectangle(mouse_mx, mouse_my, dialog_x, _ly + 1, dialog_x + dialog_w, _ly + hght - 1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, _ly, dialog_w, hght, COLORS.dialog_menubox_highlight, 1);
if(mouse_press(mb_left, sFOCUS)) {
scrollbox.onModify(i);
instance_destroy();
}
}
draw_set_text(f_p0, align, fa_center, COLORS._main_text);
if(align == fa_center)
draw_text(dialog_x + dialog_w / 2, _ly + hght / 2, scrollbox.data_list[i]);
else if(align == fa_left)
draw_text(dialog_x + ui(8), _ly + hght / 2, scrollbox.data_list[i]);
}
#endregion #endregion

View file

@ -14,7 +14,7 @@ event_inherited();
var y0 = dialog_y + ui(128); var y0 = dialog_y + ui(128);
var y1 = dialog_y + dialog_h - ui(16); var y1 = dialog_y + dialog_h - ui(16);
sp_recent = new scrollPane(x1 - x0 - ui(12), y1 - y0, function(_y, _m) { sp_recent = new scrollPane(x1 - x0 - ui(8), y1 - y0, function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear_inner, 0); draw_clear_alpha(COLORS.panel_bg_clear_inner, 0);
var ww = sp_recent.surface_w - ui(2); var ww = sp_recent.surface_w - ui(2);
var hh = 0; var hh = 0;
@ -54,7 +54,7 @@ event_inherited();
x0 = x1 + ui(16); x0 = x1 + ui(16);
x1 = dialog_x + dialog_w - ui(16); x1 = dialog_x + dialog_w - ui(16);
sp_sample = new scrollPane(x1 - x0 - ui(12), y1 - y0, function(_y, _m) { sp_sample = new scrollPane(x1 - x0 - ui(8), y1 - y0, function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear_inner, 0); draw_clear_alpha(COLORS.panel_bg_clear_inner, 0);
var hh = 0; var hh = 0;
var grid_heigh = ui(96); var grid_heigh = ui(96);

View file

@ -1,10 +1,4 @@
/// @description file drop /// @description file drop
#region drop #region drop
PANEL_GRAPH.stepBegin(); PANEL_GRAPH.stepBegin();
if(PANEL_GRAPH.dropFile(file_dropping)) {
Render(false);
} else
load_file_path(file_dropping, true);
file_dropping = "";
#endregion #endregion

View file

@ -59,47 +59,43 @@
#endregion #endregion
#region file drop #region file drop
file_dnd_set_hwnd(window_handle()); file_dropper_init();
file_dnd_set_enabled(true); drop_path = [];
file_dnd_filelist = "";
file_dropping = "";
file_dnd_pattern = "*.*";
file_dnd_allowfiles = true;
file_dnd_allowdirs = true;
file_dnd_allowmulti = true;
function load_file_path(path, _new = false) { function load_file_path(path) {
if(string_pos("\n", path) == 1) path = string_replace(path, "\n", ""); if(array_length(path) == 0) return;
var is_multi = array_length(path) > 1 || directory_exists(path[0]);
var is_multi = string_pos("\n", path) != 0 || directory_exists(path);
if(is_multi) { if(is_multi) {
with(dialogCall(o_dialog_add_multiple_images, WIN_W / 2, WIN_H / 2)) { with(dialogCall(o_dialog_add_multiple_images, WIN_W / 2, WIN_H / 2)) {
setPath(path); setPath(path);
} }
} else { } else {
PANEL_GRAPH.stepBegin(); PANEL_GRAPH.onStepBegin();
path = path[0];
var ext = filename_ext(path); var ext = filename_ext(path);
var node = noone;
switch(ext) { switch(ext) {
case ".png" : case ".png" :
case ".jpg" : case ".jpg" :
case ".jpeg" : case ".jpeg" :
Node_create_Image_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path); node = Node_create_Image_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
break; break;
case ".gif" : case ".gif" :
Node_create_Image_gif_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path); node = Node_create_Image_gif_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
break; break;
case ".obj" : case ".obj" :
Node_create_3D_Obj_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path); node = Node_create_3D_Obj_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
break; break;
case ".json" : case ".json" :
case ".pxc" : case ".pxc" :
if(_new) NEW();
LOAD_PATH(path); LOAD_PATH(path);
break; break;
} }
PANEL_GRAPH.fullView();
if(node)
PANEL_GRAPH.toCenterNode();
} }
} }
#endregion #endregion

View file

@ -13,6 +13,7 @@
__initCollection(); __initCollection();
__initAssets(); __initAssets();
__initPresets(); __initPresets();
__initFontFolder();
PREF_LOAD(); PREF_LOAD();
loadFonts(); loadFonts();

View file

@ -0,0 +1,5 @@
/// @description
if(async_load[?"event_type"] == "file_drop") {
dropping = async_load[?"filename"];
array_push(drop_path, dropping);
}

View file

@ -87,20 +87,9 @@
#endregion #endregion
#region file drop #region file drop
file_dnd_set_files(file_dnd_pattern, file_dnd_allowfiles, file_dnd_allowdirs, file_dnd_allowmulti); if(array_length(drop_path)) {
file_dnd_filelist = file_dnd_get_files(); load_file_path(drop_path);
drop_path = [];
file_dnd_set_enabled(true);
if(file_dnd_filelist != "" && file_dnd_filelist != 0) {
file_dropping = file_dnd_filelist;
if(string_pos("\n", file_dropping) == 1)
file_dropping = string_replace(file_dropping, "\n", "");
alarm[3] = 2;
file_dnd_set_enabled(false);
file_dnd_filelist = "";
} }
#endregion #endregion

View file

@ -27,8 +27,11 @@
#endregion #endregion
#region nodes #region nodes
for(var i = 0; i < ds_list_size(NODES); i++) { var _k = ds_map_find_first(NODE_MAP);
NODES[| i].stepBegin(); var _a = ds_map_size(NODE_MAP);
repeat(_a) {
NODE_MAP[? _k].stepBegin();
_k = ds_map_find_next(NODE_MAP, _k);
} }
if(UPDATE & RENDER_TYPE.full) if(UPDATE & RENDER_TYPE.full)

View file

@ -37,6 +37,7 @@
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":3,"eventType":7,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":3,"eventType":7,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":1,"eventType":5,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":1,"eventType":5,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":1,"eventType":10,"collisionObjectId":null,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":1,"eventType":10,"collisionObjectId":null,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":75,"eventType":7,"collisionObjectId":null,},
], ],
"properties": [], "properties": [],
"overriddenProperties": [], "overriddenProperties": [],

View file

@ -0,0 +1,9 @@
{
"extensionId": {
"name": "file_dropper",
"path": "extensions/file_dropper/file_dropper.yy"
},
"resourceVersion": "1.0",
"resourceType": "GMExtensionConfigSet",
"configurables": null
}

View file

@ -9,8 +9,9 @@ enum PARTICLE_BLEND_MODE {
additive additive
} }
function __part() constructor { function __part(_node) constructor {
seed = irandom(99999); seed = irandom(99999);
node = _node;
active = false; active = false;
surf = noone; surf = noone;
x = 0; x = 0;
@ -44,6 +45,7 @@ function __part() constructor {
life = 0; life = 0;
life_total = 0; life_total = 0;
step_int = 0;
anim_speed = 1; anim_speed = 1;
anim_end = ANIM_END_ACTION.loop; anim_end = ANIM_END_ACTION.loop;
@ -57,6 +59,7 @@ function __part() constructor {
life = _life; life = _life;
life_total = life; life_total = life;
node.onPartCreate(self);
} }
function setPhysic(_sx, _sy, _ac, _g, _wig) { function setPhysic(_sx, _sy, _ac, _g, _wig) {
@ -85,6 +88,7 @@ function __part() constructor {
function kill() { function kill() {
active = false; active = false;
node.onPartDestroy(self);
} }
static step = function() { static step = function() {
@ -116,6 +120,8 @@ function __part() constructor {
rot += rot_s; rot += rot_s;
alp_draw = alp * eval_bezier_cubic(1 - life / life_total, alp_fade[0], alp_fade[1], alp_fade[2], alp_fade[3]); alp_draw = alp * eval_bezier_cubic(1 - life / life_total, alp_fade[0], alp_fade[1], alp_fade[2], alp_fade[3]);
if(step_int > 0 && safe_mod(life, step_int) == 0)
node.onPartStep(self);
if(life-- < 0) kill(); if(life-- < 0) kill();
} }

View file

@ -1,10 +1,4 @@
/* Backup /* Backup
function Node_create_VFX(_x, _y) {
var node = new Node_VFX(_x, _y);
//ds_list_add(PANEL_GRAPH.nodes_list, node);
return node;
}
function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "VFX"; name = "VFX";
auto_update = false; auto_update = false;
@ -239,7 +233,7 @@ function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
if(!_loop) return; if(!_loop) return;
for(var i = 0; i < ANIMATOR.frames_total; i++) for(var i = 0; i < ANIMATOR.frames_total; i++)
runFrame(i); runVFX(i);
seed = seed_origin; seed = seed_origin;
} }
@ -267,7 +261,7 @@ function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
} }
} }
static runFrame = function(_time = ANIMATOR.current_frame) { static runVFX = function(_time = ANIMATOR.current_frame) {
var _spawn_delay = inputs[| 2].getValue(_time); var _spawn_delay = inputs[| 2].getValue(_time);
var _spawn_type = inputs[| 17].getValue(_time); var _spawn_type = inputs[| 17].getValue(_time);
@ -321,9 +315,9 @@ function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
if(ANIMATOR.current_frame == 0) { if(ANIMATOR.current_frame == 0) {
reset(); reset();
runFrame(ANIMATOR.current_frame); runVFX(ANIMATOR.current_frame);
} else if(cached_output[ANIMATOR.current_frame - 1] != 0) { } else if(cached_output[ANIMATOR.current_frame - 1] != 0) {
runFrame(ANIMATOR.current_frame); runVFX(ANIMATOR.current_frame);
} }
} }
} }

View file

@ -0,0 +1,320 @@
function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Spawner";
inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0)
.setDisplay(noone, "particles");
inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2);
inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); });
inputs[| 4] = nodeValue(4, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]);
inputs[| 5] = nodeValue(5, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 6] = nodeValue(6, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 8] = nodeValue(8, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 9] = nodeValue(9, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 10] = nodeValue(10, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range);
inputs[| 11] = nodeValue(11, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 12] = nodeValue(12, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient);
inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 14] = nodeValue(14, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]);
inputs[| 15] = nodeValue(15, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 16] = nodeValue(16, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]);
inputs[| 17] = nodeValue(17, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 18] = nodeValue(18, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 19] = nodeValue(19, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 20] = nodeValue(20, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 21] = nodeValue(21, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 22] = nodeValue(22, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ])
.setVisible(false);
inputs[| 23] = nodeValue(23, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
.setVisible(false);
inputs[| 24] = nodeValue(24, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]);
inputs[| 25] = nodeValue(25, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
.setVisible(false, true);
inputs[| 26] = nodeValue(26, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ])
.setVisible(false);
inputs[| 27] = nodeValue(27, "Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
input_len = ds_list_size(inputs);
input_display_list = [
["Sprite", false], 0, 22, 23, 26,
["Spawn", true], 27, 16, 1, 2, 3, 4, 24, 25, 5,
["Movement", true], 6, 18, 7,
["Physics", true], 19, 20,
["Rotation", true], 15, 8, 9,
["Scale", true], 10, 17, 11,
["Color", true], 12, 13, 14,
["Render", true], 21
];
parts = ds_list_create();
seed_origin = irandom(9999999);
seed = seed_origin;
spawn_index = 0;
def_surface = -1;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++)
ds_list_add(parts, new __part(self));
static spawn = function(_time = ANIMATOR.current_frame, _pos = -1) {
random_set_seed(seed++);
var _inSurf = inputs[| 0].getValue(_time);
if(_inSurf == 0) {
if(def_surface == -1 || !surface_exists(def_surface)) {
def_surface = PIXEL_SURFACE;
surface_set_target(def_surface);
draw_clear(c_white);
surface_reset_target();
}
_inSurf = def_surface;
}
var _spawn_amount = inputs[| 2].getValue(_time);
var _amo = _spawn_amount;
var _spawn_area = inputs[| 3].getValue(_time);
var _distrib = inputs[| 4].getValue(_time);
var _scatter = inputs[| 24].getValue(_time);
var _life = inputs[| 5].getValue(_time);
var _direction = inputs[| 6].getValue(_time);
var _velocity = inputs[| 18].getValue(_time);
var _accel = inputs[| 7].getValue(_time);
var _grav = inputs[| 19].getValue(_time);
var _wigg = inputs[| 20].getValue(_time);
var _follow = inputs[| 15].getValue(_time);
var _rotation = inputs[| 8].getValue(_time);
var _rotation_speed = inputs[| 9].getValue(_time);
var _scale = inputs[| 10].getValue(_time);
var _size = inputs[| 17].getValue(_time);
var _scale_speed = inputs[| 11].getValue(_time);
var _color = inputs[| 12].getValue(_time);
var _alpha = inputs[| 13].getValue(_time);
var _fade = inputs[| 14].getValue(_time);
var _arr_type = inputs[| 22].getValue(_time);
var _anim_speed = inputs[| 23].getValue(_time);
var _anim_end = inputs[| 26].getValue(_time);
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
if(parts[| i].active) continue;
var _spr = _inSurf, _index = 0;
if(is_array(_inSurf)) {
if(_arr_type == 0) {
_index = irandom(array_length(_inSurf) - 1);
_spr = _inSurf[_index];
} else if(_arr_type == 1) {
_index = safe_mod(spawn_index, array_length(_inSurf));
_spr = _inSurf[_index];
} else if(_arr_type == 2)
_spr = _inSurf;
}
var xx = 0;
var yy = 0;
if(_pos == -1) {
if(_scatter == 2) {
var _b_data = inputs[| 25].getValue(_time);
if(!is_array(_b_data) || array_length(_b_data) <= 0) return;
var _b = _b_data[safe_mod(_index, array_length(_b_data))];
if(!is_array(_b) || array_length(_b) != 4) return;
xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2);
yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3);
parts[| i].boundary_data = _b;
} else {
var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount);
xx = sp[0];
yy = sp[1];
parts[| i].boundary_data = -1;
}
} else {
xx = _pos[0];
yy = _pos[1];
}
var _lif = irandom_range(_life[0], _life[1]);
var _rot = random_range(_rotation[0], _rotation[1]);
var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]);
var _dirr = random_range(_direction[0], _direction[1]);
var _velo = random_range(_velocity[0], _velocity[1]);
var _vx = lengthdir_x(_velo, _dirr);
var _vy = lengthdir_y(_velo, _dirr);
var _acc = random_range(_accel[0], _accel[1]);
var _ss = random_range(_size[0], _size[1]);
var _scx = random_range(_scale[0], _scale[1]) * _ss;
var _scy = random_range(_scale[2], _scale[3]) * _ss;
var _alp = random_range(_alpha[0], _alpha[1]);
parts[| i].create(_spr, xx, yy, _lif);
parts[| i].anim_speed = _anim_speed;
parts[| i].anim_end = _anim_end;
parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg);
parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow);
parts[| i].setDraw(_color, _alp, _fade);
spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]);
onSpawn(_time, parts[| i]);
if(--_amo <= 0) return;
}
}
static onSpawn = function(_time, part) {}
function reset() {
spawn_index = 0;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
parts[| i].kill();
}
render();
seed = seed_origin;
var _loop = inputs[| 21].getValue();
if(!_loop) return;
for(var i = 0; i < ANIMATOR.frames_total; i++)
runVFX(i);
seed = seed_origin;
}
function checkPartPool() {
var _part_amo = PREF_MAP[? "part_max_amount"];
var _curr_amo = ds_list_size(parts);
if(_part_amo > _curr_amo) {
repeat(_part_amo - _curr_amo)
ds_list_add(parts, new __part(self));
} else if(_part_amo < _curr_amo) {
repeat(_curr_amo - _part_amo)
ds_list_delete(parts, 0);
}
}
static runVFX = function(_time = ANIMATOR.current_frame) {
var _spawn_delay = inputs[| 1].getValue(_time);
var _spawn_type = inputs[| 16].getValue(_time);
var _spawn_active = inputs[| 27].getValue(_time);
if(_spawn_active) {
switch(_spawn_type) {
case 0 :
if(safe_mod(_time, _spawn_delay) == 0)
spawn(_time);
break;
case 1 :
if(_time == _spawn_delay)
spawn(_time);
break;
}
}
for(var i = 0; i < ds_list_size(parts); i++)
parts[| i].step();
triggerRender();
render(_time);
}
static step = function() {
var _inSurf = inputs[| 0].getValue();
var _scatt = inputs[| 24].getValue();
inputs[| 22].setVisible(false);
inputs[| 23].setVisible(false);
inputs[| 25].setVisible(_scatt == 2);
if(is_array(_inSurf)) {
inputs[| 22].setVisible(true);
var _type = inputs[| 22].getValue();
if(_type == 2) {
inputs[| 23].setVisible(true);
inputs[| 26].setVisible(true);
}
}
checkPartPool();
var _spawn_type = inputs[| 16].getValue();
if(_spawn_type == 0) inputs[| 1].name = "Spawn delay";
else inputs[| 1].name = "Spawn frame";
onStep();
}
static onStep = function() {
if(!ANIMATOR.frame_progress) return;
if(!ANIMATOR.is_playing) return;
if(ANIMATOR.current_frame == 0)
reset();
runVFX(ANIMATOR.current_frame);
}
static drawOverlay = function(active, _x, _y, _s, _mx, _my) {
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my);
if(onDrawOverlay != -1)
onDrawOverlay(active, _x, _y, _s, _mx, _my);
}
static onDrawOverlay = -1;
static update = function() {}
static render = function() {}
static onPartCreate = function(part) {}
static onPartStep = function(part) {}
static onPartDestroy = function(part) {}
}

View file

@ -1,11 +1,11 @@
{ {
"resourceType": "GMScript", "resourceType": "GMScript",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "node_character", "name": "_node_VFX_spawner",
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "VFX",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/VFX.yy",
}, },
} }

View file

@ -41,3 +41,11 @@ function array_merge() {
return arr; return arr;
} }
function array_clone(arr) {
var _res = array_create(array_length(arr));
for( var i = 0; i < array_length(arr); i++ ) {
_res[i] = arr[i];
}
return _res;
}

View file

@ -6,7 +6,8 @@ function buttonClass(_onClick) constructor {
active = false; active = false;
hover = false; hover = false;
icon = noone; icon = noone;
icon_blend = c_white;
icon_index = 0; icon_index = 0;
text = ""; text = "";
@ -14,8 +15,10 @@ function buttonClass(_onClick) constructor {
onClick = _onClick; onClick = _onClick;
static setIcon = function(_icon, _index = 0) { static setIcon = function(_icon, _index = 0, _blend = c_white) {
icon = _icon; icon_index = _index icon = _icon;
icon_index = _index;
icon_blend = _blend;
return self; return self;
} }
@ -43,7 +46,7 @@ function buttonClass(_onClick) constructor {
} else { } else {
draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1); draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1);
} }
if(icon) draw_sprite_ui_uniform(icon, icon_index, _x + _w / 2, _y + _h / 2); if(icon) draw_sprite_ui_uniform(icon, icon_index, _x + _w / 2, _y + _h / 2,, icon_blend);
if(text != "") { if(text != "") {
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
draw_text(_x + _w / 2, _y + _h / 2, text); draw_text(_x + _w / 2, _y + _h / 2, text);

View file

@ -109,8 +109,8 @@ function draw_line_elbow_color(x0, y0, x1, y1, thick, col1, col2, type = LINE_ST
draw_line_width_color(cx, y0 - thick / 2, cx, y1 + thick / 2, thick, cm, cm); draw_line_width_color(cx, y0 - thick / 2, cx, y1 + thick / 2, thick, cm, cm);
draw_line_width_color(cx, y1, x1, y1, thick, cm, col2); draw_line_width_color(cx, y1, x1, y1, thick, cm, col2);
} else { } else {
draw_line_dashed(x0, y0, cx, y0, thick, col1, cm, 12); draw_line_dashed_color(x0, y0, cx, y0, thick, col1, cm, 12);
draw_line_dashed(cx, y0 - thick / 2, cx, y1 + thick / 2, thick, cm, cm, 12); draw_line_dashed_color(cx, y0 - thick / 2, cx, y1 + thick / 2, thick, cm, cm, 12);
draw_line_dashed(cx, y1, x1, y1, thick, cm, col2, 12); draw_line_dashed_color(cx, y1, x1, y1, thick, cm, col2, 12);
} }
} }

View file

@ -1,4 +1,28 @@
function draw_line_dashed(x0, y0, x1, y1, th, c0, c1, dash_distance = 8) { function draw_line_dashed(x0, y0, x1, y1, th, dash_distance = 8) {
var dis = point_distance(x0, y0, x1, y1);
var dir = point_direction(x0, y0, x1, y1);
var part = ceil(dis / dash_distance);
var dx = lengthdir_x(1, dir);
var dy = lengthdir_y(1, dir);
var ox, oy, nx, ny;
var dd = 0;
for( var i = 0; i <= part; i++ ) {
dd = min(dis, i * dash_distance);
nx = x0 + dx * dd;
ny = y0 + dy * dd;
if(i && i % 2)
draw_line_width(ox, oy, nx, ny, th);
ox = nx;
oy = ny;
}
}
function draw_line_dashed_color(x0, y0, x1, y1, th, c0, c1, dash_distance = 8) {
var dis = point_distance(x0, y0, x1, y1); var dis = point_distance(x0, y0, x1, y1);
var dir = point_direction(x0, y0, x1, y1); var dir = point_direction(x0, y0, x1, y1);
var part = ceil(dis / dash_distance); var part = ceil(dis / dash_distance);

View file

@ -0,0 +1,67 @@
function draw_rectangle_width(x0, y0, x1, y1, th = 1) {
draw_line_width(x0 - th / 2, y0, x1 + th / 2, y0, th);
draw_line_width(x0 - th / 2, y1, x1 + th / 2, y1, th);
draw_line_width(x0, y0 - th / 2, x0, y1 + th / 2, th);
draw_line_width(x1, y0 - th / 2, x1, y1 + th / 2, th);
}
function draw_rectangle_dashed(x0, y0, x1, y1, th = 1, dash = 8) {
draw_line_dashed(x0 - th / 2, y0, x1 + th / 2, y0, th, dash);
draw_line_dashed(x0 - th / 2, y1, x1 + th / 2, y1, th, dash);
draw_line_dashed(x0, y0 - th / 2, x0, y1 + th / 2, th, dash);
draw_line_dashed(x1, y0 - th / 2, x1, y1 + th / 2, th, dash);
}
function draw_ellipse_width(x0, y0, x1, y1, th = 1) {
var cx = (x0 + x1) / 2;
var cy = (y0 + y1) / 2;
var ww = abs(x0 - x1) / 2;
var hh = abs(y0 - y1) / 2;
var samp = 32;
var ox, oy, nx, ny;
for( var i = 0; i < samp; i++ ) {
nx = cx + lengthdir_x(ww, i * 360 / samp);
ny = cy + lengthdir_y(hh, i * 360 / samp);
if(i)
draw_line_width(ox, oy, nx, ny, th);
ox = nx;
oy = ny;
}
}
function draw_ellipse_dash(x0, y0, x1, y1, th = 1, dash = 8) {
var cx = (x0 + x1) / 2;
var cy = (y0 + y1) / 2;
var ww = abs(x0 - x1) / 2;
var hh = abs(y0 - y1) / 2;
var rd = max(ww, hh);
var dash_dist = 0, is_dash = true;
var samp = 64;
var ox, oy, nx, ny;
for( var i = 0; i < samp; i++ ) {
nx = cx + lengthdir_x(ww, i * 360 / samp);
ny = cy + lengthdir_y(hh, i * 360 / samp);
if(i) {
dash_dist += point_distance(ox, oy, nx, ny);
if(dash_dist >= dash) {
dash_dist -= dash;
is_dash = !is_dash;
}
if(is_dash)
draw_line_width(ox, oy, nx, ny, th);
}
ox = nx;
oy = ny;
}
}

View file

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

View file

@ -0,0 +1,19 @@
function draw_surface_align(surface, _x, _y, _s, _halign = fa_left, _valign = fa_top) {
var w = surface_get_width(surface) * _s;
var h = surface_get_height(surface) * _s;
var _sx = _x, _sy = _y;
switch(_halign) {
case fa_left: _sx = _x; break;
case fa_center: _sx = _x - w / 2; break;
case fa_right: _sx = _x - w; break;
}
switch(_valign) {
case fa_top: _sy = _y; break;
case fa_center: _sy = _y - h / 2; break;
case fa_bottom: _sy = _y - h; break;
}
draw_surface_ext(surface, _sx, _sy, _s, _s, 0, c_white, 1);
}

View file

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

View file

@ -0,0 +1,5 @@
function __initFontFolder() {
var root = DIRECTORY + "Fonts";
if(!directory_exists(root))
directory_create(root);
}

View file

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

View file

@ -56,7 +56,7 @@
DIALOG_CLICK = true; DIALOG_CLICK = true;
globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H, ADD_NODE_MODE; globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H, ADD_NODE_MODE;
ADD_NODE_PAGE = ""; ADD_NODE_PAGE = 0;
ADD_NODE_W = -1; ADD_NODE_W = -1;
ADD_NODE_H = -1; ADD_NODE_H = -1;
ADD_NODE_MODE = 0; ADD_NODE_MODE = 0;

View file

@ -1,5 +1,5 @@
function LOAD() { function LOAD() {
var path = get_open_filename("*.pxc;*.json", ""); var path = get_open_filename("Pixel Composer project (.pxc)|*.pxc", "");
if(path == "") return; if(path == "") return;
if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") return; if(filename_ext(path) != ".json" && filename_ext(path) != ".pxc") return;

View file

@ -1,5 +1,6 @@
function Node_VFX_Accelerate(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Accelerate(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Accelerate"; name = "Accelerate";
node_draw_icon = s_node_vfx_accel;
function onAffect(part, str) { function onAffect(part, str) {
var _vect = current_data[4]; var _vect = current_data[4];

View file

@ -1,5 +1,6 @@
function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Attract"; name = "Attract";
node_draw_icon = s_node_vfx_attract;
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];

View file

@ -1,5 +1,6 @@
function Node_VFX_Destroy(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Destroy(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Destroy"; name = "Destroy";
node_draw_icon = s_node_vfx_destroy;
function onAffect(part, str) { function onAffect(part, str) {
var _sten = current_data[5]; var _sten = current_data[5];

View file

@ -1,5 +1,6 @@
function Node_VFX_Repel(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Repel(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Repel"; name = "Repel";
node_draw_icon = s_node_vfx_repel;
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];

View file

@ -1,5 +1,6 @@
function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Turbulence"; name = "Turbulence";
node_draw_icon = s_node_vfx_turb;
function onAffect(part, str) { function onAffect(part, str) {
var _vect = current_data[4]; var _vect = current_data[4];

View file

@ -1,5 +1,6 @@
function Node_VFX_Vortex(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Vortex(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Vortex"; name = "Vortex";
node_draw_icon = s_node_vfx_vortex;
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];

View file

@ -1,5 +1,6 @@
function Node_VFX_Wind(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { function Node_VFX_Wind(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor {
name = "Wind"; name = "Wind";
node_draw_icon = s_node_vfx_wind;
function onAffect(part, str) { function onAffect(part, str) {
var _vect = current_data[4]; var _vect = current_data[4];

View file

@ -1,9 +1,10 @@
function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Effector"; name = "Effector";
previewable = false; previewable = false;
node_draw_icon = s_node_vfx_accel;
w = 64; w = 96;
h = 64; h = 80;
min_h = h; min_h = h;
inputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 ) inputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 )
@ -41,6 +42,44 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my) {
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my);
var area = inputs[| 1].getValue();
var cx = _x + area[0] * _s;
var cy = _y + area[1] * _s;
var cw = area[2] * _s;
var ch = area[3] * _s;
var cs = area[4];
var fall = inputs[| 3].getValue() * _s;
var x0 = cx - cw + fall;
var x1 = cx + cw - fall;
var y0 = cy - ch + fall;
var y1 = cy + ch - fall;
if(x1 > x0 && y1 > y0) {
draw_set_color(COLORS._main_accent);
draw_set_alpha(0.5);
switch(cs) {
case AREA_SHAPE.elipse : draw_ellipse_dash(x0, y0, x1, y1); break;
case AREA_SHAPE.rectangle : draw_rectangle_dashed(x0, y0, x1, y1); break;
}
draw_set_alpha(1);
}
x0 = cx - cw - fall;
x1 = cx + cw + fall;
y0 = cy - ch - fall;
y1 = cy + ch + fall;
if(x1 > x0 && y1 > y0) {
draw_set_color(COLORS._main_accent);
draw_set_alpha(0.5);
switch(cs) {
case AREA_SHAPE.elipse : draw_ellipse_dash(x0, y0, x1, y1); break;
case AREA_SHAPE.rectangle : draw_rectangle_dashed(x0, y0, x1, y1); break;
}
draw_set_alpha(1);
}
} }
function onAffect(part, str) {} function onAffect(part, str) {}
@ -65,24 +104,30 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
random_set_seed(part.seed); random_set_seed(part.seed);
var str = 0; var str = 0, in, _dst;
var pv = part.getPivot(); var pv = part.getPivot();
if(_area_t == AREA_SHAPE.rectangle) { if(_area_t == AREA_SHAPE.rectangle) {
if(point_in_rectangle(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y1)) { in = point_in_rectangle(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y1)
var _dst = min( distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y0), _dst = min( distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y0),
distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1),
distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1),
distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1)); distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1));
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.));
}
} else if(_area_t == AREA_SHAPE.elipse) { } else if(_area_t == AREA_SHAPE.elipse) {
if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) { var _dirr = point_direction(_area_x, _area_y, pv[0], pv[1]);
var _dst = point_distance(pv[0], pv[1], _area_x, _area_y); var _epx = _area_x + lengthdir_x(_area_w / 2, _dirr);
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); var _epy = _area_y + lengthdir_y(_area_h / 2, _dirr);
}
in = point_distance(_area_x, _area_y, pv[0], pv[1]) < point_distance(_area_x, _area_y, _epx, _epy);
_dst = point_distance(pv[0], pv[1], _epx, _epy);
} }
if(_dst <= _fads) {
var inf = in? 0.5 + _dst / _fads : 0.5 - _dst / _fads;
str = eval_curve_bezier_cubic(_fall, clamp(inf, 0., 1.));
} else if(in)
str = 1;
if(str == 0) return; if(str == 0) return;
onAffect(part, str); onAffect(part, str);
@ -106,4 +151,10 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
jun.value_to[| j].node.doUpdate(); jun.value_to[| j].node.doUpdate();
} }
} }
static onDrawNode = function(xx, yy, _mx, _my, _s) {
var cx = xx + w * _s / 2;
var cy = yy + 10 + (h - 10) * _s / 2;
draw_sprite_uniform(node_draw_icon, 0, cx, cy, _s);
}
} }

View file

@ -1,6 +1,6 @@
function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor { function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor {
name = "VFX"; name = "VFX";
color = COLORS.node_blend_collection; color = COLORS.node_blend_vfx;
ungroupable = false; ungroupable = false;
if(!LOADING && !APPENDING) { if(!LOADING && !APPENDING) {
@ -8,7 +8,7 @@ function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) c
var renderer = nodeBuild("Node_VFX_Renderer", 256, -32, self); var renderer = nodeBuild("Node_VFX_Renderer", 256, -32, self);
var output = nodeBuild("Node_Group_Output", 256 + 32 * 5, -32, self); var output = nodeBuild("Node_Group_Output", 256 + 32 * 5, -32, self);
renderer.inputs[| 0].setFrom(input.outputs[| 0]); renderer.inputs[| renderer.input_index].setFrom(input.outputs[| 0]);
output.inputs[| 0].setFrom(renderer.outputs[| 0]); output.inputs[| 0].setFrom(renderer.outputs[| 0]);
} }
} }

View file

@ -1,24 +1,50 @@
function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Renderer"; name = "Renderer";
inputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, noone ) inputs[| 0] = nodeValue(0, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); inputs[| 1] = nodeValue(1, "Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 3] = nodeValue(3, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) inputs[| 2] = nodeValue(2, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]); .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]);
input_index = ds_list_size(inputs);
static createNewInput = function() {
var index = ds_list_size(inputs);
inputs[| index] = nodeValue( index, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, noone )
.setVisible(true, true);
}
createNewInput();
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static updateValueFrom = function(index) {
if(index < input_index) return;
var _l = ds_list_create();
for( var i = 0; i < ds_list_size(inputs); i++ ) {
if(i < input_index || 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();
}
function update(_time = ANIMATOR.current_frame) { function update(_time = ANIMATOR.current_frame) {
var parts = inputs[| 0].getValue(_time); var _dim = inputs[| 0].getValue(_time);
var _dim = inputs[| 1].getValue(_time); var _exact = inputs[| 1].getValue(_time);
var _exact = inputs[| 2].getValue(_time); var _blend = inputs[| 2].getValue(_time);
var _blend = inputs[| 3].getValue(_time);
var _outSurf = outputs[| 0].getValue(); var _outSurf = outputs[| 0].getValue();
@ -37,12 +63,23 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct
case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break; case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break;
} }
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) for( var i = input_index; i < ds_list_size(inputs) - 1; i++ ) {
parts[| i].draw(_exact); var parts = inputs[| i].getValue(_time);
for(var j = 0; j < PREF_MAP[? "part_max_amount"]; j++)
parts[| j].draw(_exact);
}
gpu_set_blendmode(bm_normal); gpu_set_blendmode(bm_normal);
surface_reset_target(); surface_reset_target();
cacheCurrentFrame(_outSurf); cacheCurrentFrame(_outSurf);
} }
static postDeserialize = function() {
var _inputs = load_map[? "inputs"];
for(var i = input_index; i < ds_list_size(_inputs); i++)
createNewInput();
}
} }

View file

@ -1,305 +1,74 @@
function Node_VFX_Spawner(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { function Node_VFX_Spawner(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _group) constructor {
name = "Spawner"; name = "Spawner";
inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0) inputs[| input_len + 0] = nodeValue(input_len + 0, "Spawn trigger", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, false)
.setDisplay(noone, "particles"); .setVisible(true, true);
inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); inputs[| input_len + 1] = nodeValue(input_len + 1, "Step interval", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2);
inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); });
inputs[| 4] = nodeValue(4, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]);
inputs[| 5] = nodeValue(5, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 6] = nodeValue(6, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 8] = nodeValue(8, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 9] = nodeValue(9, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 10] = nodeValue(10, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range);
inputs[| 11] = nodeValue(11, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 12] = nodeValue(12, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient);
inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 14] = nodeValue(14, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]);
inputs[| 15] = nodeValue(15, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 16] = nodeValue(16, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]);
inputs[| 17] = nodeValue(17, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 18] = nodeValue(18, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 19] = nodeValue(19, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 20] = nodeValue(20, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 21] = nodeValue(21, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 22] = nodeValue(22, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ])
.setVisible(false);
inputs[| 23] = nodeValue(23, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
.setVisible(false);
inputs[| 24] = nodeValue(24, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]);
inputs[| 25] = nodeValue(25, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
.setVisible(false, true);
inputs[| 26] = nodeValue(26, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ])
.setVisible(false);
input_display_list = [
["Sprite", false], 0, 22, 23, 26,
["Spawn", true], 16, 1, 2, 3, 4, 24, 25, 5,
["Movement", true], 6, 18, 7,
["Physics", true], 19, 20,
["Rotation", true], 15, 8, 9,
["Scale", true], 10, 17, 11,
["Color", true], 12, 13, 14,
["Render", true], 21
];
parts = ds_list_create();
outputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts ); outputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts );
outputs[| 1] = nodeValue(1, "On create", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
outputs[| 2] = nodeValue(2, "On step", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
outputs[| 3] = nodeValue(3, "On destroy", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
seed_origin = irandom(9999999); array_insert(input_display_list, 0, ["Trigger", true], input_len + 0, input_len + 1);
seed = seed_origin;
spawn_index = 0;
def_surface = -1;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) static onSpawn = function(_time, part) {
ds_list_add(parts, new __part()); part.step_int = inputs[| input_len + 1].getValue(_time);
}
static spawn = function(_time = ANIMATOR.current_frame) { static onPartCreate = function(part) {
random_set_seed(seed++); var pv = part.getPivot();
var _inSurf = inputs[| 0].getValue(_time); var vt = outputs[| 1];
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i];
if(_n.value_from != vt) continue;
_n.node.spawn(, pv);
}
}
if(_inSurf == 0) { static onPartStep = function(part) {
var pv = part.getPivot();
var vt = outputs[| 2];
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i];
if(_n.value_from != vt) continue;
_n.node.spawn(, pv);
}
}
static onPartDestroy = function(part) {
var pv = part.getPivot();
var vt = outputs[| 3];
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i];
if(_n.value_from != vt) continue;
_n.node.spawn(, pv);
}
}
static onDrawNode = function(xx, yy, _mx, _my, _s) {
var spr = inputs[| 0].getValue();
if(spr == 0) {
if(def_surface == -1 || !surface_exists(def_surface)) { if(def_surface == -1 || !surface_exists(def_surface)) {
def_surface = PIXEL_SURFACE; def_surface = PIXEL_SURFACE;
surface_set_target(def_surface); surface_set_target(def_surface);
draw_clear(c_white); draw_clear(c_white);
surface_reset_target(); surface_reset_target();
} }
_inSurf = def_surface; spr = def_surface;
} }
var _spawn_amount = inputs[| 2].getValue(_time); if(is_array(spr))
var _amo = _spawn_amount; spr = spr[safe_mod(round(current_time / 100), array_length(spr))];
var _spawn_area = inputs[| 3].getValue(_time); var cx = xx + w * _s / 2;
var _distrib = inputs[| 4].getValue(_time); var cy = yy + h * _s / 2;
var _scatter = inputs[| 24].getValue(_time); var ss = min((w - 8) / surface_get_width(spr), (h - 8) / surface_get_height(spr)) * _s;
draw_surface_align(spr, cx, cy, ss, fa_center, fa_center);
var _life = inputs[| 5].getValue(_time);
var _direction = inputs[| 6].getValue(_time);
var _velocity = inputs[| 18].getValue(_time);
var _accel = inputs[| 7].getValue(_time);
var _grav = inputs[| 19].getValue(_time);
var _wigg = inputs[| 20].getValue(_time);
var _follow = inputs[| 15].getValue(_time);
var _rotation = inputs[| 8].getValue(_time);
var _rotation_speed = inputs[| 9].getValue(_time);
var _scale = inputs[| 10].getValue(_time);
var _size = inputs[| 17].getValue(_time);
var _scale_speed = inputs[| 11].getValue(_time);
var _color = inputs[| 12].getValue(_time);
var _alpha = inputs[| 13].getValue(_time);
var _fade = inputs[| 14].getValue(_time);
var _arr_type = inputs[| 22].getValue(_time);
var _anim_speed = inputs[| 23].getValue(_time);
var _anim_end = inputs[| 26].getValue(_time);
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
if(!parts[| i].active) {
var _spr = _inSurf, _index = 0;
if(is_array(_inSurf)) {
if(_arr_type == 0) {
_index = irandom(array_length(_inSurf) - 1);
_spr = _inSurf[_index];
} else if(_arr_type == 1) {
_index = safe_mod(spawn_index, array_length(_inSurf));
_spr = _inSurf[_index];
} else if(_arr_type == 2)
_spr = _inSurf;
}
var xx = 0;
var yy = 0;
if(_scatter == 2) {
var _b_data = inputs[| 25].getValue(_time);
if(!is_array(_b_data) || array_length(_b_data) <= 0) return;
var _b = _b_data[safe_mod(_index, array_length(_b_data))];
if(!is_array(_b) || array_length(_b) != 4) return;
xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2);
yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3);
parts[| i].boundary_data = _b;
} else {
var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount);
xx = sp[0];
yy = sp[1];
parts[| i].boundary_data = -1;
}
var _lif = random_range(_life[0], _life[1]);
var _rot = random_range(_rotation[0], _rotation[1]);
var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]);
var _dirr = random_range(_direction[0], _direction[1]);
var _velo = random_range(_velocity[0], _velocity[1]);
var _vx = lengthdir_x(_velo, _dirr);
var _vy = lengthdir_y(_velo, _dirr);
var _acc = random_range(_accel[0], _accel[1]);
var _ss = random_range(_size[0], _size[1]);
var _scx = random_range(_scale[0], _scale[1]) * _ss;
var _scy = random_range(_scale[2], _scale[3]) * _ss;
var _alp = random_range(_alpha[0], _alpha[1]);
parts[| i].create(_spr, xx, yy, _lif);
parts[| i].anim_speed = _anim_speed;
parts[| i].anim_end = _anim_end;
parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg);
parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow);
parts[| i].setDraw(_color, _alp, _fade);
spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]);
if(--_amo <= 0)
return;
}
}
} }
function reset() {
spawn_index = 0;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
parts[| i].kill();
}
render();
seed = seed_origin;
var _loop = inputs[| 21].getValue();
if(!_loop) return;
for(var i = 0; i < ANIMATOR.frames_total; i++)
runFrame(i);
seed = seed_origin;
}
function checkPartPool() {
var _part_amo = PREF_MAP[? "part_max_amount"];
var _curr_amo = ds_list_size(parts);
if(_part_amo > _curr_amo) {
repeat(_part_amo - _curr_amo)
ds_list_add(parts, new __part());
} else if(_part_amo < _curr_amo) {
repeat(_curr_amo - _part_amo)
ds_list_delete(parts, 0);
}
}
static runFrame = function(_time = ANIMATOR.current_frame) {
var _spawn_delay = inputs[| 1].getValue(_time);
var _spawn_type = inputs[| 16].getValue(_time);
switch(_spawn_type) {
case 0 :
if(safe_mod(_time, _spawn_delay) == 0)
spawn(_time);
break;
case 1 :
if(_time == _spawn_delay)
spawn(_time);
break;
}
for(var i = 0; i < ds_list_size(parts); i++)
parts[| i].step();
triggerRender();
render(_time);
}
static step = function() {
var _inSurf = inputs[| 0].getValue();
var _scatt = inputs[| 24].getValue();
var _loop = inputs[| 21].getValue();
inputs[| 22].setVisible(false);
inputs[| 23].setVisible(false);
inputs[| 25].setVisible(_scatt == 2);
if(is_array(_inSurf)) {
inputs[| 22].setVisible(true);
var _type = inputs[| 22].getValue();
if(_type == 2) {
inputs[| 23].setVisible(true);
inputs[| 26].setVisible(true);
}
}
checkPartPool();
var _spawn_type = inputs[| 16].getValue();
if(_spawn_type == 0) inputs[| 1].name = "Spawn delay";
else inputs[| 1].name = "Spawn frame";
onStep();
}
static onStep = function() {
if(!ANIMATOR.frame_progress) return;
if(!ANIMATOR.is_playing) return;
if(ANIMATOR.current_frame == 0)
reset();
runFrame(ANIMATOR.current_frame);
}
static drawOverlay = function(active, _x, _y, _s, _mx, _my) {
inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my);
if(onDrawOverlay != -1)
onDrawOverlay(active, _x, _y, _s, _mx, _my);
}
static onDrawOverlay = -1;
static update = function() {}
static render = function() {}
} }

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "value",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/value.yy",
}, },
} }

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "value",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/value.yy",
}, },
} }

View file

@ -0,0 +1,36 @@
function Node_Array_Add(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Array add";
previewable = false;
w = 96;
h = 32 + 24;
min_h = h;
inputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0)
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0)
.setVisible(true, true);
inputs[| 2] = nodeValue(2, "Spread array", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
outputs[| 0] = nodeValue(0, "Size", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
static update = function() {
var _arr = inputs[| 0].getValue();
var _val = inputs[| 1].getValue();
var _app = inputs[| 2].getValue();
inputs[| 2].setVisible(is_array(_val));
if(!is_array(_arr)) return;
var _out = array_clone(_arr);
if(is_array(_val) && _app)
array_append(_out, _val);
else
array_push(_out, _val);
outputs[| 0].setValue(_out);
}
doUpdate();
}

View file

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

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

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "value",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/value.yy",
}, },
} }

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "value",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/value.yy",
}, },
} }

View file

@ -0,0 +1,27 @@
function Node_Array_Range(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Array range";
previewable = false;
w = 96;
min_h = 0;
inputs[| 0] = nodeValue(0, "Start", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
inputs[| 1] = nodeValue(1, "End", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 10);
inputs[| 2] = nodeValue(2, "Step", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
outputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, []);
static update = function() {
var st = inputs[| 0].getValue();
var ed = inputs[| 1].getValue();
var step = inputs[| 2].getValue();
var arr = [];
if((step > 0 && st <= ed) || (step < 0 && st >= ed)) {
for( var i = st; i <= ed; i += step )
array_push(arr, i);
}
outputs[| 0].setValue(arr);
}
}

View file

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

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

View file

@ -0,0 +1,42 @@
function Node_Camera(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
name = "Camera";
preview_alpha = 0.5;
inputs[| 0] = nodeValue(0, "Scene", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Focus area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 16, 16, 4, 4, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
static getPreviewValue = function() { return inputs[| 0]; }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) {
var _out = outputs[| 0].getValue();
var _area = current_data[1];
var _px = _x + (_area[0] - _area[2]) * _s;
var _py = _y + (_area[1] - _area[3]) * _s;
draw_surface_ext_safe(_out, _px, _py, _s, _s);
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my);
}
static process_data = function(_outSurf, _data, _output_index) {
var _area = _data[1];
var _dw = surface_valid_size(_area[2]) * 2;
var _dh = surface_valid_size(_area[3]) * 2;
surface_size_to(_outSurf, _dw, _dh);
var _px = _area[0] - _dw / 2;
var _py = _area[1] - _dh / 2;
surface_set_target(_outSurf);
draw_clear_alpha(0, 0);
BLEND_ADD
draw_surface_safe(_data[0], -_px, -_py);
BLEND_NORMAL
surface_reset_target();
return _outSurf;
}
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_camera",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "render",
"path": "folders/nodes/data/render.yy",
},
}

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "filter",
"path": "folders/nodes/data/filter.yy",
},
"resourceVersion": "1.0",
"name": "node_color_adjustment",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "process",
"path": "folders/nodes/data/process.yy",
},
"resourceVersion": "1.0",
"name": "node_color_replacement",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "filter",
"path": "folders/nodes/data/filter.yy",
},
"resourceVersion": "1.0",
"name": "node_greyscale",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "process",
"path": "folders/nodes/data/process.yy",
},
"resourceVersion": "1.0",
"name": "node_outline",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -10,6 +10,15 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
custom_input_index = 0; custom_input_index = 0;
custom_output_index = 0; custom_output_index = 0;
static getNextNodes = function() {
for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var _in = inputs[| i].from;
ds_stack_push(RENDER_STACK, _in);
printIf(global.RENDER_LOG, "Push group input " + _in.name + " to stack");
}
}
static setRenderStatus = function(result) { static setRenderStatus = function(result) {
rendered = result; rendered = result;
@ -96,6 +105,7 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
} }
setHeight(); setHeight();
doStepBegin();
} }
static doUpdate = function() { static doUpdate = function() {
@ -115,8 +125,12 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
PANEL_GRAPH.addContext(self); PANEL_GRAPH.addContext(self);
DOUBLE_CLICK = false; DOUBLE_CLICK = false;
} }
onStep();
} }
static onStep = function() {}
static triggerRender = function() { static triggerRender = function() {
for(var i = custom_input_index; i < ds_list_size(inputs); i++) { for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var jun_node = inputs[| i].from; var jun_node = inputs[| i].from;

View file

@ -1,5 +1,6 @@
function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor {
name = "Crop"; name = "Crop";
preview_alpha = 0.5;
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Crop", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ]) inputs[| 1] = nodeValue(1, "Crop", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ])
@ -12,23 +13,27 @@ function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
drag_my = 0; drag_my = 0;
drag_sv = 0; drag_sv = 0;
static getPreviewValue = function() { return inputs[| 0]; }
static drawOverlay = function(active, _x, _y, _s, _mx, _my) { static drawOverlay = function(active, _x, _y, _s, _mx, _my) {
if(array_length(current_data) < 2) return; if(array_length(current_data) < 2) return;
var _inSurf = current_data[0]; var _inSurf = current_data[0];
var _dim = [ surface_get_width(_inSurf), surface_get_height(_inSurf) ];
var _splice = current_data[1]; var _splice = current_data[1];
var sp_r = _x + (_dim[0] - _splice[0] - _splice[2]) * _s; var dim = [ surface_get_width(_inSurf), surface_get_height(_inSurf) ]
var sp_l = _x;
var sp_t = _y; var sp_r = _x + (dim[0] - _splice[0]) * _s;
var sp_b = _y + (_dim[1] - _splice[1] - _splice[3]) * _s; var sp_l = _x + _splice[2] * _s;
var sp_t = _y + _splice[1] * _s;
var sp_b = _y + (dim[1] - _splice[3]) * _s;
var ww = WIN_W; var ww = WIN_W;
var hh = WIN_H; var hh = WIN_H;
draw_surface_ext_safe(_inSurf, _x - _splice[2] * _s, _y - _splice[1] * _s, _s, _s, 0, c_white, 0.1); var _out = outputs[| 0].getValue();
draw_surface_ext_safe(_out, sp_l, sp_t, _s, _s);
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_line(sp_r, -hh, sp_r, hh); draw_line(sp_r, -hh, sp_r, hh);
@ -94,9 +99,6 @@ function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
var _crop = _data[1]; var _crop = _data[1];
var _dim = [ surface_get_width(_inSurf) - _crop[0] - _crop[2], surface_get_height(_inSurf) - _crop[1] - _crop[3] ]; var _dim = [ surface_get_width(_inSurf) - _crop[0] - _crop[2], surface_get_height(_inSurf) - _crop[1] - _crop[3] ];
preview_x = _crop[2];
preview_y = _crop[1];
surface_size_to(_outSurf, _dim[0], _dim[1]); surface_size_to(_outSurf, _dim[0], _dim[1]);
surface_set_target(_outSurf); surface_set_target(_outSurf);

View file

@ -43,6 +43,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
preview_speed = 0; preview_speed = 0;
preview_index = 0; preview_index = 0;
preview_channel = 0; preview_channel = 0;
preview_alpha = 1;
preview_x = 0; preview_x = 0;
preview_y = 0; preview_y = 0;
@ -101,28 +102,25 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
} }
static stepBegin = function() { static stepBegin = function() {
if(use_cache) { if(use_cache)
cacheArrayCheck(); cacheArrayCheck();
}
var stack_push = false; var stack_push = false;
if(always_output) { if(always_output) {
for(var i = 0; i < ds_list_size(outputs); i++) { for(var i = 0; i < ds_list_size(outputs); i++) {
if(outputs[| i].type == VALUE_TYPE.surface) { if(outputs[| i].type != VALUE_TYPE.surface)
var val = outputs[| i].getValue(); continue;
var val = outputs[| i].getValue();
if(is_array(val)) { if(is_array(val)) {
for(var j = 0; j < array_length(val); j++) { for(var j = 0; j < array_length(val); j++) {
var _surf = val[j]; var _surf = val[j];
if(!is_surface(_surf) || _surf == DEF_SURFACE) { if(is_surface(_surf) && _surf != DEF_SURFACE)
stack_push = true; continue;
} stack_push = true;
}
} else {
if(!is_surface(val) || val == DEF_SURFACE) {
stack_push = true;
}
} }
} else if(!is_surface(val) || val == DEF_SURFACE) {
stack_push = true;
} }
} }
} }
@ -143,7 +141,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
if(auto_height) if(auto_height)
setHeight(); setHeight();
doStepBegin();
} }
static doStepBegin = function() {}
static step = function() {} static step = function() {}
static focusStep = function() {} static focusStep = function() {}
@ -370,7 +372,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
if(ty == LINE_STYLE.solid) if(ty == LINE_STYLE.solid)
draw_line_width_color(jx, jy, frx, fry, th, c0, c1); draw_line_width_color(jx, jy, frx, fry, th, c0, c1);
else else
draw_line_dashed(jx, jy, frx, fry, th, c0, c1, 12); draw_line_dashed_color(jx, jy, frx, fry, th, c0, c1, 12);
break; break;
case 1 : draw_line_curve_color(jx, jy, frx, fry, th, c0, c1, ty); break; case 1 : draw_line_curve_color(jx, jy, frx, fry, th, c0, c1, ty); break;
case 2 : draw_line_elbow_color(jx, jy, frx, fry, th, c0, c1, ty); break; case 2 : draw_line_elbow_color(jx, jy, frx, fry, th, c0, c1, ty); break;
@ -449,8 +451,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
drawNodeBase(xx, yy, _s); drawNodeBase(xx, yy, _s);
if(previewable && ds_list_size(outputs) > 0) if(previewable && ds_list_size(outputs) > 0)
drawPreview(outputs[| preview_channel], xx, yy, _s); drawPreview(outputs[| preview_channel], xx, yy, _s);
drawNodeName(xx, yy, _s);
onDrawNode(xx, yy, _mx, _my, _s); onDrawNode(xx, yy, _mx, _my, _s);
drawNodeName(xx, yy, _s);
if(active_draw_index > -1) { if(active_draw_index > -1) {
draw_sprite_stretched_ext(bg_sel_spr, 0, xx, yy, w * _s, h * _s, active_draw_index > 1? COLORS.node_border_file_drop : COLORS._main_accent, 1); draw_sprite_stretched_ext(bg_sel_spr, 0, xx, yy, w * _s, h * _s, active_draw_index > 1? COLORS.node_border_file_drop : COLORS._main_accent, 1);
@ -484,6 +486,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
static drawOverlay = function(active, _x, _y, _s, _mx, _my) {} static drawOverlay = function(active, _x, _y, _s, _mx, _my) {}
static getPreviewValue = function() {
if(preview_channel > ds_list_size(outputs)) return noone;
return outputs[| preview_channel];
}
static destroy = function(_merge = false) { static destroy = function(_merge = false) {
active = false; active = false;
if(PANEL_GRAPH.node_hover == self) PANEL_GRAPH.node_hover = noone; if(PANEL_GRAPH.node_hover == self) PANEL_GRAPH.node_hover = noone;
@ -530,6 +537,26 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
static onDestroy = function() {} static onDestroy = function() {}
static getNextNodes = function() {
for(var i = 0; i < ds_list_size(outputs); i++) {
var _ot = outputs[| i];
if(_ot.type == VALUE_TYPE.node) continue;
for(var j = 0; j < ds_list_size(_ot.value_to); j++) {
var _to = _ot.value_to[| j];
if(!_to.node.active || _to.value_from == noone) continue;
if(_to.value_from.node != self) continue;
_to.node.triggerRender();
if(_to.node.isUpdateReady()) {
ds_stack_push(RENDER_STACK, _to.node);
printIf(global.RENDER_LOG, " > Push " + _to.node.name + " node to stack");
} else
printIf(global.RENDER_LOG, " > Node " + _to.node.name + " not ready");
}
}
}
static cacheArrayCheck = function() { static cacheArrayCheck = function() {
if(array_length(cached_output) != ANIMATOR.frames_total + 1) if(array_length(cached_output) != ANIMATOR.frames_total + 1)
array_resize(cached_output, ANIMATOR.frames_total + 1); array_resize(cached_output, ANIMATOR.frames_total + 1);
@ -632,7 +659,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
static clone = function() { static clone = function() {
var _type = instanceof(self); var _type = instanceof(self);
var _node = NODE_CREATE_FUCTION[? _type](x, y); var _node = nodeBuild(_type, x, y);
var _data = serialize(); var _data = serialize();
_node.deserialize(ds_map_clone(_data)); _node.deserialize(ds_map_clone(_data));

View file

@ -0,0 +1,31 @@
function Node_Feedback(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor {
name = "Feedback";
color = COLORS.node_blend_feedback;
if(!LOADING && !APPENDING) {
var input = nodeBuild("Node_Feedback_Input", -256, -32, self);
var output = nodeBuild("Node_Feedback_Output", 256, -32, self);
input.inputs[| 2].setValue(4);
output.inputs[| 0].setFrom(input.outputs[| 0]);
output.inputs[| 2].setFrom(input.outputs[| 1]);
}
static doStepBegin = function() {
if(!ANIMATOR.frame_progress) return;
setRenderStatus(false);
UPDATE |= RENDER_TYPE.full;
}
static getNextNodes = function() {
var allReady = true;
for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var _in = inputs[| i].from;
allReady &= _in.isUpdateReady()
}
if(!allReady) return;
__nodeLeafList(nodes, RENDER_STACK);
}
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_feedback",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "feedback",
"path": "folders/nodes/data/feedback.yy",
},
}

View file

@ -0,0 +1,26 @@
function Node_Feedback_Input(_x, _y, _group = -1) : Node_Group_Input(_x, _y, _group) constructor {
name = "Input";
color = COLORS.node_blend_feedback;
w = 96;
h = 32 + 24 * 2;
min_h = h;
outputs[| 0].getValueRecursive = function(_time) {
var _node_output = noone;
for( var i = 0; i < ds_list_size(outputs[| 1].value_to); i++ ) {
var vt = outputs[| 1].value_to[| i];
if(vt.value_from == outputs[| 1])
_node_output = vt;
}
if(ANIMATOR.current_frame > 1 && _node_output != noone)
return [ _node_output.node.cache_value, inputs[| 2].getValue() ];
if(inParent.value_from == noone)
return [ -1, VALUE_TYPE.any ];
return inParent.value_from.getValueRecursive(_time);
}
outputs[| 1] = nodeValue(1, "Feedback loop", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, 0);
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_feedback_input",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "feedback",
"path": "folders/nodes/data/feedback.yy",
},
}

View file

@ -0,0 +1,28 @@
function Node_Feedback_Output(_x, _y, _group = -1) : Node_Group_Output(_x, _y, _group) constructor {
name = "Output";
color = COLORS.node_blend_feedback;
w = 96;
h = 32 + 24 * 2;
min_h = h;
inputs[| 2] = nodeValue(2, "Feedback loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1)
.setVisible(true, true);
cache_value = -1;
static update = function() {
var _val_get = inputs[| 0].getValue();
switch(inputs[| 0].type) {
case VALUE_TYPE.surface :
if(is_surface(cache_value))
surface_free(cache_value);
if(is_surface(_val_get))
cache_value = surface_clone(_val_get);
break;
default :
cache_value = _val_get;
}
}
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_feedback_output",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "feedback",
"path": "folders/nodes/data/feedback.yy",
},
}

View file

@ -5,7 +5,6 @@ function Node_Group_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructo
auto_height = false; auto_height = false;
input_index = -1; input_index = -1;
group = _group;
inParent = undefined; inParent = undefined;
w = 96; w = 96;

View file

@ -4,8 +4,6 @@ function Node_Group_Output(_x, _y, _group = -1) : Node(_x, _y, _group) construct
previewable = false; previewable = false;
auto_height = false; auto_height = false;
self.group = _group;
w = 96; w = 96;
h = 32 + 24; h = 32 + 24;
min_h = h; min_h = h;
@ -24,6 +22,33 @@ function Node_Group_Output(_x, _y, _group = -1) : Node(_x, _y, _group) construct
group.sortIO(); group.sortIO();
} }
static getNextNodes = function() {
group.setRenderStatus(true);
printIf(global.RENDER_LOG, "Value to amount " + string(ds_list_size(outParent.value_to)));
for(var j = 0; j < ds_list_size(outParent.value_to); j++) {
var _to = outParent.value_to[| j];
printIf(global.RENDER_LOG, "Value to " + _to.name);
if(!_to.node.active || _to.value_from == noone) {
printIf(global.RENDER_LOG, "no value from");
continue;
}
if(_to.value_from.node != group) {
printIf(global.RENDER_LOG, "value from not equal group");
continue;
}
printIf(global.RENDER_LOG, "Group output ready " + string(_to.node.isUpdateReady()));
if(_to.node.isUpdateReady()) {
ds_stack_push(RENDER_STACK, _to.node);
printIf(global.RENDER_LOG, "Push node " + _to.node.name + " to stack");
}
}
}
static createOutput = function(override_order = true) { static createOutput = function(override_order = true) {
if(group && is_struct(group)) { if(group && is_struct(group)) {
if(override_order) { if(override_order) {

View file

@ -37,6 +37,19 @@ function Node_Iterate(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) con
printIf(global.RENDER_LOG, "LOOP INIT"); printIf(global.RENDER_LOG, "LOOP INIT");
} }
static getNextNodes = function() {
var allReady = true;
for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var _in = inputs[| i].from;
allReady &= _in.isUpdateReady()
}
if(!allReady) return;
__nodeLeafList(nodes, RENDER_STACK);
initLoop();
}
static iterationStatus = function() { static iterationStatus = function() {
var iter = true; var iter = true;
for( var i = 0; i < ds_list_size(outputs); i++ ) { for( var i = 0; i < ds_list_size(outputs); i++ ) {

View file

@ -1,15 +0,0 @@
function Node_Iterator_Index(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Index";
color = COLORS.node_blend_number;
previewable = false;
w = 96;
min_h = 32 + 24 * 1;
outputs[| 0] = nodeValue(0, "Loop index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
static update = function() {
if(variable_struct_exists(group, "iterated"))
outputs[| 0].setValue(group.iterated);
}
}

View file

@ -1,227 +0,0 @@
function Node_Iterator_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Input";
color = COLORS.node_blend_collection;
previewable = false;
auto_height = false;
input_index = -1;
inParent = undefined;
local_output = noone;
w = 96;
h = 32 + 24 * 2;
min_h = h;
inputs[| 0] = nodeValue(0, "Display type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Default", "Range", "Enum Scroll", "Enum Button", "Rotation", "Rotation range",
"Slider", "Slider range", "Gradient", "Palette", "Padding", "Vector", "Vector range", "Area", "Curve" ]);
inputs[| 1] = nodeValue(1, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 1])
.setDisplay(VALUE_DISPLAY.vector)
.setVisible(false);
inputs[| 2] = nodeValue(2, "Input type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Integer", "Float", "Boolean", "Color", "Surface", "Path", "Curve", "Text", "Object", "Any" ]);
inputs[| 3] = nodeValue(3, "Enum label", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "")
.setVisible(false);
inputs[| 4] = nodeValue(4, "Vector size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "2", "3", "4" ])
.setVisible(false);
inputs[| 5] = nodeValue(5, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
input_display_list = [
["Display", false], 5,
["Data", false], 2, 0, 4, 1, 3,
];
outputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0);
outputs[| 0].getValueDefault = method(outputs[| 0], outputs[| 0].getValueRecursive); //Get value from outside loop
outputs[| 0].getValueRecursive = function() {
//show_debug_message("iteration " + string(group.iterated));
if(!variable_struct_exists(group, "iterated"))
return outputs[| 0].getValueDefault();
var _node_output = noone;
for( var i = 0; i < ds_list_size(outputs[| 1].value_to); i++ ) {
var vt = outputs[| 1].value_to[| i];
if(vt.value_from == outputs[| 1])
_node_output = vt;
}
if(_node_output == noone || group.iterated == 0)
return outputs[| 0].getValueDefault();
return [ _node_output.node.cache_value, inputs[| 2].getValue() ];
}
outputs[| 1] = nodeValue(1, "Loop entrance", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, 0);
output_display_list = [
1, 0
]
static onValueUpdate = function(index) {
if(is_undefined(inParent)) return;
var _dtype = inputs[| 0].getValue();
var _range = inputs[| 1].getValue();
var _val_type = inputs[| 2].getValue();
var _enum_label = inputs[| 3].getValue();
var _vec_size = inputs[| 4].getValue();
if(index == 2) {
var _o = outputs[| 0];
for(var j = 0; j < ds_list_size(_o.value_to); j++) {
var _to = _o.value_to[| j];
if(_to.value_from == _o)
_to.removeFrom();
}
}
inParent.type = _val_type;
outputs[| 0].type = _val_type;
var _val = inParent.getValue();
switch(_dtype) {
case VALUE_DISPLAY.range :
case VALUE_DISPLAY.slider :
inParent.setDisplay(_dtype, [_range[0], _range[1], 0.01]);
break;
case VALUE_DISPLAY.slider_range :
inParent.setDisplay(_dtype, [_range[0], _range[1], 0.01]);
break;
case VALUE_DISPLAY.rotation_range :
if(!is_array(_val) || array_length(_val) != 2)
inParent.animator = new valueAnimator([0, 0], inParent);
inParent.setDisplay(_dtype);
break;
case VALUE_DISPLAY.enum_button :
case VALUE_DISPLAY.enum_scroll :
inParent.setDisplay(_dtype, string_splice(_enum_label, ","));
break;
case VALUE_DISPLAY.padding :
if(!is_array(_val) || array_length(_val) != 4)
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
inParent.setDisplay(_dtype);
break;
case VALUE_DISPLAY.area :
if(!is_array(_val) || array_length(_val) != 5)
inParent.animator = new valueAnimator([0, 0, 0, 0, 5], inParent);
inParent.setDisplay(_dtype);
break;
case VALUE_DISPLAY.vector :
case VALUE_DISPLAY.vector_range :
switch(_vec_size) {
case 0 :
if(!is_array(_val) || array_length(_val) != 2)
inParent.animator = new valueAnimator([0, 0], inParent);
break;
case 1 :
if(!is_array(_val) || array_length(_val) != 3)
inParent.animator = new valueAnimator([0, 0, 0], inParent);
break;
case 2 :
if(!is_array(_val) || array_length(_val) != 4)
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
break;
}
inParent.setDisplay(_dtype);
break;
case VALUE_DISPLAY.palette :
if(!is_array(_val))
inParent.animator = new valueAnimator([c_black], inParent);
inParent.setDisplay(_dtype);
break;
default :
inParent.setDisplay(_dtype);
break;
}
if(index == 5) {
group.sortIO();
}
}
static createInput = function(override_order = true) {
if(group && is_struct(group)) {
if(override_order = true) {
input_index = ds_list_size(group.inputs);
inputs[| 5].setValue(input_index);
} else {
input_index = inputs[| 5].getValue();
}
inParent = nodeValue(ds_list_size(group.inputs), "Value", group, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1)
.setVisible(true, true);
inParent.from = self;
ds_list_add(group.inputs, inParent);
outputs[| 0].setFrom(inParent, false, false);
group.setHeight();
group.sortIO();
onValueUpdate(0);
}
}
if(!LOADING && !APPENDING)
createInput();
dtype = -1;
range = 0;
static step = function() {
if(is_undefined(inParent)) return;
inParent.name = name;
}
static update = function() {
if(is_undefined(inParent)) return;
var _dtype = inputs[| 0].getValue();
inputs[| 1].setVisible(false);
inputs[| 3].setVisible(false);
inputs[| 4].setVisible(false);
switch(_dtype) {
case VALUE_DISPLAY.range :
case VALUE_DISPLAY.slider :
case VALUE_DISPLAY.slider_range :
inputs[| 1].setVisible(true);
break;
case VALUE_DISPLAY.enum_button :
case VALUE_DISPLAY.enum_scroll :
inputs[| 3].setVisible(true);
break;
case VALUE_DISPLAY.vector :
case VALUE_DISPLAY.vector_range :
inputs[| 4].setVisible(true);
break;
}
}
static postDeserialize = function() {
createInput(false);
onValueUpdate(0);
}
static onDestroy = function() {
if(is_undefined(inParent)) return;
ds_list_remove(group.inputs, inParent);
}
}

View file

@ -1,104 +0,0 @@
function Node_Iterator_Output(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Output";
color = COLORS.node_blend_collection;
previewable = false;
auto_height = false;
self.group = _group;
w = 96;
h = 32 + 24 * 2;
min_h = h;
inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1)
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
inputs[| 2] = nodeValue(2, "Loop exit", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1)
.setVisible(true, true);
input_display_list = [
2, 0, 1
]
cache_value = -1;
outParent = undefined;
output_index = -1;
static onValueUpdate = function(index) {
if(is_undefined(outParent)) return;
group.sortIO();
}
static initLoop = function() {
cache_value = noone;
}
static createOutput = function(override_order = true) {
if(group && is_struct(group)) {
if(override_order) {
output_index = ds_list_size(group.outputs);
inputs[| 1].setValue(output_index);
} else {
output_index = inputs[| 1].getValue();
}
outParent = nodeValue(ds_list_size(group.outputs), "Value", group, JUNCTION_CONNECT.output, VALUE_TYPE.any, -1)
.setVisible(true, true);
outParent.from = self;
ds_list_add(group.outputs, outParent);
group.setHeight();
group.sortIO();
outParent.setFrom(inputs[| 0]);
}
}
if(!LOADING && !APPENDING)
createOutput();
static step = function() {
if(is_undefined(outParent)) return;
outParent.name = name;
inputs[| 0].type = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
outParent.type = inputs[| 0].type;
}
static triggerRender = function() {
if(is_undefined(outParent)) return;
for(var j = 0; j < ds_list_size(outParent.value_to); j++) {
if(outParent.value_to[| j].value_from == outParent)
outParent.value_to[| j].node.triggerRender();
}
}
static update = function() {
var _val_get = inputs[| 0].getValue();
switch(inputs[| 0].type) {
case VALUE_TYPE.surface :
if(is_surface(cache_value))
surface_free(cache_value);
if(is_surface(_val_get))
cache_value = surface_clone(_val_get);
printIf(global.RENDER_LOG, "LOOP cache result");
break;
default :
cache_value = _val_get;
}
}
static postDeserialize = function() {
createOutput(false);
}
static onDestroy = function() {
if(is_undefined(outParent)) return;
ds_list_delete(group.outputs, ds_list_find_index(group.outputs, outParent));
}
}

View file

@ -0,0 +1,21 @@
function Node_Iterator_Index(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Index";
color = COLORS.node_blend_loop;
previewable = false;
w = 96;
min_h = 80;
outputs[| 0] = nodeValue(0, "Loop index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, 0);
static update = function() {
if(!variable_struct_exists(group, "iterated")) return;
outputs[| 0].setValue(group.iterated);
}
static onDrawNode = function(xx, yy, _mx, _my, _s) {
var cx = xx + w * _s / 2;
var cy = yy + 10 + (h - 10) * _s / 2;
draw_sprite_uniform(s_node_iterator_index, 0, cx, cy, _s * 0.8);
}
}

View file

@ -1,7 +1,7 @@
{ {
"resourceType": "GMScript", "resourceType": "GMScript",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "node_iteration_index", "name": "node_iterator_index",
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {

View file

@ -0,0 +1,31 @@
function Node_Iterator_Input(_x, _y, _group = -1) : Node_Group_Input(_x, _y, _group) constructor {
name = "Input";
color = COLORS.node_blend_loop;
local_output = noone;
w = 96;
h = 32 + 24 * 2;
min_h = h;
outputs[| 0].getValueDefault = method(outputs[| 0], outputs[| 0].getValueRecursive); //Get value from outside loop
outputs[| 0].getValueRecursive = function() {
//show_debug_message("iteration " + string(group.iterated));
if(!variable_struct_exists(group, "iterated"))
return outputs[| 0].getValueDefault();
var _node_output = noone;
for( var i = 0; i < ds_list_size(outputs[| 1].value_to); i++ ) {
var vt = outputs[| 1].value_to[| i];
if(vt.value_from == outputs[| 1])
_node_output = vt;
}
if(_node_output == noone || group.iterated == 0)
return outputs[| 0].getValueDefault();
return [ _node_output.node.cache_value, inputs[| 2].getValue() ];
}
outputs[| 1] = nodeValue(1, "Loop entrance", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, 0);
}

View file

@ -1,7 +1,7 @@
{ {
"resourceType": "GMScript", "resourceType": "GMScript",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "node_iteration_input", "name": "node_iterator_input",
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "group",
"path": "folders/nodes/data/group.yy",
},
"resourceVersion": "1.0",
"name": "node_group_input",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -0,0 +1,58 @@
function Node_Iterator_Output(_x, _y, _group = -1) : Node_Group_Output(_x, _y, _group) constructor {
name = "Output";
color = COLORS.node_blend_loop;
w = 96;
h = 32 + 24 * 2;
min_h = h;
inputs[| 2] = nodeValue(2, "Loop exit", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1)
.setVisible(true, true);
cache_value = -1;
static getNextNodes = function() {
var _node_it = group;
var _ren = _node_it.iterationStatus();
if(_ren == ITERATION_STATUS.loop) { //Go back to the beginning of the loop, reset render status for leaf node inside?
printIf(global.RENDER_LOG, " > Loop restart: iteration " + string(group.iterated));
__nodeLeafList(group.nodes, RENDER_STACK);
var loopEnt = inputs[| 2].value_from.node;
ds_stack_push(RENDER_STACK, loopEnt);
} else if(_ren == ITERATION_STATUS.complete) { //Go out of loop
printIf(global.RENDER_LOG, " > Loop completed");
group.setRenderStatus(true);
var _ot = outParent;
for(var j = 0; j < ds_list_size(_ot.value_to); j++) {
var _to = _ot.value_to[| j];
if(_to.node.active && _to.value_from != noone && _to.value_from.node == group) {
_to.node.triggerRender();
if(_to.node.isUpdateReady()) ds_stack_push(RENDER_STACK, _to.node);
}
}
} else
printIf(global.RENDER_LOG, " > Loop not ready");
}
static initLoop = function() {
cache_value = noone;
}
static update = function() {
var _val_get = inputs[| 0].getValue();
switch(inputs[| 0].type) {
case VALUE_TYPE.surface :
if(is_surface(cache_value))
surface_free(cache_value);
if(is_surface(_val_get))
cache_value = surface_clone(_val_get);
printIf(global.RENDER_LOG, "LOOP cache result");
break;
default :
cache_value = _val_get;
}
}
}

View file

@ -1,7 +1,7 @@
{ {
"resourceType": "GMScript", "resourceType": "GMScript",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "node_iteration_output", "name": "node_iterator_output",
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {

View file

@ -5,7 +5,7 @@
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "number", "name": "value",
"path": "folders/nodes/data/number.yy", "path": "folders/nodes/data/value.yy",
}, },
} }

View file

@ -66,21 +66,41 @@ function Node_Math(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
static _eval = function(mode, a, b, deg = true) { static _eval = function(mode, a, b, deg = true) {
switch(mode) { switch(mode) {
case MATH_OPERATOR.add : return a + b; case MATH_OPERATOR.add :
case MATH_OPERATOR.subtract : return a - b; if(is_real(a) && is_real(b)) return a + b;
case MATH_OPERATOR.multiply : return a * b; else if(is_string(a) || is_string(b)) return string(a) + string(b);
case MATH_OPERATOR.divide : return b == 0? 0 : a / b;
case MATH_OPERATOR.power : return power(a, b);
case MATH_OPERATOR.root : return b == 0? 0 : power(a, 1 / b);
case MATH_OPERATOR.sin : return sin(degtorad(a)) * b; case MATH_OPERATOR.subtract :
case MATH_OPERATOR.cos : return cos(degtorad(a)) * b; if(is_real(a) && is_real(b)) return a - b;
case MATH_OPERATOR.tan : return tan(degtorad(a)) * b; else if(is_string(a) || is_string(b)) return string_replace(string(a), string(b), "");
case MATH_OPERATOR.modulo : return safe_mod(a, b);
case MATH_OPERATOR.floor : return floor(a); case MATH_OPERATOR.multiply :
case MATH_OPERATOR.ceiling : return ceil(a); if(is_real(a) && is_real(b)) return a * b;
case MATH_OPERATOR.round : return round(a); else if(is_string(a) || is_real(b)) {
var s = "";
repeat(b) s += a;
return s;
} else if(is_string(b) || is_real(a)) {
var s = "";
repeat(a) s += b;
return s;
}
case MATH_OPERATOR.divide :
if(is_real(a) && is_real(b)) return b == 0? 0 : a / b;
else if(is_string(a) || is_string(b)) return string_replace_all(string(a), string(b), "");
case MATH_OPERATOR.power : if(is_real(a) && is_real(b)) return power(a, b);
case MATH_OPERATOR.root : if(is_real(a) && is_real(b)) return b == 0? 0 : power(a, 1 / b);
case MATH_OPERATOR.sin : if(is_real(a) && is_real(b)) return sin(degtorad(a)) * b;
case MATH_OPERATOR.cos : if(is_real(a) && is_real(b)) return cos(degtorad(a)) * b;
case MATH_OPERATOR.tan : if(is_real(a) && is_real(b)) return tan(degtorad(a)) * b;
case MATH_OPERATOR.modulo : if(is_real(a) && is_real(b)) return safe_mod(a, b);
case MATH_OPERATOR.floor : if(is_real(a)) return floor(a);
case MATH_OPERATOR.ceiling : if(is_real(a)) return ceil(a);
case MATH_OPERATOR.round : if(is_real(a)) return round(a);
} }
return 0; return 0;
} }

Some files were not shown because too many files have changed in this diff Show more