Inline arrays

This commit is contained in:
Tanasart 2023-12-20 20:02:49 +07:00
parent bfa9f7f6a5
commit 36bfafb4d7
61 changed files with 1090 additions and 298 deletions

View file

@ -44,6 +44,7 @@
{"name":"bones","order":18,"path":"folders/functions/bones.yy",},
{"name":"buffer","order":35,"path":"folders/functions/buffer.yy",},
{"name":"compat","order":13,"path":"folders/functions/compat.yy",},
{"name":"connection","order":44,"path":"folders/functions/connection.yy",},
{"name":"control","order":22,"path":"folders/functions/control.yy",},
{"name":"curve","order":12,"path":"folders/functions/curve.yy",},
{"name":"debug","order":14,"path":"folders/functions/debug.yy",},
@ -120,10 +121,13 @@
{"name":"IO","order":1,"path":"folders/nodes/data/IO.yy",},
{"name":"network","order":15,"path":"folders/nodes/data/IO/network.yy",},
{"name":"iterate","order":9,"path":"folders/nodes/data/iterate.yy",},
{"name":"_legacy","order":12,"path":"folders/nodes/data/iterate/_legacy.yy",},
{"name":"for filter","order":1,"path":"folders/nodes/data/iterate/_legacy/for filter.yy",},
{"name":"for sort","order":2,"path":"folders/nodes/data/iterate/_legacy/for sort.yy",},
{"name":"feedback","order":7,"path":"folders/nodes/data/iterate/feedback.yy",},
{"name":"for each","order":1,"path":"folders/nodes/data/iterate/for each.yy",},
{"name":"for filter","order":3,"path":"folders/nodes/data/iterate/for filter.yy",},
{"name":"for sort","order":5,"path":"folders/nodes/data/iterate/for sort.yy",},
{"name":"for each","order":9,"path":"folders/nodes/data/iterate/for each.yy",},
{"name":"for filter","order":10,"path":"folders/nodes/data/iterate/for filter.yy",},
{"name":"for sort inline","order":11,"path":"folders/nodes/data/iterate/for sort inline.yy",},
{"name":"lua","order":12,"path":"folders/nodes/data/lua.yy",},
{"name":"misc","order":10,"path":"folders/nodes/data/misc.yy",},
{"name":"MK effects","order":24,"path":"folders/nodes/data/MK effects.yy",},
@ -141,11 +145,11 @@
{"name":"effect","order":4,"path":"folders/nodes/data/pixel builder/effect.yy",},
{"name":"render","order":3,"path":"folders/nodes/data/render.yy",},
{"name":"simulation","order":16,"path":"folders/nodes/data/simulation.yy",},
{"name":"smokeSim","order":2,"path":"folders/nodes/data/simulation/smokeSim.yy",},
{"name":"strandSim","order":1,"path":"folders/nodes/data/simulation/strandSim.yy",},
{"name":"VFX","order":3,"path":"folders/nodes/data/simulation/VFX.yy",},
{"name":"smokeSim","order":1,"path":"folders/nodes/data/simulation/smokeSim.yy",},
{"name":"strandSim","order":3,"path":"folders/nodes/data/simulation/strandSim.yy",},
{"name":"VFX","order":2,"path":"folders/nodes/data/simulation/VFX.yy",},
{"name":"affector","order":9,"path":"folders/nodes/data/simulation/VFX/affector.yy",},
{"name":"effects","order":11,"path":"folders/nodes/data/simulation/VFX/effects.yy",},
{"name":"effects","order":10,"path":"folders/nodes/data/simulation/VFX/effects.yy",},
{"name":"transform","order":8,"path":"folders/nodes/data/transform.yy",},
{"name":"value","order":4,"path":"folders/nodes/data/value.yy",},
{"name":"array","order":1,"path":"folders/nodes/data/value/array.yy",},
@ -300,7 +304,7 @@
{"name":"s_node_frame","order":1,"path":"sprites/s_node_frame/s_node_frame.yy",},
{"name":"sh_mk_tile18_edge_r","order":2,"path":"shaders/sh_mk_tile18_edge_r/sh_mk_tile18_edge_r.yy",},
{"name":"node_active_canvas","order":22,"path":"scripts/node_active_canvas/node_active_canvas.yy",},
{"name":"node_VFX_group_inline","order":12,"path":"scripts/node_VFX_group_inline/node_VFX_group_inline.yy",},
{"name":"node_VFX_group_inline","order":11,"path":"scripts/node_VFX_group_inline/node_VFX_group_inline.yy",},
{"name":"s_node_fluidSim_turbulence","order":10,"path":"sprites/s_node_fluidSim_turbulence/s_node_fluidSim_turbulence.yy",},
{"name":"node_pb_fx_hash","order":7,"path":"scripts/node_pb_fx_hash/node_pb_fx_hash.yy",},
{"name":"sh_pb_draw_mask","order":8,"path":"shaders/sh_pb_draw_mask/sh_pb_draw_mask.yy",},
@ -439,7 +443,7 @@
{"name":"sh_mk_tile18_edge_l","order":1,"path":"shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.yy",},
{"name":"sh_palette_shift","order":19,"path":"shaders/sh_palette_shift/sh_palette_shift.yy",},
{"name":"node_array_copy","order":14,"path":"scripts/node_array_copy/node_array_copy.yy",},
{"name":"draw_line_elbow","order":17,"path":"scripts/draw_line_elbow/draw_line_elbow.yy",},
{"name":"draw_connect_elbow","order":1,"path":"scripts/draw_connect_elbow/draw_connect_elbow.yy",},
{"name":"node_path_reverse","order":8,"path":"scripts/node_path_reverse/node_path_reverse.yy",},
{"name":"fd_rectangle_get_acceleration_y","order":3,"path":"scripts/fd_rectangle_get_acceleration_y/fd_rectangle_get_acceleration_y.yy",},
{"name":"sh_simplex","order":7,"path":"shaders/sh_simplex/sh_simplex.yy",},
@ -678,6 +682,7 @@
{"name":"s_ui_base_white","order":2,"path":"sprites/s_ui_base_white/s_ui_base_white.yy",},
{"name":"node_color_mix","order":14,"path":"scripts/node_color_mix/node_color_mix.yy",},
{"name":"s_node_array_range","order":6,"path":"sprites/s_node_array_range/s_node_array_range.yy",},
{"name":"node_iterator_each_inline_output","order":2,"path":"scripts/node_iterator_each_inline_output/node_iterator_each_inline_output.yy",},
{"name":"sh_fd_advect_material_a_16_glsl","order":2,"path":"shaders/sh_fd_advect_material_a_16_glsl/sh_fd_advect_material_a_16_glsl.yy",},
{"name":"distribution_function","order":12,"path":"scripts/distribution_function/distribution_function.yy",},
{"name":"sh_blur_radial","order":9,"path":"shaders/sh_blur_radial/sh_blur_radial.yy",},
@ -739,6 +744,7 @@
{"name":"node_unicode","order":1,"path":"scripts/node_unicode/node_unicode.yy",},
{"name":"draw_set_text","order":1,"path":"scripts/draw_set_text/draw_set_text.yy",},
{"name":"node_pb_draw","order":1,"path":"scripts/node_pb_draw/node_pb_draw.yy",},
{"name":"node_iterator_filter_inline_output","order":2,"path":"scripts/node_iterator_filter_inline_output/node_iterator_filter_inline_output.yy",},
{"name":"s_node_warp","order":9,"path":"sprites/s_node_warp/s_node_warp.yy",},
{"name":"s_node_surface_from_buffer","order":1,"path":"sprites/s_node_surface_from_buffer/s_node_surface_from_buffer.yy",},
{"name":"node_iterator_filter_output","order":2,"path":"scripts/node_iterator_filter_output/node_iterator_filter_output.yy",},
@ -757,7 +763,7 @@
{"name":"node_rigid_global","order":5,"path":"scripts/node_rigid_global/node_rigid_global.yy",},
{"name":"sh_rsh_erode","order":2,"path":"shaders/sh_rsh_erode/sh_rsh_erode.yy",},
{"name":"node_chromatic_aberration","order":4,"path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},
{"name":"draw_line_elbow_diag","order":18,"path":"scripts/draw_line_elbow_diag/draw_line_elbow_diag.yy",},
{"name":"draw_connect_elbow_diag","order":2,"path":"scripts/draw_connect_elbow_diag/draw_connect_elbow_diag.yy",},
{"name":"s_node_mk_flag","order":5,"path":"sprites/s_node_mk_flag/s_node_mk_flag.yy",},
{"name":"node_pin","order":2,"path":"scripts/node_pin/node_pin.yy",},
{"name":"_node_fluid_nodes","order":7,"path":"scripts/_node_fluid_nodes/_node_fluid_nodes.yy",},
@ -1188,6 +1194,7 @@
{"name":"s_node_vfx_input","order":12,"path":"sprites/s_node_vfx_input/s_node_vfx_input.yy",},
{"name":"s_node_interpret_number","order":30,"path":"sprites/s_node_interpret_number/s_node_interpret_number.yy",},
{"name":"node_strand_force_apply","order":6,"path":"scripts/node_strand_force_apply/node_strand_force_apply.yy",},
{"name":"node_iterator_sort_inline_input","order":1,"path":"scripts/node_iterator_sort_inline_input/node_iterator_sort_inline_input.yy",},
{"name":"sh_seperate_shape_ite","order":2,"path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},
{"name":"node_PCX_fn_surface_width","order":1,"path":"scripts/node_PCX_fn_surface_width/node_PCX_fn_surface_width.yy",},
{"name":"o_main","order":1,"path":"objects/o_main/o_main.yy",},
@ -1226,6 +1233,7 @@
{"name":"sh_channel_R2B","order":12,"path":"shaders/sh_channel_R2B/sh_channel_R2B.yy",},
{"name":"s_node_voronoi_extra","order":36,"path":"sprites/s_node_voronoi_extra/s_node_voronoi_extra.yy",},
{"name":"s_node_smokeSim_domain","order":11,"path":"sprites/s_node_smokeSim_domain/s_node_smokeSim_domain.yy",},
{"name":"node_iterator_each_inline_input","order":1,"path":"scripts/node_iterator_each_inline_input/node_iterator_each_inline_input.yy",},
{"name":"s_node_rigidSim_activate","order":6,"path":"sprites/s_node_rigidSim_activate/s_node_rigidSim_activate.yy",},
{"name":"s_transparent","order":1,"path":"sprites/s_transparent/s_transparent.yy",},
{"name":"s_gizmo","order":4,"path":"sprites/s_gizmo/s_gizmo.yy",},
@ -1356,6 +1364,7 @@
{"name":"draw_rect_border","order":6,"path":"scripts/draw_rect_border/draw_rect_border.yy",},
{"name":"node_composite","order":1,"path":"scripts/node_composite/node_composite.yy",},
{"name":"s_node_path_map","order":2,"path":"sprites/s_node_path_map/s_node_path_map.yy",},
{"name":"node_iterator_filter_inline_input","order":1,"path":"scripts/node_iterator_filter_inline_input/node_iterator_filter_inline_input.yy",},
{"name":"s_node_greyscale","order":26,"path":"sprites/s_node_greyscale/s_node_greyscale.yy",},
{"name":"sh_dilate","order":4,"path":"shaders/sh_dilate/sh_dilate.yy",},
{"name":"node_image_sequence","order":1,"path":"scripts/node_image_sequence/node_image_sequence.yy",},
@ -1438,6 +1447,7 @@
{"name":"mouse_input","order":1,"path":"scripts/mouse_input/mouse_input.yy",},
{"name":"string_cut","order":2,"path":"scripts/string_cut/string_cut.yy",},
{"name":"__node_3d_prim_cylinder","order":2,"path":"scripts/__node_3d_prim_cylinder/__node_3d_prim_cylinder.yy",},
{"name":"node_iterator_sort_inline_output","order":2,"path":"scripts/node_iterator_sort_inline_output/node_iterator_sort_inline_output.yy",},
{"name":"Obj_FirebaseFirestore_Collection_Query_options","order":10,"path":"objects/Obj_FirebaseFirestore_Collection_Query_options/Obj_FirebaseFirestore_Collection_Query_options.yy",},
{"name":"stack_functions","order":7,"path":"scripts/stack_functions/stack_functions.yy",},
{"name":"panel_nodes","order":2,"path":"scripts/panel_nodes/panel_nodes.yy",},
@ -1618,7 +1628,6 @@
{"name":"s_node_dilate","order":19,"path":"sprites/s_node_dilate/s_node_dilate.yy",},
{"name":"panel_patreon","order":2,"path":"scripts/panel_patreon/panel_patreon.yy",},
{"name":"node_value","order":5,"path":"scripts/node_value/node_value.yy",},
{"name":"draw_line_curve","order":5,"path":"scripts/draw_line_curve/draw_line_curve.yy",},
{"name":"sh_blend_screen","order":3,"path":"shaders/sh_blend_screen/sh_blend_screen.yy",},
{"name":"node_group_output","order":2,"path":"scripts/node_group_output/node_group_output.yy",},
{"name":"s_node_palette_extract","order":12,"path":"sprites/s_node_palette_extract/s_node_palette_extract.yy",},
@ -1659,6 +1668,7 @@
{"name":"directory_functions","order":9,"path":"scripts/directory_functions/directory_functions.yy",},
{"name":"_f_p1","order":1,"path":"fonts/_f_p1/_f_p1.yy",},
{"name":"tuple_functions","order":5,"path":"scripts/tuple_functions/tuple_functions.yy",},
{"name":"draw_connect_linear","order":3,"path":"scripts/draw_connect_linear/draw_connect_linear.yy",},
{"name":"node_3d_mesh_obj","order":2,"path":"scripts/node_3d_mesh_obj/node_3d_mesh_obj.yy",},
{"name":"sh_blur_simple","order":6,"path":"shaders/sh_blur_simple/sh_blur_simple.yy",},
{"name":"sh_blend_difference","order":51,"path":"shaders/sh_blend_difference/sh_blend_difference.yy",},

View file

@ -66,6 +66,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"bones","folderPath":"folders/functions/bones.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"buffer","folderPath":"folders/functions/buffer.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"compat","folderPath":"folders/functions/compat.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"connection","folderPath":"folders/functions/connection.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"control","folderPath":"folders/functions/control.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"curve","folderPath":"folders/functions/curve.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"debug","folderPath":"folders/functions/debug.yy",},
@ -146,10 +147,14 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"IO","folderPath":"folders/nodes/data/IO.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"network","folderPath":"folders/nodes/data/IO/network.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"iterate","folderPath":"folders/nodes/data/iterate.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"_legacy","folderPath":"folders/nodes/data/iterate/_legacy.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for each","folderPath":"folders/nodes/data/iterate/_legacy/for each.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for filter","folderPath":"folders/nodes/data/iterate/_legacy/for filter.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for sort","folderPath":"folders/nodes/data/iterate/_legacy/for sort.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"feedback","folderPath":"folders/nodes/data/iterate/feedback.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for each","folderPath":"folders/nodes/data/iterate/for each.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for filter","folderPath":"folders/nodes/data/iterate/for filter.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for sort","folderPath":"folders/nodes/data/iterate/for sort.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for sort inline","folderPath":"folders/nodes/data/iterate/for sort inline.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"for","folderPath":"folders/nodes/data/iterate/for.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"lua","folderPath":"folders/nodes/data/lua.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"misc","folderPath":"folders/nodes/data/misc.yy",},
@ -656,7 +661,7 @@
{"id":{"name":"sh_mk_tile18_edge_l","path":"shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.yy",},},
{"id":{"name":"sh_palette_shift","path":"shaders/sh_palette_shift/sh_palette_shift.yy",},},
{"id":{"name":"node_array_copy","path":"scripts/node_array_copy/node_array_copy.yy",},},
{"id":{"name":"draw_line_elbow","path":"scripts/draw_line_elbow/draw_line_elbow.yy",},},
{"id":{"name":"draw_connect_elbow","path":"scripts/draw_connect_elbow/draw_connect_elbow.yy",},},
{"id":{"name":"node_path_reverse","path":"scripts/node_path_reverse/node_path_reverse.yy",},},
{"id":{"name":"fd_rectangle_get_acceleration_y","path":"scripts/fd_rectangle_get_acceleration_y/fd_rectangle_get_acceleration_y.yy",},},
{"id":{"name":"sh_simplex","path":"shaders/sh_simplex/sh_simplex.yy",},},
@ -923,6 +928,7 @@
{"id":{"name":"s_ui_base_white","path":"sprites/s_ui_base_white/s_ui_base_white.yy",},},
{"id":{"name":"node_color_mix","path":"scripts/node_color_mix/node_color_mix.yy",},},
{"id":{"name":"s_node_array_range","path":"sprites/s_node_array_range/s_node_array_range.yy",},},
{"id":{"name":"node_iterator_each_inline_output","path":"scripts/node_iterator_each_inline_output/node_iterator_each_inline_output.yy",},},
{"id":{"name":"sh_fd_advect_material_a_16_glsl","path":"shaders/sh_fd_advect_material_a_16_glsl/sh_fd_advect_material_a_16_glsl.yy",},},
{"id":{"name":"distribution_function","path":"scripts/distribution_function/distribution_function.yy",},},
{"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},},
@ -1000,6 +1006,7 @@
{"id":{"name":"node_unicode","path":"scripts/node_unicode/node_unicode.yy",},},
{"id":{"name":"draw_set_text","path":"scripts/draw_set_text/draw_set_text.yy",},},
{"id":{"name":"node_pb_draw","path":"scripts/node_pb_draw/node_pb_draw.yy",},},
{"id":{"name":"node_iterator_filter_inline_output","path":"scripts/node_iterator_filter_inline_output/node_iterator_filter_inline_output.yy",},},
{"id":{"name":"s_node_array","path":"sprites/s_node_array/s_node_array.yy",},},
{"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},},
{"id":{"name":"s_node_surface_from_buffer","path":"sprites/s_node_surface_from_buffer/s_node_surface_from_buffer.yy",},},
@ -1020,7 +1027,7 @@
{"id":{"name":"node_rigid_global","path":"scripts/node_rigid_global/node_rigid_global.yy",},},
{"id":{"name":"sh_rsh_erode","path":"shaders/sh_rsh_erode/sh_rsh_erode.yy",},},
{"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},},
{"id":{"name":"draw_line_elbow_diag","path":"scripts/draw_line_elbow_diag/draw_line_elbow_diag.yy",},},
{"id":{"name":"draw_connect_elbow_diag","path":"scripts/draw_connect_elbow_diag/draw_connect_elbow_diag.yy",},},
{"id":{"name":"s_node_mk_flag","path":"sprites/s_node_mk_flag/s_node_mk_flag.yy",},},
{"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},},
{"id":{"name":"_node_fluid_nodes","path":"scripts/_node_fluid_nodes/_node_fluid_nodes.yy",},},
@ -1419,6 +1426,7 @@
{"id":{"name":"fd_rectangle_set_material_maccormack_weight","path":"scripts/fd_rectangle_set_material_maccormack_weight/fd_rectangle_set_material_maccormack_weight.yy",},},
{"id":{"name":"collection_data","path":"scripts/collection_data/collection_data.yy",},},
{"id":{"name":"s_node_flood_fill","path":"sprites/s_node_flood_fill/s_node_flood_fill.yy",},},
{"id":{"name":"node_iterate_each_inline","path":"scripts/node_iterate_each_inline/node_iterate_each_inline.yy",},},
{"id":{"name":"json_compare","path":"scripts/json_compare/json_compare.yy",},},
{"id":{"name":"node_rigid_force_apply","path":"scripts/node_rigid_force_apply/node_rigid_force_apply.yy",},},
{"id":{"name":"__node_shader","path":"scripts/__node_shader/__node_shader.yy",},},
@ -1504,6 +1512,7 @@
{"id":{"name":"s_node_vfx_input","path":"sprites/s_node_vfx_input/s_node_vfx_input.yy",},},
{"id":{"name":"s_node_interpret_number","path":"sprites/s_node_interpret_number/s_node_interpret_number.yy",},},
{"id":{"name":"node_strand_force_apply","path":"scripts/node_strand_force_apply/node_strand_force_apply.yy",},},
{"id":{"name":"node_iterator_sort_inline_input","path":"scripts/node_iterator_sort_inline_input/node_iterator_sort_inline_input.yy",},},
{"id":{"name":"s_node_rigidSim","path":"sprites/s_node_rigidSim/s_node_rigidSim.yy",},},
{"id":{"name":"sh_seperate_shape_ite","path":"shaders/sh_seperate_shape_ite/sh_seperate_shape_ite.yy",},},
{"id":{"name":"node_PCX_fn_surface_width","path":"scripts/node_PCX_fn_surface_width/node_PCX_fn_surface_width.yy",},},
@ -1547,6 +1556,7 @@
{"id":{"name":"sh_channel_R2B","path":"shaders/sh_channel_R2B/sh_channel_R2B.yy",},},
{"id":{"name":"s_node_voronoi_extra","path":"sprites/s_node_voronoi_extra/s_node_voronoi_extra.yy",},},
{"id":{"name":"s_node_smokeSim_domain","path":"sprites/s_node_smokeSim_domain/s_node_smokeSim_domain.yy",},},
{"id":{"name":"node_iterator_each_inline_input","path":"scripts/node_iterator_each_inline_input/node_iterator_each_inline_input.yy",},},
{"id":{"name":"s_node_rigidSim_activate","path":"sprites/s_node_rigidSim_activate/s_node_rigidSim_activate.yy",},},
{"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},},
{"id":{"name":"s_gizmo","path":"sprites/s_gizmo/s_gizmo.yy",},},
@ -1567,6 +1577,7 @@
{"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},},
{"id":{"name":"node_twirl","path":"scripts/node_twirl/node_twirl.yy",},},
{"id":{"name":"node_collection_inline","path":"scripts/node_collection_inline/node_collection_inline.yy",},},
{"id":{"name":"node_iterate_filter_inline","path":"scripts/node_iterate_filter_inline/node_iterate_filter_inline.yy",},},
{"id":{"name":"s_node_fluidSim_update_paused","path":"sprites/s_node_fluidSim_update_paused/s_node_fluidSim_update_paused.yy",},},
{"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},},
{"id":{"name":"s_node_text_combine","path":"sprites/s_node_text_combine/s_node_text_combine.yy",},},
@ -1694,6 +1705,7 @@
{"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},},
{"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},},
{"id":{"name":"s_node_path_map","path":"sprites/s_node_path_map/s_node_path_map.yy",},},
{"id":{"name":"node_iterator_filter_inline_input","path":"scripts/node_iterator_filter_inline_input/node_iterator_filter_inline_input.yy",},},
{"id":{"name":"s_node_greyscale","path":"sprites/s_node_greyscale/s_node_greyscale.yy",},},
{"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},},
{"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},},
@ -1796,6 +1808,7 @@
{"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},},
{"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},},
{"id":{"name":"__node_3d_prim_cylinder","path":"scripts/__node_3d_prim_cylinder/__node_3d_prim_cylinder.yy",},},
{"id":{"name":"node_iterator_sort_inline_output","path":"scripts/node_iterator_sort_inline_output/node_iterator_sort_inline_output.yy",},},
{"id":{"name":"Obj_FirebaseFirestore_Collection_Query_options","path":"objects/Obj_FirebaseFirestore_Collection_Query_options/Obj_FirebaseFirestore_Collection_Query_options.yy",},},
{"id":{"name":"stack_functions","path":"scripts/stack_functions/stack_functions.yy",},},
{"id":{"name":"panel_nodes","path":"scripts/panel_nodes/panel_nodes.yy",},},
@ -1988,6 +2001,7 @@
{"id":{"name":"s_node_export","path":"sprites/s_node_export/s_node_export.yy",},},
{"id":{"name":"FirebaseREST_Firestore_jsonEncode","path":"scripts/FirebaseREST_Firestore_jsonEncode/FirebaseREST_Firestore_jsonEncode.yy",},},
{"id":{"name":"texture_set_interpolation","path":"scripts/texture_set_interpolation/texture_set_interpolation.yy",},},
{"id":{"name":"node_iterate_sort_inline","path":"scripts/node_iterate_sort_inline/node_iterate_sort_inline.yy",},},
{"id":{"name":"node_color_palette_replacement","path":"scripts/node_color_palette_replacement/node_color_palette_replacement.yy",},},
{"id":{"name":"d3d_object_instancer","path":"scripts/d3d_object_instancer/d3d_object_instancer.yy",},},
{"id":{"name":"sh_BGR","path":"shaders/sh_BGR/sh_BGR.yy",},},
@ -2004,7 +2018,7 @@
{"id":{"name":"panel_patreon","path":"scripts/panel_patreon/panel_patreon.yy",},},
{"id":{"name":"node_collection","path":"scripts/node_collection/node_collection.yy",},},
{"id":{"name":"node_value","path":"scripts/node_value/node_value.yy",},},
{"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},},
{"id":{"name":"draw_connect_curve","path":"scripts/draw_connect_curve/draw_connect_curve.yy",},},
{"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},},
{"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},},
{"id":{"name":"s_node_palette_extract","path":"sprites/s_node_palette_extract/s_node_palette_extract.yy",},},
@ -2050,6 +2064,7 @@
{"id":{"name":"_f_p1","path":"fonts/_f_p1/_f_p1.yy",},},
{"id":{"name":"tuple_functions","path":"scripts/tuple_functions/tuple_functions.yy",},},
{"id":{"name":"curve_bezier_function","path":"scripts/curve_bezier_function/curve_bezier_function.yy",},},
{"id":{"name":"draw_connect_linear","path":"scripts/draw_connect_linear/draw_connect_linear.yy",},},
{"id":{"name":"node_3d_mesh_obj","path":"scripts/node_3d_mesh_obj/node_3d_mesh_obj.yy",},},
{"id":{"name":"sh_blur_simple","path":"shaders/sh_blur_simple/sh_blur_simple.yy",},},
{"id":{"name":"sh_blend_difference","path":"shaders/sh_blend_difference/sh_blend_difference.yy",},},

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -126,8 +126,6 @@ if(!ready) exit;
draw_text(_bx, _by, _str);
}
} else {
var tx = dialog_x + show_icon * ui(32) + ui(16);
if(_menuItem.spr != noone) {
var spr = is_array(_menuItem.spr)? _menuItem.spr[0] : _menuItem.spr;
var ind = is_array(_menuItem.spr)? _menuItem.spr[1] : 0;
@ -139,6 +137,7 @@ if(!ready) exit;
if(tog) draw_sprite_ui(THEME.icon_toggle, 0, dialog_x + ui(24), yy + hght / 2,,,, COLORS._main_icon);
}
var tx = dialog_x + show_icon * ui(32) + ui(16);
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_set_alpha(_menuItem.active * 0.75 + 0.25);
draw_text(tx, yy + hght / 2, label);

View file

@ -1,4 +1,22 @@
/// @description Insert description here
// You can write your code in this editor
depth = -9999;
#region data
depth = -9999;
menu_id = "";
menus = [];
pie_rad = ui(96);
hght = ui(36);
context = noone;
active = true;
anim_prog = 0;
function setMenu(menu) {
menus = menu;
}
HOVER = self;
FOCUS = self;
#endregion

View file

@ -0,0 +1,84 @@
/// @description Insert description here
// You can write your code in this editor
#region anim
anim_prog = lerp_float(anim_prog, active, 5);
if(anim_prog == 0 && !active) instance_destroy();
#endregion
#region draw
var rad = anim_prog * pie_rad;
var amo = array_length(menus);
var _r = 360 / amo;
for( var i = 0; i < amo; i++ ) {
var _menuItem = menus[i];
var label = _menuItem.name;
var _ba = i * _r;
var _bx = x + lengthdir_x(rad, _ba);
var _by = y + lengthdir_y(rad, _ba);
var _spr = _menuItem.spr;
draw_set_font(f_p0);
var _spw = string_width(label) + ui(32) + (_spr != noone) * ui(32);
_spw = max(8, _spw * anim_prog);
var _sph = hght;
var _bx0 = _bx - _spw / 2;
var _by0 = _by - _sph / 2;
var _bx1 = _bx + _spw / 2;
var _by1 = _by + _sph / 2;
draw_sprite_stretched(THEME.menu_bg, 0, _bx0, _by0, _spw, _sph);
if(point_in_rectangle(mouse_mx, mouse_my, _bx0, _by0, _bx1, _by1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, _bx0, _by0, _spw, _sph, COLORS.dialog_menubox_highlight, 0.75);
if(mouse_release(mb_left)) {
var _dat = {
_x: _bx0,
x: _bx1,
y: _by0,
depth: depth,
name: _menuItem.name,
index: i,
context: context,
params: _menuItem.params,
};
var _res = _menuItem.func(_dat);
}
}
if(_spr != noone) {
var spr = is_array(_spr)? _spr[0] : _spr;
var ind = is_array(_spr)? _spr[1] : 0;
var aa = _menuItem.active * 0.5 + 0.25;
draw_sprite_ui(spr, ind, _bx0 + ui(24), _by0 + _sph / 2,,,, COLORS._main_icon, aa * anim_prog);
}
if(_menuItem.toggle != noone) {
var tog = _menuItem.toggle(_menuItem);
if(tog) draw_sprite_ui(THEME.icon_toggle, 0, _bx0 + ui(24), _by0 + _sph / 2,,,, COLORS._main_icon);
}
var tx = _bx0 + ui(16) + (_spr != noone) * ui(32);
var aa = _menuItem.active * 0.75 + 0.25;
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_set_alpha(aa * anim_prog);
draw_text(tx, _by0 + _sph / 2, label);
draw_set_alpha(1);
draw_sprite_stretched(THEME.menu_bg, 1, _bx0, _by0, _spw, _sph);
}
if(mouse_release(mb_left)) {
HOVER = noone;
FOCUS = noone;
active = false;
}
#endregion

View file

@ -4,6 +4,7 @@
"name": "o_pie_menu",
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,},
],
"managed": true,
"overriddenProperties": [],

View file

@ -1,80 +0,0 @@
function Node_Iterator_Inject() {
selectable = false;
draw_line_shift_x = 0;
draw_line_shift_y = 0;
draw_line_thick = 1;
draw_line_shift_hover = false;
attributes.junc_in = [ "", 0 ];
attributes.junc_out = [ "", 0 ];
junc_in = noone;
junc_out = noone;
value_buffer = noone;
static bypassConnection = function() { #region
return false;
} #endregion
static bypassNextNode = function() { #region
return false;
} #endregion
static getNextNode = function() { return [] };
static scanJunc = function() { #region
var node_in = PROJECT.nodeMap[? attributes.junc_in[0]];
var node_out = PROJECT.nodeMap[? attributes.junc_out[0]];
junc_in = node_in? node_in.inputs[| attributes.junc_in[1]] : noone;
junc_out = node_out? node_out.outputs[| attributes.junc_out[1]] : noone;
if(junc_in) junc_in.value_from_loop = self;
if(junc_out) array_push(junc_out.value_to_loop, self);
} #endregion
static updateValue = function() { #region
var type = junc_out.type;
var val = junc_out.getValue();
switch(type) {
case VALUE_TYPE.surface :
surface_array_free(value_buffer);
value_buffer = surface_array_clone(val);
break;
default :
value_buffer = variable_clone(val);
break;
}
} #endregion
static getValue = function() { #region
return [ value_buffer, junc_out ];
} #endregion
static drawConnections = function(params = {}) { #region
if(!active) return;
if(!junc_in || !junc_out) return;
if(!junc_in.node.active || !junc_out.node.active) return;
params.feedback = true;
if(drawJuncConnection(junc_out, junc_in, params, self))
return self;
} #endregion
static drawNode = function(_x, _y, _mx, _my, _s, display_parameter = noone) {}
static pointIn = function(_x, _y, _mx, _my, _s) { return false; }
static postDeserialize = function() { #region
scanJunc();
} #endregion
static onDestroy = function() { #region
if(junc_in) junc_in.value_from_loop = noone;
if(junc_out) array_remove(junc_out.value_to_loop, self);
} #endregion
}

View file

@ -16,6 +16,21 @@
dia.setMenu(menu, align);
return dia;
}
function pieMenuCall(menu_id = "", _x = mouse_mx, _y = mouse_my, menu = [], context = noone) {
var dia = instance_create(_x, _y, o_pie_menu);
if(menu_id != "" && ds_map_exists(CONTEXT_MENU_CALLBACK, menu_id)) {
var callbacks = CONTEXT_MENU_CALLBACK[? menu_id];
for( var i = 0, n = array_length(callbacks); i < n; i++ )
array_append(menu, callbacks[i].populate());
}
dia.menu_id = menu_id;
dia.context = context;
dia.setMenu(menu);
return dia;
}
function submenuCall(_data, menu = []) {
var dia = instance_create_depth(_data.x - ui(4), _data.y, _data.depth - 1, o_dialog_menubox);

View file

@ -1,41 +1,4 @@
enum LINE_STYLE {
solid,
dashed
}
function draw_line_curve(x0, y0, x1, y1, thick = 1) {
var xc = (x0 + x1) / 2;
var sample = max(8, ceil((abs(x0 - x1) + abs(y0 - y1)) / 4));
//var buff = vertex_create_buffer();
//vertex_begin(buff, global.format_pc);
var c = draw_get_color();
var ox, oy, nx, ny, t, it;
for( var i = 0; i <= sample; i++ ) {
t = i / sample;
it = 1 - t;
nx = x0 * t * t * t + 3 * xc * it * t * t + 3 * xc * it * it * t + x1 * it * it * it;
ny = y0 * t * t * t + 3 * y0 * it * t * t + 3 * y1 * it * it * t + y1 * it * it * it;
if(i) {
draw_line_width(ox, oy, nx, ny, thick);
//vertex_position(buff, ox, oy); vertex_color(buff, c, 1);
//vertex_position(buff, nx, ny); vertex_color(buff, c, 1);
}
ox = nx;
oy = ny;
}
//vertex_end(buff);
//vertex_submit(buff, pr_linelist, -1);
//buffer_delete(buff);
}
function draw_line_curve_color(x0, y0, x1, y1, xc = noone, yc = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, type = LINE_STYLE.solid) {
function draw_line_curve_color(x0, y0, x1, y1, xc = noone, yc = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, type = LINE_STYLE.solid) { #region
if(xc == noone) xc = (x0 + x1) / 2;
if(yc == noone) yc = (y0 + y1) / 2;
@ -85,9 +48,9 @@ function draw_line_curve_color(x0, y0, x1, y1, xc = noone, yc = noone, _s = 1, t
oy = ny;
oc = nc;
}
}
} #endregion
function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white) {
function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white) { #region
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREFERENCES.connection_line_sample);
sample = clamp(sample, 2, 128);
@ -121,9 +84,9 @@ function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_whit
oy = ny;
oc = nc;
}
}
} #endregion
function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) {
function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) { #region
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREFERENCES.connection_line_sample);
sample = clamp(sample, 2, 128);
@ -159,9 +122,9 @@ function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) {
}
return dist;
}
} #endregion
function distance_to_curve_corner(mx, my, x0, y0, x1, y1, _s) {
function distance_to_curve_corner(mx, my, x0, y0, x1, y1, _s) { #region
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREFERENCES.connection_line_sample);
sample = clamp(sample, 2, 128);
@ -195,4 +158,4 @@ function distance_to_curve_corner(mx, my, x0, y0, x1, y1, _s) {
}
return dist;
}
} #endregion

View file

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

View file

@ -1,4 +1,4 @@
function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { #region
var sample = corner / 4;
sample = clamp(sample, 1, 8);
@ -68,9 +68,9 @@ function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, t
draw_line_dashed_color(cx, y1, x1, y1, thick, cm, col2, 6 * _s);
}
}
}
} #endregion
function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { #region
var sample = corner / 4;
sample = clamp(sample, 1, 8);
@ -84,9 +84,9 @@ function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_whit
draw_line_round_color(x0, y0, x1 - corner * sx, y0, thick, col1, colc);
draw_line_round_color(x1, y0 + corner * sy, x1, y1, thick, colc, col2);
draw_corner(x1 - corner * sx, y0, x1, y0, x1, y0 + corner * sy, thick, colc, sample);
}
} #endregion
function distance_to_elbow(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) {
function distance_to_elbow(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) { #region
var inv = x1 - 16 * _s * indexOut <= x0 + 16 * _s * indexIn;
var xx0 = x0 + 16 * _s * indexIn;
var xx1 = x1 - 16 * _s * indexOut;
@ -104,11 +104,11 @@ function distance_to_elbow(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, inde
return dist;
}
}
} #endregion
function distance_to_elbow_corner(mx, my, x0, y0, x1, y1) {
function distance_to_elbow_corner(mx, my, x0, y0, x1, y1) { #region
var dist = distance_to_line(mx, my, x0, y0, x1, y0);
dist = min(dist, distance_to_line(mx, my, x1, y0, x1, y1));
return dist;
}
} #endregion

View file

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

View file

@ -1,4 +1,4 @@
function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, c1 = c_white, c2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, c1 = c_white, c2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { #region
var __dash = 6 * _s;
var __line = type == LINE_STYLE.solid? draw_line_width_color : draw_line_dashed_color;
@ -203,9 +203,9 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_corner(_xc1 - cor2, y1 - cor2 * iy, _xc1, y1, _xc1 + corn, y1, thick, cm, sample);
}
}
}
} #endregion
function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { #region
var sample = floor(corner / 8);
sample = clamp(sample, 0, 8);
if(sample == 0) corner = 0;
@ -228,9 +228,9 @@ function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c
//draw_circle(x1 - diag * sx, y0, 4, false);
//draw_circle(x1, y0 + diag * sy, 4, false);
}
} #endregion
function distance_to_elbow_diag(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) {
function distance_to_elbow_diag(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) { #region
var iy = sign(y1 - y0);
var xx0 = x0 + 16 * _s * indexIn;
var xx1 = x1 - 16 * _s * indexOut;
@ -327,9 +327,9 @@ function distance_to_elbow_diag(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1,
return dist;
}
}
} #endregion
function distance_to_elbow_diag_corner(mx, my, x0, y0, x1, y1) {
function distance_to_elbow_diag_corner(mx, my, x0, y0, x1, y1) { #region
var sx = sign(x1 - x0);
var sy = sign(y1 - y0);
var diag = min(abs(x0 - x1) / 2, abs(y0 - y1) / 2);
@ -340,4 +340,4 @@ function distance_to_elbow_diag_corner(mx, my, x0, y0, x1, y1) {
dist = min(dist, distance_to_line(mx, my, x1, y0 + diag * sy, x1, y1));
return dist;
}
} #endregion

View file

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

View file

@ -0,0 +1,22 @@
function draw_line_feedback(x0, y0, x1, y1, th, c1, c0, _s) { #region
draw_line_dashed_color(x0, y0, x1, y1, th, c1, c0, 6 * _s);
return;
var _y0 = y0 - 12 * _s;
var _y1 = y1 - 12 * _s;
var x0e = x0 + 12 * _s * sign(x0 - x1);
var x1e = x1 - 12 * _s * sign(x0 - x1);
draw_line_dashed_color(x0e, y0, x0e, _y0, th, c0, c0, 6 * _s);
draw_line_dashed_color(x0, y0, x0e, y0, th, c0, c0, 6 * _s);
draw_line_dashed_color(x0e, _y0, x1e, _y1, th, c1, c0, 6 * _s);
draw_line_dashed_color(x1e, y1, x1e, _y1, th, c1, c1, 6 * _s);
draw_line_dashed_color(x1e, y1, x1, y1, th, c1, c1, 6 * _s);
} #endregion
function distance_line_feedback(mx, my, x0, y0, x1, y1) { #region
return distance_to_line(mx, my, x0, y0, x1, y1);
} #endregion

View file

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

View file

@ -2,7 +2,14 @@ function Node_VFX_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inline(
name = "VFX";
color = COLORS.node_blend_vfx;
icon = THEME.vfx;
inputs[| 0] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
.rejectArray();
topoList = ds_list_create();
update_on_frame = true;
managedRenderOrder = true;
if(!LOADING && !APPENDING && !CLONING) { #region
var input = nodeBuild("Node_VFX_Spawner", x, y);
@ -14,4 +21,46 @@ function Node_VFX_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inline(
addNode(output);
} #endregion
static getNextNodes = function() { #region
return __nodeLeafList(nodes);
} #endregion
static reset = function() { #region
for( var i = 0, n = ds_list_size(nodes); i < n; i++ ) {
var node = nodes[| i];
if(!struct_has(node, "reset")) continue;
node.reset();
}
var loop = getInputData(0);
if(!loop) return;
for( var i = 0; i < TOTAL_FRAMES; i++ )
for( var j = 0, m = ds_list_size(topoList); j < m; j++ ) {
var node = topoList[| j];
var _ins = instanceof(node);
if(!string_pos("Node_VFX", _ins))
continue;
if(_ins == "Node_VFX_Renderer" || _ins == "Node_VFX_Renderer_Output")
continue;
node.doUpdate(i);
}
for( var i = 0, n = ds_list_size(nodes); i < n; i++ ) {
var node = nodes[| i];
if(!struct_has(node, "resetSeed")) continue;
node.resetSeed();
}
} #endregion
static update = function() { #region
if(CURRENT_FRAME == 0) {
NodeListSort(topoList, nodes);
reset();
}
} #endregion
}

View file

@ -11,6 +11,9 @@ function Node_Collection_Inline(_x, _y, _group = noone) : Node(_x, _y, _group) c
group_hover_al = 0;
selectable = false;
input_node_type = noone;
output_node_type = noone;
static removeNode = function(node) { #region
array_remove(attributes.members, node.node_id);
ds_list_remove(nodes, node);
@ -33,9 +36,9 @@ function Node_Collection_Inline(_x, _y, _group = noone) : Node(_x, _y, _group) c
var _rad = 6;
var _stp = 15;
var _nx0 = _node.x - 32 + _rad;
var _nx0 = is_instanceof(_node, input_node_type)? _node.x + _node.w / 2 : _node.x - 32 + _rad;
var _ny0 = _node.y - 32 + _rad;
var _nx1 = _node.x + (_node == self? _node.w / 2 : _node.w + 32 - _rad);
var _nx1 = is_instanceof(_node, output_node_type)? _node.x + _node.w / 2 : _node.x + _node.w + 32 - _rad;
var _ny1 = _node.y + _node.h + 32 - _rad;
for( var i = 0; i < 90; i += _stp ) _vertex[_ind++] = [ _nx1 + lengthdir_x(_rad, i), _ny0 + lengthdir_y(_rad, i) ];

View file

@ -61,6 +61,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
#region ---- display ----
color = c_white;
icon = noone;
icon_24 = noone;
bg_spr = THEME.node_bg;
bg_sel_spr = THEME.node_active;

View file

@ -1,7 +1,8 @@
function Node_Feedback_Inline(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Feedback";
color = COLORS.node_blend_feedback;
icon = THEME.feedback;
name = "Feedback";
color = COLORS.node_blend_feedback;
icon = THEME.feedback;
icon_24 = THEME.feedback_24;
selectable = false;
update_on_frame = true;

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for each",
"path": "folders/nodes/data/iterate/for each.yy",
"path": "folders/nodes/data/iterate/_legacy/for each.yy",
},
}

View file

@ -0,0 +1,95 @@
function Node_Iterate_Each_Inline(_x, _y, _group = noone) : Node_Collection_Inline(_x, _y, _group) constructor {
name = "Loop Array";
color = COLORS.node_blend_loop;
input_node = noone;
output_node = noone;
input_node_type = Node_Iterator_Each_Inline_Input;
output_node_type = Node_Iterator_Each_Inline_Output;
iterated = 0;
if(!LOADING && !APPENDING && !CLONING) { #region
var input = nodeBuild("Node_Iterator_Each_Inline_Input", x, y);
var output = nodeBuild("Node_Iterator_Each_Inline_Output", x + 256, y);
output.inputs[| 0].setFrom(input.outputs[| 0]);
addNode(input);
addNode(output);
input_node = input;
output_node = output;
input_node.loop = self;
output_node.loop = self;
} #endregion
static getIterationCount = function() { #region
var _arr = input_node.inputs[| 0].getValue();
return array_length(_arr);
} #endregion
static bypassNextNode = function() { #region
return iterated < getIterationCount();
} #endregion
static getNextNodes = function() { #region
LOG_BLOCK_START();
LOG_IF(global.FLAG.render == 1, "[outputNextNode] Get next node from inline iterate");
resetRender();
LOG_IF(global.FLAG.render == 1, $"Loop restart: iteration {iterated}");
var _nodes = __nodeLeafList(nodes);
array_push_unique(_nodes, input_node);
iterated++;
LOG_BLOCK_END();
return _nodes;
} #endregion
static refreshMember = function() { #region
ds_list_clear(nodes);
for( var i = 0, n = array_length(attributes.members); i < n; i++ ) {
if(!ds_map_exists(PROJECT.nodeMap, attributes.members[i])) {
print($"Node not found {attributes.members[i]}");
continue;
}
var _node = PROJECT.nodeMap[? attributes.members[i]];
array_push_unique(_node.context_data, self);
ds_list_add(nodes, _node);
if(is_instanceof(_node, Node_Iterator_Each_Inline_Input)) {
input_node = _node;
input_node.loop = self;
}
if(is_instanceof(_node, Node_Iterator_Each_Inline_Output)) {
output_node = _node;
output_node.loop = self;
}
}
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
}
} #endregion
static update = function() { #region
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
return;
}
iterated = 0;
output_node.outputs[| 0].setValue([]);
} #endregion
}

