- New Strand noise node.

This commit is contained in:
Tanasart 2024-02-01 11:26:02 +07:00
parent c7fc39b5ad
commit 8930eadc63
42 changed files with 752 additions and 99 deletions

View file

@ -220,6 +220,7 @@
{"name":"color selector","order":14,"path":"folders/shader/color selector.yy",}, {"name":"color selector","order":14,"path":"folders/shader/color selector.yy",},
{"name":"draw","order":7,"path":"folders/shader/draw.yy",}, {"name":"draw","order":7,"path":"folders/shader/draw.yy",},
{"name":"filter","order":4,"path":"folders/shader/filter.yy",}, {"name":"filter","order":4,"path":"folders/shader/filter.yy",},
{"name":"blend edge","order":50,"path":"folders/shader/filter/blend edge.yy",},
{"name":"blur","order":40,"path":"folders/shader/filter/blur.yy",}, {"name":"blur","order":40,"path":"folders/shader/filter/blur.yy",},
{"name":"channels","order":39,"path":"folders/shader/filter/channels.yy",}, {"name":"channels","order":39,"path":"folders/shader/filter/channels.yy",},
{"name":"color","order":33,"path":"folders/shader/filter/color.yy",}, {"name":"color","order":33,"path":"folders/shader/filter/color.yy",},
@ -744,6 +745,7 @@
{"name":"fd_rectangle_get_visualization_shader","order":27,"path":"scripts/fd_rectangle_get_visualization_shader/fd_rectangle_get_visualization_shader.yy",}, {"name":"fd_rectangle_get_visualization_shader","order":27,"path":"scripts/fd_rectangle_get_visualization_shader/fd_rectangle_get_visualization_shader.yy",},
{"name":"preset_data","order":8,"path":"scripts/preset_data/preset_data.yy",}, {"name":"preset_data","order":8,"path":"scripts/preset_data/preset_data.yy",},
{"name":"_f_h5","order":2,"path":"fonts/_f_h5/_f_h5.yy",}, {"name":"_f_h5","order":2,"path":"fonts/_f_h5/_f_h5.yy",},
{"name":"node_blend_edge","order":19,"path":"scripts/node_blend_edge/node_blend_edge.yy",},
{"name":"node_string_split","order":3,"path":"scripts/node_string_split/node_string_split.yy",}, {"name":"node_string_split","order":3,"path":"scripts/node_string_split/node_string_split.yy",},
{"name":"meta_data","order":12,"path":"scripts/meta_data/meta_data.yy",}, {"name":"meta_data","order":12,"path":"scripts/meta_data/meta_data.yy",},
{"name":"node_find_pixel","order":1,"path":"scripts/node_find_pixel/node_find_pixel.yy",}, {"name":"node_find_pixel","order":1,"path":"scripts/node_find_pixel/node_find_pixel.yy",},
@ -836,6 +838,7 @@
{"name":"sh_spherize","order":11,"path":"shaders/sh_spherize/sh_spherize.yy",}, {"name":"sh_spherize","order":11,"path":"shaders/sh_spherize/sh_spherize.yy",},
{"name":"node_VFX_effect_destroy","order":3,"path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",}, {"name":"node_VFX_effect_destroy","order":3,"path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},
{"name":"node_cache","order":9,"path":"scripts/node_cache/node_cache.yy",}, {"name":"node_cache","order":9,"path":"scripts/node_cache/node_cache.yy",},
{"name":"sh_noise_strand","order":15,"path":"shaders/sh_noise_strand/sh_noise_strand.yy",},
{"name":"sh_bw","order":3,"path":"shaders/sh_bw/sh_bw.yy",}, {"name":"sh_bw","order":3,"path":"shaders/sh_bw/sh_bw.yy",},
{"name":"var_comparison","order":1,"path":"scripts/var_comparison/var_comparison.yy",}, {"name":"var_comparison","order":1,"path":"scripts/var_comparison/var_comparison.yy",},
{"name":"node_array_zip","order":13,"path":"scripts/node_array_zip/node_array_zip.yy",}, {"name":"node_array_zip","order":13,"path":"scripts/node_array_zip/node_array_zip.yy",},
@ -1007,6 +1010,7 @@
{"name":"FirebaseREST_HTTP_Success_Firestore","order":19,"path":"scripts/FirebaseREST_HTTP_Success_Firestore/FirebaseREST_HTTP_Success_Firestore.yy",}, {"name":"FirebaseREST_HTTP_Success_Firestore","order":19,"path":"scripts/FirebaseREST_HTTP_Success_Firestore/FirebaseREST_HTTP_Success_Firestore.yy",},
{"name":"s_node_pb_draw_rectangle","order":13,"path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",}, {"name":"s_node_pb_draw_rectangle","order":13,"path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",},
{"name":"panel_animation","order":1,"path":"scripts/panel_animation/panel_animation.yy",}, {"name":"panel_animation","order":1,"path":"scripts/panel_animation/panel_animation.yy",},
{"name":"sh_blend_edge_blend","order":1,"path":"shaders/sh_blend_edge_blend/sh_blend_edge_blend.yy",},
{"name":"sh_bend_arc","order":13,"path":"shaders/sh_bend_arc/sh_bend_arc.yy",}, {"name":"sh_bend_arc","order":13,"path":"shaders/sh_bend_arc/sh_bend_arc.yy",},
{"name":"node_array_rearrange","order":19,"path":"scripts/node_array_rearrange/node_array_rearrange.yy",}, {"name":"node_array_rearrange","order":19,"path":"scripts/node_array_rearrange/node_array_rearrange.yy",},
{"name":"sh_pb_to_mask","order":7,"path":"shaders/sh_pb_to_mask/sh_pb_to_mask.yy",}, {"name":"sh_pb_to_mask","order":7,"path":"shaders/sh_pb_to_mask/sh_pb_to_mask.yy",},
@ -1016,6 +1020,7 @@
{"name":"sh_gradient","order":6,"path":"shaders/sh_gradient/sh_gradient.yy",}, {"name":"sh_gradient","order":6,"path":"shaders/sh_gradient/sh_gradient.yy",},
{"name":"sh_region_fill_init","order":2,"path":"shaders/sh_region_fill_init/sh_region_fill_init.yy",}, {"name":"sh_region_fill_init","order":2,"path":"shaders/sh_region_fill_init/sh_region_fill_init.yy",},
{"name":"node_json_file_read","order":7,"path":"scripts/node_json_file_read/node_json_file_read.yy",}, {"name":"node_json_file_read","order":7,"path":"scripts/node_json_file_read/node_json_file_read.yy",},
{"name":"s_node_strand_noise","order":44,"path":"sprites/s_node_strand_noise/s_node_strand_noise.yy",},
{"name":"s_node_array_remove","order":7,"path":"sprites/s_node_array_remove/s_node_array_remove.yy",}, {"name":"s_node_array_remove","order":7,"path":"sprites/s_node_array_remove/s_node_array_remove.yy",},
{"name":"s_node_zigzag","order":18,"path":"sprites/s_node_zigzag/s_node_zigzag.yy",}, {"name":"s_node_zigzag","order":18,"path":"sprites/s_node_zigzag/s_node_zigzag.yy",},
{"name":"node_FLIP_render","order":3,"path":"scripts/node_FLIP_render/node_FLIP_render.yy",}, {"name":"node_FLIP_render","order":3,"path":"scripts/node_FLIP_render/node_FLIP_render.yy",},
@ -1607,6 +1612,7 @@
{"name":"s_node_path_trim","order":6,"path":"sprites/s_node_path_trim/s_node_path_trim.yy",}, {"name":"s_node_path_trim","order":6,"path":"sprites/s_node_path_trim/s_node_path_trim.yy",},
{"name":"node_channels_hsv","order":1,"path":"scripts/node_channels_hsv/node_channels_hsv.yy",}, {"name":"node_channels_hsv","order":1,"path":"scripts/node_channels_hsv/node_channels_hsv.yy",},
{"name":"sh_stripe","order":1,"path":"shaders/sh_stripe/sh_stripe.yy",}, {"name":"sh_stripe","order":1,"path":"shaders/sh_stripe/sh_stripe.yy",},
{"name":"node_noise_strand","order":15,"path":"scripts/node_noise_strand/node_noise_strand.yy",},
{"name":"s_node_shard","order":33,"path":"sprites/s_node_shard/s_node_shard.yy",}, {"name":"s_node_shard","order":33,"path":"sprites/s_node_shard/s_node_shard.yy",},
{"name":"node_path_trim","order":6,"path":"scripts/node_path_trim/node_path_trim.yy",}, {"name":"node_path_trim","order":6,"path":"scripts/node_path_trim/node_path_trim.yy",},
{"name":"s_node_rigidSim_deactivate","order":7,"path":"sprites/s_node_rigidSim_deactivate/s_node_rigidSim_deactivate.yy",}, {"name":"s_node_rigidSim_deactivate","order":7,"path":"sprites/s_node_rigidSim_deactivate/s_node_rigidSim_deactivate.yy",},
@ -1766,6 +1772,7 @@
{"name":"s_node_scatter","order":19,"path":"sprites/s_node_scatter/s_node_scatter.yy",}, {"name":"s_node_scatter","order":19,"path":"sprites/s_node_scatter/s_node_scatter.yy",},
{"name":"s_node_bokeh","order":5,"path":"sprites/s_node_bokeh/s_node_bokeh.yy",}, {"name":"s_node_bokeh","order":5,"path":"sprites/s_node_bokeh/s_node_bokeh.yy",},
{"name":"s_node_3d_sphere_uv","order":16,"path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",}, {"name":"s_node_3d_sphere_uv","order":16,"path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},
{"name":"sh_blend_edge","order":2,"path":"shaders/sh_blend_edge/sh_blend_edge.yy",},
{"name":"s_biterator_toggler","order":13,"path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",}, {"name":"s_biterator_toggler","order":13,"path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",},
{"name":"s_node_smokeSim_render","order":9,"path":"sprites/s_node_smokeSim_render/s_node_smokeSim_render.yy",}, {"name":"s_node_smokeSim_render","order":9,"path":"sprites/s_node_smokeSim_render/s_node_smokeSim_render.yy",},
{"name":"sh_vertex_depth_pass","order":2,"path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",}, {"name":"sh_vertex_depth_pass","order":2,"path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},
@ -1921,7 +1928,7 @@
{"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",}, {"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",},
{"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",}, {"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",},
{"name":"project_function","order":2,"path":"scripts/project_function/project_function.yy",}, {"name":"project_function","order":2,"path":"scripts/project_function/project_function.yy",},
{"name":"node_fold_noise","order":14,"path":"scripts/node_fold_noise/node_fold_noise.yy",}, {"name":"node_noise_fold","order":14,"path":"scripts/node_noise_fold/node_noise_fold.yy",},
{"name":"s_node_zoom","order":48,"path":"sprites/s_node_zoom/s_node_zoom.yy",}, {"name":"s_node_zoom","order":48,"path":"sprites/s_node_zoom/s_node_zoom.yy",},
{"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",}, {"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",},
{"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",}, {"name":"sh_channel_V","order":6,"path":"shaders/sh_channel_V/sh_channel_V.yy",},

View file

@ -252,6 +252,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color selector","folderPath":"folders/shader/color selector.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color selector","folderPath":"folders/shader/color selector.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/shader/draw.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/shader/draw.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/shader/filter.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/shader/filter.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"blend edge","folderPath":"folders/shader/filter/blend edge.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"blur","folderPath":"folders/shader/filter/blur.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"blur","folderPath":"folders/shader/filter/blur.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"channels","folderPath":"folders/shader/filter/channels.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"channels","folderPath":"folders/shader/filter/channels.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/shader/filter/color.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/shader/filter/color.yy",},
@ -757,6 +758,7 @@
{"id":{"name":"__node","path":"scripts/__node/__node.yy",},}, {"id":{"name":"__node","path":"scripts/__node/__node.yy",},},
{"id":{"name":"fd_rectangle_add_velocity","path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",},}, {"id":{"name":"fd_rectangle_add_velocity","path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",},},
{"id":{"name":"Obj_FirebaseFirestore_allCallbacks","path":"objects/Obj_FirebaseFirestore_allCallbacks/Obj_FirebaseFirestore_allCallbacks.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_allCallbacks","path":"objects/Obj_FirebaseFirestore_allCallbacks/Obj_FirebaseFirestore_allCallbacks.yy",},},
{"id":{"name":"sh_blend_edge_extract","path":"shaders/sh_blend_edge_extract/sh_blend_edge_extract.yy",},},
{"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},}, {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},},
{"id":{"name":"pcx_ast","path":"scripts/pcx_ast/pcx_ast.yy",},}, {"id":{"name":"pcx_ast","path":"scripts/pcx_ast/pcx_ast.yy",},},
{"id":{"name":"s_node_struct","path":"sprites/s_node_struct/s_node_struct.yy",},}, {"id":{"name":"s_node_struct","path":"sprites/s_node_struct/s_node_struct.yy",},},
@ -997,6 +999,7 @@
{"id":{"name":"fd_rectangle_get_visualization_shader","path":"scripts/fd_rectangle_get_visualization_shader/fd_rectangle_get_visualization_shader.yy",},}, {"id":{"name":"fd_rectangle_get_visualization_shader","path":"scripts/fd_rectangle_get_visualization_shader/fd_rectangle_get_visualization_shader.yy",},},
{"id":{"name":"preset_data","path":"scripts/preset_data/preset_data.yy",},}, {"id":{"name":"preset_data","path":"scripts/preset_data/preset_data.yy",},},
{"id":{"name":"_f_h5","path":"fonts/_f_h5/_f_h5.yy",},}, {"id":{"name":"_f_h5","path":"fonts/_f_h5/_f_h5.yy",},},
{"id":{"name":"node_blend_edge","path":"scripts/node_blend_edge/node_blend_edge.yy",},},
{"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},}, {"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},},
{"id":{"name":"node_string_split","path":"scripts/node_string_split/node_string_split.yy",},}, {"id":{"name":"node_string_split","path":"scripts/node_string_split/node_string_split.yy",},},
{"id":{"name":"meta_data","path":"scripts/meta_data/meta_data.yy",},}, {"id":{"name":"meta_data","path":"scripts/meta_data/meta_data.yy",},},
@ -1106,6 +1109,7 @@
{"id":{"name":"sh_spherize","path":"shaders/sh_spherize/sh_spherize.yy",},}, {"id":{"name":"sh_spherize","path":"shaders/sh_spherize/sh_spherize.yy",},},
{"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},}, {"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},},
{"id":{"name":"node_cache","path":"scripts/node_cache/node_cache.yy",},}, {"id":{"name":"node_cache","path":"scripts/node_cache/node_cache.yy",},},
{"id":{"name":"sh_noise_strand","path":"shaders/sh_noise_strand/sh_noise_strand.yy",},},
{"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},}, {"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},},
{"id":{"name":"var_comparison","path":"scripts/var_comparison/var_comparison.yy",},}, {"id":{"name":"var_comparison","path":"scripts/var_comparison/var_comparison.yy",},},
{"id":{"name":"sh_sdf_tex","path":"shaders/sh_sdf_tex/sh_sdf_tex.yy",},}, {"id":{"name":"sh_sdf_tex","path":"shaders/sh_sdf_tex/sh_sdf_tex.yy",},},
@ -1302,6 +1306,7 @@
{"id":{"name":"node_surface_from_color","path":"scripts/node_surface_from_color/node_surface_from_color.yy",},}, {"id":{"name":"node_surface_from_color","path":"scripts/node_surface_from_color/node_surface_from_color.yy",},},
{"id":{"name":"s_node_pb_draw_rectangle","path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",},}, {"id":{"name":"s_node_pb_draw_rectangle","path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",},},
{"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},}, {"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},},
{"id":{"name":"sh_blend_edge_blend","path":"shaders/sh_blend_edge_blend/sh_blend_edge_blend.yy",},},
{"id":{"name":"sh_bend_arc","path":"shaders/sh_bend_arc/sh_bend_arc.yy",},}, {"id":{"name":"sh_bend_arc","path":"shaders/sh_bend_arc/sh_bend_arc.yy",},},
{"id":{"name":"node_array_rearrange","path":"scripts/node_array_rearrange/node_array_rearrange.yy",},}, {"id":{"name":"node_array_rearrange","path":"scripts/node_array_rearrange/node_array_rearrange.yy",},},
{"id":{"name":"sh_pb_to_mask","path":"shaders/sh_pb_to_mask/sh_pb_to_mask.yy",},}, {"id":{"name":"sh_pb_to_mask","path":"shaders/sh_pb_to_mask/sh_pb_to_mask.yy",},},
@ -1311,6 +1316,7 @@
{"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},}, {"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},},
{"id":{"name":"sh_region_fill_init","path":"shaders/sh_region_fill_init/sh_region_fill_init.yy",},}, {"id":{"name":"sh_region_fill_init","path":"shaders/sh_region_fill_init/sh_region_fill_init.yy",},},
{"id":{"name":"node_json_file_read","path":"scripts/node_json_file_read/node_json_file_read.yy",},}, {"id":{"name":"node_json_file_read","path":"scripts/node_json_file_read/node_json_file_read.yy",},},
{"id":{"name":"s_node_strand_noise","path":"sprites/s_node_strand_noise/s_node_strand_noise.yy",},},
{"id":{"name":"s_node_array_remove","path":"sprites/s_node_array_remove/s_node_array_remove.yy",},}, {"id":{"name":"s_node_array_remove","path":"sprites/s_node_array_remove/s_node_array_remove.yy",},},
{"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},},
{"id":{"name":"node_FLIP_render","path":"scripts/node_FLIP_render/node_FLIP_render.yy",},}, {"id":{"name":"node_FLIP_render","path":"scripts/node_FLIP_render/node_FLIP_render.yy",},},
@ -1984,6 +1990,7 @@
{"id":{"name":"sh_d3d_ssao","path":"shaders/sh_d3d_ssao/sh_d3d_ssao.yy",},}, {"id":{"name":"sh_d3d_ssao","path":"shaders/sh_d3d_ssao/sh_d3d_ssao.yy",},},
{"id":{"name":"node_channels_hsv","path":"scripts/node_channels_hsv/node_channels_hsv.yy",},}, {"id":{"name":"node_channels_hsv","path":"scripts/node_channels_hsv/node_channels_hsv.yy",},},
{"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},}, {"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},},
{"id":{"name":"node_noise_strand","path":"scripts/node_noise_strand/node_noise_strand.yy",},},
{"id":{"name":"s_node_shard","path":"sprites/s_node_shard/s_node_shard.yy",},}, {"id":{"name":"s_node_shard","path":"sprites/s_node_shard/s_node_shard.yy",},},
{"id":{"name":"node_path_trim","path":"scripts/node_path_trim/node_path_trim.yy",},}, {"id":{"name":"node_path_trim","path":"scripts/node_path_trim/node_path_trim.yy",},},
{"id":{"name":"s_node_rigidSim_deactivate","path":"sprites/s_node_rigidSim_deactivate/s_node_rigidSim_deactivate.yy",},}, {"id":{"name":"s_node_rigidSim_deactivate","path":"sprites/s_node_rigidSim_deactivate/s_node_rigidSim_deactivate.yy",},},
@ -2169,6 +2176,7 @@
{"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},},
{"id":{"name":"s_node_bokeh","path":"sprites/s_node_bokeh/s_node_bokeh.yy",},}, {"id":{"name":"s_node_bokeh","path":"sprites/s_node_bokeh/s_node_bokeh.yy",},},
{"id":{"name":"s_node_3d_sphere_uv","path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},}, {"id":{"name":"s_node_3d_sphere_uv","path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},},
{"id":{"name":"sh_blend_edge","path":"shaders/sh_blend_edge/sh_blend_edge.yy",},},
{"id":{"name":"s_biterator_toggler","path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",},}, {"id":{"name":"s_biterator_toggler","path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",},},
{"id":{"name":"s_node_smokeSim_render","path":"sprites/s_node_smokeSim_render/s_node_smokeSim_render.yy",},}, {"id":{"name":"s_node_smokeSim_render","path":"sprites/s_node_smokeSim_render/s_node_smokeSim_render.yy",},},
{"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},}, {"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},},
@ -2349,7 +2357,7 @@
{"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},}, {"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},},
{"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},}, {"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},},
{"id":{"name":"project_function","path":"scripts/project_function/project_function.yy",},}, {"id":{"name":"project_function","path":"scripts/project_function/project_function.yy",},},
{"id":{"name":"node_fold_noise","path":"scripts/node_fold_noise/node_fold_noise.yy",},}, {"id":{"name":"node_noise_fold","path":"scripts/node_noise_fold/node_noise_fold.yy",},},
{"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},}, {"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},},
{"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},}, {"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},},
{"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},}, {"id":{"name":"node_noise_fbm","path":"scripts/node_noise_fbm/node_noise_fbm.yy",},},

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

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

View file

@ -0,0 +1,64 @@
function Node_Blend_Edge(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Blend Edge";
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue("Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider)
.setMappable(5);
inputs[| 2] = nodeValue("Types",self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Both", "Horizontal", "Vertical" ]);
inputs[| 3] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
active_index = 3;
inputs[| 4] = nodeValue("Channel", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0b1111)
.setDisplay(VALUE_DISPLAY.toggle, { data: array_create(4, THEME.inspector_channel) });
/////////////////////////////////////////////////////////////////////////////////////////////////////
inputs[| 5] = nodeValue("Width map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone)
.setVisible(false, false);
/////////////////////////////////////////////////////////////////////////////////////////////////////
inputs[| 6] = nodeValue("Blending", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider);
input_display_list = [ 3, 4,
["Surfaces", true], 0,
["Blend", false], 2, 1, 5, 6,
]
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
temp_surface = array_create(1);
attribute_surface_depth();
static step = function() { #region
inputs[| 1].mappableStep();
} #endregion
static processData = function(_outSurf, _data, _output_index, _array_index) {
var _sw = surface_get_width_safe(_data[0]);
var _sh = surface_get_height_safe(_data[0]);
for( var i = 0, n = array_length(temp_surface); i < n; i++ )
temp_surface[i] = surface_verify(temp_surface[i], _sw, _sh);
surface_set_shader(_outSurf, sh_blend_edge);
shader_set_f("dimension", _sw, _sh);
shader_set_f_map("width", clamp(_data[1], 0.001, 0.999), _data[5], inputs[| 1]);
shader_set_i("edge" , _data[2]);
shader_set_f("blend" , clamp(_data[6], 0.001, 0.999));
draw_surface(_data[0], 0, 0);
surface_reset_shader();
//return temp_surface[0];
return _outSurf;
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,38 @@
function Node_Noise_Strand(_x, _y, _group = noone) : Node_Shader_Generator(_x, _y, _group) constructor {
name = "Strand Noise";
shader = sh_noise_strand;
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector)
.setUnitRef(function(index) { return getDimension(index); });
addShaderProp(SHADER_UNIFORM.float, "position");
inputs[| 2] = nodeValue("Density", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
.setDisplay(VALUE_DISPLAY.slider);
addShaderProp(SHADER_UNIFORM.float, "density");
inputs[| 3] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, seed_random(4));
addShaderProp(SHADER_UNIFORM.float, "seed");
inputs[| 4] = nodeValue("Slope", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
.setDisplay(VALUE_DISPLAY.slider);
addShaderProp(SHADER_UNIFORM.float, "slope");
inputs[| 5] = nodeValue("Curve", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.slider);
addShaderProp(SHADER_UNIFORM.float, "curve");
inputs[| 6] = nodeValue("Curve scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
addShaderProp(SHADER_UNIFORM.float, "curveDetail");
inputs[| 7] = nodeValue("Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.slider);
addShaderProp(SHADER_UNIFORM.float, "thickness");
input_display_list = [ 3,
["Output", true], 0,
["Noise", false], 1, 2, 4,
["Curve", false], 5, 6,
["Render", false], 7,
];
}

View file

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

View file

@ -522,7 +522,7 @@ function __initNodes() {
addNodeObject(filter, "Trail", s_node_trail, "Node_Trail", [1, Node_Trail],, "Blend animation by filling in the pixel 'in-between' two or more frames.").setVersion(1130); addNodeObject(filter, "Trail", s_node_trail, "Node_Trail", [1, Node_Trail],, "Blend animation by filling in the pixel 'in-between' two or more frames.").setVersion(1130);
addNodeObject(filter, "Erode", s_node_erode, "Node_Erode", [1, Node_Erode],, "Remove pixel that are close to the border of the image."); addNodeObject(filter, "Erode", s_node_erode, "Node_Erode", [1, Node_Erode],, "Remove pixel that are close to the border of the image.");
addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", [1, Node_Corner], ["round corner"], "Round out sharp corner of the image.").setVersion(1110); addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", [1, Node_Corner], ["round corner"], "Round out sharp corner of the image.").setVersion(1110);
addNodeObject(filter, "Blobify", s_node_blobify, "Node_Blobify", [1, Node_Blobify]).setVersion(11640); addNodeObject(filter, "Blobify", s_node_blobify, "Node_Blobify", [1, Node_Blobify]).setVersion(11650);
addNodeObject(filter, "2D Light", s_node_2d_light, "Node_2D_light", [1, Node_2D_light],, "Apply different shaped light on the image."); addNodeObject(filter, "2D Light", s_node_2d_light, "Node_2D_light", [1, Node_2D_light],, "Apply different shaped light on the image.");
addNodeObject(filter, "Cast Shadow", s_node_shadow_cast, "Node_Shadow_Cast", [1, Node_Shadow_Cast], ["raycast"], "Apply light that create shadow using shadow mask.").setVersion(1100); addNodeObject(filter, "Cast Shadow", s_node_shadow_cast, "Node_Shadow_Cast", [1, Node_Shadow_Cast], ["raycast"], "Apply light that create shadow using shadow mask.").setVersion(1100);
addNodeObject(filter, "Pixel Expand", s_node_atlas, "Node_Atlas", [1, Node_Atlas], ["atlas"], "Replace transparent pixel with the closet non-transparent pixel."); addNodeObject(filter, "Pixel Expand", s_node_atlas, "Node_Atlas", [1, Node_Atlas], ["atlas"], "Replace transparent pixel with the closet non-transparent pixel.");
@ -536,6 +536,7 @@ function __initNodes() {
addNodeObject(filter, "Chromatic Aberration", s_node_chromatic_abarration, "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration],, "Apply chromatic aberration effect to the image."); addNodeObject(filter, "Chromatic Aberration", s_node_chromatic_abarration, "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration],, "Apply chromatic aberration effect to the image.");
addNodeObject(filter, "Vignette", s_node_vignette, "Node_Vignette", [1, Node_Vignette],, "Apply vignette effect to the border.").setVersion(11630); addNodeObject(filter, "Vignette", s_node_vignette, "Node_Vignette", [1, Node_Vignette],, "Apply vignette effect to the border.").setVersion(11630);
addNodeObject(filter, "FXAA", s_node_FXAA, "Node_FXAA", [1, Node_FXAA],, "Apply fast approximate anti-aliasing to the image."); addNodeObject(filter, "FXAA", s_node_FXAA, "Node_FXAA", [1, Node_FXAA],, "Apply fast approximate anti-aliasing to the image.");
//addNodeObject(filter, "Blend Edge", s_node_FXAA, "Node_Blend_Edge", [1, Node_Blend_Edge]).setVersion(11640);
ds_list_add(filter, "Colors"); ds_list_add(filter, "Colors");
addNodeObject(filter, "Replace Palette", s_node_replace_palette, "Node_Color_replace", [1, Node_Color_replace], ["isolate color", "select color", "palette swap", "color replace"], "Replace color that match one palette with another palette."); addNodeObject(filter, "Replace Palette", s_node_replace_palette, "Node_Color_replace", [1, Node_Color_replace], ["isolate color", "select color", "palette swap", "color replace"], "Replace color that match one palette with another palette.");
@ -639,7 +640,8 @@ function __initNodes() {
addNodeObject(generator, "Shard Noise", s_node_shard, "Node_Shard_Noise", [1, Node_Shard_Noise]).patreonExtra(); addNodeObject(generator, "Shard Noise", s_node_shard, "Node_Shard_Noise", [1, Node_Shard_Noise]).patreonExtra();
addNodeObject(generator, "Wavelet Noise", s_node_wavelet, "Node_Wavelet_Noise", [1, Node_Wavelet_Noise]).patreonExtra(); addNodeObject(generator, "Wavelet Noise", s_node_wavelet, "Node_Wavelet_Noise", [1, Node_Wavelet_Noise]).patreonExtra();
addNodeObject(generator, "Caustic", s_node_caustic, "Node_Caustic", [1, Node_Caustic]).patreonExtra(); addNodeObject(generator, "Caustic", s_node_caustic, "Node_Caustic", [1, Node_Caustic]).patreonExtra();
addNodeObject(generator, "Fold Noise", s_node_fold_noise, "Node_Fold_Noise", [1, Node_Fold_Noise]); addNodeObject(generator, "Fold Noise", s_node_fold_noise, "Node_Fold_Noise", [1, Node_Fold_Noise]).setVersion(11650);
addNodeObject(generator, "Strand Noise", s_node_strand_noise, "Node_Noise_Strand", [1, Node_Noise_Strand]).setVersion(11650);
ds_list_add(generator, "Patterns"); ds_list_add(generator, "Patterns");
addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern.");

View file

@ -63,11 +63,15 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
inputs[| 13] = nodeValue("Echo amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8); inputs[| 13] = nodeValue("Echo amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8);
inputs[| 14] = nodeValue("Opacity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
.setDisplay(VALUE_DISPLAY.slider);
input_display_list = [ 11, 0, input_display_list = [ 11, 0,
["Output", true], 9, 1, 7, ["Output", true], 9, 1, 7,
["Position", false], 2, 10, ["Position", false], 2, 10,
["Rotation", false], 3, 5, 8, ["Rotation", false], 3, 5, 8,
["Scale", false], 6, ["Scale", false], 6,
["Render", false], 14,
["Echo", true, 12], 13, ["Echo", true, 12], 13,
]; ];
@ -194,6 +198,7 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
var echo = _data[12]; var echo = _data[12];
var echo_amo = _data[13]; var echo_amo = _data[13];
var alp = _data[14];
var cDep = attrDepth(); var cDep = attrDepth();
@ -261,7 +266,7 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
surface_set_shader(_outSurf); surface_set_shader(_outSurf);
shader_set_interpolation(ins); shader_set_interpolation(ins);
draw_surface_tiled_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot, c_white, 1); draw_surface_tiled_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot, c_white, alp);
surface_reset_shader(); surface_reset_shader();
#endregion #endregion
@ -289,22 +294,22 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
_dy = round(_dy); _dy = round(_dy);
} }
draw_surface_ext_safe(ins, _dx, _dy, _sx, _sy, _rt); draw_surface_ext_safe(ins, _dx, _dy, _sx, _sy, _rt, c_white, alp);
} }
} else } else
draw_surface_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot); draw_surface_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot, c_white, alp);
if(mode == 2) { if(mode == 2) {
draw_surface_ext_safe(ins, draw_x - _ww, draw_y - _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x - _ww, draw_y - _hh, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x, draw_y - _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x, draw_y - _hh, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x + _ww, draw_y - _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x + _ww, draw_y - _hh, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x - _ww, draw_y, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x - _ww, draw_y, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x + _ww, draw_y, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x + _ww, draw_y, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x - _ww, draw_y + _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x - _ww, draw_y + _hh, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x, draw_y + _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x, draw_y + _hh, sca[0], sca[1], rot, c_white, alp);
draw_surface_ext_safe(ins, draw_x + _ww, draw_y + _hh, sca[0], sca[1], rot, c_white, 1); draw_surface_ext_safe(ins, draw_x + _ww, draw_y + _hh, sca[0], sca[1], rot, c_white, alp);
} }
surface_reset_shader(); surface_reset_shader();
#endregion #endregion

