From dc2badae83cdb8667eb2e2bce2cbb0cdefe451d3 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Mon, 30 Dec 2024 13:09:13 +0700 Subject: [PATCH] [Inspector Panel] Fix vec2 widget show incorrect value when connected. --- PixelComposer.resource_order | 89 +- PixelComposer.yyp | 5 +- objects/o_dialog_add_node/Create_0.gml | 6 +- scripts/mouse_input/mouse_input.gml | 2 +- scripts/node_noise_blue/node_noise_blue.gml | 62 + scripts/node_noise_blue/node_noise_blue.yy | 14 + scripts/node_registry/node_registry.gml | 1270 ++++++++--------- .../node_value_dimension.gml | 7 - scripts/string_functions/string_functions.gml | 43 + shaders/sh_ani_noise/sh_ani_noise.yy | 2 +- shaders/sh_noise/sh_noise.yy | 2 +- .../sh_noise_blue_interpret.fsh | 10 + .../sh_noise_blue_interpret.vsh | 19 + .../sh_noise_blue_interpret.yy | 12 + .../sh_noise_blue_iterate.fsh | 6 + .../sh_noise_blue_iterate.vsh | 14 + .../sh_noise_blue_iterate.yy | 12 + shaders/sh_noise_bubble/sh_noise_bubble.yy | 2 +- shaders/sh_noise_cristal/sh_noise_cristal.yy | 2 +- shaders/sh_noise_fbm/sh_noise_fbm.yy | 2 +- shaders/sh_noise_flow/sh_noise_flow.yy | 2 +- shaders/sh_noise_fold/sh_noise_fold.yy | 2 +- shaders/sh_noise_gabor/sh_noise_gabor.yy | 2 +- .../sh_noise_grid_hex/sh_noise_grid_hex.yy | 2 +- .../sh_noise_grid_tri/sh_noise_grid_tri.yy | 2 +- shaders/sh_noise_honey/sh_noise_honey.yy | 2 +- shaders/sh_noise_shard/sh_noise_shard.yy | 2 +- shaders/sh_noise_strand/sh_noise_strand.yy | 2 +- shaders/sh_noise_wavelet/sh_noise_wavelet.yy | 2 +- shaders/sh_perlin/sh_perlin.yy | 2 +- shaders/sh_perlin_extra/sh_perlin_extra.yy | 2 +- shaders/sh_perlin_smear/sh_perlin_smear.yy | 2 +- shaders/sh_perlin_tiled/sh_perlin_tiled.yy | 2 +- shaders/sh_simplex/sh_simplex.yy | 2 +- shaders/sh_voronoi_extra/sh_voronoi_extra.yy | 2 +- 35 files changed, 902 insertions(+), 709 deletions(-) create mode 100644 scripts/node_noise_blue/node_noise_blue.gml create mode 100644 scripts/node_noise_blue/node_noise_blue.yy create mode 100644 shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.fsh create mode 100644 shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.vsh create mode 100644 shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy create mode 100644 shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.fsh create mode 100644 shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.vsh create mode 100644 shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 3064ece17..9d1bc85ea 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -217,19 +217,19 @@ {"name":"blinker","order":2,"path":"folders/shader/generator/blinker.yy",}, {"name":"cell","order":3,"path":"folders/shader/generator/cell.yy",}, {"name":"grid","order":1,"path":"folders/shader/generator/grid.yy",}, - {"name":"random_shape","order":4,"path":"folders/shader/generator/random_shape.yy",}, - {"name":"reaction_diffusion","order":5,"path":"folders/shader/generator/reaction_diffusion.yy",}, - {"name":"region","order":6,"path":"folders/shader/generator/region.yy",}, - {"name":"sky model","order":9,"path":"folders/shader/generator/sky model.yy",}, - {"name":"texture repeat","order":8,"path":"folders/shader/generator/texture repeat.yy",}, - {"name":"vector_mapper","order":7,"path":"folders/shader/generator/vector_mapper.yy",}, + {"name":"random_shape","order":5,"path":"folders/shader/generator/random_shape.yy",}, + {"name":"reaction_diffusion","order":6,"path":"folders/shader/generator/reaction_diffusion.yy",}, + {"name":"region","order":7,"path":"folders/shader/generator/region.yy",}, + {"name":"sky model","order":10,"path":"folders/shader/generator/sky model.yy",}, + {"name":"texture repeat","order":9,"path":"folders/shader/generator/texture repeat.yy",}, + {"name":"vector_mapper","order":8,"path":"folders/shader/generator/vector_mapper.yy",}, {"name":"mask","order":10,"path":"folders/shader/mask.yy",}, {"name":"misc","order":11,"path":"folders/shader/misc.yy",}, {"name":"MK effects","order":12,"path":"folders/shader/MK effects.yy",}, {"name":"Fracture","order":2,"path":"folders/shader/MK effects/Fracture.yy",}, {"name":"Subpixel","order":3,"path":"folders/shader/MK effects/Subpixel.yy",}, {"name":"Tile","order":1,"path":"folders/shader/MK effects/Tile.yy",}, - {"name":"noise","order":19,"path":"folders/shader/noise.yy",}, + {"name":"noise","order":4,"path":"folders/shader/generator/noise.yy",}, {"name":"pixel_builder","order":13,"path":"folders/shader/pixel_builder.yy",}, {"name":"ray march","order":17,"path":"folders/shader/ray march.yy",}, {"name":"sprites","order":14,"path":"folders/shader/sprites.yy",}, @@ -845,18 +845,18 @@ {"name":"node_FLIP_wall","order":9,"path":"scripts/node_FLIP_wall/node_FLIP_wall.yy",}, {"name":"node_flip","order":13,"path":"scripts/node_flip/node_flip.yy",}, {"name":"node_flood_fill","order":3,"path":"scripts/node_flood_fill/node_flood_fill.yy",}, - {"name":"node_flow_noise","order":18,"path":"scripts/node_flow_noise/node_flow_noise.yy",}, + {"name":"node_flow_noise","order":19,"path":"scripts/node_flow_noise/node_flow_noise.yy",}, {"name":"node_fn_constant","order":3,"path":"scripts/node_fn_constant/node_fn_constant.yy",}, {"name":"node_fn_ease","order":5,"path":"scripts/node_fn_ease/node_fn_ease.yy",}, {"name":"node_fn_math","order":6,"path":"scripts/node_fn_math/node_fn_math.yy",}, {"name":"node_fn_smoothstep","order":4,"path":"scripts/node_fn_smoothstep/node_fn_smoothstep.yy",}, {"name":"node_fn_wave_table","order":1,"path":"scripts/node_fn_wave_table/node_fn_wave_table.yy",}, {"name":"node_fn","order":2,"path":"scripts/node_fn/node_fn.yy",}, - {"name":"node_fold_noise","order":14,"path":"scripts/node_fold_noise/node_fold_noise.yy",}, + {"name":"node_fold_noise","order":15,"path":"scripts/node_fold_noise/node_fold_noise.yy",}, {"name":"node_frame","order":3,"path":"scripts/node_frame/node_frame.yy",}, {"name":"node_functions","order":2,"path":"scripts/node_functions/node_functions.yy",}, {"name":"node_FXAA","order":11,"path":"scripts/node_FXAA/node_FXAA.yy",}, - {"name":"node_gabor_noise","order":11,"path":"scripts/node_gabor_noise/node_gabor_noise.yy",}, + {"name":"node_gabor_noise","order":12,"path":"scripts/node_gabor_noise/node_gabor_noise.yy",}, {"name":"node_gamma_map","order":15,"path":"scripts/node_gamma_map/node_gamma_map.yy",}, {"name":"node_global","order":3,"path":"scripts/node_global/node_global.yy",}, {"name":"node_glow","order":11,"path":"scripts/node_glow/node_glow.yy",}, @@ -885,7 +885,7 @@ {"name":"node_herringbone_tile","order":7,"path":"scripts/node_herringbone_tile/node_herringbone_tile.yy",}, {"name":"node_high_pass","order":14,"path":"scripts/node_high_pass/node_high_pass.yy",}, {"name":"node_hlsl","order":13,"path":"scripts/node_hlsl/node_hlsl.yy",}, - {"name":"node_honey_noise","order":20,"path":"scripts/node_honey_noise/node_honey_noise.yy",}, + {"name":"node_honey_noise","order":21,"path":"scripts/node_honey_noise/node_honey_noise.yy",}, {"name":"node_hsv_channel","order":1,"path":"scripts/node_hsv_channel/node_hsv_channel.yy",}, {"name":"node_http_request","order":27,"path":"scripts/node_http_request/node_http_request.yy",}, {"name":"node_image_animated","order":1,"path":"scripts/node_image_animated/node_image_animated.yy",}, @@ -958,12 +958,13 @@ {"name":"node_morph_surface","order":5,"path":"scripts/node_morph_surface/node_morph_surface.yy",}, {"name":"node_move_point","order":9,"path":"scripts/node_move_point/node_move_point.yy",}, {"name":"node_noise_aniso","order":1,"path":"scripts/node_noise_aniso/node_noise_aniso.yy",}, - {"name":"node_noise_bubble","order":17,"path":"scripts/node_noise_bubble/node_noise_bubble.yy",}, - {"name":"node_noise_cristal","order":19,"path":"scripts/node_noise_cristal/node_noise_cristal.yy",}, + {"name":"node_noise_blue","order":8,"path":"scripts/node_noise_blue/node_noise_blue.yy",}, + {"name":"node_noise_bubble","order":18,"path":"scripts/node_noise_bubble/node_noise_bubble.yy",}, + {"name":"node_noise_cristal","order":20,"path":"scripts/node_noise_cristal/node_noise_cristal.yy",}, {"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",}, {"name":"node_noise_hex","order":5,"path":"scripts/node_noise_hex/node_noise_hex.yy",}, {"name":"node_noise_simplex","order":7,"path":"scripts/node_noise_simplex/node_noise_simplex.yy",}, - {"name":"node_noise_strand","order":15,"path":"scripts/node_noise_strand/node_noise_strand.yy",}, + {"name":"node_noise_strand","order":16,"path":"scripts/node_noise_strand/node_noise_strand.yy",}, {"name":"node_noise_tri","order":6,"path":"scripts/node_noise_tri/node_noise_tri.yy",}, {"name":"node_normal_light","order":2,"path":"scripts/node_normal_light/node_normal_light.yy",}, {"name":"node_normal","order":1,"path":"scripts/node_normal/node_normal.yy",}, @@ -1045,9 +1046,9 @@ {"name":"node_PCX_fn_surface_width","order":1,"path":"scripts/node_PCX_fn_surface_width/node_PCX_fn_surface_width.yy",}, {"name":"node_PCX_fn_var","order":1,"path":"scripts/node_PCX_fn_var/node_PCX_fn_var.yy",}, {"name":"node_PCX_var","order":6,"path":"scripts/node_PCX_var/node_PCX_var.yy",}, - {"name":"node_perlin_extra","order":10,"path":"scripts/node_perlin_extra/node_perlin_extra.yy",}, - {"name":"node_perlin_smear","order":9,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",}, - {"name":"node_perlin","order":8,"path":"scripts/node_perlin/node_perlin.yy",}, + {"name":"node_perlin_extra","order":11,"path":"scripts/node_perlin_extra/node_perlin_extra.yy",}, + {"name":"node_perlin_smear","order":10,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",}, + {"name":"node_perlin","order":9,"path":"scripts/node_perlin/node_perlin.yy",}, {"name":"node_pin","order":4,"path":"scripts/node_pin/node_pin.yy",}, {"name":"node_pixel_builder","order":4,"path":"scripts/node_pixel_builder/node_pixel_builder.yy",}, {"name":"node_pixel_cloud","order":21,"path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",}, @@ -1104,7 +1105,7 @@ {"name":"node_shape_map","order":7,"path":"scripts/node_shape_map/node_shape_map.yy",}, {"name":"node_shape_polygon","order":6,"path":"scripts/node_shape_polygon/node_shape_polygon.yy",}, {"name":"node_shape","order":8,"path":"scripts/node_shape/node_shape.yy",}, - {"name":"node_shard_noise","order":12,"path":"scripts/node_shard_noise/node_shard_noise.yy",}, + {"name":"node_shard_noise","order":13,"path":"scripts/node_shard_noise/node_shard_noise.yy",}, {"name":"node_shell","order":15,"path":"scripts/node_shell/node_shell.yy",}, {"name":"node_shuffle","order":28,"path":"scripts/node_shuffle/node_shuffle.yy",}, {"name":"node_skew","order":11,"path":"scripts/node_skew/node_skew.yy",}, @@ -1258,11 +1259,11 @@ {"name":"node_VFX_vortex","order":6,"path":"scripts/node_VFX_vortex/node_VFX_vortex.yy",}, {"name":"node_VFX_wind","order":7,"path":"scripts/node_VFX_wind/node_VFX_wind.yy",}, {"name":"node_vignette","order":18,"path":"scripts/node_vignette/node_vignette.yy",}, - {"name":"node_voronoi_extra","order":16,"path":"scripts/node_voronoi_extra/node_voronoi_extra.yy",}, + {"name":"node_voronoi_extra","order":17,"path":"scripts/node_voronoi_extra/node_voronoi_extra.yy",}, {"name":"node_warp","order":2,"path":"scripts/node_warp/node_warp.yy",}, {"name":"node_wav_file_read","order":11,"path":"scripts/node_wav_file_read/node_wav_file_read.yy",}, {"name":"node_wav_file_write","order":12,"path":"scripts/node_wav_file_write/node_wav_file_write.yy",}, - {"name":"node_wavelet_noise","order":13,"path":"scripts/node_wavelet_noise/node_wavelet_noise.yy",}, + {"name":"node_wavelet_noise","order":14,"path":"scripts/node_wavelet_noise/node_wavelet_noise.yy",}, {"name":"node_websocket_sender","order":1,"path":"scripts/node_websocket_sender/node_websocket_sender.yy",}, {"name":"node_widget_test","order":16,"path":"scripts/node_widget_test/node_widget_test.yy",}, {"name":"node_wrap_area","order":10,"path":"scripts/node_wrap_area/node_wrap_area.yy",}, @@ -1421,14 +1422,14 @@ {"name":"window_functions","order":2,"path":"scripts/window_functions/window_functions.yy",}, {"name":"winwin_extras","order":6,"path":"scripts/winwin_extras/winwin_extras.yy",}, {"name":"winwin_utils","order":7,"path":"scripts/winwin_utils/winwin_utils.yy",}, - {"name":"sh_2d_light_apply","order":31,"path":"shaders/sh_2d_light_apply/sh_2d_light_apply.yy",}, - {"name":"sh_2d_light","order":20,"path":"shaders/sh_2d_light/sh_2d_light.yy",}, + {"name":"sh_2d_light_apply","order":32,"path":"shaders/sh_2d_light_apply/sh_2d_light_apply.yy",}, + {"name":"sh_2d_light","order":21,"path":"shaders/sh_2d_light/sh_2d_light.yy",}, {"name":"sh_3d_depth","order":6,"path":"shaders/sh_3d_depth/sh_3d_depth.yy",}, {"name":"sh_3d_extrude_corner","order":7,"path":"shaders/sh_3d_extrude_corner/sh_3d_extrude_corner.yy",}, {"name":"sh_3d_extrude_filler_depth","order":9,"path":"shaders/sh_3d_extrude_filler_depth/sh_3d_extrude_filler_depth.yy",}, {"name":"sh_3d_extrude_filler","order":8,"path":"shaders/sh_3d_extrude_filler/sh_3d_extrude_filler.yy",}, {"name":"sh_ace","order":22,"path":"shaders/sh_ace/sh_ace.yy",}, - {"name":"sh_active_canvas_ink","order":23,"path":"shaders/sh_active_canvas_ink/sh_active_canvas_ink.yy",}, + {"name":"sh_active_canvas_ink","order":24,"path":"shaders/sh_active_canvas_ink/sh_active_canvas_ink.yy",}, {"name":"sh_alpha_grey","order":1,"path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",}, {"name":"sh_alpha_hash","order":2,"path":"shaders/sh_alpha_hash/sh_alpha_hash.yy",}, {"name":"sh_atlas_scan","order":53,"path":"shaders/sh_atlas_scan/sh_atlas_scan.yy",}, @@ -1483,7 +1484,7 @@ {"name":"sh_blur_simple","order":10,"path":"shaders/sh_blur_simple/sh_blur_simple.yy",}, {"name":"sh_blur_slope","order":11,"path":"shaders/sh_blur_slope/sh_blur_slope.yy",}, {"name":"sh_blur_zoom","order":12,"path":"shaders/sh_blur_zoom/sh_blur_zoom.yy",}, - {"name":"sh_box_pattern","order":29,"path":"shaders/sh_box_pattern/sh_box_pattern.yy",}, + {"name":"sh_box_pattern","order":30,"path":"shaders/sh_box_pattern/sh_box_pattern.yy",}, {"name":"sh_brush_linear","order":56,"path":"shaders/sh_brush_linear/sh_brush_linear.yy",}, {"name":"sh_brush_outline","order":7,"path":"shaders/sh_brush_outline/sh_brush_outline.yy",}, {"name":"sh_bw","order":3,"path":"shaders/sh_bw/sh_bw.yy",}, @@ -1511,7 +1512,7 @@ {"name":"sh_channel_R2R","order":14,"path":"shaders/sh_channel_R2R/sh_channel_R2R.yy",}, {"name":"sh_channel_S","order":5,"path":"shaders/sh_channel_S/sh_channel_S.yy",}, {"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",}, - {"name":"sh_checkerboard","order":13,"path":"shaders/sh_checkerboard/sh_checkerboard.yy",}, + {"name":"sh_checkerboard","order":14,"path":"shaders/sh_checkerboard/sh_checkerboard.yy",}, {"name":"sh_chromatic_aberration","order":32,"path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",}, {"name":"sh_clean_shape","order":37,"path":"shaders/sh_clean_shape/sh_clean_shape.yy",}, {"name":"sh_color_adjust","order":4,"path":"shaders/sh_color_adjust/sh_color_adjust.yy",}, @@ -1527,11 +1528,11 @@ {"name":"sh_combine_rgb","order":11,"path":"shaders/sh_combine_rgb/sh_combine_rgb.yy",}, {"name":"sh_content_sampler","order":2,"path":"shaders/sh_content_sampler/sh_content_sampler.yy",}, {"name":"sh_convolution","order":39,"path":"shaders/sh_convolution/sh_convolution.yy",}, - {"name":"sh_coord","order":30,"path":"shaders/sh_coord/sh_coord.yy",}, + {"name":"sh_coord","order":31,"path":"shaders/sh_coord/sh_coord.yy",}, {"name":"sh_corner_erode","order":1,"path":"shaders/sh_corner_erode/sh_corner_erode.yy",}, {"name":"sh_corner_iterate","order":2,"path":"shaders/sh_corner_iterate/sh_corner_iterate.yy",}, - {"name":"sh_cross_histogram","order":27,"path":"shaders/sh_cross_histogram/sh_cross_histogram.yy",}, - {"name":"sh_cross_section","order":26,"path":"shaders/sh_cross_section/sh_cross_section.yy",}, + {"name":"sh_cross_histogram","order":28,"path":"shaders/sh_cross_histogram/sh_cross_histogram.yy",}, + {"name":"sh_cross_section","order":27,"path":"shaders/sh_cross_section/sh_cross_section.yy",}, {"name":"sh_curve_hsv","order":54,"path":"shaders/sh_curve_hsv/sh_curve_hsv.yy",}, {"name":"sh_curve","order":20,"path":"shaders/sh_curve/sh_curve.yy",}, {"name":"sh_d3d_3d_transform","order":16,"path":"shaders/sh_d3d_3d_transform/sh_d3d_3d_transform.yy",}, @@ -1608,10 +1609,10 @@ {"name":"sh_get_max_downsampled","order":8,"path":"shaders/sh_get_max_downsampled/sh_get_max_downsampled.yy",}, {"name":"sh_get_min_downsampled","order":9,"path":"shaders/sh_get_min_downsampled/sh_get_min_downsampled.yy",}, {"name":"sh_glow","order":35,"path":"shaders/sh_glow/sh_glow.yy",}, - {"name":"sh_gradient_display_alpha","order":22,"path":"shaders/sh_gradient_display_alpha/sh_gradient_display_alpha.yy",}, - {"name":"sh_gradient_display","order":17,"path":"shaders/sh_gradient_display/sh_gradient_display.yy",}, - {"name":"sh_gradient_points","order":18,"path":"shaders/sh_gradient_points/sh_gradient_points.yy",}, - {"name":"sh_gradient","order":16,"path":"shaders/sh_gradient/sh_gradient.yy",}, + {"name":"sh_gradient_display_alpha","order":23,"path":"shaders/sh_gradient_display_alpha/sh_gradient_display_alpha.yy",}, + {"name":"sh_gradient_display","order":18,"path":"shaders/sh_gradient_display/sh_gradient_display.yy",}, + {"name":"sh_gradient_points","order":19,"path":"shaders/sh_gradient_points/sh_gradient_points.yy",}, + {"name":"sh_gradient","order":17,"path":"shaders/sh_gradient/sh_gradient.yy",}, {"name":"sh_grain","order":24,"path":"shaders/sh_grain/sh_grain.yy",}, {"name":"sh_grey_alpha","order":12,"path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",}, {"name":"sh_greyscale","order":13,"path":"shaders/sh_greyscale/sh_greyscale.yy",}, @@ -1625,7 +1626,7 @@ {"name":"sh_interlaced","order":58,"path":"shaders/sh_interlaced/sh_interlaced.yy",}, {"name":"sh_invert","order":17,"path":"shaders/sh_invert/sh_invert.yy",}, {"name":"sh_jpeg_recons","order":1,"path":"shaders/sh_jpeg_recons/sh_jpeg_recons.yy",}, - {"name":"sh_julia_set","order":32,"path":"shaders/sh_julia_set/sh_julia_set.yy",}, + {"name":"sh_julia_set","order":33,"path":"shaders/sh_julia_set/sh_julia_set.yy",}, {"name":"sh_kuwahara_ani_pass1","order":1,"path":"shaders/sh_kuwahara_ani_pass1/sh_kuwahara_ani_pass1.yy",}, {"name":"sh_kuwahara_ani_pass2","order":2,"path":"shaders/sh_kuwahara_ani_pass2/sh_kuwahara_ani_pass2.yy",}, {"name":"sh_kuwahara_ani_pass3","order":3,"path":"shaders/sh_kuwahara_ani_pass3/sh_kuwahara_ani_pass3.yy",}, @@ -1668,6 +1669,8 @@ {"name":"sh_node_widget_rotator","order":1,"path":"shaders/sh_node_widget_rotator/sh_node_widget_rotator.yy",}, {"name":"sh_node_widget_scalar_cross","order":2,"path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",}, {"name":"sh_node_widget_scalar_line","order":3,"path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",}, + {"name":"sh_noise_blue_interpret","order":21,"path":"shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy",}, + {"name":"sh_noise_blue_iterate","order":20,"path":"shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy",}, {"name":"sh_noise_bubble","order":2,"path":"shaders/sh_noise_bubble/sh_noise_bubble.yy",}, {"name":"sh_noise_cristal","order":18,"path":"shaders/sh_noise_cristal/sh_noise_cristal.yy",}, {"name":"sh_noise_fbm","order":3,"path":"shaders/sh_noise_fbm/sh_noise_fbm.yy",}, @@ -1693,7 +1696,7 @@ {"name":"sh_palette_mixer_atlas_expand_palette","order":3,"path":"shaders/sh_palette_mixer_atlas_expand_palette/sh_palette_mixer_atlas_expand_palette.yy",}, {"name":"sh_palette_replace","order":38,"path":"shaders/sh_palette_replace/sh_palette_replace.yy",}, {"name":"sh_palette_shift","order":19,"path":"shaders/sh_palette_shift/sh_palette_shift.yy",}, - {"name":"sh_path_fill_profile","order":25,"path":"shaders/sh_path_fill_profile/sh_path_fill_profile.yy",}, + {"name":"sh_path_fill_profile","order":26,"path":"shaders/sh_path_fill_profile/sh_path_fill_profile.yy",}, {"name":"sh_path_morph","order":10,"path":"shaders/sh_path_morph/sh_path_morph.yy",}, {"name":"sh_pb_blob","order":1,"path":"shaders/sh_pb_blob/sh_pb_blob.yy",}, {"name":"sh_pb_brick","order":9,"path":"shaders/sh_pb_brick/sh_pb_brick.yy",}, @@ -1709,16 +1712,16 @@ {"name":"sh_perlin_smear","order":14,"path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",}, {"name":"sh_perlin_tiled","order":15,"path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",}, {"name":"sh_perlin","order":12,"path":"shaders/sh_perlin/sh_perlin.yy",}, - {"name":"sh_pixel_cloud","order":14,"path":"shaders/sh_pixel_cloud/sh_pixel_cloud.yy",}, + {"name":"sh_pixel_cloud","order":15,"path":"shaders/sh_pixel_cloud/sh_pixel_cloud.yy",}, {"name":"sh_pixel_math","order":57,"path":"shaders/sh_pixel_math/sh_pixel_math.yy",}, - {"name":"sh_pixel_sample","order":28,"path":"shaders/sh_pixel_sample/sh_pixel_sample.yy",}, + {"name":"sh_pixel_sample","order":29,"path":"shaders/sh_pixel_sample/sh_pixel_sample.yy",}, {"name":"sh_pixel_sort","order":34,"path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",}, {"name":"sh_polar","order":1,"path":"shaders/sh_polar/sh_polar.yy",}, {"name":"sh_posterize_palette","order":21,"path":"shaders/sh_posterize_palette/sh_posterize_palette.yy",}, {"name":"sh_posterize","order":25,"path":"shaders/sh_posterize/sh_posterize.yy",}, {"name":"sh_preview_histogram_outline","order":1,"path":"shaders/sh_preview_histogram_outline/sh_preview_histogram_outline.yy",}, {"name":"sh_pytagorean_tile","order":4,"path":"shaders/sh_pytagorean_tile/sh_pytagorean_tile.yy",}, - {"name":"sh_quarsicrystal","order":24,"path":"shaders/sh_quarsicrystal/sh_quarsicrystal.yy",}, + {"name":"sh_quarsicrystal","order":25,"path":"shaders/sh_quarsicrystal/sh_quarsicrystal.yy",}, {"name":"sh_random_tile","order":6,"path":"shaders/sh_random_tile/sh_random_tile.yy",}, {"name":"sh_rd_add","order":3,"path":"shaders/sh_rd_add/sh_rd_add.yy",}, {"name":"sh_rd_propagate","order":1,"path":"shaders/sh_rd_propagate/sh_rd_propagate.yy",}, @@ -1742,7 +1745,7 @@ {"name":"sh_rm_terrain","order":1,"path":"shaders/sh_rm_terrain/sh_rm_terrain.yy",}, {"name":"sh_rsh_erode","order":2,"path":"shaders/sh_rsh_erode/sh_rsh_erode.yy",}, {"name":"sh_rsh_rotate","order":1,"path":"shaders/sh_rsh_rotate/sh_rsh_rotate.yy",}, - {"name":"sh_sample_points","order":19,"path":"shaders/sh_sample_points/sh_sample_points.yy",}, + {"name":"sh_sample_points","order":20,"path":"shaders/sh_sample_points/sh_sample_points.yy",}, {"name":"sh_sao","order":4,"path":"shaders/sh_sao/sh_sao.yy",}, {"name":"sh_scale_cleanedge","order":55,"path":"shaders/sh_scale_cleanedge/sh_scale_cleanedge.yy",}, {"name":"sh_scale2x","order":28,"path":"shaders/sh_scale2x/sh_scale2x.yy",}, @@ -1756,16 +1759,16 @@ {"name":"sh_shadow_cast_light_sep","order":1,"path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",}, {"name":"sh_shape_map_circle","order":14,"path":"shaders/sh_shape_map_circle/sh_shape_map_circle.yy",}, {"name":"sh_shape_map_polygon","order":15,"path":"shaders/sh_shape_map_polygon/sh_shape_map_polygon.yy",}, - {"name":"sh_shape","order":10,"path":"shaders/sh_shape/sh_shape.yy",}, + {"name":"sh_shape","order":11,"path":"shaders/sh_shape/sh_shape.yy",}, {"name":"sh_simplex","order":16,"path":"shaders/sh_simplex/sh_simplex.yy",}, {"name":"sh_skew","order":6,"path":"shaders/sh_skew/sh_skew.yy",}, {"name":"sh_sky_hosek","order":2,"path":"shaders/sh_sky_hosek/sh_sky_hosek.yy",}, {"name":"sh_sky_scattering","order":1,"path":"shaders/sh_sky_scattering/sh_sky_scattering.yy",}, {"name":"sh_slice_spritesheet_empty_scan","order":7,"path":"shaders/sh_slice_spritesheet_empty_scan/sh_slice_spritesheet_empty_scan.yy",}, {"name":"sh_smear","order":13,"path":"shaders/sh_smear/sh_smear.yy",}, - {"name":"sh_solid","order":15,"path":"shaders/sh_solid/sh_solid.yy",}, + {"name":"sh_solid","order":16,"path":"shaders/sh_solid/sh_solid.yy",}, {"name":"sh_spherize","order":11,"path":"shaders/sh_spherize/sh_spherize.yy",}, - {"name":"sh_stripe","order":11,"path":"shaders/sh_stripe/sh_stripe.yy",}, + {"name":"sh_stripe","order":12,"path":"shaders/sh_stripe/sh_stripe.yy",}, {"name":"sh_surface_replace_fast_find","order":2,"path":"shaders/sh_surface_replace_fast_find/sh_surface_replace_fast_find.yy",}, {"name":"sh_surface_replace_fast_replace","order":3,"path":"shaders/sh_surface_replace_fast_replace/sh_surface_replace_fast_replace.yy",}, {"name":"sh_surface_replace_replace","order":1,"path":"shaders/sh_surface_replace_replace/sh_surface_replace_replace.yy",}, @@ -1795,10 +1798,10 @@ {"name":"sh_voronoi_extra","order":17,"path":"shaders/sh_voronoi_extra/sh_voronoi_extra.yy",}, {"name":"sh_warp_4points_pers","order":10,"path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",}, {"name":"sh_warp_4points","order":9,"path":"shaders/sh_warp_4points/sh_warp_4points.yy",}, - {"name":"sh_water_caustic","order":21,"path":"shaders/sh_water_caustic/sh_water_caustic.yy",}, + {"name":"sh_water_caustic","order":22,"path":"shaders/sh_water_caustic/sh_water_caustic.yy",}, {"name":"sh_widget_rotator_range","order":5,"path":"shaders/sh_widget_rotator_range/sh_widget_rotator_range.yy",}, {"name":"sh_widget_rotator","order":4,"path":"shaders/sh_widget_rotator/sh_widget_rotator.yy",}, - {"name":"sh_zigzag","order":12,"path":"shaders/sh_zigzag/sh_zigzag.yy",}, + {"name":"sh_zigzag","order":13,"path":"shaders/sh_zigzag/sh_zigzag.yy",}, {"name":"credit_badge_popular","order":2,"path":"sprites/credit_badge_popular/credit_badge_popular.yy",}, {"name":"credit_badge_value","order":1,"path":"sprites/credit_badge_value/credit_badge_value.yy",}, {"name":"s_3d_preview_settings","order":1,"path":"sprites/s_3d_preview_settings/s_3d_preview_settings.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index a4e661365..a63114fcb 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -314,7 +314,7 @@ {"$GMFolder":"","%Name":"Fracture","folderPath":"folders/shader/MK effects/Fracture.yy","name":"Fracture","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"Subpixel","folderPath":"folders/shader/MK effects/Subpixel.yy","name":"Subpixel","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"Tile","folderPath":"folders/shader/MK effects/Tile.yy","name":"Tile","resourceType":"GMFolder","resourceVersion":"2.0",}, - {"$GMFolder":"","%Name":"noise","folderPath":"folders/shader/noise.yy","name":"noise","resourceType":"GMFolder","resourceVersion":"2.0",}, + {"$GMFolder":"","%Name":"noise","folderPath":"folders/shader/generator/noise.yy","name":"noise","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"pixel_builder","folderPath":"folders/shader/pixel_builder.yy","name":"pixel_builder","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"ray march","folderPath":"folders/shader/ray march.yy","name":"ray march","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"sprites","folderPath":"folders/shader/sprites.yy","name":"sprites","resourceType":"GMFolder","resourceVersion":"2.0",}, @@ -1493,6 +1493,7 @@ {"id":{"name":"node_morph_surface","path":"scripts/node_morph_surface/node_morph_surface.yy",},}, {"id":{"name":"node_move_point","path":"scripts/node_move_point/node_move_point.yy",},}, {"id":{"name":"node_noise_aniso","path":"scripts/node_noise_aniso/node_noise_aniso.yy",},}, + {"id":{"name":"node_noise_blue","path":"scripts/node_noise_blue/node_noise_blue.yy",},}, {"id":{"name":"node_noise_bubble","path":"scripts/node_noise_bubble/node_noise_bubble.yy",},}, {"id":{"name":"node_noise_cristal","path":"scripts/node_noise_cristal/node_noise_cristal.yy",},}, {"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},}, @@ -2300,6 +2301,8 @@ {"id":{"name":"sh_node_widget_scalar_cross","path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",},}, {"id":{"name":"sh_node_widget_scalar_line","path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",},}, {"id":{"name":"sh_node_widget_scalar","path":"shaders/sh_node_widget_scalar/sh_node_widget_scalar.yy",},}, + {"id":{"name":"sh_noise_blue_interpret","path":"shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy",},}, + {"id":{"name":"sh_noise_blue_iterate","path":"shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy",},}, {"id":{"name":"sh_noise_bubble","path":"shaders/sh_noise_bubble/sh_noise_bubble.yy",},}, {"id":{"name":"sh_noise_cristal","path":"shaders/sh_noise_cristal/sh_noise_cristal.yy",},}, {"id":{"name":"sh_noise_fbm","path":"shaders/sh_noise_fbm/sh_noise_fbm.yy",},}, diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 0c898fac7..8997d6190 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -1104,7 +1104,8 @@ event_inherited(); BLEND_NORMAL } - if(_hover && MOUSE_MOVED && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_size, yy + grid_size)) { + var _minput = _hover && (MOUSE_MOVED || mouse_release(mb_any)); + if(_minput && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_size, yy + grid_size)) { search_pane.hover_content = true; node_selecting = i; @@ -1236,7 +1237,8 @@ event_inherited(); if(i % 2) draw_sprite_stretched_add(THEME.node_bg, 0, pd, yy, list_width - pd * 2, list_height, c_white, 0.1); - if(_hover && MOUSE_MOVED && point_in_rectangle(_m[0], _m[1], pd + ui(16 * 2), yy, list_width, yy + list_height - 1)) { + var _minput = _hover && (MOUSE_MOVED || mouse_release(mb_any)); + if(_minput && point_in_rectangle(_m[0], _m[1], pd + ui(16 * 2), yy, list_width, yy + list_height - 1)) { search_pane.hover_content = true; node_selecting = i; diff --git a/scripts/mouse_input/mouse_input.gml b/scripts/mouse_input/mouse_input.gml index 0132044af..4a8f36e39 100644 --- a/scripts/mouse_input/mouse_input.gml +++ b/scripts/mouse_input/mouse_input.gml @@ -15,7 +15,7 @@ } #macro SCROLL_SPEED PREFERENCES.mouse_wheel_speed - #macro MOUSE_MOVED (window_mouse_get_delta_x() || window_mouse_get_delta_y()) + #macro MOUSE_MOVED (window_mouse_get_delta_x() != 0 || window_mouse_get_delta_y() != 0) #macro mouse_wheel_up mouse_wheel_up_override #macro __mouse_wheel_up mouse_wheel_up diff --git a/scripts/node_noise_blue/node_noise_blue.gml b/scripts/node_noise_blue/node_noise_blue.gml new file mode 100644 index 000000000..7e5c1cece --- /dev/null +++ b/scripts/node_noise_blue/node_noise_blue.gml @@ -0,0 +1,62 @@ +function Node_Noise_Blue(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Blue Noise"; + + newInput(0, nodeValue_Dimension(self)); + + newInput(1, nodeValueSeed(self)); + + newInput(2, nodeValue_Enum_Button("Color mode", self, 0, [ "Greyscale", "RGB", "HSV" ])); + + newInput(3, nodeValue_Slider_Range("Color R range", self, [ 0, 1 ])); + + newInput(4, nodeValue_Slider_Range("Color G range", self, [ 0, 1 ])); + + newInput(5, nodeValue_Slider_Range("Color B range", self, [ 0, 1 ])); + + input_display_list = [ + ["Output", false], 0, + ["Noise", false], 1, + ["Color", false], 2, 3, 4, 5, + ]; + + newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone)); + + attribute_surface_depth(); + + static step = function() { + var _col = getInputData(2); + + inputs[3].setVisible(_col != 0); + inputs[4].setVisible(_col != 0); + inputs[5].setVisible(_col != 0); + + inputs[3].name = _col == 1? "Color R range" : "Color H range"; + inputs[4].name = _col == 1? "Color G range" : "Color S range"; + inputs[5].name = _col == 1? "Color B range" : "Color V range"; + } + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _dim = _data[0]; + var _sed = _data[1]; + + var _col = _data[2]; + var _clr = _data[3]; + var _clg = _data[4]; + var _clb = _data[5]; + + _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); + + surface_set_shader(_outSurf, sh_noise); + shader_set_f("seed", _sed); + + shader_set_i("colored", _col); + shader_set_2("colorRanR", _clr); + shader_set_2("colorRanG", _clg); + shader_set_2("colorRanB", _clb); + + draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_noise_blue/node_noise_blue.yy b/scripts/node_noise_blue/node_noise_blue.yy new file mode 100644 index 000000000..cfca08d76 --- /dev/null +++ b/scripts/node_noise_blue/node_noise_blue.yy @@ -0,0 +1,14 @@ +{ + "$GMScript":"v1", + "%Name":"node_noise_blue", + "isCompatibility":false, + "isDnD":false, + "name":"node_noise_blue", + "parent":{ + "name":"noise", + "path":"folders/nodes/data/generator/noise.yy", + }, + "resourceType":"GMScript", + "resourceVersion":"2.0", + "tags":[], +} \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index 466e8b81d..05ddf85e9 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -1,4 +1,4 @@ -function NodeObject(_name, _spr, _node, _create, tooltip = "", tags = []) constructor { +function NodeObject(_name, _spr, _node, _create, _tooltip = "") constructor { name = _name; spr = _spr; node = _node; @@ -7,8 +7,8 @@ function NodeObject(_name, _spr, _node, _create, tooltip = "", tags = []) constr createNode = _create; createUseParam = array_length(createNode) > 2; - self.tags = tags; - self.tooltip = tooltip; + tags = []; + tooltip = _tooltip; new_node = false; tooltip_spr = noone; @@ -18,9 +18,9 @@ function NodeObject(_name, _spr, _node, _create, tooltip = "", tags = []) constr show_in_global = true; is_patreon_extra = false; - testable = true; + testable = true; - _fn = registerFunctionLite("New node", _name, function(_node) { PANEL_GRAPH.createNodeHotkey(_node); }, [ _node ]); + _fn = registerFunctionLite("New node", _name, function(n) /*=>*/ { PANEL_GRAPH.createNodeHotkey(n); }, [ node ]); _fn.spr = _spr; if(!IS_CMD) { @@ -35,6 +35,9 @@ function NodeObject(_name, _spr, _node, _create, tooltip = "", tags = []) constr } } + static setTags = function(_tags) { tags = _tags; return self; } + static setSpr = function(_spr) { spr = _spr; return self; } + static setVersion = function(version) { INLINE if(IS_CMD) return self; @@ -268,19 +271,16 @@ function nodeBuild(_name, _x, _y, _group = PANEL_GRAPH.getCurrentContext()) { return _bnode; } -function addNodeObject(_list, _name, _spr = 0, _node = "", _fun = [], _tag = [], tooltip = "") { +function addNodeObject(_list, _name, _node = "", _fun = [], tooltip = "") { if(ds_map_exists(ALL_NODES, _node)) { var _n = ALL_NODES[? _node]; ds_list_add(_list, _n); return _n; } - if(_spr == 0) { - _spr = asset_get_index($"s_{string_lower(_node)}"); - if(_spr == -1) print(_node) - } - - var _n = new NodeObject(_name, _spr, _node, _fun, tooltip, _tag); + var _s = asset_get_index($"s_{string_lower(_node)}"); + if(_s == -1) _s = 0; + var _n = new NodeObject(_name, _s, _node, _fun, tooltip); ALL_NODES[? _node] = _n; ds_list_add(_list, _n); @@ -317,210 +317,210 @@ function __initNodes() { // NODE LIST var fav = ds_list_create(); - NODE_ADD_CAT("Favourites", fav); + NODE_ADD_CAT("Home", fav); #region group var group = ds_list_create(); NODE_ADD_CAT("Group", group, ["Node_Group"], COLORS.node_blend_collection); ds_list_add(group, "Groups"); - addNodeObject(group, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); - addNodeObject(group, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); - addNodeObject(group, "Thumbnail",, "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); + addNodeObject(group, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); + addNodeObject(group, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); + addNodeObject(group, "Thumbnail", "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); #endregion #region for var iter = ds_list_create(); NODE_ADD_CAT("Loop", iter, ["Node_Iterate"], COLORS.node_blend_loop); //#For ds_list_add(iter, "Groups"); - addNodeObject(iter, "Loop Input", s_node_loop_input, "Node_Iterator_Input", [1, Node_Iterator_Input]).hideRecent(); - addNodeObject(iter, "Loop Output", s_node_loop_output, "Node_Iterator_Output", [1, Node_Iterator_Output]).hideRecent(); - addNodeObject(iter, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); - addNodeObject(iter, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); - addNodeObject(iter, "Thumbnail",, "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); + addNodeObject(iter, "Loop Input", "Node_Iterator_Input", [1, Node_Iterator_Input]).setSpr(s_node_loop_input).hideRecent(); + addNodeObject(iter, "Loop Output","Node_Iterator_Output", [1, Node_Iterator_Output]).setSpr(s_node_loop_output).hideRecent(); + addNodeObject(iter, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); + addNodeObject(iter, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); + addNodeObject(iter, "Thumbnail", "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); ds_list_add(iter, "Loops"); - addNodeObject(iter, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(iter, "Loop amount", s_node_iterator_amount, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); + addNodeObject(iter, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(iter, "Loop amount", "Node_Iterator_Length", [1, Node_Iterator_Length]).setSpr(s_node_iterator_amount).hideRecent(); #endregion #region for inline var iter_il = ds_list_create(); NODE_ADD_CAT("Loop", iter_il, ["Node_Iterate_Inline"], COLORS.node_blend_loop); //#For inline ds_list_add(iter_il, "Loops"); - addNodeObject(iter_il, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(iter_il, "Loop amount", s_node_iterator_amount, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); + addNodeObject(iter_il, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(iter_il, "Loop amount", "Node_Iterator_Length", [1, Node_Iterator_Length]).setSpr(s_node_iterator_amount).hideRecent(); #endregion #region for each var itere = ds_list_create(); NODE_ADD_CAT("Loop", itere, ["Node_Iterate_Each"], COLORS.node_blend_loop); //#Foreach ds_list_add(itere, "Groups"); - addNodeObject(itere, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); - addNodeObject(itere, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); - addNodeObject(itere, "Thumbnail",, "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); + addNodeObject(itere, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); + addNodeObject(itere, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); + addNodeObject(itere, "Thumbnail", "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); ds_list_add(itere, "Loops"); - addNodeObject(itere, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(itere, "Array Length", s_node_iterator_length, "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).hideRecent(); + addNodeObject(itere, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(itere, "Array Length", "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).setSpr(s_node_iterator_length).hideRecent(); #endregion #region for each inline var itere_il = ds_list_create(); NODE_ADD_CAT("Loop", itere_il, ["Node_Iterate_Each_Inline"], COLORS.node_blend_loop); //#Foreach inline ds_list_add(itere_il, "Loops"); - addNodeObject(itere_il, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(itere_il, "Array Length",, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); + addNodeObject(itere_il, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(itere_il, "Array Length", "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); #endregion #region iterate filter var filter = ds_list_create(); NODE_ADD_CAT("Filter", filter, ["Node_Iterate_Filter"], COLORS.node_blend_loop); //#Loop filter ds_list_add(filter, "Groups"); - addNodeObject(filter, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); - addNodeObject(filter, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); - addNodeObject(filter, "Thumbnail",, "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); + addNodeObject(filter, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); + addNodeObject(filter, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); + addNodeObject(filter, "Thumbnail", "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); ds_list_add(filter, "Loops"); - addNodeObject(filter, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(filter, "Array Length", s_node_iterator_length, "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).hideRecent(); + addNodeObject(filter, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(filter, "Array Length", "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).setSpr(s_node_iterator_length).hideRecent(); #endregion #region iterate filter inline var filter_il = ds_list_create(); NODE_ADD_CAT("Filter", filter_il, ["Node_Iterate_Filter_Inline"], COLORS.node_blend_loop); //#Loop filter inline ds_list_add(filter_il, "Loops"); - addNodeObject(filter_il, "Index",, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); - addNodeObject(filter_il, "Array Length",, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); + addNodeObject(filter_il, "Index", "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent(); + addNodeObject(filter_il, "Array Length", "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent(); #endregion #region iterate feedback var feed = ds_list_create(); NODE_ADD_CAT("Feedback", feed, ["Node_Feedback"], COLORS.node_blend_feedback); //#Feedback ds_list_add(feed, "Groups"); - addNodeObject(feed, "Input",, "Node_Feedback_Input", [1, Node_Feedback_Input]).hideRecent(); - addNodeObject(feed, "Output",, "Node_Feedback_Output", [1, Node_Feedback_Output]).hideRecent(); - addNodeObject(feed, "Thumbnail",, "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); + addNodeObject(feed, "Input", "Node_Feedback_Input", [1, Node_Feedback_Input]).hideRecent(); + addNodeObject(feed, "Output", "Node_Feedback_Output", [1, Node_Feedback_Output]).hideRecent(); + addNodeObject(feed, "Thumbnail", "Node_Group_Thumbnail", [1, Node_Group_Thumbnail]).hideRecent(); #endregion #region vfx var vfx = ds_list_create(); NODE_ADD_CAT("VFX", vfx, ["Node_VFX_Group", "Node_VFX_Group_Inline"], COLORS.node_blend_vfx); ds_list_add(vfx, "Groups"); - addNodeObject(vfx, "Input", s_node_vfx_input, "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); - addNodeObject(vfx, "Output", s_node_vfx_output, "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); - addNodeObject(vfx, "Renderer", s_node_vfx_render_output, "Node_VFX_Renderer_Output", [1, Node_VFX_Renderer_Output]).hideRecent().hideGlobal(); + addNodeObject(vfx, "Input", "Node_Group_Input", [1, Node_Group_Input]).setSpr(s_node_vfx_input).hideRecent().hideGlobal(); + addNodeObject(vfx, "Output", "Node_Group_Output", [1, Node_Group_Output]).setSpr(s_node_vfx_output).hideRecent().hideGlobal(); + addNodeObject(vfx, "Renderer", "Node_VFX_Renderer_Output", [1, Node_VFX_Renderer_Output]).setSpr(s_node_vfx_render_output).hideRecent().hideGlobal(); ds_list_add(vfx, "Main"); - addNodeObject(vfx, "Spawner", s_node_vfx_spawn, "Node_VFX_Spawner", [1, Node_VFX_Spawner],, "Spawn new particles.").hideRecent(); - addNodeObject(vfx, "Renderer", s_node_vfx_render, "Node_VFX_Renderer", [1, Node_VFX_Renderer],, "Render particle objects to surface.").hideRecent(); + addNodeObject(vfx, "Spawner", "Node_VFX_Spawner", [1, Node_VFX_Spawner], "Spawn new particles.").setSpr(s_node_vfx_spawn).hideRecent(); + addNodeObject(vfx, "Renderer", "Node_VFX_Renderer", [1, Node_VFX_Renderer], "Render particle objects to surface.").setSpr(s_node_vfx_render).hideRecent(); ds_list_add(vfx, "Affectors"); - addNodeObject(vfx, "Accelerate",, "Node_VFX_Accelerate", [1, Node_VFX_Accelerate],, "Change the speed of particle in range.").hideRecent(); - addNodeObject(vfx, "Destroy",, "Node_VFX_Destroy", [1, Node_VFX_Destroy],, "Destroy particle in range.").hideRecent(); - addNodeObject(vfx, "Attract",, "Node_VFX_Attract", [1, Node_VFX_Attract],, "Attract particle in range to one point.").hideRecent(); - addNodeObject(vfx, "Wind",, "Node_VFX_Wind", [1, Node_VFX_Wind],, "Move particle in range.").hideRecent(); - addNodeObject(vfx, "Vortex",, "Node_VFX_Vortex", [1, Node_VFX_Vortex],, "Rotate particle around a point.").hideRecent(); - addNodeObject(vfx, "Turbulence",, "Node_VFX_Turbulence", [1, Node_VFX_Turbulence],, "Move particle in range randomly.").hideRecent(); - addNodeObject(vfx, "Repel",, "Node_VFX_Repel", [1, Node_VFX_Repel],, "Move particle away from point.").hideRecent(); - addNodeObject(vfx, "Oscillate",, "Node_VFX_Oscillate", [1, Node_VFX_Oscillate],, "Swing particle around its original trajectory.").hideRecent().setVersion(11560); - addNodeObject(vfx, "Boids",, "Node_VFX_Boids", [1, Node_VFX_Boids],, "Apply boids algorithm to create a flock behaviour.").hideRecent().setVersion(1_18_01_0); + addNodeObject(vfx, "Accelerate", "Node_VFX_Accelerate", [1, Node_VFX_Accelerate], "Change the speed of particle in range.").hideRecent(); + addNodeObject(vfx, "Destroy", "Node_VFX_Destroy", [1, Node_VFX_Destroy], "Destroy particle in range.").hideRecent(); + addNodeObject(vfx, "Attract", "Node_VFX_Attract", [1, Node_VFX_Attract], "Attract particle in range to one point.").hideRecent(); + addNodeObject(vfx, "Wind", "Node_VFX_Wind", [1, Node_VFX_Wind], "Move particle in range.").hideRecent(); + addNodeObject(vfx, "Vortex", "Node_VFX_Vortex", [1, Node_VFX_Vortex], "Rotate particle around a point.").hideRecent(); + addNodeObject(vfx, "Turbulence", "Node_VFX_Turbulence", [1, Node_VFX_Turbulence], "Move particle in range randomly.").hideRecent(); + addNodeObject(vfx, "Repel", "Node_VFX_Repel", [1, Node_VFX_Repel], "Move particle away from point.").hideRecent(); + addNodeObject(vfx, "Oscillate", "Node_VFX_Oscillate", [1, Node_VFX_Oscillate], "Swing particle around its original trajectory.").hideRecent().setVersion(11560); + addNodeObject(vfx, "Boids", "Node_VFX_Boids", [1, Node_VFX_Boids], "Apply boids algorithm to create a flock behaviour.").hideRecent().setVersion(1_18_01_0); ds_list_add(vfx, "Generates"); - addNodeObject(vfx, "VFX Trail",, "Node_VFX_Trail", [1, Node_VFX_Trail],, "Generate path from particle movement.").hideRecent().setVersion(11560); - addNodeObject(vfx, "VFX Triangulate",, "Node_VFX_Triangulate", [1, Node_VFX_Triangulate],, "Render line between particles.").hideRecent().setVersion(11670); + addNodeObject(vfx, "VFX Trail", "Node_VFX_Trail", [1, Node_VFX_Trail], "Generate path from particle movement.").hideRecent().setVersion(11560); + addNodeObject(vfx, "VFX Triangulate", "Node_VFX_Triangulate", [1, Node_VFX_Triangulate], "Render line between particles.").hideRecent().setVersion(11670); ds_list_add(vfx, "Variables"); - addNodeObject(vfx, "VFX Variable",, "Node_VFX_Variable", [1, Node_VFX_Variable],, "Extract variable from particle objects.").hideRecent().setVersion(1120); - addNodeObject(vfx, "VFX Override",, "Node_VFX_Override", [1, Node_VFX_Override],, "Replace particle variable with a new one.").hideRecent().setVersion(1120); + addNodeObject(vfx, "VFX Variable", "Node_VFX_Variable", [1, Node_VFX_Variable], "Extract variable from particle objects.").hideRecent().setVersion(1120); + addNodeObject(vfx, "VFX Override", "Node_VFX_Override", [1, Node_VFX_Override], "Replace particle variable with a new one.").hideRecent().setVersion(1120); #endregion #region rigidSim var rigidSim = ds_list_create(); NODE_ADD_CAT("RigidSim", rigidSim, ["Node_Rigid_Group", "Node_Rigid_Group_Inline"], COLORS.node_blend_simulation); ds_list_add(rigidSim, "Group"); - addNodeObject(rigidSim, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "Render",, "Node_Rigid_Render_Output", [1, Node_Rigid_Render_Output]).hideRecent().hideGlobal(); - addNodeObject(rigidSim, "RigidSim Global",, "Node_Rigid_Global", [1, Node_Rigid_Global]).setVersion(1110).hideRecent(); + addNodeObject(rigidSim, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); + addNodeObject(rigidSim, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); + addNodeObject(rigidSim, "Render", "Node_Rigid_Render_Output", [1, Node_Rigid_Render_Output]).hideRecent().hideGlobal(); + addNodeObject(rigidSim, "RigidSim Global", "Node_Rigid_Global", [1, Node_Rigid_Global]).setVersion(1110).hideRecent(); ds_list_add(rigidSim, "RigidSim"); - addNodeObject(rigidSim, "Object",, "Node_Rigid_Object", [1, Node_Rigid_Object],, "Spawn a rigidbody object.").hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Object Spawner",, "Node_Rigid_Object_Spawner", [1, Node_Rigid_Object_Spawner],, "Spawn multiple rigidbody objects.").hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Wall",, "Node_Rigid_Wall", [1, Node_Rigid_Wall]).hideRecent().setVersion(11680); - addNodeObject(rigidSim, "Render",, "Node_Rigid_Render", [1, Node_Rigid_Render],, "Render rigidbody object to surface.").hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Apply Force",, "Node_Rigid_Force_Apply", [1, Node_Rigid_Force_Apply],, "Apply force to objects.").hideRecent().setVersion(1110); - addNodeObject(rigidSim, "Activate Physics",, "Node_Rigid_Activate", [1, Node_Rigid_Activate],, "Enable or disable rigidbody object.").hideRecent().setVersion(1110); + addNodeObject(rigidSim, "Object", "Node_Rigid_Object", [1, Node_Rigid_Object], "Spawn a rigidbody object.").hideRecent().setVersion(1110); + addNodeObject(rigidSim, "Object Spawner", "Node_Rigid_Object_Spawner", [1, Node_Rigid_Object_Spawner], "Spawn multiple rigidbody objects.").hideRecent().setVersion(1110); + addNodeObject(rigidSim, "Wall", "Node_Rigid_Wall", [1, Node_Rigid_Wall]).hideRecent().setVersion(11680); + addNodeObject(rigidSim, "Render", "Node_Rigid_Render", [1, Node_Rigid_Render], "Render rigidbody object to surface.").hideRecent().setVersion(1110); + addNodeObject(rigidSim, "Apply Force", "Node_Rigid_Force_Apply", [1, Node_Rigid_Force_Apply], "Apply force to objects.").hideRecent().setVersion(1110); + addNodeObject(rigidSim, "Activate Physics", "Node_Rigid_Activate", [1, Node_Rigid_Activate], "Enable or disable rigidbody object.").hideRecent().setVersion(1110); ds_list_add(rigidSim, "Variables"); - addNodeObject(rigidSim, "Rigidbody Variable",, "Node_Rigid_Variable", [1, Node_Rigid_Variable],, "Extract veriable from rigidbody object.").hideRecent().setVersion(1120); - addNodeObject(rigidSim, "Rigidbody Override",, "Node_Rigid_Override", [1, Node_Rigid_Override],, "Replace rigidbody object variable with a new one.").hideRecent().setVersion(1120); + addNodeObject(rigidSim, "Rigidbody Variable", "Node_Rigid_Variable", [1, Node_Rigid_Variable], "Extract veriable from rigidbody object.").hideRecent().setVersion(1120); + addNodeObject(rigidSim, "Rigidbody Override", "Node_Rigid_Override", [1, Node_Rigid_Override], "Replace rigidbody object variable with a new one.").hideRecent().setVersion(1120); #endregion #region smokeSim var smokeSim = ds_list_create(); NODE_ADD_CAT("SmokeSim", smokeSim, ["Node_Smoke_Group", "Node_Smoke_Group_Inline"], COLORS.node_blend_smoke); ds_list_add(smokeSim, "Group"); - addNodeObject(smokeSim, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); - addNodeObject(smokeSim, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); - addNodeObject(smokeSim, "Render Domain",, "Node_Smoke_Render_Output", [1, Node_Smoke_Render_Output]).hideRecent().setVersion(11540).hideGlobal(); + addNodeObject(smokeSim, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); + addNodeObject(smokeSim, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); + addNodeObject(smokeSim, "Render Domain", "Node_Smoke_Render_Output", [1, Node_Smoke_Render_Output]).hideRecent().setVersion(11540).hideGlobal(); ds_list_add(smokeSim, "Domain"); - addNodeObject(smokeSim, "Domain",, "Node_Smoke_Domain", [1, Node_Smoke_Domain]).hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Update Domain",, "Node_Smoke_Update", [1, Node_Smoke_Update],, "Run smoke by one step.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Render Domain",, "Node_Smoke_Render", [1, Node_Smoke_Render],, "Render smoke to surface. This node also have update function build in.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Queue Domain",, "Node_Smoke_Domain_Queue", [1, Node_Smoke_Domain_Queue],, "Sync multiple domains to be render at the same time.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Domain", "Node_Smoke_Domain", [1, Node_Smoke_Domain]).hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Update Domain", "Node_Smoke_Update", [1, Node_Smoke_Update], "Run smoke by one step.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Render Domain", "Node_Smoke_Render", [1, Node_Smoke_Render], "Render smoke to surface. This node also have update function build in.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Queue Domain", "Node_Smoke_Domain_Queue", [1, Node_Smoke_Domain_Queue], "Sync multiple domains to be render at the same time.").hideRecent().setVersion(1120); ds_list_add(smokeSim, "Smoke"); - addNodeObject(smokeSim, "Add Emitter",, "Node_Smoke_Add", [1, Node_Smoke_Add],, "Add smoke emitter.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Apply Velocity",, "Node_Smoke_Apply_Velocity", [1, Node_Smoke_Apply_Velocity],, "Apply velocity to smoke.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Add Collider",, "Node_Smoke_Add_Collider", [1, Node_Smoke_Add_Collider],, "Add solid object that smoke can collides to.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Vortex",, "Node_Smoke_Vortex", [1, Node_Smoke_Vortex],, "Apply rotational force around a point.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Repulse",, "Node_Smoke_Repulse", [1, Node_Smoke_Repulse],, "Spread smoke away from a point.").hideRecent().setVersion(1120); - addNodeObject(smokeSim, "Turbulence",, "Node_Smoke_Turbulence", [1, Node_Smoke_Turbulence],, "Apply random velocity map to the smoke.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Add Emitter", "Node_Smoke_Add", [1, Node_Smoke_Add], "Add smoke emitter.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Apply Velocity", "Node_Smoke_Apply_Velocity", [1, Node_Smoke_Apply_Velocity], "Apply velocity to smoke.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Add Collider", "Node_Smoke_Add_Collider", [1, Node_Smoke_Add_Collider], "Add solid object that smoke can collides to.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Vortex", "Node_Smoke_Vortex", [1, Node_Smoke_Vortex], "Apply rotational force around a point.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Repulse", "Node_Smoke_Repulse", [1, Node_Smoke_Repulse], "Spread smoke away from a point.").hideRecent().setVersion(1120); + addNodeObject(smokeSim, "Turbulence", "Node_Smoke_Turbulence", [1, Node_Smoke_Turbulence], "Apply random velocity map to the smoke.").hideRecent().setVersion(1120); #endregion #region flipSim var flipSim = ds_list_create(); NODE_ADD_CAT("FLIP Fluid", flipSim, ["Node_FLIP_Group_Inline"], COLORS.node_blend_fluid); ds_list_add(flipSim, "Domain"); - addNodeObject(flipSim, "Domain",, "Node_FLIP_Domain", [1, Node_FLIP_Domain]).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Render",, "Node_FLIP_Render", [1, Node_FLIP_Render]).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Update",, "Node_FLIP_Update", [1, Node_FLIP_Update]).hideRecent().setVersion(11620); + addNodeObject(flipSim, "Domain", "Node_FLIP_Domain", [1, Node_FLIP_Domain]).hideRecent().setVersion(11620); + addNodeObject(flipSim, "Render", "Node_FLIP_Render", [1, Node_FLIP_Render]).hideRecent().setVersion(11620); + addNodeObject(flipSim, "Update", "Node_FLIP_Update", [1, Node_FLIP_Update]).hideRecent().setVersion(11620); ds_list_add(flipSim, "Fluid"); - addNodeObject(flipSim, "Spawner",, "Node_FLIP_Spawner", [1, Node_FLIP_Spawner]).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Destroy",, "Node_FLIP_Destroy", [1, Node_FLIP_Destroy]).hideRecent().setVersion(11680); + addNodeObject(flipSim, "Spawner", "Node_FLIP_Spawner", [1, Node_FLIP_Spawner]).hideRecent().setVersion(11620); + addNodeObject(flipSim, "Destroy", "Node_FLIP_Destroy", [1, Node_FLIP_Destroy]).hideRecent().setVersion(11680); ds_list_add(flipSim, "Affectors"); - addNodeObject(flipSim, "Apply Velocity",, "Node_FLIP_Apply_Velocity", [1, Node_FLIP_Apply_Velocity]).hideRecent().setVersion(11620); - addNodeObject(flipSim, "Add Collider",, "Node_FLIP_Apply_Force", [1, Node_FLIP_Apply_Force]).hideRecent().setVersion(11620); - //addNodeObject(flipSim, "Add Rigidbody",, "Node_FLIP_Add_Rigidbody", [1, Node_FLIP_Add_Rigidbody]).hideRecent().setVersion(11680); - addNodeObject(flipSim, "Repel",, "Node_FLIP_Repel", [1, Node_FLIP_Repel]).hideRecent().setVersion(11680); - addNodeObject(flipSim, "Vortex",, "Node_FLIP_Vortex", [1, Node_FLIP_Vortex]).hideRecent().setVersion(11680); + addNodeObject(flipSim, "Apply Velocity", "Node_FLIP_Apply_Velocity", [1, Node_FLIP_Apply_Velocity]).hideRecent().setVersion(11620); + addNodeObject(flipSim, "Add Collider", "Node_FLIP_Apply_Force", [1, Node_FLIP_Apply_Force]).hideRecent().setVersion(11620); + //addNodeObject(flipSim, "Add Rigidbody", "Node_FLIP_Add_Rigidbody", [1, Node_FLIP_Add_Rigidbody]).hideRecent().setVersion(11680); + addNodeObject(flipSim, "Repel", "Node_FLIP_Repel", [1, Node_FLIP_Repel]).hideRecent().setVersion(11680); + addNodeObject(flipSim, "Vortex", "Node_FLIP_Vortex", [1, Node_FLIP_Vortex]).hideRecent().setVersion(11680); ds_list_add(flipSim, "Misc"); - addNodeObject(flipSim, "FLIP to VFX",, "Node_FLIP_to_VFX", [1, Node_FLIP_to_VFX]).hideRecent().setVersion(11680); + addNodeObject(flipSim, "FLIP to VFX", "Node_FLIP_to_VFX", [1, Node_FLIP_to_VFX]).hideRecent().setVersion(11680); #endregion #region strandSim var strandSim = ds_list_create(); NODE_ADD_CAT("StrandSim", strandSim, ["Node_Strand_Group", "Node_Strand_Group_Inline"], COLORS.node_blend_strand); ds_list_add(strandSim, "Group"); - addNodeObject(strandSim, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); - addNodeObject(strandSim, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); + addNodeObject(strandSim, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent().hideGlobal(); + addNodeObject(strandSim, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent().hideGlobal(); ds_list_add(strandSim, "System"); - addNodeObject(strandSim, "Strand Create",, "Node_Strand_Create", [1, Node_Strand_Create],, "Create strands from point, path, or mesh.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Update",, "Node_Strand_Update", [1, Node_Strand_Update],, "Update strands by one step.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Render",, "Node_Strand_Render", [1, Node_Strand_Render],, "Render strands to surface as a single path.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Render Texture",, "Node_Strand_Render_Texture", [1, Node_Strand_Render_Texture],, "Render strands to surface as a textured path.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Create", "Node_Strand_Create", [1, Node_Strand_Create], "Create strands from point, path, or mesh.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Update", "Node_Strand_Update", [1, Node_Strand_Update], "Update strands by one step.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Render", "Node_Strand_Render", [1, Node_Strand_Render], "Render strands to surface as a single path.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Render Texture", "Node_Strand_Render_Texture", [1, Node_Strand_Render_Texture], "Render strands to surface as a textured path.").hideRecent().setVersion(1140); ds_list_add(strandSim, "Affectors"); - addNodeObject(strandSim, "Strand Gravity",, "Node_Strand_Gravity", [1, Node_Strand_Gravity],, "Apply downward acceleration to strands.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Force Apply",, "Node_Strand_Force_Apply", [1, Node_Strand_Force_Apply],, "Apply general force to strands.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Break",, "Node_Strand_Break", [1, Node_Strand_Break],, "Detach strands from its origin.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Length Adjust",, "Node_Strand_Length_Adjust", [1, Node_Strand_Length_Adjust],, "Adjust length of strands in area.").hideRecent().setVersion(1140); - addNodeObject(strandSim, "Strand Collision",, "Node_Strand_Collision", [1, Node_Strand_Collision],, "Create solid object for strands to collides to.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Gravity", "Node_Strand_Gravity", [1, Node_Strand_Gravity], "Apply downward acceleration to strands.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Force Apply", "Node_Strand_Force_Apply", [1, Node_Strand_Force_Apply], "Apply general force to strands.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Break", "Node_Strand_Break", [1, Node_Strand_Break], "Detach strands from its origin.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Length Adjust", "Node_Strand_Length_Adjust", [1, Node_Strand_Length_Adjust], "Adjust length of strands in area.").hideRecent().setVersion(1140); + addNodeObject(strandSim, "Strand Collision", "Node_Strand_Collision", [1, Node_Strand_Collision], "Create solid object for strands to collides to.").hideRecent().setVersion(1140); #endregion //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\ @@ -532,94 +532,94 @@ function __initNodes() { addNodeCatagory("IO", input); ds_list_add(input, "Images"); ds_list_add(input, "/Importers"); - addNodeObject(input, "Image",, "Node_Image", [0, Node_create_Image],, "Load a single image from your computer."); - addNodeObject(input, "Image GIF",, "Node_Image_gif", [0, Node_create_Image_gif],, "Load animated .gif from your computer."); - addNodeObject(input, "Image Array",, "Node_Image_Sequence", [0, Node_create_Image_Sequence],, "Load multiple images from your computer as array."); - addNodeObject(input, "Animation",, "Node_Image_Animated", [0, Node_create_Image_Animated],, "Load multiple images from your computer as animation."); - addNodeObject(input, "SVG",, "Node_SVG", [1, Node_SVG],, "Load a SVG file."); + addNodeObject(input, "Image", "Node_Image", [0, Node_create_Image], "Load a single image from your computer."); + addNodeObject(input, "Image GIF", "Node_Image_gif", [0, Node_create_Image_gif], "Load animated .gif from your computer."); + addNodeObject(input, "Image Array", "Node_Image_Sequence", [0, Node_create_Image_Sequence], "Load multiple images from your computer as array."); + addNodeObject(input, "Animation", "Node_Image_Animated", [0, Node_create_Image_Animated], "Load multiple images from your computer as animation."); + addNodeObject(input, "SVG", "Node_SVG", [1, Node_SVG], "Load a SVG file."); ds_list_add(input, "/Converters"); - addNodeObject(input, "Splice Spritesheet",, "Node_Image_Sheet", [1, Node_Image_Sheet],, "Cut up spritesheet into animation or image array."); - addNodeObject(input, "Array to Anim",, "Node_Sequence_Anim", [1, Node_Sequence_Anim],, "Convert array of images into animation."); + addNodeObject(input, "Splice Spritesheet", "Node_Image_Sheet", [1, Node_Image_Sheet], "Cut up spritesheet into animation or image array."); + addNodeObject(input, "Array to Anim", "Node_Sequence_Anim", [1, Node_Sequence_Anim], "Convert array of images into animation."); if(!DEMO) { ds_list_add(input, "/Exporters"); - addNodeObject(input, "Export",, "Node_Export", [0, Node_create_Export],, "Export image, image array to file, image sequence, animation."); + addNodeObject(input, "Export", "Node_Export", [0, Node_create_Export], "Export image, image array to file, image sequence, animation."); } ds_list_add(input, "Canvas"); - addNodeObject(input, "Canvas",, "Node_Canvas", [1, Node_Canvas], ["draw"], "Draw on surface using brush, eraser, etc."); - addNodeObject(input, "Canvas Group",, "Node_Canvas_Group", [1, Node_Canvas_Group],, "Create a group that combines multiple canvas nodes a layers.").setVersion(11740); - addNodeObject(input, "Active Canvas",, "Node_Active_Canvas", [1, Node_Active_Canvas], ["draw"], "Draw using parameterized brush.").setVersion(11570); + addNodeObject(input, "Canvas", "Node_Canvas", [1, Node_Canvas], "Draw on surface using brush, eraser, etc.").setTags(["draw"]); + addNodeObject(input, "Canvas Group", "Node_Canvas_Group", [1, Node_Canvas_Group], "Create a group that combines multiple canvas nodes a layers.").setTags(["draw"]).setVersion(11740); + addNodeObject(input, "Active Canvas", "Node_Active_Canvas", [1, Node_Active_Canvas], "Draw using parameterized brush.").setTags(["draw"]).setVersion(11570); ds_list_add(input, "Tileset"); ds_list_add(input, "/Creators"); - addNodeObject(input, "Tileset",, "Node_Tile_Tileset", [1, Node_Tile_Tileset],, "Create tileset object.").setVersion(1_18_03_0); - addNodeObject(input, "Tile Drawer",, "Node_Tile_Drawer", [1, Node_Tile_Drawer],, "Draw using tileset.").setVersion(1_18_03_0); - addNodeObject(input, "Tile Rule",, "Node_Tile_Rule", [1, Node_Tile_Rule],, "Apply tileset rules.").setVersion(1_18_03_0); - addNodeObject(input, "Convert to Tilemap",, "Node_Tile_Convert", [1, Node_Tile_Convert],, "Convert color image to tile data.").setVersion(1_18_03_0); + addNodeObject(input, "Tileset", "Node_Tile_Tileset", [1, Node_Tile_Tileset], "Create tileset object.").setVersion(1_18_03_0); + addNodeObject(input, "Tile Drawer", "Node_Tile_Drawer", [1, Node_Tile_Drawer], "Draw using tileset.").setVersion(1_18_03_0); + addNodeObject(input, "Tile Rule", "Node_Tile_Rule", [1, Node_Tile_Rule], "Apply tileset rules.").setVersion(1_18_03_0); + addNodeObject(input, "Convert to Tilemap", "Node_Tile_Convert", [1, Node_Tile_Convert], "Convert color image to tile data.").setVersion(1_18_03_0); ds_list_add(input, "/Exporters"); - addNodeObject(input, "Render Tilemap",, "Node_Tile_Render", [1, Node_Tile_Render],, "Render tilemap to image.").setVersion(1_18_03_0); - addNodeObject(input, "Export Tilemap",, "Node_Tile_Tilemap_Export", [1, Node_Tile_Tilemap_Export],, "Export tilemap to file.").setVersion(1_18_03_0); + addNodeObject(input, "Render Tilemap", "Node_Tile_Render", [1, Node_Tile_Render], "Render tilemap to image.").setVersion(1_18_03_0); + addNodeObject(input, "Export Tilemap", "Node_Tile_Tilemap_Export", [1, Node_Tile_Tilemap_Export], "Export tilemap to file.").setVersion(1_18_03_0); ds_list_add(input, "Files"); - addNodeObject(input, "Text File In",, "Node_Text_File_Read", [1, Node_Text_File_Read], ["txt"], "Load .txt in as text.").setVersion(1080); - addNodeObject(input, "Text File Out",, "Node_Text_File_Write", [1, Node_Text_File_Write], ["txt"], "Save text as a .txt file.").setVersion(1090); - addNodeObject(input, "CSV File In",, "Node_CSV_File_Read", [1, Node_CSV_File_Read], ["comma separated value"], "Load .csv as text, number array.").setVersion(1090); - addNodeObject(input, "CSV File Out",, "Node_CSV_File_Write", [1, Node_CSV_File_Write], ["comma separated value"], "Save array as .csv file.").setVersion(1090); - addNodeObject(input, "JSON File In",, "Node_Json_File_Read", [1, Node_Json_File_Read],, "Load .json file using keys.").setVersion(1090); - addNodeObject(input, "JSON File Out",, "Node_Json_File_Write", [1, Node_Json_File_Write],, "Save data to .json file.").setVersion(1090); - addNodeObject(input, "WAV File In",, "Node_WAV_File_Read", [0, Node_create_WAV_File_Read],, "Load wav audio file.").setVersion(1144); - addNodeObject(input, "WAV File Out",, "Node_WAV_File_Write", [1, Node_WAV_File_Write],, "Save wav audio file.").setVersion(1145); - addNodeObject(input, "XML File In",, "Node_XML_File_Read", [0, Node_create_XML_File_Read],, "Load xml file.").setVersion(11720); - addNodeObject(input, "XML File Out",, "Node_XML_File_Write", [1, Node_XML_File_Write],, "Write struct to xml file.").setVersion(11720); - addNodeObject(input, "Byte File In",, "Node_Byte_File_Read", [1, Node_Byte_File_Read],, "Load any file to buffer.").setVersion(11670); - addNodeObject(input, "Byte File Out",, "Node_Byte_File_Write", [1, Node_Byte_File_Write],, "Save buffer content to a file.").setVersion(11670); - addNodeObject(input, "Directory Search",, "Node_Directory_Search", [0, Node_create_Directory_Search],, "Search for files in directory.").setVersion(11710); + addNodeObject(input, "Text File In", "Node_Text_File_Read", [1, Node_Text_File_Read], "Load .txt in as text.").setTags(["txt"]).setVersion(1080); + addNodeObject(input, "Text File Out", "Node_Text_File_Write", [1, Node_Text_File_Write], "Save text as a .txt file.").setTags(["txt"]).setVersion(1090); + addNodeObject(input, "CSV File In", "Node_CSV_File_Read", [1, Node_CSV_File_Read], "Load .csv as text, number array.").setTags(["comma separated value"]).setVersion(1090); + addNodeObject(input, "CSV File Out", "Node_CSV_File_Write", [1, Node_CSV_File_Write], "Save array as .csv file.").setTags(["comma separated value"]).setVersion(1090); + addNodeObject(input, "JSON File In", "Node_Json_File_Read", [1, Node_Json_File_Read], "Load .json file using keys.").setVersion(1090); + addNodeObject(input, "JSON File Out", "Node_Json_File_Write", [1, Node_Json_File_Write], "Save data to .json file.").setVersion(1090); + addNodeObject(input, "WAV File In", "Node_WAV_File_Read", [0, Node_create_WAV_File_Read], "Load wav audio file.").setVersion(1144); + addNodeObject(input, "WAV File Out", "Node_WAV_File_Write", [1, Node_WAV_File_Write], "Save wav audio file.").setVersion(1145); + addNodeObject(input, "XML File In", "Node_XML_File_Read", [0, Node_create_XML_File_Read], "Load xml file.").setVersion(11720); + addNodeObject(input, "XML File Out", "Node_XML_File_Write", [1, Node_XML_File_Write], "Write struct to xml file.").setVersion(11720); + addNodeObject(input, "Byte File In", "Node_Byte_File_Read", [1, Node_Byte_File_Read], "Load any file to buffer.").setVersion(11670); + addNodeObject(input, "Byte File Out", "Node_Byte_File_Write", [1, Node_Byte_File_Write], "Save buffer content to a file.").setVersion(11670); + addNodeObject(input, "Directory Search", "Node_Directory_Search", [0, Node_create_Directory_Search], "Search for files in directory.").setVersion(11710); ds_list_add(input, "Aseprite"); - addNodeObject(input, "ASE File In",, "Node_ASE_File_Read", [0, Node_create_ASE_File_Read],, "Load Aseprite file with support for layers, tags.").setVersion(1100); - addNodeObject(input, "ASE Layer",, "Node_ASE_layer", [1, Node_ASE_layer],, "Load Aseprite project file").setVersion(1100); - addNodeObject(input, "ASE Tag", s_node_ase_layer, "Node_ASE_Tag", [1, Node_ASE_Tag],, "Read tag from ASE file.").setVersion(1_18_03_0); + addNodeObject(input, "ASE File In", "Node_ASE_File_Read", [0, Node_create_ASE_File_Read], "Load Aseprite file with support for layers, tags.").setVersion(1100); + addNodeObject(input, "ASE Layer", "Node_ASE_layer", [1, Node_ASE_layer], "Load Aseprite project file").setVersion(1100); + addNodeObject(input, "ASE Tag", "Node_ASE_Tag", [1, Node_ASE_Tag], "Read tag from ASE file.").setSpr(s_node_ase_layer).setVersion(1_18_03_0); ds_list_add(input, "External"); - addNodeObject(input, "Websocket Receiver",, "Node_Websocket_Receiver", [1, Node_Websocket_Receiver],, "Create websocket server to receive data from the network.").setVersion(1145); - addNodeObject(input, "Websocket Sender",, "Node_Websocket_Sender", [1, Node_Websocket_Sender],, "Create websocket server to send data to the network.").setVersion(1145); - addNodeObject(input, "Spout Sender",, "Node_Spout_Send", [1, Node_Spout_Send],, "Send surface through Spout.").setVersion(11600); - addNodeObject(input, "MIDI In",, "Node_MIDI_In", [1, Node_MIDI_In],, "Receive MIDI message.").setVersion(11630).notTest(); - addNodeObject(input, "HTTP",, "Node_HTTP_request", [1, Node_HTTP_request],, "Request data from the internet.").setVersion(11780); + addNodeObject(input, "Websocket Receiver", "Node_Websocket_Receiver", [1, Node_Websocket_Receiver], "Create websocket server to receive data from the network.").setVersion(1145); + addNodeObject(input, "Websocket Sender", "Node_Websocket_Sender", [1, Node_Websocket_Sender], "Create websocket server to send data to the network.").setVersion(1145); + addNodeObject(input, "Spout Sender", "Node_Spout_Send", [1, Node_Spout_Send], "Send surface through Spout.").setVersion(11600); + addNodeObject(input, "MIDI In", "Node_MIDI_In", [1, Node_MIDI_In], "Receive MIDI message.").setVersion(11630).notTest(); + addNodeObject(input, "HTTP", "Node_HTTP_request", [1, Node_HTTP_request], "Request data from the internet.").setVersion(11780); ds_list_add(input, "Gamemaker"); - addNodeObject(input, "GMRoom", s_gmroom, "Node_GMRoom", [1, Node_GMRoom]).setVersion(1_18_04_1); + addNodeObject(input, "GMRoom", "Node_GMRoom", [1, Node_GMRoom]).setSpr(s_gmroom).setVersion(1_18_04_1); #endregion #region transform var transform = ds_list_create(); addNodeCatagory("Transform", transform); ds_list_add(transform, "Transforms"); - addNodeObject(transform, "Transform",, "Node_Transform", [1, Node_Transform], ["move", "rotate", "scale"], "Move, rotate, and scale image."); - addNodeObject(transform, "Scale",, "Node_Scale", [1, Node_Scale], ["resize"], "Simple node for scaling image."); - addNodeObject(transform, "Scale Algorithm",, "Node_Scale_Algo", [0, Node_create_Scale_Algo], ["scale2x", "scale3x", "cleanedge"], "Scale image using pixel-art scaling algorithm."); - addNodeObject(transform, "Flip",, "Node_Flip", [1, Node_Flip], ["mirror"], "Flip image horizontally or vertically."); - addNodeObject(transform, "Offset",, "Node_Offset", [1, Node_Offset], ["shift"], "Shift image with tiling."); + addNodeObject(transform, "Transform", "Node_Transform", [1, Node_Transform], "Move, rotate, and scale image.").setTags(["move", "rotate", "scale"]); + addNodeObject(transform, "Scale", "Node_Scale", [1, Node_Scale], "Simple node for scaling image.").setTags(["resize"]); + addNodeObject(transform, "Scale Algorithm", "Node_Scale_Algo", [0, Node_create_Scale_Algo], "Scale image using pixel-art based scaling algorithms.").setTags(["scale2x", "scale3x", "cleanedge"]); + addNodeObject(transform, "Flip", "Node_Flip", [1, Node_Flip], "Flip image horizontally or vertically.").setTags(["mirror"]); + addNodeObject(transform, "Offset", "Node_Offset", [1, Node_Offset], "Shift image with tiling.").setTags(["shift"]); ds_list_add(transform, "Crops"); - addNodeObject(transform, "Crop",, "Node_Crop", [1, Node_Crop],, "Crop out image to create smaller ones."); - addNodeObject(transform, "Crop Content",, "Node_Crop_Content", [1, Node_Crop_Content],, "Crop out empty pixel from the image."); + addNodeObject(transform, "Crop", "Node_Crop", [1, Node_Crop], "Crop out image to create smaller ones."); + addNodeObject(transform, "Crop Content", "Node_Crop_Content", [1, Node_Crop_Content], "Crop out empty pixel from the image."); ds_list_add(transform, "Warps"); - addNodeObject(transform, "Bend",, "Node_Bend", [1, Node_Bend],, "Warp an image into a predefined shape.").setVersion(11650); - addNodeObject(transform, "Warp",, "Node_Warp", [1, Node_Warp], ["warp corner"], "Warp image by freely moving the corners."); - // addNodeObject(transform, "Perspective Warp",, "Node_Warp_Perspective",[1, Node_Warp_Perspective], ["warp perspective"], "Warp image by modifying perspective."); - addNodeObject(transform, "Skew",, "Node_Skew", [1, Node_Skew], ["shear"], "Skew image horizontally, or vertically."); - // addNodeObject(transform, "Grid Warp",, "Node_Grid_Warp", [1, Node_Grid_Warp],, "Wrap image by modifying mesh lacttice."); - addNodeObject(transform, "Mesh Warp",, "Node_Mesh_Warp", [1, Node_Mesh_Warp],, "Wrap image by converting it to mesh, and using control points."); - addNodeObject(transform, "Polar",, "Node_Polar", [1, Node_Polar],, "Convert image to polar coordinate."); - addNodeObject(transform, "Area Warp",, "Node_Wrap_Area", [1, Node_Wrap_Area],, "Wrap image to fit area value (x, y, w, h)."); + addNodeObject(transform, "Warp", "Node_Warp", [1, Node_Warp], "Warp image by freely moving the corners.").setTags(["warp corner"]); + // addNodeObject(transform, "Perspective Warp","Node_Warp_Perspective",[1, Node_Warp_Perspective], "Warp image by modifying perspective.").setTags(["warp perspective"]); + addNodeObject(transform, "Skew", "Node_Skew", [1, Node_Skew], "Skew image horizontally, or vertically.").setTags(["shear"]); + // addNodeObject(transform, "Grid Warp", "Node_Grid_Warp", [1, Node_Grid_Warp], "Wrap image by modifying mesh lacttice."); + addNodeObject(transform, "Bend", "Node_Bend", [1, Node_Bend], "Warp an image into a predefined shape.").setVersion(11650); + addNodeObject(transform, "Mesh Warp", "Node_Mesh_Warp", [1, Node_Mesh_Warp], "Wrap image by converting it to mesh, and using control points."); + addNodeObject(transform, "Polar", "Node_Polar", [1, Node_Polar], "Convert image to polar coordinate."); + addNodeObject(transform, "Area Warp", "Node_Wrap_Area", [1, Node_Wrap_Area], "Wrap image to fit an area value."); ds_list_add(transform, "Others"); - addNodeObject(transform, "Composite",, "Node_Composite", [1, Node_Composite], ["merge"], "Combine multiple images with controllable position, rotation, scale."); - addNodeObject(transform, "Nine Slice",, "Node_9Slice", [1, Node_9Slice], ["9 slice", "splice", "nine patch"], "Cut image into 3x3 parts, and scale/repeat only the middle part."); - addNodeObject(transform, "Padding",, "Node_Padding", [1, Node_Padding],, "Make image bigger by adding space in 4 directions."); - addNodeObject(transform, "Tile Random",, "Node_Tile_Random", [1, Node_Tile_Random],, "Repeat images on a larger surface randomly.").setVersion(11780); + addNodeObject(transform, "Composite", "Node_Composite", [1, Node_Composite], "Combine multiple images with controllable position, rotation, scale.").setTags(["merge"]); + addNodeObject(transform, "Nine Slice", "Node_9Slice", [1, Node_9Slice], "Cut image into 3x3 parts, and scale/repeat only the middle part.").setTags(["9 slice", "splice", "nine patch"]); + addNodeObject(transform, "Padding", "Node_Padding", [1, Node_Padding], "Make image bigger by adding space in 4 directions."); + addNodeObject(transform, "Tile Random", "Node_Tile_Random", [1, Node_Tile_Random], "Repeat images on a larger surface randomly.").setVersion(11780); #endregion #region filter @@ -627,308 +627,308 @@ function __initNodes() { addNodeCatagory("Filter", filter); ds_list_add(filter, "Combines"); - addNodeObject(filter, "Blend",, "Node_Blend", [0, Node_create_Blend], global.node_blend_keys, "Blend 2 images using different blend modes."); - addNodeObject(filter, "RGBA Combine",, "Node_Combine_RGB", [1, Node_Combine_RGB],, "Combine 4 image in to one. Each image use to control RGBA channel.").setVersion(1070); - addNodeObject(filter, "HSV Combine",, "Node_Combine_HSV", [1, Node_Combine_HSV],, "Combine 4 image in to one. Each image use to control HSVA channel.").setVersion(1070); - addNodeObject(filter, "Override Channel",, "Node_Override_Channel", [1, Node_Override_Channel],, "Replace RGBA value of one surface with another.").setVersion(11640); + addNodeObject(filter, "Blend", "Node_Blend", [0, Node_create_Blend], "Blend 2 images using different blend modes.").setTags(global.node_blend_keys); + addNodeObject(filter, "RGBA Combine", "Node_Combine_RGB", [1, Node_Combine_RGB], "Combine 4 image in to one. Each image use to control RGBA channel.").setVersion(1070); + addNodeObject(filter, "HSV Combine", "Node_Combine_HSV", [1, Node_Combine_HSV], "Combine 4 image in to one. Each image use to control HSVA channel.").setVersion(1070); + addNodeObject(filter, "Override Channel", "Node_Override_Channel", [1, Node_Override_Channel], "Replace RGBA value of one surface with another.").setVersion(11640); ds_list_add(filter, "Blurs"); ds_list_add(filter, "/Kernel-based"); - addNodeObject(filter, "Blur",, "Node_Blur", [1, Node_Blur], ["gaussian blur"], "Blur image smoothly."); - addNodeObject(filter, "Non-Uniform Blur",, "Node_Blur_Simple", [1, Node_Blur_Simple],, "Blur image using simpler algorithm. Allowing for variable blur strength.").setVersion(1070); - addNodeObject(filter, "Directional Blur",, "Node_Blur_Directional", [1, Node_Blur_Directional], ["motion blur"], "Blur image given a direction."); - addNodeObject(filter, "Slope Blur",, "Node_Blur_Slope", [1, Node_Blur_Slope], ["motion blur"], "Blur along a gradient of a slope map.").setVersion(11640); - addNodeObject(filter, "Zoom Blur",, "Node_Blur_Zoom", [1, Node_Blur_Zoom],, "Blur image by zooming in/out from a mid point."); - addNodeObject(filter, "Radial Blur",, "Node_Blur_Radial", [1, Node_Blur_Radial],, "Blur image by rotating around a mid point.").setVersion(1110); - addNodeObject(filter, "Contrast Blur",, "Node_Blur_Contrast", [1, Node_Blur_Contrast],, "Blur only pixel of a similiar color."); - addNodeObject(filter, "Shape Blur",, "Node_Blur_Shape", [1, Node_Blur_Shape],, "Blur image using another image as blur map.").setVersion(11650); - addNodeObject(filter, "High Pass",, "Node_High_Pass", [1, Node_High_Pass], ["sharpen"], "Apply high pass filter").setVersion(1_18_01_0); - ds_list_add(filter, "/Analytic"); - addNodeObject(filter, "Lens Blur",, "Node_Blur_Bokeh", [1, Node_Blur_Bokeh], ["bokeh"], "Create bokeh effect. Blur lighter color in a lens-like manner.").setVersion(1110); - addNodeObject(filter, "Path Blur",, "Node_Blur_Path", [1, Node_Blur_Path],, "Blur pixel along path.").setVersion(11750); - addNodeObject(filter, "Average",, "Node_Average", [1, Node_Average],, "Average color of every pixels in the image.").setVersion(1110); - addNodeObject(filter, "Smear",, "Node_Smear", [1, Node_Smear],, "Stretch out brighter pixel in one direction.").setVersion(11670); - ds_list_add(filter, "/Artistics"); - addNodeObject(filter, "Kuwahara",, "Node_Kuwahara", [1, Node_Kuwahara],, "Apply Kuwahara filter. Creating a watercolor-like effect.").setVersion(11660); - addNodeObject(filter, "Brush",, "Node_Brush_Linear", [1, Node_Brush_Linear],, "Apply brush effect.").patreonExtra(); + addNodeObject(filter, "Blur", "Node_Blur", [1, Node_Blur], "Blur image smoothly.").setTags(["gaussian blur"]); + addNodeObject(filter, "Non-Uniform Blur", "Node_Blur_Simple", [1, Node_Blur_Simple], "Blur image using simpler algorithm. Allowing for variable blur strength.").setVersion(1070); + addNodeObject(filter, "Contrast Blur", "Node_Blur_Contrast", [1, Node_Blur_Contrast], "Blur only pixel of a similiar color."); + addNodeObject(filter, "Shape Blur", "Node_Blur_Shape", [1, Node_Blur_Shape], "Blur image using another image as blur map.").setVersion(11650); + addNodeObject(filter, "High Pass", "Node_High_Pass", [1, Node_High_Pass], "Apply high pass filter").setTags(["sharpen"]).setVersion(1_18_01_0); + ds_list_add(filter, "/Linear"); + addNodeObject(filter, "Directional Blur", "Node_Blur_Directional", [1, Node_Blur_Directional], "Blur image given a direction.").setTags(["motion blur"]); + addNodeObject(filter, "Slope Blur", "Node_Blur_Slope", [1, Node_Blur_Slope], "Blur along a gradient of a slope map.").setTags(["motion blur"]).setVersion(11640); + addNodeObject(filter, "Zoom Blur", "Node_Blur_Zoom", [1, Node_Blur_Zoom], "Blur image by zooming in/out from a mid point."); + addNodeObject(filter, "Radial Blur", "Node_Blur_Radial", [1, Node_Blur_Radial], "Blur image by rotating around a mid point.").setVersion(1110); + addNodeObject(filter, "Path Blur", "Node_Blur_Path", [1, Node_Blur_Path], "Blur pixel along path.").setVersion(11750); + addNodeObject(filter, "Smear", "Node_Smear", [1, Node_Smear], "Stretch out brighter pixel in one direction.").setVersion(11670); + ds_list_add(filter, "/Non-Linear"); + addNodeObject(filter, "Lens Blur", "Node_Blur_Bokeh", [1, Node_Blur_Bokeh], "Create bokeh effect. Blur lighter color in a lens-like manner.").setTags(["bokeh"]).setVersion(1110); + addNodeObject(filter, "Average", "Node_Average", [1, Node_Average], "Average color of every pixels in the image.").setVersion(1110); + addNodeObject(filter, "Kuwahara", "Node_Kuwahara", [1, Node_Kuwahara], "Apply Kuwahara filter. Creating a watercolor-like effect.").setVersion(11660); + addNodeObject(filter, "Brush", "Node_Brush_Linear", [1, Node_Brush_Linear], "Apply brush effect.").patreonExtra(); ds_list_add(filter, "Warps"); ds_list_add(filter, "/Effects"); - addNodeObject(filter, "Mirror",, "Node_Mirror", [1, Node_Mirror],, "Reflect the image along a reflection line.").setVersion(1070); - addNodeObject(filter, "Twirl",, "Node_Twirl", [1, Node_Twirl], ["twist"], "Twist the image around a mid point."); - addNodeObject(filter, "Dilate",, "Node_Dilate", [1, Node_Dilate], ["inflate"], "Expand the image around a mid point."); - addNodeObject(filter, "Spherize",, "Node_Spherize", [1, Node_Spherize],, "Wrap a texture on to sphere.").setVersion(11630); - addNodeObject(filter, "Displace",, "Node_Displace", [1, Node_Displace], ["distort"], "Distort image using another image as a map."); - addNodeObject(filter, "Morph Surface",, "Node_Morph_Surface", [1, Node_Morph_Surface],, "Morph pixel between two surfaces.").setVersion(1141); - addNodeObject(filter, "Liquefy",, "Node_Liquefy", [1, Node_Liquefy],, "Distort image using variety of tools.").setVersion(1_18_02_0); + addNodeObject(filter, "Mirror", "Node_Mirror", [1, Node_Mirror], "Reflect the image along a reflection line.").setVersion(1070); + addNodeObject(filter, "Twirl", "Node_Twirl", [1, Node_Twirl], "Twist the image around a mid point.").setTags(["twist"]); + addNodeObject(filter, "Dilate", "Node_Dilate", [1, Node_Dilate], "Expand the image around a mid point.").setTags(["inflate"]); + addNodeObject(filter, "Spherize", "Node_Spherize", [1, Node_Spherize], "Wrap a texture on to sphere.").setVersion(11630); + addNodeObject(filter, "Displace", "Node_Displace", [1, Node_Displace], "Distort image using another image as a map.").setTags(["distort"]); + addNodeObject(filter, "Morph Surface", "Node_Morph_Surface", [1, Node_Morph_Surface], "Morph pixel between two surfaces.").setVersion(1141); + addNodeObject(filter, "Liquefy", "Node_Liquefy", [1, Node_Liquefy], "Distort image using variety of tools.").setVersion(1_18_02_0); ds_list_add(filter, "/Mappers"); - addNodeObject(filter, "Texture Remap",, "Node_Texture_Remap", [1, Node_Texture_Remap],, "Remap image using texture map. Where red channel control x position and green channel control y position."); - addNodeObject(filter, "Time Remap",, "Node_Time_Remap", [1, Node_Time_Remap],, "Remap image using texture as time map. Where brighter pixel means using pixel from an older frame."); - addNodeObject(filter, "Shape Map",, "Node_Shape_Map", [1, Node_Shape_Map],, "Map image into shapes.").setVersion(11660); + addNodeObject(filter, "Texture Remap", "Node_Texture_Remap", [1, Node_Texture_Remap], "Remap image using texture map. Where red channel control x position and green channel control y position."); + addNodeObject(filter, "Time Remap", "Node_Time_Remap", [1, Node_Time_Remap], "Remap image using texture as time map. Where brighter pixel means using pixel from an older frame."); + addNodeObject(filter, "Shape Map", "Node_Shape_Map", [1, Node_Shape_Map], "Map image into shapes.").setVersion(11660); ds_list_add(filter, "Effects"); ds_list_add(filter, "/Basics"); - addNodeObject(filter, "Outline",, "Node_Outline", [1, Node_Outline], ["border"], "Add border to the image."); - addNodeObject(filter, "Glow",, "Node_Glow", [1, Node_Glow],, "Apply glow to the border of the image."); - addNodeObject(filter, "Shadow",, "Node_Shadow", [1, Node_Shadow],, "Apply shadow behind the image."); - addNodeObject(filter, "Blobify",, "Node_Blobify", [1, Node_Blobify],, "Round off sharp corner in BW image by bluring and thresholding.").setVersion(11650); - addNodeObject(filter, "SDF",, "Node_SDF", [1, Node_SDF],, "Create signed distance field using jump flooding algorithm.").setVersion(1130); - addNodeObject(filter, "Replace Image",, "Node_Surface_Replace", [1, Node_Surface_Replace], ["image replace"], "Replace instances of an image with a new one.").setVersion(1140); + addNodeObject(filter, "Outline", "Node_Outline", [1, Node_Outline], "Add border to the image.").setTags(["border"]); + addNodeObject(filter, "Glow", "Node_Glow", [1, Node_Glow], "Apply glow to the border of the image."); + addNodeObject(filter, "Shadow", "Node_Shadow", [1, Node_Shadow], "Apply shadow behind the image."); + addNodeObject(filter, "Blobify", "Node_Blobify", [1, Node_Blobify], "Round off sharp corner in BW image by bluring and thresholding.").setVersion(11650); + addNodeObject(filter, "SDF", "Node_SDF", [1, Node_SDF], "Create signed distance field using jump flooding algorithm.").setVersion(1130); + addNodeObject(filter, "Replace Image", "Node_Surface_Replace", [1, Node_Surface_Replace], "Replace instances of an image with a new one.").setTags(["image replace"]).setVersion(1140); ds_list_add(filter, "/Post Processing"); - addNodeObject(filter, "Bloom",, "Node_Bloom", [1, Node_Bloom],, "Apply bloom effect, blurring and brighten the bright part of the image."); - addNodeObject(filter, "Blend Edge",, "Node_Blend_Edge", [1, Node_Blend_Edge],, "Blend the edges of an image to create tilable patterns.").setVersion(11740); - addNodeObject(filter, "Chromatic Aberration",, "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration],, "Apply chromatic aberration effect to the image."); - addNodeObject(filter, "FXAA",, "Node_FXAA", [1, Node_FXAA], ["anti aliasing"], "Apply fast approximate anti-aliasing to te image."); - addNodeObject(filter, "Vignette",, "Node_Vignette", [1, Node_Vignette],, "Apply vignette effect to the border.").setVersion(11630); - addNodeObject(filter, "JPEG",, "Node_JPEG", [1, Node_JPEG],, "Apply JPEG compression to the image.").setVersion(11730); - addNodeObject(filter, "Grain",, "Node_Grain", [1, Node_Grain],, "Add noise pattern to the image.").setVersion(11770); + addNodeObject(filter, "Bloom", "Node_Bloom", [1, Node_Bloom], "Apply bloom effect, blurring and brighten the bright part of the image."); + addNodeObject(filter, "Blend Edge", "Node_Blend_Edge", [1, Node_Blend_Edge], "Blend the edges of an image to create tilable patterns.").setVersion(11740); + addNodeObject(filter, "Chromatic Aberration", "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration], "Apply chromatic aberration effect to the image."); + addNodeObject(filter, "FXAA", "Node_FXAA", [1, Node_FXAA], "Apply fast approximate anti-aliasing to te image.").setTags(["anti aliasing"]); + addNodeObject(filter, "Vignette", "Node_Vignette", [1, Node_Vignette], "Apply vignette effect to the border.").setVersion(11630); + addNodeObject(filter, "JPEG", "Node_JPEG", [1, Node_JPEG], "Apply JPEG compression to the image.").setVersion(11730); + addNodeObject(filter, "Grain", "Node_Grain", [1, Node_Grain], "Add noise pattern to the image.").setVersion(11770); ds_list_add(filter, "/Convolutions"); - addNodeObject(filter, "Convolution",, "Node_Convolution", [1, Node_Convolution], ["kernel"], "Apply convolution operation on each pixel using a custom 3x3 kernel.").setVersion(1090); - addNodeObject(filter, "Edge Detect",, "Node_Edge_Detect", [1, Node_Edge_Detect],, "Edge detect by applying Sobel, Prewitt, or Laplacian kernel."); - addNodeObject(filter, "Local Analyze",, "Node_Local_Analyze", [1, Node_Local_Analyze],, "Apply non-linear operation (minimum, maximum) on each pixel locally.").setVersion(1110); - addNodeObject(filter, "Erode",, "Node_Erode", [1, Node_Erode],, "Remove pixel that are close to the border of the image."); - addNodeObject(filter, "Round Corner",, "Node_Corner", [1, Node_Corner],, "Round out sharp corner of the image.").setVersion(1110); + addNodeObject(filter, "Convolution", "Node_Convolution", [1, Node_Convolution], "Apply convolution operation on each pixel using a custom 3x3 kernel.").setTags(["kernel"]).setVersion(1090); + addNodeObject(filter, "Edge Detect", "Node_Edge_Detect", [1, Node_Edge_Detect], "Edge detect by applying Sobel, Prewitt, or Laplacian kernel."); + addNodeObject(filter, "Local Analyze", "Node_Local_Analyze", [1, Node_Local_Analyze], "Apply non-linear operation (minimum, maximum) on each pixel locally.").setVersion(1110); + addNodeObject(filter, "Erode", "Node_Erode", [1, Node_Erode], "Remove pixel that are close to the border of the image."); + addNodeObject(filter, "Round Corner", "Node_Corner", [1, Node_Corner], "Round out sharp corner of the image.").setVersion(1110); ds_list_add(filter, "/Pixel Operations"); - addNodeObject(filter, "Pixel Math",, "Node_Pixel_Math", [0, Node_create_Pixel_Math], global.node_math_keys, "Apply mathematical operation directly on RGBA value.").setVersion(1_18_02_0); - addNodeObject(filter, "Pixel Expand",, "Node_Atlas", [1, Node_Atlas], ["atlas"], "Replace transparent pixel with the closest non-transparent pixel."); - addNodeObject(filter, "Pixel Cloud",, "Node_Pixel_Cloud", [1, Node_Pixel_Cloud],, "Displace each pixel of the image randomly."); - addNodeObject(filter, "Pixel Sort",, "Node_Pixel_Sort", [1, Node_Pixel_Sort],, "Sort pixel by brightness in horizontal, or vertial axis."); - addNodeObject(filter, "Shuffle",, "Node_Shuffle", [1, Node_Shuffle],, "Shuffle image while keeping pixel colors.").setVersion(1_18_05_6); + addNodeObject(filter, "Pixel Math", "Node_Pixel_Math", [0, Node_create_Pixel_Math], "Apply mathematical operation directly on RGBA value.").setTags(global.node_math_keys).setVersion(1_18_02_0); + addNodeObject(filter, "Pixel Expand", "Node_Atlas", [1, Node_Atlas], "Replace transparent pixel with the closest non-transparent pixel.").setTags(["atlas"]); + addNodeObject(filter, "Pixel Cloud", "Node_Pixel_Cloud", [1, Node_Pixel_Cloud], "Displace each pixel of the image randomly."); + addNodeObject(filter, "Pixel Sort", "Node_Pixel_Sort", [1, Node_Pixel_Sort], "Sort pixel by brightness in horizontal, or vertial axis."); + addNodeObject(filter, "Shuffle", "Node_Shuffle", [1, Node_Shuffle], "Shuffle image while keeping pixel colors.").setVersion(1_18_05_6); ds_list_add(filter, "/Lights"); - addNodeObject(filter, "2D Light",, "Node_2D_light", [1, Node_2D_light],, "Apply different shaped light on the image."); - addNodeObject(filter, "Cast Shadow",, "Node_Shadow_Cast", [1, Node_Shadow_Cast], ["raycast"], "Apply light that create shadow using shadow mask.").setVersion(1100); + addNodeObject(filter, "2D Light", "Node_2D_light", [1, Node_2D_light], "Apply different shaped light on the image."); + addNodeObject(filter, "Cast Shadow", "Node_Shadow_Cast", [1, Node_Shadow_Cast], "Apply light that create shadow using shadow mask.").setTags(["raycast"]).setVersion(1100); ds_list_add(filter, "/Animations"); - addNodeObject(filter, "Interlace",, "Node_Interlaced", [1, Node_Interlaced],, "Apply interlace effect to an image.").setVersion(11760); - addNodeObject(filter, "Trail",, "Node_Trail", [1, Node_Trail],, "Blend animation by filling in the pixel 'in-between' two or more frames.").setVersion(1130); + addNodeObject(filter, "Interlace", "Node_Interlaced", [1, Node_Interlaced], "Apply interlace effect to an image.").setVersion(11760); + addNodeObject(filter, "Trail", "Node_Trail", [1, Node_Trail], "Blend animation by filling in the pixel 'in-between' two or more frames.").setVersion(1130); ds_list_add(filter, "Colors"); ds_list_add(filter, "/Replacements"); - addNodeObject(filter, "Replace Palette",, "Node_Color_replace", [1, Node_Color_replace], ["isolate colors", "select colors", "palette swap", "colors replace"], "Match image to a palette then remap it to another palette."); - addNodeObject(filter, "Replace Colors",, "Node_Colors_Replace", [1, Node_Colors_Replace], ["isolate colors", "select color", "palette swap"], "Replace selected colors with a new one."); - addNodeObject(filter, "Remove Color",, "Node_Color_Remove", [1, Node_Color_Remove], ["delete color"], "Remove color that match a palette."); + addNodeObject(filter, "Replace Palette", "Node_Color_replace", [1, Node_Color_replace], "Match image to a palette then remap it to another palette.").setTags(["isolate colors", "select colors", "palette swap", "colors replace"]); + addNodeObject(filter, "Replace Colors", "Node_Colors_Replace", [1, Node_Colors_Replace], "Replace selected colors with a new one.").setTags(["isolate colors", "select color", "palette swap"]); + addNodeObject(filter, "Remove Color", "Node_Color_Remove", [1, Node_Color_Remove], "Remove color that match a palette.").setTags(["delete color"]); ds_list_add(filter, "/Colorizers"); - addNodeObject(filter, "Colorize",, "Node_Colorize", [1, Node_Colorize], ["recolor"], "Map brightness of a pixel to a color from a gradient."); - addNodeObject(filter, "Posterize",, "Node_Posterize", [1, Node_Posterize],, "Reduce and remap color to match a palette."); - addNodeObject(filter, "Dither",, "Node_Dither", [1, Node_Dither],, "Reduce color and use dithering to preserve original color."); - addNodeObject(filter, "Error Diffuse Dither",, "Node_Dither_Diffuse", [1, Node_Dither_Diffuse],, "Dither image using error diffusion algorithm.").setVersion(1_18_05_1); - addNodeObject(filter, "Palette Shift",, "Node_Palette_Shift", [1, Node_Palette_Shift],, "Shift the order of color in palette.").setVersion(1147); + addNodeObject(filter, "Colorize", "Node_Colorize", [1, Node_Colorize], "Map brightness of a pixel to a color from a gradient.").setTags(["recolor"]); + addNodeObject(filter, "Posterize", "Node_Posterize", [1, Node_Posterize], "Reduce and remap color to match a palette."); + addNodeObject(filter, "Dither", "Node_Dither", [1, Node_Dither], "Reduce color and use dithering to preserve original color."); + addNodeObject(filter, "Error Diffuse Dither", "Node_Dither_Diffuse", [1, Node_Dither_Diffuse], "Dither image using error diffusion algorithm.").setVersion(1_18_05_1); + addNodeObject(filter, "Palette Shift", "Node_Palette_Shift", [1, Node_Palette_Shift], "Shift the order of color in palette.").setVersion(1147); ds_list_add(filter, "/Conversions"); - addNodeObject(filter, "BW",, "Node_BW", [1, Node_BW], ["black and white"], "Convert color image to black and white."); - addNodeObject(filter, "Greyscale",, "Node_Greyscale", [1, Node_Greyscale], ["grayscale"], "Convert color image to greyscale."); - addNodeObject(filter, "RGBA Extract",, "Node_RGB_Channel", [1, Node_RGB_Channel], ["channel extract"], "Extract RGBA channel on an image, each channel becomes its own image."); - addNodeObject(filter, "HSV Extract",, "Node_HSV_Channel", [1, Node_HSV_Channel],, "Extract HSVA channel on an image, each channel becomes its own image.").setVersion(1070); - addNodeObject(filter, "Alpha to Grey",, "Node_Alpha_Grey", [1, Node_Alpha_Grey], ["alpha to gray"], "Convert alpha value into solid greyscale."); - addNodeObject(filter, "Grey to Alpha",, "Node_Grey_Alpha", [1, Node_Grey_Alpha], ["gray to alpha"], "Convert greyscale to alpha value."); + addNodeObject(filter, "BW", "Node_BW", [1, Node_BW], "Convert color image to black and white.").setTags(["black and white"]); + addNodeObject(filter, "Greyscale", "Node_Greyscale", [1, Node_Greyscale], "Convert color image to greyscale.").setTags(["grayscale"]); + addNodeObject(filter, "RGBA Extract", "Node_RGB_Channel", [1, Node_RGB_Channel], "Extract RGBA channel on an image, each channel becomes its own image.").setTags(["channel extract"]); + addNodeObject(filter, "HSV Extract", "Node_HSV_Channel", [1, Node_HSV_Channel], "Extract HSVA channel on an image, each channel becomes its own image.").setVersion(1070); + addNodeObject(filter, "Alpha to Grey", "Node_Alpha_Grey", [1, Node_Alpha_Grey], "Convert alpha value into solid greyscale.").setTags(["alpha to gray"]); + addNodeObject(filter, "Grey to Alpha", "Node_Grey_Alpha", [1, Node_Grey_Alpha], "Convert greyscale to alpha value.").setTags(["gray to alpha"]); ds_list_add(filter, "/Adjustments"); - addNodeObject(filter, "Color Adjust",, "Node_Color_adjust", [1, Node_Color_adjust], ["brightness", "contrast", "hue", "saturation", "value", "color blend", "alpha"], "Adjust brightness, contrast, hue, saturation, value, alpha, and blend image with color."); - addNodeObject(filter, "Level",, "Node_Level", [1, Node_Level],, "Adjust brightness of an image by changing its brightness range."); - addNodeObject(filter, "Level Selector",, "Node_Level_Selector", [1, Node_Level_Selector],, "Isolate part of the image that falls in the selected brightness range."); - addNodeObject(filter, "Curve",, "Node_Curve", [1, Node_Curve],, "Adjust brightness of an image using curves.").setVersion(1120); - addNodeObject(filter, "HSV Curve",, "Node_Curve_HSV", [1, Node_Curve_HSV],, "Adjust hsv values of an image using curves.").setVersion(11720); - addNodeObject(filter, "Invert",, "Node_Invert", [1, Node_Invert], ["negate"], "Invert color."); - addNodeObject(filter, "Threshold",, "Node_Threshold", [1, Node_Threshold],, "Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha.").setVersion(1080); - addNodeObject(filter, "Alpha Cutoff",, "Node_Alpha_Cutoff", [1, Node_Alpha_Cutoff], ["remove alpha"], "Remove pixel with low alpha value."); - addNodeObject(filter, "Normalize",, "Node_Normalize", [1, Node_Normalize],, "Normalize image ranges (brightness, RGB channels) in to [0, 1] range.").setVersion(11710); - addNodeObject(filter, "Gamma Map",, "Node_Gamma_Map", [1, Node_Gamma_Map], ["srgb"], "Apply gamma approximation (pow(2.2)) to an image.").setVersion(11660); - addNodeObject(filter, "ACE",, "Node_Tonemap_ACE", [1, Node_Tonemap_ACE],, "Apply ACE tonemapping.").setVersion(11710); + addNodeObject(filter, "Color Adjust", "Node_Color_adjust", [1, Node_Color_adjust], "Adjust brightness, contrast, hue, saturation, value, alpha, and blend image with color.").setTags(["brightness", "contrast", "hue", "saturation", "value", "color blend", "alpha"]); + addNodeObject(filter, "Level", "Node_Level", [1, Node_Level], "Adjust brightness of an image by changing its brightness range."); + addNodeObject(filter, "Level Selector", "Node_Level_Selector", [1, Node_Level_Selector], "Isolate part of the image that falls in the selected brightness range."); + addNodeObject(filter, "Curve", "Node_Curve", [1, Node_Curve], "Adjust brightness of an image using curves.").setVersion(1120); + addNodeObject(filter, "HSV Curve", "Node_Curve_HSV", [1, Node_Curve_HSV], "Adjust hsv values of an image using curves.").setVersion(11720); + addNodeObject(filter, "Invert", "Node_Invert", [1, Node_Invert], "Invert color.").setTags(["negate"]); + addNodeObject(filter, "Threshold", "Node_Threshold", [1, Node_Threshold], "Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha.").setVersion(1080); + addNodeObject(filter, "Alpha Cutoff", "Node_Alpha_Cutoff", [1, Node_Alpha_Cutoff], "Remove pixel with low alpha value.").setTags(["remove alpha"]); + addNodeObject(filter, "Normalize", "Node_Normalize", [1, Node_Normalize], "Normalize image ranges (brightness, RGB channels) in to [0, 1] range.").setVersion(11710); + addNodeObject(filter, "Gamma Map", "Node_Gamma_Map", [1, Node_Gamma_Map], "Apply gamma approximation (pow(2.2)) to an image.").setTags(["srgb"]).setVersion(11660); + addNodeObject(filter, "ACE", "Node_Tonemap_ACE", [1, Node_Tonemap_ACE], "Apply ACE tonemapping.").setVersion(11710); ds_list_add(filter, "Fixes"); - addNodeObject(filter, "De-Corner",, "Node_De_Corner", [1, Node_De_Corner], ["decorner"], "Attempt to remove single pixel corner from the image."); - addNodeObject(filter, "De-Stray",, "Node_De_Stray", [1, Node_De_Stray], ["destray"], "Attempt to remove orphan pixel."); + addNodeObject(filter, "De-Corner", "Node_De_Corner", [1, Node_De_Corner], "Attempt to remove single pixel corner from the image.").setTags(["decorner"]); + addNodeObject(filter, "De-Stray", "Node_De_Stray", [1, Node_De_Stray], "Attempt to remove orphan pixel.").setTags(["destray"]); #endregion #region d3d var d3d = ds_list_create(); addNodeCatagory("3D", d3d); ds_list_add(d3d, "2D Operations"); - addNodeObject(d3d, "Transform 3D",, "Node_3D_Transform_Image", [1, Node_3D_Transform_Image], ["3d transform"], "Transform image in 3D space").setVersion(11600); - addNodeObject(d3d, "Normal",, "Node_Normal", [1, Node_Normal],, "Create normal map using greyscale value as height."); - addNodeObject(d3d, "Normal Light",, "Node_Normal_Light", [1, Node_Normal_Light],, "Light up the image using normal mapping."); - addNodeObject(d3d, "Bevel",, "Node_Bevel", [1, Node_Bevel],, "Apply 2D bevel on the image."); - addNodeObject(d3d, "Sprite Stack",, "Node_Sprite_Stack", [1, Node_Sprite_Stack],, "Create sprite stack either from repeating a single image or stacking different images using array."); - addNodeObject(d3d, "Ambient Occlusion",, "Node_Ambient_Occlusion", [1, Node_Ambient_Occlusion], ["ao"], "Apply simple 2D AO effect using height map.").patreonExtra(); + addNodeObject(d3d, "Transform 3D", "Node_3D_Transform_Image", [1, Node_3D_Transform_Image], "Transform image in 3D space").setTags(["3d transform"]).setVersion(11600); + addNodeObject(d3d, "Normal", "Node_Normal", [1, Node_Normal], "Create normal map using greyscale value as height."); + addNodeObject(d3d, "Normal Light", "Node_Normal_Light", [1, Node_Normal_Light], "Light up the image using normal mapping."); + addNodeObject(d3d, "Bevel", "Node_Bevel", [1, Node_Bevel], "Apply 2D bevel on the image."); + addNodeObject(d3d, "Sprite Stack", "Node_Sprite_Stack", [1, Node_Sprite_Stack], "Create sprite stack either from repeating a single image or stacking different images using array."); + addNodeObject(d3d, "Ambient Occlusion", "Node_Ambient_Occlusion", [1, Node_Ambient_Occlusion], "Apply simple 2D AO effect using height map.").setTags(["ao"]).patreonExtra(); ds_list_add(d3d, "Scenes"); - addNodeObject(d3d, "3D Camera",, "Node_3D_Camera", [1, Node_3D_Camera],, "Create 3D camera that render scene to surface.").setVersion(11510); - addNodeObject(d3d, "3D Camera Set",, "Node_3D_Camera_Set", [1, Node_3D_Camera_Set],, "3D camera with built-in key and fill directional lights.").setVersion(11571); - addNodeObject(d3d, "3D Scene",, "Node_3D_Scene", [1, Node_3D_Scene],, "Combine multiple 3D objects into a single junction.").setVersion(11510); + addNodeObject(d3d, "3D Camera", "Node_3D_Camera", [1, Node_3D_Camera], "Create 3D camera that render scene to surface.").setVersion(11510); + addNodeObject(d3d, "3D Camera Set", "Node_3D_Camera_Set", [1, Node_3D_Camera_Set], "3D camera with built-in key and fill directional lights.").setVersion(11571); + addNodeObject(d3d, "3D Scene", "Node_3D_Scene", [1, Node_3D_Scene], "Combine multiple 3D objects into a single junction.").setVersion(11510); ds_list_add(d3d, "Materials"); - addNodeObject(d3d, "3D Material",, "Node_3D_Material", [1, Node_3D_Material],, "Create 3D material with adjustable parameters.").setVersion(11510); + addNodeObject(d3d, "3D Material", "Node_3D_Material", [1, Node_3D_Material], "Create 3D material with adjustable parameters.").setVersion(11510); ds_list_add(d3d, "Meshes"); ds_list_add(d3d, "/Creators"); - addNodeObject(d3d, "3D Object",, "Node_3D_Mesh_Obj", [0, Node_create_3D_Obj],, "Load .obj file from your computer as a 3D object.").setVersion(11510); - addNodeObject(d3d, "3D Plane",, "Node_3D_Mesh_Plane", [1, Node_3D_Mesh_Plane],, "Put 2D image on a plane in 3D space.").setVersion(11510); - addNodeObject(d3d, "3D Cube",, "Node_3D_Mesh_Cube", [1, Node_3D_Mesh_Cube]).setVersion(11510); - addNodeObject(d3d, "3D Cylinder",, "Node_3D_Mesh_Cylinder", [1, Node_3D_Mesh_Cylinder]).setVersion(11510); - addNodeObject(d3d, "3D UV Sphere",, "Node_3D_Mesh_Sphere_UV", [1, Node_3D_Mesh_Sphere_UV]).setVersion(11510); - addNodeObject(d3d, "3D Icosphere",, "Node_3D_Mesh_Sphere_Ico", [1, Node_3D_Mesh_Sphere_Ico]).setVersion(11510); - addNodeObject(d3d, "3D Cone",, "Node_3D_Mesh_Cone", [1, Node_3D_Mesh_Cone]).setVersion(11510); - addNodeObject(d3d, "3D Torus",, "Node_3D_Mesh_Torus", [1, Node_3D_Mesh_Torus]).setVersion(1_18_01_0); - addNodeObject(d3d, "3D Terrain",, "Node_3D_Mesh_Terrain", [1, Node_3D_Mesh_Terrain],, "Create 3D terrain from height map.").setVersion(11560); - addNodeObject(d3d, "3D Wall Builder",, "Node_3D_Mesh_Wall_Builder", [1, Node_3D_Mesh_Wall_Builder]).setVersion(1_18_01_0); - addNodeObject(d3d, "Surface Extrude",, "Node_3D_Mesh_Extrude", [1, Node_3D_Mesh_Extrude],, "Extrude 2D image into 3D object.").setVersion(11510); - addNodeObject(d3d, "Path Extrude",, "Node_3D_Mesh_Path_Extrude", [1, Node_3D_Mesh_Path_Extrude],, "Extrude path into 3D object.").setVersion(11750); + addNodeObject(d3d, "3D Object", "Node_3D_Mesh_Obj", [0, Node_create_3D_Obj], "Load .obj file from your computer as a 3D object.").setVersion(11510); + addNodeObject(d3d, "3D Plane", "Node_3D_Mesh_Plane", [1, Node_3D_Mesh_Plane], "Put 2D image on a plane in 3D space.").setVersion(11510); + addNodeObject(d3d, "3D Cube", "Node_3D_Mesh_Cube", [1, Node_3D_Mesh_Cube]).setVersion(11510); + addNodeObject(d3d, "3D Cylinder", "Node_3D_Mesh_Cylinder", [1, Node_3D_Mesh_Cylinder]).setVersion(11510); + addNodeObject(d3d, "3D UV Sphere", "Node_3D_Mesh_Sphere_UV", [1, Node_3D_Mesh_Sphere_UV]).setVersion(11510); + addNodeObject(d3d, "3D Icosphere", "Node_3D_Mesh_Sphere_Ico", [1, Node_3D_Mesh_Sphere_Ico]).setVersion(11510); + addNodeObject(d3d, "3D Cone", "Node_3D_Mesh_Cone", [1, Node_3D_Mesh_Cone]).setVersion(11510); + addNodeObject(d3d, "3D Torus", "Node_3D_Mesh_Torus", [1, Node_3D_Mesh_Torus]).setVersion(1_18_01_0); + addNodeObject(d3d, "3D Terrain", "Node_3D_Mesh_Terrain", [1, Node_3D_Mesh_Terrain], "Create 3D terrain from height map.").setVersion(11560); + addNodeObject(d3d, "3D Wall Builder", "Node_3D_Mesh_Wall_Builder", [1, Node_3D_Mesh_Wall_Builder]).setVersion(1_18_01_0); + addNodeObject(d3d, "Surface Extrude", "Node_3D_Mesh_Extrude", [1, Node_3D_Mesh_Extrude], "Extrude 2D image into 3D object.").setVersion(11510); + addNodeObject(d3d, "Path Extrude", "Node_3D_Mesh_Path_Extrude", [1, Node_3D_Mesh_Path_Extrude], "Extrude path into 3D object.").setVersion(11750); ds_list_add(d3d, "/Exporters"); - addNodeObject(d3d, "Mesh Export",, "Node_3D_Mesh_Export", [1, Node_3D_Mesh_Export],, "Export 3D mesh as .obj file").setVersion(11740); - addNodeObject(d3d, "Slice Stack",, "Node_3D_Mesh_Stack_Slice", [1, Node_3D_Mesh_Stack_Slice],, "").setVersion(11750); + addNodeObject(d3d, "Mesh Export", "Node_3D_Mesh_Export", [1, Node_3D_Mesh_Export], "Export 3D mesh as .obj file").setVersion(11740); + addNodeObject(d3d, "Slice Stack", "Node_3D_Mesh_Stack_Slice", [1, Node_3D_Mesh_Stack_Slice]).setVersion(11750); ds_list_add(d3d, "Light"); - addNodeObject(d3d, "Directional Light",, "Node_3D_Light_Directional", [1, Node_3D_Light_Directional],, "Create directional light directed at the origin point.").setVersion(11510); - addNodeObject(d3d, "Point Light",, "Node_3D_Light_Point", [1, Node_3D_Light_Point],, "Create point light to illuminate surrounding area.").setVersion(11510); + addNodeObject(d3d, "Directional Light", "Node_3D_Light_Directional", [1, Node_3D_Light_Directional], "Create directional light directed at the origin point.").setVersion(11510); + addNodeObject(d3d, "Point Light", "Node_3D_Light_Point", [1, Node_3D_Light_Point], "Create point light to illuminate surrounding area.").setVersion(11510); ds_list_add(d3d, "Modify"); ds_list_add(d3d, "/Meshes"); - addNodeObject(d3d, "Transform",, "Node_3D_Transform", [1, Node_3D_Transform],, "Transform 3D object.").setVersion(11570); - addNodeObject(d3d, "Transform Scene",, "Node_3D_Transform_Scene", [1, Node_3D_Transform_Scene],, "Transform 3D scene, accepts array of transformations for each objects.").setVersion(11570); - addNodeObject(d3d, "Discretize vertex",, "Node_3D_Round_Vertex", [1, Node_3D_Round_Vertex],, "Round out vertex position to a specified step.").setVersion(11560); - addNodeObject(d3d, "3D Displace",, "Node_3D_Displace", [1, Node_3D_Displace],, "").setVersion(1_18_01_0); - addNodeObject(d3d, "3D Subdivide",, "Node_3D_Subdivide", [1, Node_3D_Subdivide],, "").setVersion(1_18_03_0); + addNodeObject(d3d, "Transform", "Node_3D_Transform", [1, Node_3D_Transform], "Transform 3D object.").setVersion(11570); + addNodeObject(d3d, "Transform Scene", "Node_3D_Transform_Scene", [1, Node_3D_Transform_Scene], "Transform 3D scene, accepts array of transformations for each objects.").setVersion(11570); + addNodeObject(d3d, "Discretize vertex", "Node_3D_Round_Vertex", [1, Node_3D_Round_Vertex], "Round out vertex position to a specified step.").setVersion(11560); + addNodeObject(d3d, "3D Displace", "Node_3D_Displace", [1, Node_3D_Displace]).setVersion(1_18_01_0); + addNodeObject(d3d, "3D Subdivide", "Node_3D_Subdivide", [1, Node_3D_Subdivide]).setVersion(1_18_03_0); ds_list_add(d3d, "/Instances"); - addNodeObject(d3d, "3D Repeat",, "Node_3D_Repeat", [1, Node_3D_Repeat],, "Repeat the same 3D mesh multiple times.").setVersion(11510); - ///**/ addNodeObject(d3d, "3D Instancer", s_node_3d_set_material, "Node_3D_Instancer", [1, Node_3D_Instancer]).setVersion(11560); - ///**/ addNodeObject(d3d, "3D Particle", s_node_3d_set_material, "Node_3D_Particle", [1, Node_3D_Particle]).setVersion(11560); + addNodeObject(d3d, "3D Repeat", "Node_3D_Repeat", [1, Node_3D_Repeat], "Repeat the same 3D mesh multiple times.").setVersion(11510); + // addNodeObject(d3d, "3D Instancer",, "Node_3D_Instancer", [1, Node_3D_Instancer]).setVersion(11560); + // addNodeObject(d3d, "3D Particle",, "Node_3D_Particle", [1, Node_3D_Particle]).setVersion(11560); ds_list_add(d3d, "/Materials"); - addNodeObject(d3d, "Set Material",, "Node_3D_Set_Material", [1, Node_3D_Set_Material],, "Replace mesh material with a new one.").setVersion(11560); - addNodeObject(d3d, "UV Remap",, "Node_3D_UV_Remap", [1, Node_3D_UV_Remap],, "Remap UV map using plane.").setVersion(11570); + addNodeObject(d3d, "Set Material", "Node_3D_Set_Material", [1, Node_3D_Set_Material], "Replace mesh material with a new one.").setVersion(11560); + addNodeObject(d3d, "UV Remap", "Node_3D_UV_Remap", [1, Node_3D_UV_Remap], "Remap UV map using plane.").setVersion(11570); ds_list_add(d3d, "Points"); - addNodeObject(d3d, "Point Affector",, "Node_3D_Point_Affector", [1, Node_3D_Point_Affector],, "Generate array of 3D points interpolating between two values based on the distance.").setVersion(11570); + addNodeObject(d3d, "Point Affector", "Node_3D_Point_Affector", [1, Node_3D_Point_Affector], "Generate array of 3D points interpolating between two values based on the distance.").setVersion(11570); ds_list_add(d3d, "Ray Marching"); - addNodeObject(d3d, "RM Primitive",, "Node_RM_Primitive", [0, Node_create_RM_Primitive], global.node_rm_primitive_keys).setVersion(11720); - addNodeObject(d3d, "RM Terrain",, "Node_RM_Terrain", [1, Node_RM_Terrain], ["ray marching"]).setVersion(11720); - addNodeObject(d3d, "RM Combine",, "Node_RM_Combine", [1, Node_RM_Combine], ["ray marching", "rm boolean"]).setVersion(11740); - addNodeObject(d3d, "RM Render",, "Node_RM_Render", [1, Node_RM_Render], ["ray marching"]).setVersion(11740); - addNodeObject(d3d, "RM Cloud",, "Node_RM_Cloud", [1, Node_RM_Cloud],, "Generate distance field cloud.").patreonExtra(); + addNodeObject(d3d, "RM Primitive", "Node_RM_Primitive", [0, Node_create_RM_Primitive]).setTags(global.node_rm_primitive_keys).setVersion(11720); + addNodeObject(d3d, "RM Terrain", "Node_RM_Terrain", [1, Node_RM_Terrain]).setTags(["ray marching"]).setVersion(11720); + addNodeObject(d3d, "RM Combine", "Node_RM_Combine", [1, Node_RM_Combine]).setTags(["ray marching", "rm boolean"]).setVersion(11740); + addNodeObject(d3d, "RM Render", "Node_RM_Render", [1, Node_RM_Render]).setTags(["ray marching"]).setVersion(11740); + addNodeObject(d3d, "RM Cloud", "Node_RM_Cloud", [1, Node_RM_Cloud], "Generate distance field cloud.").patreonExtra(); #endregion #region generator var generator = ds_list_create(); addNodeCatagory("Generate", generator); ds_list_add(generator, "Colors"); - addNodeObject(generator, "Solid",, "Node_Solid", [1, Node_Solid],, "Create image of a single color."); - addNodeObject(generator, "Draw Gradient",, "Node_Gradient", [1, Node_Gradient],, "Create image from gradient."); - addNodeObject(generator, "Draw 4 Points Gradient",, "Node_Gradient_Points", [1, Node_Gradient_Points],, "Create image from 4 color points."); - addNodeObject(generator, "Sky",, "Node_Sky", [1, Node_Sky],, "Generate sky texture using different model."); + addNodeObject(generator, "Solid", "Node_Solid", [1, Node_Solid], "Create image of a single color."); + addNodeObject(generator, "Draw Gradient", "Node_Gradient", [1, Node_Gradient], "Create image from gradient."); + addNodeObject(generator, "Draw 4 Points Gradient", "Node_Gradient_Points", [1, Node_Gradient_Points], "Create image from 4 color points."); + addNodeObject(generator, "Sky", "Node_Sky", [1, Node_Sky], "Generate sky texture using different model."); ds_list_add(generator, "Drawer"); - addNodeObject(generator, "Draw Line",, "Node_Line", [1, Node_Line],, "Draw line on an image. Connect path data to it to draw line from path."); - addNodeObject(generator, "Draw Text",, "Node_Text", [1, Node_Text],, "Draw text on an image."); - addNodeObject(generator, "Draw Shape",, "Node_Shape", [0, Node_create_Shape], global.node_shape_keys, "Draw simple shapes using signed distance field."); - addNodeObject(generator, "Draw Shape Polygon",, "Node_Shape_Polygon", [1, Node_Shape_Polygon],, "Draw polygonal shapes.").setVersion(1130); - addNodeObject(generator, "Draw Random Shape",, "Node_Random_Shape", [1, Node_Random_Shape],, "Generate random shape, use for testing purposes.").setVersion(1147); - addNodeObject(generator, "Draw Bar / Graph",, "Node_Plot_Linear", [0, Node_create_Plot_Linear], global.node_plot_linear_keys, "Plot graph or bar chart from array of number.").setVersion(1144); - addNodeObject(generator, "Draw Path Profile",, "Node_Path_Profile", [1, Node_Path_Profile],, "Fill-in an area on one side of a path.").setVersion(11660); - addNodeObject(generator, "Draw Cross Section",, "Node_Cross_Section", [1, Node_Cross_Section],, "Map the brightness of pixels on a linear axis into a surface.").setVersion(11710); - addNodeObject(generator, "Interpret Number",, "Node_Interpret_Number", [1, Node_Interpret_Number],, "Convert array of number into surface.").setVersion(11530); - addNodeObject(generator, "Pixel Builder",, "Node_Pixel_Builder", [1, Node_Pixel_Builder],, "Will break, do not create. please. Why is it here??").setVersion(11540); - addNodeObject(generator, "Tile Drawer",, "Node_Tile_Drawer", [1, Node_Tile_Drawer]).setVersion(1_18_03_0); + addNodeObject(generator, "Draw Line", "Node_Line", [1, Node_Line], "Draw line on an image. Connect path data to it to draw line from path."); + addNodeObject(generator, "Draw Text", "Node_Text", [1, Node_Text], "Draw text on an image."); + addNodeObject(generator, "Draw Shape", "Node_Shape", [0, Node_create_Shape], "Draw simple shapes using signed distance field.").setTags(global.node_shape_keys); + addNodeObject(generator, "Draw Shape Polygon", "Node_Shape_Polygon", [1, Node_Shape_Polygon], "Draw polygonal shapes.").setVersion(1130); + addNodeObject(generator, "Draw Random Shape", "Node_Random_Shape", [1, Node_Random_Shape], "Generate random shape, use for testing purposes.").setVersion(1147); + addNodeObject(generator, "Draw Bar / Graph", "Node_Plot_Linear", [0, Node_create_Plot_Linear], "Plot graph or bar chart from array of number.").setTags(global.node_plot_linear_keys).setVersion(1144); + addNodeObject(generator, "Draw Path Profile", "Node_Path_Profile", [1, Node_Path_Profile], "Fill-in an area on one side of a path.").setVersion(11660); + addNodeObject(generator, "Draw Cross Section", "Node_Cross_Section", [1, Node_Cross_Section], "Map the brightness of pixels on a linear axis into a surface.").setVersion(11710); + addNodeObject(generator, "Interpret Number", "Node_Interpret_Number", [1, Node_Interpret_Number], "Convert array of number into surface.").setVersion(11530); + addNodeObject(generator, "Pixel Builder", "Node_Pixel_Builder", [1, Node_Pixel_Builder], "Will break, do not create. please. Why is it here??").setVersion(11540); + addNodeObject(generator, "Tile Drawer", "Node_Tile_Drawer", [1, Node_Tile_Drawer]).setVersion(1_18_03_0); ds_list_add(generator, "Noises"); ds_list_add(generator, "/Basics"); - addNodeObject(generator, "Noise",, "Node_Noise", [1, Node_Noise],, "Generate white noise."); - addNodeObject(generator, "Perlin Noise",, "Node_Perlin", [1, Node_Perlin],, "Generate perlin noise."); - addNodeObject(generator, "Simplex Noise",, "Node_Noise_Simplex", [1, Node_Noise_Simplex], ["perlin"], "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.").setVersion(1080); - addNodeObject(generator, "Cellular Noise",, "Node_Cellular", [1, Node_Cellular], ["voronoi", "worley"], "Generate voronoi pattern."); - addNodeObject(generator, "Anisotropic Noise",, "Node_Noise_Aniso", [1, Node_Noise_Aniso],, "Generate anisotropic noise."); - addNodeObject(generator, "Extra Perlins",, "Node_Perlin_Extra", [1, Node_Perlin_Extra], ["noise"], "Random perlin noise made with different algorithms.").patreonExtra(); - addNodeObject(generator, "Extra Voronoi",, "Node_Voronoi_Extra", [1, Node_Voronoi_Extra], ["noise"], "Random voronoi noise made with different algorithms.").patreonExtra(); + addNodeObject(generator, "Noise", "Node_Noise", [1, Node_Noise], "Generate white noise."); + addNodeObject(generator, "Perlin Noise", "Node_Perlin", [1, Node_Perlin], "Generate perlin noise."); + addNodeObject(generator, "Simplex Noise", "Node_Noise_Simplex", [1, Node_Noise_Simplex], "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.").setTags(["perlin"]).setVersion(1080); + addNodeObject(generator, "Cellular Noise", "Node_Cellular", [1, Node_Cellular], "Generate voronoi pattern.").setTags(["voronoi", "worley"]); + addNodeObject(generator, "Anisotropic Noise", "Node_Noise_Aniso", [1, Node_Noise_Aniso], "Generate anisotropic noise."); + addNodeObject(generator, "Extra Perlins", "Node_Perlin_Extra", [1, Node_Perlin_Extra], "Random perlin noise made with different algorithms.").setTags(["noise"]).patreonExtra(); + addNodeObject(generator, "Extra Voronoi", "Node_Voronoi_Extra", [1, Node_Voronoi_Extra], "Random voronoi noise made with different algorithms.").setTags(["noise"]).patreonExtra(); ds_list_add(generator, "/Artistics"); - addNodeObject(generator, "Fold Noise",, "Node_Fold_Noise", [1, Node_Fold_Noise],, "Generate cloth fold noise").setVersion(11650); - addNodeObject(generator, "Strand Noise",, "Node_Noise_Strand", [1, Node_Noise_Strand],, "Generate random srtands noise.").setVersion(11650); - addNodeObject(generator, "Gabor Noise",, "Node_Gabor_Noise", [1, Node_Gabor_Noise],, "Generate Gabor noise").patreonExtra(); - addNodeObject(generator, "Shard Noise",, "Node_Shard_Noise", [1, Node_Shard_Noise],, "Generate glass shard-looking noise").patreonExtra(); - addNodeObject(generator, "Wavelet Noise",, "Node_Wavelet_Noise", [1, Node_Wavelet_Noise],, "Generate wavelet noise").patreonExtra(); - addNodeObject(generator, "Caustic",, "Node_Caustic", [1, Node_Caustic],, "Generate caustic noise").patreonExtra(); - addNodeObject(generator, "Bubble Noise",, "Node_Noise_Bubble", [1, Node_Noise_Bubble],, "Generate bubble noise").patreonExtra(); - addNodeObject(generator, "Flow Noise",, "Node_Flow_Noise", [1, Node_Flow_Noise],, "Generate fluid flow noise").patreonExtra(); - addNodeObject(generator, "Cristal Noise",, "Node_Noise_Cristal", [1, Node_Noise_Cristal],, "Generate Cristal noise").patreonExtra(); - addNodeObject(generator, "Honeycomb Noise",, "Node_Honeycomb_Noise", [1, Node_Honeycomb_Noise],, "Generate honeycomb noise").patreonExtra(); + addNodeObject(generator, "Fold Noise", "Node_Fold_Noise", [1, Node_Fold_Noise], "Generate cloth fold noise").setVersion(11650); + addNodeObject(generator, "Strand Noise", "Node_Noise_Strand", [1, Node_Noise_Strand], "Generate random srtands noise.").setVersion(11650); + addNodeObject(generator, "Gabor Noise", "Node_Gabor_Noise", [1, Node_Gabor_Noise], "Generate Gabor noise").patreonExtra(); + addNodeObject(generator, "Shard Noise", "Node_Shard_Noise", [1, Node_Shard_Noise], "Generate glass shard-looking noise").patreonExtra(); + addNodeObject(generator, "Wavelet Noise", "Node_Wavelet_Noise", [1, Node_Wavelet_Noise], "Generate wavelet noise").patreonExtra(); + addNodeObject(generator, "Caustic", "Node_Caustic", [1, Node_Caustic], "Generate caustic noise").patreonExtra(); + addNodeObject(generator, "Bubble Noise", "Node_Noise_Bubble", [1, Node_Noise_Bubble], "Generate bubble noise").patreonExtra(); + addNodeObject(generator, "Flow Noise", "Node_Flow_Noise", [1, Node_Flow_Noise], "Generate fluid flow noise").patreonExtra(); + addNodeObject(generator, "Cristal Noise", "Node_Noise_Cristal", [1, Node_Noise_Cristal], "Generate Cristal noise").patreonExtra(); + addNodeObject(generator, "Honeycomb Noise", "Node_Honeycomb_Noise", [1, Node_Honeycomb_Noise], "Generate honeycomb noise").patreonExtra(); ds_list_add(generator, "Patterns"); ds_list_add(generator, "/Basics"); - addNodeObject(generator, "Stripe",, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); - addNodeObject(generator, "Zigzag",, "Node_Zigzag", [1, Node_Zigzag],, "Generate zigzag pattern."); - addNodeObject(generator, "Checker",, "Node_Checker", [1, Node_Checker],, "Generate checkerboard pattern."); + addNodeObject(generator, "Stripe", "Node_Stripe", [1, Node_Stripe], "Generate stripe pattern."); + addNodeObject(generator, "Zigzag", "Node_Zigzag", [1, Node_Zigzag], "Generate zigzag pattern."); + addNodeObject(generator, "Checker", "Node_Checker", [1, Node_Checker], "Generate checkerboard pattern."); ds_list_add(generator, "/Grids"); - addNodeObject(generator, "Grid",, "Node_Grid", [1, Node_Grid], ["tile", "mosaic"], "Generate grid pattern."); - addNodeObject(generator, "Triangular Grid",, "Node_Grid_Tri", [1, Node_Grid_Tri],, "Generate triangular grid pattern."); - addNodeObject(generator, "Hexagonal Grid",, "Node_Grid_Hex", [1, Node_Grid_Hex],, "Generate hexagonal grid pattern."); - addNodeObject(generator, "Pentagonal Grid",, "Node_Grid_Pentagonal", [1, Node_Grid_Pentagonal],, "Generate Pentagonal grid pattern.").patreonExtra(); + addNodeObject(generator, "Grid", "Node_Grid", [1, Node_Grid], "Generate grid pattern.").setTags(["tile", "mosaic"]); + addNodeObject(generator, "Triangular Grid", "Node_Grid_Tri", [1, Node_Grid_Tri], "Generate triangular grid pattern."); + addNodeObject(generator, "Hexagonal Grid", "Node_Grid_Hex", [1, Node_Grid_Hex], "Generate hexagonal grid pattern."); + addNodeObject(generator, "Pentagonal Grid", "Node_Grid_Pentagonal", [1, Node_Grid_Pentagonal], "Generate Pentagonal grid pattern.").patreonExtra(); ds_list_add(generator, "/Tiles"); - addNodeObject(generator, "Pytagorean Tile",, "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile],, "Generate Pytagorean tile pattern.").patreonExtra(); - addNodeObject(generator, "Herringbone Tile",, "Node_Herringbone_Tile", [1, Node_Herringbone_Tile], "Generate Herringbone tile pattern.").patreonExtra(); - addNodeObject(generator, "Random Tile",, "Node_Random_Tile", [1, Node_Random_Tile],, "Generate Random tile pattern.").patreonExtra(); + addNodeObject(generator, "Pytagorean Tile", "Node_Pytagorean_Tile", [1, Node_Pytagorean_Tile], "Generate Pytagorean tile pattern.").patreonExtra(); + addNodeObject(generator, "Herringbone Tile", "Node_Herringbone_Tile", [1, Node_Herringbone_Tile], "Generate Herringbone tile pattern.").patreonExtra(); + addNodeObject(generator, "Random Tile", "Node_Random_Tile", [1, Node_Random_Tile], "Generate Random tile pattern.").patreonExtra(); ds_list_add(generator, "/Others"); - addNodeObject(generator, "Box Pattern",, "Node_Box_Pattern", [1, Node_Box_Pattern],, "Generate square-based patterns..").setVersion(11750); - addNodeObject(generator, "Quasicrystal",, "Node_Quasicrystal", [1, Node_Quasicrystal],, "Generate Quasicrystal pattern.").setVersion(11660); - addNodeObject(generator, "Pixel Sampler",, "Node_Pixel_Sampler", [1, Node_Pixel_Sampler],, "Map image on to each individual pixels of another image.").setVersion(11730); - addNodeObject(generator, "Julia",, "Node_Julia_Set", [1, Node_Julia_Set],, "Generate Julia fractal.").setVersion(1_18_05_6); + addNodeObject(generator, "Box Pattern", "Node_Box_Pattern", [1, Node_Box_Pattern], "Generate square-based patterns..").setVersion(11750); + addNodeObject(generator, "Quasicrystal", "Node_Quasicrystal", [1, Node_Quasicrystal], "Generate Quasicrystal pattern.").setVersion(11660); + addNodeObject(generator, "Pixel Sampler", "Node_Pixel_Sampler", [1, Node_Pixel_Sampler], "Map image on to each individual pixels of another image.").setVersion(11730); + addNodeObject(generator, "Julia", "Node_Julia_Set", [1, Node_Julia_Set], "Generate Julia fractal.").setVersion(1_18_05_6); ds_list_add(generator, "Populate"); - addNodeObject(generator, "Repeat",, "Node_Repeat", [0, Node_create_Repeat], global.node_repeat_keys, "Repeat image multiple times linearly, or in grid pattern.").setVersion(1100); - addNodeObject(generator, "Scatter",, "Node_Scatter", [1, Node_Scatter],, "Scatter image randomly multiple times."); - addNodeObject(generator, "Repeat Texture",, "Node_Repeat_Texture", [1, Node_Repeat_Texture],, "Repeat texture over larger surface without repeating patterns."); + addNodeObject(generator, "Repeat", "Node_Repeat", [0, Node_create_Repeat], "Repeat image multiple times linearly, or in grid pattern.").setTags(global.node_repeat_keys).setVersion(1100); + addNodeObject(generator, "Scatter", "Node_Scatter", [1, Node_Scatter], "Scatter image randomly multiple times."); + addNodeObject(generator, "Repeat Texture", "Node_Repeat_Texture", [1, Node_Repeat_Texture], "Repeat texture over larger surface without repeating patterns."); ds_list_add(generator, "Simulation"); - addNodeObject(generator, "Particle",, "Node_Particle", [1, Node_Particle],, "Generate particle effect."); - addNodeObject(generator, "VFX", s_node_vfx, "Node_VFX_Group_Inline", [1, Node_VFX_Group_Inline],, "Create VFX group, which generate particles that can be manipulated using different force nodes."); - addNodeObject(generator, "RigidSim", s_node_rigid, "Node_Rigid_Group_Inline", [1, Node_Rigid_Group_Inline],, "Create group for rigidbody simulation.").setVersion(1110); - addNodeObject(generator, "FLIP Fluid", s_node_flip_group, "Node_FLIP_Group_Inline", [1, Node_FLIP_Group_Inline],, "Create group for fluid simulation.").setVersion(11620); - addNodeObject(generator, "SmokeSim", s_node_smoke_group, "Node_Smoke_Group_Inline", [1, Node_Smoke_Group_Inline],, "Create group for smoke simulation.").setVersion(1120); - addNodeObject(generator, "StrandSim", s_node_strand, "Node_Strand_Group_Inline", [1, Node_Strand_Group_Inline], ["hair"], "Create group for hair simulation.").setVersion(1140); - addNodeObject(generator, "Diffuse",, "Node_Diffuse", [1, Node_Diffuse],, "Simulate diffusion like simulation.").setVersion(11640); - addNodeObject(generator, "Reaction Diffusion", s_node_reaction_diffusion, "Node_RD", [1, Node_RD],, "Simulate reaction diffusion effect.").setVersion(11630); + addNodeObject(generator, "Particle", "Node_Particle", [1, Node_Particle], "Generate particle effect."); + addNodeObject(generator, "VFX", "Node_VFX_Group_Inline", [1, Node_VFX_Group_Inline], "Create VFX group, which generate particles that can be manipulated using different force nodes.").setSpr(s_node_vfx); + addNodeObject(generator, "RigidSim", "Node_Rigid_Group_Inline", [1, Node_Rigid_Group_Inline], "Create group for rigidbody simulation.").setSpr(s_node_rigid).setVersion(1110); + addNodeObject(generator, "FLIP Fluid", "Node_FLIP_Group_Inline", [1, Node_FLIP_Group_Inline], "Create group for fluid simulation.").setSpr(s_node_flip_group).setVersion(11620); + addNodeObject(generator, "SmokeSim", "Node_Smoke_Group_Inline", [1, Node_Smoke_Group_Inline], "Create group for smoke simulation.").setSpr(s_node_smoke_group).setVersion(1120); + addNodeObject(generator, "StrandSim", "Node_Strand_Group_Inline", [1, Node_Strand_Group_Inline], "Create group for hair simulation.").setSpr(s_node_strand).setTags(["hair"]).setVersion(1140); + addNodeObject(generator, "Diffuse", "Node_Diffuse", [1, Node_Diffuse], "Simulate diffusion like simulation.").setVersion(11640); + addNodeObject(generator, "Reaction Diffusion", "Node_RD", [1, Node_RD], "Simulate reaction diffusion effect.").setSpr(s_node_reaction_diffusion).setVersion(11630); ds_list_add(generator, "Region"); - addNodeObject(generator, "Separate Shape",, "Node_Seperate_Shape", [1, Node_Seperate_Shape],, "Separate disconnected pixel each into an image in an image array."); - addNodeObject(generator, "Region Fill",, "Node_Region_Fill", [1, Node_Region_Fill],, "Fill connected pixel with colors.").setVersion(1147); - addNodeObject(generator, "Flood Fill",, "Node_Flood_Fill", [1, Node_Flood_Fill],, "Filled connected pixel given position and color.").setVersion(1133); + addNodeObject(generator, "Separate Shape", "Node_Seperate_Shape", [1, Node_Seperate_Shape], "Separate disconnected pixel each into an image in an image array."); + addNodeObject(generator, "Region Fill", "Node_Region_Fill", [1, Node_Region_Fill], "Fill connected pixel with colors.").setVersion(1147); + addNodeObject(generator, "Flood Fill", "Node_Flood_Fill", [1, Node_Flood_Fill], "Filled connected pixel given position and color.").setVersion(1133); ds_list_add(generator, "MK Effects"); - addNodeObject(generator, "MK Rain",, "Node_MK_Rain", [1, Node_MK_Rain],, "Generate deterministic rain.").setVersion(11600); - addNodeObject(generator, "MK GridBalls",, "Node_MK_GridBalls", [1, Node_MK_GridBalls],, "Generate controllable grid of spheres.").setVersion(11600); - addNodeObject(generator, "MK GridFlip",, "Node_MK_GridFlip", [1, Node_MK_GridFlip],, "Generate controllable grid of planes.").setVersion(11600); - addNodeObject(generator, "MK Saber",, "Node_MK_Saber", [1, Node_MK_Saber],, "Generate glowing saber from 2 points.").setVersion(11600); - addNodeObject(generator, "MK Tile",, "Node_MK_Tile", [1, Node_MK_Tile],, "Generate game engines-ready tileset.").setVersion(11600); - addNodeObject(generator, "MK Flag",, "Node_MK_Flag", [1, Node_MK_Flag],, "Generate waving flag.").setVersion(11600); - addNodeObject(generator, "MK Brownian",, "Node_MK_Brownian", [1, Node_MK_Brownian],, "Generate random particle.").setVersion(11630); - addNodeObject(generator, "MK Fall",, "Node_MK_Fall", [1, Node_MK_Fall], ["Leaf", "Leaves"], "Generate leaves falling effects.").setVersion(11630); - addNodeObject(generator, "MK Blinker",, "Node_MK_Blinker", [1, Node_MK_Blinker],, "Flicker regions of the selected colors randomly.").setVersion(11630); - addNodeObject(generator, "MK Lens Flare",, "Node_MK_Flare", [1, Node_MK_Flare],, "Generate lens flare.").setVersion(11630); - addNodeObject(generator, "MK Delay Machine",, "Node_MK_Delay_Machine", [1, Node_MK_Delay_Machine],,"Combines multiple frames of animation into one.").setVersion(11680); - addNodeObject(generator, "MK Fracture",, "Node_MK_Fracture", [1, Node_MK_Fracture],, "Deterministically fracture and image and apply basic physics.").patreonExtra(); - addNodeObject(generator, "MK Sparkle",, "Node_MK_Sparkle", [1, Node_MK_Sparkle],, "Generate random star animation.").patreonExtra(); - addNodeObject(generator, "MK Subpixel",, "Node_MK_Subpixel", [1, Node_MK_Subpixel],, "Apply subpixel filter on top of a surface.").setVersion(1_17_11_0); + addNodeObject(generator, "MK Rain", "Node_MK_Rain", [1, Node_MK_Rain], "Generate deterministic rain.").setVersion(11600); + addNodeObject(generator, "MK GridBalls", "Node_MK_GridBalls", [1, Node_MK_GridBalls], "Generate controllable grid of spheres.").setVersion(11600); + addNodeObject(generator, "MK GridFlip", "Node_MK_GridFlip", [1, Node_MK_GridFlip], "Generate controllable grid of planes.").setVersion(11600); + addNodeObject(generator, "MK Saber", "Node_MK_Saber", [1, Node_MK_Saber], "Generate glowing saber from 2 points.").setVersion(11600); + addNodeObject(generator, "MK Tile", "Node_MK_Tile", [1, Node_MK_Tile], "Generate game engines-ready tileset.").setVersion(11600); + addNodeObject(generator, "MK Flag", "Node_MK_Flag", [1, Node_MK_Flag], "Generate waving flag.").setVersion(11600); + addNodeObject(generator, "MK Brownian", "Node_MK_Brownian", [1, Node_MK_Brownian], "Generate random particle.").setVersion(11630); + addNodeObject(generator, "MK Fall", "Node_MK_Fall", [1, Node_MK_Fall], "Generate leaves falling effects.").setTags(["Leaf", "Leaves"]).setVersion(11630); + addNodeObject(generator, "MK Blinker", "Node_MK_Blinker", [1, Node_MK_Blinker], "Flicker regions of the selected colors randomly.").setVersion(11630); + addNodeObject(generator, "MK Lens Flare", "Node_MK_Flare", [1, Node_MK_Flare], "Generate lens flare.").setVersion(11630); + addNodeObject(generator, "MK Delay Machine", "Node_MK_Delay_Machine", [1, Node_MK_Delay_Machine],"Combines multiple frames of animation into one.").setVersion(11680); + addNodeObject(generator, "MK Fracture", "Node_MK_Fracture", [1, Node_MK_Fracture], "Deterministically fracture and image and apply basic physics.").patreonExtra(); + addNodeObject(generator, "MK Sparkle", "Node_MK_Sparkle", [1, Node_MK_Sparkle], "Generate random star animation.").patreonExtra(); + addNodeObject(generator, "MK Subpixel", "Node_MK_Subpixel", [1, Node_MK_Subpixel], "Apply subpixel filter on top of a surface.").setVersion(1_17_11_0); #endregion #region compose var compose = ds_list_create(); addNodeCatagory("Compose", compose); ds_list_add(compose, "Composes"); - addNodeObject(compose, "Blend",, "Node_Blend", [1, Node_Blend],, "Combine 2 images using different blend modes."); - addNodeObject(compose, "Composite",, "Node_Composite", [1, Node_Composite],, "Combine multiple images with custom transformation."); - addNodeObject(compose, "Stack",, "Node_Stack", [1, Node_Stack],, "Place image next to each other linearly, or on top of each other.").setVersion(1070); - addNodeObject(compose, "Image Grid",, "Node_Image_Grid", [1, Node_Image_Grid], "Place image next to each other in grid pattern.").setVersion(11640); - addNodeObject(compose, "Camera",, "Node_Camera", [1, Node_Camera],, "Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect."); - addNodeObject(compose, "Render Spritesheet",, "Node_Render_Sprite_Sheet", [1, Node_Render_Sprite_Sheet],, "Create spritesheet from image array or animation."); - addNodeObject(compose, "Pack Sprites",, "Node_Pack_Sprites", [1, Node_Pack_Sprites],, "Combine array of images with different dimension using different algorithms.").setVersion(1140); + addNodeObject(compose, "Blend", "Node_Blend", [1, Node_Blend], "Combine 2 images using different blend modes."); + addNodeObject(compose, "Composite", "Node_Composite", [1, Node_Composite], "Combine multiple images with custom transformation."); + addNodeObject(compose, "Stack", "Node_Stack", [1, Node_Stack], "Place image next to each other linearly, or on top of each other.").setVersion(1070); + addNodeObject(compose, "Image Grid", "Node_Image_Grid", [1, Node_Image_Grid], "Place image next to each other in grid pattern.").setVersion(11640); + addNodeObject(compose, "Camera", "Node_Camera", [1, Node_Camera], "Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect."); + addNodeObject(compose, "Render Spritesheet", "Node_Render_Sprite_Sheet", [1, Node_Render_Sprite_Sheet], "Create spritesheet from image array or animation."); + addNodeObject(compose, "Pack Sprites", "Node_Pack_Sprites", [1, Node_Pack_Sprites], "Combine array of images with different dimension using different algorithms.").setVersion(1140); ds_list_add(compose, "Armature"); ds_list_add(compose, "/Basics"); - addNodeObject(compose, "Armature Create",, "Node_Armature", [1, Node_Armature], ["rigging", "bone"], "Create new armature system.").setVersion(1146); - addNodeObject(compose, "Armature Pose",, "Node_Armature_Pose", [1, Node_Armature_Pose], ["rigging", "bone"], "Pose armature system.").setVersion(1146); - addNodeObject(compose, "Armature Bind",, "Node_Armature_Bind", [1, Node_Armature_Bind], ["rigging", "bone"], "Bind and render image to an armature system.").setVersion(1146); - addNodeObject(compose, "Armature Mesh Rig",, "Node_Armature_Mesh_Rig", [1, Node_Armature_Mesh_Rig], ["rigging", "bone"], "Rig mesh to armature system.").setVersion(1_18_04_0); + addNodeObject(compose, "Armature Create", "Node_Armature", [1, Node_Armature], "Create new armature system." ).setTags(["rigging", "bone"]).setVersion(1146); + addNodeObject(compose, "Armature Pose", "Node_Armature_Pose", [1, Node_Armature_Pose], "Pose armature system." ).setTags(["rigging", "bone"]).setVersion(1146); + addNodeObject(compose, "Armature Bind", "Node_Armature_Bind", [1, Node_Armature_Bind], "Bind and render image to an armature system." ).setTags(["rigging", "bone"]).setVersion(1146); + addNodeObject(compose, "Armature Mesh Rig", "Node_Armature_Mesh_Rig", [1, Node_Armature_Mesh_Rig], "Rig mesh to armature system." ).setTags(["rigging", "bone"]).setVersion(1_18_04_0); ds_list_add(compose, "/Convertors"); - addNodeObject(compose, "Armature Path",, "Node_Armature_Path", [1, Node_Armature_Path], ["rigging", "bone"], "Generate path from armature system.").setVersion(1146); - addNodeObject(compose, "Armature Sample",, "Node_Armature_Sample", [1, Node_Armature_Sample], ["rigging", "bone"], "Sample point from armature system.").setVersion(1147); + addNodeObject(compose, "Armature Path", "Node_Armature_Path", [1, Node_Armature_Path], "Generate path from armature system." ).setTags(["rigging", "bone"]).setVersion(1146); + addNodeObject(compose, "Armature Sample", "Node_Armature_Sample", [1, Node_Armature_Sample], "Sample point from armature system." ).setTags(["rigging", "bone"]).setVersion(1147); if(!DEMO) { ds_list_add(compose, "Export"); - addNodeObject(compose, "Export",, "Node_Export", [0, Node_create_Export],, "Export image/animation to file(s)."); + addNodeObject(compose, "Export", "Node_Export", [0, Node_create_Export], "Export image/animation to file(s)."); } #endregion @@ -936,159 +936,159 @@ function __initNodes() { var values = ds_list_create(); addNodeCatagory("Values", values); ds_list_add(values, "Raw data"); - addNodeObject(values, "Number",, "Node_Number", [1, Node_Number],, "Generate number data."); - addNodeObject(values, "Boolean",, "Node_Boolean", [1, Node_Boolean],, "Generate boolean (true, false) data.").setVersion(1090); - addNodeObject(values, "Text",, "Node_String", [1, Node_String],, "Generate text/string data."); - addNodeObject(values, "Path",, "Node_Path", [1, Node_Path],, "Generate path."); - addNodeObject(values, "Area",, "Node_Area", [1, Node_Area],, "Generate area data."); + addNodeObject(values, "Number", "Node_Number", [1, Node_Number], "Generate number data."); + addNodeObject(values, "Boolean", "Node_Boolean", [1, Node_Boolean], "Generate boolean (true, false) data.").setVersion(1090); + addNodeObject(values, "Text", "Node_String", [1, Node_String], "Generate text/string data."); + addNodeObject(values, "Path", "Node_Path", [1, Node_Path], "Generate path."); + addNodeObject(values, "Area", "Node_Area", [1, Node_Area], "Generate area data."); ds_list_add(values, "Numbers"); ds_list_add(values, "/Creators"); - addNodeObject(values, "Number",, "Node_Number", [1, Node_Number],, "Generate number data."); - addNodeObject(values, "To Number",, "Node_To_Number", [1, Node_To_Number],, "Convert string to number, supports scientific format (e.g. 1e-2 = 0.02).").setVersion(1145); - addNodeObject(values, "Random",, "Node_Random", [1, Node_Random],, "Generate pseudorandom value based on seed."); - addNodeObject(values, "Scatter Points",, "Node_Scatter_Points", [1, Node_Scatter_Points],, "Generate array of vector 2 points.").setVersion(1120); - addNodeObject(values, "Transform Array",, "Node_Transform_Array", [1, Node_Transform_Array],, "Generate transfomation array.").setVersion(1146); + addNodeObject(values, "Number", "Node_Number", [1, Node_Number], "Generate number data."); + addNodeObject(values, "To Number", "Node_To_Number", [1, Node_To_Number], "Convert string to number, supports scientific format (e.g. 1e-2 = 0.02).").setVersion(1145); + addNodeObject(values, "Random", "Node_Random", [1, Node_Random], "Generate pseudorandom value based on seed."); + addNodeObject(values, "Scatter Points", "Node_Scatter_Points", [1, Node_Scatter_Points], "Generate array of vector 2 points.").setVersion(1120); + addNodeObject(values, "Transform Array", "Node_Transform_Array", [1, Node_Transform_Array], "Generate transfomation array.").setVersion(1146); ds_list_add(values, "/Operators"); - addNodeObject(values, "Math",, "Node_Math", [0, Node_create_Math], global.node_math_keys, "Apply mathematical function to number(s)."); - addNodeObject(values, "Equation",, "Node_Equation", [0, Node_create_Equation],, "Evaluate string of equation. With an option for setting variables."); - addNodeObject(values, "Statistic",, "Node_Statistic", [0, Node_create_Statistic], global.node_statistic_keys, "Apply statistical operation (sum, average, median, etc.) to array of numbers."); - addNodeObject(values, "Convert Base",, "Node_Base_Convert", [1, Node_Base_Convert], ["base convert", "binary", "hexadecimal"]).setVersion(1140); - addNodeObject(values, "FFT",, "Node_FFT", [1, Node_FFT], ["frequency analysis"], "Perform fourier transform on number array.").setVersion(1144); + addNodeObject(values, "Math", "Node_Math", [0, Node_create_Math], "Apply mathematical function to number(s).").setTags(global.node_math_keys); + addNodeObject(values, "Equation", "Node_Equation", [0, Node_create_Equation], "Evaluate string of equation. With an option for setting variables."); + addNodeObject(values, "Statistic", "Node_Statistic", [0, Node_create_Statistic], "Apply statistical operation (sum, average, median, etc.) to array of numbers.").setTags(global.node_statistic_keys); + addNodeObject(values, "Convert Base", "Node_Base_Convert", [1, Node_Base_Convert], "Convert number from one base to another.").setTags(["binary", "hexadecimal"]).setVersion(1140); + addNodeObject(values, "FFT", "Node_FFT", [1, Node_FFT], "Perform fourier transform on number array.").setTags(["frequency analysis"]).setVersion(1144); ds_list_add(values, "Vector"); ds_list_add(values, "/Creators"); - addNodeObject(values, "Vector2",, "Node_Vector2", [1, Node_Vector2],, "Genearte vector composite of 2 members."); - addNodeObject(values, "Vector3",, "Node_Vector3", [1, Node_Vector3],, "Genearte vector composite of 3 members."); - addNodeObject(values, "Vector4",, "Node_Vector4", [1, Node_Vector4],, "Genearte vector composite of 4 members."); + addNodeObject(values, "Vector2", "Node_Vector2", [1, Node_Vector2], "Genearte vector composite of 2 members."); + addNodeObject(values, "Vector3", "Node_Vector3", [1, Node_Vector3], "Genearte vector composite of 3 members."); + addNodeObject(values, "Vector4", "Node_Vector4", [1, Node_Vector4], "Genearte vector composite of 4 members."); ds_list_add(values, "/Components"); - addNodeObject(values, "Vector Split",, "Node_Vector_Split", [1, Node_Vector_Split],, "Split vector (up to 4) into individual components."); - addNodeObject(values, "Swizzle",, "Node_Vector_Swizzle", [1, Node_Vector_Swizzle], ["swap axis"], "Rearrange vector using string containing axis indicies (x, y, z, w).").setVersion(1_17_10_0); + addNodeObject(values, "Vector Split", "Node_Vector_Split", [1, Node_Vector_Split], "Split vector (up to 4) into individual components."); + addNodeObject(values, "Swizzle", "Node_Vector_Swizzle", [1, Node_Vector_Swizzle], "Rearrange vector using string containing axis indicies (x, y, z, w).").setTags(["swap axis"]).setVersion(1_17_10_0); ds_list_add(values, "/Operators"); - addNodeObject(values, "Magnitude",, "Node_Vector_Magnitude",[1, Node_Vector_Magnitude], ["vector length", "vector magnitude"], "Calculate magnitude (length) of a vector.").setVersion(1_17_10_0); - addNodeObject(values, "Dot product",, "Node_Vector_Dot", [1, Node_Vector_Dot],, "Calculate dot product between vectors.").setVersion(1141); - addNodeObject(values, "Cross product 2D",, "Node_Vector_Cross_2D", [1, Node_Vector_Cross_2D],, "Calculate cross product of 2 vec2s.").setVersion(1141); - addNodeObject(values, "Cross product 3D",, "Node_Vector_Cross_3D", [1, Node_Vector_Cross_3D],, "Calculate cross product of 2 vec3s.").setVersion(1141); + addNodeObject(values, "Magnitude", "Node_Vector_Magnitude",[1, Node_Vector_Magnitude], "Calculate magnitude (length) of a vector.").setTags(["vector length", "vector magnitude"]).setVersion(1_17_10_0); + addNodeObject(values, "Dot product", "Node_Vector_Dot", [1, Node_Vector_Dot], "Calculate dot product between vectors.").setVersion(1141); + addNodeObject(values, "Cross product 2D", "Node_Vector_Cross_2D", [1, Node_Vector_Cross_2D], "Calculate cross product of 2 vec2s.").setVersion(1141); + addNodeObject(values, "Cross product 3D", "Node_Vector_Cross_3D", [1, Node_Vector_Cross_3D], "Calculate cross product of 2 vec3s.").setVersion(1141); ds_list_add(values, "/Points"); - addNodeObject(values, "Translate Point",, "Node_Move_Point", [1, Node_Move_Point],, "Translate array of points.").setVersion(1141); - addNodeObject(values, "Point in Area",, "Node_Point_In_Area", [1, Node_Point_In_Area],, "Check whether a point lies in an area.").setVersion(1_17_10_0); + addNodeObject(values, "Translate Point", "Node_Move_Point", [1, Node_Move_Point], "Translate array of points.").setVersion(1141); + addNodeObject(values, "Point in Area", "Node_Point_In_Area", [1, Node_Point_In_Area], "Check whether a point lies in an area.").setVersion(1_17_10_0); ds_list_add(values, "Texts"); ds_list_add(values, "/Creators"); - addNodeObject(values, "Text",, "Node_String", [1, Node_String],, "Generate text/string data."); - addNodeObject(values, "To Text",, "Node_To_Text", [1, Node_To_Text]).setVersion(1145); - addNodeObject(values, "Unicode",, "Node_Unicode", [1, Node_Unicode],, "Convert unicode id into string."); + addNodeObject(values, "Text", "Node_String", [1, Node_String], "Generate text/string data."); + addNodeObject(values, "To Text", "Node_To_Text", [1, Node_To_Text], "Convert string to number.").setVersion(1145); + addNodeObject(values, "Unicode", "Node_Unicode", [1, Node_Unicode], "Convert unicode id into string."); ds_list_add(values, "/Info"); - addNodeObject(values, "Text Length",, "Node_String_Length", [1, Node_String_Length],, "Return number of character in a string.").setVersion(1138); - addNodeObject(values, "Get Character",, "Node_String_Get_Char", [1, Node_String_Get_Char],, "Get a nth character in a string.").setVersion(1100); + addNodeObject(values, "Text Length", "Node_String_Length", [1, Node_String_Length], "Return number of character in a string.").setVersion(1138); + addNodeObject(values, "Get Character", "Node_String_Get_Char", [1, Node_String_Get_Char], "Get a nth character in a string.").setVersion(1100); ds_list_add(values, "/Operators"); - addNodeObject(values, "Combine Texts",, "Node_String_Merge", [1, Node_String_Merge], ["join text", "concatenate text"], "Combine multiple strings into one long string."); - addNodeObject(values, "Join Text Array",, "Node_String_Join", [1, Node_String_Join],, "Combine string array with an option to add extra string in-between.").setVersion(1120); - addNodeObject(values, "Split Text",, "Node_String_Split", [1, Node_String_Split],, "Split string into arrays of substring based on delimiter."); - addNodeObject(values, "Trim Text",, "Node_String_Trim", [1, Node_String_Trim],, "Remove first and last n character(s) from a string.").setVersion(1080); + addNodeObject(values, "Combine Texts", "Node_String_Merge", [1, Node_String_Merge], "Combine multiple strings into one long string.").setTags(["join text", "concatenate text"]); + addNodeObject(values, "Join Text Array", "Node_String_Join", [1, Node_String_Join], "Combine string array with an option to add extra string in-between.").setVersion(1120); + addNodeObject(values, "Split Text", "Node_String_Split", [1, Node_String_Split], "Split string into arrays of substring based on delimiter."); + addNodeObject(values, "Trim Text", "Node_String_Trim", [1, Node_String_Trim], "Remove first and last n character(s) from a string.").setVersion(1080); ds_list_add(values, "/RegEx"); - addNodeObject(values, "RegEx Match",, "Node_String_Regex_Match", [1, Node_String_Regex_Match],, "Check whether regular expression pattern exist in a string.").setVersion(1140); - addNodeObject(values, "RegEx Search",, "Node_String_Regex_Search", [1, Node_String_Regex_Search],, "Search for instances in a string using regular expression.").setVersion(1140); - addNodeObject(values, "RegEx Replace",, "Node_String_Regex_Replace", [1, Node_String_Regex_Replace],, "Replace instances of a string with another using regular expression.").setVersion(1140); + addNodeObject(values, "RegEx Match", "Node_String_Regex_Match", [1, Node_String_Regex_Match], "Check whether regular expression pattern exist in a string.").setVersion(1140); + addNodeObject(values, "RegEx Search", "Node_String_Regex_Search", [1, Node_String_Regex_Search], "Search for instances in a string using regular expression.").setVersion(1140); + addNodeObject(values, "RegEx Replace", "Node_String_Regex_Replace", [1, Node_String_Regex_Replace], "Replace instances of a string with another using regular expression.").setVersion(1140); ds_list_add(values, "/Filename"); - addNodeObject(values, "Separate File Path",, "Node_Path_Separate_Folder", [1, Node_Path_Separate_Folder],, "Separate path string into a pair of directory and filename.").setVersion(1145); + addNodeObject(values, "Separate File Path", "Node_Path_Separate_Folder", [1, Node_Path_Separate_Folder], "Separate path string into a pair of directory and filename.").setVersion(1145); ds_list_add(values, "Arrays"); ds_list_add(values, "/Creators"); - addNodeObject(values, "Array",, "Node_Array", [1, Node_Array],, "Create an array."); - addNodeObject(values, "Array Range",, "Node_Array_Range", [1, Node_Array_Range],, "Create array of numbers by setting start, end and step length."); - addNodeObject(values, "Parse CSV",, "Node_Array_CSV_Parse", [1, Node_Array_CSV_Parse],, "Parse CSV string into array.").setVersion(1145); + addNodeObject(values, "Array", "Node_Array", [1, Node_Array], "Create an array."); + addNodeObject(values, "Array Range", "Node_Array_Range", [1, Node_Array_Range], "Create array of numbers by setting start, end and step length."); + addNodeObject(values, "Parse CSV", "Node_Array_CSV_Parse", [1, Node_Array_CSV_Parse], "Parse CSV string into array.").setVersion(1145); ds_list_add(values, "/Info"); - addNodeObject(values, "Array Length",, "Node_Array_Length", [1, Node_Array_Length],, "Returns number of members in an array."); - addNodeObject(values, "Array Get",, "Node_Array_Get", [1, Node_Array_Get],, "Returns nth member in an array."); - addNodeObject(values, "Array Sample",, "Node_Array_Sample", [1, Node_Array_Sample],, "Sample member from an array to create smaller one.").setVersion(11540); - addNodeObject(values, "Array Find",, "Node_Array_Find", [1, Node_Array_Find],, "Returns index of an array member that match a condition.").setVersion(1120); + addNodeObject(values, "Array Length", "Node_Array_Length", [1, Node_Array_Length], "Returns number of members in an array."); + addNodeObject(values, "Array Get", "Node_Array_Get", [1, Node_Array_Get], "Returns nth member in an array."); + addNodeObject(values, "Array Sample", "Node_Array_Sample", [1, Node_Array_Sample], "Sample member from an array to create smaller one.").setVersion(11540); + addNodeObject(values, "Array Find", "Node_Array_Find", [1, Node_Array_Find], "Returns index of an array member that match a condition.").setVersion(1120); ds_list_add(values, "/Operators"); - addNodeObject(values, "Array Set",, "Node_Array_Set", [1, Node_Array_Set],, "Set array member based on index.").setVersion(1120); - addNodeObject(values, "Array Add",, "Node_Array_Add", [1, Node_Array_Add],, "Add elements into an array."); - addNodeObject(values, "Array Split",, "Node_Array_Split", [1, Node_Array_Split],, "Split array members into individual outputs."); - addNodeObject(values, "Array Insert",, "Node_Array_Insert", [1, Node_Array_Insert],, "Insert member into an array at any position.").setVersion(1120); - addNodeObject(values, "Array Remove",, "Node_Array_Remove", [1, Node_Array_Remove], ["delete array"], "Remove member in an array.").setVersion(1120); - addNodeObject(values, "Array Reverse",, "Node_Array_Reverse", [1, Node_Array_Reverse],, "Reverse array order").setVersion(1120); - addNodeObject(values, "Array Shift",, "Node_Array_Shift", [1, Node_Array_Shift],, "Shift all member in an array.").setVersion(1137); - addNodeObject(values, "Array Rearrange",, "Node_Array_Rearrange", [1, Node_Array_Rearrange],, "Rearrange array member manually.").setVersion(11640); - addNodeObject(values, "Array Zip",, "Node_Array_Zip", [1, Node_Array_Zip],, "Combine multiple arrays into higher dimension array by grouping member of the same indicies.").setVersion(1138); - addNodeObject(values, "Array Copy",, "Node_Array_Copy", [1, Node_Array_Copy],, "Copy array or subarray.").setVersion(1144); - addNodeObject(values, "Array Convolute",, "Node_Array_Convolute", [1, Node_Array_Convolute],, "Apply convolution between 2 number arrays.").setVersion(11540); - addNodeObject(values, "Array Composite",, "Node_Array_Composite", [1, Node_Array_Composite],, "Create 2D array by multiplying each member in the first 1D array with the second 1D array.").setVersion(11540); - addNodeObject(values, "Shuffle Array",, "Node_Array_Shuffle", [1, Node_Array_Shuffle],, "Randomly rearrange the array members.").setVersion(1120); + addNodeObject(values, "Array Set", "Node_Array_Set", [1, Node_Array_Set], "Set array member based on index.").setVersion(1120); + addNodeObject(values, "Array Add", "Node_Array_Add", [1, Node_Array_Add], "Add elements into an array."); + addNodeObject(values, "Array Split", "Node_Array_Split", [1, Node_Array_Split], "Split array members into individual outputs."); + addNodeObject(values, "Array Insert", "Node_Array_Insert", [1, Node_Array_Insert], "Insert member into an array at any position.").setVersion(1120); + addNodeObject(values, "Array Remove", "Node_Array_Remove", [1, Node_Array_Remove], "Remove member in an array.").setTags(["delete array"]).setVersion(1120); + addNodeObject(values, "Array Reverse", "Node_Array_Reverse", [1, Node_Array_Reverse], "Reverse array order").setVersion(1120); + addNodeObject(values, "Array Shift", "Node_Array_Shift", [1, Node_Array_Shift], "Shift all member in an array.").setVersion(1137); + addNodeObject(values, "Array Rearrange", "Node_Array_Rearrange", [1, Node_Array_Rearrange], "Rearrange array member manually.").setVersion(11640); + addNodeObject(values, "Array Zip", "Node_Array_Zip", [1, Node_Array_Zip], "Combine multiple arrays into higher dimension array by grouping member of the same indicies.").setVersion(1138); + addNodeObject(values, "Array Copy", "Node_Array_Copy", [1, Node_Array_Copy], "Copy array or subarray.").setVersion(1144); + addNodeObject(values, "Array Convolute", "Node_Array_Convolute", [1, Node_Array_Convolute], "Apply convolution between 2 number arrays.").setVersion(11540); + addNodeObject(values, "Array Composite", "Node_Array_Composite", [1, Node_Array_Composite], "Create 2D array by multiplying each member in the first 1D array with the second 1D array.").setVersion(11540); + addNodeObject(values, "Shuffle Array", "Node_Array_Shuffle", [1, Node_Array_Shuffle], "Randomly rearrange the array members.").setVersion(1120); ds_list_add(values, "/Group Operators"); - addNodeObject(values, "Sort Array",, "Node_Array_Sort", [1, Node_Array_Sort],, "Sort array using default comparison.").setVersion(1120); - addNodeObject(values, "Loop Array", s_node_loop_array, "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], ["iterate each", "for each"], "Create group that iterate to each member in an array."); - addNodeObject(values, "Filter Array", s_node_filter_array, "Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline],, "Filter array using condition.").setVersion(1140); - addNodeObject(values, "Sort Array Inline", s_node_sort_array, "Node_Iterate_Sort_Inline", [1, Node_Iterate_Sort_Inline],, "Sort array using node graph.").setVersion(1143); + addNodeObject(values, "Sort Array", "Node_Array_Sort", [1, Node_Array_Sort], "Sort array using default comparison.").setVersion(1120); + addNodeObject(values, "Loop Array", "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], "Create group that iterate to each member in an array.").setSpr(s_node_loop_array).setTags(["iterate each", "for each"]); + addNodeObject(values, "Filter Array", "Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline], "Filter array using condition.").setSpr(s_node_filter_array).setVersion(1140); + addNodeObject(values, "Sort Array Inline", "Node_Iterate_Sort_Inline", [1, Node_Iterate_Sort_Inline], "Sort array using node graph.").setSpr(s_node_sort_array).setVersion(1143); ds_list_add(values, "Paths"); ds_list_add(values, "/Creators"); - addNodeObject(values, "Path",, "Node_Path", [1, Node_Path],, "Create path using bezier curve."); - addNodeObject(values, "Smooth Path",, "Node_Path_Smooth", [1, Node_Path_Smooth],, "Create path with automatic smoothness.").setVersion(11640); - addNodeObject(values, "Shape Path",, "Node_Path_Shape", [1, Node_Path_Shape],, "Create path with predefined shape.").setVersion(1_18_05_6); - addNodeObject(values, "Path Builder",, "Node_Path_Builder", [1, Node_Path_Builder],, "Create path from array of vec2 points.").setVersion(1137); - addNodeObject(values, "L system",, "Node_Path_L_System", [1, Node_Path_L_System],, "Generate path using Lindenmayer system.").setVersion(1137); - addNodeObject(values, "Path from Mask",, "Node_Path_From_Mask", [1, Node_Path_From_Mask],, "Create path that wrap around a mask.").setVersion(11640); - addNodeObject(values, "Plot Path",, "Node_Path_Plot", [1, Node_Path_Plot],, "Create path from parametric equations.").setVersion(1138); - addNodeObject(values, "3D Path",, "Node_Path_3D", [1, Node_Path_3D],, "Create path in 3D space.").setVersion(11750); - addNodeObject(values, "Path Anchor",, "Node_Path_Anchor", [1, Node_Path_Anchor],, "Create path anchor data.").setVersion(1140); + addNodeObject(values, "Path", "Node_Path", [1, Node_Path], "Create path using bezier curve."); + addNodeObject(values, "Smooth Path", "Node_Path_Smooth", [1, Node_Path_Smooth], "Create path with automatic smoothness.").setVersion(11640); + addNodeObject(values, "Shape Path", "Node_Path_Shape", [1, Node_Path_Shape], "Create path with predefined shape.").setVersion(1_18_05_6); + addNodeObject(values, "Path Builder", "Node_Path_Builder", [1, Node_Path_Builder], "Create path from array of vec2 points.").setVersion(1137); + addNodeObject(values, "L system", "Node_Path_L_System", [1, Node_Path_L_System], "Generate path using Lindenmayer system.").setVersion(1137); + addNodeObject(values, "Path from Mask", "Node_Path_From_Mask", [1, Node_Path_From_Mask], "Create path that wrap around a mask.").setVersion(11640); + addNodeObject(values, "Plot Path", "Node_Path_Plot", [1, Node_Path_Plot], "Create path from parametric equations.").setVersion(1138); + addNodeObject(values, "3D Path", "Node_Path_3D", [1, Node_Path_3D], "Create path in 3D space.").setVersion(11750); + addNodeObject(values, "Path Anchor", "Node_Path_Anchor", [1, Node_Path_Anchor], "Create path anchor data.").setVersion(1140); ds_list_add(values, "/Modifiers"); - addNodeObject(values, "Transform Path",, "Node_Path_Transform", [1, Node_Path_Transform],, "Move rotate and scale a path.").setVersion(1130); - addNodeObject(values, "Remap Path",, "Node_Path_Map_Area", [1, Node_Path_Map_Area],, "Scale path to fit a given area.").setVersion(1130); - addNodeObject(values, "Shift Path",, "Node_Path_Shift", [1, Node_Path_Shift],, "Move path along its normal.").setVersion(1130); - addNodeObject(values, "Trim Path",, "Node_Path_Trim", [1, Node_Path_Trim],, "Trim path.").setVersion(1130); - addNodeObject(values, "Wave Path",, "Node_Path_Wave", [1, Node_Path_Wave], ["zigzag path"], "Apply wave effect along the path.").setVersion(1130); - addNodeObject(values, "Path Combine",, "Node_Path_Array", [1, Node_Path_Array], ["array path"], "Combine multiple path into one.").setVersion(1137); - addNodeObject(values, "Reverse Path",, "Node_Path_Reverse", [1, Node_Path_Reverse],, "Reverse path direction.").setVersion(1130); + addNodeObject(values, "Transform Path", "Node_Path_Transform", [1, Node_Path_Transform], "Move rotate and scale a path.").setVersion(1130); + addNodeObject(values, "Remap Path", "Node_Path_Map_Area", [1, Node_Path_Map_Area], "Scale path to fit a given area.").setVersion(1130); + addNodeObject(values, "Shift Path", "Node_Path_Shift", [1, Node_Path_Shift], "Move path along its normal.").setVersion(1130); + addNodeObject(values, "Trim Path", "Node_Path_Trim", [1, Node_Path_Trim], "Trim path.").setVersion(1130); + addNodeObject(values, "Wave Path", "Node_Path_Wave", [1, Node_Path_Wave], "Apply wave effect along the path.").setTags(["zigzag path"]).setVersion(1130); + addNodeObject(values, "Path Combine", "Node_Path_Array", [1, Node_Path_Array], "Combine multiple path into one.").setTags(["array path"]).setVersion(1137); + addNodeObject(values, "Reverse Path", "Node_Path_Reverse", [1, Node_Path_Reverse], "Reverse path direction.").setVersion(1130); ds_list_add(values, "/Combine"); - addNodeObject(values, "Repeat Path",, "Node_Path_Repeat", [1, Node_Path_Repeat],, "Repeat paths.").setVersion(1_18_05_6); - addNodeObject(values, "Scatter Path",, "Node_Path_Scatter", [1, Node_Path_Scatter],, "Scatter paths along another path.").setVersion(11740); - addNodeObject(values, "Bridge Path",, "Node_Path_Bridge", [1, Node_Path_Bridge],, "Create new paths that connect multiple paths at the same sample positions.").setVersion(11640); - addNodeObject(values, "Blend Path",, "Node_Path_Blend", [1, Node_Path_Blend],, "Blend between 2 paths."); + addNodeObject(values, "Repeat Path", "Node_Path_Repeat", [1, Node_Path_Repeat], "Repeat paths.").setVersion(1_18_05_6); + addNodeObject(values, "Scatter Path", "Node_Path_Scatter", [1, Node_Path_Scatter], "Scatter paths along another path.").setVersion(11740); + addNodeObject(values, "Bridge Path", "Node_Path_Bridge", [1, Node_Path_Bridge], "Create new paths that connect multiple paths at the same sample positions.").setVersion(11640); + addNodeObject(values, "Blend Path", "Node_Path_Blend", [1, Node_Path_Blend], "Blend between 2 paths."); ds_list_add(values, "/To Number"); - addNodeObject(values, "Sample Path",, "Node_Path_Sample", [1, Node_Path_Sample],, "Sample a 2D position from a path"); - addNodeObject(values, "Bake Path",, "Node_Path_Bake", [1, Node_Path_Bake],, "Bake path data into array of vec2 points.").setVersion(11640); + addNodeObject(values, "Sample Path", "Node_Path_Sample", [1, Node_Path_Sample], "Sample a 2D position from a path"); + addNodeObject(values, "Bake Path", "Node_Path_Bake", [1, Node_Path_Bake], "Bake path data into array of vec2 points.").setVersion(11640); ds_list_add(values, "/To Surface"); - addNodeObject(values, "Fill Path",, "Node_Path_Fill", [1, Node_Path_Fill],, "Fill area inside path.").setVersion(1_18_06_2); - addNodeObject(values, "Map Path",, "Node_Path_Map", [1, Node_Path_Map],, "Map a texture between multiple paths.").setVersion(11640); - addNodeObject(values, "Morph Path",, "Node_Path_Morph", [1, Node_Path_Morph],, "").setVersion(1_18_06_2); + addNodeObject(values, "Fill Path", "Node_Path_Fill", [1, Node_Path_Fill], "Fill area inside path.").setVersion(1_18_06_2); + addNodeObject(values, "Map Path", "Node_Path_Map", [1, Node_Path_Map], "Map a texture between multiple paths.").setVersion(11640); + addNodeObject(values, "Morph Path", "Node_Path_Morph", [1, Node_Path_Morph]).setVersion(1_18_06_2); ds_list_add(values, "/Segments"); - addNodeObject(values, "Filter Segments",, "Node_Segment_Filter", [1, Node_Segment_Filter],, "Filter segment (vec2 array) based on a conditions.").setVersion(11780); + addNodeObject(values, "Filter Segments", "Node_Segment_Filter", [1, Node_Segment_Filter], "Filter segment (vec2 array) based on a conditions.").setVersion(11780); ds_list_add(values, "Boolean"); - addNodeObject(values, "Boolean",, "Node_Boolean", [1, Node_Boolean]); - addNodeObject(values, "Compare",, "Node_Compare", [0, Node_create_Compare], global.node_compare_keys, "Compare 2 numbers."); - addNodeObject(values, "Logic Opr",, "Node_Logic", [0, Node_create_Logic], global.node_logic_keys, "Apply logic operation (and, or, not, etc.) to boolean(s)."); + addNodeObject(values, "Boolean", "Node_Boolean", [1, Node_Boolean]); + addNodeObject(values, "Compare", "Node_Compare", [0, Node_create_Compare], "Compare 2 numbers.").setTags(global.node_compare_keys); + addNodeObject(values, "Logic Opr", "Node_Logic", [0, Node_create_Logic], "Apply logic operation (and, or, not, etc.) to boolean(s).").setTags(global.node_logic_keys); ds_list_add(values, "Trigger"); - addNodeObject(values, "Trigger",, "Node_Trigger", [1, Node_Trigger],, "Create trigger value.").setVersion(1140); - addNodeObject(values, "Boolean Trigger",, "Node_Trigger_Bool", [1, Node_Trigger_Bool],, "Create trigger based on boolean condition.").setVersion(1140); + addNodeObject(values, "Trigger", "Node_Trigger", [1, Node_Trigger], "Create trigger value.").setVersion(1140); + addNodeObject(values, "Boolean Trigger", "Node_Trigger_Bool", [1, Node_Trigger_Bool], "Create trigger based on boolean condition.").setVersion(1140); ds_list_add(values, "Struct"); - addNodeObject(values, "Struct",, "Node_Struct", [1, Node_Struct],, "Create key-value pair struct."); - addNodeObject(values, "Struct Get",, "Node_Struct_Get", [1, Node_Struct_Get],, "Get value from struct and key."); - addNodeObject(values, "Struct Set",, "Node_Struct_Set", [1, Node_Struct_Set],, "Modify struct"); - addNodeObject(values, "Parse JSON",, "Node_Struct_JSON_Parse", [1, Node_Struct_JSON_Parse],, "Parse json string into struct/array.").setVersion(1145); + addNodeObject(values, "Struct", "Node_Struct", [1, Node_Struct], "Create key-value pair struct."); + addNodeObject(values, "Struct Get", "Node_Struct_Get", [1, Node_Struct_Get], "Get value from struct and key."); + addNodeObject(values, "Struct Set", "Node_Struct_Set", [1, Node_Struct_Set], "Modify struct"); + addNodeObject(values, "Parse JSON", "Node_Struct_JSON_Parse", [1, Node_Struct_JSON_Parse], "Parse json string into struct/array.").setVersion(1145); ds_list_add(values, "Mesh"); - addNodeObject(values, "Path to Mesh",, "Node_Mesh_Create_Path", [1, Node_Mesh_Create_Path],, "Create mesh from path.").setVersion(1140); - addNodeObject(values, "Mesh Transform",, "Node_Mesh_Transform", [1, Node_Mesh_Transform],, "Transform (move, rotate, scale) mesh.").setVersion(1140); + addNodeObject(values, "Path to Mesh", "Node_Mesh_Create_Path", [1, Node_Mesh_Create_Path], "Create mesh from path.").setVersion(1140); + addNodeObject(values, "Mesh Transform", "Node_Mesh_Transform", [1, Node_Mesh_Transform], "Transform (move, rotate, scale) mesh.").setVersion(1140); ds_list_add(values, "Atlas"); - addNodeObject(values, "Draw Atlas",, "Node_Atlas_Draw", [1, Node_Atlas_Draw],, "Render image atlas to a surface.").setVersion(1141); - addNodeObject(values, "Atlas Get",, "Node_Atlas_Get", [1, Node_Atlas_Get],, "Extract atlas data.").setVersion(1141); - addNodeObject(values, "Atlas Set",, "Node_Atlas_Set", [1, Node_Atlas_Set],, "Modify atlas data.").setVersion(1141); - addNodeObject(values, "Atlas to Struct",, "Node_Atlas_Struct", [1, Node_Atlas_Struct],, "Convert atlas into generic struct.").setVersion(11710); + addNodeObject(values, "Draw Atlas", "Node_Atlas_Draw", [1, Node_Atlas_Draw], "Render image atlas to a surface.").setVersion(1141); + addNodeObject(values, "Atlas Get", "Node_Atlas_Get", [1, Node_Atlas_Get], "Extract atlas data.").setVersion(1141); + addNodeObject(values, "Atlas Set", "Node_Atlas_Set", [1, Node_Atlas_Set], "Modify atlas data.").setVersion(1141); + addNodeObject(values, "Atlas to Struct", "Node_Atlas_Struct", [1, Node_Atlas_Struct], "Convert atlas into generic struct.").setVersion(11710); ds_list_add(values, "Surface"); - //addNodeObject(values, "Dynamic Surface",, "Node_dynaSurf", [1, Node_dynaSurf]).setVersion(11520); - addNodeObject(values, "IsoSurf",, "Node_IsoSurf", [1, Node_IsoSurf],, "Create a dynamic surface that changes its texture based on rotation.").setVersion(11520); - addNodeObject(values, "Surface from Buffer",, "Node_Surface_From_Buffer", [1, Node_Surface_From_Buffer], ["buffer to surface"], "Create surface from a valid buffer.").setVersion(1146); + //addNodeObject(values, "Dynamic Surface", "Node_dynaSurf", [1, Node_dynaSurf]).setVersion(11520); + addNodeObject(values, "IsoSurf", "Node_IsoSurf", [1, Node_IsoSurf], "Create a dynamic surface that changes its texture based on rotation.").setVersion(11520); + addNodeObject(values, "Surface from Buffer", "Node_Surface_From_Buffer", [1, Node_Surface_From_Buffer], "Create surface from a valid buffer.").setTags(["buffer to surface"]).setVersion(1146); ds_list_add(values, "Buffer"); - addNodeObject(values, "Buffer from Surface",, "Node_Surface_To_Buffer", [1, Node_Surface_To_Buffer], ["surface to buffer"], "Create buffer from a surface.").setVersion(1146); + addNodeObject(values, "Buffer from Surface", "Node_Surface_To_Buffer", [1, Node_Surface_To_Buffer], "Create buffer from a surface.").setTags(["surface to buffer"]).setVersion(1146); #endregion #region color @@ -1096,120 +1096,120 @@ function __initNodes() { addNodeCatagory("Color", color); ds_list_add(color, "Colors"); ds_list_add(color, "/Creators"); - addNodeObject(color, "Color", s_node_color_out, "Node_Color", [1, Node_Color],, "Create color value."); - addNodeObject(color, "RGB Color", s_node_color_from_rgb, "Node_Color_RGB", [1, Node_Color_RGB],, "Create (rgb) color from value in RGB color space."); - addNodeObject(color, "HSV Color", s_node_color_from_hsv, "Node_Color_HSV", [1, Node_Color_HSV],, "Create (rgb) color from value in HSV color space."); - addNodeObject(color, "OKLCH Color", s_node_color_from_oklch,"Node_Color_OKLCH", [1, Node_Color_OKLCH],, ["oklab"], "Create (rgb) color from value in OKLCH color space."); + addNodeObject(color, "Color", "Node_Color", [1, Node_Color], "Create color value.").setSpr(s_node_color_out); + addNodeObject(color, "RGB Color", "Node_Color_RGB", [1, Node_Color_RGB], "Create (rgb) color from value in RGB color space.").setSpr(s_node_color_from_rgb); + addNodeObject(color, "HSV Color", "Node_Color_HSV", [1, Node_Color_HSV], "Create (rgb) color from value in HSV color space.").setSpr(s_node_color_from_hsv); + addNodeObject(color, "OKLCH Color", "Node_Color_OKLCH", [1, Node_Color_OKLCH], "Create (rgb) color from value in OKLCH color space.").setSpr(s_node_color_from_oklch).setTags(["oklab"]); ds_list_add(color, "/Data"); - addNodeObject(color, "Color Data",, "Node_Color_Data", [1, Node_Color_Data], ["red", "green", "blue", "alpha", "brightness", "luminance"], "Get data (rgb, hsv, brightness) from color."); + addNodeObject(color, "Color Data", "Node_Color_Data", [1, Node_Color_Data], "Get data (rgb, hsv, brightness) from color.").setTags(["red", "green", "blue", "alpha", "brightness", "luminance"]); ds_list_add(color, "/Operators"); - addNodeObject(color, "Mix Color",, "Node_Color_Mix", [1, Node_Color_Mix],, "Combine two colors.").setVersion(1140); + addNodeObject(color, "Mix Color", "Node_Color_Mix", [1, Node_Color_Mix], "Combine two colors.").setVersion(1140); ds_list_add(color, "/Surfaces"); - addNodeObject(color, "Sampler",, "Node_Sampler", [1, Node_Sampler],, "Sample color from an image."); - addNodeObject(color, "Find pixel",, "Node_Find_Pixel", [1, Node_Find_Pixel],, "Get the position of the first pixel with a given color.").setVersion(1130); + addNodeObject(color, "Sampler", "Node_Sampler", [1, Node_Sampler], "Sample color from an image."); + addNodeObject(color, "Find pixel", "Node_Find_Pixel", [1, Node_Find_Pixel], "Get the position of the first pixel with a given color.").setVersion(1130); ds_list_add(color, "Palettes"); - addNodeObject(color, "Palette",, "Node_Palette", [1, Node_Palette],, "Create palette value. Note that palette is simple an array of colors."); - addNodeObject(color, "Sort Palette",, "Node_Palette_Sort", [1, Node_Palette_Sort],, "Sort palette with specified order.").setVersion(1130); - addNodeObject(color, "Shrink Palette",, "Node_Palette_Shrink", [1, Node_Palette_Shrink],, "Reduce palette size by collapsing similiar colors.").setVersion(1_18_03_0); - addNodeObject(color, "Palette Extract",, "Node_Palette_Extract", [1, Node_Palette_Extract],, "Extract palette from an image.").setVersion(1100); - addNodeObject(color, "Palette Replace",, "Node_Palette_Replace", [1, Node_Palette_Replace],, "Replace colors in a palette with new one.").setVersion(1120); + addNodeObject(color, "Palette", "Node_Palette", [1, Node_Palette], "Create palette value. Note that palette is simple an array of colors."); + addNodeObject(color, "Sort Palette", "Node_Palette_Sort", [1, Node_Palette_Sort], "Sort palette with specified order.").setVersion(1130); + addNodeObject(color, "Shrink Palette", "Node_Palette_Shrink", [1, Node_Palette_Shrink], "Reduce palette size by collapsing similiar colors.").setVersion(1_18_03_0); + addNodeObject(color, "Palette Extract", "Node_Palette_Extract", [1, Node_Palette_Extract], "Extract palette from an image.").setVersion(1100); + addNodeObject(color, "Palette Replace", "Node_Palette_Replace", [1, Node_Palette_Replace], "Replace colors in a palette with new one.").setVersion(1120); ds_list_add(color, "Gradient"); - addNodeObject(color, "Gradient",, "Node_Gradient_Out", [1, Node_Gradient_Out],, "Create gradient object"); - addNodeObject(color, "Palette to Gradient",, "Node_Gradient_Palette", [1, Node_Gradient_Palette],, "Create gradient from palette.").setVersion(1135); - addNodeObject(color, "Gradient Shift",, "Node_Gradient_Shift", [1, Node_Gradient_Shift],, "Move gradients keys."); - addNodeObject(color, "Gradient Replace",, "Node_Gradient_Replace_Color", [1, Node_Gradient_Replace_Color],, "Replace color inside a gradient.").setVersion(1135); - addNodeObject(color, "Gradient Data",, "Node_Gradient_Extract", [1, Node_Gradient_Extract],, "Get palatte and array of key positions from gradient.").setVersion(1135); - addNodeObject(color, "Sample Gradient",, "Node_Gradient_Sample", [1, Node_Gradient_Sample],, "Sample gradient into palette.").setVersion(1_18_04_1); + addNodeObject(color, "Gradient", "Node_Gradient_Out", [1, Node_Gradient_Out], "Create gradient object"); + addNodeObject(color, "Palette to Gradient", "Node_Gradient_Palette", [1, Node_Gradient_Palette], "Create gradient from palette.").setVersion(1135); + addNodeObject(color, "Gradient Shift", "Node_Gradient_Shift", [1, Node_Gradient_Shift], "Move gradients keys."); + addNodeObject(color, "Gradient Replace", "Node_Gradient_Replace_Color", [1, Node_Gradient_Replace_Color], "Replace color inside a gradient.").setVersion(1135); + addNodeObject(color, "Gradient Data", "Node_Gradient_Extract", [1, Node_Gradient_Extract], "Get palatte and array of key positions from gradient.").setVersion(1135); + addNodeObject(color, "Sample Gradient", "Node_Gradient_Sample", [1, Node_Gradient_Sample], "Sample gradient into palette.").setVersion(1_18_04_1); #endregion #region animation var animation = ds_list_create(); addNodeCatagory("Animation", animation); ds_list_add(animation, "Animations"); - addNodeObject(animation, "Frame Index",, "Node_Counter", [1, Node_Counter], ["current frame", "counter"], "Output current frame as frame index, or animation progress (0 - 1)."); - addNodeObject(animation, "Rate Remap",, "Node_Rate_Remap", [1, Node_Rate_Remap],, "Remap animation to a new framerate.").setVersion(1147); - addNodeObject(animation, "Delay",, "Node_Delay", [1, Node_Delay],, "Delay the animation by fix amount of frames.").setVersion(11640); - addNodeObject(animation, "Stagger",, "Node_Stagger", [1, Node_Stagger],, "Delay the animation based on array index.").setVersion(11640); - addNodeObject(animation, "Reverse",, "Node_Revert", [1, Node_Revert],, "Cache the entire animation and replay backward.").setVersion(1_17_11_0); + addNodeObject(animation, "Frame Index", "Node_Counter", [1, Node_Counter], "Output current frame as frame index, or animation progress (0 - 1).").setTags(["current frame", "counter"]); + addNodeObject(animation, "Rate Remap", "Node_Rate_Remap", [1, Node_Rate_Remap], "Remap animation to a new framerate.").setVersion(1147); + addNodeObject(animation, "Delay", "Node_Delay", [1, Node_Delay], "Delay the animation by fix amount of frames.").setVersion(11640); + addNodeObject(animation, "Stagger", "Node_Stagger", [1, Node_Stagger], "Delay the animation based on array index.").setVersion(11640); + addNodeObject(animation, "Reverse", "Node_Revert", [1, Node_Revert], "Cache the entire animation and replay backward.").setVersion(1_17_11_0); ds_list_add(animation, "Value"); - addNodeObject(animation, "Evaluate Curve",, "Node_Anim_Curve", [1, Node_Anim_Curve],, "Evaluate value from an animation curve."); - addNodeObject(animation, "WaveTable",, "Node_Fn_WaveTable", [1, Node_Fn_WaveTable],, "Create value changing overtime in wave pattern.").setVersion(11720); - addNodeObject(animation, "Wiggler",, "Node_Wiggler", [1, Node_Wiggler],, "Create random value smoothly changing over time."); - addNodeObject(animation, "Ease",, "Node_Fn_Ease", [1, Node_Fn_Ease],, "Create easing function.").setVersion(11720); - addNodeObject(animation, "Math",, "Node_Fn_Math", [1, Node_Fn_Math],, "Apply mathematic operation of wave value.").setVersion(11720); - addNodeObject(animation, "SmoothStep",, "Node_Fn_SmoothStep", [1, Node_Fn_SmoothStep],, "Apply smoothstop function to a value.").setVersion(11720); + addNodeObject(animation, "Evaluate Curve", "Node_Anim_Curve", [1, Node_Anim_Curve], "Evaluate value from an animation curve."); + addNodeObject(animation, "WaveTable", "Node_Fn_WaveTable", [1, Node_Fn_WaveTable], "Create value changing overtime in wave pattern.").setVersion(11720); + addNodeObject(animation, "Wiggler", "Node_Wiggler", [1, Node_Wiggler], "Create random value smoothly changing over time."); + addNodeObject(animation, "Ease", "Node_Fn_Ease", [1, Node_Fn_Ease], "Create easing function.").setVersion(11720); + addNodeObject(animation, "Math", "Node_Fn_Math", [1, Node_Fn_Math], "Apply mathematic operation of wave value.").setVersion(11720); + addNodeObject(animation, "SmoothStep", "Node_Fn_SmoothStep", [1, Node_Fn_SmoothStep], "Apply smoothstop function to a value.").setVersion(11720); ds_list_add(animation, "Audio"); ds_list_add(animation, "/Files"); - addNodeObject(animation, "WAV File In",, "Node_WAV_File_Read", [0, Node_create_WAV_File_Read],, "Load wav audio file.").setVersion(1144); - addNodeObject(animation, "WAV File Out",, "Node_WAV_File_Write", [1, Node_WAV_File_Write],, "Save wav audio file.").setVersion(1145); + addNodeObject(animation, "WAV File In", "Node_WAV_File_Read", [0, Node_create_WAV_File_Read], "Load wav audio file.").setVersion(1144); + addNodeObject(animation, "WAV File Out", "Node_WAV_File_Write", [1, Node_WAV_File_Write], "Save wav audio file.").setVersion(1145); ds_list_add(animation, "/Analyzers"); - addNodeObject(animation, "Audio Window",, "Node_Audio_Window", [1, Node_Audio_Window],, "Take a slice of an audio array based on the current frame.").setVersion(1144); - addNodeObject(animation, "Audio Volume",, "Node_Audio_Loudness", [1, Node_Audio_Loudness],, "Calculate volume of an audio bit array.").setVersion(11540); - addNodeObject(animation, "FFT",, "Node_FFT", [1, Node_FFT], ["frequency analysis"], "Perform fourier transform on number array.").setVersion(1144); + addNodeObject(animation, "Audio Window", "Node_Audio_Window", [1, Node_Audio_Window], "Take a slice of an audio array based on the current frame.").setVersion(1144); + addNodeObject(animation, "Audio Volume", "Node_Audio_Loudness", [1, Node_Audio_Loudness], "Calculate volume of an audio bit array.").setVersion(11540); + addNodeObject(animation, "FFT", "Node_FFT", [1, Node_FFT], "Perform fourier transform on number array.").setTags(["frequency analysis"]).setVersion(1144); ds_list_add(animation, "/Renders"); - addNodeObject(animation, "Bar / Graph",, "Node_Plot_Linear", [0, Node_create_Plot_Linear], global.node_plot_linear_keys, "Plot graph or bar chart from array of number.").setVersion(1144); + addNodeObject(animation, "Bar / Graph", "Node_Plot_Linear", [0, Node_create_Plot_Linear], "Plot graph or bar chart from array of number.").setTags(global.node_plot_linear_keys).setVersion(1144); #endregion #region misc var node = ds_list_create(); addNodeCatagory("Misc", node); ds_list_add(node, "Control"); - addNodeObject(node, "Condition",, "Node_Condition", [1, Node_Condition],, "Output value based on conditions."); - addNodeObject(node, "Switch",, "Node_Switch", [1, Node_Switch],, "Output value based on index.").setVersion(1090); - addNodeObject(node, "Animation Control",, "Node_Animation_Control", [1, Node_Animation_Control],, "Control animation state with triggers.").setVersion(1145); + addNodeObject(node, "Condition", "Node_Condition", [1, Node_Condition], "Output value based on conditions."); + addNodeObject(node, "Switch", "Node_Switch", [1, Node_Switch], "Output value based on index.").setVersion(1090); + addNodeObject(node, "Animation Control", "Node_Animation_Control", [1, Node_Animation_Control], "Control animation state with triggers.").setVersion(1145); ds_list_add(node, "Groups"); - addNodeObject(node, "Group",, "Node_Group", [1, Node_Group]); - addNodeObject(node, "Feedback",, "Node_Feedback", [1, Node_Feedback],, "Create a group that reuse output from last frame to the current one.").isDeprecated(); - addNodeObject(node, "Loop",, "Node_Iterate", [1, Node_Iterate], ["iterate", "for"], "Create group that reuse output as input repeatedly in one frame.").isDeprecated(); - addNodeObject(node, "Loop Array", s_node_loop_array, "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], ["iterate each", "for each", "array loop"], "Create group that iterate to each member in an array."); - addNodeObject(node, "Filter Array", s_node_filter_array, "Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline],, "Filter array using condition.").setVersion(1140); + addNodeObject(node, "Group", "Node_Group", [1, Node_Group]); + addNodeObject(node, "Feedback", "Node_Feedback", [1, Node_Feedback], "Create a group that reuse output from last frame to the current one.").isDeprecated(); + addNodeObject(node, "Loop", "Node_Iterate", [1, Node_Iterate], "Create group that reuse output as input repeatedly in one frame.").isDeprecated(); + addNodeObject(node, "Loop Array", "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], "Create group that iterate to each member in an array.").setSpr(s_node_loop_array).setTags(["iterate each", "for each", "array loop"]); + addNodeObject(node, "Filter Array","Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline], "Filter array using condition.").setSpr(s_node_filter_array).setVersion(1140); if(OS == os_windows) { ds_list_add(node, "Lua"); - addNodeObject(node, "Lua Global",, "Node_Lua_Global", [1, Node_Lua_Global],, "Execute lua script in global scope without returning any data.").setVersion(1090); - addNodeObject(node, "Lua Surface",, "Node_Lua_Surface", [1, Node_Lua_Surface],, "Execute lua script on a surface.").setVersion(1090); - addNodeObject(node, "Lua Compute",, "Node_Lua_Compute", [1, Node_Lua_Compute],, "Execute lua function and returns a data.").setVersion(1090); + addNodeObject(node, "Lua Global", "Node_Lua_Global", [1, Node_Lua_Global], "Execute lua script in global scope without returning any data.").setVersion(1090); + addNodeObject(node, "Lua Surface", "Node_Lua_Surface", [1, Node_Lua_Surface], "Execute lua script on a surface.").setVersion(1090); + addNodeObject(node, "Lua Compute", "Node_Lua_Compute", [1, Node_Lua_Compute], "Execute lua function and returns a data.").setVersion(1090); ds_list_add(node, "Shader"); - addNodeObject(node, "HLSL",, "Node_HLSL", [1, Node_HLSL],, "Execute HLSL shader on a surface.").setVersion(11520); + addNodeObject(node, "HLSL", "Node_HLSL", [1, Node_HLSL], "Execute HLSL shader on a surface.").setVersion(11520); } ds_list_add(node, "Organize"); - addNodeObject(node, "Pin",, "Node_Pin", [1, Node_Pin],, "Create a pin to organize your connection. Can be create by double clicking on a connection line."); - addNodeObject(node, "Array Pin",, "Node_Array_Pin", [1, Node_Array_Pin],, "Create a pin that can receive multiple values and return an array.").setVersion(11770); - addNodeObject(node, "Frame",, "Node_Frame", [1, Node_Frame],, "Create frame surrounding nodes."); - addNodeObject(node, "Tunnel In",, "Node_Tunnel_In", [1, Node_Tunnel_In],, "Create tunnel for sending value based on key matching."); - addNodeObject(node, "Tunnel Out",, "Node_Tunnel_Out", [1, Node_Tunnel_Out],, "Receive value from tunnel in of the same key."); - addNodeObject(node, "Display Text",, "Node_Display_Text", [1, Node_Display_Text],, "Display text on the graph."); - addNodeObject(node, "Display Image", s_node_image, "Node_Display_Image", [0, Node_create_Display_Image],, "Display image on the graph."); + addNodeObject(node, "Pin", "Node_Pin", [1, Node_Pin], "Create a pin to organize your connection. Can be create by double clicking on a connection line."); + addNodeObject(node, "Array Pin", "Node_Array_Pin", [1, Node_Array_Pin], "Create a pin that can receive multiple values and return an array.").setVersion(11770); + addNodeObject(node, "Frame", "Node_Frame", [1, Node_Frame], "Create frame surrounding nodes."); + addNodeObject(node, "Tunnel In", "Node_Tunnel_In", [1, Node_Tunnel_In], "Create tunnel for sending value based on key matching."); + addNodeObject(node, "Tunnel Out", "Node_Tunnel_Out", [1, Node_Tunnel_Out], "Receive value from tunnel in of the same key."); + addNodeObject(node, "Display Text", "Node_Display_Text", [1, Node_Display_Text], "Display text on the graph."); + addNodeObject(node, "Display Image", "Node_Display_Image", [0, Node_create_Display_Image], "Display image on the graph.").setSpr(s_node_image); ds_list_add(node, "Cache"); - addNodeObject(node, "Cache",, "Node_Cache", [1, Node_Cache],, "Store current animation. Cache persisted between save.").setVersion(1134); - addNodeObject(node, "Cache Array",, "Node_Cache_Array", [1, Node_Cache_Array],, "Store current animation as array. Cache persisted between save.").setVersion(1130); + addNodeObject(node, "Cache", "Node_Cache", [1, Node_Cache], "Store current animation. Cache persisted between save.").setVersion(1134); + addNodeObject(node, "Cache Array", "Node_Cache_Array", [1, Node_Cache_Array], "Store current animation as array. Cache persisted between save.").setVersion(1130); ds_list_add(node, "Debug"); - addNodeObject(node, "Print",, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145); - addNodeObject(node, "Widget Test", s_node_print, "Node_Widget_Test", [1, Node_Widget_Test]); - addNodeObject(node, "Graph Preview", s_node_image, "Node_Graph_Preview", [1, Node_Graph_Preview]); - addNodeObject(node, "Slideshow", s_node_image, "Node_Slideshow", [1, Node_Slideshow]); + addNodeObject(node, "Print", "Node_Print", [1, Node_Print], "Display text to notification.").setTags(["debug log"]).setVersion(1145); + addNodeObject(node, "Widget Test", "Node_Widget_Test", [1, Node_Widget_Test]).setSpr(s_node_print); + addNodeObject(node, "Graph Preview", "Node_Graph_Preview", [1, Node_Graph_Preview]).setSpr(s_node_image); + addNodeObject(node, "Slideshow", "Node_Slideshow", [1, Node_Slideshow]).setSpr(s_node_image); //addNodeObject(node, "Module Test", s_node_print, "Node_Module_Test", [1, Node_Module_Test]); ds_list_add(node, "Project"); - addNodeObject(node, "Project Data",, "Node_Project_Data", [1, Node_Project_Data]).setVersion(11650); + addNodeObject(node, "Project Data", "Node_Project_Data", [1, Node_Project_Data]).setVersion(11650); ds_list_add(node, "System"); - addNodeObject(node, "Argument",, "Node_Argument", [1, Node_Argument]).setVersion(11660); - addNodeObject(node, "Terminal trigger",, "Node_Terminal_Trigger", [1, Node_Terminal_Trigger]).setVersion(11660); - addNodeObject(node, "Execute Shell",, "Node_Shell", [1, Node_Shell], ["terminal", "execute", "run"], "Execute shell script.").setVersion(11530); - addNodeObject(node, "Monitor Capture",, "Node_Monitor_Capture", [1, Node_Monitor_Capture]).notTest(); - addNodeObject(node, "GUI In", s_node_gui_in, "Node_Application_In", [1, Node_Application_In]).notTest(); - addNodeObject(node, "GUI Out", s_node_gui_out, "Node_Application_Out", [1, Node_Application_Out]).notTest(); - addNodeObject(node, "Assert", s_node_shell, "Node_Assert", [1, Node_Assert]); + addNodeObject(node, "Argument", "Node_Argument", [1, Node_Argument]).setVersion(11660); + addNodeObject(node, "Terminal trigger", "Node_Terminal_Trigger", [1, Node_Terminal_Trigger]).setVersion(11660); + addNodeObject(node, "Execute Shell", "Node_Shell", [1, Node_Shell], "Execute shell script.").setTags(["terminal", "execute", "run", "console"]).setVersion(11530); + addNodeObject(node, "Monitor Capture", "Node_Monitor_Capture", [1, Node_Monitor_Capture]).notTest(); + addNodeObject(node, "GUI In", "Node_Application_In", [1, Node_Application_In]).setSpr(s_node_gui_in).notTest(); + addNodeObject(node, "GUI Out", "Node_Application_Out", [1, Node_Application_Out]).setSpr(s_node_gui_out).notTest(); + addNodeObject(node, "Assert", "Node_Assert", [1, Node_Assert]).setSpr(s_node_shell); // addNodeObject(node, "DLL", s_node_gui_out, "Node_DLL", [1, Node_DLL]).setVersion(11750); #endregion @@ -1234,108 +1234,108 @@ function __initNodes() { var pb_group = ds_list_create(); addNodePBCatagory("Group", pb_group); //#PB Group ds_list_add(pb_group, "Groups"); - addNodeObject(pb_group, "Input",, "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); - addNodeObject(pb_group, "Output",, "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); + addNodeObject(pb_group, "Input", "Node_Group_Input", [1, Node_Group_Input]).hideRecent(); + addNodeObject(pb_group, "Output", "Node_Group_Output", [1, Node_Group_Output]).hideRecent(); #endregion #region pb_draw var pb_draw = ds_list_create(); addNodePBCatagory("Draw", pb_draw); //#PB Draw ds_list_add(pb_draw, "Fill"); - addNodeObject(pb_draw, "Fill",, "Node_PB_Draw_Fill", [1, Node_PB_Draw_Fill]).hideRecent(); + addNodeObject(pb_draw, "Fill", "Node_PB_Draw_Fill", [1, Node_PB_Draw_Fill]).hideRecent(); ds_list_add(pb_draw, "Shape"); - addNodeObject(pb_draw, "Rectangle",, "Node_PB_Draw_Rectangle", [1, Node_PB_Draw_Rectangle]).hideRecent(); - addNodeObject(pb_draw, "Round Rectangle",, "Node_PB_Draw_Round_Rectangle", [1, Node_PB_Draw_Round_Rectangle]).hideRecent(); - addNodeObject(pb_draw, "Trapezoid",, "Node_PB_Draw_Trapezoid", [1, Node_PB_Draw_Trapezoid]).hideRecent(); - addNodeObject(pb_draw, "Diamond",, "Node_PB_Draw_Diamond", [1, Node_PB_Draw_Diamond]).hideRecent(); - addNodeObject(pb_draw, "Ellipse",, "Node_PB_Draw_Ellipse", [1, Node_PB_Draw_Ellipse]).hideRecent(); - addNodeObject(pb_draw, "Semi-Ellipse",, "Node_PB_Draw_Semi_Ellipse", [1, Node_PB_Draw_Semi_Ellipse]).hideRecent(); - addNodeObject(pb_draw, "Line",, "Node_PB_Draw_Line", [1, Node_PB_Draw_Line]).hideRecent(); - addNodeObject(pb_draw, "Angle",, "Node_PB_Draw_Angle", [1, Node_PB_Draw_Angle]).hideRecent(); - addNodeObject(pb_draw, "Blob",, "Node_PB_Draw_Blob", [1, Node_PB_Draw_Blob]).hideRecent(); + addNodeObject(pb_draw, "Rectangle", "Node_PB_Draw_Rectangle", [1, Node_PB_Draw_Rectangle]).hideRecent(); + addNodeObject(pb_draw, "Round Rectangle", "Node_PB_Draw_Round_Rectangle", [1, Node_PB_Draw_Round_Rectangle]).hideRecent(); + addNodeObject(pb_draw, "Trapezoid", "Node_PB_Draw_Trapezoid", [1, Node_PB_Draw_Trapezoid]).hideRecent(); + addNodeObject(pb_draw, "Diamond", "Node_PB_Draw_Diamond", [1, Node_PB_Draw_Diamond]).hideRecent(); + addNodeObject(pb_draw, "Ellipse", "Node_PB_Draw_Ellipse", [1, Node_PB_Draw_Ellipse]).hideRecent(); + addNodeObject(pb_draw, "Semi-Ellipse", "Node_PB_Draw_Semi_Ellipse", [1, Node_PB_Draw_Semi_Ellipse]).hideRecent(); + addNodeObject(pb_draw, "Line", "Node_PB_Draw_Line", [1, Node_PB_Draw_Line]).hideRecent(); + addNodeObject(pb_draw, "Angle", "Node_PB_Draw_Angle", [1, Node_PB_Draw_Angle]).hideRecent(); + addNodeObject(pb_draw, "Blob", "Node_PB_Draw_Blob", [1, Node_PB_Draw_Blob]).hideRecent(); #endregion #region pb_box var pb_box = ds_list_create(); addNodePBCatagory("Box", pb_box); //#PB Box ds_list_add(pb_box, "Layer"); - addNodeObject(pb_box, "Layer",, "Node_PB_Layer", [1, Node_PB_Layer]).hideRecent(); + addNodeObject(pb_box, "Layer", "Node_PB_Layer", [1, Node_PB_Layer]).hideRecent(); ds_list_add(pb_box, "Box"); - addNodeObject(pb_box, "Transform",, "Node_PB_Box_Transform", [1, Node_PB_Box_Transform]).hideRecent(); - addNodeObject(pb_box, "Mirror",, "Node_PB_Box_Mirror", [1, Node_PB_Box_Mirror]).hideRecent(); - addNodeObject(pb_box, "Inset",, "Node_PB_Box_Inset", [1, Node_PB_Box_Inset]).hideRecent(); - addNodeObject(pb_box, "Split",, "Node_PB_Box_Split", [1, Node_PB_Box_Split]).hideRecent(); - addNodeObject(pb_box, "Divide",, "Node_PB_Box_Divide", [1, Node_PB_Box_Divide]).hideRecent(); - addNodeObject(pb_box, "Divide Grid",, "Node_PB_Box_Divide_Grid", [1, Node_PB_Box_Divide_Grid]).hideRecent(); - addNodeObject(pb_box, "Contract",, "Node_PB_Box_Contract", [1, Node_PB_Box_Contract]).hideRecent(); + addNodeObject(pb_box, "Transform", "Node_PB_Box_Transform", [1, Node_PB_Box_Transform]).hideRecent(); + addNodeObject(pb_box, "Mirror", "Node_PB_Box_Mirror", [1, Node_PB_Box_Mirror]).hideRecent(); + addNodeObject(pb_box, "Inset", "Node_PB_Box_Inset", [1, Node_PB_Box_Inset]).hideRecent(); + addNodeObject(pb_box, "Split", "Node_PB_Box_Split", [1, Node_PB_Box_Split]).hideRecent(); + addNodeObject(pb_box, "Divide", "Node_PB_Box_Divide", [1, Node_PB_Box_Divide]).hideRecent(); + addNodeObject(pb_box, "Divide Grid", "Node_PB_Box_Divide_Grid", [1, Node_PB_Box_Divide_Grid]).hideRecent(); + addNodeObject(pb_box, "Contract", "Node_PB_Box_Contract", [1, Node_PB_Box_Contract]).hideRecent(); #endregion #region pb_fx var pb_fx = ds_list_create(); addNodePBCatagory("Effects", pb_fx); //#PB Effects ds_list_add(pb_fx, "Effect"); - addNodeObject(pb_fx, "Outline",, "Node_PB_Fx_Outline", [1, Node_PB_Fx_Outline]).hideRecent(); - addNodeObject(pb_fx, "Stack",, "Node_PB_Fx_Stack", [1, Node_PB_Fx_Stack]).hideRecent(); - addNodeObject(pb_fx, "Radial",, "Node_PB_Fx_Radial", [1, Node_PB_Fx_Radial]).hideRecent(); + addNodeObject(pb_fx, "Outline", "Node_PB_Fx_Outline", [1, Node_PB_Fx_Outline]).hideRecent(); + addNodeObject(pb_fx, "Stack", "Node_PB_Fx_Stack", [1, Node_PB_Fx_Stack]).hideRecent(); + addNodeObject(pb_fx, "Radial", "Node_PB_Fx_Radial", [1, Node_PB_Fx_Radial]).hideRecent(); ds_list_add(pb_fx, "Lighting"); - addNodeObject(pb_fx, "Highlight",, "Node_PB_Fx_Highlight", [1, Node_PB_Fx_Highlight]).hideRecent(); - addNodeObject(pb_fx, "Shading",, "Node_PB_Fx_Shading", [1, Node_PB_Fx_Shading]).hideRecent(); + addNodeObject(pb_fx, "Highlight", "Node_PB_Fx_Highlight", [1, Node_PB_Fx_Highlight]).hideRecent(); + addNodeObject(pb_fx, "Shading", "Node_PB_Fx_Shading", [1, Node_PB_Fx_Shading]).hideRecent(); ds_list_add(pb_fx, "Texture"); - addNodeObject(pb_fx, "Hashing",, "Node_PB_Fx_Hash", [1, Node_PB_Fx_Hash]).hideRecent(); - addNodeObject(pb_fx, "Strip",, "Node_PB_Fx_Strip", [1, Node_PB_Fx_Strip]).hideRecent(); - addNodeObject(pb_fx, "Brick",, "Node_PB_Fx_Brick", [1, Node_PB_Fx_Brick]).hideRecent(); + addNodeObject(pb_fx, "Hashing", "Node_PB_Fx_Hash", [1, Node_PB_Fx_Hash]).hideRecent(); + addNodeObject(pb_fx, "Strip", "Node_PB_Fx_Strip", [1, Node_PB_Fx_Strip]).hideRecent(); + addNodeObject(pb_fx, "Brick", "Node_PB_Fx_Brick", [1, Node_PB_Fx_Brick]).hideRecent(); ds_list_add(pb_fx, "Blend"); - addNodeObject(pb_fx, "Add",, "Node_PB_Fx_Add", [1, Node_PB_Fx_Add]).hideRecent(); - addNodeObject(pb_fx, "Subtract",, "Node_PB_Fx_Subtract", [1, Node_PB_Fx_Subtract]).hideRecent(); - addNodeObject(pb_fx, "Intersect",, "Node_PB_Fx_Intersect", [1, Node_PB_Fx_Intersect]).hideRecent(); + addNodeObject(pb_fx, "Add", "Node_PB_Fx_Add", [1, Node_PB_Fx_Add]).hideRecent(); + addNodeObject(pb_fx, "Subtract", "Node_PB_Fx_Subtract", [1, Node_PB_Fx_Subtract]).hideRecent(); + addNodeObject(pb_fx, "Intersect", "Node_PB_Fx_Intersect", [1, Node_PB_Fx_Intersect]).hideRecent(); #endregion #region pb_arr var pb_arr = ds_list_create(); addNodePBCatagory("Array", pb_arr); //#PB Array - addNodeObject(pb_arr, "Array",, "Node_Array", [1, Node_Array]).hideRecent(); - addNodeObject(pb_arr, "Array Get",, "Node_Array_Get", [1, Node_Array_Get], ["get array"]).hideRecent(); - addNodeObject(pb_arr, "Array Set",, "Node_Array_Set", [1, Node_Array_Set], ["set array"]).hideRecent().setVersion(1120); - addNodeObject(pb_arr, "Array Insert",, "Node_Array_Insert", [1, Node_Array_Insert], ["insert array"]).hideRecent().setVersion(1120); - addNodeObject(pb_arr, "Array Remove",, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).hideRecent().setVersion(1120); + addNodeObject(pb_arr, "Array", "Node_Array", [1, Node_Array]).hideRecent(); + addNodeObject(pb_arr, "Array Get", "Node_Array_Get", [1, Node_Array_Get]).setTags(["get array"]).hideRecent(); + addNodeObject(pb_arr, "Array Set", "Node_Array_Set", [1, Node_Array_Set]).setTags(["set array"]).hideRecent().setVersion(1120); + addNodeObject(pb_arr, "Array Insert", "Node_Array_Insert", [1, Node_Array_Insert]).setTags(["insert array"]).hideRecent().setVersion(1120); + addNodeObject(pb_arr, "Array Remove", "Node_Array_Remove", [1, Node_Array_Remove]).setTags(["remove array", "delete array", "array delete"]).hideRecent().setVersion(1120); #endregion /////////////////////////////////////////////////////////////// PCX NODE /////////////////////////////////////////////////////////////// #region pcx_var var pcx_var = ds_list_create(); - addNodePCXCatagory("Variable", pcx_var); //#PCX Variable - addNodeObject(pcx_var, "Variable", s_node_array, "Node_PCX_var", [1, Node_PCX_var]).hideRecent(); - addNodeObject(pcx_var, "Fn Variable", s_node_array, "Node_PCX_fn_var", [1, Node_PCX_fn_var]).hideRecent(); + addNodePCXCatagory("Variable", pcx_var); + addNodeObject(pcx_var, "Variable", "Node_PCX_var", [1, Node_PCX_var]).setSpr(s_node_array).hideRecent(); + addNodeObject(pcx_var, "Fn Variable", "Node_PCX_fn_var", [1, Node_PCX_fn_var]).setSpr(s_node_array).hideRecent(); #endregion #region pcx_fn var pcx_fn = ds_list_create(); - addNodePCXCatagory("Functions", pcx_fn); //#PCX Functions - addNodeObject(pcx_fn, "Equation", s_node_array, "Node_PCX_Equation", [1, Node_PCX_Equation]).hideRecent(); + addNodePCXCatagory("Functions", pcx_fn); + addNodeObject(pcx_fn, "Equation", "Node_PCX_Equation", [1, Node_PCX_Equation]).setSpr(s_node_array).hideRecent(); ds_list_add(pcx_fn, "Numbers"); - addNodeObject(pcx_fn, "Math", s_node_array, "Node_PCX_fn_Math", [1, Node_PCX_fn_Math]).hideRecent(); - addNodeObject(pcx_fn, "Random", s_node_array, "Node_PCX_fn_Random", [1, Node_PCX_fn_Random]).hideRecent(); + addNodeObject(pcx_fn, "Math", "Node_PCX_fn_Math", [1, Node_PCX_fn_Math]).setSpr(s_node_array).hideRecent(); + addNodeObject(pcx_fn, "Random", "Node_PCX_fn_Random", [1, Node_PCX_fn_Random]).setSpr(s_node_array).hideRecent(); ds_list_add(pcx_fn, "Surface"); - addNodeObject(pcx_fn, "Surface Width", s_node_array, "Node_PCX_fn_Surface_Width", [1, Node_PCX_fn_Surface_Width]).hideRecent(); - addNodeObject(pcx_fn, "Surface Height", s_node_array, "Node_PCX_fn_Surface_Height", [1, Node_PCX_fn_Surface_Height]).hideRecent(); + addNodeObject(pcx_fn, "Surface Width", "Node_PCX_fn_Surface_Width", [1, Node_PCX_fn_Surface_Width]).setSpr(s_node_array).hideRecent(); + addNodeObject(pcx_fn, "Surface Height", "Node_PCX_fn_Surface_Height", [1, Node_PCX_fn_Surface_Height]).setSpr(s_node_array).hideRecent(); ds_list_add(pcx_fn, "Array"); - addNodeObject(pcx_fn, "Array Get", s_node_array, "Node_PCX_Array_Get", [1, Node_PCX_Array_Get]).hideRecent(); - addNodeObject(pcx_fn, "Array Set", s_node_array, "Node_PCX_Array_Set", [1, Node_PCX_Array_Set]).hideRecent(); + addNodeObject(pcx_fn, "Array Get", "Node_PCX_Array_Get", [1, Node_PCX_Array_Get]).setSpr(s_node_array).hideRecent(); + addNodeObject(pcx_fn, "Array Set", "Node_PCX_Array_Set", [1, Node_PCX_Array_Set]).setSpr(s_node_array).hideRecent(); #endregion #region pcx_flow var pcx_flow = ds_list_create(); - addNodePCXCatagory("Flow Control", pcx_flow); //#PCX flow control - addNodeObject(pcx_flow, "Condition", s_node_array, "Node_PCX_Condition", [1, Node_PCX_Condition]).hideRecent(); + addNodePCXCatagory("Flow Control", pcx_flow); + addNodeObject(pcx_flow, "Condition", "Node_PCX_Condition", [1, Node_PCX_Condition]).setSpr(s_node_array).hideRecent(); #endregion //////////////////////////////////////////////////////////////// HIDDEN //////////////////////////////////////////////////////////////// @@ -1343,38 +1343,38 @@ function __initNodes() { #region hid var hid = ds_list_create(); addNodeCatagory("Hidden", hid, ["Hidden"]); - addNodeObject(hid, "Input", s_node_loop_input, "Node_Iterator_Each_Input", [1, Node_Iterator_Each_Input]).hideRecent(); - addNodeObject(hid, "Output", s_node_loop_output, "Node_Iterator_Each_Output", [1, Node_Iterator_Each_Output]).hideRecent(); - addNodeObject(hid, "Input", s_node_loop_input, "Node_Iterator_Filter_Input", [1, Node_Iterator_Filter_Input]).hideRecent(); - addNodeObject(hid, "Output", s_node_loop_output, "Node_Iterator_Filter_Output", [1, Node_Iterator_Filter_Output]).hideRecent(); - addNodeObject(hid, "Grid Noise",, "Node_Grid_Noise", [1, Node_Grid_Noise]).hideRecent(); - addNodeObject(hid, "Triangular Noise", s_node_grid_tri_noise, "Node_Noise_Tri", [1, Node_Noise_Tri]).hideRecent().setVersion(1090); - addNodeObject(hid, "Hexagonal Noise", s_node_grid_hex_noise, "Node_Noise_Hex", [1, Node_Noise_Hex]).hideRecent().setVersion(1090); - addNodeObject(hid, "Sort Input", s_node_grid_hex_noise, "Node_Iterator_Sort_Input", [1, Node_Iterator_Sort_Input]).hideRecent(); - addNodeObject(hid, "Sort Output", s_node_grid_hex_noise, "Node_Iterator_Sort_Output", [1, Node_Iterator_Sort_Output]).hideRecent(); - addNodeObject(hid, "Onion Skin", s_node_cache, "Node_Onion_Skin", [1, Node_Onion_Skin]).setVersion(1147).hideRecent(); - addNodeObject(hid, "RigidSim", s_node_rigid, "Node_Rigid_Group", [1, Node_Rigid_Group],, "Create group for rigidbody simulation.").setVersion(1110).hideRecent(); - addNodeObject(hid, "SmokeSim", s_node_smoke_group, "Node_Smoke_Group", [1, Node_Smoke_Group],, "Create group for fluid simulation.").setVersion(1120).hideRecent(); - addNodeObject(hid, "StrandSim", s_node_strand, "Node_Strand_Group", [1, Node_Strand_Group], ["Hair"], "Create group for hair simulation.").setVersion(1140).hideRecent(); - addNodeObject(hid, "Feedback", s_node_feedback, "Node_Feedback_Inline", [1, Node_Feedback_Inline]).hideRecent(); - addNodeObject(hid, "Loop", s_node_iterate, "Node_Iterate_Inline", [1, Node_Iterate_Inline]).hideRecent(); - addNodeObject(hid, "VFX", s_node_vfx, "Node_VFX_Group", [1, Node_VFX_Group]).hideRecent(); + addNodeObject(hid, "Input", "Node_Iterator_Each_Input", [1, Node_Iterator_Each_Input]).setSpr(s_node_loop_input).hideRecent(); + addNodeObject(hid, "Output", "Node_Iterator_Each_Output", [1, Node_Iterator_Each_Output]).setSpr(s_node_loop_output).hideRecent(); + addNodeObject(hid, "Input", "Node_Iterator_Filter_Input", [1, Node_Iterator_Filter_Input]).setSpr(s_node_loop_input).hideRecent(); + addNodeObject(hid, "Output", "Node_Iterator_Filter_Output", [1, Node_Iterator_Filter_Output]).setSpr(s_node_loop_output).hideRecent(); + addNodeObject(hid, "Grid Noise", "Node_Grid_Noise", [1, Node_Grid_Noise]).hideRecent(); + addNodeObject(hid, "Triangular Noise", "Node_Noise_Tri", [1, Node_Noise_Tri]).setSpr(s_node_grid_tri_noise).hideRecent().setVersion(1090); + addNodeObject(hid, "Hexagonal Noise", "Node_Noise_Hex", [1, Node_Noise_Hex]).setSpr(s_node_grid_hex_noise).hideRecent().setVersion(1090); + addNodeObject(hid, "Sort Input", "Node_Iterator_Sort_Input", [1, Node_Iterator_Sort_Input]).setSpr(s_node_grid_hex_noise).hideRecent(); + addNodeObject(hid, "Sort Output", "Node_Iterator_Sort_Output", [1, Node_Iterator_Sort_Output]).setSpr(s_node_grid_hex_noise).hideRecent(); + addNodeObject(hid, "Onion Skin", "Node_Onion_Skin", [1, Node_Onion_Skin]).setSpr(s_node_cache).setVersion(1147).hideRecent(); + addNodeObject(hid, "RigidSim", "Node_Rigid_Group", [1, Node_Rigid_Group], "Create group for rigidbody simulation.").setSpr(s_node_rigid).setVersion(1110).hideRecent(); + addNodeObject(hid, "SmokeSim", "Node_Smoke_Group", [1, Node_Smoke_Group], "Create group for fluid simulation.").setSpr(s_node_smoke_group).setVersion(1120).hideRecent(); + addNodeObject(hid, "StrandSim", "Node_Strand_Group", [1, Node_Strand_Group], "Create group for hair simulation.").setSpr(s_node_strand).setVersion(1140).hideRecent(); + addNodeObject(hid, "Feedback", "Node_Feedback_Inline", [1, Node_Feedback_Inline]).setSpr(s_node_feedback).hideRecent(); + addNodeObject(hid, "Loop", "Node_Iterate_Inline", [1, Node_Iterate_Inline]).setSpr(s_node_iterate).hideRecent(); + addNodeObject(hid, "VFX", "Node_VFX_Group", [1, Node_VFX_Group]).setSpr(s_node_vfx).hideRecent(); - addNodeObject(hid, "Loop Array", s_node_loop_array, "Node_Iterate_Each", [1, Node_Iterate_Each]).hideRecent(); - addNodeObject(hid, "Loop Input", s_node_loop_array, "Node_Iterator_Each_Inline_Input", [1, Node_Iterator_Each_Inline_Input]).hideRecent(); - addNodeObject(hid, "Loop Output", s_node_loop_array, "Node_Iterator_Each_Inline_Output", [1, Node_Iterator_Each_Inline_Output]).hideRecent(); - addNodeObject(hid, "Filter Array", s_node_filter_array, "Node_Iterate_Filter", [1, Node_Iterate_Filter],, "Filter array using condition.").hideRecent(); - addNodeObject(hid, "Filter Input", s_node_filter_array, "Node_Iterator_Filter_Inline_Input", [1, Node_Iterator_Filter_Inline_Input]).hideRecent(); - addNodeObject(hid, "Filter Output", s_node_filter_array, "Node_Iterator_Filter_Inline_Output", [1, Node_Iterator_Filter_Inline_Output]).hideRecent(); - addNodeObject(hid, "Sort Array", s_node_sort_array, "Node_Iterate_Sort", [1, Node_Iterate_Sort],, "Sort array using node graph.").hideRecent(); - addNodeObject(hid, "Sort Input", s_node_sort_array, "Node_Iterator_Sort_Inline_Input", [1, Node_Iterator_Sort_Inline_Input]).hideRecent(); - addNodeObject(hid, "Sort Output", s_node_sort_array, "Node_Iterator_Sort_Inline_Output", [1, Node_Iterator_Sort_Inline_Output]).hideRecent(); + addNodeObject(hid, "Loop Array", "Node_Iterate_Each", [1, Node_Iterate_Each]).setSpr(s_node_loop_array).hideRecent(); + addNodeObject(hid, "Loop Input", "Node_Iterator_Each_Inline_Input", [1, Node_Iterator_Each_Inline_Input]).setSpr(s_node_loop_array).hideRecent(); + addNodeObject(hid, "Loop Output", "Node_Iterator_Each_Inline_Output", [1, Node_Iterator_Each_Inline_Output]).setSpr(s_node_loop_array).hideRecent(); + addNodeObject(hid, "Filter Array", "Node_Iterate_Filter", [1, Node_Iterate_Filter], "Filter array using condition.").setSpr(s_node_filter_array).hideRecent(); + addNodeObject(hid, "Filter Input", "Node_Iterator_Filter_Inline_Input", [1, Node_Iterator_Filter_Inline_Input]).setSpr(s_node_filter_array).hideRecent(); + addNodeObject(hid, "Filter Output", "Node_Iterator_Filter_Inline_Output", [1, Node_Iterator_Filter_Inline_Output]).setSpr(s_node_filter_array).hideRecent(); + addNodeObject(hid, "Sort Array", "Node_Iterate_Sort", [1, Node_Iterate_Sort], "Sort array using node graph.").setSpr(s_node_sort_array).hideRecent(); + addNodeObject(hid, "Sort Input", "Node_Iterator_Sort_Inline_Input", [1, Node_Iterator_Sort_Inline_Input]).setSpr(s_node_sort_array).hideRecent(); + addNodeObject(hid, "Sort Output", "Node_Iterator_Sort_Inline_Output", [1, Node_Iterator_Sort_Inline_Output]).setSpr(s_node_sort_array).hideRecent(); ds_list_add(hid, "DynaSurf"); - addNodeObject(hid, "Input", s_node_pixel_builder, "Node_DynaSurf_In", [1, Node_DynaSurf_In]).hideRecent(); - addNodeObject(hid, "Output", s_node_pixel_builder, "Node_DynaSurf_Out", [1, Node_DynaSurf_Out]).hideRecent(); - addNodeObject(hid, "getWidth", s_node_pixel_builder, "Node_DynaSurf_Out_Width", [1, Node_DynaSurf_Out_Width]).hideRecent(); - addNodeObject(hid, "getHeight", s_node_pixel_builder, "Node_DynaSurf_Out_Height", [1, Node_DynaSurf_Out_Height]).hideRecent(); + addNodeObject(hid, "Input", "Node_DynaSurf_In", [1, Node_DynaSurf_In]).setSpr(s_node_pixel_builder).hideRecent(); + addNodeObject(hid, "Output", "Node_DynaSurf_Out", [1, Node_DynaSurf_Out]).setSpr(s_node_pixel_builder).hideRecent(); + addNodeObject(hid, "getWidth", "Node_DynaSurf_Out_Width", [1, Node_DynaSurf_Out_Width]).setSpr(s_node_pixel_builder).hideRecent(); + addNodeObject(hid, "getHeight", "Node_DynaSurf_Out_Height", [1, Node_DynaSurf_Out_Height]).setSpr(s_node_pixel_builder).hideRecent(); #endregion } diff --git a/scripts/node_value_dimension/node_value_dimension.gml b/scripts/node_value_dimension/node_value_dimension.gml index 885b6aa3b..af4e16232 100644 --- a/scripts/node_value_dimension/node_value_dimension.gml +++ b/scripts/node_value_dimension/node_value_dimension.gml @@ -75,11 +75,4 @@ function __NodeValue_Dimension(_node, value) : NodeValue("Dimension", _node, CON return animator.getValue(_time); } - static showValue = function() { - if(attributes.use_project_dimension) - return PROJECT.attributes.surface_dimension; - - return __showValue(); - } - } \ No newline at end of file diff --git a/scripts/string_functions/string_functions.gml b/scripts/string_functions/string_functions.gml index afbe66571..907753bd3 100644 --- a/scripts/string_functions/string_functions.gml +++ b/scripts/string_functions/string_functions.gml @@ -136,6 +136,49 @@ function string_partial_match(str, key) { function string_partial_match_res(str, key, keys) { if(str == key) return [ 9999, array_create(string_length(str) + 1, 1) ]; + var lenn = string_length(str); + var lenm = string_length(key); + var runm = 1; + + var _minmat = -lenn * lenm; + var _matRng = array_create(string_length(str) + 1, 0); + var _mated = array_create(string_length(str) + 1, 0); + + while(runm <= lenm) { + var m = string_char_at(key, runm); + + var runn = 1; + var matc = -1; + while(runn <= lenn) { + var n = string_char_at(str, runn); + if(_mated[runn] == 0 && m == n) { + matc = runn; + _minmat += lenn - abs(runm - runn); + + if(runn > 1 && string_char_at(str, runn - 1) == " ") + _minmat += 2; + + _mated[runn] = 1; + _matRng[runn] = 1; + break; + } + runn++; + } + + if(matc == -1) { + _minmat = -9999; + break; + } + + runm++ + } + + return [ _minmat, _matRng ]; +} + +function __string_partial_match_res(str, key, keys) { + if(str == key) return [ 9999, array_create(string_length(str) + 1, 1) ]; + var _minmat = 9999; var _matRng = array_create(string_length(str) + 1, 0); diff --git a/shaders/sh_ani_noise/sh_ani_noise.yy b/shaders/sh_ani_noise/sh_ani_noise.yy index 3b248891f..dceebef4b 100644 --- a/shaders/sh_ani_noise/sh_ani_noise.yy +++ b/shaders/sh_ani_noise/sh_ani_noise.yy @@ -4,7 +4,7 @@ "name":"sh_ani_noise", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise/sh_noise.yy b/shaders/sh_noise/sh_noise.yy index 28c4e857f..c61961bb8 100644 --- a/shaders/sh_noise/sh_noise.yy +++ b/shaders/sh_noise/sh_noise.yy @@ -4,7 +4,7 @@ "name":"sh_noise", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.fsh b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.fsh new file mode 100644 index 000000000..e28a17897 --- /dev/null +++ b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.fsh @@ -0,0 +1,10 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord ); +} diff --git a/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.vsh b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy new file mode 100644 index 000000000..9f10ad91a --- /dev/null +++ b/shaders/sh_noise_blue_interpret/sh_noise_blue_interpret.yy @@ -0,0 +1,12 @@ +{ + "$GMShader":"", + "%Name":"sh_noise_blue_interpret", + "name":"sh_noise_blue_interpret", + "parent":{ + "name":"noise", + "path":"folders/shader/generator/noise.yy", + }, + "resourceType":"GMShader", + "resourceVersion":"2.0", + "type":1, +} \ No newline at end of file diff --git a/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.fsh b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.fsh new file mode 100644 index 000000000..6e1db6bd6 --- /dev/null +++ b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.fsh @@ -0,0 +1,6 @@ +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + gl_FragColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord); +} \ No newline at end of file diff --git a/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.vsh b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.vsh new file mode 100644 index 000000000..1a5ddfa49 --- /dev/null +++ b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.vsh @@ -0,0 +1,14 @@ +attribute vec3 in_Position; // (x, y, z) +attribute vec4 in_Colour; // (r, g, b, a) +attribute vec2 in_TextureCoord; // (u, v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + vec4 object_space_pos = vec4(in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} \ No newline at end of file diff --git a/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy new file mode 100644 index 000000000..f727d9f51 --- /dev/null +++ b/shaders/sh_noise_blue_iterate/sh_noise_blue_iterate.yy @@ -0,0 +1,12 @@ +{ + "$GMShader":"", + "%Name":"sh_noise_blue_iterate", + "name":"sh_noise_blue_iterate", + "parent":{ + "name":"noise", + "path":"folders/shader/generator/noise.yy", + }, + "resourceType":"GMShader", + "resourceVersion":"2.0", + "type":1, +} \ No newline at end of file diff --git a/shaders/sh_noise_bubble/sh_noise_bubble.yy b/shaders/sh_noise_bubble/sh_noise_bubble.yy index fb2d8586d..e19de5ba6 100644 --- a/shaders/sh_noise_bubble/sh_noise_bubble.yy +++ b/shaders/sh_noise_bubble/sh_noise_bubble.yy @@ -4,7 +4,7 @@ "name":"sh_noise_bubble", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_cristal/sh_noise_cristal.yy b/shaders/sh_noise_cristal/sh_noise_cristal.yy index 8cb477a51..a81a48308 100644 --- a/shaders/sh_noise_cristal/sh_noise_cristal.yy +++ b/shaders/sh_noise_cristal/sh_noise_cristal.yy @@ -4,7 +4,7 @@ "name":"sh_noise_cristal", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_fbm/sh_noise_fbm.yy b/shaders/sh_noise_fbm/sh_noise_fbm.yy index 25c06f8f0..3e5f37090 100644 --- a/shaders/sh_noise_fbm/sh_noise_fbm.yy +++ b/shaders/sh_noise_fbm/sh_noise_fbm.yy @@ -4,7 +4,7 @@ "name":"sh_noise_fbm", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_flow/sh_noise_flow.yy b/shaders/sh_noise_flow/sh_noise_flow.yy index 029a03aae..9e44ed5ad 100644 --- a/shaders/sh_noise_flow/sh_noise_flow.yy +++ b/shaders/sh_noise_flow/sh_noise_flow.yy @@ -4,7 +4,7 @@ "name":"sh_noise_flow", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_fold/sh_noise_fold.yy b/shaders/sh_noise_fold/sh_noise_fold.yy index 0fe5bf7ae..4672dd01c 100644 --- a/shaders/sh_noise_fold/sh_noise_fold.yy +++ b/shaders/sh_noise_fold/sh_noise_fold.yy @@ -4,7 +4,7 @@ "name":"sh_noise_fold", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_gabor/sh_noise_gabor.yy b/shaders/sh_noise_gabor/sh_noise_gabor.yy index 9c97c41c8..9a7984ebc 100644 --- a/shaders/sh_noise_gabor/sh_noise_gabor.yy +++ b/shaders/sh_noise_gabor/sh_noise_gabor.yy @@ -4,7 +4,7 @@ "name":"sh_noise_gabor", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy b/shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy index 8b3918e80..29975dc61 100644 --- a/shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy +++ b/shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy @@ -4,7 +4,7 @@ "name":"sh_noise_grid_hex", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_grid_tri/sh_noise_grid_tri.yy b/shaders/sh_noise_grid_tri/sh_noise_grid_tri.yy index 3abb38b81..5059639dd 100644 --- a/shaders/sh_noise_grid_tri/sh_noise_grid_tri.yy +++ b/shaders/sh_noise_grid_tri/sh_noise_grid_tri.yy @@ -4,7 +4,7 @@ "name":"sh_noise_grid_tri", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_honey/sh_noise_honey.yy b/shaders/sh_noise_honey/sh_noise_honey.yy index c640217ad..0931bdd79 100644 --- a/shaders/sh_noise_honey/sh_noise_honey.yy +++ b/shaders/sh_noise_honey/sh_noise_honey.yy @@ -4,7 +4,7 @@ "name":"sh_noise_honey", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_shard/sh_noise_shard.yy b/shaders/sh_noise_shard/sh_noise_shard.yy index 44f9e58d8..a4e7bda0e 100644 --- a/shaders/sh_noise_shard/sh_noise_shard.yy +++ b/shaders/sh_noise_shard/sh_noise_shard.yy @@ -4,7 +4,7 @@ "name":"sh_noise_shard", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_strand/sh_noise_strand.yy b/shaders/sh_noise_strand/sh_noise_strand.yy index 069aded00..91c8cab27 100644 --- a/shaders/sh_noise_strand/sh_noise_strand.yy +++ b/shaders/sh_noise_strand/sh_noise_strand.yy @@ -4,7 +4,7 @@ "name":"sh_noise_strand", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_noise_wavelet/sh_noise_wavelet.yy b/shaders/sh_noise_wavelet/sh_noise_wavelet.yy index 4eb71e88a..53cf98ff8 100644 --- a/shaders/sh_noise_wavelet/sh_noise_wavelet.yy +++ b/shaders/sh_noise_wavelet/sh_noise_wavelet.yy @@ -4,7 +4,7 @@ "name":"sh_noise_wavelet", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_perlin/sh_perlin.yy b/shaders/sh_perlin/sh_perlin.yy index 3c2fe4bfd..49187e1af 100644 --- a/shaders/sh_perlin/sh_perlin.yy +++ b/shaders/sh_perlin/sh_perlin.yy @@ -4,7 +4,7 @@ "name":"sh_perlin", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_perlin_extra/sh_perlin_extra.yy b/shaders/sh_perlin_extra/sh_perlin_extra.yy index ff9b4aaf2..3d584e58c 100644 --- a/shaders/sh_perlin_extra/sh_perlin_extra.yy +++ b/shaders/sh_perlin_extra/sh_perlin_extra.yy @@ -4,7 +4,7 @@ "name":"sh_perlin_extra", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_perlin_smear/sh_perlin_smear.yy b/shaders/sh_perlin_smear/sh_perlin_smear.yy index 3897f8184..d5aa73ef9 100644 --- a/shaders/sh_perlin_smear/sh_perlin_smear.yy +++ b/shaders/sh_perlin_smear/sh_perlin_smear.yy @@ -4,7 +4,7 @@ "name":"sh_perlin_smear", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_perlin_tiled/sh_perlin_tiled.yy b/shaders/sh_perlin_tiled/sh_perlin_tiled.yy index 6184dc886..98ed1c21e 100644 --- a/shaders/sh_perlin_tiled/sh_perlin_tiled.yy +++ b/shaders/sh_perlin_tiled/sh_perlin_tiled.yy @@ -4,7 +4,7 @@ "name":"sh_perlin_tiled", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_simplex/sh_simplex.yy b/shaders/sh_simplex/sh_simplex.yy index 0bc8a1af5..81ffd46d8 100644 --- a/shaders/sh_simplex/sh_simplex.yy +++ b/shaders/sh_simplex/sh_simplex.yy @@ -4,7 +4,7 @@ "name":"sh_simplex", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0", diff --git a/shaders/sh_voronoi_extra/sh_voronoi_extra.yy b/shaders/sh_voronoi_extra/sh_voronoi_extra.yy index 980076d5b..66dab6816 100644 --- a/shaders/sh_voronoi_extra/sh_voronoi_extra.yy +++ b/shaders/sh_voronoi_extra/sh_voronoi_extra.yy @@ -4,7 +4,7 @@ "name":"sh_voronoi_extra", "parent":{ "name":"noise", - "path":"folders/shader/noise.yy", + "path":"folders/shader/generator/noise.yy", }, "resourceType":"GMShader", "resourceVersion":"2.0",