View file

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

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for filter",
"path": "folders/nodes/data/iterate/for filter.yy",
"path": "folders/nodes/data/iterate/_legacy/for filter.yy",
},
}

View file

@ -0,0 +1,95 @@
function Node_Iterate_Filter_Inline(_x, _y, _group = noone) : Node_Collection_Inline(_x, _y, _group) constructor {
name = "Filter Array";
color = COLORS.node_blend_loop;
input_node = noone;
output_node = noone;
input_node_type = Node_Iterator_Filter_Inline_Input;
output_node_type = Node_Iterator_Filter_Inline_Output;
iterated = 0;
if(!LOADING && !APPENDING && !CLONING) { #region
var input = nodeBuild("Node_Iterator_Filter_Inline_Input", x, y);
var output = nodeBuild("Node_Iterator_Filter_Inline_Output", x + 256, y);
output.inputs[| 0].setFrom(input.outputs[| 0]);
addNode(input);
addNode(output);
input_node = input;
output_node = output;
input_node.loop = self;
output_node.loop = self;
} #endregion
static getIterationCount = function() { #region
var _arr = input_node.inputs[| 0].getValue();
return array_length(_arr);
} #endregion
static bypassNextNode = function() { #region
return iterated < getIterationCount();
} #endregion
static getNextNodes = function() { #region
LOG_BLOCK_START();
LOG_IF(global.FLAG.render == 1, "[outputNextNode] Get next node from inline iterate");
resetRender();
LOG_IF(global.FLAG.render == 1, $"Loop restart: iteration {iterated}");
var _nodes = __nodeLeafList(nodes);
array_push_unique(_nodes, input_node);
iterated++;
LOG_BLOCK_END();
return _nodes;
} #endregion
static refreshMember = function() { #region
ds_list_clear(nodes);
for( var i = 0, n = array_length(attributes.members); i < n; i++ ) {
if(!ds_map_exists(PROJECT.nodeMap, attributes.members[i])) {
print($"Node not found {attributes.members[i]}");
continue;
}
var _node = PROJECT.nodeMap[? attributes.members[i]];
array_push_unique(_node.context_data, self);
ds_list_add(nodes, _node);
if(is_instanceof(_node, Node_Iterator_Filter_Inline_Input)) {
input_node = _node;
input_node.loop = self;
}
if(is_instanceof(_node, Node_Iterator_Filter_Inline_Output)) {
output_node = _node;
output_node.loop = self;
}
}
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
}
} #endregion
static update = function() { #region
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
return;
}
iterated = 0;
output_node.outputs[| 0].setValue([]);
} #endregion
}

