From 119095a461fe148e101e8b29c7d4cbf84107fe0b Mon Sep 17 00:00:00 2001 From: Tanasart <22589759+Ttanasart-pt@users.noreply.github.com> Date: Tue, 13 Dec 2022 20:11:39 +0700 Subject: [PATCH] Tile --- Pixels Composer.yyp | 86 ++++++++++-------- objects/o_dialog_about/Create_0.gml | 1 + scripts/array_functions/array_functions.gml | 14 +++ scripts/node_3D_obj/node_3D_obj.gml | 2 +- .../node_animate_curve/node_animate_curve.gml | 2 +- scripts/node_area/node_area.gml | 2 +- scripts/node_blend/node_blend.gml | 2 +- scripts/node_character/node_character.gml | 2 +- scripts/node_color_data/node_color_data.gml | 2 +- scripts/node_counter/node_counter.gml | 2 +- .../node_gradient_points.gml | 74 +++++++++++++++ .../node_gradient_points.yy | 11 +++ scripts/node_grid_hex/node_grid_hex.gml | 65 +++++++++++++ scripts/node_grid_hex/node_grid_hex.yy | 11 +++ scripts/node_grid_tri/node_grid_tri.gml | 65 +++++++++++++ scripts/node_grid_tri/node_grid_tri.yy | 11 +++ scripts/node_group/node_group.gml | 2 +- scripts/node_iterate/node_iterate.gml | 2 +- scripts/node_lerp/node_lerp.gml | 2 +- scripts/node_math/node_math.gml | 2 +- scripts/node_registry/node_registry.gml | 5 +- scripts/node_skew/node_outline.yy | 12 +++ scripts/node_skew/node_skew.gml | 67 ++++++++++++++ scripts/node_skew/node_skew.yy | 11 +++ scripts/node_vector/node_vector.gml | 10 +- scripts/node_wiggler/node_wiggler.gml | 2 +- shaders/sh_dilate/sh_dilate.yy | 4 +- shaders/sh_displace/sh_displace.yy | 4 +- .../sh_draw_surface_part_tiled.yy | 4 +- shaders/sh_glow/sh_glow.yy | 4 +- shaders/sh_gradient/sh_gradient.yy | 4 +- .../sh_gradient_display.yy | 4 +- .../sh_gradient_points/sh_gradient_points.fsh | 34 +++++++ .../sh_gradient_points/sh_gradient_points.vsh | 19 ++++ .../sh_gradient_points/sh_gradient_points.yy | 10 ++ shaders/sh_grid_hex/sh_grid_hex.fsh | 43 +++++++++ shaders/sh_grid_hex/sh_grid_hex.vsh | 18 ++++ shaders/sh_grid_hex/sh_grid_hex.yy | 10 ++ shaders/sh_grid_tri/sh_grid_tri.fsh | 51 +++++++++++ shaders/sh_grid_tri/sh_grid_tri.vsh | 18 ++++ shaders/sh_grid_tri/sh_grid_tri.yy | 10 ++ shaders/sh_mirror/sh_mirror.yy | 4 +- shaders/sh_outline_only/sh_outline_only.yy | 4 +- shaders/sh_polar/sh_polar.yy | 4 +- shaders/sh_remove_black/sh_remove_black.yy | 4 +- shaders/sh_skew/sh_skew.fsh | 30 ++++++ shaders/sh_skew/sh_skew.vsh | 19 ++++ shaders/sh_skew/sh_skew.yy | 10 ++ shaders/sh_time_remap/sh_time_remap.yy | 4 +- shaders/sh_twirl/sh_twirl.yy | 4 +- .../abd83f15-feb3-4ac6-8ffd-017983ca7868.png | Bin 0 -> 4943 bytes .../e74a6c99-28cc-4051-acb1-10c3415260c7.png | Bin 0 -> 4943 bytes .../s_node_gradient_4points.yy | 74 +++++++++++++++ .../300b1c8d-d912-46d0-998f-359d85723ca8.png | Bin 0 -> 1892 bytes .../c05c1de6-236e-42e9-9a4d-6d6186df411d.png | Bin 0 -> 1892 bytes sprites/s_node_grid_hex/s_node_grid_hex.yy | 74 +++++++++++++++ .../d667ddb0-a6c7-4893-b4fc-993bc01299cb.png | Bin 0 -> 2240 bytes .../85eff2e7-5aad-40d1-91b9-18aedd27f8a4.png | Bin 0 -> 2240 bytes sprites/s_node_grid_tri/s_node_grid_tri.yy | 74 +++++++++++++++ 59 files changed, 930 insertions(+), 79 deletions(-) create mode 100644 scripts/node_gradient_points/node_gradient_points.gml create mode 100644 scripts/node_gradient_points/node_gradient_points.yy create mode 100644 scripts/node_grid_hex/node_grid_hex.gml create mode 100644 scripts/node_grid_hex/node_grid_hex.yy create mode 100644 scripts/node_grid_tri/node_grid_tri.gml create mode 100644 scripts/node_grid_tri/node_grid_tri.yy create mode 100644 scripts/node_skew/node_outline.yy create mode 100644 scripts/node_skew/node_skew.gml create mode 100644 scripts/node_skew/node_skew.yy create mode 100644 shaders/sh_gradient_points/sh_gradient_points.fsh create mode 100644 shaders/sh_gradient_points/sh_gradient_points.vsh create mode 100644 shaders/sh_gradient_points/sh_gradient_points.yy create mode 100644 shaders/sh_grid_hex/sh_grid_hex.fsh create mode 100644 shaders/sh_grid_hex/sh_grid_hex.vsh create mode 100644 shaders/sh_grid_hex/sh_grid_hex.yy create mode 100644 shaders/sh_grid_tri/sh_grid_tri.fsh create mode 100644 shaders/sh_grid_tri/sh_grid_tri.vsh create mode 100644 shaders/sh_grid_tri/sh_grid_tri.yy create mode 100644 shaders/sh_skew/sh_skew.fsh create mode 100644 shaders/sh_skew/sh_skew.vsh create mode 100644 shaders/sh_skew/sh_skew.yy create mode 100644 sprites/s_node_gradient_4points/abd83f15-feb3-4ac6-8ffd-017983ca7868.png create mode 100644 sprites/s_node_gradient_4points/layers/abd83f15-feb3-4ac6-8ffd-017983ca7868/e74a6c99-28cc-4051-acb1-10c3415260c7.png create mode 100644 sprites/s_node_gradient_4points/s_node_gradient_4points.yy create mode 100644 sprites/s_node_grid_hex/300b1c8d-d912-46d0-998f-359d85723ca8.png create mode 100644 sprites/s_node_grid_hex/layers/300b1c8d-d912-46d0-998f-359d85723ca8/c05c1de6-236e-42e9-9a4d-6d6186df411d.png create mode 100644 sprites/s_node_grid_hex/s_node_grid_hex.yy create mode 100644 sprites/s_node_grid_tri/d667ddb0-a6c7-4893-b4fc-993bc01299cb.png create mode 100644 sprites/s_node_grid_tri/layers/d667ddb0-a6c7-4893-b4fc-993bc01299cb/85eff2e7-5aad-40d1-91b9-18aedd27f8a4.png create mode 100644 sprites/s_node_grid_tri/s_node_grid_tri.yy diff --git a/Pixels Composer.yyp b/Pixels Composer.yyp index 32031349c..f30a1a6dd 100644 --- a/Pixels Composer.yyp +++ b/Pixels Composer.yyp @@ -8,11 +8,11 @@ {"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},"order":33,}, {"id":{"name":"sh_perlin","path":"shaders/sh_perlin/sh_perlin.yy",},"order":1,}, {"id":{"name":"sh_normal_light","path":"shaders/sh_normal_light/sh_normal_light.yy",},"order":0,}, - {"id":{"name":"sh_scale3x","path":"shaders/sh_scale3x/sh_scale3x.yy",},"order":34,}, + {"id":{"name":"sh_scale3x","path":"shaders/sh_scale3x/sh_scale3x.yy",},"order":33,}, {"id":{"name":"surface_modify","path":"scripts/surface_modify/surface_modify.yy",},"order":2,}, {"id":{"name":"s_node_normal","path":"sprites/s_node_normal/s_node_normal.yy",},"order":19,}, {"id":{"name":"buffer_surface","path":"scripts/buffer_surface/buffer_surface.yy",},"order":3,}, - {"id":{"name":"sh_dither","path":"shaders/sh_dither/sh_dither.yy",},"order":33,}, + {"id":{"name":"sh_dither","path":"shaders/sh_dither/sh_dither.yy",},"order":32,}, {"id":{"name":"panel_data","path":"scripts/panel_data/panel_data.yy",},"order":0,}, {"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},"order":8,}, {"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,}, @@ -26,10 +26,10 @@ {"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":7,}, {"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":114,}, {"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":45,}, - {"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":37,}, + {"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":36,}, {"id":{"name":"node_dither","path":"scripts/node_dither/node_dither.yy",},"order":11,}, {"id":{"name":"sh_perlin_smear","path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",},"order":7,}, - {"id":{"name":"sh_corner","path":"shaders/sh_corner/sh_corner.yy",},"order":24,}, + {"id":{"name":"sh_corner","path":"shaders/sh_corner/sh_corner.yy",},"order":23,}, {"id":{"name":"node_array","path":"scripts/node_array/node_array.yy",},"order":3,}, {"id":{"name":"sh_colorize","path":"shaders/sh_colorize/sh_colorize.yy",},"order":5,}, {"id":{"name":"s_node_particle_effector","path":"sprites/s_node_particle_effector/s_node_particle_effector.yy",},"order":52,}, @@ -57,6 +57,7 @@ {"id":{"name":"math_function","path":"scripts/math_function/math_function.yy",},"order":7,}, {"id":{"name":"scrollBox","path":"scripts/scrollBox/scrollBox.yy",},"order":13,}, {"id":{"name":"o_dialog_exit","path":"objects/o_dialog_exit/o_dialog_exit.yy",},"order":27,}, + {"id":{"name":"node_gradient_points","path":"scripts/node_gradient_points/node_gradient_points.yy",},"order":20,}, {"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,}, {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,}, @@ -64,21 +65,21 @@ {"id":{"name":"node_stripe","path":"scripts/node_stripe/node_stripe.yy",},"order":11,}, {"id":{"name":"sh_texture_atlas","path":"shaders/sh_texture_atlas/sh_texture_atlas.yy",},"order":0,}, {"id":{"name":"s_node_displace","path":"sprites/s_node_displace/s_node_displace.yy",},"order":83,}, - {"id":{"name":"sh_polar","path":"shaders/sh_polar/sh_polar.yy",},"order":31,}, + {"id":{"name":"sh_polar","path":"shaders/sh_polar/sh_polar.yy",},"order":1,}, {"id":{"name":"s_node_warp_mesh","path":"sprites/s_node_warp_mesh/s_node_warp_mesh.yy",},"order":22,}, {"id":{"name":"sh_pixel_cloud","path":"shaders/sh_pixel_cloud/sh_pixel_cloud.yy",},"order":13,}, {"id":{"name":"node_iterate","path":"scripts/node_iterate/node_iterate.yy",},"order":1,}, - {"id":{"name":"sh_de_stray","path":"shaders/sh_de_stray/sh_de_stray.yy",},"order":17,}, - {"id":{"name":"sh_chromatic_aberration","path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",},"order":36,}, + {"id":{"name":"sh_de_stray","path":"shaders/sh_de_stray/sh_de_stray.yy",},"order":16,}, + {"id":{"name":"sh_chromatic_aberration","path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",},"order":35,}, {"id":{"name":"sh_cell_noise_round","path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",},"order":9,}, {"id":{"name":"event_recorder","path":"scripts/event_recorder/event_recorder.yy",},"order":3,}, {"id":{"name":"s_node_noise_cell","path":"sprites/s_node_noise_cell/s_node_noise_cell.yy",},"order":58,}, {"id":{"name":"node_colorize","path":"scripts/node_colorize/node_colorize.yy",},"order":9,}, {"id":{"name":"s_node_color_adjust","path":"sprites/s_node_color_adjust/s_node_color_adjust.yy",},"order":97,}, - {"id":{"name":"sh_channel_B","path":"shaders/sh_channel_B/sh_channel_B.yy",},"order":14,}, + {"id":{"name":"sh_channel_B","path":"shaders/sh_channel_B/sh_channel_B.yy",},"order":13,}, {"id":{"name":"s_node_2d_light","path":"sprites/s_node_2d_light/s_node_2d_light.yy",},"order":117,}, {"id":{"name":"s_node_trail","path":"sprites/s_node_trail/s_node_trail.yy",},"order":31,}, - {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},"order":28,}, + {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},"order":27,}, {"id":{"name":"string_eval","path":"scripts/string_eval/string_eval.yy",},"order":0,}, {"id":{"name":"globals","path":"scripts/globals/globals.yy",},"order":1,}, {"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},"order":123,}, @@ -107,11 +108,11 @@ {"id":{"name":"o_dialog_scrollbox","path":"objects/o_dialog_scrollbox/o_dialog_scrollbox.yy",},"order":2,}, {"id":{"name":"s_node_palette","path":"sprites/s_node_palette/s_node_palette.yy",},"order":54,}, {"id":{"name":"curve_damping_function","path":"scripts/curve_damping_function/curve_damping_function.yy",},"order":2,}, - {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":25,}, + {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":24,}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,}, {"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,}, {"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,}, - {"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":40,}, + {"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":18,}, {"id":{"name":"s_node_chromatic_abarration","path":"sprites/s_node_chromatic_abarration/s_node_chromatic_abarration.yy",},"order":1,}, {"id":{"name":"node_blur_directional","path":"scripts/node_blur_directional/node_blur_directional.yy",},"order":26,}, {"id":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"order":5,}, @@ -120,28 +121,29 @@ {"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":0,}, {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,}, {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":15,}, - {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":32,}, + {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":1,}, {"id":{"name":"sh_blend_subtract_alpha","path":"shaders/sh_blend_subtract_alpha/sh_blend_subtract_alpha.yy",},"order":14,}, {"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},"order":1,}, {"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},"order":85,}, {"id":{"name":"sh_blend_normal","path":"shaders/sh_blend_normal/sh_blend_normal.yy",},"order":1,}, - {"id":{"name":"sh_blur_directional","path":"shaders/sh_blur_directional/sh_blur_directional.yy",},"order":16,}, + {"id":{"name":"sh_blur_directional","path":"shaders/sh_blur_directional/sh_blur_directional.yy",},"order":15,}, {"id":{"name":"node_processor","path":"scripts/node_processor/node_processor.yy",},"order":8,}, {"id":{"name":"animation_controller","path":"scripts/animation_controller/animation_controller.yy",},"order":1,}, {"id":{"name":"s_node_shadow","path":"sprites/s_node_shadow/s_node_shadow.yy",},"order":41,}, {"id":{"name":"sh_zigzag","path":"shaders/sh_zigzag/sh_zigzag.yy",},"order":11,}, - {"id":{"name":"sh_color_remove","path":"shaders/sh_color_remove/sh_color_remove.yy",},"order":27,}, + {"id":{"name":"sh_color_remove","path":"shaders/sh_color_remove/sh_color_remove.yy",},"order":26,}, {"id":{"name":"s_node_blur","path":"sprites/s_node_blur/s_node_blur.yy",},"order":103,}, {"id":{"name":"textArea","path":"scripts/textArea/textArea.yy",},"order":20,}, + {"id":{"name":"s_node_gradient_4points","path":"sprites/s_node_gradient_4points/s_node_gradient_4points.yy",},"order":130,}, {"id":{"name":"s_node_gradient_out","path":"sprites/s_node_gradient_out/s_node_gradient_out.yy",},"order":76,}, {"id":{"name":"s_node_vec3","path":"sprites/s_node_vec3/s_node_vec3.yy",},"order":25,}, {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":3,}, - {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":18,}, + {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":17,}, {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":65,}, {"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":14,}, {"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},"order":14,}, - {"id":{"name":"sh_twirl","path":"shaders/sh_twirl/sh_twirl.yy",},"order":19,}, + {"id":{"name":"sh_twirl","path":"shaders/sh_twirl/sh_twirl.yy",},"order":3,}, {"id":{"name":"s_node_shape","path":"sprites/s_node_shape/s_node_shape.yy",},"order":40,}, {"id":{"name":"string_formatting","path":"scripts/string_formatting/string_formatting.yy",},"order":7,}, {"id":{"name":"node_level_selector","path":"scripts/node_level_selector/node_level_selector.yy",},"order":39,}, @@ -156,7 +158,7 @@ {"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,}, {"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},"order":10,}, {"id":{"name":"load_palette","path":"scripts/load_palette/load_palette.yy",},"order":3,}, - {"id":{"name":"sh_alpha_cutoff","path":"shaders/sh_alpha_cutoff/sh_alpha_cutoff.yy",},"order":26,}, + {"id":{"name":"sh_alpha_cutoff","path":"shaders/sh_alpha_cutoff/sh_alpha_cutoff.yy",},"order":25,}, {"id":{"name":"checkbox","path":"scripts/checkbox/checkbox.yy",},"order":7,}, {"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},"order":53,}, {"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},"order":92,}, @@ -184,18 +186,19 @@ {"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},"order":45,}, {"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,}, {"id":{"name":"sh_noise","path":"shaders/sh_noise/sh_noise.yy",},"order":16,}, + {"id":{"name":"sh_skew","path":"shaders/sh_skew/sh_skew.yy",},"order":6,}, {"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":14,}, {"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,}, {"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":125,}, {"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,}, {"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":36,}, - {"id":{"name":"sh_grey_alpha","path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",},"order":11,}, + {"id":{"name":"sh_grey_alpha","path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",},"order":10,}, {"id":{"name":"sh_normal","path":"shaders/sh_normal/sh_normal.yy",},"order":1,}, {"id":{"name":"s_node_time_map","path":"sprites/s_node_time_map/s_node_time_map.yy",},"order":33,}, {"id":{"name":"node_crop","path":"scripts/node_crop/node_crop.yy",},"order":8,}, {"id":{"name":"buttonPalette","path":"scripts/buttonPalette/buttonPalette.yy",},"order":6,}, {"id":{"name":"s_node_wiggler","path":"sprites/s_node_wiggler/s_node_wiggler.yy",},"order":21,}, - {"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},"order":35,}, + {"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},"order":34,}, {"id":{"name":"s_node_area","path":"sprites/s_node_area/s_node_area.yy",},"order":109,}, {"id":{"name":"type_conversion","path":"scripts/type_conversion/type_conversion.yy",},"order":8,}, {"id":{"name":"node_keyframe","path":"scripts/node_keyframe/node_keyframe.yy",},"order":4,}, @@ -209,7 +212,7 @@ {"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},"order":2,}, {"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},"order":17,}, {"id":{"name":"mtl_reader","path":"scripts/mtl_reader/mtl_reader.yy",},"order":6,}, - {"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":32,}, + {"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":31,}, {"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,}, {"id":{"name":"node_vector","path":"scripts/node_vector/node_vector.yy",},"order":2,}, {"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,}, @@ -217,9 +220,11 @@ {"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,}, {"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,}, {"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":0,}, + {"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,}, {"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":6,}, {"id":{"name":"slider","path":"scripts/slider/slider.yy",},"order":15,}, {"id":{"name":"node_9slice","path":"scripts/node_9slice/node_9slice.yy",},"order":6,}, + {"id":{"name":"sh_grid_hex","path":"shaders/sh_grid_hex/sh_grid_hex.yy",},"order":21,}, {"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},"order":1,}, {"id":{"name":"node_wiggler","path":"scripts/node_wiggler/node_wiggler.yy",},"order":2,}, {"id":{"name":"s_node_checker","path":"sprites/s_node_checker/s_node_checker.yy",},"order":98,}, @@ -236,17 +241,17 @@ {"id":{"name":"assets_data","path":"scripts/assets_data/assets_data.yy",},"order":0,}, {"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},"order":2,}, {"id":{"name":"surface_get_palette","path":"scripts/surface_get_palette/surface_get_palette.yy",},"order":2,}, - {"id":{"name":"sh_texture_remap","path":"shaders/sh_texture_remap/sh_texture_remap.yy",},"order":29,}, + {"id":{"name":"sh_texture_remap","path":"shaders/sh_texture_remap/sh_texture_remap.yy",},"order":28,}, {"id":{"name":"ds_list","path":"scripts/ds_list/ds_list.yy",},"order":1,}, {"id":{"name":"o_dialog_gradient","path":"objects/o_dialog_gradient/o_dialog_gradient.yy",},"order":1,}, {"id":{"name":"sh_blend_subtract","path":"shaders/sh_blend_subtract/sh_blend_subtract.yy",},"order":5,}, {"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":0,}, {"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,}, - {"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":8,}, + {"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":17,}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},"order":20,}, {"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":129,}, - {"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":21,}, - {"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":23,}, + {"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":39,}, + {"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":22,}, {"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":60,}, {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":2,}, {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,}, @@ -254,6 +259,7 @@ {"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,}, {"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":120,}, {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":2,}, + {"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},"order":22,}, {"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":127,}, {"id":{"name":"node_blur_radial","path":"scripts/node_blur_radial/node_blur_radial.yy",},"order":29,}, {"id":{"name":"node_bloom","path":"scripts/node_bloom/node_bloom.yy",},"order":15,}, @@ -271,11 +277,11 @@ {"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,}, {"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,}, {"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,}, - {"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":30,}, + {"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":29,}, {"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},"order":0,}, {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":6,}, {"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},"order":37,}, - {"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},"order":12,}, + {"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},"order":11,}, {"id":{"name":"draw_circle_border","path":"scripts/draw_circle_border/draw_circle_border.yy",},"order":3,}, {"id":{"name":"sliderRange","path":"scripts/sliderRange/sliderRange.yy",},"order":16,}, {"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,}, @@ -287,7 +293,7 @@ {"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,}, {"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,}, {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,}, - {"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":21,}, + {"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":20,}, {"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,}, {"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":3,}, {"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":18,}, @@ -327,11 +333,12 @@ {"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,}, {"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":12,}, {"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":118,}, - {"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":20,}, + {"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":19,}, {"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":15,}, {"id":{"name":"sh_alpha_grey","path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",},"order":9,}, {"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},"order":1,}, {"id":{"name":"o_dialog_animation","path":"objects/o_dialog_animation/o_dialog_animation.yy",},"order":1,}, + {"id":{"name":"s_node_grid_tri","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"order":131,}, {"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},"order":5,}, {"id":{"name":"o_dialog_keyframe_curve","path":"objects/o_dialog_keyframe_curve/o_dialog_keyframe_curve.yy",},"order":2,}, {"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},"order":26,}, @@ -345,7 +352,7 @@ {"id":{"name":"lerp_float","path":"scripts/lerp_float/lerp_float.yy",},"order":1,}, {"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},"order":19,}, {"id":{"name":"sh_draw_vertex_aa","path":"shaders/sh_draw_vertex_aa/sh_draw_vertex_aa.yy",},"order":0,}, - {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":25,}, + {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":40,}, {"id":{"name":"s_node_destray","path":"sprites/s_node_destray/s_node_destray.yy",},"order":9,}, {"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":1,}, {"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},"order":1,}, @@ -364,6 +371,7 @@ {"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":8,}, {"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":38,}, + {"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"order":132,}, {"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":116,}, {"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},"order":46,}, {"id":{"name":"node_animate_curve","path":"scripts/node_animate_curve/node_animate_curve.yy",},"order":0,}, @@ -376,11 +384,11 @@ {"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},"order":6,}, {"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},"order":4,}, {"id":{"name":"s_node_greyscale","path":"sprites/s_node_greyscale/s_node_greyscale.yy",},"order":74,}, - {"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},"order":22,}, + {"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},"order":4,}, {"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},"order":1,}, {"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},"order":0,}, {"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},"order":0,}, - {"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},"order":10,}, + {"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},"order":0,}, {"id":{"name":"sh_cell_noise_random","path":"shaders/sh_cell_noise_random/sh_cell_noise_random.yy",},"order":6,}, {"id":{"name":"node_iteration_input","path":"scripts/node_iteration_input/node_iteration_input.yy",},"order":2,}, {"id":{"name":"s_node_atlas","path":"sprites/s_node_atlas/s_node_atlas.yy",},"order":106,}, @@ -413,6 +421,7 @@ {"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},"order":4,}, {"id":{"name":"s_node_vfx_destroy","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},"order":124,}, {"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},"order":7,}, + {"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},"order":19,}, {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,}, {"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,}, @@ -451,12 +460,14 @@ {"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},"order":4,}, {"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},"order":0,}, {"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,}, + {"id":{"name":"sh_grid_tri","path":"shaders/sh_grid_tri/sh_grid_tri.yy",},"order":20,}, {"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,}, {"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,}, + {"id":{"name":"node_skew","path":"scripts/node_skew/node_skew.yy",},"order":12,}, {"id":{"name":"s_node_canvas","path":"sprites/s_node_canvas/s_node_canvas.yy",},"order":15,}, - {"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},"order":37,}, + {"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},"order":38,}, {"id":{"name":"path_parser","path":"scripts/path_parser/path_parser.yy",},"order":3,}, {"id":{"name":"s_node_unicode","path":"sprites/s_node_unicode/s_node_unicode.yy",},"order":28,}, {"id":{"name":"s_node_color_from_hsv","path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",},"order":95,}, @@ -471,7 +482,7 @@ {"id":{"name":"node_grey_to_alpha","path":"scripts/node_grey_to_alpha/node_grey_to_alpha.yy",},"order":23,}, {"id":{"name":"sh_blend_add","path":"shaders/sh_blend_add/sh_blend_add.yy",},"order":7,}, {"id":{"name":"node_de_stray","path":"scripts/node_de_stray/node_de_stray.yy",},"order":27,}, - {"id":{"name":"sh_channel_G","path":"shaders/sh_channel_G/sh_channel_G.yy",},"order":13,}, + {"id":{"name":"sh_channel_G","path":"shaders/sh_channel_G/sh_channel_G.yy",},"order":12,}, {"id":{"name":"s_node_dilate","path":"sprites/s_node_dilate/s_node_dilate.yy",},"order":84,}, {"id":{"name":"node_collection","path":"scripts/node_collection/node_collection.yy",},"order":0,}, {"id":{"name":"node_value","path":"scripts/node_value/node_value.yy",},"order":6,}, @@ -504,17 +515,17 @@ {"id":{"name":"ds_map","path":"scripts/ds_map/ds_map.yy",},"order":0,}, {"id":{"name":"s_node_3d_transform","path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},"order":113,}, {"id":{"name":"s_node_output","path":"sprites/s_node_output/s_node_output.yy",},"order":56,}, - {"id":{"name":"sh_atlas","path":"shaders/sh_atlas/sh_atlas.yy",},"order":31,}, + {"id":{"name":"sh_atlas","path":"shaders/sh_atlas/sh_atlas.yy",},"order":30,}, {"id":{"name":"node_3d_extrude","path":"scripts/node_3d_extrude/node_3d_extrude.yy",},"order":9,}, {"id":{"name":"node_scale","path":"scripts/node_scale/node_scale.yy",},"order":9,}, - {"id":{"name":"sh_displace","path":"shaders/sh_displace/sh_displace.yy",},"order":7,}, + {"id":{"name":"sh_displace","path":"shaders/sh_displace/sh_displace.yy",},"order":5,}, {"id":{"name":"node_group","path":"scripts/node_group/node_group.yy",},"order":0,}, {"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,}, {"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":9,}, {"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,}, {"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":44,}, {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,}, - {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":15,}, + {"id":{"name":"sh_de_corner","path":"shaders/sh_de_corner/sh_de_corner.yy",},"order":14,}, {"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},"order":12,}, {"id":{"name":"s_node_iterator_index","path":"sprites/s_node_iterator_index/s_node_iterator_index.yy",},"order":14,}, {"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},"order":25,}, @@ -539,7 +550,7 @@ {"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},"order":32,}, {"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":59,}, {"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,}, - {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":33,}, + {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":2,}, {"id":{"name":"rm_main","path":"rooms/rm_main/rm_main.yy",},"order":0,}, ], "Options": [ @@ -629,6 +640,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/data/VFX.yy","order":13,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"warp","folderPath":"folders/shader/warp.yy","order":41,}, ], "AudioGroups": [ {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, diff --git a/objects/o_dialog_about/Create_0.gml b/objects/o_dialog_about/Create_0.gml index ad48086f8..7df14815a 100644 --- a/objects/o_dialog_about/Create_0.gml +++ b/objects/o_dialog_about/Create_0.gml @@ -15,6 +15,7 @@ event_inherited(); [ "Many noise and shape shaders", "Inigo Quilez" ], [ "Chromatic aberration shader", "jcant0n" ], [ "gif importer\nWindow commands\nExecute shell simple", "YellowAfterLife" ], + [ "Triangle grid", "Farini" ], ] sc_thank = new scrollPane(dialog_w - ui(64), thank_h, function(_y, _m) { diff --git a/scripts/array_functions/array_functions.gml b/scripts/array_functions/array_functions.gml index ed9bbc753..fff0ccf0a 100644 --- a/scripts/array_functions/array_functions.gml +++ b/scripts/array_functions/array_functions.gml @@ -26,4 +26,18 @@ function array_remove(arr, val) { function array_push_unique(arr, val) { if(array_exists(arr, val)) return; array_push(arr, val); +} + +function array_append(arr, arr0) { + for( var i = 0; i < array_length(arr0); i++ ) + array_push(arr, arr0[i]); +} + +function array_merge() { + var arr = []; + for( var i = 0; i < argument_count; i++ ) { + array_append(arr, argument[i]); + } + + return arr; } \ No newline at end of file diff --git a/scripts/node_3D_obj/node_3D_obj.gml b/scripts/node_3D_obj/node_3D_obj.gml index 18811b7dc..0f5104684 100644 --- a/scripts/node_3D_obj/node_3D_obj.gml +++ b/scripts/node_3D_obj/node_3D_obj.gml @@ -1,4 +1,4 @@ -function Node_create_3D_Obj_path(_x, _y, _group = 1, path) { +function Node_create_3D_Obj_path(_x, _y, _group = -1, path) { if(!file_exists(path)) return noone; var node = new Node_3D_Obj(_x, _y, _group); diff --git a/scripts/node_animate_curve/node_animate_curve.gml b/scripts/node_animate_curve/node_animate_curve.gml index 1f601920d..43f315241 100644 --- a/scripts/node_animate_curve/node_animate_curve.gml +++ b/scripts/node_animate_curve/node_animate_curve.gml @@ -1,4 +1,4 @@ -function Node_Anim_Curve(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Anim_Curve(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Anim Curve"; update_on_frame = true; previewable = false; diff --git a/scripts/node_area/node_area.gml b/scripts/node_area/node_area.gml index 3fab14ac0..872ea4d62 100644 --- a/scripts/node_area/node_area.gml +++ b/scripts/node_area/node_area.gml @@ -1,4 +1,4 @@ -function Node_Area(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Area(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Area"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_blend/node_blend.gml b/scripts/node_blend/node_blend.gml index 57a91de0f..0040f0a55 100644 --- a/scripts/node_blend/node_blend.gml +++ b/scripts/node_blend/node_blend.gml @@ -1,4 +1,4 @@ -function Node_create_Blend(_x, _y, _group = 1, _param = "") { +function Node_create_Blend(_x, _y, _group = -1, _param = "") { var node = new Node_Blend(_x, _y, _group); switch(_param) { diff --git a/scripts/node_character/node_character.gml b/scripts/node_character/node_character.gml index 8fa56c765..69ef896bd 100644 --- a/scripts/node_character/node_character.gml +++ b/scripts/node_character/node_character.gml @@ -1,4 +1,4 @@ -function Node_Unicode(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Unicode(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Unicode"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_color_data/node_color_data.gml b/scripts/node_color_data/node_color_data.gml index bacc2d38b..e4dee1c7d 100644 --- a/scripts/node_color_data/node_color_data.gml +++ b/scripts/node_color_data/node_color_data.gml @@ -1,4 +1,4 @@ -function Node_Color_Data(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Color_Data(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Color data"; previewable = false; diff --git a/scripts/node_counter/node_counter.gml b/scripts/node_counter/node_counter.gml index d1899bc91..2a9bce831 100644 --- a/scripts/node_counter/node_counter.gml +++ b/scripts/node_counter/node_counter.gml @@ -1,4 +1,4 @@ -function Node_Counter(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Counter(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Counter"; update_on_frame = true; previewable = false; diff --git a/scripts/node_gradient_points/node_gradient_points.gml b/scripts/node_gradient_points/node_gradient_points.gml new file mode 100644 index 000000000..987979f5a --- /dev/null +++ b/scripts/node_gradient_points/node_gradient_points.gml @@ -0,0 +1,74 @@ +function Node_Gradient_Points(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "4 Points gradient"; + + shader = sh_gradient_points; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_cen = shader_get_uniform(shader, "center"); + uniform_col = shader_get_uniform(shader, "color"); + + inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue(1, "Center 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + inputs[| 2] = nodeValue(2, "Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 3] = nodeValue(3, "Center 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + inputs[| 4] = nodeValue(4, "Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 5] = nodeValue(5, "Center 3", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] ) + .setDisplay(VALUE_DISPLAY.vector); + inputs[| 6] = nodeValue(6, "Color 3", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 7] = nodeValue(7, "Center 4", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] ) + .setDisplay(VALUE_DISPLAY.vector); + inputs[| 8] = nodeValue(8, "Color 4", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + input_display_list = [ + ["Output", true], 0, + ["Positions", false], 1, 3, 5, 7, + ["Colors", false], 2, 4, 6, 8, + ]; + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + if(inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; + if(inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; + if(inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; + if(inputs[| 7].drawOverlay(active, _x, _y, _s, _mx, _my)) active = false; + } + + static update = function() { + var _dim = inputs[| 0].getValue(); + + var _outSurf = outputs[| 0].getValue(); + if(!is_surface(_outSurf)) { + _outSurf = surface_create_valid(_dim[0], _dim[1]); + outputs[| 0].setValue(_outSurf); + } else + surface_size_to(_outSurf, _dim[0], _dim[1]); + + var _1cen = inputs[| 1].getValue(); + var _1col = inputs[| 2].getValue(); + var _2cen = inputs[| 3].getValue(); + var _2col = inputs[| 4].getValue(); + var _3cen = inputs[| 5].getValue(); + var _3col = inputs[| 6].getValue(); + var _4cen = inputs[| 7].getValue(); + var _4col = inputs[| 8].getValue(); + + surface_set_target(_outSurf); + draw_clear_alpha(0, 0); + shader_set(shader); + shader_set_uniform_f_array(uniform_dim, [_dim[0], _dim[1]]); + shader_set_uniform_f_array(uniform_cen, array_merge(_1cen, _2cen, _3cen, _4cen)); + shader_set_uniform_f_array(uniform_col, array_merge(colorArrayFromReal(_1col), colorArrayFromReal(_2col), colorArrayFromReal(_3col), colorArrayFromReal(_4col))); + + draw_sprite_stretched_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], c_white, 1); + shader_reset(); + surface_reset_target(); + } + doUpdate(); +} \ No newline at end of file diff --git a/scripts/node_gradient_points/node_gradient_points.yy b/scripts/node_gradient_points/node_gradient_points.yy new file mode 100644 index 000000000..5daf5c54b --- /dev/null +++ b/scripts/node_gradient_points/node_gradient_points.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_gradient_points", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_grid_hex/node_grid_hex.gml b/scripts/node_grid_hex/node_grid_hex.gml new file mode 100644 index 000000000..1de15ad95 --- /dev/null +++ b/scripts/node_grid_hex/node_grid_hex.gml @@ -0,0 +1,65 @@ +function Node_Grid_Hex(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "Hexagonal Grid"; + + shader = sh_grid_hex; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_sca = shader_get_uniform(shader, "scale"); + uniform_rot = shader_get_uniform(shader, "angle"); + uniform_thk = shader_get_uniform(shader, "thick"); + + inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 2] = nodeValue(2, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ]) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 3] = nodeValue(3, "Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.rotation); + + inputs[| 4] = nodeValue(4, "Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); + + input_display_list = [ + ["Output", false], 0, + ["Pattern", false], 1, 2, 3, 4 + ]; + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); + } + + static update = function() { + var _dim = inputs[| 0].getValue(); + var _pos = inputs[| 1].getValue(); + var _sca = inputs[| 2].getValue(); + var _rot = inputs[| 3].getValue(); + var _thk = inputs[| 4].getValue(); + + var _outSurf = outputs[| 0].getValue(); + if(!is_surface(_outSurf)) { + _outSurf = surface_create_valid(_dim[0], _dim[1]); + outputs[| 0].setValue(_outSurf); + } else + surface_size_to(_outSurf, _dim[0], _dim[1]); + + surface_set_target(_outSurf); + draw_clear_alpha(0, 0); + shader_set(shader); + shader_set_uniform_f(uniform_dim, _dim[0], _dim[1]); + shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); + shader_set_uniform_f(uniform_sca, _sca[0], _sca[1]); + shader_set_uniform_f(uniform_rot, degtorad(_rot)); + shader_set_uniform_f(uniform_thk, _thk); + + draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + shader_reset(); + surface_reset_target(); + } + doUpdate(); +} \ No newline at end of file diff --git a/scripts/node_grid_hex/node_grid_hex.yy b/scripts/node_grid_hex/node_grid_hex.yy new file mode 100644 index 000000000..6e63f5309 --- /dev/null +++ b/scripts/node_grid_hex/node_grid_hex.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_grid_hex", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_grid_tri/node_grid_tri.gml b/scripts/node_grid_tri/node_grid_tri.gml new file mode 100644 index 000000000..cfaa0c68d --- /dev/null +++ b/scripts/node_grid_tri/node_grid_tri.gml @@ -0,0 +1,65 @@ +function Node_Grid_Tri(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "Triangle Grid"; + + shader = sh_grid_tri; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_sca = shader_get_uniform(shader, "scale"); + uniform_rot = shader_get_uniform(shader, "angle"); + uniform_thk = shader_get_uniform(shader, "thick"); + + inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 2] = nodeValue(2, "Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ]) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 3] = nodeValue(3, "Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.rotation); + + inputs[| 4] = nodeValue(4, "Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); + + input_display_list = [ + ["Output", false], 0, + ["Pattern", false], 1, 2, 3, 4 + ]; + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); + } + + static update = function() { + var _dim = inputs[| 0].getValue(); + var _pos = inputs[| 1].getValue(); + var _sca = inputs[| 2].getValue(); + var _rot = inputs[| 3].getValue(); + var _thk = inputs[| 4].getValue(); + + var _outSurf = outputs[| 0].getValue(); + if(!is_surface(_outSurf)) { + _outSurf = surface_create_valid(_dim[0], _dim[1]); + outputs[| 0].setValue(_outSurf); + } else + surface_size_to(_outSurf, _dim[0], _dim[1]); + + surface_set_target(_outSurf); + draw_clear_alpha(0, 0); + shader_set(shader); + shader_set_uniform_f(uniform_dim, _dim[0], _dim[1]); + shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); + shader_set_uniform_f(uniform_sca, _sca[0], _sca[1]); + shader_set_uniform_f(uniform_rot, degtorad(_rot)); + shader_set_uniform_f(uniform_thk, _thk); + + draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); + shader_reset(); + surface_reset_target(); + } + doUpdate(); +} \ No newline at end of file diff --git a/scripts/node_grid_tri/node_grid_tri.yy b/scripts/node_grid_tri/node_grid_tri.yy new file mode 100644 index 000000000..223dddb50 --- /dev/null +++ b/scripts/node_grid_tri/node_grid_tri.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_grid_tri", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_group/node_group.gml b/scripts/node_group/node_group.gml index e0bf7a9dd..201572de9 100644 --- a/scripts/node_group/node_group.gml +++ b/scripts/node_group/node_group.gml @@ -1,4 +1,4 @@ -function Node_Group(_x, _y) : Node_Collection(_x, _y) constructor { +function Node_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor { name = "Group"; color = COLORS.node_blend_collection; icon = THEME.group_s; diff --git a/scripts/node_iterate/node_iterate.gml b/scripts/node_iterate/node_iterate.gml index d8c3e305a..b8df780d3 100644 --- a/scripts/node_iterate/node_iterate.gml +++ b/scripts/node_iterate/node_iterate.gml @@ -4,7 +4,7 @@ enum ITERATION_STATUS { complete, } -function Node_Iterate(_x, _y) : Node_Collection(_x, _y) constructor { +function Node_Iterate(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor { name = "Loop"; color = COLORS.node_blend_loop; icon = THEME.loop; diff --git a/scripts/node_lerp/node_lerp.gml b/scripts/node_lerp/node_lerp.gml index 58b18ec26..cdae3b46b 100644 --- a/scripts/node_lerp/node_lerp.gml +++ b/scripts/node_lerp/node_lerp.gml @@ -1,4 +1,4 @@ -function Node_Lerp(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Lerp(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Lerp"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_math/node_math.gml b/scripts/node_math/node_math.gml index 83c311e00..b5bef73ec 100644 --- a/scripts/node_math/node_math.gml +++ b/scripts/node_math/node_math.gml @@ -17,7 +17,7 @@ enum MATH_OPERATOR { round, } -function Node_create_Math(_x, _y, _group = 1, _param = "") { +function Node_create_Math(_x, _y, _group = -1, _param = "") { var node = new Node_Math(_x, _y, _group); switch(_param) { diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index a5afbf9f6..81fe434c1 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -45,7 +45,6 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { var funs = NODE_CREATE_FUCTION[? _name]; var _node = funs[0]? new funs[1](_x, _y, _group) : funs[1](_x, _y, _group); if(!_node) return noone; - //PANEL_GRAPH.node_focus = _node; return _node; } @@ -91,6 +90,7 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { addNodeObject(transform, "Crop", s_node_crop, "Node_Crop", [1, Node_Crop]); addNodeObject(transform, "Mirror", s_node_mirror, "Node_Mirror", [1, Node_Mirror]); addNodeObject(transform, "Warp", s_node_warp, "Node_Warp", [1, Node_Warp], ["wrap"]); + addNodeObject(transform, "Skew", s_node_warp, "Node_Skew", [1, Node_Skew]); addNodeObject(transform, "Mesh warp", s_node_warp_mesh, "Node_Mesh_Warp", [1, Node_Mesh_Warp], ["mesh wrap"]); addNodeObject(transform, "Compose", s_node_compose, "Node_Composite", [1, Node_Composite], ["merge"]); addNodeObject(transform, "Polar", s_node_polar, "Node_Polar", [1, Node_Polar]); @@ -190,6 +190,7 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { addNodeCatagory("Generate", generator); addNodeObject(generator, "Solid", s_node_solid, "Node_Solid", [1, Node_Solid]); addNodeObject(generator, "Gradient", s_node_gradient, "Node_Gradient", [1, Node_Gradient]); + addNodeObject(generator, "4 Points Gradient", s_node_gradient_4points, "Node_Gradient_Points", [1, Node_Gradient_Points]); addNodeObject(generator, "Line", s_node_line, "Node_Line", [1, Node_Line]); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe]); addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", [1, Node_Zigzag]); @@ -204,6 +205,8 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { addNodeObject(generator, "Cellular noise", s_node_noise_cell, "Node_Cellular", [1, Node_Cellular], ["Voronoi", "Worley"]); addNodeObject(generator, "Grid noise", s_node_grid_noise, "Node_Grid_Noise", [1, Node_Grid_Noise]); addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile"]); + addNodeObject(generator, "Grid triangle", s_node_grid_tri, "Node_Grid_Tri", [1, Node_Grid_Tri]); + addNodeObject(generator, "Grid hexagonal", s_node_grid_hex, "Node_Grid_Hex", [1, Node_Grid_Hex]); addNodeObject(generator, "Anisotropic noise", s_node_noise_aniso, "Node_Noise_Aniso", [1, Node_Noise_Aniso]); addNodeObject(generator, "Seperate shape", s_node_sepearte_shape, "Node_Seperate_Shape", [1, Node_Seperate_Shape]); addNodeObject(generator, "Text", s_node_text, "Node_Text", [1, Node_Text]); diff --git a/scripts/node_skew/node_outline.yy b/scripts/node_skew/node_outline.yy new file mode 100644 index 000000000..86468bc09 --- /dev/null +++ b/scripts/node_skew/node_outline.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_outline", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_skew/node_skew.gml b/scripts/node_skew/node_skew.gml new file mode 100644 index 000000000..5965c1c43 --- /dev/null +++ b/scripts/node_skew/node_skew.gml @@ -0,0 +1,67 @@ +function Node_Skew(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { + name = "Skew"; + + shader = sh_skew; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_cen = shader_get_uniform(shader, "center"); + uniform_axs = shader_get_uniform(shader, "axis"); + uniform_amo = shader_get_uniform(shader, "amount"); + uniform_wrp = shader_get_uniform(shader, "wrap"); + + inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + inputs[| 1] = nodeValue(1, "Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, ["x", "y"]); + + inputs[| 2] = nodeValue(2, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) + .setDisplay(VALUE_DISPLAY.slider, [-1, 1, 0.01]); + + inputs[| 3] = nodeValue(3, "Wrap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 4] = nodeValue(4, "Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0] ) + .setDisplay(VALUE_DISPLAY.vector, button(function() { centerAnchor(); }) + .setIcon(THEME.anchor) + .setTooltip("Set to center")); + + input_display_list = [ + 0, 4, 1, 2, 3 + ] + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + static centerAnchor = function() { + if(!is_surface(current_data[0])) return; + var ww = surface_get_width(current_data[0]); + var hh = surface_get_height(current_data[0]); + + inputs[| 4].setValue([ww / 2, hh / 2]); + } + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); + } + + static process_data = function(_outSurf, _data, _output_index) { + var _axis = _data[1]; + var _amou = _data[2]; + var _wrap = _data[3]; + var _cent = _data[4]; + + surface_set_target(_outSurf); + draw_clear_alpha(0, 0); + BLEND_ADD + + shader_set(shader); + shader_set_uniform_f(uniform_dim, surface_get_width(_data[0]), surface_get_height(_data[0])); + shader_set_uniform_f(uniform_cen, _cent[0], _cent[1]); + shader_set_uniform_i(uniform_axs, _axis); + shader_set_uniform_f(uniform_amo, _amou); + shader_set_uniform_i(uniform_wrp, _wrap); + draw_surface_safe(_data[0], 0, 0); + shader_reset(); + + BLEND_NORMAL + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_skew/node_skew.yy b/scripts/node_skew/node_skew.yy new file mode 100644 index 000000000..79152b7cf --- /dev/null +++ b/scripts/node_skew/node_skew.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_skew", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "transform", + "path": "folders/nodes/data/transform.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_vector/node_vector.gml b/scripts/node_vector/node_vector.gml index aaf58e75e..f27f88896 100644 --- a/scripts/node_vector/node_vector.gml +++ b/scripts/node_vector/node_vector.gml @@ -1,4 +1,4 @@ -function Node_Number(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Number(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Number"; color = COLORS.node_blend_number; previewable = false; @@ -25,7 +25,7 @@ function Node_Number(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_Vector2(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Vector2(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Vector2"; color = COLORS.node_blend_number; previewable = false; @@ -55,7 +55,7 @@ function Node_Vector2(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_Vector3(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Vector3(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Vector3"; color = COLORS.node_blend_number; previewable = false; @@ -88,7 +88,7 @@ function Node_Vector3(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_Vector4(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Vector4(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Vector4"; color = COLORS.node_blend_number; previewable = false; @@ -124,7 +124,7 @@ function Node_Vector4(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_Vector_Split(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Vector_Split(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Vector split"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_wiggler/node_wiggler.gml b/scripts/node_wiggler/node_wiggler.gml index 15639de85..ee26578c0 100644 --- a/scripts/node_wiggler/node_wiggler.gml +++ b/scripts/node_wiggler/node_wiggler.gml @@ -1,4 +1,4 @@ -function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor { +function Node_Wiggler(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Wiggler"; update_on_frame = true; previewable = false; diff --git a/shaders/sh_dilate/sh_dilate.yy b/shaders/sh_dilate/sh_dilate.yy index 379789fdd..b10b3a466 100644 --- a/shaders/sh_dilate/sh_dilate.yy +++ b/shaders/sh_dilate/sh_dilate.yy @@ -4,7 +4,7 @@ "name": "sh_dilate", "type": 1, "parent": { - "name": "filter", - "path": "folders/shader/filter.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/shaders/sh_displace/sh_displace.yy b/shaders/sh_displace/sh_displace.yy index 942b4a309..b6667643e 100644 --- a/shaders/sh_displace/sh_displace.yy +++ b/shaders/sh_displace/sh_displace.yy @@ -4,7 +4,7 @@ "name": "sh_displace", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy b/shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy index c40263911..329d25d58 100644 --- a/shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy +++ b/shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy @@ -4,7 +4,7 @@ "name": "sh_draw_surface_part_tiled", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "draw", + "path": "folders/shader/draw.yy", }, } \ No newline at end of file diff --git a/shaders/sh_glow/sh_glow.yy b/shaders/sh_glow/sh_glow.yy index 9796ab6bf..68050cdbb 100644 --- a/shaders/sh_glow/sh_glow.yy +++ b/shaders/sh_glow/sh_glow.yy @@ -4,7 +4,7 @@ "name": "sh_glow", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "filter", + "path": "folders/shader/filter.yy", }, } \ No newline at end of file diff --git a/shaders/sh_gradient/sh_gradient.yy b/shaders/sh_gradient/sh_gradient.yy index e6403a175..14178effc 100644 --- a/shaders/sh_gradient/sh_gradient.yy +++ b/shaders/sh_gradient/sh_gradient.yy @@ -4,7 +4,7 @@ "name": "sh_gradient", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "generator", + "path": "folders/shader/generator.yy", }, } \ No newline at end of file diff --git a/shaders/sh_gradient_display/sh_gradient_display.yy b/shaders/sh_gradient_display/sh_gradient_display.yy index 2b1ed0874..cc4d3a487 100644 --- a/shaders/sh_gradient_display/sh_gradient_display.yy +++ b/shaders/sh_gradient_display/sh_gradient_display.yy @@ -4,7 +4,7 @@ "name": "sh_gradient_display", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "generator", + "path": "folders/shader/generator.yy", }, } \ No newline at end of file diff --git a/shaders/sh_gradient_points/sh_gradient_points.fsh b/shaders/sh_gradient_points/sh_gradient_points.fsh new file mode 100644 index 000000000..ae9a068df --- /dev/null +++ b/shaders/sh_gradient_points/sh_gradient_points.fsh @@ -0,0 +1,34 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +#define TAU 6.28318 + +uniform vec2 dimension; +uniform vec2 center[4]; +uniform vec3 color[4]; + +void main() { + vec4 distances = vec4(0.); + float maxDist = 0.; + int i; + + for( i = 0; i < 4; i++ ) { + float d = distance(v_vTexcoord, center[i] / dimension); + distances[i] = d; + maxDist = max(maxDist, d); + } + + maxDist *= 2.; + + for( i = 0; i < 4; i++ ) { + distances[i] = pow((maxDist - distances[i]) / maxDist, 6.); + } + + vec4 weights = distances / (distances[0] + distances[1] + distances[2] + distances[3]); + vec3 clr = (color[0] * weights[0]) + (color[1] * weights[1]) + (color[2] * weights[2]) + (color[3] * weights[3]); + + gl_FragColor = vec4(clr, 1.); +} diff --git a/shaders/sh_gradient_points/sh_gradient_points.vsh b/shaders/sh_gradient_points/sh_gradient_points.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_gradient_points/sh_gradient_points.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_gradient_points/sh_gradient_points.yy b/shaders/sh_gradient_points/sh_gradient_points.yy new file mode 100644 index 000000000..0ce6418e0 --- /dev/null +++ b/shaders/sh_gradient_points/sh_gradient_points.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_gradient_points", + "type": 1, + "parent": { + "name": "generator", + "path": "folders/shader/generator.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_grid_hex/sh_grid_hex.fsh b/shaders/sh_grid_hex/sh_grid_hex.fsh new file mode 100644 index 000000000..686482699 --- /dev/null +++ b/shaders/sh_grid_hex/sh_grid_hex.fsh @@ -0,0 +1,43 @@ +/* + Triangular Grid + 03/2016 + seb chevrel +*/ + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec2 position; +uniform vec2 scale; +uniform float angle; +uniform float thick; + +float hexagonAspect = sqrt(3.0); + +void main() { + float time = 1.; + vec2 pos = (v_vTexcoord - position), _pos; + float ratio = dimension.x / dimension.y; + + _pos.x = pos.x * ratio * cos(angle) - pos.y * sin(angle); + _pos.y = pos.x * ratio * sin(angle) + pos.y * cos(angle); + _pos.y *= hexagonAspect; + + vec2 uvTiled = _pos * scale; + vec2 uvOffset = uvTiled + floor((uvTiled.y) / 1.5) * 0.5; + vec2 uvChanged = abs(fract(uvOffset) - 0.5) * 2.0; + + float hexagonMask = 0.0; + + if(mod(uvTiled.y, 1.5) < 1.0) { + hexagonMask = step(uvChanged.x, 1.0 - thick); + } + else { + hexagonMask = + step(uvChanged.x + thick * hexagonAspect, uvChanged.y) + + step(uvChanged.y + thick * hexagonAspect, uvChanged.x); + } + + gl_FragColor = vec4(vec3(hexagonMask), 1.); +} diff --git a/shaders/sh_grid_hex/sh_grid_hex.vsh b/shaders/sh_grid_hex/sh_grid_hex.vsh new file mode 100644 index 000000000..d4b316559 --- /dev/null +++ b/shaders/sh_grid_hex/sh_grid_hex.vsh @@ -0,0 +1,18 @@ +// +// 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_grid_hex/sh_grid_hex.yy b/shaders/sh_grid_hex/sh_grid_hex.yy new file mode 100644 index 000000000..a9e83801a --- /dev/null +++ b/shaders/sh_grid_hex/sh_grid_hex.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_grid_hex", + "type": 1, + "parent": { + "name": "generator", + "path": "folders/shader/generator.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_grid_tri/sh_grid_tri.fsh b/shaders/sh_grid_tri/sh_grid_tri.fsh new file mode 100644 index 000000000..22b5c5b14 --- /dev/null +++ b/shaders/sh_grid_tri/sh_grid_tri.fsh @@ -0,0 +1,51 @@ +/* + Triangular Grid + 03/2016 + seb chevrel +*/ + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec2 position; +uniform vec2 scale; +uniform float angle; +uniform float thick; + +#define PI 3.1415926535897 + +// triangle rotation matrices +vec2 v60 = vec2(cos(PI / 3.0), sin(PI / 3.0)); +vec2 vm60 = vec2(cos(-PI / 3.0), sin(-PI / 3.0)); +mat2 rot60 = mat2(v60.x, -v60.y, v60.y, v60.x); +mat2 rotm60 = mat2(vm60.x, -vm60.y, vm60.y, vm60.x); + +float triangleGrid(vec2 p, float stepSize, float vertexSize, float lineSize) { + // equilateral triangle grid + vec2 fullStep = vec2( stepSize, stepSize * v60.y); + vec2 halfStep = fullStep / 2.0; + vec2 grid = floor(p / fullStep); + vec2 offset = vec2( (mod(grid.y, 2.0) == 1.0) ? halfStep.x : 0., 0.); + // tiling + vec2 uv = mod(p + offset, fullStep) - halfStep; + float d2 = dot(uv, uv); + return vertexSize / d2 + // vertices + max( abs(lineSize / (uv * rotm60).y), // lines -60deg + max ( abs(lineSize / (uv * rot60).y), // lines 60deg + abs(lineSize / uv.y) )); // h lines +} + +void main() { + float time = 1.; + vec2 pos = (v_vTexcoord - position) / scale, _pos; + float ratio = dimension.x / dimension.y; + + _pos.x = pos.x * ratio * cos(angle) - pos.y * sin(angle); + _pos.y = pos.x * ratio * sin(angle) + pos.y * cos(angle); + vec3 color = triangleGrid(_pos, 0.1, 0., thick / 100.) * vec3(0.8, 0.8, 0.85); + color = vec3((color[0] + color[1] + color[2]) / 3.); + color = step(0.75, 1. - color); + + gl_FragColor = vec4(color ,1.0); +} diff --git a/shaders/sh_grid_tri/sh_grid_tri.vsh b/shaders/sh_grid_tri/sh_grid_tri.vsh new file mode 100644 index 000000000..d4b316559 --- /dev/null +++ b/shaders/sh_grid_tri/sh_grid_tri.vsh @@ -0,0 +1,18 @@ +// +// 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_grid_tri/sh_grid_tri.yy b/shaders/sh_grid_tri/sh_grid_tri.yy new file mode 100644 index 000000000..3ccd57475 --- /dev/null +++ b/shaders/sh_grid_tri/sh_grid_tri.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_grid_tri", + "type": 1, + "parent": { + "name": "generator", + "path": "folders/shader/generator.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_mirror/sh_mirror.yy b/shaders/sh_mirror/sh_mirror.yy index 047e0cf7f..e82af1b79 100644 --- a/shaders/sh_mirror/sh_mirror.yy +++ b/shaders/sh_mirror/sh_mirror.yy @@ -4,7 +4,7 @@ "name": "sh_mirror", "type": 1, "parent": { - "name": "filter", - "path": "folders/shader/filter.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/shaders/sh_outline_only/sh_outline_only.yy b/shaders/sh_outline_only/sh_outline_only.yy index d2d8208e4..d141dc446 100644 --- a/shaders/sh_outline_only/sh_outline_only.yy +++ b/shaders/sh_outline_only/sh_outline_only.yy @@ -4,7 +4,7 @@ "name": "sh_outline_only", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "filter", + "path": "folders/shader/filter.yy", }, } \ No newline at end of file diff --git a/shaders/sh_polar/sh_polar.yy b/shaders/sh_polar/sh_polar.yy index 4f56ae77a..56a8576e1 100644 --- a/shaders/sh_polar/sh_polar.yy +++ b/shaders/sh_polar/sh_polar.yy @@ -4,7 +4,7 @@ "name": "sh_polar", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/shaders/sh_remove_black/sh_remove_black.yy b/shaders/sh_remove_black/sh_remove_black.yy index 718a62688..f9c1fe8bb 100644 --- a/shaders/sh_remove_black/sh_remove_black.yy +++ b/shaders/sh_remove_black/sh_remove_black.yy @@ -4,7 +4,7 @@ "name": "sh_remove_black", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "filter", + "path": "folders/shader/filter.yy", }, } \ No newline at end of file diff --git a/shaders/sh_skew/sh_skew.fsh b/shaders/sh_skew/sh_skew.fsh new file mode 100644 index 000000000..ee06da758 --- /dev/null +++ b/shaders/sh_skew/sh_skew.fsh @@ -0,0 +1,30 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec2 center; +uniform int axis; +uniform float amount; +uniform int wrap; + +void main() { + vec2 pos = v_vTexcoord; + vec2 cnt = center / dimension; + + if(axis == 0) + pos.x += (pos.y - cnt.y) * amount; + else + pos.y += (pos.x - cnt.x) * amount; + + if(wrap == 1) { + if(pos.x > 1.) pos.x = fract(pos.x); + if(pos.x < 0.) pos.x = abs(fract(pos.x)); + if(pos.y > 1.) pos.y = fract(pos.y); + if(pos.y < 0.) pos.y = abs(fract(pos.y)); + } + + gl_FragColor = texture2D( gm_BaseTexture, pos ); +} diff --git a/shaders/sh_skew/sh_skew.vsh b/shaders/sh_skew/sh_skew.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_skew/sh_skew.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_skew/sh_skew.yy b/shaders/sh_skew/sh_skew.yy new file mode 100644 index 000000000..72c8c2d9d --- /dev/null +++ b/shaders/sh_skew/sh_skew.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_skew", + "type": 1, + "parent": { + "name": "warp", + "path": "folders/shader/warp.yy", + }, +} \ No newline at end of file diff --git a/shaders/sh_time_remap/sh_time_remap.yy b/shaders/sh_time_remap/sh_time_remap.yy index ecd8c1d5c..3a364c233 100644 --- a/shaders/sh_time_remap/sh_time_remap.yy +++ b/shaders/sh_time_remap/sh_time_remap.yy @@ -4,7 +4,7 @@ "name": "sh_time_remap", "type": 1, "parent": { - "name": "shader", - "path": "folders/shader.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/shaders/sh_twirl/sh_twirl.yy b/shaders/sh_twirl/sh_twirl.yy index 6272c9af1..f208f1880 100644 --- a/shaders/sh_twirl/sh_twirl.yy +++ b/shaders/sh_twirl/sh_twirl.yy @@ -4,7 +4,7 @@ "name": "sh_twirl", "type": 1, "parent": { - "name": "filter", - "path": "folders/shader/filter.yy", + "name": "warp", + "path": "folders/shader/warp.yy", }, } \ No newline at end of file diff --git a/sprites/s_node_gradient_4points/abd83f15-feb3-4ac6-8ffd-017983ca7868.png b/sprites/s_node_gradient_4points/abd83f15-feb3-4ac6-8ffd-017983ca7868.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b6de3776bd2f4ae477604364aa71420d710eff GIT binary patch literal 4943 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",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"554900d9-45b5-41db-bdc0-ec3fb40ade67","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"abd83f15-feb3-4ac6-8ffd-017983ca7868","path":"sprites/s_node_gradient_4points/s_node_gradient_4points.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"e74a6c99-28cc-4051-acb1-10c3415260c7","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_grid_hex/300b1c8d-d912-46d0-998f-359d85723ca8.png b/sprites/s_node_grid_hex/300b1c8d-d912-46d0-998f-359d85723ca8.png new file mode 100644 index 0000000000000000000000000000000000000000..6db8c614378bf4817cbd70fa1bd768f8b43761e4 GIT binary patch literal 1892 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",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"16abb3e9-7767-4bd8-9ae0-89d2f9928909","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"300b1c8d-d912-46d0-998f-359d85723ca8","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c05c1de6-236e-42e9-9a4d-6d6186df411d","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_grid_tri/d667ddb0-a6c7-4893-b4fc-993bc01299cb.png b/sprites/s_node_grid_tri/d667ddb0-a6c7-4893-b4fc-993bc01299cb.png new file mode 100644 index 0000000000000000000000000000000000000000..5d074eb727f61bbad59bb4883ebe6d37aaeb0c62 GIT binary patch literal 2240 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 O0000&cOvR_dTde|Q!C=xf5O^|?KCI`Jl z$X^unAmj%x@sz)y;2|VGM(`y0xrEh=3FsvR*Q(|9P`{?Dr)LsYvYUeD|C#RUsjjYm zU0pSkuB@yiirOesy5c^kB`RH%f>QB+f=Z9da> zwls;cwx|r90(u){@Q%hX=2nXJzFy5fL_FrUQ@}>0c50#h@{JqGh4Viozg@k$#xmVo zdTQ6MLnpE-*rWE-!yfga5Ij|1YWR!2f@!yhUX>LauG#eGJ!sfcNhR z-f{45#r5yt^%76u)2+!pq<~|-`qW~4cK7b%R7@%655C{V;BQg+mCB1$_AZ?Kta3>a zZ-&8N$F0YyJWsq?1aB9E|B1>okYR#&NA`C`jQaHyP$9%4^poQK?XX^u$5e=HaXfaLO8Bt zK`nBMTO!^bc$a`hIh+)WoP{hx$$jGOz=ATNP~TXRx)#t857aX_hs(BV&%#gf^6;4? zW^kWqFL^I>9k=mW5SH8&mYn2m!}{i^O>S6_Y#*HQDI+)p8VlX~odLB?Kfu_NmdqAxOng(&ZRbK7`&&kwS zYJ=bm4}>~=S9Hdmo7;*qNd~n8255$O9jN`xeZ=s>T3F^YEGzxL&9V#7tfzp5QBY&E z+)U+4g~K6D(t+A(A7}=6C8(VipgD}-?LrBYkhuh!b^L%8amj;E08sLN66y9Pu%xEE zYz@weV#&$OSagJxklZs*a6M6KRglIWBF)VJ(eI$`Il9mHDhZ~@X813aO)%q5Brh+$ zIl+4{1fGhw2i$Nnze2oxZ>5$3K<=TRLm<;rlZ0*0f##=FK45+xSk+p_wl}AEGi<3r z@Wr;bPsz+A<=(-rpoZM#vlw;dt(EO14dJ=+_JT(tFkUa<9y#Td5Vi$3| zry%nTwng?m>M4MzBOMngq^Z`CY&ouv4iw-IB{ab!tCa*0E79>xaeZeb1vt;V9pvJCniIho7Q0oZL%p*KC32G8FEl<<6*C$O0n%3^r z%oR>-lAy+BKhU6A!CQbD?rG30kp?x!Ao^{2K-0_H6a%adC8+Tr`WiGXQYM*4EIG+5 zK~09mOX0E)!o9IoNux-39Mo zRlE-lLro4tNr13*4OP7DIm=U1ygD7vX55Nd$Hd#h5=aE^L`0CL(P1b=MWB*OUw~Sb zuP+@J4tyj6)M6q=ZoMz!S)~AM9ZH)pc>jQ%w#$=T+mf9AO`%F@ux!a!hrb(*YfX)of z7&(EY!qb!iSnH%I+ea&4)-cK37pN4z{#jpE2{UMAcY;|ZmE9RRE2sdhFRK*H4Wt1D zBs$TF0h-wzUJk+}HK+x%JA4lo;Z<}65o zW;-G$AhSw7&>SHvR-r(1tgZrb32OWsncW$9K+UyZ3ZcBp3FN?q5@^O`m7tJJjU`?I z3!^5P)y(clP&*Nu-SL3h2?I1kysNPaT(5#AkEON(Kn~R2i#T%^q(JRZ&Fqc@wL>x4 z9V1rZWDY7WwJNBi6;Hc;4Gu{h*KeBL*(9?&HF=%PXNmX0VW>(=R%Xbpo!cTg>h;t# zVF}FP)wgW`!0AZdK7i2i*2yXjfE!L`4whuK4@2{#fy#qaKH-k5e0@)#@@*>L@PHz- zN-{U#cw@6l($oA1*&!EzO=>BCNCqmupiVYNzLKT`mEThP7iwgcitG+}55#1ZFk!jy zQ&{GAL;$w70%q~MY6WVaHIJXvMuxhIKxt%FX(YSj3&0YumFJV5X08LUO%&h@RF*t7 zQRgW4WOwx28>OrgX0Y@YiYEZuGnQP*)2zw~R4Jh3??=3nW@dL7H=qP>Rtfj4+(0m^ z1X(Ok(*fx*{IXs>tqyvPxC2?#ZlDZ4gW@_=To zv7{9bG&_`_hS%j|vpX8plGyBy0=46KT|V~Jy?P4x<vT-%vN}9 zO^839_`V_U4lDov@Rlvf6FYbESWM=Wirdykh`+IU_02aL%5>k*5-Xs)4nLEPrLI$e zb5J%CU2zIvaxXcU@71p};%#$v3r+>1x7PW`({koZA5SwmC2XkA=l=tzR55As%*f0D O0000",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"ed528229-b665-4fc6-84b7-f52b7eaebbfa","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d667ddb0-a6c7-4893-b4fc-993bc01299cb","path":"sprites/s_node_grid_tri/s_node_grid_tri.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"85eff2e7-5aad-40d1-91b9-18aedd27f8a4","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file