View file

@ -874,7 +874,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
switch(display_type) { switch(display_type) {
case VALUE_DISPLAY._default : #region case VALUE_DISPLAY._default : #region
editWidget = new textBox(_txt, function(val) { editWidget = new textBox(_txt, function(val) {
return setValueDirect(val); return setValueInspector(val);
} ); } );
editWidget.slidable = true; editWidget.slidable = true;
if(type == VALUE_TYPE.integer) editWidget.setSlidable(); if(type == VALUE_TYPE.integer) editWidget.setSlidable();
@ -887,7 +887,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.range : #region case VALUE_DISPLAY.range : #region
editWidget = new rangeBox(_txt, function(index, val) { editWidget = new rangeBox(_txt, function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
} ); } );
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -905,7 +905,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
if(len <= 4) { if(len <= 4) {
editWidget = new vectorBox(len, function(index, val) { editWidget = new vectorBox(len, function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit ); }, unit );
if(struct_has(display_data, "label")) editWidget.axis = display_data.label; if(struct_has(display_data, "label")) editWidget.axis = display_data.label;
@ -941,7 +941,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
var val = animator.getValue(); var val = animator.getValue();
editWidget = new vectorRangeBox(array_length(val), _txt, function(index, val) { editWidget = new vectorRangeBox(array_length(val), _txt, function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit ); }, unit );
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -963,14 +963,14 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
var _step = struct_try_get(display_data, "step", -1); var _step = struct_try_get(display_data, "step", -1);
editWidget = new rotator(function(val) { editWidget = new rotator(function(val) {
return setValueDirect(val); return setValueInspector(val);
}, _step ); }, _step );
extract_node = "Node_Number"; extract_node = "Node_Number";
break; #endregion break; #endregion
case VALUE_DISPLAY.rotation_range : #region case VALUE_DISPLAY.rotation_range : #region
editWidget = new rotatorRange(function(index, val) { editWidget = new rotatorRange(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
} ); } );
for( var i = 0, n = array_length(animators); i < n; i++ ) for( var i = 0, n = array_length(animators); i < n; i++ )
@ -980,7 +980,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.rotation_random: #region case VALUE_DISPLAY.rotation_random: #region
editWidget = new rotatorRandom(function(index, val) { editWidget = new rotatorRandom(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
} ); } );
extract_node = "Node_Vector2"; extract_node = "Node_Vector2";
@ -989,7 +989,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]); var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
editWidget = new slider(_range[0], _range[1], _range[2], function(val) { editWidget = new slider(_range[0], _range[1], _range[2], function(val) {
return setValueDirect(toNumber(val)); return setValueInspector(toNumber(val));
} ); } );
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1002,7 +1002,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]); var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
editWidget = new sliderRange(_range[0], _range[1], _range[2], function(index, val) { editWidget = new sliderRange(_range[0], _range[1], _range[2], function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
} ); } );
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1013,7 +1013,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.area : #region case VALUE_DISPLAY.area : #region
editWidget = new areaBox(function(index, val) { editWidget = new areaBox(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit); }, unit);
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1033,7 +1033,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
editWidget = new paddingBox(function(index, val) { editWidget = new paddingBox(function(index, val) {
//var _val = animator.getValue(); //var _val = animator.getValue();
//_val[index] = val; //_val[index] = val;
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit); }, unit);
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1044,7 +1044,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.corner : #region case VALUE_DISPLAY.corner : #region
editWidget = new cornerBox(function(index, val) { editWidget = new cornerBox(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit); }, unit);
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1055,9 +1055,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.puppet_control : #region case VALUE_DISPLAY.puppet_control : #region
editWidget = new controlPointBox(function(index, val) { editWidget = new controlPointBox(function(index, val) {
//var _val = animator.getValue(); return setValueInspector(val, index);
//_val[index] = val;
return setValueDirect(val, index);
}); });
extract_node = ""; extract_node = "";
@ -1068,7 +1066,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
editWidget = new scrollBox(choices, function(val) { editWidget = new scrollBox(choices, function(val) {
if(val == -1) return; if(val == -1) return;
return setValueDirect(toNumber(val)); return setValueInspector(toNumber(val));
} ); } );
if(struct_has(display_data, "update_hover")) if(struct_has(display_data, "update_hover"))
editWidget.update_hover = display_data.update_hover; editWidget.update_hover = display_data.update_hover;
@ -1082,7 +1080,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data); var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
editWidget = new buttonGroup(choices, function(val) { editWidget = new buttonGroup(choices, function(val) {
return setValueDirect(val); return setValueInspector(val);
} ); } );
rejectConnect(); rejectConnect();
@ -1091,7 +1089,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.matrix : #region case VALUE_DISPLAY.matrix : #region
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) { editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}, unit ); }, unit );
if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1 / 10);
@ -1102,16 +1100,14 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.transform : #region case VALUE_DISPLAY.transform : #region
editWidget = new transformBox(function(index, val) { editWidget = new transformBox(function(index, val) {
var _val = animator.getValue(); return setValueInspector(_val, index);
_val[index] = val;
return setValueDirect(_val);
}); });
extract_node = "Node_Transform_Array"; extract_node = "Node_Transform_Array";
break; #endregion break; #endregion
case VALUE_DISPLAY.toggle : #region case VALUE_DISPLAY.toggle : #region
editWidget = new toggleGroup(display_data.data, function(val) { editWidget = new toggleGroup(display_data.data, function(val) {
return setValueDirect(val); return setValueInspector(val);
} ); } );
rejectConnect(); rejectConnect();
@ -1120,7 +1116,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.d3quarternion : #region case VALUE_DISPLAY.d3quarternion : #region
editWidget = new quarternionBox(function(index, val) { editWidget = new quarternionBox(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}); });
extract_node = "Node_Vector4"; extract_node = "Node_Vector4";
@ -1128,7 +1124,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_DISPLAY.path_anchor : #region case VALUE_DISPLAY.path_anchor : #region
editWidget = new pathAnchorBox(function(index, val) { editWidget = new pathAnchorBox(function(index, val) {
return setValueDirect(val, index); return setValueInspector(val, index);
}); });
extract_node = "Node_Path_Anchor"; extract_node = "Node_Path_Anchor";
@ -1137,8 +1133,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} }
break; break;
case VALUE_TYPE.boolean : #region case VALUE_TYPE.boolean : #region
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueDirect(!animator.getValue()); } ); if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
else editWidget = new checkBox(function() { return setValueDirect(!animator.getValue()); } ); else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
key_inter = CURVE_TYPE.cut; key_inter = CURVE_TYPE.cut;
extract_node = "Node_Boolean"; extract_node = "Node_Boolean";
@ -1147,7 +1143,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
switch(display_type) { switch(display_type) {
case VALUE_DISPLAY._default : case VALUE_DISPLAY._default :
editWidget = new buttonColor(function(color) { editWidget = new buttonColor(function(color) {
return setValueDirect(color); return setValueInspector(color);
} ); } );
graph_h = ui(16); graph_h = ui(16);
@ -1155,7 +1151,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; break;
case VALUE_DISPLAY.palette : case VALUE_DISPLAY.palette :
editWidget = new buttonPalette(function(color) { editWidget = new buttonPalette(function(color) {
return setValueDirect(color); return setValueInspector(color);
} ); } );
extract_node = "Node_Palette"; extract_node = "Node_Palette";
@ -1164,7 +1160,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
break; #endregion break; #endregion
case VALUE_TYPE.gradient : #region case VALUE_TYPE.gradient : #region
editWidget = new buttonGradient(function(gradient) { editWidget = new buttonGradient(function(gradient) {
return setValueDirect(gradient); return setValueInspector(gradient);
} ); } );
extract_node = "Node_Gradient_Out"; extract_node = "Node_Gradient_Out";
@ -1172,30 +1168,30 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_TYPE.path : #region case VALUE_TYPE.path : #region
switch(display_type) { switch(display_type) {
case VALUE_DISPLAY.path_array : case VALUE_DISPLAY.path_array :
editWidget = new pathArrayBox(node, display_data.filter, function(path) { setValueDirect(path); } ); editWidget = new pathArrayBox(node, display_data.filter, function(path) { setValueInspector(path); } );
break; break;
case VALUE_DISPLAY.path_load : case VALUE_DISPLAY.path_load :
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueDirect(str); } ); editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
editWidget.align = fa_left; editWidget.align = fa_left;
editWidget.side_button = button(function() { editWidget.side_button = button(function() {
var path = get_open_filename(display_data.filter, ""); var path = get_open_filename(display_data.filter, "");
key_release(); key_release();
if(path == "") return noone; if(path == "") return noone;
return setValueDirect(path); return setValueInspector(path);
}, THEME.button_path_icon); }, THEME.button_path_icon);
extract_node = "Node_String"; extract_node = "Node_String";
break; break;
case VALUE_DISPLAY.path_save : case VALUE_DISPLAY.path_save :
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueDirect(str); } ); editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
editWidget.align = fa_left; editWidget.align = fa_left;
editWidget.side_button = button(function() { editWidget.side_button = button(function() {
var path = get_save_filename(display_data.filter, ""); var path = get_save_filename(display_data.filter, "");
key_release(); key_release();
if(path == "") return noone; if(path == "") return noone;
return setValueDirect(path); return setValueInspector(path);
}, THEME.button_path_icon); }, THEME.button_path_icon);
extract_node = "Node_String"; extract_node = "Node_String";
@ -1204,7 +1200,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_DISPLAY.path_font : case VALUE_DISPLAY.path_font :
editWidget = new fontScrollBox( editWidget = new fontScrollBox(
function(val) { function(val) {
return setValueDirect(DIRECTORY + "Fonts/" + FONT_INTERNAL[val]); return setValueInspector(DIRECTORY + "Fonts/" + FONT_INTERNAL[val]);
} }
); );
break; break;
@ -1213,28 +1209,28 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_TYPE.curve : #region case VALUE_TYPE.curve : #region
display_type = VALUE_DISPLAY.curve; display_type = VALUE_DISPLAY.curve;
editWidget = new curveBox(function(_modified) { editWidget = new curveBox(function(_modified) {
return setValueDirect(_modified); return setValueInspector(_modified);
}); });
break; #endregion break; #endregion
case VALUE_TYPE.text : #region case VALUE_TYPE.text : #region
switch(display_type) { switch(display_type) {
case VALUE_DISPLAY._default : case VALUE_DISPLAY._default :
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { editWidget = new textArea(TEXTBOX_INPUT.text, function(str) {
return setValueDirect(str); return setValueInspector(str);
}); });
extract_node = "Node_String"; extract_node = "Node_String";
break; break;
case VALUE_DISPLAY.text_box : case VALUE_DISPLAY.text_box :
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { editWidget = new textBox(TEXTBOX_INPUT.text, function(str) {
return setValueDirect(str); return setValueInspector(str);
}); });
extract_node = "Node_String"; extract_node = "Node_String";
break; break;
case VALUE_DISPLAY.codeLUA : case VALUE_DISPLAY.codeLUA :
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { editWidget = new textArea(TEXTBOX_INPUT.text, function(str) {
return setValueDirect(str); return setValueInspector(str);
}); });
editWidget.font = f_code; editWidget.font = f_code;
@ -1245,7 +1241,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_DISPLAY.codeHLSL: case VALUE_DISPLAY.codeHLSL:
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { editWidget = new textArea(TEXTBOX_INPUT.text, function(str) {
return setValueDirect(str); return setValueInspector(str);
}); });
editWidget.autocomplete_server = hlsl_autocomplete_server; editWidget.autocomplete_server = hlsl_autocomplete_server;
@ -1261,7 +1257,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_DISPLAY.text_tunnel : case VALUE_DISPLAY.text_tunnel :
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { editWidget = new textBox(TEXTBOX_INPUT.text, function(str) {
return setValueDirect(str); return setValueInspector(str);
}); });
extract_node = "Node_String"; extract_node = "Node_String";
break; break;
@ -1274,7 +1270,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
case VALUE_TYPE.d3Material : case VALUE_TYPE.d3Material :
case VALUE_TYPE.surface : #region case VALUE_TYPE.surface : #region
editWidget = new surfaceBox(function(ind) { editWidget = new surfaceBox(function(ind) {
return setValueDirect(ind); return setValueInspector(ind);
} ); } );
if(!struct_has(display_data, "atlas")) display_data.atlas = true; if(!struct_has(display_data, "atlas")) display_data.atlas = true;
@ -1923,6 +1919,26 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} }
} #endregion } #endregion
static setValueInspector = function(val = 0, index = noone) { #region
INLINE
var res = false;
if(PANEL_INSPECTOR && PANEL_INSPECTOR.inspectGroup == 1) {
var ind = self.index;
for( var i = 0, n = array_length(PANEL_INSPECTOR.inspectings); i < n; i++ ) {
var _node = PANEL_INSPECTOR.inspectings[i];
if(ind >= ds_list_size(_node.inputs)) continue;
var r = _node.inputs[| ind].setValueDirect(val, index);
if(_node == node) res = r;
}
} else
res = setValueDirect(val, index);
return res;
} #endregion
static setValueDirect = function(val = 0, index = noone, record = true, time = CURRENT_FRAME, _update = true) { #region static setValueDirect = function(val = 0, index = noone, record = true, time = CURRENT_FRAME, _update = true) { #region
is_modified = true; is_modified = true;
var updated = false; var updated = false;

View file

@ -603,6 +603,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
var _l = ds_list_create_from_array(nodes_selecting); var _l = ds_list_create_from_array(nodes_selecting);
toCenterNode(array_empty(nodes_selecting)? nodes_list : _l); toCenterNode(array_empty(nodes_selecting)? nodes_list : _l);
ds_list_destroy(_l); ds_list_destroy(_l);
graph_s_to = 1;
} #endregion } #endregion
function dragGraph() { #region function dragGraph() { #region

View file

@ -25,6 +25,8 @@ function Panel_Inspector() : PanelContent() constructor {
locked = false; locked = false;
inspecting = noone; inspecting = noone;
inspectings = [];
inspectGroup = false;
top_bar_h = ui(100); top_bar_h = ui(100);
static initSize = function() { static initSize = function() {
@ -405,23 +407,20 @@ function Panel_Inspector() : PanelContent() constructor {
var jun = noone; var jun = noone;
var amoIn = _inspecting.input_display_list == -1? ds_list_size(_inspecting.inputs) : array_length(_inspecting.input_display_list); var amoIn = _inspecting.input_display_list == -1? ds_list_size(_inspecting.inputs) : array_length(_inspecting.input_display_list);
var amoOut = ds_list_size(_inspecting.outputs); var amoOut = ds_list_size(_inspecting.outputs);
var amo = amoIn + 1 + amoOut; var amo = inspectGroup == 0? amoIn + 1 + amoOut : amoIn;
var hh = ui(40); var hh = 0;
//tb_prop_filter.register(contentPane); //tb_prop_filter.register(contentPane);
//tb_prop_filter.setFocusHover(pHOVER, pFOCUS); //tb_prop_filter.setFocusHover(pHOVER, pFOCUS);
//tb_prop_filter.draw(ui(32), _y + ui(4), con_w - ui(64), ui(28), filter_text, _m); //tb_prop_filter.draw(ui(32), _y + ui(4), con_w - ui(64), ui(28), filter_text, _m);
//draw_sprite_ui(THEME.search, 0, ui(32 + 16), _y + ui(4 + 14), 1, 1, 0, COLORS._main_icon, 1); //draw_sprite_ui(THEME.search, 0, ui(32 + 16), _y + ui(4 + 14), 1, 1, 0, COLORS._main_icon, 1);
prop_page_button.setFocusHover(pFOCUS, pHOVER);
prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(28), prop_page, _m, x + contentPane.x, y + contentPane.y);
var xc = con_w / 2; var xc = con_w / 2;
if(prop_page == 1) { #region attribute/settings editor if(prop_page == 1) { #region attribute/settings editor
hh += ui(8); hh += ui(8);
var hg = ui(32); var hg = ui(32);
var yy = hh; var yy = _y + hh;
var wx1 = con_w - ui(8); var wx1 = con_w - ui(8);
var ww = max(ui(180), con_w / 3); var ww = max(ui(180), con_w / 3);
var wx0 = wx1 - ww; var wx0 = wx1 - ww;
@ -579,7 +578,7 @@ function Panel_Inspector() : PanelContent() constructor {
} else if(i == amoIn) { #region output label } else if(i == amoIn) { #region output label
hh += ui(8 + 32 + 8); hh += ui(8 + 32 + 8);
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(8), con_w, ui(32), COLORS.panel_inspector_output_label, 0.85); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(8), con_w, ui(32), COLORS.panel_inspector_output_label, 0.8);
draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub);
draw_text_add(xc, yy + ui(8 + 16), __txt("Outputs")); draw_text_add(xc, yy + ui(8 + 16), __txt("Outputs"));
continue; continue;
@ -745,7 +744,38 @@ function Panel_Inspector() : PanelContent() constructor {
prop_selecting = noone; prop_selecting = noone;
if(inspecting == noone) return drawMeta(_y, _m); if(inspecting == noone) return drawMeta(_y, _m);
return drawNodeProperties(_y, _m);
prop_page_button.setFocusHover(pFOCUS, pHOVER);
prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(28), prop_page, _m, x + contentPane.x, y + contentPane.y);
var _hh = ui(40);
_y += _hh;
if(inspectGroup >= 0) return drawNodeProperties(_y, _m, inspecting);
for( var i = 0, n = min(10, array_length(inspectings)); i < n; i++ ) {
if(i) {
_y += ui(8);
_hh += ui(8);
}
if(n > 1) {
draw_sprite_stretched_ext(THEME.group_label, 0, 0, _y, con_w, ui(32), COLORS.panel_inspector_output_label, 0.9);
draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub);
var _tx = inspectings[i].getFullName();
draw_text_add(con_w / 2, _y + ui(16), _tx);
_y += ui(32 + 8);
_hh += ui(32 + 8);
}
var _h = drawNodeProperties(_y, _m, inspectings[i]);
_y += _h;
_hh += _h;
}
return _hh;
}); #endregion }); #endregion
function propSelectCopy() { #region function propSelectCopy() { #region
@ -762,12 +792,17 @@ function Panel_Inspector() : PanelContent() constructor {
function drawInspectingNode() { #region function drawInspectingNode() { #region
tb_node_name.font = f_h5; tb_node_name.font = f_h5;
tb_node_name.hide = true; tb_node_name.hide = true;
tb_node_name.setFocusHover(pFOCUS, pHOVER);
tb_node_name.align = fa_center; tb_node_name.align = fa_center;
tb_node_name.format = TEXT_AREA_FORMAT.node_title; tb_node_name.format = TEXT_AREA_FORMAT.node_title;
tb_node_name.setFocusHover(pFOCUS, pHOVER);
var txt = inspecting.renamed? inspecting.display_name : inspecting.name; var txt = inspecting.renamed? inspecting.display_name : inspecting.name;
if(inspectGroup == 1) txt = $"[{array_length(PANEL_GRAPH.nodes_selecting)}] {txt}";
else if(inspectGroup == -1) txt = $"[{array_length(PANEL_GRAPH.nodes_selecting)}] Multiple nodes";
tb_node_name.draw(ui(64), ui(14), w - ui(128), ui(32), txt, [mx, my]); tb_node_name.draw(ui(64), ui(14), w - ui(128), ui(32), txt, [mx, my]);
if(inspectGroup >= 0) {
draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub);
draw_text_add(w / 2 + ui(8), ui(56), inspecting.name); draw_text_add(w / 2 + ui(8), ui(56), inspecting.name);
@ -775,18 +810,23 @@ function Panel_Inspector() : PanelContent() constructor {
draw_set_alpha(0.65); draw_set_alpha(0.65);
draw_text_add(w / 2, ui(76), inspecting.internalName); draw_text_add(w / 2, ui(76), inspecting.internalName);
draw_set_alpha(1); draw_set_alpha(1);
}
var bx = ui(8);
var by = ui(12);
if(inspectGroup == 0) {
draw_set_font(f_p1); draw_set_font(f_p1);
var lx = w / 2 - string_width(inspecting.name) / 2 - ui(10); var lx = w / 2 - string_width(inspecting.name) / 2 - ui(10);
var ly = ui(56 - 8); var ly = ui(56 - 8);
if(buttonInstant(THEME.button_hide, lx, ly, ui(16), ui(16), [mx, my], pFOCUS, pHOVER, __txt("Lock"), THEME.lock, !locked, locked? COLORS._main_icon_light : COLORS._main_icon,, 0.5) == 2) if(buttonInstant(THEME.button_hide, lx, ly, ui(16), ui(16), [mx, my], pFOCUS, pHOVER, __txt("Lock"), THEME.lock, !locked, locked? COLORS._main_icon_light : COLORS._main_icon,, 0.5) == 2)
locked = !locked; locked = !locked;
var bx = ui(8);
var by = ui(12);
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txt("Presets"), THEME.preset, 1) == 2) if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txt("Presets"), THEME.preset, 1) == 2)
dialogCall(o_dialog_preset, x + bx, y + by + ui(36), { "node": inspecting }); dialogCall(o_dialog_preset, x + bx, y + by + ui(36), { "node": inspecting });
} else {
draw_sprite_ui_uniform(THEME.preset, 1, bx + ui(32) / 2, by + ui(32) / 2, 1, COLORS._main_icon_dark);
}
by += ui(36); by += ui(36);
view_mode_tooltip.index = lineBreak; view_mode_tooltip.index = lineBreak;
@ -795,6 +835,8 @@ function Panel_Inspector() : PanelContent() constructor {
PREFERENCES.inspector_view_default = lineBreak; PREFERENCES.inspector_view_default = lineBreak;
} }
//////////////////////////////////////////////////////////////////// INSPECTOR ACTIONS ////////////////////////////////////////////////////////////////////
var bx = w - ui(44); var bx = w - ui(44);
var by = ui(12); var by = ui(12);
@ -802,9 +844,15 @@ function Panel_Inspector() : PanelContent() constructor {
var icon = inspecting.insp1UpdateIcon; var icon = inspecting.insp1UpdateIcon;
var ac = inspecting.insp1UpdateActive; var ac = inspecting.insp1UpdateActive;
var cc = ac? icon[2] : COLORS._main_icon_dark; var cc = ac? icon[2] : COLORS._main_icon_dark;
var tt = inspecting.insp1UpdateTooltip;
if(inspectGroup) tt += " [All]";
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS && ac, pHOVER && ac, inspecting.insp1UpdateTooltip, icon[0], icon[1], cc) == 2) if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS && ac, pHOVER && ac, tt, icon[0], icon[1], cc) == 2) {
if(inspectGroup == 1) {
for( var i = 0, n = array_length(inspectings); i < n; i++ ) inspectings[i].inspector1Update();
} else
inspecting.inspector1Update(); inspecting.inspector1Update();
}
} else } else
draw_sprite_ui(THEME.sequence_control, 1, bx + ui(16), by + ui(16),,,, COLORS._main_icon_dark); draw_sprite_ui(THEME.sequence_control, 1, bx + ui(16), by + ui(16),,,, COLORS._main_icon_dark);
@ -813,10 +861,16 @@ function Panel_Inspector() : PanelContent() constructor {
var icon = inspecting.insp2UpdateIcon; var icon = inspecting.insp2UpdateIcon;
var ac = inspecting.insp2UpdateActive; var ac = inspecting.insp2UpdateActive;
var cc = ac? icon[2] : COLORS._main_icon_dark; var cc = ac? icon[2] : COLORS._main_icon_dark;
var tt = inspecting.insp2UpdateTooltip;
if(inspectGroup) tt += " [All]";
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS && ac, pHOVER && ac, inspecting.insp2UpdateTooltip, icon[0], icon[1], cc) = 2) if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS && ac, pHOVER && ac, tt, icon[0], icon[1], cc) = 2) {
if(inspectGroup) {
for( var i = 0, n = array_length(inspectings); i < n; i++ ) inspectings[i].inspector2Update();
} else
inspecting.inspector2Update(); inspecting.inspector2Update();
} }
}
} #endregion } #endregion
function drawContent(panel) { #region >>>>>>>>>>>>>>>>>>>> MAIN DRAW <<<<<<<<<<<<<<<<<<<< function drawContent(panel) { #region >>>>>>>>>>>>>>>>>>>> MAIN DRAW <<<<<<<<<<<<<<<<<<<<
@ -828,6 +882,15 @@ function Panel_Inspector() : PanelContent() constructor {
inspecting = noone; inspecting = noone;
if(inspecting) { if(inspecting) {
var _ins = instanceof(inspecting);
var _nodes = PANEL_GRAPH.nodes_selecting;
inspectGroup = array_length(_nodes) > 1;
inspectings = array_empty(_nodes)? [ inspecting ] : _nodes;
for( var i = 0, n = array_length(_nodes); i < n; i++ )
if(instanceof(_nodes[i]) != _ins) { inspectGroup = -1; break; }
title = inspecting.renamed? inspecting.display_name : inspecting.name; title = inspecting.renamed? inspecting.display_name : inspecting.name;
inspecting.inspectorStep(); inspecting.inspectorStep();
drawInspectingNode(); drawInspectingNode();

View file

@ -443,8 +443,18 @@ function Panel_Preview() : PanelContent() constructor {
var dx = mx - d3_camPan_mx; var dx = mx - d3_camPan_mx;
var dy = my - d3_camPan_my; var dy = my - d3_camPan_my;
d3_view_camera.focus_angle_x += dx * 0.2 * d3_pan_speed; var px = d3_view_camera.focus_angle_x;
d3_view_camera.focus_angle_y += dy * 0.1 * d3_pan_speed; var py = d3_view_camera.focus_angle_y;
var ax = px + dx * 0.2 * d3_pan_speed;
var ay = py + dy * 0.1 * d3_pan_speed;
//if(py < 90 && ay >= 90) ax -= 180;
//if(py > 90 && ay <= 90) ax += 180;
//print($"{ax},\t{ay}");
d3_view_camera.focus_angle_x = ax;
d3_view_camera.focus_angle_y = ay;
} }
d3_camPan_mx = mx; d3_camPan_mx = mx;
@ -751,8 +761,9 @@ function Panel_Preview() : PanelContent() constructor {
sample_x = floor((mx - canvas_x) / canvas_s); sample_x = floor((mx - canvas_x) / canvas_s);
sample_y = floor((my - canvas_y) / canvas_s); sample_y = floor((my - canvas_y) / canvas_s);
var surf = getNodePreviewSurface(); var surf = getNodePreviewSurface();
if(is_surface(surf))
sample_color = surface_get_pixel_ext(surf, sample_x, sample_y); sample_color = surface_get_pixel_ext(surf, sample_x, sample_y);
//print($"{dec_to_hex(sample_color)}: {color_get_alpha(int64(sample_color))}");
} }
} #endregion } #endregion
@ -1328,6 +1339,7 @@ function Panel_Preview() : PanelContent() constructor {
if(sample_color != noone) { if(sample_color != noone) {
draw_set_color(sample_color); draw_set_color(sample_color);
draw_rectangle(cx, cy, cx + cw, cy + ch, false); draw_rectangle(cx, cy, cx + cw, cy + ch, false);
draw_set_alpha(1);
} }
draw_set_color(COLORS.panel_toolbar_outline); draw_set_color(COLORS.panel_toolbar_outline);

View file

@ -207,10 +207,10 @@
function surface_get_pixel_ext(surface, _x, _y) { #region function surface_get_pixel_ext(surface, _x, _y) { #region
INLINE INLINE
if(!is_surface(surface)) return; if(!is_surface(surface)) return 0;
var px = surface_getpixel_ext(surface, _x, _y); var px = surface_getpixel_ext(surface, _x, _y);
if(is_numeric(px)) return px; if(is_numeric(px)) return int64(px);
return round(px[0] * (255 * power(256, 0))) + round(px[1] * (255 * power(256, 1))) + round(px[2] * (255 * power(256, 2))) + round(px[3] * (255 * power(256, 3))); return round(px[0] * (255 * power(256, 0))) + round(px[1] * (255 * power(256, 1))) + round(px[2] * (255 * power(256, 2))) + round(px[3] * (255 * power(256, 3)));
} #endregion } #endregion

View file

@ -0,0 +1,36 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec2 dimension;
uniform int edge;
uniform vec2 width;
uniform int widthUseSurf;
uniform sampler2D widthSurf;
uniform float blend;
void main() {
float wid = width.x;
float widMax = max(width.x, width.y);
if(widthUseSurf == 1) {
vec4 _vMap = texture2D( widthSurf, v_vTexcoord );
wid = mix(width.x, width.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
}
float bnd = 1. - blend;
vec4 off;
float m = 0.;
vec2 v = 1. - max(vec2(0.), abs(v_vTexcoord - 0.5) * 2. / wid - bnd) / (1. - bnd);
vec2 vi = 1. - max(vec2(0.), (1. - abs(v_vTexcoord - 0.5) * 2.) / wid - bnd) / (1. - bnd);
float mi = 1. - max(vi.x, vi.y);
if(edge == 0) m = min(max(v.x, v.y), max(v.x, v.y) + mi - 1.);
else if(edge == 1) m = v.x;
else if(edge == 2) m = v.y;
m = clamp(m, 0., 1.);
//m = smoothstep(0., 1., m);
gl_FragColor = vec4(vec3(m), 1.);
}

View file

@ -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;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_blend_edge",
"parent": {
"name": "blend edge",
"path": "folders/shader/filter/blend edge.yy",
},
"type": 1,
}

View file

@ -0,0 +1,26 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec2 dimension;
uniform int edge;
uniform sampler2D mask;
void main() {
float msk = texture2D( mask, v_vTexcoord ).r;
vec4 cur = texture2D( gm_BaseTexture, v_vTexcoord );
vec4 off;
if(edge == 0) {
off = texture2D( gm_BaseTexture, fract(v_vTexcoord + vec2(0.5, 0.5)) );
} else if(edge == 1) {
off = texture2D( gm_BaseTexture, fract(v_vTexcoord + vec2(0.5, 0.0)) );
} else if(edge == 2) {
off = texture2D( gm_BaseTexture, fract(v_vTexcoord + vec2(0.0, 0.5)) );
}
gl_FragColor = mix(off, cur, msk);
}

View file

@ -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;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_blend_edge_blend",
"parent": {
"name": "blend edge",
"path": "folders/shader/filter/blend edge.yy",
},
"type": 1,
}

View file

@ -0,0 +1,36 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec2 dimension;
uniform int edge;
uniform vec2 width;
uniform int widthUseSurf;
uniform sampler2D widthSurf;
uniform float blend;
void main() {
float wid = width.x;
float widMax = max(width.x, width.y);
if(widthUseSurf == 1) {
vec4 _vMap = texture2D( widthSurf, v_vTexcoord );
wid = mix(width.x, width.y, (_vMap.r + _vMap.g + _vMap.b) / 3.);
}
float bnd = 1. - blend;
vec4 off;
float m = 0.;
vec2 v = 1. - max(vec2(0.), abs(v_vTexcoord - 0.5) * 2. / wid - bnd) / (1. - bnd);
vec2 vi = 1. - max(vec2(0.), (1. - abs(v_vTexcoord - 0.5) * 2.) / wid - bnd) / (1. - bnd);
float mi = 1. - max(vi.x, vi.y);
if(edge == 0) m = min(max(v.x, v.y), max(v.x, v.y) + mi - 1.);
else if(edge == 1) m = v.x;
else if(edge == 2) m = v.y;
m = clamp(m, 0., 1.);
//m = smoothstep(0., 1., m);
gl_FragColor = vec4(vec3(m), 1.);
}

View file

@ -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;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_blend_edge_extract",
"parent": {
"name": "blend edge",
"path": "folders/shader/filter/blend edge.yy",
},
"type": 1,
}