View file

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

View file

@ -1,12 +1,13 @@
function Node_Iterate_Inline(_x, _y, _group = noone) : Node_Collection_Inline(_x, _y, _group) constructor {
name = "Loop";
color = COLORS.node_blend_loop;
name = "Loop";
color = COLORS.node_blend_loop;
icon = THEME.loop;
icon_24 = THEME.loop_24;
inputs[| 0] = nodeValue("Repeat", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 )
.uncache();
managedRenderOrder = true;
selectable = false;
draw_line_feed = true;
draw_line_shift_x = 0;

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for sort",
"path": "folders/nodes/data/iterate/for sort.yy",
"path": "folders/nodes/data/iterate/_legacy/for sort.yy",
},
}

View file

@ -0,0 +1,153 @@
function Node_Iterate_Sort_Inline(_x, _y, _group = noone) : Node_Collection_Inline(_x, _y, _group) constructor {
name = "Sort Array";
color = COLORS.node_blend_loop;
topoList = ds_list_create();
input_node = noone;
output_node = noone;
input_node_type = Node_Iterator_Sort_Inline_Input;
output_node_type = Node_Iterator_Sort_Inline_Output;
iterated = 0;
if(!LOADING && !APPENDING && !CLONING) { #region
var input = nodeBuild("Node_Iterator_Sort_Inline_Input", x, y);
var output = nodeBuild("Node_Iterator_Sort_Inline_Output", x + 256, y);
addNode(input);
addNode(output);
input_node = input;
output_node = output;
input_node.loop = self;
output_node.loop = self;
} #endregion
static isActiveDynamic = function(frame = CURRENT_FRAME) { #region
for( var i = 0, n = ds_list_size(nodes); i < n; i++ )
if(nodes[| i].isActiveDynamic(frame)) return true;
return false;
} #endregion
static getNextNodes = function() { #region
return output_node.getNextNodes();
} #endregion
static refreshMember = function() { #region
ds_list_clear(nodes);
for( var i = 0, n = array_length(attributes.members); i < n; i++ ) {
if(!ds_map_exists(PROJECT.nodeMap, attributes.members[i])) {
print($"Node not found {attributes.members[i]}");
continue;
}
var _node = PROJECT.nodeMap[? attributes.members[i]];
array_push_unique(_node.context_data, self);
ds_list_add(nodes, _node);
if(is_instanceof(_node, Node_Iterator_Sort_Inline_Input)) {
input_node = _node;
input_node.loop = self;
}
if(is_instanceof(_node, Node_Iterator_Sort_Inline_Output)) {
output_node = _node;
output_node.loop = self;
}
}
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
}
} #endregion
static update = function(frame = CURRENT_FRAME) { #region
if(input_node == noone || output_node == noone) {
if(input_node) nodeDelete(input_node);
if(output_node) nodeDelete(output_node);
nodeDelete(self);
return;
}
if(frame == 0 || !IS_PLAYING)
NodeListSort(topoList, nodes);
sortArray();
} #endregion
static swap = function(arr, a, b) { #region
var temp = arr[a];
arr[@ a] = arr[b];
arr[@ b] = temp;
} #endregion
static compareValue = function(val1, val2) { #region
input_node.outputs[| 0].setValue(val1,,, false);
input_node.outputs[| 1].setValue(val2,,, false);
resetRender(true);
RenderList(topoList);
var res = output_node.inputs[| 0].getValue();
//print($"Comparing value {val1}, {val2} > [{res}]");
return res;
} #endregion
static partition = function(arr, low, high) { #region
var pv = arr[high];
var i = low - 1;
for(var j = low; j < high; j++) {
if(compareValue(arr[j], pv)) continue;
i++;
swap(arr, i, j);
}
swap(arr, i + 1, high);
return i + 1;
} #endregion
static quickSort = function(arr, low, high) { #region
if(low >= high) return;
var p = partition(arr, low, high);
quickSort(arr, low, p - 1);
quickSort(arr, p + 1, high);
} #endregion
static sortArray = function() { #region
iterated = 0;
loop_start_time = get_timer();
var _frj = input_node.inputs[| 0].value_from;
var type = _frj == noone? VALUE_TYPE.any : _frj.type;
input_node.inputs[| 0].setType(type);
input_node.outputs[| 0].setType(type);
input_node.outputs[| 1].setType(type);
output_node.outputs[| 0].setType(type);
if(input_node.inputs[| 0].value_from == noone) return;
var arrIn = input_node.inputs[| 0].getValue();
var arrOut = output_node.outputs[| 0].getValue();
arrOut = array_clone(arrIn);
print($"===== Sort begin =====");
quickSort(arrOut, 0, array_length(arrOut) - 1);
print($"Sorted {arrIn} > {arrOut}")
output_node.outputs[| 0].setValue(arrOut);
} #endregion
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_iterate_sort_inline",
"isCompatibility": false,
"isDnD": false,
"parent": {
"name": "for sort inline",
"path": "folders/nodes/data/iterate/for sort inline.yy",
},
}

View file

@ -0,0 +1,23 @@
function Node_Iterator_Each_Inline_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Loop Input";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Array in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, [] )
.setVisible(true, true);
outputs[| 0] = nodeValue("Value in", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0 );
static update = function() { #region
if(!is_instanceof(loop, Node_Iterate_Each_Inline)) return;
var _typ = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
inputs[| 0].setType(_typ);
outputs[| 0].setType(_typ);
var val = inputs[| 0].getValue();
var itr = loop.iterated - 1;
outputs[| 0].setValue(array_safe_get(val, itr));
} #endregion
}

View file

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

View file

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

View file

@ -0,0 +1,33 @@
function Node_Iterator_Each_Inline_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Loop Output";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Value out", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0 )
.setVisible(true, true);
outputs[| 0] = nodeValue("Array out", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, [] );
static getNextNodes = function() { #region
if(loop.bypassNextNode())
return loop.getNextNodes();
return getNextNodesRaw();
} #endregion
static update = function(frame = CURRENT_FRAME) { #region
if(!is_instanceof(loop, Node_Iterate_Each_Inline)) return;
var _typ = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
inputs[| 0].setType(_typ);
outputs[| 0].setType(_typ);
var val = getInputData(0);
var arr = outputs[| 0].getValue();
var itr = loop.iterated - 1;
arr[@ itr] = val;
outputs[| 0].setValue(arr);
//print($"Output iteration {itr} = {val} | {arr}");
} #endregion
}