View file

@ -0,0 +1,42 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec2 u_resolution;
uniform vec2 position;
uniform float density;
uniform float seed;
uniform float slope;
uniform float curve;
uniform float curveDetail;
uniform float thickness;
float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(1., 6.), vec2(2., 7.))) * (1. + seed)); }
void main() {
vec2 tx = 1. / u_resolution;
vec2 pos = v_vTexcoord + position;
float w = 0.;
float _t = min(tx.x, tx.y) / 2.;
float mt = 1. - _t;
float rp = u_resolution.x;
int amo = int(density * rp);
for (int i = 0; i < amo; i++) {
float _x = random(vec2(float(i), 1.));
float _y = random(vec2(1., float(i)));
float _s = random(vec2(2., float(i))) - 0.5;
float _a = random(vec2(float(i), 2.));
_x += _s * 2. * (pos.y - _y) * slope;
_x += sin((pos.y - _y) * curveDetail * u_resolution.y / 4.) * curve / u_resolution.x * 2.;
float st = smoothstep(mt - thickness, mt + thickness, 1. - abs(pos.x - _x)) * _a;
w = max(w, st);
}
gl_FragColor = vec4(vec3(w), 1.);
}

View file

@ -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;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_noise_strand",
"parent": {
"name": "noise",
"path": "folders/shader/generator/noise.yy",
},
"type": 1,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_node_strand_noise",
"bbox_bottom": 63,
"bbox_left": 0,
"bbox_right": 63,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"58394d46-a521-4621-ad94-582aea25b18e",},
],
"gridX": 0,
"gridY": 0,
"height": 64,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"91f7785d-8ec5-4bd2-97c6-09f8c66dba59","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "generator",
"path": "folders/nodes/icons/generator.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_node_strand_noise",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"58394d46-a521-4621-ad94-582aea25b18e","path":"sprites/s_node_strand_noise/s_node_strand_noise.yy",},},},"Disabled":false,"id":"25648bea-fea8-48a3-831d-d0d6e95d3ba7","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 32,
"yorigin": 32,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 64,
}