View file

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

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for each",
"path": "folders/nodes/data/iterate/for each.yy",
"path": "folders/nodes/data/iterate/_legacy/for each.yy",
},
}

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for each",
"path": "folders/nodes/data/iterate/for each.yy",
"path": "folders/nodes/data/iterate/_legacy/for each.yy",
},
}

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for each",
"path": "folders/nodes/data/iterate/for each.yy",
"path": "folders/nodes/data/iterate/_legacy/for each.yy",
},
}

View file

@ -0,0 +1,23 @@
function Node_Iterator_Filter_Inline_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Filter Input";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Array in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, [] )
.setVisible(true, true);
outputs[| 0] = nodeValue("Value in", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0 );
static update = function() { #region
if(!is_instanceof(loop, Node_Iterate_Filter_Inline)) return;
var _typ = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
inputs[| 0].setType(_typ);
outputs[| 0].setType(_typ);
var val = inputs[| 0].getValue();
var itr = loop.iterated - 1;
outputs[| 0].setValue(array_safe_get(val, itr));
} #endregion
}

View file

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

View file

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

View file

@ -0,0 +1,35 @@
function Node_Iterator_Filter_Inline_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Filter Output";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Value out", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0 )
.setVisible(true, true);
inputs[| 1] = nodeValue("Filter result", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
.setVisible(true, true);
outputs[| 0] = nodeValue("Array out", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, [] );
static getNextNodes = function() { #region
if(loop.bypassNextNode())
return loop.getNextNodes();
return getNextNodesRaw();
} #endregion
static update = function(frame = CURRENT_FRAME) { #region
if(!is_instanceof(loop, Node_Iterate_Filter_Inline)) return;
var _typ = inputs[| 0].value_from == noone? VALUE_TYPE.any : inputs[| 0].value_from.type;
inputs[| 0].setType(_typ);
outputs[| 0].setType(_typ);
var val = getInputData(0);
var res = getInputData(1);
var arr = outputs[| 0].getValue();
var itr = loop.iterated - 1;
if(res) array_push(arr, val);
outputs[| 0].setValue(arr);
} #endregion
}

View file

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

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for filter",
"path": "folders/nodes/data/iterate/for filter.yy",
"path": "folders/nodes/data/iterate/_legacy/for filter.yy",
},
}

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for filter",
"path": "folders/nodes/data/iterate/for filter.yy",
"path": "folders/nodes/data/iterate/_legacy/for filter.yy",
},
}

View file

@ -0,0 +1,12 @@
function Node_Iterator_Sort_Inline_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Sort Input";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Array in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, [] )
.setVisible(true, true);
outputs[| 0] = nodeValue("Value 1", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0 );
outputs[| 1] = nodeValue("Value 2", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0 );
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_iterator_sort_inline_input",
"isCompatibility": false,
"isDnD": false,
"parent": {
"name": "for sort inline",
"path": "folders/nodes/data/iterate/for sort inline.yy",
},
}

View file

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

View file

@ -0,0 +1,10 @@
function Node_Iterator_Sort_Inline_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Sort result";
color = COLORS.node_blend_loop;
loop = noone;
inputs[| 0] = nodeValue("Swap", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
.setVisible(true, true);
outputs[| 0] = nodeValue("Array out", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, [] );
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_iterator_sort_inline_output",
"isCompatibility": false,
"isDnD": false,
"parent": {
"name": "for sort inline",
"path": "folders/nodes/data/iterate/for sort inline.yy",
},
}

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for sort",
"path": "folders/nodes/data/iterate/for sort.yy",
"path": "folders/nodes/data/iterate/_legacy/for sort.yy",
},
}

View file

@ -6,6 +6,6 @@
"isDnD": false,
"parent": {
"name": "for sort",
"path": "folders/nodes/data/iterate/for sort.yy",
"path": "folders/nodes/data/iterate/_legacy/for sort.yy",
},
}

View file

@ -241,13 +241,13 @@ function __initNodes() {
var recPath = DIRECTORY + "Nodes/recent.json";
global.RECENT_NODES = file_exists_empty(recPath)? json_load_struct(recPath) : [];
if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = [];
NODE_PAGE_DEFAULT = ds_list_size(NODE_CATEGORY);
ADD_NODE_PAGE = NODE_PAGE_DEFAULT;
var fav = ds_list_create();
addNodeCatagory("Favourites", fav);
var group = ds_list_create(); #region
addNodeCatagory("Group", group, ["Node_Group"]);
ds_list_add(group, "Groups");
@ -273,7 +273,7 @@ function __initNodes() {
var iter_il = ds_list_create(); #region
addNodeCatagory("Loop", iter_il, ["Node_Iterate_Inline"]);
ds_list_add(iter_il, "Loops");
addNodeObject(iter_il, "Index", s_node_iterator_index, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent();
addNodeObject(iter_il, "Index", s_node_iterator_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();
#endregion
@ -289,6 +289,13 @@ function __initNodes() {
addNodeObject(itere, "Array Length", s_node_iterator_length, "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).hideRecent();
#endregion
var itere_il = ds_list_create(); #region
addNodeCatagory("Loop", itere_il, ["Node_Iterate_Each_Inline"]);
ds_list_add(itere_il, "Loops");
addNodeObject(itere_il, "Index", s_node_iterator_index, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent();
addNodeObject(itere_il, "Array Length", s_node_iterator_length, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent();
#endregion
var filter = ds_list_create(); #region
addNodeCatagory("Filter", filter, ["Node_Iterate_Filter"]);
ds_list_add(filter, "Groups");
@ -301,6 +308,13 @@ function __initNodes() {
addNodeObject(filter, "Array Length", s_node_iterator_length, "Node_Iterator_Each_Length", [1, Node_Iterator_Each_Length]).hideRecent();
#endregion
var filter_il = ds_list_create(); #region
addNodeCatagory("Filter", filter_il, ["Node_Iterate_Filter_Inline"]);
ds_list_add(filter_il, "Loops");
addNodeObject(filter_il, "Index", s_node_iterator_index, "Node_Iterator_Index", [1, Node_Iterator_Index]).hideRecent();
addNodeObject(filter_il, "Array Length", s_node_iterator_length, "Node_Iterator_Length", [1, Node_Iterator_Length]).hideRecent();
#endregion
var feed = ds_list_create(); #region
addNodeCatagory("Feedback", feed, ["Node_Feedback"]);
ds_list_add(feed, "Groups");
@ -709,28 +723,28 @@ function __initNodes() {
addNodeObject(values, "Separate File Path", s_node_separate_file_path, "Node_Path_Separate_Folder", [1, Node_Path_Separate_Folder]).setVersion(1145);
ds_list_add(values, "Arrays");
addNodeObject(values, "Array", s_node_array, "Node_Array", [1, Node_Array]);
addNodeObject(values, "Array Range", s_node_array_range, "Node_Array_Range", [1, Node_Array_Range],, "Create array of numbers by setting start, end and step length.");
addNodeObject(values, "Array Add", s_node_array_add, "Node_Array_Add", [1, Node_Array_Add], ["add array"]);
addNodeObject(values, "Array Length", s_node_array_length, "Node_Array_Length", [1, Node_Array_Length]);
addNodeObject(values, "Array Get", s_node_array_get, "Node_Array_Get", [1, Node_Array_Get], ["get array"]);
addNodeObject(values, "Array Set", s_node_array_set, "Node_Array_Set", [1, Node_Array_Set], ["set array"]).setVersion(1120);
addNodeObject(values, "Array Find", s_node_array_find, "Node_Array_Find", [1, Node_Array_Find], ["find array"]).setVersion(1120);
addNodeObject(values, "Array Insert", s_node_array_insert, "Node_Array_Insert", [1, Node_Array_Insert], ["insert array"]).setVersion(1120);
addNodeObject(values, "Array Remove", s_node_array_remove, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).setVersion(1120);
addNodeObject(values, "Array Reverse", s_node_array_reverse, "Node_Array_Reverse", [1, Node_Array_Reverse], ["reverse array"]).setVersion(1120);
addNodeObject(values, "Array Shift", s_node_array_shift, "Node_Array_Shift", [1, Node_Array_Shift]).setVersion(1137);
addNodeObject(values, "Array Zip", s_node_array_zip, "Node_Array_Zip", [1, Node_Array_Zip]).setVersion(1138);
addNodeObject(values, "Array Copy", s_node_array_copy, "Node_Array_Copy", [1, Node_Array_Copy]).setVersion(1144);
addNodeObject(values, "Array Convolute",s_node_array_convolute, "Node_Array_Convolute", [1, Node_Array_Convolute]).setVersion(11540);
addNodeObject(values, "Array Composite",s_node_array_composite, "Node_Array_Composite", [1, Node_Array_Composite]).setVersion(11540);
addNodeObject(values, "Array Sample", s_node_array_sample, "Node_Array_Sample", [1, Node_Array_Sample]).setVersion(11540);
addNodeObject(values, "Sort Number", s_node_array_sort, "Node_Array_Sort", [1, Node_Array_Sort], ["array sort"]).setVersion(1120);
addNodeObject(values, "Shuffle Array", s_node_array_shuffle, "Node_Array_Shuffle", [1, Node_Array_Shuffle], ["array shuffle"]).setVersion(1120);
addNodeObject(values, "Loop Array", s_node_loop_array, "Node_Iterate_Each", [1, Node_Iterate_Each], ["iterate each", "for each", "array loop"], "Create group that iterate to each member in an array.");
addNodeObject(values, "Filter Array", s_node_filter_array, "Node_Iterate_Filter", [1, Node_Iterate_Filter],, "Filter array using condition.").setVersion(1140);
addNodeObject(values, "Sort Array", s_node_sort_array, "Node_Iterate_Sort", [1, Node_Iterate_Sort],, "Sort array using node graph.").setVersion(1143);
addNodeObject(values, "Parse CSV", s_node_csv_parse, "Node_Array_CSV_Parse", [1, Node_Array_CSV_Parse]).setVersion(1145);
addNodeObject(values, "Array", s_node_array, "Node_Array", [1, Node_Array]);
addNodeObject(values, "Array Range", s_node_array_range, "Node_Array_Range", [1, Node_Array_Range],, "Create array of numbers by setting start, end and step length.");
addNodeObject(values, "Array Add", s_node_array_add, "Node_Array_Add", [1, Node_Array_Add], ["add array"]);
addNodeObject(values, "Array Length", s_node_array_length, "Node_Array_Length", [1, Node_Array_Length]);
addNodeObject(values, "Array Get", s_node_array_get, "Node_Array_Get", [1, Node_Array_Get], ["get array"]);
addNodeObject(values, "Array Set", s_node_array_set, "Node_Array_Set", [1, Node_Array_Set], ["set array"]).setVersion(1120);
addNodeObject(values, "Array Find", s_node_array_find, "Node_Array_Find", [1, Node_Array_Find], ["find array"]).setVersion(1120);
addNodeObject(values, "Array Insert", s_node_array_insert, "Node_Array_Insert", [1, Node_Array_Insert], ["insert array"]).setVersion(1120);
addNodeObject(values, "Array Remove", s_node_array_remove, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).setVersion(1120);
addNodeObject(values, "Array Reverse", s_node_array_reverse, "Node_Array_Reverse", [1, Node_Array_Reverse], ["reverse array"]).setVersion(1120);
addNodeObject(values, "Array Shift", s_node_array_shift, "Node_Array_Shift", [1, Node_Array_Shift]).setVersion(1137);
addNodeObject(values, "Array Zip", s_node_array_zip, "Node_Array_Zip", [1, Node_Array_Zip]).setVersion(1138);
addNodeObject(values, "Array Copy", s_node_array_copy, "Node_Array_Copy", [1, Node_Array_Copy]).setVersion(1144);
addNodeObject(values, "Array Convolute",s_node_array_convolute, "Node_Array_Convolute", [1, Node_Array_Convolute]).setVersion(11540);
addNodeObject(values, "Array Composite",s_node_array_composite, "Node_Array_Composite", [1, Node_Array_Composite]).setVersion(11540);
addNodeObject(values, "Array Sample", s_node_array_sample, "Node_Array_Sample", [1, Node_Array_Sample]).setVersion(11540);
addNodeObject(values, "Sort Number", s_node_array_sort, "Node_Array_Sort", [1, Node_Array_Sort], ["array sort"]).setVersion(1120);
addNodeObject(values, "Shuffle Array", s_node_array_shuffle, "Node_Array_Shuffle", [1, Node_Array_Shuffle], ["array shuffle"]).setVersion(1120);
addNodeObject(values, "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(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", s_node_sort_array, "Node_Iterate_Sort_Inline", [1, Node_Iterate_Sort_Inline],, "Sort array using node graph.").setVersion(1143);
addNodeObject(values, "Parse CSV", s_node_csv_parse, "Node_Array_CSV_Parse", [1, Node_Array_CSV_Parse]).setVersion(1145);
ds_list_add(values, "Paths");
addNodeObject(values, "Path", s_node_path, "Node_Path", [1, Node_Path]);
@ -831,11 +845,11 @@ function __initNodes() {
addNodeObject(node, "Animation Control", s_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", s_node_group, "Node_Group", [1, Node_Group]);
addNodeObject(node, "Feedback", s_node_feedback, "Node_Feedback", [1, Node_Feedback],, "Create a group that reuse output from last frame to the current one.");
addNodeObject(node, "Loop", s_node_loop, "Node_Iterate", [1, Node_Iterate], ["iterate", "for"], "Create group that reuse output as input repeatedly in one frame.");
addNodeObject(node, "Loop Array", s_node_loop_array, "Node_Iterate_Each", [1, Node_Iterate_Each], ["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", [1, Node_Iterate_Filter],, "Filter array using condition.").setVersion(1140);
addNodeObject(node, "Group", s_node_group, "Node_Group", [1, Node_Group]);
addNodeObject(node, "Feedback", s_node_feedback, "Node_Feedback", [1, Node_Feedback],, "Create a group that reuse output from last frame to the current one.");
addNodeObject(node, "Loop", s_node_loop, "Node_Iterate", [1, Node_Iterate], ["iterate", "for"], "Create group that reuse output as input repeatedly in one frame.");
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);
if(OS == os_windows) {
ds_list_add(node, "Lua");
@ -876,22 +890,22 @@ function __initNodes() {
var customs = ds_list_create();
addNodeCatagory("Custom", customs);
__initNodeCustom(customs);
if(IS_PATREON) addNodeCatagory("Extra", SUPPORTER_NODES);
//var vct = ds_list_create();
//addNodeCatagory("VCT", vct);
// addNodeObject(vct, "Biterator", s_node_print, "Node_Biterator", [1, Node_Biterator]);
//////////////////////////////////////////////////////////// PIXEL BUILDER ////////////////////////////////////////////////////////////
var pb_group = ds_list_create(); #region
addNodePBCatagory("Group", pb_group);
ds_list_add(pb_group, "Groups");
addNodeObject(pb_group, "Input", s_node_group_input, "Node_Group_Input", [1, Node_Group_Input]).hideRecent();
addNodeObject(pb_group, "Output", s_node_group_output, "Node_Group_Output", [1, Node_Group_Output]).hideRecent();
#endregion
var pb_draw = ds_list_create(); #region
addNodePBCatagory("Draw", pb_draw);
ds_list_add(pb_draw, "Fill");
@ -908,7 +922,7 @@ function __initNodes() {
addNodeObject(pb_draw, "Angle", s_node_pb_draw_angle, "Node_PB_Draw_Angle", [1, Node_PB_Draw_Angle]).hideRecent();
addNodeObject(pb_draw, "Blob", s_node_pb_draw_blob, "Node_PB_Draw_Blob", [1, Node_PB_Draw_Blob]).hideRecent();
#endregion
var pb_box = ds_list_create(); #region
addNodePBCatagory("Box", pb_box);
ds_list_add(pb_box, "Layer");
@ -923,7 +937,7 @@ function __initNodes() {
addNodeObject(pb_box, "Divide Grid", s_node_pb_box_divide_grid, "Node_PB_Box_Divide_Grid", [1, Node_PB_Box_Divide_Grid]).hideRecent();
addNodeObject(pb_box, "Contract", s_node_pb_box_contract, "Node_PB_Box_Contract", [1, Node_PB_Box_Contract]).hideRecent();
#endregion
var pb_fx = ds_list_create(); #region
addNodePBCatagory("Effects", pb_fx);
ds_list_add(pb_fx, "Effect");
@ -945,7 +959,7 @@ function __initNodes() {
addNodeObject(pb_fx, "Subtract", s_node_pb_fx_subtract, "Node_PB_Fx_Subtract", [1, Node_PB_Fx_Subtract]).hideRecent();
addNodeObject(pb_fx, "Intersect", s_node_pb_fx_interesct, "Node_PB_Fx_Intersect", [1, Node_PB_Fx_Intersect]).hideRecent();
#endregion
var pb_arr = ds_list_create(); #region
addNodePBCatagory("Array", pb_arr);
addNodeObject(pb_arr, "Array", s_node_array, "Node_Array", [1, Node_Array]).hideRecent();
@ -954,15 +968,15 @@ function __initNodes() {
addNodeObject(pb_arr, "Array Insert", s_node_array_insert, "Node_Array_Insert", [1, Node_Array_Insert], ["insert array"]).hideRecent().setVersion(1120);
addNodeObject(pb_arr, "Array Remove", s_node_array_remove, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).hideRecent().setVersion(1120);
#endregion
/////////////////////////////////////////////////////////////// PCX NODE ///////////////////////////////////////////////////////////////
var pcx_var = ds_list_create(); #region
addNodePCXCatagory("Variable", pcx_var);
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();
#endregion
var pcx_fn = ds_list_create(); #region
addNodePCXCatagory("Functions", pcx_fn);
addNodeObject(pcx_fn, "Equation", s_node_array, "Node_PCX_Equation", [1, Node_PCX_Equation]).hideRecent();
@ -979,14 +993,14 @@ function __initNodes() {
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();
#endregion
var pcx_flow = ds_list_create(); #region
addNodePCXCatagory("Flow Control", pcx_flow);
addNodeObject(pcx_flow, "Condition", s_node_array, "Node_PCX_Condition", [1, Node_PCX_Condition]).hideRecent();
#endregion
//////////////////////////////////////////////////////////////// HIDDEN ////////////////////////////////////////////////////////////////
var hid = ds_list_create(); #region
addNodeCatagory("Hidden", hid, ["Hidden"]);
addNodeObject(hid, "Input", s_node_loop_input, "Node_Iterator_Each_Input", [1, Node_Iterator_Each_Input]).hideRecent();
@ -1006,6 +1020,16 @@ function __initNodes() {
addNodeObject(hid, "Feedback", s_node_feedback, "Node_Feedback_Inline", [1, Node_Feedback_Inline]).hideRecent();
addNodeObject(hid, "Loop", s_node_loop, "Node_Iterate_Inline", [1, Node_Iterate_Inline]).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();
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();

View file

@ -139,6 +139,11 @@ enum VALUE_TAG {
none = 0
}
enum LINE_STYLE {
solid,
dashed
}
function value_color(i) { #region
static JUNCTION_COLORS = [
#ff9166, //int
@ -2581,33 +2586,38 @@ function drawJuncConnection(from, to, params, target = to) { #region
#region +++++ CHECK HOVER +++++
var hovDist = max(th * 2, 6);
if(PANEL_GRAPH.pHOVER)
switch(PREFERENCES.curve_connection_line) {
case 0 :
hover = distance_to_line(mx, my, jx, jy, frx, fry) < max(th * 2, 6);
break;
case 1 :
if(downDirection) hover = distance_to_curve_corner(mx, my, jx, jy, frx, fry, _s) < hovDist;
else hover = distance_to_curve(mx, my, jx, jy, frx, fry, cx, cy, _s) < hovDist;
if(PANEL_GRAPH.pHOVER) {
if(feed && from.node == to.node) {
hover = distance_line_feedback(mx, my, jx, jy, frx, fry) < hovDist;
} else {
switch(PREFERENCES.curve_connection_line) {
case 0 :
hover = distance_to_line(mx, my, jx, jy, frx, fry) < hovDist;
break;
case 1 :
if(downDirection) hover = distance_to_curve_corner(mx, my, jx, jy, frx, fry, _s) < hovDist;
else hover = distance_to_curve(mx, my, jx, jy, frx, fry, cx, cy, _s) < hovDist;
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
case 2 :
if(downDirection) hover = distance_to_elbow_corner(mx, my, frx, fry, jx, jy) < hovDist;
else hover = distance_to_elbow(mx, my, frx, fry, jx, jy, cx, cy, _s, fromIndex, toIndex) < hovDist;
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
case 2 :
if(downDirection) hover = distance_to_elbow_corner(mx, my, frx, fry, jx, jy) < hovDist;
else hover = distance_to_elbow(mx, my, frx, fry, jx, jy, cx, cy, _s, fromIndex, toIndex) < hovDist;
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
case 3 :
if(downDirection) hover = distance_to_elbow_diag_corner(mx, my, frx, fry, jx, jy) < hovDist;
else hover = distance_to_elbow_diag(mx, my, frx, fry, jx, jy, cx, cy, _s, fromIndex, toIndex) < hovDist;
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
case 3 :
if(downDirection) hover = distance_to_elbow_diag_corner(mx, my, frx, fry, jx, jy) < hovDist;
else hover = distance_to_elbow_diag(mx, my, frx, fry, jx, jy, cx, cy, _s, fromIndex, toIndex) < hovDist;
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
}
if(PANEL_GRAPH.value_focus == noone)
target.draw_line_shift_hover = hover;
break;
}
}
}
if(_active && hover)
hovering = self;
@ -2668,24 +2678,28 @@ function drawJuncConnection(from, to, params, target = to) { #region
draw_set_color(c0);
switch(PREFERENCES.curve_connection_line) {
case 0 :
if(ty == LINE_STYLE.solid) draw_line_width_color(jx, jy, frx, fry, th, c1, c0);
else draw_line_dashed_color(jx, jy, frx, fry, th, c1, c0, 6 * ss);
break;
case 1 :
if(downDirection) draw_line_curve_corner(jx, jy, frx, fry, ss, th, c0, c1);
else draw_line_curve_color(jx, jy, frx, fry, cx, cy, ss, th, c0, c1, ty);
break;
case 2 :
if(downDirection) draw_line_elbow_corner(frx, fry, jx, jy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
else draw_line_elbow_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
break;
case 3 :
if(downDirection) draw_line_elbow_diag_corner(frx, fry, jx, jy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
else draw_line_elbow_diag_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
break;
}
if(feed && from.node == to.node) {
draw_line_feedback(jx, jy, frx, fry, th, c1, c0, ss);
} else {
switch(PREFERENCES.curve_connection_line) {
case 0 :
if(ty == LINE_STYLE.solid) draw_line_width_color(jx, jy, frx, fry, th, c1, c0);
else draw_line_dashed_color(jx, jy, frx, fry, th, c1, c0, 6 * ss);
break;
case 1 :
if(downDirection) draw_line_curve_corner(jx, jy, frx, fry, ss, th, c0, c1);
else draw_line_curve_color(jx, jy, frx, fry, cx, cy, ss, th, c0, c1, ty);
break;
case 2 :
if(downDirection) draw_line_elbow_corner(frx, fry, jx, jy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
else draw_line_elbow_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
break;
case 3 :
if(downDirection) draw_line_elbow_diag_corner(frx, fry, jx, jy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
else draw_line_elbow_diag_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, fromIndex, toIndex, ty);
break;
}
}
#endregion
return hovering;

View file

@ -866,7 +866,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
var _to = value_focus.value_to_loop[i];
array_push(menu, menuItem($"[{_to.junc_in.node.display_name}] {_to.junc_in.getName()}", function(data) {
nodeDelete(data.params.juncTo);
}, THEME.feedback,,, { juncTo: _to }));
}, _to.icon_24,,, { juncTo: _to }));
}
} else {
var sep = false;
@ -886,7 +886,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
var _jun = value_focus.value_from_loop.junc_out;
array_push(menu, menuItem($"[{_jun.node.display_name}] {_jun.getName()}", function(data) {
__junction_hovering.removeFromLoop();
}, THEME.feedback));
}, value_focus.value_from_loop.icon_24));
}
}
@ -1283,11 +1283,32 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
if(_connect[0] == -9) {
if(_connect[1].value_from_loop != noone)
nodeDelete(_connect[1].value_from_loop);
var menu = [
menuItem("Feedback", function(data) {
var junc_in = data.params.junc_in;
var junc_out = data.params.junc_out;
var feed = nodeBuild("Node_Feedback_Inline", 0, 0);
feed.attributes.junc_in = [ junc_in .node.node_id, junc_in .index ];
feed.attributes.junc_out = [ junc_out.node.node_id, junc_out.index ];
feed.scanJunc();
}, THEME.feedback_24,,, { junc_in : _connect[1], junc_out : _connect[2] }),
menuItem("Loop", function(data) {
var junc_in = data.params.junc_in;
var junc_out = data.params.junc_out;
var feed = nodeBuild("Node_Iterate_Inline", 0, 0);
feed.attributes.junc_in = [ junc_in .node.node_id, junc_in .index ];
feed.attributes.junc_out = [ junc_out.node.node_id, junc_out.index ];
feed.scanJunc();
}, THEME.loop_24,,, { junc_in : _connect[1], junc_out : _connect[2] }),
];
var feed = nodeBuild(key_mod_press(SHIFT)? "Node_Iterate_Inline" : "Node_Feedback_Inline", 0, 0);
feed.attributes.junc_in = [ _connect[1].node.node_id, _connect[1].index ];
feed.attributes.junc_out = [ _connect[2].node.node_id, _connect[2].index ];
feed.scanJunc();
menuCall(,,, menu);
}
}
} else if(!value_dragging && value_focus && mouse_press(mb_left, pFOCUS) && !key_mod_press(ALT)) {

View file

@ -76,10 +76,16 @@ function __sortGraph(_list, _nodeList) { #region
var _isRoot = true;
for( var j = 0, m = ds_list_size(_node.outputs); j < m; j++ ) {
if(!array_empty(_node.outputs[| j].getJunctionTo())) {
_isRoot = false;
break;
var _to = _node.outputs[| j].getJunctionTo();
for( var k = 0, p = array_length(_to); k < p; k++ ) {
if(ds_list_exist(_nodeList, _to[k].node)) {
_isRoot = false;
break;
}
}
if(!_isRoot) break;
}
if(_isRoot) array_push(_root, _node);
@ -94,19 +100,20 @@ function __sortGraph(_list, _nodeList) { #region
var _node = ds_stack_pop(_st);
if(_node.topoSorted) continue;
var _isLeaf = true;
var _childs = [];
for( var i = 0, n = ds_list_size(_node.inputs); i < n; i++ ) {
var _in = _node.inputs[| i];
if(_in.isLeaf()) continue;
if(_in.value_from.node.topoSorted) continue;
var _fr = _in.value_from;
array_push(_childs, _in.value_from.node);
_isLeaf = false;
if(_fr == noone) continue;
if(!ds_list_exist(_nodeList, _fr.node)) continue;
if(_fr.node.topoSorted) continue;
array_push(_childs, _fr.node);
}
if(_isLeaf) {
if(array_empty(_childs)) {
ds_list_add(_list, _node);
_node.topoSorted = true;
@ -120,6 +127,14 @@ function __sortGraph(_list, _nodeList) { #region
}
} #endregion
function NodeListSort(_list, _nodeList) { #region
for( var i = 0, n = ds_list_size(_nodeList); i < n; i++ )
_nodeList[| i].topoSorted = false;
ds_list_clear(_list);
__sortGraph(_list, _nodeList);
} #endregion
function __nodeIsRenderLeaf(_node) { #region
if(is_undefined(_node)) { LOG_IF(global.FLAG.render == 1, $"Skip undefiend [{_node}]"); return false; }
if(!is_instanceof(_node, Node)) { LOG_IF(global.FLAG.render == 1, $"Skip non-node [{_node}]"); return false; }
@ -235,14 +250,6 @@ function Render(partial = false, runAction = false) { #region
LOG_END();
} #endregion
function NodeListSort(_list, _nodeList) { #region
for( var i = 0, n = ds_list_size(_nodeList); i < n; i++ )
_nodeList[| i].topoSorted = false;
ds_list_clear(_list);
__sortGraph(_list, _nodeList);
} #endregion
function __renderListReset(list) { #region
for( var i = 0; i < ds_list_size(list); i++ ) {
list[| i].setRenderStatus(false);
@ -252,9 +259,9 @@ function __renderListReset(list) { #region
}
} #endregion
function RenderList(list, runAction = false) { #region
function RenderList(list) { #region
LOG_BLOCK_START();
LOG_IF(global.FLAG.render == 1, "=============== RENDER LIST START ===============");
LOG_IF(global.FLAG.render == 1, $"=============== RENDER LIST START [{ds_list_size(list)}] ===============");
var queue = ds_queue_create();
try {
@ -295,7 +302,6 @@ function RenderList(list, runAction = false) { #region
LOG_IF(global.FLAG.render == 1, $"Rendering {rendering.internalName} ({rendering.display_name}) : {renderable? "Update" : "Pass"}");
if(renderable) {
if(runAction && rendering.hasInspector1Update()) rendering.inspector1Update();
rendering.doUpdate();
var nextNodes = rendering.getNextNodes();