diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index ba857ae9c..17e8981cc 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -65,17 +65,17 @@ {"name":"vector","order":3,"path":"folders/functions/vector.yy",}, {"name":"window","order":29,"path":"folders/functions/window.yy",}, {"name":"main","order":1,"path":"folders/main.yy",}, - {"name":"scritps","order":2,"path":"folders/main/scritps.yy",}, + {"name":"startup scripts","order":2,"path":"folders/main/startup scripts.yy",}, {"name":"nodes","order":3,"path":"folders/nodes.yy",}, - {"name":"data","order":10,"path":"folders/nodes/data.yy",}, - {"name":"__base__","order":12,"path":"folders/nodes/data/__base__.yy",}, + {"name":"data","order":1,"path":"folders/nodes/data.yy",}, + {"name":"__base__","order":11,"path":"folders/nodes/data/__base__.yy",}, {"name":"3D","order":7,"path":"folders/nodes/data/3D.yy",}, {"name":"primitive","order":19,"path":"folders/nodes/data/3D/primitive.yy",}, {"name":"animation","order":5,"path":"folders/nodes/data/animation.yy",}, - {"name":"audio","order":21,"path":"folders/nodes/data/audio.yy",}, - {"name":"compose","order":15,"path":"folders/nodes/data/compose.yy",}, + {"name":"audio","order":19,"path":"folders/nodes/data/audio.yy",}, + {"name":"compose","order":14,"path":"folders/nodes/data/compose.yy",}, {"name":"armature","order":5,"path":"folders/nodes/data/compose/armature.yy",}, - {"name":"feedback","order":14,"path":"folders/nodes/data/feedback.yy",}, + {"name":"feedback","order":13,"path":"folders/nodes/data/feedback.yy",}, {"name":"filter","order":1,"path":"folders/nodes/data/filter.yy",}, {"name":"colors","order":4,"path":"folders/nodes/data/filter/colors.yy",}, {"name":"combine","order":1,"path":"folders/nodes/data/filter/combine.yy",}, @@ -83,21 +83,25 @@ {"name":"effects","order":3,"path":"folders/nodes/data/filter/effects.yy",}, {"name":"fixes","order":6,"path":"folders/nodes/data/filter/fixes.yy",}, {"name":"warps","order":2,"path":"folders/nodes/data/filter/warps.yy",}, - {"name":"fluidSim","order":19,"path":"folders/nodes/data/fluidSim.yy",}, + {"name":"fluidSim","order":17,"path":"folders/nodes/data/fluidSim.yy",}, {"name":"generator","order":4,"path":"folders/nodes/data/generator.yy",}, {"name":"noise","order":14,"path":"folders/nodes/data/generator/noise.yy",}, {"name":"pattern","order":15,"path":"folders/nodes/data/generator/pattern.yy",}, {"name":"group","order":6,"path":"folders/nodes/data/group.yy",}, {"name":"network","order":16,"path":"folders/nodes/data/IO/network.yy",}, - {"name":"iterate","order":10,"path":"folders/nodes/data/iterate.yy",}, + {"name":"iterate","order":9,"path":"folders/nodes/data/iterate.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":"lua","order":17,"path":"folders/nodes/data/lua.yy",}, - {"name":"node","order":11,"path":"folders/nodes/data/node.yy",}, + {"name":"lua","order":16,"path":"folders/nodes/data/lua.yy",}, + {"name":"node","order":10,"path":"folders/nodes/data/node.yy",}, + {"name":"pixel builder","order":20,"path":"folders/nodes/data/pixel builder.yy",}, + {"name":"box","order":2,"path":"folders/nodes/data/pixel builder/box.yy",}, + {"name":"draw","order":3,"path":"folders/nodes/data/pixel builder/draw.yy",}, + {"name":"effect","order":4,"path":"folders/nodes/data/pixel builder/effect.yy",}, {"name":"render","order":2,"path":"folders/nodes/data/render.yy",}, - {"name":"rigidSim","order":16,"path":"folders/nodes/data/rigidSim.yy",}, - {"name":"strandSim","order":20,"path":"folders/nodes/data/strandSim.yy",}, + {"name":"rigidSim","order":15,"path":"folders/nodes/data/rigidSim.yy",}, + {"name":"strandSim","order":18,"path":"folders/nodes/data/strandSim.yy",}, {"name":"transform","order":8,"path":"folders/nodes/data/transform.yy",}, {"name":"value","order":3,"path":"folders/nodes/data/value.yy",}, {"name":"atlas","order":9,"path":"folders/nodes/data/value/atlas.yy",}, @@ -106,8 +110,7 @@ {"name":"struct","order":6,"path":"folders/nodes/data/value/struct.yy",}, {"name":"surface","order":10,"path":"folders/nodes/data/value/surface.yy",}, {"name":"trigger","order":8,"path":"folders/nodes/data/value/trigger.yy",}, - {"name":"VFX","order":13,"path":"folders/nodes/data/VFX.yy",}, - {"name":"icons","order":6,"path":"folders/nodes/icons.yy",}, + {"name":"VFX","order":12,"path":"folders/nodes/data/VFX.yy",}, {"name":"3D","order":133,"path":"folders/nodes/icons/3D.yy",}, {"name":"animation","order":135,"path":"folders/nodes/icons/animation.yy",}, {"name":"filter","order":141,"path":"folders/nodes/icons/filter.yy",}, @@ -115,6 +118,7 @@ {"name":"generator","order":142,"path":"folders/nodes/icons/generator.yy",}, {"name":"IO","order":143,"path":"folders/nodes/icons/IO.yy",}, {"name":"node","order":139,"path":"folders/nodes/icons/node.yy",}, + {"name":"pixel builder","order":149,"path":"folders/nodes/icons/pixel builder.yy",}, {"name":"render","order":140,"path":"folders/nodes/icons/render.yy",}, {"name":"rigidSim","order":146,"path":"folders/nodes/icons/rigidSim.yy",}, {"name":"strandSim","order":148,"path":"folders/nodes/icons/strandSim.yy",}, @@ -162,6 +166,7 @@ {"name":"mask","order":45,"path":"folders/shader/mask.yy",}, {"name":"misc","order":50,"path":"folders/shader/misc.yy",}, {"name":"morph","order":54,"path":"folders/shader/morph.yy",}, + {"name":"pixel builder","order":55,"path":"folders/shader/pixel builder.yy",}, {"name":"shape seperator","order":35,"path":"folders/shader/shape seperator.yy",}, {"name":"sprites","order":20,"path":"folders/shader/sprites.yy",}, {"name":"surface replace","order":53,"path":"folders/shader/surface replace.yy",}, @@ -174,6 +179,7 @@ {"name":"biterator","order":2,"path":"folders/VCT/biterator.yy",}, {"name":"widget","order":3,"path":"folders/VCT/widget.yy",}, {"name":"widgets","order":5,"path":"folders/widgets.yy",}, + {"name":"color picker","order":56,"path":"folders/shader/color picker.yy",}, ], "ResourceOrderSettings": [ {"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",}, @@ -181,7 +187,7 @@ {"name":"panel_function","order":2,"path":"scripts/panel_function/panel_function.yy",}, {"name":"node_time_remap","order":3,"path":"scripts/node_time_remap/node_time_remap.yy",}, {"name":"sh_perlin","order":4,"path":"shaders/sh_perlin/sh_perlin.yy",}, - {"name":"node_tool","order":10,"path":"scripts/node_tool/node_tool.yy",}, + {"name":"node_tool","order":9,"path":"scripts/node_tool/node_tool.yy",}, {"name":"sh_find_pixel","order":3,"path":"shaders/sh_find_pixel/sh_find_pixel.yy",}, {"name":"panel_preview_window","order":1,"path":"scripts/panel_preview_window/panel_preview_window.yy",}, {"name":"sh_scale3x","order":29,"path":"shaders/sh_scale3x/sh_scale3x.yy",}, @@ -194,6 +200,7 @@ {"name":"node_region_fill","order":20,"path":"scripts/node_region_fill/node_region_fill.yy",}, {"name":"s_node_text_file_read","order":13,"path":"sprites/s_node_text_file_read/s_node_text_file_read.yy",}, {"name":"s_node_text_trim","order":7,"path":"sprites/s_node_text_trim/s_node_text_trim.yy",}, + {"name":"s_node_pb_fx_shading","order":3,"path":"sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy",}, {"name":"sh_noise_grid_hex","order":2,"path":"shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy",}, {"name":"node_3d_obj","order":8,"path":"scripts/node_3d_obj/node_3d_obj.yy",}, {"name":"__path","order":1,"path":"scripts/__path/__path.yy",}, @@ -203,11 +210,13 @@ {"name":"s_node_blend","order":7,"path":"sprites/s_node_blend/s_node_blend.yy",}, {"name":"node_wrap_perspective","order":15,"path":"scripts/node_wrap_perspective/node_wrap_perspective.yy",}, {"name":"s_node_rigidSim_object_spawner","order":5,"path":"sprites/s_node_rigidSim_object_spawner/s_node_rigidSim_object_spawner.yy",}, + {"name":"node_pb_draw_roundrectangle","order":4,"path":"scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.yy",}, {"name":"draw_text_function","order":11,"path":"scripts/draw_text_function/draw_text_function.yy",}, {"name":"o_dialog_file_name_collection","order":5,"path":"objects/o_dialog_file_name_collection/o_dialog_file_name_collection.yy",}, {"name":"node_line","order":3,"path":"scripts/node_line/node_line.yy",}, {"name":"s_node_frame","order":1,"path":"sprites/s_node_frame/s_node_frame.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":"node_blur_radial","order":7,"path":"scripts/node_blur_radial/node_blur_radial.yy",}, {"name":"node_2d_light","order":1,"path":"scripts/node_2d_light/node_2d_light.yy",}, {"name":"node_rigid_activation","order":7,"path":"scripts/node_rigid_activation/node_rigid_activation.yy",}, @@ -218,7 +227,7 @@ {"name":"s_node_3d_obj","order":3,"path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",}, {"name":"ds_list_queue","order":6,"path":"scripts/ds_list_queue/ds_list_queue.yy",}, {"name":"s_node_scale","order":6,"path":"sprites/s_node_scale/s_node_scale.yy",}, - {"name":"sh_color_picker_value","order":6,"path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",}, + {"name":"sh_color_picker_value","order":1,"path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",}, {"name":"textInput","order":24,"path":"scripts/textInput/textInput.yy",}, {"name":"node_dither","order":7,"path":"scripts/node_dither/node_dither.yy",}, {"name":"sh_perlin_smear","order":5,"path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",}, @@ -263,6 +272,7 @@ {"name":"s_node_noise_simplex","order":20,"path":"sprites/s_node_noise_simplex/s_node_noise_simplex.yy",}, {"name":"s_node_armature_sample","order":18,"path":"sprites/s_node_armature_sample/s_node_armature_sample.yy",}, {"name":"o_dialog_notifications","order":6,"path":"objects/o_dialog_notifications/o_dialog_notifications.yy",}, + {"name":"sh_draw_color","order":8,"path":"shaders/sh_draw_color/sh_draw_color.yy",}, {"name":"s_node_array_find","order":2,"path":"sprites/s_node_array_find/s_node_array_find.yy",}, {"name":"fd_rectangle_set_velocity_time_step","order":17,"path":"scripts/fd_rectangle_set_velocity_time_step/fd_rectangle_set_velocity_time_step.yy",}, {"name":"fd_rectangle_set_collision_mask_sprite","order":1,"path":"scripts/fd_rectangle_set_collision_mask_sprite/fd_rectangle_set_collision_mask_sprite.yy",}, @@ -298,6 +308,7 @@ {"name":"node_polygonal_shape","order":10,"path":"scripts/node_polygonal_shape/node_polygonal_shape.yy",}, {"name":"fd_rectangle_get_collision_mask_sprite","order":4,"path":"scripts/fd_rectangle_get_collision_mask_sprite/fd_rectangle_get_collision_mask_sprite.yy",}, {"name":"node_flip","order":13,"path":"scripts/node_flip/node_flip.yy",}, + {"name":"s_node_pb_fx_subtract","order":1,"path":"sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy",}, {"name":"sh_FXAA","order":52,"path":"shaders/sh_FXAA/sh_FXAA.yy",}, {"name":"s_biterator_slider","order":6,"path":"sprites/s_biterator_slider/s_biterator_slider.yy",}, {"name":"node_gradient_points","order":8,"path":"scripts/node_gradient_points/node_gradient_points.yy",}, @@ -339,10 +350,12 @@ {"name":"sh_chromatic_aberration","order":31,"path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",}, {"name":"fd_rectangle_create_view","order":3,"path":"scripts/fd_rectangle_create_view/fd_rectangle_create_view.yy",}, {"name":"node_fluid_vortex","order":8,"path":"scripts/node_fluid_vortex/node_fluid_vortex.yy",}, + {"name":"node_pb_draw_angle","order":7,"path":"scripts/node_pb_draw_angle/node_pb_draw_angle.yy",}, {"name":"sh_cell_noise_round","order":4,"path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",}, {"name":"s_node_cross_product_2d","order":12,"path":"sprites/s_node_cross_product_2d/s_node_cross_product_2d.yy",}, {"name":"s_node_path_plot","order":12,"path":"sprites/s_node_path_plot/s_node_path_plot.yy",}, {"name":"__initAddon","order":2,"path":"scripts/__initAddon/__initAddon.yy",}, + {"name":"node_pb_draw_trapezoid","order":8,"path":"scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.yy",}, {"name":"json_functions","order":8,"path":"scripts/json_functions/json_functions.yy",}, {"name":"s_node_3d_displace","order":11,"path":"sprites/s_node_3d_displace/s_node_3d_displace.yy",}, {"name":"event_recorder","order":4,"path":"scripts/event_recorder/event_recorder.yy",}, @@ -359,7 +372,7 @@ {"name":"s_node_rigidSim_renderer","order":1,"path":"sprites/s_node_rigidSim_renderer/s_node_rigidSim_renderer.yy",}, {"name":"__init_background","order":4,"path":"scripts/__init_background/__init_background.yy",}, {"name":"s_textbox","order":1,"path":"sprites/s_textbox/s_textbox.yy",}, - {"name":"__node","order":9,"path":"scripts/__node/__node.yy",}, + {"name":"__node","order":8,"path":"scripts/__node/__node.yy",}, {"name":"fd_rectangle_add_velocity","order":5,"path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",}, {"name":"sh_level_selector","order":15,"path":"shaders/sh_level_selector/sh_level_selector.yy",}, {"name":"byte_writer","order":8,"path":"scripts/byte_writer/byte_writer.yy",}, @@ -392,6 +405,7 @@ {"name":"__panel_empty","order":7,"path":"scripts/__panel_empty/__panel_empty.yy",}, {"name":"s_node_compose","order":1,"path":"sprites/s_node_compose/s_node_compose.yy",}, {"name":"s_node_switch","order":20,"path":"sprites/s_node_switch/s_node_switch.yy",}, + {"name":"s_node_pb_draw_blob","order":16,"path":"sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy",}, {"name":"s_node_crop","order":2,"path":"sprites/s_node_crop/s_node_crop.yy",}, {"name":"__VFX","order":2,"path":"scripts/__VFX/__VFX.yy",}, {"name":"s_menu_black","order":2,"path":"sprites/s_menu_black/s_menu_black.yy",}, @@ -405,6 +419,7 @@ {"name":"s_node_vfx_variable","order":10,"path":"sprites/s_node_vfx_variable/s_node_vfx_variable.yy",}, {"name":"node_displacement","order":1,"path":"scripts/node_displacement/node_displacement.yy",}, {"name":"mask_function","order":1,"path":"scripts/mask_function/mask_function.yy",}, + {"name":"s_node_pb_draw_ellipse","order":15,"path":"sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy",}, {"name":"text_file","order":5,"path":"scripts/text_file/text_file.yy",}, {"name":"node_armature_pose","order":3,"path":"scripts/node_armature_pose/node_armature_pose.yy",}, {"name":"sh_trail_filler_pass1","order":49,"path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",}, @@ -423,8 +438,11 @@ {"name":"curve_damping_function","order":2,"path":"scripts/curve_damping_function/curve_damping_function.yy",}, {"name":"fd_rectangle_get_collision_mask_surface","order":6,"path":"scripts/fd_rectangle_get_collision_mask_surface/fd_rectangle_get_collision_mask_surface.yy",}, {"name":"s_node_strandSim_length","order":9,"path":"sprites/s_node_strandSim_length/s_node_strandSim_length.yy",}, + {"name":"node_pb_fx_substract","order":4,"path":"scripts/node_pb_fx_substract/node_pb_fx_substract.yy",}, + {"name":"node_pb_fx_radial","order":9,"path":"scripts/node_pb_fx_radial/node_pb_fx_radial.yy",}, {"name":"node_VFX_variable","order":15,"path":"scripts/node_VFX_variable/node_VFX_variable.yy",}, {"name":"node_array_sort","order":23,"path":"scripts/node_array_sort/node_array_sort.yy",}, + {"name":"sh_pb_outline","order":2,"path":"shaders/sh_pb_outline/sh_pb_outline.yy",}, {"name":"fd_draw_surface_to_collision_mask_surface","order":2,"path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",}, {"name":"sh_blur_box_contrast","order":3,"path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",}, {"name":"sh_fd_calculate_pressure_jacobi_glsl","order":8,"path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",}, @@ -447,6 +465,7 @@ {"name":"textBox","order":17,"path":"scripts/textBox/textBox.yy",}, {"name":"pathArrayBox","order":27,"path":"scripts/pathArrayBox/pathArrayBox.yy",}, {"name":"node_statistic","order":3,"path":"scripts/node_statistic/node_statistic.yy",}, + {"name":"node_pb_box_inset","order":4,"path":"scripts/node_pb_box_inset/node_pb_box_inset.yy",}, {"name":"sh_draw_surface_part_tiled","order":1,"path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",}, {"name":"o_dialog_add_node","order":1,"path":"objects/o_dialog_add_node/o_dialog_add_node.yy",}, {"name":"s_node_path_reverse","order":8,"path":"sprites/s_node_path_reverse/s_node_path_reverse.yy",}, @@ -456,7 +475,7 @@ {"name":"node_lua_surface","order":2,"path":"scripts/node_lua_surface/node_lua_surface.yy",}, {"name":"sh_blur_directional","order":4,"path":"shaders/sh_blur_directional/sh_blur_directional.yy",}, {"name":"panel_tunnels","order":1,"path":"scripts/panel_tunnels/panel_tunnels.yy",}, - {"name":"node_processor","order":8,"path":"scripts/node_processor/node_processor.yy",}, + {"name":"node_processor","order":7,"path":"scripts/node_processor/node_processor.yy",}, {"name":"animation_controller","order":1,"path":"scripts/animation_controller/animation_controller.yy",}, {"name":"s_node_shadow","order":36,"path":"sprites/s_node_shadow/s_node_shadow.yy",}, {"name":"s_node_grid_hex_noise","order":21,"path":"sprites/s_node_grid_hex_noise/s_node_grid_hex_noise.yy",}, @@ -479,12 +498,15 @@ {"name":"surface_valid","order":6,"path":"scripts/surface_valid/surface_valid.yy",}, {"name":"sh_blur_zoom","order":5,"path":"shaders/sh_blur_zoom/sh_blur_zoom.yy",}, {"name":"node_VFX_renderer","order":3,"path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",}, + {"name":"s_node_pb_fx_stack","order":2,"path":"sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy",}, {"name":"fd_draw_sprite_to_collision_mask_surface","order":1,"path":"scripts/fd_draw_sprite_to_collision_mask_surface/fd_draw_sprite_to_collision_mask_surface.yy",}, {"name":"node_fluid_render","order":2,"path":"scripts/node_fluid_render/node_fluid_render.yy",}, {"name":"s_node_invert","order":27,"path":"sprites/s_node_invert/s_node_invert.yy",}, + {"name":"sh_color_picker_side_hue","order":2,"path":"shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.yy",}, {"name":"draw_text_delimiter","order":14,"path":"scripts/draw_text_delimiter/draw_text_delimiter.yy",}, {"name":"s_node_path_anchor","order":13,"path":"sprites/s_node_path_anchor/s_node_path_anchor.yy",}, {"name":"node_array_get","order":10,"path":"scripts/node_array_get/node_array_get.yy",}, + {"name":"node_pb_fx_highlight","order":1,"path":"scripts/node_pb_fx_highlight/node_pb_fx_highlight.yy",}, {"name":"Apollo","order":5,"path":"extensions/Apollo/Apollo.yy",}, {"name":"sh_twirl","order":3,"path":"shaders/sh_twirl/sh_twirl.yy",}, {"name":"s_node_shape","order":14,"path":"sprites/s_node_shape/s_node_shape.yy",}, @@ -505,6 +527,7 @@ {"name":"s_node_loop","order":5,"path":"sprites/s_node_loop/s_node_loop.yy",}, {"name":"node_zigzag","order":5,"path":"scripts/node_zigzag/node_zigzag.yy",}, {"name":"node_equation","order":4,"path":"scripts/node_equation/node_equation.yy",}, + {"name":"s_node_pb_box_divide_grid","order":23,"path":"sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.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":"_f_h5","order":2,"path":"fonts/_f_h5/_f_h5.yy",}, @@ -541,10 +564,12 @@ {"name":"s_node_threshold","order":47,"path":"sprites/s_node_threshold/s_node_threshold.yy",}, {"name":"sh_draw_normal","order":5,"path":"shaders/sh_draw_normal/sh_draw_normal.yy",}, {"name":"preview_overlay_rotation","order":1,"path":"scripts/preview_overlay_rotation/preview_overlay_rotation.yy",}, - {"name":"node_registry","order":5,"path":"scripts/node_registry/node_registry.yy",}, + {"name":"node_registry","order":11,"path":"scripts/node_registry/node_registry.yy",}, {"name":"sh_checkerboard","order":12,"path":"shaders/sh_checkerboard/sh_checkerboard.yy",}, {"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":"s_node_pb_box_divide","order":24,"path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.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",}, @@ -587,6 +612,7 @@ {"name":"buttonPalette","order":6,"path":"scripts/buttonPalette/buttonPalette.yy",}, {"name":"fd_rectangle_draw_stretched","order":11,"path":"scripts/fd_rectangle_draw_stretched/fd_rectangle_draw_stretched.yy",}, {"name":"s_node_wiggler","order":2,"path":"sprites/s_node_wiggler/s_node_wiggler.yy",}, + {"name":"__pbBox","order":6,"path":"scripts/__pbBox/__pbBox.yy",}, {"name":"s_node_to_text","order":13,"path":"sprites/s_node_to_text/s_node_to_text.yy",}, {"name":"sh_edge_detect","order":30,"path":"shaders/sh_edge_detect/sh_edge_detect.yy",}, {"name":"s_node_area","order":4,"path":"sprites/s_node_area/s_node_area.yy",}, @@ -611,12 +637,14 @@ {"name":"s_node_array_set","order":9,"path":"sprites/s_node_array_set/s_node_array_set.yy",}, {"name":"node_dust","order":21,"path":"scripts/node_dust/node_dust.yy",}, {"name":"node_noise_cell","order":2,"path":"scripts/node_noise_cell/node_noise_cell.yy",}, + {"name":"s_node_pb_fx_radial","order":4,"path":"sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy",}, {"name":"__background_get_internal","order":2,"path":"scripts/__background_get_internal/__background_get_internal.yy",}, {"name":"s_biterator_b_labels","order":9,"path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",}, {"name":"sh_combine_hsv","order":10,"path":"shaders/sh_combine_hsv/sh_combine_hsv.yy",}, {"name":"s_node_array_insert","order":4,"path":"sprites/s_node_array_insert/s_node_array_insert.yy",}, {"name":"addon_lua","order":1,"path":"scripts/addon_lua/addon_lua.yy",}, {"name":"nodeValue_drawer","order":1,"path":"scripts/nodeValue_drawer/nodeValue_drawer.yy",}, + {"name":"s_node_pb_draw_semi_ellipse","order":11,"path":"sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy",}, {"name":"mtl_reader","order":6,"path":"scripts/mtl_reader/mtl_reader.yy",}, {"name":"s_node_3d_array","order":7,"path":"sprites/s_node_3d_array/s_node_3d_array.yy",}, {"name":"node_plot_linear","order":13,"path":"scripts/node_plot_linear/node_plot_linear.yy",}, @@ -630,6 +658,7 @@ {"name":"notification_system","order":7,"path":"scripts/notification_system/notification_system.yy",}, {"name":"buffer_object","order":1,"path":"scripts/buffer_object/buffer_object.yy",}, {"name":"s_node_audio_trim","order":3,"path":"sprites/s_node_audio_trim/s_node_audio_trim.yy",}, + {"name":"s_node_pb_fx_highlight","order":7,"path":"sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy",}, {"name":"node_color_from_hsv","order":8,"path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",}, {"name":"s_biterator_tab_inactive","order":11,"path":"sprites/s_biterator_tab_inactive/s_biterator_tab_inactive.yy",}, {"name":"s_node_image_copy","order":3,"path":"sprites/s_node_image_copy/s_node_image_copy.yy",}, @@ -671,12 +700,14 @@ {"name":"s_node_base_conversion","order":10,"path":"sprites/s_node_base_conversion/s_node_base_conversion.yy",}, {"name":"node_transform_array","order":15,"path":"scripts/node_transform_array/node_transform_array.yy",}, {"name":"s_node_loop_array","order":23,"path":"sprites/s_node_loop_array/s_node_loop_array.yy",}, + {"name":"node_pb_fx_stack","order":8,"path":"scripts/node_pb_fx_stack/node_pb_fx_stack.yy",}, {"name":"s_node_iterator_amount","order":26,"path":"sprites/s_node_iterator_amount/s_node_iterator_amount.yy",}, {"name":"sh_color_adjust","order":4,"path":"shaders/sh_color_adjust/sh_color_adjust.yy",}, {"name":"sh_fd_visualize_thick_smoke_glsl","order":17,"path":"shaders/sh_fd_visualize_thick_smoke_glsl/sh_fd_visualize_thick_smoke_glsl.yy",}, {"name":"s_node_regex_match","order":12,"path":"sprites/s_node_regex_match/s_node_regex_match.yy",}, {"name":"surface_get_palette","order":2,"path":"scripts/surface_get_palette/surface_get_palette.yy",}, {"name":"sh_pixel_sort","order":36,"path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",}, + {"name":"node_pb_draw_fill","order":3,"path":"scripts/node_pb_draw_fill/node_pb_draw_fill.yy",}, {"name":"s_node_vfx_destroy","order":7,"path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",}, {"name":"fd_rectangle_set_material_size","order":7,"path":"scripts/fd_rectangle_set_material_size/fd_rectangle_set_material_size.yy",}, {"name":"fd_rectangle_shift_content","order":19,"path":"scripts/fd_rectangle_shift_content/fd_rectangle_shift_content.yy",}, @@ -691,7 +722,9 @@ {"name":"sh_blend_subtract","order":5,"path":"shaders/sh_blend_subtract/sh_blend_subtract.yy",}, {"name":"BBMOD_Vec4","order":6,"path":"scripts/BBMOD_Vec4/BBMOD_Vec4.yy",}, {"name":"s_biterator_color_slot","order":17,"path":"sprites/s_biterator_color_slot/s_biterator_color_slot.yy",}, + {"name":"s_node_pb_layer","order":18,"path":"sprites/s_node_pb_layer/s_node_pb_layer.yy",}, {"name":"node_surface_from_color","order":1,"path":"scripts/node_surface_from_color/node_surface_from_color.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":"node_surface_replace","order":12,"path":"scripts/node_surface_replace/node_surface_replace.yy",}, {"name":"node_strand_create","order":1,"path":"scripts/node_strand_create/node_strand_create.yy",}, @@ -700,6 +733,7 @@ {"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_key_display_mouse","order":1,"path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",}, + {"name":"node_pb_fx_add","order":6,"path":"scripts/node_pb_fx_add/node_pb_fx_add.yy",}, {"name":"s_node_csv_file_write","order":8,"path":"sprites/s_node_csv_file_write/s_node_csv_file_write.yy",}, {"name":"s_node_csv_parse","order":15,"path":"sprites/s_node_csv_parse/s_node_csv_parse.yy",}, {"name":"sh_glow","order":34,"path":"shaders/sh_glow/sh_glow.yy",}, @@ -719,7 +753,9 @@ {"name":"node_fluid_add_collider","order":6,"path":"scripts/node_fluid_add_collider/node_fluid_add_collider.yy",}, {"name":"node_atlas_get","order":1,"path":"scripts/node_atlas_get/node_atlas_get.yy",}, {"name":"fontScrollBox","order":26,"path":"scripts/fontScrollBox/fontScrollBox.yy",}, + {"name":"s_node_pb_box_mirror","order":21,"path":"sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy",}, {"name":"node_grid_hex","order":2,"path":"scripts/node_grid_hex/node_grid_hex.yy",}, + {"name":"node_pb_draw_blob","order":5,"path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",}, {"name":"s_node_text_display","order":4,"path":"sprites/s_node_text_display/s_node_text_display.yy",}, {"name":"node_strand_render_texture","order":7,"path":"scripts/node_strand_render_texture/node_strand_render_texture.yy",}, {"name":"luaRenderer","order":2,"path":"scripts/luaRenderer/luaRenderer.yy",}, @@ -738,6 +774,7 @@ {"name":"fd_README","order":6,"path":"scripts/fd_README/fd_README.yy",}, {"name":"ase_object","order":7,"path":"scripts/ase_object/ase_object.yy",}, {"name":"node_rigid_object","order":1,"path":"scripts/node_rigid_object/node_rigid_object.yy",}, + {"name":"node_pb_box_transform","order":9,"path":"scripts/node_pb_box_transform/node_pb_box_transform.yy",}, {"name":"areaBox","order":1,"path":"scripts/areaBox/areaBox.yy",}, {"name":"__global_object_depths","order":7,"path":"scripts/__global_object_depths/__global_object_depths.yy",}, {"name":"s_node_filter_array","order":28,"path":"sprites/s_node_filter_array/s_node_filter_array.yy",}, @@ -749,11 +786,14 @@ {"name":"o_dialog_tunnels","order":6,"path":"objects/o_dialog_tunnels/o_dialog_tunnels.yy",}, {"name":"s_node_erode","order":23,"path":"sprites/s_node_erode/s_node_erode.yy",}, {"name":"node_particle","order":14,"path":"scripts/node_particle/node_particle.yy",}, + {"name":"node_pb_box_contract","order":8,"path":"scripts/node_pb_box_contract/node_pb_box_contract.yy",}, {"name":"histogram_drawer","order":2,"path":"scripts/histogram_drawer/histogram_drawer.yy",}, + {"name":"sh_color_picker_side_value","order":3,"path":"shaders/sh_color_picker_side_value/sh_color_picker_side_value.yy",}, {"name":"node_array_range","order":12,"path":"scripts/node_array_range/node_array_range.yy",}, {"name":"node_animation_control","order":11,"path":"scripts/node_animation_control/node_animation_control.yy",}, {"name":"s_node_tunnel_in","order":21,"path":"sprites/s_node_tunnel_in/s_node_tunnel_in.yy",}, {"name":"o_dialog_graph_grid","order":3,"path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",}, + {"name":"s_node_pb_draw_trapezoid","order":10,"path":"sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy",}, {"name":"append_function","order":1,"path":"scripts/append_function/append_function.yy",}, {"name":"fd_rectangle_reset_target","order":17,"path":"scripts/fd_rectangle_reset_target/fd_rectangle_reset_target.yy",}, {"name":"node_rate_remap","order":3,"path":"scripts/node_rate_remap/node_rate_remap.yy",}, @@ -763,6 +803,7 @@ {"name":"s_icon_64","order":2,"path":"sprites/s_icon_64/s_icon_64.yy",}, {"name":"panel_graph_export_image","order":4,"path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",}, {"name":"__bone","order":2,"path":"scripts/__bone/__bone.yy",}, + {"name":"node_pb_fx_outline","order":2,"path":"scripts/node_pb_fx_outline/node_pb_fx_outline.yy",}, {"name":"save_function","order":1,"path":"scripts/save_function/save_function.yy",}, {"name":"s_node_gradient_replace","order":18,"path":"sprites/s_node_gradient_replace/s_node_gradient_replace.yy",}, {"name":"node_perlin_smear","order":9,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",}, @@ -785,7 +826,7 @@ {"name":"s_fade_up","order":3,"path":"sprites/s_fade_up/s_fade_up.yy",}, {"name":"panel_globalvar","order":2,"path":"scripts/panel_globalvar/panel_globalvar.yy",}, {"name":"node_3d_render","order":20,"path":"scripts/node_3d_render/node_3d_render.yy",}, - {"name":"node_guide","order":18,"path":"scripts/node_guide/node_guide.yy",}, + {"name":"node_guide","order":10,"path":"scripts/node_guide/node_guide.yy",}, {"name":"fd_rectangle_get_velocity_surface","order":24,"path":"scripts/fd_rectangle_get_velocity_surface/fd_rectangle_get_velocity_surface.yy",}, {"name":"s_node_text_char_get","order":2,"path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",}, {"name":"fd_rectangle_get_initial_value_pressure","order":7,"path":"scripts/fd_rectangle_get_initial_value_pressure/fd_rectangle_get_initial_value_pressure.yy",}, @@ -848,6 +889,7 @@ {"name":"s_node_color_data","order":3,"path":"sprites/s_node_color_data/s_node_color_data.yy",}, {"name":"fd_rectangle_set_repeat","order":12,"path":"scripts/fd_rectangle_set_repeat/fd_rectangle_set_repeat.yy",}, {"name":"sh_fd_calculate_velocity_divergence_glsl","order":10,"path":"shaders/sh_fd_calculate_velocity_divergence_glsl/sh_fd_calculate_velocity_divergence_glsl.yy",}, + {"name":"s_node_pb_fx_add","order":9,"path":"sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy",}, {"name":"node_simple_shape","order":2,"path":"scripts/node_simple_shape/node_simple_shape.yy",}, {"name":"node_wav_file_write","order":3,"path":"scripts/node_wav_file_write/node_wav_file_write.yy",}, {"name":"node_random","order":5,"path":"scripts/node_random/node_random.yy",}, @@ -862,6 +904,7 @@ {"name":"sh_2d_light","order":28,"path":"shaders/sh_2d_light/sh_2d_light.yy",}, {"name":"node_image_animated","order":2,"path":"scripts/node_image_animated/node_image_animated.yy",}, {"name":"s_node_transform_array","order":17,"path":"sprites/s_node_transform_array/s_node_transform_array.yy",}, + {"name":"s_node_pb_box_contract","order":25,"path":"sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy",}, {"name":"node_palette_extract","order":7,"path":"scripts/node_palette_extract/node_palette_extract.yy",}, {"name":"s_node_solid","order":15,"path":"sprites/s_node_solid/s_node_solid.yy",}, {"name":"s_node_fluidSim_vortex","order":8,"path":"sprites/s_node_fluidSim_vortex/s_node_fluidSim_vortex.yy",}, @@ -933,8 +976,10 @@ {"name":"node_string_trim","order":4,"path":"scripts/node_string_trim/node_string_trim.yy",}, {"name":"lerp_float","order":1,"path":"scripts/lerp_float/lerp_float.yy",}, {"name":"vectorRangeBox","order":19,"path":"scripts/vectorRangeBox/vectorRangeBox.yy",}, + {"name":"s_node_pb_fx_outline","order":5,"path":"sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy",}, {"name":"fd_rectangle_get_velocity_width","order":26,"path":"scripts/fd_rectangle_get_velocity_width/fd_rectangle_get_velocity_width.yy",}, {"name":"node_convolution","order":5,"path":"scripts/node_convolution/node_convolution.yy",}, + {"name":"node_pb_draw_ellipse","order":2,"path":"scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy",}, {"name":"sh_outline_only","order":35,"path":"shaders/sh_outline_only/sh_outline_only.yy",}, {"name":"lcd_function","order":13,"path":"scripts/lcd_function/lcd_function.yy",}, {"name":"s_node_destray","order":18,"path":"sprites/s_node_destray/s_node_destray.yy",}, @@ -945,6 +990,7 @@ {"name":"fd_rectangle_inherit_velocity","order":12,"path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",}, {"name":"node_path","order":3,"path":"scripts/node_path/node_path.yy",}, {"name":"node_wrap_area","order":10,"path":"scripts/node_wrap_area/node_wrap_area.yy",}, + {"name":"node_attributes","order":12,"path":"scripts/node_attributes/node_attributes.yy",}, {"name":"sh_seperate_shape_sep","order":3,"path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",}, {"name":"s_node_image_sequence","order":5,"path":"sprites/s_node_image_sequence/s_node_image_sequence.yy",}, {"name":"steam_ugc_project","order":1,"path":"scripts/steam_ugc_project/steam_ugc_project.yy",}, @@ -958,7 +1004,9 @@ {"name":"color_loader","order":13,"path":"scripts/color_loader/color_loader.yy",}, {"name":"node_rigid_override","order":9,"path":"scripts/node_rigid_override/node_rigid_override.yy",}, {"name":"fd_rectangle_set_velocity_maccormack_weight","order":15,"path":"scripts/fd_rectangle_set_velocity_maccormack_weight/fd_rectangle_set_velocity_maccormack_weight.yy",}, + {"name":"sh_pb_blob","order":1,"path":"shaders/sh_pb_blob/sh_pb_blob.yy",}, {"name":"s_node_array_sort","order":11,"path":"sprites/s_node_array_sort/s_node_array_sort.yy",}, + {"name":"s_node_pb_draw_roundrectangle","order":12,"path":"sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy",}, {"name":"node_trail","order":16,"path":"scripts/node_trail/node_trail.yy",}, {"name":"json_prettify","order":7,"path":"scripts/json_prettify/json_prettify.yy",}, {"name":"s_node_loop_output","order":13,"path":"sprites/s_node_loop_output/s_node_loop_output.yy",}, @@ -972,10 +1020,13 @@ {"name":"s_biterator_dim_label","order":10,"path":"sprites/s_biterator_dim_label/s_biterator_dim_label.yy",}, {"name":"s_node_average","order":50,"path":"sprites/s_node_average/s_node_average.yy",}, {"name":"s_node_sprite_sheet","order":1,"path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",}, + {"name":"node_pb_box_mirror","order":10,"path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",}, {"name":"s_node_text_length","order":9,"path":"sprites/s_node_text_length/s_node_text_length.yy",}, {"name":"s_node_grid_hex","order":4,"path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",}, {"name":"sh_fd_visualize_colorize_glsl","order":13,"path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",}, + {"name":"s_node_pb_draw_fill","order":14,"path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",}, {"name":"s_node_rate_remap","order":4,"path":"sprites/s_node_rate_remap/s_node_rate_remap.yy",}, + {"name":"node_pb_draw_semi_ellipse","order":6,"path":"scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.yy",}, {"name":"o_dialog_preview_window","order":1,"path":"objects/o_dialog_preview_window/o_dialog_preview_window.yy",}, {"name":"s_node_sampler","order":11,"path":"sprites/s_node_sampler/s_node_sampler.yy",}, {"name":"__background_get_element","order":1,"path":"scripts/__background_get_element/__background_get_element.yy",}, @@ -986,12 +1037,15 @@ {"name":"node_mesh_create_path","order":1,"path":"scripts/node_mesh_create_path/node_mesh_create_path.yy",}, {"name":"sh_fd_calculate_pressure_srj_glsl","order":9,"path":"shaders/sh_fd_calculate_pressure_srj_glsl/sh_fd_calculate_pressure_srj_glsl.yy",}, {"name":"curve_bounce_function","order":1,"path":"scripts/curve_bounce_function/curve_bounce_function.yy",}, + {"name":"node_pb_fx_shading","order":3,"path":"scripts/node_pb_fx_shading/node_pb_fx_shading.yy",}, {"name":"fd_rectangle_replace_material_surface","order":23,"path":"scripts/fd_rectangle_replace_material_surface/fd_rectangle_replace_material_surface.yy",}, {"name":"pack_skyline","order":4,"path":"scripts/pack_skyline/pack_skyline.yy",}, {"name":"fd_x","order":4,"path":"scripts/fd_x/fd_x.yy",}, {"name":"s_node_number","order":2,"path":"sprites/s_node_number/s_node_number.yy",}, {"name":"gif_reader","order":4,"path":"scripts/gif_reader/gif_reader.yy",}, + {"name":"s_node_pb_draw_angle","order":17,"path":"sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy",}, {"name":"_f_p3","order":7,"path":"fonts/_f_p3/_f_p3.yy",}, + {"name":"cornerBox","order":30,"path":"scripts/cornerBox/cornerBox.yy",}, {"name":"node_group_input","order":1,"path":"scripts/node_group_input/node_group_input.yy",}, {"name":"fd_rectangle_set_material_dissipation_type","order":4,"path":"scripts/fd_rectangle_set_material_dissipation_type/fd_rectangle_set_material_dissipation_type.yy",}, {"name":"s_node_gradient_shift","order":15,"path":"sprites/s_node_gradient_shift/s_node_gradient_shift.yy",}, @@ -1004,6 +1058,7 @@ {"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",}, {"name":"node_text_file_read","order":7,"path":"scripts/node_text_file_read/node_text_file_read.yy",}, + {"name":"node_pb_box_divide_grid","order":7,"path":"scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy",}, {"name":"draw_tooltip","order":13,"path":"scripts/draw_tooltip/draw_tooltip.yy",}, {"name":"sh_palette_replace","order":45,"path":"shaders/sh_palette_replace/sh_palette_replace.yy",}, {"name":"sh_cell_noise_random","order":3,"path":"shaders/sh_cell_noise_random/sh_cell_noise_random.yy",}, @@ -1012,6 +1067,7 @@ {"name":"node_fluid_add","order":4,"path":"scripts/node_fluid_add/node_fluid_add.yy",}, {"name":"BBMOD_Quaternion","order":3,"path":"scripts/BBMOD_Quaternion/BBMOD_Quaternion.yy",}, {"name":"o_dialog_output_visibility","order":2,"path":"objects/o_dialog_output_visibility/o_dialog_output_visibility.yy",}, + {"name":"s_node_pb_box_transform","order":19,"path":"sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy",}, {"name":"node_normal","order":1,"path":"scripts/node_normal/node_normal.yy",}, {"name":"s_node_glow","order":24,"path":"sprites/s_node_glow/s_node_glow.yy",}, {"name":"s_node_websocket_receive","order":19,"path":"sprites/s_node_websocket_receive/s_node_websocket_receive.yy",}, @@ -1038,6 +1094,7 @@ {"name":"node_3d_repeat","order":12,"path":"scripts/node_3d_repeat/node_3d_repeat.yy",}, {"name":"point_direction_positive","order":4,"path":"scripts/point_direction_positive/point_direction_positive.yy",}, {"name":"s_node_fluidSim_add_fluid","order":3,"path":"sprites/s_node_fluidSim_add_fluid/s_node_fluidSim_add_fluid.yy",}, + {"name":"sh_replace_color","order":5,"path":"shaders/sh_replace_color/sh_replace_color.yy",}, {"name":"s_node_armature_bind","order":14,"path":"sprites/s_node_armature_bind/s_node_armature_bind.yy",}, {"name":"node_blur_contrast","order":1,"path":"scripts/node_blur_contrast/node_blur_contrast.yy",}, {"name":"sh_trail_filler","order":50,"path":"shaders/sh_trail_filler/sh_trail_filler.yy",}, @@ -1077,6 +1134,7 @@ {"name":"fd_rectangle_enums","order":3,"path":"scripts/fd_rectangle_enums/fd_rectangle_enums.yy",}, {"name":"s_texture_default","order":1,"path":"sprites/s_texture_default/s_texture_default.yy",}, {"name":"directory_object","order":3,"path":"scripts/directory_object/directory_object.yy",}, + {"name":"node_pb_box_divide","order":5,"path":"scripts/node_pb_box_divide/node_pb_box_divide.yy",}, {"name":"node_websocket_sender","order":1,"path":"scripts/node_websocket_sender/node_websocket_sender.yy",}, {"name":"fd_rectangle_get_acceleration_b","order":1,"path":"scripts/fd_rectangle_get_acceleration_b/fd_rectangle_get_acceleration_b.yy",}, {"name":"surface_draw_functions","order":7,"path":"scripts/surface_draw_functions/surface_draw_functions.yy",}, @@ -1097,6 +1155,7 @@ {"name":"node_3d_plane","order":4,"path":"scripts/node_3d_plane/node_3d_plane.yy",}, {"name":"node_display_text","order":3,"path":"scripts/node_display_text/node_display_text.yy",}, {"name":"s_biterator_b_shape_press","order":4,"path":"sprites/s_biterator_b_shape_press/s_biterator_b_shape_press.yy",}, + {"name":"node_pb_layer","order":1,"path":"scripts/node_pb_layer/node_pb_layer.yy",}, {"name":"node_strand_update","order":3,"path":"scripts/node_strand_update/node_strand_update.yy",}, {"name":"sh_grid_noise","order":2,"path":"shaders/sh_grid_noise/sh_grid_noise.yy",}, {"name":"draw_set_blend_mode","order":1,"path":"scripts/draw_set_blend_mode/draw_set_blend_mode.yy",}, @@ -1108,7 +1167,7 @@ {"name":"fd_rectangle_get_material_dissipation_value","order":9,"path":"scripts/fd_rectangle_get_material_dissipation_value/fd_rectangle_get_material_dissipation_value.yy",}, {"name":"node_counter","order":1,"path":"scripts/node_counter/node_counter.yy",}, {"name":"s_node_shape_polygon","order":25,"path":"sprites/s_node_shape_polygon/s_node_shape_polygon.yy",}, - {"name":"sh_color_picker_hue","order":5,"path":"shaders/sh_color_picker_hue/sh_color_picker_hue.yy",}, + {"name":"s_node_pb_fx_interesct","order":6,"path":"sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy",}, {"name":"node_path_eval","order":4,"path":"scripts/node_path_eval/node_path_eval.yy",}, {"name":"sh_3d_depth","order":7,"path":"shaders/sh_3d_depth/sh_3d_depth.yy",}, {"name":"node_3d_displace","order":18,"path":"scripts/node_3d_displace/node_3d_displace.yy",}, @@ -1132,6 +1191,7 @@ {"name":"__view_get","order":1,"path":"scripts/__view_get/__view_get.yy",}, {"name":"s_node_texture_map","order":38,"path":"sprites/s_node_texture_map/s_node_texture_map.yy",}, {"name":"fd_rectangle_create","order":7,"path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",}, + {"name":"s_node_pb_box_split","order":20,"path":"sprites/s_node_pb_box_split/s_node_pb_box_split.yy",}, {"name":"s_node_level_selector","order":29,"path":"sprites/s_node_level_selector/s_node_level_selector.yy",}, {"name":"random_function","order":3,"path":"scripts/random_function/random_function.yy",}, {"name":"s_node_input","order":6,"path":"sprites/s_node_input/s_node_input.yy",}, @@ -1176,6 +1236,7 @@ {"name":"_node_VFX_spawner","order":13,"path":"scripts/_node_VFX_spawner/_node_VFX_spawner.yy",}, {"name":"s_node_bar_graph","order":27,"path":"sprites/s_node_bar_graph/s_node_bar_graph.yy",}, {"name":"sh_channel_B_grey","order":9,"path":"shaders/sh_channel_B_grey/sh_channel_B_grey.yy",}, + {"name":"s_node_pb_fx_hash","order":8,"path":"sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy",}, {"name":"draw_UI_scale","order":8,"path":"scripts/draw_UI_scale/draw_UI_scale.yy",}, {"name":"s_node_strandSim_update","order":1,"path":"sprites/s_node_strandSim_update/s_node_strandSim_update.yy",}, {"name":"s_node_RGB_combine","order":45,"path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",}, @@ -1195,7 +1256,7 @@ {"name":"node_de_stray","order":1,"path":"scripts/node_de_stray/node_de_stray.yy",}, {"name":"sh_channel_G","order":2,"path":"shaders/sh_channel_G/sh_channel_G.yy",}, {"name":"s_node_dilate","order":19,"path":"sprites/s_node_dilate/s_node_dilate.yy",}, - {"name":"node_value","order":6,"path":"scripts/node_value/node_value.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",}, @@ -1223,6 +1284,7 @@ {"name":"sh_region_fill_color","order":1,"path":"shaders/sh_region_fill_color/sh_region_fill_color.yy",}, {"name":"s_node_vec_split","order":6,"path":"sprites/s_node_vec_split/s_node_vec_split.yy",}, {"name":"s_node_regex_replace","order":10,"path":"sprites/s_node_regex_replace/s_node_regex_replace.yy",}, + {"name":"sh_pb_hash","order":4,"path":"shaders/sh_pb_hash/sh_pb_hash.yy",}, {"name":"paddingBox","order":9,"path":"scripts/paddingBox/paddingBox.yy",}, {"name":"fd_rectangle_set_visualization_shader","order":18,"path":"scripts/fd_rectangle_set_visualization_shader/fd_rectangle_set_visualization_shader.yy",}, {"name":"s_biterator_bg","order":2,"path":"sprites/s_biterator_bg/s_biterator_bg.yy",}, @@ -1251,6 +1313,7 @@ {"name":"node_tunnel_out","order":7,"path":"scripts/node_tunnel_out/node_tunnel_out.yy",}, {"name":"s_node_array_shuffle","order":10,"path":"sprites/s_node_array_shuffle/s_node_array_shuffle.yy",}, {"name":"node_level","order":7,"path":"scripts/node_level/node_level.yy",}, + {"name":"node_pb","order":5,"path":"scripts/node_pb/node_pb.yy",}, {"name":"panel_test","order":10,"path":"scripts/panel_test/panel_test.yy",}, {"name":"o_dialog_warning","order":10,"path":"objects/o_dialog_warning/o_dialog_warning.yy",}, {"name":"s_node_group_output","order":15,"path":"sprites/s_node_group_output/s_node_group_output.yy",}, @@ -1264,14 +1327,16 @@ {"name":"sh_fd_advect_velocity_1_glsl","order":7,"path":"shaders/sh_fd_advect_velocity_1_glsl/sh_fd_advect_velocity_1_glsl.yy",}, {"name":"mac_window_step","order":1,"path":"scripts/mac_window_step/mac_window_step.yy",}, {"name":"s_node_image","order":1,"path":"sprites/s_node_image/s_node_image.yy",}, - {"name":"__node_value_processor","order":7,"path":"scripts/__node_value_processor/__node_value_processor.yy",}, + {"name":"__node_value_processor","order":6,"path":"scripts/__node_value_processor/__node_value_processor.yy",}, {"name":"s_node_group_input","order":16,"path":"sprites/s_node_group_input/s_node_group_input.yy",}, {"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",}, {"name":"draw_fit","order":12,"path":"scripts/draw_fit/draw_fit.yy",}, {"name":"node_armature_sample","order":5,"path":"scripts/node_armature_sample/node_armature_sample.yy",}, + {"name":"sh_pb_shade","order":3,"path":"shaders/sh_pb_shade/sh_pb_shade.yy",}, {"name":"s_node_morph_surface","order":56,"path":"sprites/s_node_morph_surface/s_node_morph_surface.yy",}, {"name":"fd_rectangle_get_velocity_dissipation_type","order":20,"path":"scripts/fd_rectangle_get_velocity_dissipation_type/fd_rectangle_get_velocity_dissipation_type.yy",}, {"name":"s_node_3d_transform","order":4,"path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",}, + {"name":"node_pb_box_split","order":2,"path":"scripts/node_pb_box_split/node_pb_box_split.yy",}, {"name":"s_node_output","order":7,"path":"sprites/s_node_output/s_node_output.yy",}, {"name":"sh_atlas","order":26,"path":"shaders/sh_atlas/sh_atlas.yy",}, {"name":"node_3d_extrude","order":9,"path":"scripts/node_3d_extrude/node_3d_extrude.yy",}, @@ -1304,6 +1369,7 @@ {"name":"sh_fd_replace_material_advanced_glsl","order":11,"path":"shaders/sh_fd_replace_material_advanced_glsl/sh_fd_replace_material_advanced_glsl.yy",}, {"name":"sh_solid","order":15,"path":"shaders/sh_solid/sh_solid.yy",}, {"name":"s_node_json_file_write","order":10,"path":"sprites/s_node_json_file_write/s_node_json_file_write.yy",}, + {"name":"node_pb_fx_intersect","order":5,"path":"scripts/node_pb_fx_intersect/node_pb_fx_intersect.yy",}, {"name":"fd_rectangle_get_material_time_step","order":13,"path":"scripts/fd_rectangle_get_material_time_step/fd_rectangle_get_material_time_step.yy",}, {"name":"node_pack_sprites","order":4,"path":"scripts/node_pack_sprites/node_pack_sprites.yy",}, {"name":"font_data","order":10,"path":"scripts/font_data/font_data.yy",}, @@ -1344,6 +1410,7 @@ {"name":"o_dialog_assetbox","order":3,"path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",}, {"name":"node_lerp","order":2,"path":"scripts/node_lerp/node_lerp.yy",}, {"name":"s_node_pixel_sort","order":42,"path":"sprites/s_node_pixel_sort/s_node_pixel_sort.yy",}, + {"name":"s_node_pb_box_inset","order":22,"path":"sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy",}, {"name":"node_texture_remap","order":2,"path":"scripts/node_texture_remap/node_texture_remap.yy",}, {"name":"sh_fd_visualize_pixel_art_fiery_smoke_glsl","order":14,"path":"shaders/sh_fd_visualize_pixel_art_fiery_smoke_glsl/sh_fd_visualize_pixel_art_fiery_smoke_glsl.yy",}, {"name":"node_ase_layer","order":15,"path":"scripts/node_ase_layer/node_ase_layer.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 22e34154a..493f77f8a 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -88,7 +88,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"vector","folderPath":"folders/functions/vector.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"window","folderPath":"folders/functions/window.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"main","folderPath":"folders/main.yy",}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"scritps","folderPath":"folders/main/scritps.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"startup scripts","folderPath":"folders/main/startup scripts.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"nodes","folderPath":"folders/nodes.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/nodes/data.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy",}, @@ -121,6 +121,10 @@ {"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":"node","folderPath":"folders/nodes/data/node.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"pixel builder","folderPath":"folders/nodes/data/pixel builder.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"box","folderPath":"folders/nodes/data/pixel builder/box.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/nodes/data/pixel builder/draw.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"effect","folderPath":"folders/nodes/data/pixel builder/effect.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/data/render.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"rigidSim","folderPath":"folders/nodes/data/rigidSim.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"strandSim","folderPath":"folders/nodes/data/strandSim.yy",}, @@ -147,6 +151,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/icons/generator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"IO","folderPath":"folders/nodes/icons/IO.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/icons/node.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"pixel builder","folderPath":"folders/nodes/icons/pixel builder.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/icons/render.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"rigidSim","folderPath":"folders/nodes/icons/rigidSim.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"strandSim","folderPath":"folders/nodes/icons/strandSim.yy",}, @@ -195,6 +200,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"mask","folderPath":"folders/shader/mask.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"misc","folderPath":"folders/shader/misc.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"morph","folderPath":"folders/shader/morph.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"pixel builder","folderPath":"folders/shader/pixel builder.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shape seperator","folderPath":"folders/shader/shape seperator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"surface replace","folderPath":"folders/shader/surface replace.yy",}, @@ -210,6 +216,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"biterator","folderPath":"folders/VCT/biterator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widget","folderPath":"folders/VCT/widget.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy",}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color picker","folderPath":"folders/shader/color picker.yy",}, ], "IncludedFiles": [ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",}, @@ -280,6 +287,7 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_delete_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_delete.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_discord.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_display_palette.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_duplicate.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_feedback_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_file_explorer.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, @@ -356,6 +364,7 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_panel_preview.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_paste.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pixel_builder.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_play_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preset.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_project.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, @@ -402,7 +411,11 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_youtube.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_corner.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_direction.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_angle.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_halign.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_hemicircle.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_valign.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_padding.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_surface_halign.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, @@ -666,7 +679,7 @@ "isEcma": false, "LibraryEmitters": [], "MetaData": { - "IDEVersion": "2023.6.0.89", + "IDEVersion": "2023.6.0.92", }, "resources": [ {"id":{"name":"s_node_corner","path":"sprites/s_node_corner/s_node_corner.yy",},}, @@ -690,6 +703,7 @@ {"id":{"name":"panel_data","path":"scripts/panel_data/panel_data.yy",},}, {"id":{"name":"s_node_text_file_read","path":"sprites/s_node_text_file_read/s_node_text_file_read.yy",},}, {"id":{"name":"s_node_text_trim","path":"sprites/s_node_text_trim/s_node_text_trim.yy",},}, + {"id":{"name":"s_node_pb_fx_shading","path":"sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy",},}, {"id":{"name":"sh_noise_grid_hex","path":"shaders/sh_noise_grid_hex/sh_noise_grid_hex.yy",},}, {"id":{"name":"node_3d_obj","path":"scripts/node_3d_obj/node_3d_obj.yy",},}, {"id":{"name":"__path","path":"scripts/__path/__path.yy",},}, @@ -699,12 +713,14 @@ {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},}, {"id":{"name":"node_wrap_perspective","path":"scripts/node_wrap_perspective/node_wrap_perspective.yy",},}, {"id":{"name":"s_node_rigidSim_object_spawner","path":"sprites/s_node_rigidSim_object_spawner/s_node_rigidSim_object_spawner.yy",},}, + {"id":{"name":"node_pb_draw_roundrectangle","path":"scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.yy",},}, {"id":{"name":"draw_text_function","path":"scripts/draw_text_function/draw_text_function.yy",},}, {"id":{"name":"o_dialog_file_name_collection","path":"objects/o_dialog_file_name_collection/o_dialog_file_name_collection.yy",},}, {"id":{"name":"node_3d_prim_cone","path":"scripts/node_3d_prim_cone/node_3d_prim_cone.yy",},}, {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},}, {"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},}, {"id":{"name":"s_node_fluidSim_turbulence","path":"sprites/s_node_fluidSim_turbulence/s_node_fluidSim_turbulence.yy",},}, + {"id":{"name":"node_pb_fx_hash","path":"scripts/node_pb_fx_hash/node_pb_fx_hash.yy",},}, {"id":{"name":"node_blur_radial","path":"scripts/node_blur_radial/node_blur_radial.yy",},}, {"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},}, {"id":{"name":"node_rigid_activation","path":"scripts/node_rigid_activation/node_rigid_activation.yy",},}, @@ -766,6 +782,7 @@ {"id":{"name":"s_node_noise_simplex","path":"sprites/s_node_noise_simplex/s_node_noise_simplex.yy",},}, {"id":{"name":"s_node_armature_sample","path":"sprites/s_node_armature_sample/s_node_armature_sample.yy",},}, {"id":{"name":"o_dialog_notifications","path":"objects/o_dialog_notifications/o_dialog_notifications.yy",},}, + {"id":{"name":"sh_draw_color","path":"shaders/sh_draw_color/sh_draw_color.yy",},}, {"id":{"name":"s_node_array_find","path":"sprites/s_node_array_find/s_node_array_find.yy",},}, {"id":{"name":"fd_rectangle_set_velocity_time_step","path":"scripts/fd_rectangle_set_velocity_time_step/fd_rectangle_set_velocity_time_step.yy",},}, {"id":{"name":"fd_rectangle_set_collision_mask_sprite","path":"scripts/fd_rectangle_set_collision_mask_sprite/fd_rectangle_set_collision_mask_sprite.yy",},}, @@ -786,6 +803,7 @@ {"id":{"name":"node_image","path":"scripts/node_image/node_image.yy",},}, {"id":{"name":"node_atlas_set","path":"scripts/node_atlas_set/node_atlas_set.yy",},}, {"id":{"name":"s_node_flip","path":"sprites/s_node_flip/s_node_flip.yy",},}, + {"id":{"name":"sh_pb_highlight","path":"shaders/sh_pb_highlight/sh_pb_highlight.yy",},}, {"id":{"name":"s_node_gradient_data","path":"sprites/s_node_gradient_data/s_node_gradient_data.yy",},}, {"id":{"name":"s_node_vfx_render","path":"sprites/s_node_vfx_render/s_node_vfx_render.yy",},}, {"id":{"name":"node_stack","path":"scripts/node_stack/node_stack.yy",},}, @@ -809,6 +827,7 @@ {"id":{"name":"node_polygonal_shape","path":"scripts/node_polygonal_shape/node_polygonal_shape.yy",},}, {"id":{"name":"fd_rectangle_get_collision_mask_sprite","path":"scripts/fd_rectangle_get_collision_mask_sprite/fd_rectangle_get_collision_mask_sprite.yy",},}, {"id":{"name":"node_flip","path":"scripts/node_flip/node_flip.yy",},}, + {"id":{"name":"s_node_pb_fx_subtract","path":"sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy",},}, {"id":{"name":"sh_FXAA","path":"shaders/sh_FXAA/sh_FXAA.yy",},}, {"id":{"name":"s_biterator_slider","path":"sprites/s_biterator_slider/s_biterator_slider.yy",},}, {"id":{"name":"shader_functions","path":"scripts/shader_functions/shader_functions.yy",},}, @@ -856,10 +875,12 @@ {"id":{"name":"sh_chromatic_aberration","path":"shaders/sh_chromatic_aberration/sh_chromatic_aberration.yy",},}, {"id":{"name":"fd_rectangle_create_view","path":"scripts/fd_rectangle_create_view/fd_rectangle_create_view.yy",},}, {"id":{"name":"node_fluid_vortex","path":"scripts/node_fluid_vortex/node_fluid_vortex.yy",},}, + {"id":{"name":"node_pb_draw_angle","path":"scripts/node_pb_draw_angle/node_pb_draw_angle.yy",},}, {"id":{"name":"sh_cell_noise_round","path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",},}, {"id":{"name":"s_node_cross_product_2d","path":"sprites/s_node_cross_product_2d/s_node_cross_product_2d.yy",},}, {"id":{"name":"s_node_path_plot","path":"sprites/s_node_path_plot/s_node_path_plot.yy",},}, {"id":{"name":"__initAddon","path":"scripts/__initAddon/__initAddon.yy",},}, + {"id":{"name":"node_pb_draw_trapezoid","path":"scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.yy",},}, {"id":{"name":"json_functions","path":"scripts/json_functions/json_functions.yy",},}, {"id":{"name":"s_node_3d_displace","path":"sprites/s_node_3d_displace/s_node_3d_displace.yy",},}, {"id":{"name":"event_recorder","path":"scripts/event_recorder/event_recorder.yy",},}, @@ -919,6 +940,7 @@ {"id":{"name":"__panel_empty","path":"scripts/__panel_empty/__panel_empty.yy",},}, {"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},}, {"id":{"name":"s_node_switch","path":"sprites/s_node_switch/s_node_switch.yy",},}, + {"id":{"name":"s_node_pb_draw_blob","path":"sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy",},}, {"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},}, {"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},}, {"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},}, @@ -935,6 +957,7 @@ {"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},}, {"id":{"name":"mask_function","path":"scripts/mask_function/mask_function.yy",},}, {"id":{"name":"panel_palette","path":"scripts/panel_palette/panel_palette.yy",},}, + {"id":{"name":"s_node_pb_draw_ellipse","path":"sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy",},}, {"id":{"name":"text_file","path":"scripts/text_file/text_file.yy",},}, {"id":{"name":"node_armature_pose","path":"scripts/node_armature_pose/node_armature_pose.yy",},}, {"id":{"name":"sh_trail_filler_pass1","path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",},}, @@ -954,9 +977,13 @@ {"id":{"name":"curve_damping_function","path":"scripts/curve_damping_function/curve_damping_function.yy",},}, {"id":{"name":"fd_rectangle_get_collision_mask_surface","path":"scripts/fd_rectangle_get_collision_mask_surface/fd_rectangle_get_collision_mask_surface.yy",},}, {"id":{"name":"s_node_strandSim_length","path":"sprites/s_node_strandSim_length/s_node_strandSim_length.yy",},}, + {"id":{"name":"node_pb_fx_substract","path":"scripts/node_pb_fx_substract/node_pb_fx_substract.yy",},}, + {"id":{"name":"node_pb_fx_radial","path":"scripts/node_pb_fx_radial/node_pb_fx_radial.yy",},}, {"id":{"name":"node_VFX_variable","path":"scripts/node_VFX_variable/node_VFX_variable.yy",},}, {"id":{"name":"node_array_sort","path":"scripts/node_array_sort/node_array_sort.yy",},}, + {"id":{"name":"sh_pb_outline","path":"shaders/sh_pb_outline/sh_pb_outline.yy",},}, {"id":{"name":"fd_draw_surface_to_collision_mask_surface","path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",},}, + {"id":{"name":"s_node_pixel_builder","path":"sprites/s_node_pixel_builder/s_node_pixel_builder.yy",},}, {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},}, {"id":{"name":"s_button","path":"sprites/s_button/s_button.yy",},}, {"id":{"name":"sh_fd_calculate_pressure_jacobi_glsl","path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",},}, @@ -981,6 +1008,7 @@ {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},}, {"id":{"name":"pathArrayBox","path":"scripts/pathArrayBox/pathArrayBox.yy",},}, {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},}, + {"id":{"name":"node_pb_box_inset","path":"scripts/node_pb_box_inset/node_pb_box_inset.yy",},}, {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},}, {"id":{"name":"o_dialog_add_node","path":"objects/o_dialog_add_node/o_dialog_add_node.yy",},}, {"id":{"name":"s_node_curve_eval","path":"sprites/s_node_curve_eval/s_node_curve_eval.yy",},}, @@ -1017,12 +1045,15 @@ {"id":{"name":"steam_ugc_collection","path":"scripts/steam_ugc_collection/steam_ugc_collection.yy",},}, {"id":{"name":"sh_blur_zoom","path":"shaders/sh_blur_zoom/sh_blur_zoom.yy",},}, {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},}, + {"id":{"name":"s_node_pb_fx_stack","path":"sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy",},}, {"id":{"name":"fd_draw_sprite_to_collision_mask_surface","path":"scripts/fd_draw_sprite_to_collision_mask_surface/fd_draw_sprite_to_collision_mask_surface.yy",},}, {"id":{"name":"node_fluid_render","path":"scripts/node_fluid_render/node_fluid_render.yy",},}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},}, + {"id":{"name":"sh_color_picker_side_hue","path":"shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.yy",},}, {"id":{"name":"draw_text_delimiter","path":"scripts/draw_text_delimiter/draw_text_delimiter.yy",},}, {"id":{"name":"s_node_path_anchor","path":"sprites/s_node_path_anchor/s_node_path_anchor.yy",},}, {"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},}, + {"id":{"name":"node_pb_fx_highlight","path":"scripts/node_pb_fx_highlight/node_pb_fx_highlight.yy",},}, {"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},}, {"id":{"name":"node_lua_compute","path":"scripts/node_lua_compute/node_lua_compute.yy",},}, {"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},}, @@ -1047,6 +1078,7 @@ {"id":{"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",},}, {"id":{"name":"node_zigzag","path":"scripts/node_zigzag/node_zigzag.yy",},}, {"id":{"name":"node_equation","path":"scripts/node_equation/node_equation.yy",},}, + {"id":{"name":"s_node_pb_box_divide_grid","path":"sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.yy",},}, {"id":{"name":"node_string_join","path":"scripts/node_string_join/node_string_join.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",},}, @@ -1098,7 +1130,9 @@ {"id":{"name":"sh_checkerboard","path":"shaders/sh_checkerboard/sh_checkerboard.yy",},}, {"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":"s_node_array","path":"sprites/s_node_array/s_node_array.yy",},}, + {"id":{"name":"s_node_pb_box_divide","path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.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",},}, {"id":{"name":"node_iterator_filter_output","path":"scripts/node_iterator_filter_output/node_iterator_filter_output.yy",},}, @@ -1146,6 +1180,7 @@ {"id":{"name":"fd_rectangle_draw_stretched","path":"scripts/fd_rectangle_draw_stretched/fd_rectangle_draw_stretched.yy",},}, {"id":{"name":"s_node_wiggler","path":"sprites/s_node_wiggler/s_node_wiggler.yy",},}, {"id":{"name":"sh_region_fill_coordinate","path":"shaders/sh_region_fill_coordinate/sh_region_fill_coordinate.yy",},}, + {"id":{"name":"__pbBox","path":"scripts/__pbBox/__pbBox.yy",},}, {"id":{"name":"s_node_to_text","path":"sprites/s_node_to_text/s_node_to_text.yy",},}, {"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},}, {"id":{"name":"s_node_area","path":"sprites/s_node_area/s_node_area.yy",},}, @@ -1172,6 +1207,7 @@ {"id":{"name":"s_node_array_set","path":"sprites/s_node_array_set/s_node_array_set.yy",},}, {"id":{"name":"node_dust","path":"scripts/node_dust/node_dust.yy",},}, {"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},}, + {"id":{"name":"s_node_pb_fx_radial","path":"sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy",},}, {"id":{"name":"__background_get_internal","path":"scripts/__background_get_internal/__background_get_internal.yy",},}, {"id":{"name":"s_biterator_b_labels","path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},}, {"id":{"name":"sh_combine_hsv","path":"shaders/sh_combine_hsv/sh_combine_hsv.yy",},}, @@ -1179,6 +1215,7 @@ {"id":{"name":"addon_lua","path":"scripts/addon_lua/addon_lua.yy",},}, {"id":{"name":"nodeValue_drawer","path":"scripts/nodeValue_drawer/nodeValue_drawer.yy",},}, {"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},}, + {"id":{"name":"s_node_pb_draw_semi_ellipse","path":"sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy",},}, {"id":{"name":"mtl_reader","path":"scripts/mtl_reader/mtl_reader.yy",},}, {"id":{"name":"s_node_3d_array","path":"sprites/s_node_3d_array/s_node_3d_array.yy",},}, {"id":{"name":"node_plot_linear","path":"scripts/node_plot_linear/node_plot_linear.yy",},}, @@ -1194,6 +1231,7 @@ {"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},}, {"id":{"name":"buffer_object","path":"scripts/buffer_object/buffer_object.yy",},}, {"id":{"name":"s_node_audio_trim","path":"sprites/s_node_audio_trim/s_node_audio_trim.yy",},}, + {"id":{"name":"s_node_pb_fx_highlight","path":"sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy",},}, {"id":{"name":"sh_shadow_cast","path":"shaders/sh_shadow_cast/sh_shadow_cast.yy",},}, {"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},}, {"id":{"name":"s_biterator_tab_inactive","path":"sprites/s_biterator_tab_inactive/s_biterator_tab_inactive.yy",},}, @@ -1246,12 +1284,14 @@ {"id":{"name":"s_node_base_conversion","path":"sprites/s_node_base_conversion/s_node_base_conversion.yy",},}, {"id":{"name":"node_transform_array","path":"scripts/node_transform_array/node_transform_array.yy",},}, {"id":{"name":"s_node_loop_array","path":"sprites/s_node_loop_array/s_node_loop_array.yy",},}, + {"id":{"name":"node_pb_fx_stack","path":"scripts/node_pb_fx_stack/node_pb_fx_stack.yy",},}, {"id":{"name":"s_node_iterator_amount","path":"sprites/s_node_iterator_amount/s_node_iterator_amount.yy",},}, {"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},}, {"id":{"name":"sh_fd_visualize_thick_smoke_glsl","path":"shaders/sh_fd_visualize_thick_smoke_glsl/sh_fd_visualize_thick_smoke_glsl.yy",},}, {"id":{"name":"s_node_regex_match","path":"sprites/s_node_regex_match/s_node_regex_match.yy",},}, {"id":{"name":"surface_get_palette","path":"scripts/surface_get_palette/surface_get_palette.yy",},}, {"id":{"name":"sh_pixel_sort","path":"shaders/sh_pixel_sort/sh_pixel_sort.yy",},}, + {"id":{"name":"node_pb_draw_fill","path":"scripts/node_pb_draw_fill/node_pb_draw_fill.yy",},}, {"id":{"name":"s_node_vfx_destroy","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},}, {"id":{"name":"fd_rectangle_set_material_size","path":"scripts/fd_rectangle_set_material_size/fd_rectangle_set_material_size.yy",},}, {"id":{"name":"fd_rectangle_shift_content","path":"scripts/fd_rectangle_shift_content/fd_rectangle_shift_content.yy",},}, @@ -1267,8 +1307,10 @@ {"id":{"name":"BBMOD_Vec4","path":"scripts/BBMOD_Vec4/BBMOD_Vec4.yy",},}, {"id":{"name":"s_biterator_color_slot","path":"sprites/s_biterator_color_slot/s_biterator_color_slot.yy",},}, {"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},}, + {"id":{"name":"s_node_pb_layer","path":"sprites/s_node_pb_layer/s_node_pb_layer.yy",},}, {"id":{"name":"node_audio_window","path":"scripts/node_audio_window/node_audio_window.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":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},}, {"id":{"name":"node_surface_replace","path":"scripts/node_surface_replace/node_surface_replace.yy",},}, {"id":{"name":"node_strand_create","path":"scripts/node_strand_create/node_strand_create.yy",},}, @@ -1277,6 +1319,7 @@ {"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_key_display_mouse","path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",},}, + {"id":{"name":"node_pb_fx_add","path":"scripts/node_pb_fx_add/node_pb_fx_add.yy",},}, {"id":{"name":"s_node_csv_file_write","path":"sprites/s_node_csv_file_write/s_node_csv_file_write.yy",},}, {"id":{"name":"s_node_csv_parse","path":"sprites/s_node_csv_parse/s_node_csv_parse.yy",},}, {"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},}, @@ -1298,7 +1341,9 @@ {"id":{"name":"node_fluid_add_collider","path":"scripts/node_fluid_add_collider/node_fluid_add_collider.yy",},}, {"id":{"name":"node_atlas_get","path":"scripts/node_atlas_get/node_atlas_get.yy",},}, {"id":{"name":"fontScrollBox","path":"scripts/fontScrollBox/fontScrollBox.yy",},}, + {"id":{"name":"s_node_pb_box_mirror","path":"sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy",},}, {"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},}, + {"id":{"name":"node_pb_draw_blob","path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",},}, {"id":{"name":"draw_overlay","path":"scripts/draw_overlay/draw_overlay.yy",},}, {"id":{"name":"__background_get","path":"scripts/__background_get/__background_get.yy",},}, {"id":{"name":"s_node_text_display","path":"sprites/s_node_text_display/s_node_text_display.yy",},}, @@ -1320,6 +1365,7 @@ {"id":{"name":"ase_object","path":"scripts/ase_object/ase_object.yy",},}, {"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},}, {"id":{"name":"node_rigid_object","path":"scripts/node_rigid_object/node_rigid_object.yy",},}, + {"id":{"name":"node_pb_box_transform","path":"scripts/node_pb_box_transform/node_pb_box_transform.yy",},}, {"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},}, {"id":{"name":"__global_object_depths","path":"scripts/__global_object_depths/__global_object_depths.yy",},}, {"id":{"name":"s_node_filter_array","path":"sprites/s_node_filter_array/s_node_filter_array.yy",},}, @@ -1331,11 +1377,14 @@ {"id":{"name":"o_dialog_tunnels","path":"objects/o_dialog_tunnels/o_dialog_tunnels.yy",},}, {"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},}, {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},}, + {"id":{"name":"node_pb_box_contract","path":"scripts/node_pb_box_contract/node_pb_box_contract.yy",},}, {"id":{"name":"histogram_drawer","path":"scripts/histogram_drawer/histogram_drawer.yy",},}, + {"id":{"name":"sh_color_picker_side_value","path":"shaders/sh_color_picker_side_value/sh_color_picker_side_value.yy",},}, {"id":{"name":"node_array_range","path":"scripts/node_array_range/node_array_range.yy",},}, {"id":{"name":"node_animation_control","path":"scripts/node_animation_control/node_animation_control.yy",},}, {"id":{"name":"s_node_tunnel_in","path":"sprites/s_node_tunnel_in/s_node_tunnel_in.yy",},}, {"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},}, + {"id":{"name":"s_node_pb_draw_trapezoid","path":"sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy",},}, {"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},}, {"id":{"name":"fd_rectangle_reset_target","path":"scripts/fd_rectangle_reset_target/fd_rectangle_reset_target.yy",},}, {"id":{"name":"node_rate_remap","path":"scripts/node_rate_remap/node_rate_remap.yy",},}, @@ -1346,6 +1395,7 @@ {"id":{"name":"s_icon_64","path":"sprites/s_icon_64/s_icon_64.yy",},}, {"id":{"name":"panel_graph_export_image","path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},}, {"id":{"name":"__bone","path":"scripts/__bone/__bone.yy",},}, + {"id":{"name":"node_pb_fx_outline","path":"scripts/node_pb_fx_outline/node_pb_fx_outline.yy",},}, {"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},}, {"id":{"name":"s_node_gradient_replace","path":"sprites/s_node_gradient_replace/s_node_gradient_replace.yy",},}, {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},}, @@ -1437,9 +1487,11 @@ {"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},}, {"id":{"name":"fd_rectangle_set_repeat","path":"scripts/fd_rectangle_set_repeat/fd_rectangle_set_repeat.yy",},}, {"id":{"name":"sh_fd_calculate_velocity_divergence_glsl","path":"shaders/sh_fd_calculate_velocity_divergence_glsl/sh_fd_calculate_velocity_divergence_glsl.yy",},}, + {"id":{"name":"s_node_pb_fx_add","path":"sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy",},}, {"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},}, {"id":{"name":"node_wav_file_write","path":"scripts/node_wav_file_write/node_wav_file_write.yy",},}, {"id":{"name":"fd_rectangle_get_acceleration_a","path":"scripts/fd_rectangle_get_acceleration_a/fd_rectangle_get_acceleration_a.yy",},}, + {"id":{"name":"node_pb_box","path":"scripts/node_pb_box/node_pb_box.yy",},}, {"id":{"name":"node_random","path":"scripts/node_random/node_random.yy",},}, {"id":{"name":"sh_channel_A","path":"shaders/sh_channel_A/sh_channel_A.yy",},}, {"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},}, @@ -1454,6 +1506,7 @@ {"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},}, {"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},}, {"id":{"name":"s_node_transform_array","path":"sprites/s_node_transform_array/s_node_transform_array.yy",},}, + {"id":{"name":"s_node_pb_box_contract","path":"sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy",},}, {"id":{"name":"node_palette_extract","path":"scripts/node_palette_extract/node_palette_extract.yy",},}, {"id":{"name":"s_node_solid","path":"sprites/s_node_solid/s_node_solid.yy",},}, {"id":{"name":"s_node_fluidSim_vortex","path":"sprites/s_node_fluidSim_vortex/s_node_fluidSim_vortex.yy",},}, @@ -1531,9 +1584,11 @@ {"id":{"name":"node_string_trim","path":"scripts/node_string_trim/node_string_trim.yy",},}, {"id":{"name":"lerp_float","path":"scripts/lerp_float/lerp_float.yy",},}, {"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},}, + {"id":{"name":"s_node_pb_fx_outline","path":"sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy",},}, {"id":{"name":"sh_draw_vertex_aa","path":"shaders/sh_draw_vertex_aa/sh_draw_vertex_aa.yy",},}, {"id":{"name":"fd_rectangle_get_velocity_width","path":"scripts/fd_rectangle_get_velocity_width/fd_rectangle_get_velocity_width.yy",},}, {"id":{"name":"node_convolution","path":"scripts/node_convolution/node_convolution.yy",},}, + {"id":{"name":"node_pb_draw_ellipse","path":"scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy",},}, {"id":{"name":"sh_blink_extract","path":"shaders/sh_blink_extract/sh_blink_extract.yy",},}, {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},}, {"id":{"name":"lcd_function","path":"scripts/lcd_function/lcd_function.yy",},}, @@ -1545,6 +1600,7 @@ {"id":{"name":"fd_rectangle_inherit_velocity","path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",},}, {"id":{"name":"node_path","path":"scripts/node_path/node_path.yy",},}, {"id":{"name":"node_wrap_area","path":"scripts/node_wrap_area/node_wrap_area.yy",},}, + {"id":{"name":"node_attributes","path":"scripts/node_attributes/node_attributes.yy",},}, {"id":{"name":"sh_seperate_shape_sep","path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",},}, {"id":{"name":"s_node_image_sequence","path":"sprites/s_node_image_sequence/s_node_image_sequence.yy",},}, {"id":{"name":"steam_ugc_project","path":"scripts/steam_ugc_project/steam_ugc_project.yy",},}, @@ -1558,7 +1614,9 @@ {"id":{"name":"color_loader","path":"scripts/color_loader/color_loader.yy",},}, {"id":{"name":"node_rigid_override","path":"scripts/node_rigid_override/node_rigid_override.yy",},}, {"id":{"name":"fd_rectangle_set_velocity_maccormack_weight","path":"scripts/fd_rectangle_set_velocity_maccormack_weight/fd_rectangle_set_velocity_maccormack_weight.yy",},}, + {"id":{"name":"sh_pb_blob","path":"shaders/sh_pb_blob/sh_pb_blob.yy",},}, {"id":{"name":"s_node_array_sort","path":"sprites/s_node_array_sort/s_node_array_sort.yy",},}, + {"id":{"name":"s_node_pb_draw_roundrectangle","path":"sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy",},}, {"id":{"name":"node_trail","path":"scripts/node_trail/node_trail.yy",},}, {"id":{"name":"byte_reader","path":"scripts/byte_reader/byte_reader.yy",},}, {"id":{"name":"json_prettify","path":"scripts/json_prettify/json_prettify.yy",},}, @@ -1577,11 +1635,14 @@ {"id":{"name":"s_biterator_dim_label","path":"sprites/s_biterator_dim_label/s_biterator_dim_label.yy",},}, {"id":{"name":"s_node_average","path":"sprites/s_node_average/s_node_average.yy",},}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},}, + {"id":{"name":"node_pb_box_mirror","path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",},}, {"id":{"name":"s_node_text_length","path":"sprites/s_node_text_length/s_node_text_length.yy",},}, {"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},}, {"id":{"name":"sh_fd_visualize_colorize_glsl","path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},}, + {"id":{"name":"s_node_pb_draw_fill","path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},}, {"id":{"name":"s_node_rate_remap","path":"sprites/s_node_rate_remap/s_node_rate_remap.yy",},}, {"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},}, + {"id":{"name":"node_pb_draw_semi_ellipse","path":"scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.yy",},}, {"id":{"name":"o_dialog_preview_window","path":"objects/o_dialog_preview_window/o_dialog_preview_window.yy",},}, {"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},}, {"id":{"name":"__background_get_element","path":"scripts/__background_get_element/__background_get_element.yy",},}, @@ -1593,12 +1654,15 @@ {"id":{"name":"node_mesh_create_path","path":"scripts/node_mesh_create_path/node_mesh_create_path.yy",},}, {"id":{"name":"sh_fd_calculate_pressure_srj_glsl","path":"shaders/sh_fd_calculate_pressure_srj_glsl/sh_fd_calculate_pressure_srj_glsl.yy",},}, {"id":{"name":"curve_bounce_function","path":"scripts/curve_bounce_function/curve_bounce_function.yy",},}, + {"id":{"name":"node_pb_fx_shading","path":"scripts/node_pb_fx_shading/node_pb_fx_shading.yy",},}, {"id":{"name":"fd_rectangle_replace_material_surface","path":"scripts/fd_rectangle_replace_material_surface/fd_rectangle_replace_material_surface.yy",},}, {"id":{"name":"pack_skyline","path":"scripts/pack_skyline/pack_skyline.yy",},}, {"id":{"name":"fd_x","path":"scripts/fd_x/fd_x.yy",},}, {"id":{"name":"s_node_number","path":"sprites/s_node_number/s_node_number.yy",},}, {"id":{"name":"gif_reader","path":"scripts/gif_reader/gif_reader.yy",},}, + {"id":{"name":"s_node_pb_draw_angle","path":"sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy",},}, {"id":{"name":"_f_p3","path":"fonts/_f_p3/_f_p3.yy",},}, + {"id":{"name":"cornerBox","path":"scripts/cornerBox/cornerBox.yy",},}, {"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},}, {"id":{"name":"fd_rectangle_set_material_dissipation_type","path":"scripts/fd_rectangle_set_material_dissipation_type/fd_rectangle_set_material_dissipation_type.yy",},}, {"id":{"name":"s_node_gradient_shift","path":"sprites/s_node_gradient_shift/s_node_gradient_shift.yy",},}, @@ -1612,6 +1676,7 @@ {"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},}, {"id":{"name":"node_text_file_read","path":"scripts/node_text_file_read/node_text_file_read.yy",},}, {"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},}, + {"id":{"name":"node_pb_box_divide_grid","path":"scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy",},}, {"id":{"name":"draw_tooltip","path":"scripts/draw_tooltip/draw_tooltip.yy",},}, {"id":{"name":"sh_palette_replace","path":"shaders/sh_palette_replace/sh_palette_replace.yy",},}, {"id":{"name":"buffer_functions","path":"scripts/buffer_functions/buffer_functions.yy",},}, @@ -1623,6 +1688,7 @@ {"id":{"name":"node_fluid_add","path":"scripts/node_fluid_add/node_fluid_add.yy",},}, {"id":{"name":"BBMOD_Quaternion","path":"scripts/BBMOD_Quaternion/BBMOD_Quaternion.yy",},}, {"id":{"name":"o_dialog_output_visibility","path":"objects/o_dialog_output_visibility/o_dialog_output_visibility.yy",},}, + {"id":{"name":"s_node_pb_box_transform","path":"sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy",},}, {"id":{"name":"node_normal","path":"scripts/node_normal/node_normal.yy",},}, {"id":{"name":"s_node_glow","path":"sprites/s_node_glow/s_node_glow.yy",},}, {"id":{"name":"s_node_websocket_receive","path":"sprites/s_node_websocket_receive/s_node_websocket_receive.yy",},}, @@ -1646,6 +1712,7 @@ {"id":{"name":"BBMOD_DualQuaternion","path":"scripts/BBMOD_DualQuaternion/BBMOD_DualQuaternion.yy",},}, {"id":{"name":"node_sdf","path":"scripts/node_sdf/node_sdf.yy",},}, {"id":{"name":"file_dropper","path":"extensions/file_dropper/file_dropper.yy",},}, + {"id":{"name":"node_pb_draw_rectangle","path":"scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.yy",},}, {"id":{"name":"s_biterator_b_shape_idle","path":"sprites/s_biterator_b_shape_idle/s_biterator_b_shape_idle.yy",},}, {"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},}, {"id":{"name":"sh_mirror_mask","path":"shaders/sh_mirror_mask/sh_mirror_mask.yy",},}, @@ -1658,6 +1725,7 @@ {"id":{"name":"node_3d_repeat","path":"scripts/node_3d_repeat/node_3d_repeat.yy",},}, {"id":{"name":"point_direction_positive","path":"scripts/point_direction_positive/point_direction_positive.yy",},}, {"id":{"name":"s_node_fluidSim_add_fluid","path":"sprites/s_node_fluidSim_add_fluid/s_node_fluidSim_add_fluid.yy",},}, + {"id":{"name":"sh_replace_color","path":"shaders/sh_replace_color/sh_replace_color.yy",},}, {"id":{"name":"s_node_armature_bind","path":"sprites/s_node_armature_bind/s_node_armature_bind.yy",},}, {"id":{"name":"node_blur_contrast","path":"scripts/node_blur_contrast/node_blur_contrast.yy",},}, {"id":{"name":"sh_trail_filler","path":"shaders/sh_trail_filler/sh_trail_filler.yy",},}, @@ -1704,6 +1772,7 @@ {"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},}, {"id":{"name":"directory_object","path":"scripts/directory_object/directory_object.yy",},}, {"id":{"name":"node_combine_hsv","path":"scripts/node_combine_hsv/node_combine_hsv.yy",},}, + {"id":{"name":"node_pb_box_divide","path":"scripts/node_pb_box_divide/node_pb_box_divide.yy",},}, {"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},}, {"id":{"name":"node_websocket_sender","path":"scripts/node_websocket_sender/node_websocket_sender.yy",},}, {"id":{"name":"fd_rectangle_get_acceleration_b","path":"scripts/fd_rectangle_get_acceleration_b/fd_rectangle_get_acceleration_b.yy",},}, @@ -1727,6 +1796,7 @@ {"id":{"name":"s_kenney","path":"sprites/s_kenney/s_kenney.yy",},}, {"id":{"name":"s_biterator_b_shape_press","path":"sprites/s_biterator_b_shape_press/s_biterator_b_shape_press.yy",},}, {"id":{"name":"testing_script","path":"scripts/testing_script/testing_script.yy",},}, + {"id":{"name":"node_pb_layer","path":"scripts/node_pb_layer/node_pb_layer.yy",},}, {"id":{"name":"node_feedback","path":"scripts/node_feedback/node_feedback.yy",},}, {"id":{"name":"node_strand_update","path":"scripts/node_strand_update/node_strand_update.yy",},}, {"id":{"name":"sh_grid_noise","path":"shaders/sh_grid_noise/sh_grid_noise.yy",},}, @@ -1742,6 +1812,7 @@ {"id":{"name":"delau_helper","path":"scripts/delau_helper/delau_helper.yy",},}, {"id":{"name":"s_node_shape_polygon","path":"sprites/s_node_shape_polygon/s_node_shape_polygon.yy",},}, {"id":{"name":"sh_color_picker_hue","path":"shaders/sh_color_picker_hue/sh_color_picker_hue.yy",},}, + {"id":{"name":"s_node_pb_fx_interesct","path":"sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy",},}, {"id":{"name":"node_path_eval","path":"scripts/node_path_eval/node_path_eval.yy",},}, {"id":{"name":"sh_3d_depth","path":"shaders/sh_3d_depth/sh_3d_depth.yy",},}, {"id":{"name":"node_3d_displace","path":"scripts/node_3d_displace/node_3d_displace.yy",},}, @@ -1770,6 +1841,7 @@ {"id":{"name":"sh_sample","path":"shaders/sh_sample/sh_sample.yy",},}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},}, {"id":{"name":"fd_rectangle_create","path":"scripts/fd_rectangle_create/fd_rectangle_create.yy",},}, + {"id":{"name":"s_node_pb_box_split","path":"sprites/s_node_pb_box_split/s_node_pb_box_split.yy",},}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},}, {"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},}, {"id":{"name":"s_node_input","path":"sprites/s_node_input/s_node_input.yy",},}, @@ -1820,6 +1892,7 @@ {"id":{"name":"_node_VFX_spawner","path":"scripts/_node_VFX_spawner/_node_VFX_spawner.yy",},}, {"id":{"name":"s_node_bar_graph","path":"sprites/s_node_bar_graph/s_node_bar_graph.yy",},}, {"id":{"name":"sh_channel_B_grey","path":"shaders/sh_channel_B_grey/sh_channel_B_grey.yy",},}, + {"id":{"name":"s_node_pb_fx_hash","path":"sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy",},}, {"id":{"name":"draw_UI_scale","path":"scripts/draw_UI_scale/draw_UI_scale.yy",},}, {"id":{"name":"s_node_strandSim_update","path":"sprites/s_node_strandSim_update/s_node_strandSim_update.yy",},}, {"id":{"name":"async_functions","path":"scripts/async_functions/async_functions.yy",},}, @@ -1872,6 +1945,7 @@ {"id":{"name":"sh_region_fill_color","path":"shaders/sh_region_fill_color/sh_region_fill_color.yy",},}, {"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},}, {"id":{"name":"s_node_regex_replace","path":"sprites/s_node_regex_replace/s_node_regex_replace.yy",},}, + {"id":{"name":"sh_pb_hash","path":"shaders/sh_pb_hash/sh_pb_hash.yy",},}, {"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},}, {"id":{"name":"fd_rectangle_set_visualization_shader","path":"scripts/fd_rectangle_set_visualization_shader/fd_rectangle_set_visualization_shader.yy",},}, {"id":{"name":"s_biterator_bg","path":"sprites/s_biterator_bg/s_biterator_bg.yy",},}, @@ -1903,7 +1977,9 @@ {"id":{"name":"node_array_csv_parse","path":"scripts/node_array_csv_parse/node_array_csv_parse.yy",},}, {"id":{"name":"node_tunnel_out","path":"scripts/node_tunnel_out/node_tunnel_out.yy",},}, {"id":{"name":"s_node_array_shuffle","path":"sprites/s_node_array_shuffle/s_node_array_shuffle.yy",},}, + {"id":{"name":"node_pixel_builder","path":"scripts/node_pixel_builder/node_pixel_builder.yy",},}, {"id":{"name":"node_level","path":"scripts/node_level/node_level.yy",},}, + {"id":{"name":"node_pb","path":"scripts/node_pb/node_pb.yy",},}, {"id":{"name":"panel_test","path":"scripts/panel_test/panel_test.yy",},}, {"id":{"name":"o_dialog_warning","path":"objects/o_dialog_warning/o_dialog_warning.yy",},}, {"id":{"name":"s_node_group_output","path":"sprites/s_node_group_output/s_node_group_output.yy",},}, @@ -1924,10 +2000,12 @@ {"id":{"name":"load_function","path":"scripts/load_function/load_function.yy",},}, {"id":{"name":"draw_fit","path":"scripts/draw_fit/draw_fit.yy",},}, {"id":{"name":"node_armature_sample","path":"scripts/node_armature_sample/node_armature_sample.yy",},}, + {"id":{"name":"sh_pb_shade","path":"shaders/sh_pb_shade/sh_pb_shade.yy",},}, {"id":{"name":"ds_map","path":"scripts/ds_map/ds_map.yy",},}, {"id":{"name":"s_node_morph_surface","path":"sprites/s_node_morph_surface/s_node_morph_surface.yy",},}, {"id":{"name":"fd_rectangle_get_velocity_dissipation_type","path":"scripts/fd_rectangle_get_velocity_dissipation_type/fd_rectangle_get_velocity_dissipation_type.yy",},}, {"id":{"name":"s_node_3d_transform","path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},}, + {"id":{"name":"node_pb_box_split","path":"scripts/node_pb_box_split/node_pb_box_split.yy",},}, {"id":{"name":"s_node_output","path":"sprites/s_node_output/s_node_output.yy",},}, {"id":{"name":"sh_atlas","path":"shaders/sh_atlas/sh_atlas.yy",},}, {"id":{"name":"node_3d_extrude","path":"scripts/node_3d_extrude/node_3d_extrude.yy",},}, @@ -1965,6 +2043,7 @@ {"id":{"name":"sh_fd_replace_material_advanced_glsl","path":"shaders/sh_fd_replace_material_advanced_glsl/sh_fd_replace_material_advanced_glsl.yy",},}, {"id":{"name":"sh_solid","path":"shaders/sh_solid/sh_solid.yy",},}, {"id":{"name":"s_node_json_file_write","path":"sprites/s_node_json_file_write/s_node_json_file_write.yy",},}, + {"id":{"name":"node_pb_fx_intersect","path":"scripts/node_pb_fx_intersect/node_pb_fx_intersect.yy",},}, {"id":{"name":"timer_function","path":"scripts/timer_function/timer_function.yy",},}, {"id":{"name":"fd_rectangle_get_material_time_step","path":"scripts/fd_rectangle_get_material_time_step/fd_rectangle_get_material_time_step.yy",},}, {"id":{"name":"node_pack_sprites","path":"scripts/node_pack_sprites/node_pack_sprites.yy",},}, @@ -1991,6 +2070,7 @@ {"id":{"name":"node_iterator_sort_input","path":"scripts/node_iterator_sort_input/node_iterator_sort_input.yy",},}, {"id":{"name":"draw_corner","path":"scripts/draw_corner/draw_corner.yy",},}, {"id":{"name":"o_dialog_preference","path":"objects/o_dialog_preference/o_dialog_preference.yy",},}, + {"id":{"name":"node_pb_fx","path":"scripts/node_pb_fx/node_pb_fx.yy",},}, {"id":{"name":"node_wrap","path":"scripts/node_wrap/node_wrap.yy",},}, {"id":{"name":"node_3d_prim_sphere","path":"scripts/node_3d_prim_sphere/node_3d_prim_sphere.yy",},}, {"id":{"name":"o_dialog_about","path":"objects/o_dialog_about/o_dialog_about.yy",},}, @@ -2013,6 +2093,7 @@ {"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},}, {"id":{"name":"node_lerp","path":"scripts/node_lerp/node_lerp.yy",},}, {"id":{"name":"s_node_pixel_sort","path":"sprites/s_node_pixel_sort/s_node_pixel_sort.yy",},}, + {"id":{"name":"s_node_pb_box_inset","path":"sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy",},}, {"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},}, {"id":{"name":"sh_fd_visualize_pixel_art_fiery_smoke_glsl","path":"shaders/sh_fd_visualize_pixel_art_fiery_smoke_glsl/sh_fd_visualize_pixel_art_fiery_smoke_glsl.yy",},}, {"id":{"name":"node_ase_layer","path":"scripts/node_ase_layer/node_ase_layer.yy",},}, diff --git a/datafiles/data/themes/default.zip b/datafiles/data/themes/default.zip index 72ca7c0d5..59f7fbaaa 100644 Binary files a/datafiles/data/themes/default.zip and b/datafiles/data/themes/default.zip differ diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 031d41f5c..ae8401776 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -22,13 +22,17 @@ event_inherited(); node_tooltip_x = 0; node_tooltip_y = 0; - var context = PANEL_GRAPH.getCurrentContext(); - context = context == noone? "" : instanceof(context); + var _con = PANEL_GRAPH.getCurrentContext(); + var context = _con == noone? "" : instanceof(_con); + category = NODE_CATEGORY; + if(context == "Node_Pixel_Builder") + category = NODE_PB_CATEGORY; + draw_set_font(f_p0); var maxLen = 0; - for(var i = 0; i < ds_list_size(NODE_CATEGORY); i++) { - var cat = NODE_CATEGORY[| i]; + for(var i = 0; i < ds_list_size(category); i++) { + var cat = category[| i]; if(array_length(cat.filter) && !array_exists(cat.filter, context)) continue; @@ -107,8 +111,8 @@ event_inherited(); } function setPage(pageIndex) { - ADD_NODE_PAGE = pageIndex; - node_list = pageIndex == -1? noone : NODE_CATEGORY[| ADD_NODE_PAGE].list; + ADD_NODE_PAGE = min(pageIndex, ds_list_size(category) - 1); + node_list = pageIndex == -1? noone : category[| ADD_NODE_PAGE].list; } ADD_NODE_PAGE = 0; setPage(NODE_PAGE_DEFAULT); @@ -129,10 +133,12 @@ event_inherited(); return; } - array_remove(global.RECENT_NODES, _node.node); - array_insert(global.RECENT_NODES, 0, _node.node); - if(array_length(global.RECENT_NODES) > 20) - array_pop(global.RECENT_NODES); + if(category == NODE_CATEGORY) { + array_remove(global.RECENT_NODES, _node.node); + array_insert(global.RECENT_NODES, 0, _node.node); + if(array_length(global.RECENT_NODES) > 20) + array_pop(global.RECENT_NODES); + } _inputs = _new_node.inputs; _outputs = _new_node.outputs; @@ -223,15 +229,17 @@ event_inherited(); context = context == noone? "" : instanceof(context); var start = -1; + if(category == NODE_PB_CATEGORY) + start = 0; - for(var i = start; i < ds_list_size(NODE_CATEGORY); i++) { + for(var i = start; i < ds_list_size(category); i++) { var name = ""; if(i == -1) { draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent); name = "All"; } else { - var cat = NODE_CATEGORY[| i]; + var cat = category[| i]; name = cat.name; draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); @@ -278,8 +286,8 @@ event_inherited(); context = context == noone? "" : instanceof(context); _list = ds_list_create(); - for(var i = 0; i < ds_list_size(NODE_CATEGORY); i++) { - var cat = NODE_CATEGORY[| i]; + for(var i = 0; i < ds_list_size(category); i++) { + var cat = category[| i]; if(array_length(cat.filter) && !array_exists(cat.filter, context)) continue; @@ -589,8 +597,8 @@ event_inherited(); var search_lower = string_lower(search_string); var search_map = ds_map_create(); - for(var i = 0; i < ds_list_size(NODE_CATEGORY); i++) { - var cat = NODE_CATEGORY[| i]; + for(var i = 0; i < ds_list_size(category); i++) { + var cat = category[| i]; if(!struct_has(cat, "list")) continue; diff --git a/objects/o_dialog_color_selector/Create_0.gml b/objects/o_dialog_color_selector/Create_0.gml index cd2605731..4a32dc16e 100644 --- a/objects/o_dialog_color_selector/Create_0.gml +++ b/objects/o_dialog_color_selector/Create_0.gml @@ -36,12 +36,15 @@ event_inherited(); #region presets presets = ds_list_create(); preset_name = ds_list_create(); - preset_selecting = -1; + preset_selecting = 0; function presetCollect() { ds_list_clear(presets); ds_list_clear(preset_name); + ds_list_add(presets, DEF_PALETTE); + ds_list_add(preset_name, "Project"); + var path = DIRECTORY + "Palettes/" var file = file_find_first(path + "*", 0); while(file != "") { diff --git a/objects/o_dialog_color_selector/Draw_64.gml b/objects/o_dialog_color_selector/Draw_64.gml index 20a48ab6c..54917a080 100644 --- a/objects/o_dialog_color_selector/Draw_64.gml +++ b/objects/o_dialog_color_selector/Draw_64.gml @@ -49,12 +49,18 @@ if !ready exit; execute_shell(_windir, _realpath); } bx -= ui(32); + + if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, __txt("Show on Selector"), THEME.display_palette, selector.palette_display, c_white) == 2) + selector.palette_display = !selector.palette_display; + bx -= ui(32); #endregion #region selector var col_x = content_x + ui(20); var col_y = dialog_y + ui(52); + if(preset_selecting > -1) + selector.palette = presets[| preset_selecting]; selector.draw(col_x, col_y, sFOCUS, sHOVER); #endregion diff --git a/objects/o_dialog_gradient/Create_0.gml b/objects/o_dialog_gradient/Create_0.gml index d7bdee01b..0b0653703 100644 --- a/objects/o_dialog_gradient/Create_0.gml +++ b/objects/o_dialog_gradient/Create_0.gml @@ -149,12 +149,15 @@ event_inherited(); #region palette palettes = ds_list_create(); palette_name = ds_list_create(); - palette_selecting = -1; + palette_selecting = 0; function paletteCollect() { ds_list_clear(palettes); ds_list_clear(palette_name); + ds_list_add(palettes, DEF_PALETTE); + ds_list_add(palette_name, "Project"); + var path = DIRECTORY + "Palettes/" var file = file_find_first(path + "*", 0); while(file != "") { @@ -168,7 +171,7 @@ event_inherited(); sp_palette_w = ui(240 - 32 - 16); sp_palette_size = ui(24); - click_block = false; + click_block = true; sp_palettes = new scrollPane(sp_palette_w, dialog_h - ui(62), function(_y, _m) { var ww = sp_palette_w - ui(40); diff --git a/objects/o_dialog_gradient/Draw_64.gml b/objects/o_dialog_gradient/Draw_64.gml index d93712d91..81130f6a2 100644 --- a/objects/o_dialog_gradient/Draw_64.gml +++ b/objects/o_dialog_gradient/Draw_64.gml @@ -17,6 +17,7 @@ if !ready exit; var content_w = ui(556); var palette_x = content_x + content_w + ui(16); + var palette_w = ui(240); draw_sprite_stretched(THEME.dialog_bg, 0, presets_x, dialog_y, presets_w, dialog_h); if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, presets_x, dialog_y, presets_w, dialog_h, COLORS._main_accent, 1); @@ -84,6 +85,13 @@ if !ready exit; sp_palettes.setFocusHover(sFOCUS, sHOVER); sp_palettes.draw(palette_x + ui(16 + 8), dialog_y + ui(44)); + + var bx = palette_x + palette_w - ui(44); + var by = dialog_y + ui(12); + + if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, __txt("Show on Selector"), THEME.display_palette, selector.palette_display, c_white) == 2) + selector.palette_display = !selector.palette_display; + bx -= ui(32); #endregion #region gradient @@ -197,6 +205,8 @@ if !ready exit; var col_x = content_x + ui(20); var col_y = dialog_y + ui(136); + if(palette_selecting > -1) + selector.palette = palettes[| palette_selecting]; selector.draw(col_x, col_y, sFOCUS, sHOVER); #endregion diff --git a/objects/o_dialog_palette/Create_0.gml b/objects/o_dialog_palette/Create_0.gml index 2b37d92e0..a71bc2e5e 100644 --- a/objects/o_dialog_palette/Create_0.gml +++ b/objects/o_dialog_palette/Create_0.gml @@ -61,6 +61,9 @@ event_inherited(); ds_list_clear(presets); ds_list_clear(preset_name); + ds_list_add(presets, DEF_PALETTE); + ds_list_add(preset_name, "Project"); + var path = DIRECTORY + "Palettes/" var file = file_find_first(path + "*", 0); while(file != "") { diff --git a/scripts/__bbox/__bbox.gml b/scripts/__bbox/__bbox.gml index e9ac9c46a..ec55c2124 100644 --- a/scripts/__bbox/__bbox.gml +++ b/scripts/__bbox/__bbox.gml @@ -66,5 +66,25 @@ function __BBOX() constructor { return self; } + static toSquare = function() { + var _span = min(w, h) / 2; + + x0 = xc - _span; + x1 = xc + _span; + y0 = yc - _span; + y1 = yc + _span; + + return self; + } + + static pad = function(padding) { + x0 += padding; + x1 -= padding; + y0 += padding; + y1 -= padding; + + return self; + } + static clone = function() { return BBOX().fromPoints(x0, y0, x1, y1); }; } \ No newline at end of file diff --git a/scripts/__pbBox/__pbBox.gml b/scripts/__pbBox/__pbBox.gml new file mode 100644 index 000000000..3bf66798a --- /dev/null +++ b/scripts/__pbBox/__pbBox.gml @@ -0,0 +1,38 @@ +function __pbBox() constructor { + layer = 0; + + x = 0; + y = 0; + w = 32; + h = 32; + + layer_w = 32; + layer_h = 32; + + mask = noone; + + mirror_h = false; + mirror_v = false; + + rotation = 0; + + static clone = function() { + var _pbbox = new __pbBox(); + + _pbbox.layer = layer; + _pbbox.x = x; + _pbbox.y = y; + _pbbox.w = w; + _pbbox.h = h; + + _pbbox.layer_w = layer_w; + _pbbox.layer_h = layer_h; + + _pbbox.mirror_h = mirror_h; + _pbbox.mirror_v = mirror_v; + + _pbbox.rotation = rotation; + + return _pbbox; + } +} \ No newline at end of file diff --git a/scripts/__pbBox/__pbBox.yy b/scripts/__pbBox/__pbBox.yy new file mode 100644 index 000000000..28f9f810a --- /dev/null +++ b/scripts/__pbBox/__pbBox.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "__pbBox", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/data/pixel builder.yy", + }, +} \ No newline at end of file diff --git a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml index 110385de4..16c7eaba7 100644 --- a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml +++ b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml @@ -8,7 +8,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co inputs[| 2] = nodeValue("Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2, "Amount of particle spawn in that frame."); - inputs[| 3] = nodeValue("Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + inputs[| 3] = nodeValue("Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2, DEF_SURF_W / 2, DEF_SURF_H / 2, AREA_SHAPE.rectangle ]) .setDisplay(VALUE_DISPLAY.area); inputs[| 4] = nodeValue("Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) diff --git a/scripts/assets_data/assets_data.yy b/scripts/assets_data/assets_data.yy index 596a370c9..bd503435f 100644 --- a/scripts/assets_data/assets_data.yy +++ b/scripts/assets_data/assets_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/buttonPalette/buttonPalette.gml b/scripts/buttonPalette/buttonPalette.gml index ab8b8631e..98112497a 100644 --- a/scripts/buttonPalette/buttonPalette.gml +++ b/scripts/buttonPalette/buttonPalette.gml @@ -18,6 +18,10 @@ function buttonPalette(_onApply, dialog = noone) : widget() constructor { parentDialog.addChildren(dialog); } + static drawParam = function(params) { + return draw(params.x, params.y, params.w, params.h, params.data, params.m); + } + static draw = function(_x, _y, _w, _h, _color, _m) { x = _x; y = _y; @@ -25,14 +29,12 @@ function buttonPalette(_onApply, dialog = noone) : widget() constructor { h = _h; current_palette = _color; - var click = false; var hoverRect = point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h); if(ihover && hoverRect) { draw_sprite_stretched(THEME.button, 1, _x, _y, _w, _h); - if(mouse_press(mb_left, iactive)) { + if(mouse_press(mb_left, iactive)) trigger(); - click = true; - } + if(mouse_click(mb_left, iactive)) { draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h); draw_sprite_stretched_ext(THEME.button, 3, _x, _y, _w, _h, COLORS._main_accent, 1); @@ -54,7 +56,7 @@ function buttonPalette(_onApply, dialog = noone) : widget() constructor { } resetFocus(); - return click; + return _h; } } diff --git a/scripts/collection_data/collection_data.yy b/scripts/collection_data/collection_data.yy index 0e657a3c6..da4974e53 100644 --- a/scripts/collection_data/collection_data.yy +++ b/scripts/collection_data/collection_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/color_loader/color_loader.yy b/scripts/color_loader/color_loader.yy index 33f9b4915..1c069d3f3 100644 --- a/scripts/color_loader/color_loader.yy +++ b/scripts/color_loader/color_loader.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/color_selector/color_selector.gml b/scripts/color_selector/color_selector.gml index 79cb6c974..46a5aae93 100644 --- a/scripts/color_selector/color_selector.gml +++ b/scripts/color_selector/color_selector.gml @@ -17,6 +17,9 @@ function colorSelector(onApply = noone) constructor { disp_mode = 0; + palette_display = false; + palette = []; + color_surface = surface_create_valid(ui(256), ui(256)); tb_hue = new slider(0, 255, 1, function(_val) { @@ -134,62 +137,79 @@ function colorSelector(onApply = noone) constructor { draw_sprite_stretched(THEME.ui_panel_bg, 0, col_x - ui(8), col_y - ui(8), ui(256 + 16), ui(256 + 16)); - if(!is_surface(color_surface)) color_surface = surface_create_valid(ui(256), ui(256)); + color_surface = surface_verify(color_surface, 256, 256); surface_set_target(color_surface); - draw_sprite_uniform(s_fx_pixel, 0, 0, 0, ui(256)); + if(disp_mode == 0) { + shader_set(sh_color_picker_hue); + shader_set_f("hue", hue / 256); + shader_set_i("usePalette", palette_display); + shader_set_palette(palette); + } else if(disp_mode == 1) { + shader_set(sh_color_picker_value); + shader_set_f("value", val / 256); + shader_set_i("usePalette", palette_display); + shader_set_palette(palette); + } + + draw_sprite_uniform(s_fx_pixel, 0, 0, 0, 256); + shader_reset(); surface_reset_target(); - if(disp_mode == 0) { - shader_set(sh_color_picker_hue); - var h = shader_get_uniform(sh_color_picker_hue, "hue"); - shader_set_uniform_f(h, hue / 256); - - draw_surface_ext_safe(color_surface, col_x, col_y,,,,, interactable * 0.5 + 0.5); - shader_reset(); - } else if(disp_mode == 1) { - shader_set(sh_color_picker_value); - var v = shader_get_uniform(sh_color_picker_value, "value"); - shader_set_uniform_f(v, val / 256); - - draw_surface_ext_safe(color_surface, col_x, col_y,,,,, interactable * 0.5 + 0.5); - shader_reset(); - } + draw_surface_ext_safe(color_surface, col_x, col_y,,,,, interactable * 0.5 + 0.5); #region side control var hue_x = col_x + ui(280); var hue_y = col_y; draw_sprite_stretched(THEME.ui_panel_bg, 0, hue_x - ui(8), hue_y - ui(8), ui(32), ui(256 + 16)); - - draw_set_alpha(interactable * 0.9 + 0.1); - for(var i = 0; i < 256; i++) { - if(disp_mode == 0) - draw_set_color(make_color_hsv(i, 255, 255)); - else if(disp_mode == 1) - draw_set_color(make_color_hsv(hue, 255, 255 - i)); - draw_rectangle(hue_x, hue_y + ui(i), hue_x + ui(16), hue_y + ui(i + 1), false); - } - draw_set_alpha(1); if(disp_mode == 0) { - var hy = hue_y + ui(hue); - draw_sprite_stretched_ext(s_ui_base_white, 0, hue_x - ui(3), hy - ui(6), ui(24), ui(10), make_color_hsv(hue, 255, 255), 1); - draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(sat - 6), col_y + ui(256 - val - 6), ui(12), ui(12), current_color, 1); + shader_set(sh_color_picker_side_hue); + shader_set_i("usePalette", palette_display); + shader_set_palette(palette); + shader_set_f("sat", sat / 256); + shader_set_f("value", val / 256); + + draw_sprite_stretched_ext(s_fx_pixel, 0, hue_x, hue_y, ui(16), ui(256), c_white, interactable * 0.5 + 0.5); + shader_reset(); } else if(disp_mode == 1) { - var vy = hue_y + ui(256 - val); - draw_sprite_stretched_ext(s_ui_base_white, 0, hue_x - ui(3), vy - ui(6), ui(24), ui(10), make_color_hsv(hue, 255, val), 1); - draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(hue - 6), col_y + ui(256 - sat - 6), ui(12), ui(12), current_color, 1); + shader_set(sh_color_picker_side_value); + shader_set_i("usePalette", palette_display); + shader_set_palette(palette); + shader_set_f("hue", hue / 256); + shader_set_f("sat", sat / 256); + + draw_sprite_stretched_ext(s_fx_pixel, 0, hue_x, hue_y, ui(16), ui(256), c_white, interactable * 0.5 + 0.5) + shader_reset(); + } + + var _sy = disp_mode == 0? hue_y + ui(hue) : hue_y + ui(256 - val); + + if(palette_display) { + draw_sprite_stretched_ext(s_ui_base_white, 0, hue_x - ui(3), _sy - ui(6), ui(24), ui(10), current_color, 1); + + if(disp_mode == 0) + draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(sat - 6), col_y + ui(256 - val - 6), ui(12), ui(12), current_color, 1); + else if(disp_mode == 1) + draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(hue - 6), col_y + ui(256 - sat - 6), ui(12), ui(12), current_color, 1); + } else { + if(disp_mode == 0) { + draw_sprite_stretched_ext(s_ui_base_white, 0, hue_x - ui(3), _sy - ui(6), ui(24), ui(10), make_color_hsv(hue, 255, 255), 1); + draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(sat - 6), col_y + ui(256 - val - 6), ui(12), ui(12), current_color, 1); + } else if(disp_mode == 1) { + draw_sprite_stretched_ext(s_ui_base_white, 0, hue_x - ui(3), _sy - ui(6), ui(24), ui(10), make_color_hsv(hue, 255, val), 1); + draw_sprite_stretched_ext(s_ui_base_white, 0, col_x + ui(hue - 6), col_y + ui(256 - sat - 6), ui(12), ui(12), current_color, 1); + } } if(mouse_press(mb_left, interactable && focus)) { - if(point_in_rectangle(mouse_mx, mouse_my, hue_x, hue_y, hue_x + ui(16), hue_y + ui(256))) { - area_dragging = true; - } else if(point_in_rectangle(mouse_mx, mouse_my, col_x, col_y, col_x + ui(256), col_y + ui(256))) { + if(point_in_rectangle(mouse_mx, mouse_my, hue_x, hue_y, hue_x + ui(16), hue_y + ui(256))) side_dragging = true; - } + else if(point_in_rectangle(mouse_mx, mouse_my, col_x, col_y, col_x + ui(256), col_y + ui(256))) + area_dragging = true; } - - if(area_dragging) { + + if(side_dragging) { if(disp_mode == 0) { hue = clamp((mouse_my - hue_y) / UI_SCALE, 0, 256); } else if(disp_mode == 1) { @@ -197,11 +217,18 @@ function colorSelector(onApply = noone) constructor { } setHSV(); + + if(palette_display) { + current_color = disp_mode == 0? surface_getpixel(color_surface, sat, 256 - val) : + surface_getpixel(color_surface, hue, sat); + if(onApply != noone) onApply(current_color); + } + if(mouse_release(mb_left)) - area_dragging = false; + side_dragging = false; } - if(side_dragging) { + if(area_dragging) { if(disp_mode == 0) { sat = clamp((mouse_mx - col_x) / UI_SCALE, 0, 256); val = 256 - clamp((mouse_my - col_y) / UI_SCALE, 0, 256); @@ -211,8 +238,15 @@ function colorSelector(onApply = noone) constructor { } setHSV(); + + if(palette_display) { + current_color = disp_mode == 0? surface_getpixel(color_surface, sat, 256 - val) : + surface_getpixel(color_surface, hue, sat); + if(onApply != noone) onApply(current_color); + } + if(mouse_release(mb_left)) - side_dragging = false; + area_dragging = false; } #endregion diff --git a/scripts/cornerBox/cornerBox.gml b/scripts/cornerBox/cornerBox.gml new file mode 100644 index 000000000..45ecb0e71 --- /dev/null +++ b/scripts/cornerBox/cornerBox.gml @@ -0,0 +1,80 @@ +function cornerBox(_onModify, _unit = noone) : widget() constructor { + onModify = _onModify; + + linked = false; + b_link = button(function() { linked = !linked; }); + b_link.icon = THEME.value_link; + + onModifyIndex = function(index, val) { + if(linked) { + for( var i = 0; i < 4; i++ ) + onModify(i, toNumber(val)); + return; + } + + onModify(index, toNumber(val)); + } + + onModifySingle[0] = function(val) { onModifyIndex(0, val); } + onModifySingle[1] = function(val) { onModifyIndex(1, val); } + onModifySingle[2] = function(val) { onModifyIndex(2, val); } + onModifySingle[3] = function(val) { onModifyIndex(3, val); } + + for(var i = 0; i < 4; i++) { + tb[i] = new textBox(TEXTBOX_INPUT.number, onModifySingle[i]); + tb[i].slidable = true; + } + + static setSlideSpeed = function(speed) { + for(var i = 0; i < 4; i++) + tb[i].slide_speed = speed; + } + + static setInteract = function(interactable = noone) { + self.interactable = interactable; + b_link.interactable = interactable; + + for( var i = 0; i < 4; i++ ) + tb[i].interactable = interactable; + } + + static register = function(parent = noone) { + b_link.register(); + + tb[0].register(parent); + tb[1].register(parent); + tb[2].register(parent); + tb[3].register(parent); + } + + static draw = function(_x, _y, _data, _m) { + x = _x; + y = _y; + w = 0; + h = ui(192); + + var yy = _y + ui(64); + draw_sprite_ui_uniform(THEME.inspector_corner, 0, _x, yy); + + for(var i = 0; i < 4; i++) { + tb[i].setFocusHover(active, hover); + tb[i].align = fa_center; + } + + tb[0].draw(_x - ui(120), yy + ui(-48 - 34), ui(64), TEXTBOX_HEIGHT, _data[0], _m); + tb[1].draw(_x + ui(56), yy + ui(-48 - 34), ui(64), TEXTBOX_HEIGHT, _data[1], _m); + tb[2].draw(_x - ui(120), yy + ui( 48), ui(64), TEXTBOX_HEIGHT, _data[2], _m); + tb[3].draw(_x + ui(56), yy + ui( 48), ui(64), TEXTBOX_HEIGHT, _data[3], _m); + + b_link.setFocusHover(active, hover); + b_link.icon_index = linked; + b_link.icon_blend = linked? COLORS._main_accent : COLORS._main_icon; + b_link.tooltip = linked? __txt("Unlink values") : __txt("Link values"); + + var bx = _x - ui(12); + var by = yy - ui(12); + b_link.draw(bx, by, ui(24), ui(24), _m, THEME.button_hide); + + resetFocus(); + } +} \ No newline at end of file diff --git a/scripts/cornerBox/cornerBox.yy b/scripts/cornerBox/cornerBox.yy new file mode 100644 index 000000000..0c5e99789 --- /dev/null +++ b/scripts/cornerBox/cornerBox.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "cornerBox", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "widgets", + "path": "folders/widgets.yy", + }, +} \ No newline at end of file diff --git a/scripts/draw_tooltip/draw_tooltip.gml b/scripts/draw_tooltip/draw_tooltip.gml index 54d25b688..1e39b1e25 100644 --- a/scripts/draw_tooltip/draw_tooltip.gml +++ b/scripts/draw_tooltip/draw_tooltip.gml @@ -164,5 +164,26 @@ function draw_tooltip_atlas(atlas) { function draw_tooltip_buffer(buff) { var txt = buffer_get_string(buff, false); - draw_tooltip_text(txt); + var len = string_length(txt); + + if(len > 400) txt = string_copy(txt, 1, 400); + + draw_set_text(f_code, fa_left, fa_top, COLORS._main_text); + + var tw = min(string_width(" ") * 40, string_width(txt)); + var th = string_height_ext(txt, -1, tw); + if(len > 400) + th += string_height(" "); + + var mx = min(mouse_mx + ui(16), WIN_W - (tw + ui(16))); + var my = min(mouse_my + ui(16), WIN_H - (th + ui(16))); + + draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + ui(16), th + ui(16)); + draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + ui(16), th + ui(16)); + draw_text_line(mx + ui(8), my + ui(8), txt, -1, tw); + + if(len > 400) { + draw_set_text(f_code, fa_left, fa_bottom, COLORS._main_text_sub); + draw_text(mx + ui(8), my + th + ui(8), $"...({buffer_get_size(buff)} bytes)"); + } } \ No newline at end of file diff --git a/scripts/event_recorder/event_recorder.yy b/scripts/event_recorder/event_recorder.yy index 9a78adef8..741e5796e 100644 --- a/scripts/event_recorder/event_recorder.yy +++ b/scripts/event_recorder/event_recorder.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/font_data/font_data.yy b/scripts/font_data/font_data.yy index a0b7b2427..4b004e1b8 100644 --- a/scripts/font_data/font_data.yy +++ b/scripts/font_data/font_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 5690616d1..d745a9799 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -41,6 +41,16 @@ on_top: true, }; + attributes = { + surface_dimension: [ 32, 32 ], + palette: [ c_black, c_white ] + } + + attributeEditor = [ + [ "Default Surface", "surface_dimension", new vectorBox(2, function(ind, val) { attributes.surface_dimension[ind] = val; }) ], + [ "Palette", "palette", new buttonPalette(function(pal) { attributes.palette = pal; }) ], + ] + static cleanup = function() { ds_list_destroy(nodes); ds_map_destroy(nodeMap); @@ -79,7 +89,7 @@ VERSION = 1147; SAVE_VERSION = 1448; - VERSION_STRING = "1.14.6n9"; + VERSION_STRING = "1.14.7"; BUILD_NUMBER = 114600; globalvar APPEND_MAP; diff --git a/scripts/globals/globals.yy b/scripts/globals/globals.yy index dc124fdc3..c162413d8 100644 --- a/scripts/globals/globals.yy +++ b/scripts/globals/globals.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index e6c40124e..361affd1d 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -149,6 +149,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false, override = false create_list[| i].loadGroup(); } catch(e) { log_warning("LOAD, group", exception_print(e)); + return false; } try { diff --git a/scripts/locale_data/locale_data.yy b/scripts/locale_data/locale_data.yy index f1e84cc2f..24c00e483 100644 --- a/scripts/locale_data/locale_data.yy +++ b/scripts/locale_data/locale_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/meta_data/meta_data.yy b/scripts/meta_data/meta_data.yy index 28a95d03a..810b9e739 100644 --- a/scripts/meta_data/meta_data.yy +++ b/scripts/meta_data/meta_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/nodeValue_drawer/nodeValue_drawer.gml b/scripts/nodeValue_drawer/nodeValue_drawer.gml index 7189bc0b0..4d45b806c 100644 --- a/scripts/nodeValue_drawer/nodeValue_drawer.gml +++ b/scripts/nodeValue_drawer/nodeValue_drawer.gml @@ -212,15 +212,15 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc } var param = { - x: editBoxX, - y: editBoxY, - real_x: rx, - real_y: ry, - w: editBoxW, - h: editBoxH, + x: editBoxX, + y: editBoxY, + rx: rx, + rx: ry, + w: editBoxW, + h: editBoxH, data: jun.showValue(), - mouse: _m, + m: _m, } jun.editWidget.rx = rx; @@ -254,6 +254,10 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc jun.editWidget.draw(xc, _hsy + ui(32), jun.showValue(), _m); widH = ui(192); break; + case VALUE_DISPLAY.corner : + jun.editWidget.draw(xc, _hsy + ui(32), jun.showValue(), _m); + widH = ui(192); + break; case VALUE_DISPLAY.rotation : case VALUE_DISPLAY.rotation_range : jun.editWidget.draw(xc, _hsy, jun.showValue(), _m); diff --git a/scripts/node_3d_combine/node_3d_combine.gml b/scripts/node_3d_combine/node_3d_combine.gml index 3227303be..6ad0f4392 100644 --- a/scripts/node_3d_combine/node_3d_combine.gml +++ b/scripts/node_3d_combine/node_3d_combine.gml @@ -1,7 +1,7 @@ function Node_3D_Combine(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { name = "3D Combine"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector) .rejectArray(); diff --git a/scripts/node_3d_displace/node_3d_displace.gml b/scripts/node_3d_displace/node_3d_displace.gml index bfc8d61c3..11ed326d2 100644 --- a/scripts/node_3d_displace/node_3d_displace.gml +++ b/scripts/node_3d_displace/node_3d_displace.gml @@ -1,7 +1,7 @@ function Node_3D_Displace(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "3D Displace"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ]) diff --git a/scripts/node_3d_extrude/node_3d_extrude.gml b/scripts/node_3d_extrude/node_3d_extrude.gml index 88230bd83..0a811be4b 100644 --- a/scripts/node_3d_extrude/node_3d_extrude.gml +++ b/scripts/node_3d_extrude/node_3d_extrude.gml @@ -3,7 +3,7 @@ function Node_3D_Extrude(_x, _y, _group = noone) : Node_Processor(_x, _y, _group inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ]) diff --git a/scripts/node_3d_obj/node_3D_obj.gml b/scripts/node_3d_obj/node_3D_obj.gml index b1b198bfc..8d65f0ac7 100644 --- a/scripts/node_3d_obj/node_3D_obj.gml +++ b/scripts/node_3d_obj/node_3D_obj.gml @@ -32,7 +32,7 @@ function Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructor doUpdate(); }, "Generate"] ); - inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_plane/node_3d_plane.gml b/scripts/node_3d_plane/node_3d_plane.gml index 6b4ced45c..9e5e2a147 100644 --- a/scripts/node_3d_plane/node_3d_plane.gml +++ b/scripts/node_3d_plane/node_3d_plane.gml @@ -17,7 +17,7 @@ function Node_3D_Plane(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]) .rejectArray(); - inputs[| 5] = nodeValue("Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 5] = nodeValue("Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 6] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ]) diff --git a/scripts/node_3d_prim_cone/node_3d_prim_cone.gml b/scripts/node_3d_prim_cone/node_3d_prim_cone.gml index 0cc41cae7..f70d0e522 100644 --- a/scripts/node_3d_prim_cone/node_3d_prim_cone.gml +++ b/scripts/node_3d_prim_cone/node_3d_prim_cone.gml @@ -1,7 +1,7 @@ function Node_3D_Cone(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "3D Cone"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml index 262dd28f9..6e16ac4a3 100644 --- a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml +++ b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml @@ -4,7 +4,7 @@ function Node_3D_Cube(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 0] = nodeValue("Main texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, USE_DEF); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml index 1a61d944d..c9d256f74 100644 --- a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml +++ b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml @@ -6,7 +6,7 @@ function Node_3D_Cylinder(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou inputs[| 1] = nodeValue("Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2); - inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml b/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml index 4dee08ed0..e81314f9f 100644 --- a/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml +++ b/scripts/node_3d_prim_sphere/node_3d_prim_sphere.gml @@ -5,7 +5,7 @@ function Node_3D_Sphere(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) inputs[| 0] = nodeValue("Subdivisions", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [8, 4], "Amount of polygon in X and Y axis.") .setDisplay(VALUE_DISPLAY.vector); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_render/node_3d_render.gml b/scripts/node_3d_render/node_3d_render.gml index 8e621d740..d377adfda 100644 --- a/scripts/node_3d_render/node_3d_render.gml +++ b/scripts/node_3d_render/node_3d_render.gml @@ -1,7 +1,7 @@ //function Node_3D_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { // name = "3D Render"; -// inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) +// inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) // .setDisplay(VALUE_DISPLAY.vector); // inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ]) diff --git a/scripts/node_3d_repeat/node_3d_repeat.gml b/scripts/node_3d_repeat/node_3d_repeat.gml index 7a65d61a5..396e7097f 100644 --- a/scripts/node_3d_repeat/node_3d_repeat.gml +++ b/scripts/node_3d_repeat/node_3d_repeat.gml @@ -1,7 +1,7 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { name = "3D Repeat"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ]) diff --git a/scripts/node_3d_transform/node_3d_transform.gml b/scripts/node_3d_transform/node_3d_transform.gml index 3f6d27226..40d8d7534 100644 --- a/scripts/node_3d_transform/node_3d_transform.gml +++ b/scripts/node_3d_transform/node_3d_transform.gml @@ -1,7 +1,7 @@ function Node_3D_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "3D Transform"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ]) diff --git a/scripts/node_9slice/node_9slice.gml b/scripts/node_9slice/node_9slice.gml index 51f72e5ce..7e919d35b 100644 --- a/scripts/node_9slice/node_9slice.gml +++ b/scripts/node_9slice/node_9slice.gml @@ -3,7 +3,7 @@ function Node_9Slice(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Splice", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ]) diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml index 207bbb9c9..d6d6719a5 100644 --- a/scripts/node_VFX_renderer/node_VFX_renderer.gml +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -5,7 +5,7 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr use_cache = true; - inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.") diff --git a/scripts/node_armature_bind/node_armature_bind.gml b/scripts/node_armature_bind/node_armature_bind.gml index e984fb3fa..a7b994bd9 100644 --- a/scripts/node_armature_bind/node_armature_bind.gml +++ b/scripts/node_armature_bind/node_armature_bind.gml @@ -1,7 +1,7 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Armature Bind"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Armature", self, JUNCTION_CONNECT.input, VALUE_TYPE.armature, noone) diff --git a/scripts/node_atlas_draw/node_atlas_draw.gml b/scripts/node_atlas_draw/node_atlas_draw.gml index 18d0f0e0b..40453073e 100644 --- a/scripts/node_atlas_draw/node_atlas_draw.gml +++ b/scripts/node_atlas_draw/node_atlas_draw.gml @@ -2,7 +2,7 @@ function Node_Atlas_Draw(_x, _y, _group = noone) : Node(_x, _y, _group) construc name = "Draw Atlas"; previewable = true; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Atlas", self, JUNCTION_CONNECT.input, VALUE_TYPE.atlas, noone) diff --git a/scripts/node_attributes/node_attributes.gml b/scripts/node_attributes/node_attributes.gml new file mode 100644 index 000000000..3ef7ac17f --- /dev/null +++ b/scripts/node_attributes/node_attributes.gml @@ -0,0 +1,93 @@ +#region attribute + global.SURFACE_INTERPOLATION = [ + "No aliasing", + "Bilinear", + "Bicubic", + "radSin" + ]; + + global.SURFACE_OVERSAMPLE = [ + "Empty", + "Clamp", + "Repeat" + ]; + + function __initSurfaceFormat() { + var surface_format = [ + surface_rgba4unorm, + surface_rgba8unorm, + surface_rgba16float, + surface_rgba32float, + surface_r8unorm, + surface_r16float, + surface_r32float + ]; + + var surface_format_name = [ + "4 bit RGBA", + "8 bit RGBA", + "16 bit RGBA", + "32 bit RGBA", + "8 bit Greyscale", + "16 bit Greyscale", + "32 bit Greyscale" + ]; + + global.SURFACE_FORMAT = []; + global.SURFACE_FORMAT_NAME = []; + + for( var i = 0; i < array_length(surface_format); i++ ) { + var sup = surface_format_is_supported(surface_format[i]); + array_push(global.SURFACE_FORMAT, surface_format[i]); + array_push(global.SURFACE_FORMAT_NAME, (sup? "" : "-") + surface_format_name[i]); + + if(!sup) log_message("WARNING", "Surface format [" + surface_format_name[i] + "] not supported in this device."); + } + + global.SURFACE_FORMAT_NAME_PROCESS = [ "Input" ]; + global.SURFACE_FORMAT_NAME_PROCESS = array_append(global.SURFACE_FORMAT_NAME_PROCESS, global.SURFACE_FORMAT_NAME); + } + + function attribute_surface_depth(label = true) { + var depth_array = inputs[| 0].type == VALUE_TYPE.surface? global.SURFACE_FORMAT_NAME_PROCESS : global.SURFACE_FORMAT_NAME; + attributes.color_depth = array_find(depth_array, "8 bit RGBA"); + + if(label) array_push(attributeEditors, "Surface"); + array_push(attributeEditors, ["Color depth", function() { return attributes.color_depth; }, + new scrollBox(depth_array, function(val) { + attributes.color_depth = val; + triggerRender(); + }, false)]); + } + + function attribute_interpolation(label = false) { + attributes.interpolation = 0; + + if(label) array_push(attributeEditors, "Surface"); + array_push(attributeEditors, ["Texture interpolation", function() { return attributes.interpolation; }, + new scrollBox(global.SURFACE_INTERPOLATION, function(val) { + attributes.interpolation = val; + triggerRender(); + }, false)]); + } + + function attribute_oversample(label = false) { + attributes.oversample = 0; + + if(label) array_push(attributeEditors, "Surface"); + array_push(attributeEditors, ["Oversample", function() { return attributes.oversample; }, + new scrollBox(global.SURFACE_OVERSAMPLE, function(val) { + attributes.oversample = val; + triggerRender(); + }, false)]); + } + + function attribute_auto_execute(label = false) { + attributes.auto_exe = false; + if(label) array_push(attributeEditors, "Node"); + array_push(attributeEditors, ["Auto execute", function() { return attributes.auto_exe; }, + new checkBox(function() { + attributes.auto_exe = !attributes.auto_exe; + })]); + } +#endregion \ No newline at end of file diff --git a/scripts/node_attributes/node_attributes.yy b/scripts/node_attributes/node_attributes.yy new file mode 100644 index 000000000..ab6934363 --- /dev/null +++ b/scripts/node_attributes/node_attributes.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_attributes", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "__base__", + "path": "folders/nodes/data/__base__.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_blend/node_blend.gml b/scripts/node_blend/node_blend.gml index 1227b0c9c..c3a19d5b2 100644 --- a/scripts/node_blend/node_blend.gml +++ b/scripts/node_blend/node_blend.gml @@ -24,7 +24,7 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Background", "Forground", "Mask", "Maximum", "Constant" ]) .rejectArray(); - inputs[| 7] = nodeValue("Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 7] = nodeValue("Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 8] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); diff --git a/scripts/node_blinker/node_blinker.gml b/scripts/node_blinker/node_blinker.gml index bab58b40b..26b078b9a 100644 --- a/scripts/node_blinker/node_blinker.gml +++ b/scripts/node_blinker/node_blinker.gml @@ -10,10 +10,10 @@ function Node_Blinker(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 3] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); - inputs[| 4] = nodeValue("Target Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 4] = nodeValue("Target Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); - inputs[| 5] = nodeValue("Light Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 5] = nodeValue("Light Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 6] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); diff --git a/scripts/node_cache_array/node_cache_array.gml b/scripts/node_cache_array/node_cache_array.gml index f459b58e9..9705fc1c6 100644 --- a/scripts/node_cache_array/node_cache_array.gml +++ b/scripts/node_cache_array/node_cache_array.gml @@ -32,7 +32,7 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru cache_result[cache_loading_progress] = true; cache_loading_progress++; - if(cache_loading_progress == array_length(cache_content) || !is_struct(cache_content[cache_loading_progress])) { + if(cache_loading_progress == array_length(cache_content)) { cache_loading = false; update(); } @@ -41,12 +41,15 @@ function Node_Cache_Array(_x, _y, _group = noone) : Node(_x, _y, _group) constru static update = function() { var ss = []; - var str = inputs[| 1].getValue() - 1; - var lst = inputs[| 2].getValue() - 1; + var str = inputs[| 1].getValue(); + var lst = inputs[| 2].getValue(); var stp = inputs[| 3].getValue(); - if(str == -1) str = 0; - if(lst == -1) lst = PROJECT.animator.frames_total; + if(str < 0) str = 1; + if(lst < 0) lst = PROJECT.animator.frames_total; + + str -= 1; + lst -= 1; if(PROJECT.animator.current_frame < str) return; if(PROJECT.animator.current_frame > lst) return; diff --git a/scripts/node_canvas/node_canvas.gml b/scripts/node_canvas/node_canvas.gml index 645613e29..05c285a0e 100644 --- a/scripts/node_canvas/node_canvas.gml +++ b/scripts/node_canvas/node_canvas.gml @@ -3,7 +3,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor color = COLORS.node_blend_canvas; preview_channel = 1; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); @@ -28,7 +28,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor inputs[| 9] = nodeValue("Background alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1.) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); - inputs[| 10] = nodeValue("Render background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + inputs[| 10] = nodeValue("Render background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); inputs[| 11] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); @@ -683,9 +683,6 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor } surface_reset_shader(); - if(_bgr && is_surface(_bg)) - draw_surface_ext(_bg, _x, _y, _s, _s, 0, c_white, _bga); - if(!isNotUsingTool()) { if(isUsingTool("Selection")) { if(is_selected) { diff --git a/scripts/node_checkerboard/node_checkerboard.gml b/scripts/node_checkerboard/node_checkerboard.gml index b1f995f3e..c8c1e3216 100644 --- a/scripts/node_checkerboard/node_checkerboard.gml +++ b/scripts/node_checkerboard/node_checkerboard.gml @@ -10,7 +10,7 @@ function Node_Checker(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c uniform_col1 = shader_get_uniform(shader, "col1"); uniform_col2 = shader_get_uniform(shader, "col2"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2) diff --git a/scripts/node_color_adjustment/node_color_adjustment.gml b/scripts/node_color_adjustment/node_color_adjustment.gml index 64bc0e56c..02ee38128 100644 --- a/scripts/node_color_adjustment/node_color_adjustment.gml +++ b/scripts/node_color_adjustment/node_color_adjustment.gml @@ -52,7 +52,7 @@ function Node_Color_adjust(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro inputs[| 12] = nodeValue("Input Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Surface", "Color" ]); - inputs[| 13] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 13] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette) .setVisible(true, true); diff --git a/scripts/node_color_remove/node_color_remove.gml b/scripts/node_color_remove/node_color_remove.gml index e0a93471a..c9a0aaf0b 100644 --- a/scripts/node_color_remove/node_color_remove.gml +++ b/scripts/node_color_remove/node_color_remove.gml @@ -10,7 +10,7 @@ function Node_Color_Remove(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) + inputs[| 1] = nodeValue("Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 2] = nodeValue("Threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) diff --git a/scripts/node_color_replacement/node_color_replacement.gml b/scripts/node_color_replacement/node_color_replacement.gml index 523b84eee..6e6a6b798 100644 --- a/scripts/node_color_replacement/node_color_replacement.gml +++ b/scripts/node_color_replacement/node_color_replacement.gml @@ -14,10 +14,10 @@ function Node_Color_replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr uniform_hrd = shader_get_uniform(shader, "hardReplace"); inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Palette from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ], "Color to be replaced.") + inputs[| 1] = nodeValue("Palette from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE, "Color to be replaced.") .setDisplay(VALUE_DISPLAY.palette); - inputs[| 2] = nodeValue("Palette to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ], "Palette to be replaced to.") + inputs[| 2] = nodeValue("Palette to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE, "Palette to be replaced to.") .setDisplay(VALUE_DISPLAY.palette); inputs[| 3] = nodeValue("Threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) diff --git a/scripts/node_composite/node_composite.gml b/scripts/node_composite/node_composite.gml index 8daf63650..1518a2f07 100644 --- a/scripts/node_composite/node_composite.gml +++ b/scripts/node_composite/node_composite.gml @@ -26,7 +26,7 @@ function Node_Composite(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) inputs[| 1] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, COMPOSE_OUTPUT_SCALING.first) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "First surface", "Largest surface", "Constant" ]); - inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector) .setVisible(false); diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index c9c48344a..ea0ee6b8d 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -475,6 +475,15 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x return nodes; } + static isTerminal = function() { + for( var i = 0; i < ds_list_size(outputs); i++ ) { + var _to = outputs[| i].getJunctionTo(); + if(array_length(_to)) return false; + } + + return true; + } + static onInspect = function() {} static setRenderStatus = function(result) { @@ -1061,11 +1070,6 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x static drawAnimationTimeline = function(_w, _h, _s) {} - static getPreviewValue = function() { - if(preview_channel > ds_list_size(outputs)) return noone; - return outputs[| preview_channel]; - } - static enable = function() { active = true; } static disable = function() { active = false; } @@ -1336,8 +1340,13 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x } } + static getPreviewValue = function() { + if(preview_channel > ds_list_size(outputs)) return noone; + return outputs[| preview_channel]; + } + static getPreviewBoundingBox = function() { - var _node = outputs[| preview_channel]; + var _node = getPreviewValue(); if(_node.type != VALUE_TYPE.surface) return noone; var _surf = _node.getValue(); @@ -1497,10 +1506,15 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x if(APPENDING) _group = GetAppendID(_group); if(ds_map_exists(PROJECT.nodeMap, _group)) { - PROJECT.nodeMap[? _group].add(self); + if(struct_has(PROJECT.nodeMap[? _group], "add")) + PROJECT.nodeMap[? _group].add(self); + else { + var txt = $"Group load failed. Node ID {_group} is not a group."; + throw(txt); + } } else { - var txt = "Group load failed. Can't find node ID " + string(_group); - log_warning("LOAD", txt); + var txt = $"Group load failed. Can't find node ID {_group}"; + throw(txt); } } } diff --git a/scripts/node_dither/node_dither.gml b/scripts/node_dither/node_dither.gml index 89bcdff3d..10eed8ba4 100644 --- a/scripts/node_dither/node_dither.gml +++ b/scripts/node_dither/node_dither.gml @@ -17,7 +17,7 @@ function Node_Dither(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co name = "Dither"; inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 2] = nodeValue("Pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) diff --git a/scripts/node_dust/node_dust.gml b/scripts/node_dust/node_dust.gml index f2b27ee82..e0b95f840 100644 --- a/scripts/node_dust/node_dust.gml +++ b/scripts/node_dust/node_dust.gml @@ -79,7 +79,7 @@ function __Dust(x, y, size = 8) constructor { function Node_Dust(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { name = "Dust"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); diff --git a/scripts/node_fluid_domain/node_fluid_domain.gml b/scripts/node_fluid_domain/node_fluid_domain.gml index 979019a55..52d0ab6ed 100644 --- a/scripts/node_fluid_domain/node_fluid_domain.gml +++ b/scripts/node_fluid_domain/node_fluid_domain.gml @@ -6,7 +6,7 @@ function Node_Fluid_Domain(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group) min_h = 128; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Collision", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); diff --git a/scripts/node_fluid_render/node_fluid_render.gml b/scripts/node_fluid_render/node_fluid_render.gml index 8b764ca3b..61f0d932e 100644 --- a/scripts/node_fluid_render/node_fluid_render.gml +++ b/scripts/node_fluid_render/node_fluid_render.gml @@ -7,7 +7,7 @@ function Node_Fluid_Render(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group) inputs[| 0] = nodeValue("Fluid Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone) .setVisible(true, true); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Interpolate", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); diff --git a/scripts/node_functions/node_functions.gml b/scripts/node_functions/node_functions.gml index 6816e70d7..dba51397d 100644 --- a/scripts/node_functions/node_functions.gml +++ b/scripts/node_functions/node_functions.gml @@ -1,5 +1,8 @@ -#macro def_surf_size PREF_MAP[? "default_surface_side"] -#macro def_surf_size2 [PREF_MAP[? "default_surface_side"], PREF_MAP[? "default_surface_side"]] +#macro DEF_SURF_W PROJECT.attributes.surface_dimension[0] +#macro DEF_SURF_H PROJECT.attributes.surface_dimension[1] +#macro DEF_SURF PROJECT.attributes.surface_dimension + +#macro DEF_PALETTE PROJECT.attributes.palette #region function node_draw_transform_init() { @@ -136,7 +139,107 @@ } #endregion -#region utilities +#region node function + function nodeLoad(_data, scale = false, _group = PANEL_GRAPH.getCurrentContext()) { + if(!is_struct(_data)) return; + + var _x = _data.x; + var _y = _data.y; + var _type = _data.type; + + var _node = nodeBuild(_type, _x, _y, _group); + if(_node) _node.deserialize(_data, scale); + + return _node; + } + + function nodeDelete(node, _merge = false) { + var list = node.group == noone? PROJECT.nodes : node.group.getNodeList(); + ds_list_remove(list, node); + node.destroy(_merge); + + recordAction(ACTION_TYPE.node_delete, node); + PANEL_ANIMATION.updatePropertyList(); + } + + function nodeCleanUp() { + var key = ds_map_find_first(PROJECT.nodeMap); + repeat(ds_map_size(PROJECT.nodeMap)) { + if(PROJECT.nodeMap[? key]) { + PROJECT.nodeMap[? key].active = false; + PROJECT.nodeMap[? key].cleanUp(); + delete PROJECT.nodeMap[? key]; + } + key = ds_map_find_next(PROJECT.nodeMap, key); + } + + ds_map_clear(APPEND_MAP); + } + + function graphFocusNode(node) { + PANEL_INSPECTOR.setInspecting(node); + ds_list_clear(PANEL_GRAPH.nodes_select_list); + PANEL_GRAPH.node_focus = node; + PANEL_GRAPH.fullView(); + } + + function refreshNodeMap() { + ds_map_clear(PROJECT.nodeNameMap); + var key = ds_map_find_first(PROJECT.nodeMap); + var amo = ds_map_size(PROJECT.nodeMap); + + repeat(amo) { + var node = PROJECT.nodeMap[? key]; + + if(node.internalName != "") + PROJECT.nodeNameMap[? node.internalName] = node; + + key = ds_map_find_next(PROJECT.nodeMap, key); + } + } + + function nodeGetData(str) { + str = string_trim(str); + var strs = string_splice(str, "."); + + if(array_length(strs) == 0) return 0; + + if(array_length(strs) == 1) { + var splt = string_splice(strs[0], "["); + var inp = PROJECT.globalNode.getInput(strs[0]); + return inp == noone? 0 : inp.getValueRecursive()[0]; + } else if(string_lower(strs[0]) == "project") { + if(!ds_map_exists(PROJECT_VARIABLES, strs[1])) return 0; + return PROJECT_VARIABLES[? strs[1]](); + } else if(array_length(strs) > 2) { + var key = strs[0]; + if(!ds_map_exists(PROJECT.nodeNameMap, key)) return 0; + + var node = PROJECT.nodeNameMap[? key]; + var map = noone; + switch(string_lower(strs[1])) { + case "inputs" : + case "input" : + map = node.inputMap; + break; + case "outputs" : + case "output" : + map = node.outputMap; + break; + default : return 0; + } + + var _junc_key = string_lower(strs[2]); + var _junc = ds_map_try_get(map, _junc_key, noone); + + if(_junc == noone) return 0; + + return _junc.getValue(); + } + + return 0; + } + function create_preview_window(node) { if(node == noone) return; var win = new Panel_Preview_Window(); diff --git a/scripts/node_gradient/node_gradient.gml b/scripts/node_gradient/node_gradient.gml index 6f5053fab..cd80d14a3 100644 --- a/scripts/node_gradient/node_gradient.gml +++ b/scripts/node_gradient/node_gradient.gml @@ -15,7 +15,7 @@ function Node_Gradient(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) uniform_radius = shader_get_uniform(shader, "radius"); uniform_radius_shf = shader_get_uniform(shader, "shift"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ); @@ -31,7 +31,7 @@ function Node_Gradient(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) inputs[| 5] = nodeValue("Shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) .setDisplay(VALUE_DISPLAY.slider, [-2, 2, 0.01]); - inputs[| 6] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [def_surf_size / 2, def_surf_size / 2]) + inputs[| 6] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [DEF_SURF_W / 2, DEF_SURF_H / 2]) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); diff --git a/scripts/node_gradient_palette/node_gradient_palette.gml b/scripts/node_gradient_palette/node_gradient_palette.gml index fedbe5d62..dfa59c626 100644 --- a/scripts/node_gradient_palette/node_gradient_palette.gml +++ b/scripts/node_gradient_palette/node_gradient_palette.gml @@ -4,7 +4,7 @@ function Node_Gradient_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y, w = 96; - inputs[| 0] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ] ) + inputs[| 0] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette) .setVisible(true, true); diff --git a/scripts/node_gradient_points/node_gradient_points.gml b/scripts/node_gradient_points/node_gradient_points.gml index fd80490e2..64d8988f5 100644 --- a/scripts/node_gradient_points/node_gradient_points.gml +++ b/scripts/node_gradient_points/node_gradient_points.gml @@ -6,7 +6,7 @@ function Node_Gradient_Points(_x, _y, _group = noone) : Node_Processor(_x, _y, _ uniform_cen = shader_get_uniform(shader, "center"); uniform_col = shader_get_uniform(shader, "color"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Center 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) @@ -14,24 +14,24 @@ function Node_Gradient_Points(_x, _y, _group = noone) : Node_Processor(_x, _y, _ .setUnitRef(function(index) { return getDimension(index); }); inputs[| 2] = nodeValue("Color 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); - inputs[| 3] = nodeValue("Center 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] ) + inputs[| 3] = nodeValue("Center 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W, 0 ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); inputs[| 4] = nodeValue("Color 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); - inputs[| 5] = nodeValue("Center 3", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] ) + inputs[| 5] = nodeValue("Center 3", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, DEF_SURF_H ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); inputs[| 6] = nodeValue("Color 3", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); - inputs[| 7] = nodeValue("Center 4", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] ) + inputs[| 7] = nodeValue("Center 4", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); inputs[| 8] = nodeValue("Color 4", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); inputs[| 9] = nodeValue("Use palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); - inputs[| 10] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ] ) + inputs[| 10] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); diff --git a/scripts/node_gradient_replace/node_gradient_replace.gml b/scripts/node_gradient_replace/node_gradient_replace.gml index 139212d62..ff6703174 100644 --- a/scripts/node_gradient_replace/node_gradient_replace.gml +++ b/scripts/node_gradient_replace/node_gradient_replace.gml @@ -7,10 +7,10 @@ function Node_Gradient_Replace_Color(_x, _y, _group = noone) : Node_Processor(_x inputs[| 0] = nodeValue("Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) ) .setVisible(true, true); - inputs[| 1] = nodeValue("Color from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) + inputs[| 1] = nodeValue("Color from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); - inputs[| 2] = nodeValue("Color to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) + inputs[| 2] = nodeValue("Color to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 3] = nodeValue("Threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) diff --git a/scripts/node_grid/node_grid.gml b/scripts/node_grid/node_grid.gml index 2a431b6a3..e9677de6e 100644 --- a/scripts/node_grid/node_grid.gml +++ b/scripts/node_grid/node_grid.gml @@ -18,7 +18,7 @@ function Node_Grid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); uniform_col_gap = shader_get_uniform(shader, "gapCol"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_grid_hex/node_grid_hex.gml b/scripts/node_grid_hex/node_grid_hex.gml index f4aa1ce18..d42326004 100644 --- a/scripts/node_grid_hex/node_grid_hex.gml +++ b/scripts/node_grid_hex/node_grid_hex.gml @@ -16,7 +16,7 @@ function Node_Grid_Hex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); uniform_col_gap = shader_get_uniform(shader, "gapCol"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_grid_tri/node_grid_tri.gml b/scripts/node_grid_tri/node_grid_tri.gml index c0daaf2db..6804add30 100644 --- a/scripts/node_grid_tri/node_grid_tri.gml +++ b/scripts/node_grid_tri/node_grid_tri.gml @@ -16,7 +16,7 @@ function Node_Grid_Tri(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); uniform_col_gap = shader_get_uniform(shader, "gapCol"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_guide/node_guide.yy b/scripts/node_guide/node_guide.yy index 7f1d9aef2..ec445b3f2 100644 --- a/scripts/node_guide/node_guide.yy +++ b/scripts/node_guide/node_guide.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "data", - "path": "folders/nodes/data.yy", + "name": "__base__", + "path": "folders/nodes/data/__base__.yy", }, } \ No newline at end of file diff --git a/scripts/node_line/node_line.gml b/scripts/node_line/node_line.gml index edbf8b2c8..d2d4835d0 100644 --- a/scripts/node_line/node_line.gml +++ b/scripts/node_line/node_line.gml @@ -1,7 +1,7 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Line"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); diff --git a/scripts/node_lua_surface/node_lua_surface.gml b/scripts/node_lua_surface/node_lua_surface.gml index dacf0c5a6..1ec8788c4 100644 --- a/scripts/node_lua_surface/node_lua_surface.gml +++ b/scripts/node_lua_surface/node_lua_surface.gml @@ -4,7 +4,7 @@ function Node_Lua_Surface(_x, _y, _group = noone) : Node(_x, _y, _group) constru inputs[| 0] = nodeValue("Function name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "render" + string(irandom_range(100000, 999999))); - inputs[| 1] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ def_surf_size, def_surf_size ]) + inputs[| 1] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Lua code", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "", o_dialog_lua_reference) diff --git a/scripts/node_noise/node_noise.gml b/scripts/node_noise/node_noise.gml index 371a4a9e6..9fd306471 100644 --- a/scripts/node_noise/node_noise.gml +++ b/scripts/node_noise/node_noise.gml @@ -1,7 +1,7 @@ function Node_Noise(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999)); diff --git a/scripts/node_noise_ani/node_noise_ani.gml b/scripts/node_noise_ani/node_noise_ani.gml index 425e54f8f..6cdc1577d 100644 --- a/scripts/node_noise_ani/node_noise_ani.gml +++ b/scripts/node_noise_ani/node_noise_ani.gml @@ -7,7 +7,7 @@ function Node_Noise_Aniso(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou uniform_pos = shader_get_uniform(shader, "position"); uniform_ang = shader_get_uniform(shader, "angle"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 2, 16 ]) diff --git a/scripts/node_noise_cell/node_noise_cell.gml b/scripts/node_noise_cell/node_noise_cell.gml index 8f55dcbf7..a8826f439 100644 --- a/scripts/node_noise_cell/node_noise_cell.gml +++ b/scripts/node_noise_cell/node_noise_cell.gml @@ -1,10 +1,10 @@ function Node_Cellular(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Cellular Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); - inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2]) + inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2]) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); diff --git a/scripts/node_noise_fbm/node_noise_fbm.gml b/scripts/node_noise_fbm/node_noise_fbm.gml index 00ea2de8f..b8d456412 100644 --- a/scripts/node_noise_fbm/node_noise_fbm.gml +++ b/scripts/node_noise_fbm/node_noise_fbm.gml @@ -1,7 +1,7 @@ function Node_Noise_FBM(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "FBM Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(10000, 99999)); diff --git a/scripts/node_noise_grid/node_noise_grid.gml b/scripts/node_noise_grid/node_noise_grid.gml index 9eaf6cb7a..a6399d9d6 100644 --- a/scripts/node_noise_grid/node_noise_grid.gml +++ b/scripts/node_noise_grid/node_noise_grid.gml @@ -1,7 +1,7 @@ function Node_Grid_Noise(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Grid Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_noise_grid_hex/node_noise_grid_hex.gml b/scripts/node_noise_grid_hex/node_noise_grid_hex.gml index af17884c9..51f248b65 100644 --- a/scripts/node_noise_grid_hex/node_noise_grid_hex.gml +++ b/scripts/node_noise_grid_hex/node_noise_grid_hex.gml @@ -11,7 +11,7 @@ function Node_Noise_Hex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) uniform_sam = shader_get_uniform(shader, "useSampler"); uniform_samTyp = shader_get_uniform(shader, "sampleMode"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999)); diff --git a/scripts/node_noise_grid_tri/node_noise_grid_tri.gml b/scripts/node_noise_grid_tri/node_noise_grid_tri.gml index a848a11d2..69f1ef6ae 100644 --- a/scripts/node_noise_grid_tri/node_noise_grid_tri.gml +++ b/scripts/node_noise_grid_tri/node_noise_grid_tri.gml @@ -11,7 +11,7 @@ function Node_Noise_Tri(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) uniform_sam = shader_get_uniform(shader, "useSampler"); uniform_samTyp = shader_get_uniform(shader, "sampleMode"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(99999)); diff --git a/scripts/node_noise_simplex/node_noise_simplex.gml b/scripts/node_noise_simplex/node_noise_simplex.gml index 69fdc6e22..129e79613 100644 --- a/scripts/node_noise_simplex/node_noise_simplex.gml +++ b/scripts/node_noise_simplex/node_noise_simplex.gml @@ -1,7 +1,7 @@ function Node_Noise_Simplex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Simplex Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, 0, 0] ) diff --git a/scripts/node_padding/node_padding.gml b/scripts/node_padding/node_padding.gml index f634c8fd7..121757bfc 100644 --- a/scripts/node_padding/node_padding.gml +++ b/scripts/node_padding/node_padding.gml @@ -19,7 +19,7 @@ function Node_Padding(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 5] = nodeValue("Pad mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Pad out", "Pad to size" ]); - inputs[| 6] = nodeValue("Target dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 6] = nodeValue("Target dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector) inputs[| 7] = nodeValue("Horizontal alignment", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) diff --git a/scripts/node_palette/node_palette.gml b/scripts/node_palette/node_palette.gml index 1e301e932..a2a356827 100644 --- a/scripts/node_palette/node_palette.gml +++ b/scripts/node_palette/node_palette.gml @@ -4,7 +4,7 @@ function Node_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c w = 96; - inputs[| 0] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 0] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE) .setDisplay(VALUE_DISPLAY.palette); inputs[| 1] = nodeValue("Trim range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ]) diff --git a/scripts/node_palette_replacement/node_palette_replacement.gml b/scripts/node_palette_replacement/node_palette_replacement.gml index d066b4c1d..80c9af113 100644 --- a/scripts/node_palette_replacement/node_palette_replacement.gml +++ b/scripts/node_palette_replacement/node_palette_replacement.gml @@ -3,14 +3,14 @@ function Node_Palette_Replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _ w = 96; - inputs[| 0] = nodeValue("Palette in", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ] ) + inputs[| 0] = nodeValue("Palette in", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette) .setVisible(true, true); - inputs[| 1] = nodeValue("Palette from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ] ) + inputs[| 1] = nodeValue("Palette from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); - inputs[| 2] = nodeValue("Palette to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 2] = nodeValue("Palette to", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 3] = nodeValue("Threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) diff --git a/scripts/node_palette_shift/node_palette_shift.gml b/scripts/node_palette_shift/node_palette_shift.gml index aeac18ab1..5fed13fb8 100644 --- a/scripts/node_palette_shift/node_palette_shift.gml +++ b/scripts/node_palette_shift/node_palette_shift.gml @@ -3,7 +3,7 @@ function Node_Palette_Shift(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) + inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE) .setDisplay(VALUE_DISPLAY.palette); inputs[| 2] = nodeValue("Shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) diff --git a/scripts/node_palette_sort/node_palette_sort.gml b/scripts/node_palette_sort/node_palette_sort.gml index 88e1cccc0..966bb5d16 100644 --- a/scripts/node_palette_sort/node_palette_sort.gml +++ b/scripts/node_palette_sort/node_palette_sort.gml @@ -4,7 +4,7 @@ function Node_Palette_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constr w = 96; - inputs[| 0] = nodeValue("Palette in", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, []) + inputs[| 0] = nodeValue("Palette in", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette) .setVisible(true, true); diff --git a/scripts/node_particle/node_particle.gml b/scripts/node_particle/node_particle.gml index b790f188f..0ad850ae2 100644 --- a/scripts/node_particle/node_particle.gml +++ b/scripts/node_particle/node_particle.gml @@ -4,7 +4,7 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _ inputs[| 3].setDisplay(VALUE_DISPLAY.area, function() { return inputs[| input_len + 0].getValue(); }); - inputs[| input_len + 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| input_len + 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| input_len + 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering."); diff --git a/scripts/node_path_l_system/node_path_l_system.gml b/scripts/node_path_l_system/node_path_l_system.gml index 1f3115ae8..eafdc4931 100644 --- a/scripts/node_path_l_system/node_path_l_system.gml +++ b/scripts/node_path_l_system/node_path_l_system.gml @@ -20,7 +20,7 @@ function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) const inputs[| 1] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 45) .setDisplay(VALUE_DISPLAY.rotation); - inputs[| 2] = nodeValue("Starting position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2 ]) + inputs[| 2] = nodeValue("Starting position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2 ]) .setDisplay(VALUE_DISPLAY.vector); inputs[| 3] = nodeValue("Iteration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); diff --git a/scripts/node_path_plot/node_path_plot.gml b/scripts/node_path_plot/node_path_plot.gml index 6d75ad968..ee1291d40 100644 --- a/scripts/node_path_plot/node_path_plot.gml +++ b/scripts/node_path_plot/node_path_plot.gml @@ -18,7 +18,7 @@ function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) construct inputs[| 3] = nodeValue("0 function", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, ""); inputs[| 4] = nodeValue("1 function", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, ""); - inputs[| 5] = nodeValue("Origin", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2 ] ) + inputs[| 5] = nodeValue("Origin", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2 ] ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 6] = nodeValue("Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ]) diff --git a/scripts/node_pb/node_checkerboard.yy b/scripts/node_pb/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb/node_pb.gml b/scripts/node_pb/node_pb.gml new file mode 100644 index 000000000..06f7b796d --- /dev/null +++ b/scripts/node_pb/node_pb.gml @@ -0,0 +1,29 @@ +function Node_PB(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "PB Element"; + icon = THEME.pixel_builder; + fullUpdate = true; + + w = 128; + h = 128; + min_h = h; + + static getNextNodesRaw = getNextNodes; + + static getNextNodes = function() { + if(!struct_has(group, "checkComplete")) return []; + + for( var i = 0; i < ds_list_size(outputs); i++ ) { + var _ot = outputs[| i]; + var _tos = _ot.getJunctionTo(); + + if(array_length(_tos) > 0) + return getNextNodesRaw(); + } + + return group.checkComplete(); + } + + static getPreviewValue = function() { + return group.outputs[| 0]; + } +} \ No newline at end of file diff --git a/scripts/node_pb/node_pb.yy b/scripts/node_pb/node_pb.yy new file mode 100644 index 000000000..8f47ba6b8 --- /dev/null +++ b/scripts/node_pb/node_pb.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/data/pixel builder.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb/node_stripe.yy b/scripts/node_pb/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_box/node_checkerboard.yy b/scripts/node_pb_box/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_box/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_box/node_pb_box.gml b/scripts/node_pb_box/node_pb_box.gml new file mode 100644 index 000000000..bdff3fa0a --- /dev/null +++ b/scripts/node_pb_box/node_pb_box.gml @@ -0,0 +1,5 @@ +function Node_PB_Box(_x, _y, _group = noone) : Node_PB(_x, _y, _group) constructor { + name = "PB Box"; + + inputs[| 0] = nodeValue("Layer Shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) +} \ No newline at end of file diff --git a/scripts/node_pb_box/node_pb_box.yy b/scripts/node_pb_box/node_pb_box.yy new file mode 100644 index 000000000..54bd1dfec --- /dev/null +++ b/scripts/node_pb_box/node_pb_box.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box/node_stripe.yy b/scripts/node_pb_box/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_box/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_box_contract/node_pb_box_contract.gml b/scripts/node_pb_box_contract/node_pb_box_contract.gml new file mode 100644 index 000000000..f9c2be419 --- /dev/null +++ b/scripts/node_pb_box_contract/node_pb_box_contract.gml @@ -0,0 +1,144 @@ +function Node_PB_Box_Contract(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Split"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Ratio", "Fix" ]); + + inputs[| 3] = nodeValue("Ratio", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 4] = nodeValue("Fix Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 ) + + inputs[| 5] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, [ "X", "Y" ]); + + outputs[| 0] = nodeValue("pBox Center", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + outputs[| 1] = nodeValue("pBox Side", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + input_display_list = [ 0, 1, + ["Split", false], 5, 2, 3, 4, + ] + + static step = function() { + var _typ = current_data[2]; + var _axs = current_data[5]; + + inputs[| 3].setVisible(_typ == 0); + inputs[| 4].setVisible(_typ != 0); + + if(_axs == 0) inputs[| 4].name = "Fix Width"; + else inputs[| 4].name = "Fix Height"; + } + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _b0 = outputs[| 0].getValue(); + var _b1 = outputs[| 1].getValue(); + + for( var i = 0; i < array_length(_b1); i++ ) { + var _b1x0 = _x + _b1[i].x * _s; + var _b1y0 = _y + _b1[i].y * _s; + var _b1x1 = _b1x0 + _b1[i].w * _s; + var _b1y1 = _b1y0 + _b1[i].h * _s; + + draw_set_color(c_red); + draw_rectangle(_b1x0, _b1y0, _b1x1, _b1y1, true); + } + + var _b0x0 = _x + _b0.x * _s; + var _b0y0 = _y + _b0.y * _s; + var _b0x1 = _b0x0 + _b0.w * _s; + var _b0y1 = _b0y0 + _b0.h * _s; + + draw_set_color(c_blue); + draw_rectangle(_b0x0, _b0y0, _b0x1, _b0y1, true); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _type = _data[2]; + var _rati = _data[3]; + var _fixx = _data[4]; + var _axis = _data[5]; + + if(_pbox == noone) return noone; + + if(_axis == 0) { + var _w; + + switch(_type) { + case 0 : _w = round(_pbox.w * _rati); break; + case 1 : _w = _fixx; break; + } + + if(_output_index == 0) { + _pbox = _pbox.clone(); + _pbox.layer += _layr; + + _pbox.x += (_pbox.w - _w) / 2; + _pbox.w = _w; + } else if(_output_index == 1) { + _pbox = [ _pbox.clone(), _pbox.clone() ]; + _pbox[0].layer += _layr; + _pbox[1].layer += _layr; + + _pbox[1].x += _w + (_pbox[0].w - _w) / 2; + + _pbox[0].w = (_pbox[0].w - _w) / 2; + _pbox[1].w = (_pbox[1].w - _w) / 2; + + _pbox[1].mirror_h = !_pbox[1].mirror_h; + } + } else { + var _h; + + switch(_type) { + case 0 : _h = round(_pbox.h * _rati); break; + case 1 : _h = _fixx; break; + } + + if(_output_index == 0) { + _pbox = _pbox.clone(); + _pbox.layer += _layr; + + _pbox.y += (_pbox.h - _h) / 2; + _pbox.h = _h; + } else if(_output_index == 1) { + _pbox = [ _pbox.clone(), _pbox.clone() ]; + _pbox[0].layer += _layr; + _pbox[1].layer += _layr; + + _pbox[1].y += _h + (_pbox[0].h - _h) / 2; + + _pbox[0].h = (_pbox[0].h - _h) / 2; + _pbox[1].h = (_pbox[1].h - _h) / 2; + + _pbox[1].mirror_v = !_pbox[1].mirror_v; + } + } + + return _pbox; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var _axs = current_data[5]; + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + if(_axs == 0) { + draw_line(bbox.x0 + 16, bbox.y0, bbox.x0 + 16, bbox.y1); + draw_line(bbox.x1 - 16, bbox.y0, bbox.x1 - 16, bbox.y1); + } else { + draw_line(bbox.x0, bbox.y0 + 16, bbox.x1, bbox.y0 + 16); + draw_line(bbox.x0, bbox.y1 - 16, bbox.x1, bbox.y1 - 16); + } + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_contract/node_pb_box_contract.yy b/scripts/node_pb_box_contract/node_pb_box_contract.yy new file mode 100644 index 000000000..9e65bbbcd --- /dev/null +++ b/scripts/node_pb_box_contract/node_pb_box_contract.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_contract", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_divide/node_pb_box_divide.gml b/scripts/node_pb_box_divide/node_pb_box_divide.gml new file mode 100644 index 000000000..6524f417c --- /dev/null +++ b/scripts/node_pb_box_divide/node_pb_box_divide.gml @@ -0,0 +1,160 @@ +function Node_PB_Box_Divide(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Divide"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2 ); + + inputs[| 3] = nodeValue("Spacing", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ); + + inputs[| 4] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, [ "X", "Y" ]); + + inputs[| 5] = nodeValue("Mirror", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0 ) + + inputs[| 6] = nodeValue("Spacing", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Space Between", "Space Around", "Begin", "End" ]); + + outputs[| 0] = nodeValue("pBox Content", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, [ noone ] ); + + outputs[| 1] = nodeValue("pBox Space", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, [ noone ] ); + + input_display_list = [ 0, 1, + ["Divide", false], 4, 2, 3, 6, 5, + ] + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _bs = outputs[| 0].getValue(); + if(_bs == noone) return; + if(!is_array(_bs)) return; + + for( var i = 0; i < array_length(_bs); i++ ) { + var _b = _bs[i]; + if(_b == noone) continue; + var _bx0 = _x + _b.x * _s; + var _by0 = _y + _b.y * _s; + var _bx1 = _bx0 + _b.w * _s; + var _by1 = _by0 + _b.h * _s; + + draw_set_color(c_red); + draw_rectangle(_bx0, _by0, _bx1, _by1, true); + } + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _amou = _data[2]; + var _spac = _data[3]; + var _axis = _data[4]; + var _mirr = _data[5]; + var _spacing = _data[6]; + + if(_pbox == noone) return noone; + if(_amou < 1) return noone; + + var _res = noone; + + if(_output_index == 0) + _res = array_create(_amou); + else if(_output_index == 1) + _res = array_create(_amou - 1); + + var _spAmo = _amou; + switch(_spacing) { + case 0 : _spAmo = _amou - 1; break; + case 1 : _spAmo = _amou + 1; break; + case 2 : _spAmo = _amou; break; + case 3 : _spAmo = _amou; break; + } + + if(_axis == 0) { + var _ww = (_pbox.w - _spac * _spAmo) / _amou; + + if(_output_index == 0) + for( var i = 0; i < _amou; i++ ) { + _res[i] = _pbox.clone(); + _res[i].layer += _layr; + + var _sx = _pbox.x; + if(_spacing == 1 || _spacing == 2) + _sx += _spac; + + _res[i].x = _sx + i * (_ww + _spac); + _res[i].w = _ww; + + if(_mirr && i % 2) _res[i].mirror_h = !_res[i].mirror_h; + } + + if(_output_index == 1) + for( var i = 0; i < _spAmo; i++ ) { + _res[i] = _pbox.clone(); + _res[i].layer += _layr; + + var _sx = 0; + if(_spacing == 0 || _spacing == 3) + _sx += _ww + _pbox.x; + + _res[i].x = _sx + i * (_ww + _spac); + _res[i].w = _spac; + } + } else { + var _hh = (_pbox.h - _spac * _spAmo) / _amou; + + if(_output_index == 0) + for( var i = 0; i < _amou; i++ ) { + _res[i] = _pbox.clone(); + _res[i].layer += _layr; + + var _sy = _pbox.y; + if(_spacing == 1 || _spacing == 2) + _sy += _spac; + + _res[i].y = _sy + i * (_hh + _spac); + _res[i].h = _hh; + + if(_mirr && i % 2) _res[i].mirror_v = !_res[i].mirror_v; + } + + if(_output_index == 1) + for( var i = 0; i < _spAmo; i++ ) { + _res[i] = _pbox.clone(); + _res[i].layer += _layr; + + var _sy = 0; + if(_spacing == 0 || _spacing == 3) + _sy += _hh + _pbox.y; + + _res[i].y = _sy + i * (_hh + _spac); + _res[i].h = _spac; + } + } + + return _res; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var _axis = current_data[4]; + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + if(_axis == 0) { + draw_line(lerp(bbox.x0, bbox.x1, 1 / 3) - 2, bbox.y0, lerp(bbox.x0, bbox.x1, 1 / 3) - 2, bbox.y1); + draw_line(lerp(bbox.x0, bbox.x1, 1 / 3) + 2, bbox.y0, lerp(bbox.x0, bbox.x1, 1 / 3) + 2, bbox.y1); + + draw_line(lerp(bbox.x0, bbox.x1, 2 / 3) - 2, bbox.y0, lerp(bbox.x0, bbox.x1, 2 / 3) - 2, bbox.y1); + draw_line(lerp(bbox.x0, bbox.x1, 2 / 3) + 2, bbox.y0, lerp(bbox.x0, bbox.x1, 2 / 3) + 2, bbox.y1); + } else { + draw_line(bbox.x0, lerp(bbox.y0, bbox.y1, 1 / 3) - 2, bbox.x1, lerp(bbox.y0, bbox.y1, 1 / 3) - 2); + draw_line(bbox.x0, lerp(bbox.y0, bbox.y1, 1 / 3) + 2, bbox.x1, lerp(bbox.y0, bbox.y1, 1 / 3) + 2); + + draw_line(bbox.x0, lerp(bbox.y0, bbox.y1, 2 / 3) - 2, bbox.x1, lerp(bbox.y0, bbox.y1, 2 / 3) - 2); + draw_line(bbox.x0, lerp(bbox.y0, bbox.y1, 2 / 3) + 2, bbox.x1, lerp(bbox.y0, bbox.y1, 2 / 3) + 2); + } + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_divide/node_pb_box_divide.yy b/scripts/node_pb_box_divide/node_pb_box_divide.yy new file mode 100644 index 000000000..72e47ec2a --- /dev/null +++ b/scripts/node_pb_box_divide/node_pb_box_divide.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_divide", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.gml b/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.gml new file mode 100644 index 000000000..56f2e8541 --- /dev/null +++ b/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.gml @@ -0,0 +1,87 @@ +function Node_PB_Box_Divide_Grid(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Divide Grid"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 2, 2 ] ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 3] = nodeValue("Spacing", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ); + + inputs[| 4] = nodeValue("Mirror", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0 ) + + outputs[| 0] = nodeValue("pBox", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, [ noone ] ); + + input_display_list = [ 0, 1, + ["Divide", false], 2, 3, 4, + ] + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _bs = outputs[| 0].getValue(); + if(_bs == noone) return; + if(!is_array(_bs)) return; + + for( var i = 0; i < array_length(_bs); i++ ) { + var _b = _bs[i]; + if(_b == noone) continue; + var _bx0 = _x + _b.x * _s; + var _by0 = _y + _b.y * _s; + var _bx1 = _bx0 + _b.w * _s; + var _by1 = _by0 + _b.h * _s; + + draw_set_color(c_red); + draw_rectangle(_bx0, _by0, _bx1, _by1, true); + } + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _amou = _data[2]; + var _spac = _data[3]; + var _mirr = _data[4]; + + if(_pbox == noone) return noone; + + var _amo = _amou[0] * _amou[1]; + if(_amo < 1) return; + + var _res = array_create(_amo); + var _ww = (_pbox.w - _spac * (_amou[0] - 1)) / _amou[0]; + var _hh = (_pbox.h - _spac * (_amou[1] - 1)) / _amou[1]; + + for( var i = 0; i < _amou[1]; i++ ) + for( var j = 0; j < _amou[0]; j++ ) { + var _ind = i * _amou[0] + j; + _res[_ind] = _pbox.clone(); + + _res[_ind].layer += _layr; + + _res[_ind].x = _pbox.x + j * (_ww + _spac); + _res[_ind].w = _ww; + + _res[_ind].y = _pbox.y + i * (_hh + _spac); + _res[_ind].h = _hh; + + if(_mirr && j % 2) _res[_ind].mirror_h = !_res[_ind].mirror_h; + if(_mirr && i % 2) _res[_ind].mirror_v = !_res[_ind].mirror_v; + } + + return _res; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(4); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + draw_rectangle_border(bbox.x0, bbox.y0, bbox.xc - 2, bbox.yc - 2, 1); + draw_rectangle_border(bbox.xc + 2, bbox.y0, bbox.x1, bbox.yc - 2, 1); + draw_rectangle_border(bbox.x0, bbox.yc + 2, bbox.xc - 2, bbox.y1, 1); + draw_rectangle_border(bbox.xc + 2, bbox.yc + 2, bbox.x1, bbox.y1, 1); + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy b/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy new file mode 100644 index 000000000..b82634ea5 --- /dev/null +++ b/scripts/node_pb_box_divide_grid/node_pb_box_divide_grid.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_divide_grid", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_inset/node_pb_box_inset.gml b/scripts/node_pb_box_inset/node_pb_box_inset.gml new file mode 100644 index 000000000..3fb672522 --- /dev/null +++ b/scripts/node_pb_box_inset/node_pb_box_inset.gml @@ -0,0 +1,126 @@ +function Node_PB_Box_Inset(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Inset"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Inset", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 2, 2, 2, 2 ] ) + .setDisplay(VALUE_DISPLAY.padding); + + inputs[| 3] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Padding", "Ratio" ]); + + inputs[| 4] = nodeValue("Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 5] = nodeValue("Height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 6] = nodeValue("Horizontal alignment", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 7] = nodeValue("Vertical alignment", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + outputs[| 0] = nodeValue("pBox Inset", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + outputs[| 1] = nodeValue("pBox Frame", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + input_display_list = [ 0, 1, + ["Inset", false], 3, 2, 4, 5, 6, 7, + ] + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _b0 = outputs[| 0].getValue(); + + var _b0x0 = _x + _b0.x * _s; + var _b0y0 = _y + _b0.y * _s; + var _b0x1 = _b0x0 + _b0.w * _s; + var _b0y1 = _b0y0 + _b0.h * _s; + + draw_set_color(c_red); + draw_rectangle(_b0x0, _b0y0, _b0x1, _b0y1, true); + } + + static step = function() { + var _type = current_data[3]; + + inputs[| 2].setVisible(_type == 0); + inputs[| 4].setVisible(_type == 1); + inputs[| 5].setVisible(_type == 1); + inputs[| 6].setVisible(_type == 1); + inputs[| 7].setVisible(_type == 1); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _inst = _data[2]; + var _type = _data[3]; + var _widt = _data[4]; + var _high = _data[5]; + var _hali = _data[6]; + var _vali = _data[7]; + + if(_pbox == noone) return noone; + + _pbox = _pbox.clone(); + + var x0, y0, w, h; + + if(_type == 0) { + if(_pbox.mirror_h) x0 = _pbox.x + _inst[0]; + else x0 = _pbox.x + _inst[2]; + + if(_pbox.mirror_v) y0 = _pbox.y + _inst[3]; + else y0 = _pbox.y + _inst[1]; + + w = _pbox.w - (_inst[0] + _inst[2]); + h = _pbox.h - (_inst[1] + _inst[3]); + } else if(_type == 1) { + w = round(_pbox.w * _widt); + h = round(_pbox.h * _high); + + x0 = _pbox.x + (_pbox.w - w) * (_pbox.mirror_h? 1. - _hali : _hali); + y0 = _pbox.y + (_pbox.h - h) * (_pbox.mirror_v? 1. - _vali : _vali); + } + + if(_output_index == 0) { + _pbox.layer += _layr; + _pbox.x = x0; + _pbox.y = y0; + _pbox.w = w; + _pbox.h = h; + } else if(_output_index == 1) { + _pbox.mask = surface_create_valid(_pbox.w, _pbox.h); + + var _x = x0 - _pbox.x; + var _y = y0 - _pbox.y; + var _w = w; + var _h = h; + + surface_set_target(_pbox.mask); + draw_clear(c_white); + + draw_set_color(c_white); + BLEND_SUBTRACT + draw_rectangle(_x, _y, _x + _w - 1, _y + _h - 1, false); + BLEND_NORMAL + surface_reset_target(); + } + + return _pbox; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + bbox.pad(8); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 1); + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_inset/node_pb_box_inset.yy b/scripts/node_pb_box_inset/node_pb_box_inset.yy new file mode 100644 index 000000000..511394531 --- /dev/null +++ b/scripts/node_pb_box_inset/node_pb_box_inset.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_inset", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_mirror/node_pb_box_mirror.gml b/scripts/node_pb_box_mirror/node_pb_box_mirror.gml new file mode 100644 index 000000000..3e69693c6 --- /dev/null +++ b/scripts/node_pb_box_mirror/node_pb_box_mirror.gml @@ -0,0 +1,43 @@ +function Node_PB_Box_Mirror(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Mirror"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Horizontal", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + inputs[| 3] = nodeValue("Vertical", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + outputs[| 0] = nodeValue("pBox", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + input_display_list = [ 0, 1, + ["Mirror", false], 2, 3, + ] + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _hori = _data[2]; + var _vert = _data[3]; + + if(_pbox == noone) return noone; + + _pbox = _pbox.clone(); + _pbox.layer += _layr; + + if(_hori) _pbox.mirror_h = !_pbox.mirror_h; + if(_vert) _pbox.mirror_v = !_pbox.mirror_v; + + return _pbox; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_mirror/node_pb_box_mirror.yy b/scripts/node_pb_box_mirror/node_pb_box_mirror.yy new file mode 100644 index 000000000..e944c412a --- /dev/null +++ b/scripts/node_pb_box_mirror/node_pb_box_mirror.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_mirror", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_split/node_pb_box_split.gml b/scripts/node_pb_box_split/node_pb_box_split.gml new file mode 100644 index 000000000..df1aa287e --- /dev/null +++ b/scripts/node_pb_box_split/node_pb_box_split.gml @@ -0,0 +1,153 @@ +function Node_PB_Box_Split(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Split"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Ratio", "Fix Left", "Fix Right" ]); + + inputs[| 3] = nodeValue("Ratio", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 4] = nodeValue("Fix width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 ) + + inputs[| 5] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, [ "X", "Y" ]); + + inputs[| 6] = nodeValue("Mirror", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0 ) + + outputs[| 0] = nodeValue("pBox Left", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + outputs[| 1] = nodeValue("pBox Right", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + input_display_list = [ 0, 1, + ["Split", false], 5, 2, 3, 4, 6, + ] + + static step = function() { + var _typ = current_data[2]; + var _axs = current_data[5]; + + inputs[| 3].setVisible(_typ == 0); + inputs[| 4].setVisible(_typ != 0); + + if(_axs == 0) { + inputs[| 2].editWidget.data_list = [ "Ratio", "Fix Left", "Fix Right" ]; + inputs[| 4].name = "Fix Width"; + } else { + inputs[| 2].editWidget.data_list = [ "Ratio", "Fix Up", "Fix Down" ]; + inputs[| 4].name = "Fix Height"; + } + } + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _b0 = outputs[| 0].getValue(); + var _b1 = outputs[| 1].getValue(); + + if(!is_array(_b0)) _b0 = [ _b0 ]; + if(!is_array(_b1)) _b1 = [ _b1 ]; + + for( var i = 0; i < array_length(_b0); i++ ) { + var _b0x0 = _x + _b0[i].x * _s; + var _b0y0 = _y + _b0[i].y * _s; + var _b0x1 = _b0x0 + _b0[i].w * _s; + var _b0y1 = _b0y0 + _b0[i].h * _s; + + draw_set_color(c_red); + draw_rectangle(_b0x0, _b0y0, _b0x1, _b0y1, true); + } + + for( var i = 0; i < array_length(_b1); i++ ) { + var _b1x0 = _x + _b1[i].x * _s; + var _b1y0 = _y + _b1[i].y * _s; + var _b1x1 = _b1x0 + _b1[i].w * _s; + var _b1y1 = _b1y0 + _b1[i].h * _s; + + draw_set_color(c_blue); + draw_rectangle(_b1x0, _b1y0, _b1x1, _b1y1, true); + } + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _type = _data[2]; + var _rati = _data[3]; + var _fixx = _data[4]; + var _axis = _data[5]; + var _mirr = _data[6]; + + if(_pbox == noone) return noone; + + _pbox = _pbox.clone(); + _pbox.layer += _layr; + + if(_axis == 0) { + var _w; + + switch(_type) { + case 0 : _w = _pbox.w * _rati; break; + case 1 : _w = _fixx; break; + case 2 : _w = _pbox.w - _fixx; break; + } + + if(_pbox.mirror_h) { + _output_index = !_output_index; + _w = _pbox.w - _w; + } + + if(_output_index == 0) { + _pbox.w = round(_w); + } else if(_output_index == 1) { + _w = _pbox.w - _w; + + _pbox.x += _pbox.w - round(_w); + _pbox.w = round(_w); + + if(_mirr) _pbox.mirror_h = !_pbox.mirror_h; + } + } else { + var _h; + + switch(_type) { + case 0 : _h = _pbox.h * _rati; break; + case 1 : _h = _fixx; break; + case 2 : _h = _pbox.h - _fixx; break; + } + + if(_pbox.mirror_v) { + _output_index = !_output_index; + _h = _pbox.h - _h; + } + + if(_output_index == 0) { + _pbox.h = round(_h); + } else if(_output_index == 1) { + _h = _pbox.h - _h; + + _pbox.y += _pbox.h - round(_h); + _pbox.h = round(_h); + + if(_mirr) _pbox.mirror_v = !_pbox.mirror_v; + } + } + + return _pbox; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var _axs = current_data[5]; + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + if(_axs == 0) + draw_line(bbox.xc, bbox.y0, bbox.xc, bbox.y1); + else + draw_line(bbox.x0, bbox.yc, bbox.x1, bbox.yc); + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_split/node_pb_box_split.yy b/scripts/node_pb_box_split/node_pb_box_split.yy new file mode 100644 index 000000000..929351d97 --- /dev/null +++ b/scripts/node_pb_box_split/node_pb_box_split.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_split", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_box_transform/node_pb_box_transform.gml b/scripts/node_pb_box_transform/node_pb_box_transform.gml new file mode 100644 index 000000000..5903d741d --- /dev/null +++ b/scripts/node_pb_box_transform/node_pb_box_transform.gml @@ -0,0 +1,45 @@ +function Node_PB_Box_Transform(_x, _y, _group = noone) : Node_PB_Box(_x, _y, _group) constructor { + name = "Transform"; + + inputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 2] = nodeValue("Translate", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + + outputs[| 0] = nodeValue("pBox", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + input_display_list = [ 0, 1, + ["Translate", false], 2, + ] + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _layr = _data[0]; + var _pbox = _data[1]; + var _tran = _data[2]; + + if(_pbox == noone) return noone; + + _pbox = _pbox.clone(); + _pbox.layer += _layr; + + _pbox.x += _tran[0]; + _pbox.y += _tran[1]; + + return _pbox; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + + } +} \ No newline at end of file diff --git a/scripts/node_pb_box_transform/node_pb_box_transform.yy b/scripts/node_pb_box_transform/node_pb_box_transform.yy new file mode 100644 index 000000000..977c5e4d1 --- /dev/null +++ b/scripts/node_pb_box_transform/node_pb_box_transform.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_box_transform", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw/node_checkerboard.yy b/scripts/node_pb_draw/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw/node_pb_draw.gml b/scripts/node_pb_draw/node_pb_draw.gml new file mode 100644 index 000000000..2218df037 --- /dev/null +++ b/scripts/node_pb_draw/node_pb_draw.gml @@ -0,0 +1,14 @@ +function Node_PB_Draw(_x, _y, _group = noone) : Node_PB(_x, _y, _group) constructor { + name = "PB Draw"; + + inputs[| 0] = nodeValue("pBox", self, JUNCTION_CONNECT.input, VALUE_TYPE.pbBox, noone ) + .setVisible(true, true); + + inputs[| 1] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 2] = nodeValue("Apply Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + outputs[| 1] = nodeValue("pBox", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone); +} \ No newline at end of file diff --git a/scripts/node_pb_draw/node_pb_draw.yy b/scripts/node_pb_draw/node_pb_draw.yy new file mode 100644 index 000000000..cdb825653 --- /dev/null +++ b/scripts/node_pb_draw/node_pb_draw.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw/node_stripe.yy b/scripts/node_pb_draw/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_angle/node_checkerboard.yy b/scripts/node_pb_draw_angle/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_angle/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_angle/node_pb_draw_angle.gml b/scripts/node_pb_draw_angle/node_pb_draw_angle.gml new file mode 100644 index 000000000..01f050a26 --- /dev/null +++ b/scripts/node_pb_draw_angle/node_pb_draw_angle.gml @@ -0,0 +1,141 @@ +function Node_PB_Draw_Angle(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Angle"; + + inputs[| 3] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, array_create(4, THEME.obj_angle) ); + + inputs[| 4] = nodeValue("Round", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ) + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ["Shape", false], 3, 4, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + var _side = _data[3]; + var _roun = _data[4]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + switch(_side) { + case 0 : + if( _pbox.mirror_h && _pbox.mirror_v) _side = 2; + if( _pbox.mirror_h && !_pbox.mirror_v) _side = 1; + if(!_pbox.mirror_h && _pbox.mirror_v) _side = 3; + break; + case 1 : + if( _pbox.mirror_h && _pbox.mirror_v) _side = 3; + if( _pbox.mirror_h && !_pbox.mirror_v) _side = 0; + if(!_pbox.mirror_h && _pbox.mirror_v) _side = 2; + break; + case 2 : + if( _pbox.mirror_h && _pbox.mirror_v) _side = 0; + if( _pbox.mirror_h && !_pbox.mirror_v) _side = 3; + if(!_pbox.mirror_h && _pbox.mirror_v) _side = 1; + break; + case 3 : + if( _pbox.mirror_h && _pbox.mirror_v) _side = 1; + if( _pbox.mirror_h && !_pbox.mirror_v) _side = 2; + if(!_pbox.mirror_h && _pbox.mirror_v) _side = 0; + break; + } + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_primitive_begin(pr_trianglelist); + + var as, ae, rx, ry; + + switch(_side) { + case 0 : + if(_roun) { + as = 0; + ae = -90; + + rx = _pbox.x; + ry = _pbox.y; + } else { + draw_vertex(_pbox.x, _pbox.y); + draw_vertex(_pbox.x + _pbox.w, _pbox.y); + draw_vertex(_pbox.x, _pbox.y + _pbox.h); + } + break; + case 1 : + if(_roun) { + as = 180; + ae = 270; + + rx = _pbox.x + _pbox.w; + ry = _pbox.y; + } else { + draw_vertex(_pbox.x, _pbox.y); + draw_vertex(_pbox.x + _pbox.w, _pbox.y); + draw_vertex(_pbox.x + _pbox.w, _pbox.y + _pbox.h); + } + break; + case 2 : + if(_roun) { + as = 90; + ae = 180; + + rx = _pbox.x + _pbox.w; + ry = _pbox.y + _pbox.h; + } else { + draw_vertex(_pbox.x + _pbox.w, _pbox.y); + draw_vertex(_pbox.x + _pbox.w, _pbox.y + _pbox.h); + draw_vertex(_pbox.x, _pbox.y + _pbox.h); + } + break; + case 3 : + if(_roun) { + as = 0; + ae = 90; + + rx = _pbox.x; + ry = _pbox.y + _pbox.h; + } else { + draw_vertex(_pbox.x, _pbox.y); + draw_vertex(_pbox.x + _pbox.w, _pbox.y + _pbox.h); + draw_vertex(_pbox.x, _pbox.y + _pbox.h); + } + break; + } + + if(_roun) { + var ox, oy, nx, ny; + + for( var i = 0; i <= 64; i++ ) { + var a = lerp(as, ae, i / 64); + nx = rx + lengthdir_x(_pbox.w, a); + ny = ry + lengthdir_y(_pbox.h, a); + + if(i) { + draw_vertex(rx, ry); + draw_vertex(ox, oy); + draw_vertex(nx, ny); + } + + ox = nx; + oy = ny; + } + } + draw_primitive_end(); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_angle/node_pb_draw_angle.yy b/scripts/node_pb_draw_angle/node_pb_draw_angle.yy new file mode 100644 index 000000000..e0c6d4940 --- /dev/null +++ b/scripts/node_pb_draw_angle/node_pb_draw_angle.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_angle", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_angle/node_stripe.yy b/scripts/node_pb_draw_angle/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_angle/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_blob/node_checkerboard.yy b/scripts/node_pb_draw_blob/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_blob/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_blob/node_pb_draw_blob.gml b/scripts/node_pb_draw_blob/node_pb_draw_blob.gml new file mode 100644 index 000000000..54ccd0589 --- /dev/null +++ b/scripts/node_pb_draw_blob/node_pb_draw_blob.gml @@ -0,0 +1,97 @@ +function Node_PB_Draw_Blob(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Blob"; + + inputs[| 3] = nodeValue("Top", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ] ); + + inputs[| 4] = nodeValue("Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ] ); + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ["Shape", false], 3, 4, + ]; + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _pbox = inputs[| 0].getValue(); + if(_pbox == noone) return; + + var x0 = _pbox.x + _pbox.w / 2; + var y0 = _pbox.y; + + x0 = _x + x0 * _s; + y0 = _y + y0 * _s; + + //inputs[| 2].drawOverlay(active, x0, y0, _s, _mx, _my, _snx, _sny); + + var x0 = _pbox.x + _pbox.w / 2; + var y0 = _pbox.y + _pbox.h; + + x0 = _x + x0 * _s; + y0 = _y + y0 * _s; + + //inputs[| 3].drawOverlay(active, x0, y0, _s, _mx, _my, _snx, _sny); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + + var _btop = _data[3]; + var _bbot = _data[4]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _btop *= _pbox.w / 2; + _bbot *= _pbox.w / 2; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_primitive_begin(pr_trianglelist); + + var xc = _pbox.x + _pbox.w / 2; + + var _samp = 64; + var _ox, _oy, _nx, _ny; + for( var i = 0; i <= _samp; i++ ) { + var t = i / _samp; + var _t = 1 - t; + + _nx = 3 * _btop * t * _t * _t + 3 * _bbot * t * t * _t; + _ny = 3 * t * t - 2 * t * t * t; + if(_pbox.mirror_v) + _ny = 1 - _ny; + _ny = _pbox.y + _ny * _pbox.h; + + if(i) { + draw_vertex(xc, _pbox.y); + draw_vertex(xc + _ox, _oy); + draw_vertex(xc + _nx, _ny); + + draw_vertex(xc, _pbox.y); + draw_vertex(xc - _ox, _oy); + draw_vertex(xc - _nx, _ny); + } + + _ox = _nx; + _oy = _ny; + } + + draw_primitive_end(); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_blob/node_pb_draw_blob.yy b/scripts/node_pb_draw_blob/node_pb_draw_blob.yy new file mode 100644 index 000000000..cad94ab1d --- /dev/null +++ b/scripts/node_pb_draw_blob/node_pb_draw_blob.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_blob", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_blob/node_stripe.yy b/scripts/node_pb_draw_blob/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_blob/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_ellipse/node_checkerboard.yy b/scripts/node_pb_draw_ellipse/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_ellipse/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.gml b/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.gml new file mode 100644 index 000000000..07c154ed0 --- /dev/null +++ b/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.gml @@ -0,0 +1,34 @@ +function Node_PB_Draw_Ellipse(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Ellipse"; + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_circle_precision(64); + draw_set_color(_fcol); + draw_ellipse(_pbox.x - 1, _pbox.y - 1, _pbox.x + _pbox.w - 1, _pbox.y + _pbox.h - 1, false); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy b/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy new file mode 100644 index 000000000..5a215e36f --- /dev/null +++ b/scripts/node_pb_draw_ellipse/node_pb_draw_ellipse.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_ellipse", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_ellipse/node_stripe.yy b/scripts/node_pb_draw_ellipse/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_ellipse/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_fill/node_checkerboard.yy b/scripts/node_pb_draw_fill/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_fill/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_fill/node_pb_draw_fill.gml b/scripts/node_pb_draw_fill/node_pb_draw_fill.gml new file mode 100644 index 000000000..e61a8b5db --- /dev/null +++ b/scripts/node_pb_draw_fill/node_pb_draw_fill.gml @@ -0,0 +1,33 @@ +function Node_PB_Draw_Fill(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Fill"; + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_rectangle(_pbox.x, _pbox.y, _pbox.x + _pbox.w - 1, _pbox.y + _pbox.h - 1, false); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_fill/node_pb_draw_fill.yy b/scripts/node_pb_draw_fill/node_pb_draw_fill.yy new file mode 100644 index 000000000..fe5be0162 --- /dev/null +++ b/scripts/node_pb_draw_fill/node_pb_draw_fill.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_fill", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_fill/node_stripe.yy b/scripts/node_pb_draw_fill/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_fill/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_rectangle/node_checkerboard.yy b/scripts/node_pb_draw_rectangle/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_rectangle/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.gml b/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.gml new file mode 100644 index 000000000..0798e4372 --- /dev/null +++ b/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.gml @@ -0,0 +1,33 @@ +function Node_PB_Draw_Rectangle(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Rectangle"; + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_rectangle(_pbox.x, _pbox.y, _pbox.x + _pbox.w - 1, _pbox.y + _pbox.h - 1, false); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.yy b/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.yy new file mode 100644 index 000000000..672146949 --- /dev/null +++ b/scripts/node_pb_draw_rectangle/node_pb_draw_rectangle.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_rectangle", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_rectangle/node_stripe.yy b/scripts/node_pb_draw_rectangle/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_rectangle/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_roundrectangle/node_checkerboard.yy b/scripts/node_pb_draw_roundrectangle/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_roundrectangle/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.gml b/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.gml new file mode 100644 index 000000000..c0549ae87 --- /dev/null +++ b/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.gml @@ -0,0 +1,203 @@ +function Node_PB_Draw_Round_Rectangle(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Round Rectangle"; + + inputs[| 3] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Uniform", "Per Corner" ]); + + inputs[| 4] = nodeValue("Corner Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ); + + inputs[| 5] = nodeValue("Corner Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 1, 1, 1, 1 ] ) + .setArrayDepth(1) + .setDisplay(VALUE_DISPLAY.corner); + + inputs[| 6] = nodeValue("Relative", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + inputs[| 7] = nodeValue("Cut Corner", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ["Shape", false], 3, 6, 4, 5, 7, + ]; + + corner_pixels = [ + [ // 1 corner + [ 0, 0 ], + ], + [ // 2 corner + [ 1, 0 ], + [ 0, 1 ], + ], + [ // 3 corner + [ 2, 0 ], + [ 0, 2 ], + ], + [ // 4 corner + [ 1, 1 ], + ] + ] + + static step = function() { + var _type = inputs[| 3].getValue(); + var _rela = inputs[| 6].getValue(); + + inputs[| 4].setVisible(_type == 0); + inputs[| 5].setVisible(_type == 1); + + if(_rela) { + inputs[| 4].type = VALUE_TYPE.float; + inputs[| 5].type = VALUE_TYPE.float; + + inputs[| 4].editWidget.slide_speed = 0.01; + inputs[| 5].editWidget.setSlideSpeed(0.01); + } else { + inputs[| 4].type = VALUE_TYPE.integer; + inputs[| 5].type = VALUE_TYPE.integer; + + inputs[| 4].editWidget.slide_speed = 1; + inputs[| 5].editWidget.setSlideSpeed(1); + } + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + var _type = _data[3]; + var _corn = _type == 0? _data[4] : _data[5]; + var _rela = _data[6]; + var _cut = _data[7]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + var _x0 = _pbox.x; + var _y0 = _pbox.y; + var _x1 = _pbox.x + _pbox.w - 1; + var _y1 = _pbox.y + _pbox.h - 1; + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_set_circle_precision(64); + + var _corners = [ + [ _x0, _y0 ], + [ _x1, _y0 ], + [ _x0, _y1 ], + [ _x1, _y1 ], + ] + + if(_cut) { + draw_rectangle(_x0, _y0, _x1, _y1, false); + + BLEND_SUBTRACT + for( var k = 0; k < 4; k++ ) { + var _cc = _type == 0? _corn : _corn[k]; + if(_rela) _cc = max(0, round(_cc * min(_pbox.w, _pbox.h))); + _cc /= 2; + + for( var i = 0; i < _cc; i++ ) + for( var j = 0; j < _cc; j++ ) { + if(i + j >= _cc) continue; + + draw_point(_corners[k][0] + i * ((k & 0b01)? -1 : 1), _corners[k][1] + j * ((k & 0b10)? -1 : 1)); + } + } + BLEND_NORMAL + } else { + if(_type == 0) { + if(_rela) _corn = max(0, round(_corn * min(_pbox.w, _pbox.h))); + + if(_corn > array_length(corner_pixels)) + draw_roundrect_ext(_pbox.x - 1, _pbox.y - 1, _pbox.x + _pbox.w - 1, _pbox.y + _pbox.h - 1, 6 + _corn, 6 + _corn, false); + else { + draw_rectangle(_x0, _y0, _x1, _y1, false); + BLEND_SUBTRACT + for( var i = 0; i < _corn; i++ ) { + var _corner = corner_pixels[i]; + + for( var j = 0; j < 4; j++ ) + for( var k = 0; k < array_length(_corner); k++ ) + draw_point(_corners[j][0] + _corner[k][0] * ((j & 0b01)? -1 : 1), _corners[j][1] + _corner[k][1] * ((j & 0b10)? -1 : 1)); + } + BLEND_NORMAL + } + } else if(_type == 1) { + draw_rectangle(_x0 - 1, _y0 - 1, _x1, _y1, false); + + for( var c = 0; c < 4; c++ ) { + var _c = c; + + switch(c) { + case 0 : + if( _pbox.mirror_h && _pbox.mirror_v) _c = 3; + if( _pbox.mirror_h && !_pbox.mirror_v) _c = 1; + if(!_pbox.mirror_h && _pbox.mirror_v) _c = 2; + break; + case 1 : + if( _pbox.mirror_h && _pbox.mirror_v) _c = 2; + if( _pbox.mirror_h && !_pbox.mirror_v) _c = 0; + if(!_pbox.mirror_h && _pbox.mirror_v) _c = 3; + break; + case 2 : + if( _pbox.mirror_h && _pbox.mirror_v) _c = 1; + if( _pbox.mirror_h && !_pbox.mirror_v) _c = 3; + if(!_pbox.mirror_h && _pbox.mirror_v) _c = 0; + break; + case 3 : + if( _pbox.mirror_h && _pbox.mirror_v) _c = 0; + if( _pbox.mirror_h && !_pbox.mirror_v) _c = 2; + if(!_pbox.mirror_h && _pbox.mirror_v) _c = 1; + break; + } + + var _cc = _corn[_c]; + if(_rela) _cc = max(0, round(_cc * min(_pbox.w, _pbox.h))); + + if(_cc > array_length(corner_pixels)) { + var _sub_surf = surface_create(_cc - 1, _cc - 1); + surface_set_target(_sub_surf); + draw_clear(c_white); + + BLEND_SUBTRACT + draw_roundrect_ext(0, 0, _cc * 3, _cc * 3, _cc, _cc, false); + BLEND_NORMAL + surface_reset_target(); + + BLEND_SUBTRACT + switch(c) { + case 0 : draw_surface_ext(_sub_surf, _x0, _y0, 1, 1, 0, c_white, 1); break; + case 1 : draw_surface_ext(_sub_surf, _x1 + 1, _y0, 1, 1, -90, c_white, 1); break; + case 2 : draw_surface_ext(_sub_surf, _x0, _y1 + 1, 1, 1, 90, c_white, 1); break; + case 3 : draw_surface_ext(_sub_surf, _x1 + 1, _y1 + 1, 1, 1, 180, c_white, 1); break; + } + BLEND_NORMAL + + surface_free(_sub_surf); + } else { + BLEND_SUBTRACT + for( var i = 0; i < _cc; i++ ) { + var _corner = corner_pixels[i]; + + for( var k = 0; k < array_length(_corner); k++ ) + draw_point(_corners[c][0] + _corner[k][0] * ((c & 0b01)? -1 : 1), _corners[c][1] + _corner[k][1] * ((c & 0b10)? -1 : 1)); + } + BLEND_NORMAL + } + } + } + } + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.yy b/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.yy new file mode 100644 index 000000000..8a19b10cf --- /dev/null +++ b/scripts/node_pb_draw_roundrectangle/node_pb_draw_roundrectangle.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_roundrectangle", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_roundrectangle/node_stripe.yy b/scripts/node_pb_draw_roundrectangle/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_roundrectangle/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_semi_ellipse/node_checkerboard.yy b/scripts/node_pb_draw_semi_ellipse/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_semi_ellipse/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.gml b/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.gml new file mode 100644 index 000000000..830c9609d --- /dev/null +++ b/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.gml @@ -0,0 +1,63 @@ +function Node_PB_Draw_Semi_Ellipse(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Semi Ellipse"; + + inputs[| 3] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, array_create(4, THEME.obj_hemicircle) ); + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ["Shape", false], 3, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + var _side = _data[3]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + var s = surface_create_valid(_pbox.w, _pbox.h); + + switch(_side) { + case 0 : if(_pbox.mirror_h) _side = 2; break; + case 1 : if(_pbox.mirror_v) _side = 3; break; + case 2 : if(_pbox.mirror_h) _side = 0; break; + case 3 : if(_pbox.mirror_v) _side = 1; break; + } + + surface_set_target(s); + DRAW_CLEAR + + var x1 = _pbox.w; + var y1 = _pbox.h; + + draw_set_circle_precision(64); + draw_set_color(_fcol); + switch(_side) { + case 0 : draw_ellipse(-1, -1, x1 + _pbox.w - 1, y1 - 1, false); break; + case 1 : draw_ellipse(-1, -1, x1 - 1, y1 + _pbox.h - 1, false); break; + case 2 : draw_ellipse(-_pbox.w, -1, x1 - 1, y1 - 1, false); break; + case 3 : draw_ellipse(-1, -_pbox.h, x1 - 1, y1 - 1, false); break; + } + surface_reset_target(); + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_surface(s, ceil(_pbox.x), ceil(_pbox.y)); + surface_free(s); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, ceil(_pbox.x), ceil(_pbox.y)); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.yy b/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.yy new file mode 100644 index 000000000..75ffc0ed9 --- /dev/null +++ b/scripts/node_pb_draw_semi_ellipse/node_pb_draw_semi_ellipse.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_semi_ellipse", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_semi_ellipse/node_stripe.yy b/scripts/node_pb_draw_semi_ellipse/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_semi_ellipse/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_trapezoid/node_checkerboard.yy b/scripts/node_pb_draw_trapezoid/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_draw_trapezoid/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.gml b/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.gml new file mode 100644 index 000000000..377af71fc --- /dev/null +++ b/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.gml @@ -0,0 +1,138 @@ +function Node_PB_Draw_Trapezoid(_x, _y, _group = noone) : Node_PB_Draw(_x, _y, _group) constructor { + name = "Trapezoid"; + + inputs[| 3] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Horizontal", "Vertical" ]); + + inputs[| 4] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Symmetric", "Independent" ]); + + inputs[| 5] = nodeValue("Bevel", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 6] = nodeValue("Bevel 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 7] = nodeValue("Bevel 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 8] = nodeValue("Invert", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + input_display_list = [ + ["Draw", false], 0, 1, 2, + ["Shape", false], 3, 4, 8, 5, 6, 7, + ]; + + static step = function() { + var _type = current_data[4]; + + inputs[| 5].setVisible(_type == 0); + inputs[| 6].setVisible(_type == 1); + inputs[| 7].setVisible(_type == 1); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _pbox = _data[0]; + var _fcol = _data[1]; + var _mask = _data[2]; + var _axis = _data[3]; + var _type = _data[4]; + var _bev = _data[5]; + var _bev1 = _data[6]; + var _bev2 = _data[7]; + var _invt = _data[8]; + + if(_output_index == 1) return _pbox; + if(_pbox == noone) return noone; + + _outSurf = surface_verify(_outSurf, _pbox.layer_w, _pbox.layer_h); + + var p0x = _pbox.x, p0y = _pbox.y; + var p1x = _pbox.x + _pbox.w, p1y = _pbox.y; + var p2x = _pbox.x, p2y = _pbox.y + _pbox.h; + var p3x = _pbox.x + _pbox.w, p3y = _pbox.y + _pbox.h; + + if(_type == 0) { + if(_axis == 0) { + var w = _pbox.w - (_pbox.w * _bev) / 2; + + if(_invt ^^ _pbox.mirror_v) { + p2x += w; + p3x -= w; + } else { + p0x += w; + p1x -= w; + } + } else { + var h = _pbox.h - (_pbox.h * _bev) / 2; + + if(_invt ^^ _pbox.mirror_h) { + p1x += h; + p3x -= h; + } else { + p0y += h; + p2y -= h; + } + } + } else if(_type == 1) { + if(_axis == 0) { + var w1 = _pbox.w - (_pbox.w * _bev1) / 2; + var w2 = _pbox.w - (_pbox.w * _bev2) / 2; + + if(_pbox.mirror_h) { + var t = w1; + w1 = w2; + w2 = t; + } + + if(_invt ^^ _pbox.mirror_v) { + p2x += w1; + p3x -= w2; + } else { + p0x += w1; + p1x -= w2; + } + } else { + var h1 = _pbox.h - (_pbox.h * _bev1) / 2; + var h2 = _pbox.h - (_pbox.h * _bev2) / 2; + + if(_pbox.mirror_v) { + var t = h1; + h1 = h2; + h2 = t; + } + + if(_invt ^^ _pbox.mirror_h) { + p1x += h1; + p3x -= h2; + } else { + p0y += h1; + p2y -= h2; + } + } + } + + surface_set_target(_outSurf); + DRAW_CLEAR + + draw_set_color(_fcol); + draw_primitive_begin(pr_trianglelist); + draw_vertex(p0x, p0y); + draw_vertex(p1x, p1y); + draw_vertex(p2x, p2y); + + draw_vertex(p0x, p0y); + draw_vertex(p2x, p2y); + draw_vertex(p3x, p3y); + draw_primitive_end(); + + if(_mask && is_surface(_pbox.mask)) { + BLEND_MULTIPLY + draw_surface(_pbox.mask, _pbox.x, _pbox.y); + BLEND_NORMAL + } + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.yy b/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.yy new file mode 100644 index 000000000..49a014585 --- /dev/null +++ b/scripts/node_pb_draw_trapezoid/node_pb_draw_trapezoid.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_draw_trapezoid", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "draw", + "path": "folders/nodes/data/pixel builder/draw.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_draw_trapezoid/node_stripe.yy b/scripts/node_pb_draw_trapezoid/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_draw_trapezoid/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx/node_checkerboard.yy b/scripts/node_pb_fx/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx/node_pb_fx.gml b/scripts/node_pb_fx/node_pb_fx.gml new file mode 100644 index 000000000..0887f9967 --- /dev/null +++ b/scripts/node_pb_fx/node_pb_fx.gml @@ -0,0 +1,21 @@ +function Node_PB_Fx(_x, _y, _group = noone) : Node_PB(_x, _y, _group) constructor { + name = "PB FX"; + + inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ) + .setVisible(true, true); + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone) + .setVisible(false, false); + + static getpBox = function() { + var _n = inputs[| 0].value_from; + if(_n == noone) return; + + _n = _n.node; + + if(is_instanceof(_n, Node_PB_Draw)) + return _n.outputs[| 1].getValue(); + else if(is_instanceof(_n, Node_PB_Fx)) + return _n.getpBox(); + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx/node_pb_fx.yy b/scripts/node_pb_fx/node_pb_fx.yy new file mode 100644 index 000000000..47cfb69d6 --- /dev/null +++ b/scripts/node_pb_fx/node_pb_fx.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx/node_stripe.yy b/scripts/node_pb_fx/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_add/node_checkerboard.yy b/scripts/node_pb_fx_add/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_add/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_add/node_pb_fx_add.gml b/scripts/node_pb_fx_add/node_pb_fx_add.gml new file mode 100644 index 000000000..da4157543 --- /dev/null +++ b/scripts/node_pb_fx_add/node_pb_fx_add.gml @@ -0,0 +1,22 @@ +function Node_PB_Fx_Add(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Add"; + + inputs[| 1] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ) + .setVisible(true, true); + + input_display_list = [ 0, + ["Effect", false], 1, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _subs = _data[1]; + + surface_set_shader(_outSurf); + draw_surface_safe(_surf); + draw_surface_safe(_subs); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_add/node_pb_fx_add.yy b/scripts/node_pb_fx_add/node_pb_fx_add.yy new file mode 100644 index 000000000..f054f965f --- /dev/null +++ b/scripts/node_pb_fx_add/node_pb_fx_add.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_add", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_add/node_stripe.yy b/scripts/node_pb_fx_add/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_add/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_hash/node_checkerboard.yy b/scripts/node_pb_fx_hash/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_hash/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_hash/node_pb_fx_hash.gml b/scripts/node_pb_fx_hash/node_pb_fx_hash.gml new file mode 100644 index 000000000..98da46abc --- /dev/null +++ b/scripts/node_pb_fx_hash/node_pb_fx_hash.gml @@ -0,0 +1,32 @@ +function Node_PB_Fx_Hash(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Hash"; + + inputs[| 1] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 2] = nodeValue("Hash", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2. ); + + inputs[| 3] = nodeValue("Invert", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + input_display_list = [ 0, + ["Effect", false], 2, 1, 3, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _colr = _data[1]; + var _hash = _data[2]; + var _inv = _data[3]; + + surface_set_shader(_outSurf, sh_pb_hash); + shader_set_dim(, _surf); + shader_set_color("color", _colr); + shader_set_f("hash", _hash); + shader_set_i("invert", _inv); + DRAW_CLEAR + + draw_surface_ext_safe(_surf, 0, 0,,,, _colr); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_hash/node_pb_fx_hash.yy b/scripts/node_pb_fx_hash/node_pb_fx_hash.yy new file mode 100644 index 000000000..7b09405b8 --- /dev/null +++ b/scripts/node_pb_fx_hash/node_pb_fx_hash.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_hash", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_hash/node_stripe.yy b/scripts/node_pb_fx_hash/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_hash/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_highlight/node_checkerboard.yy b/scripts/node_pb_fx_highlight/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_highlight/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_highlight/node_pb_fx_highlight.gml b/scripts/node_pb_fx_highlight/node_pb_fx_highlight.gml new file mode 100644 index 000000000..bd53c8ae2 --- /dev/null +++ b/scripts/node_pb_fx_highlight/node_pb_fx_highlight.gml @@ -0,0 +1,107 @@ +function Node_PB_Fx_Highlight(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Highlight"; + + inputs[| 1] = nodeValue("Highlight Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, array_create(9) ) + .setDisplay(VALUE_DISPLAY.kernel); + + inputs[| 2] = nodeValue("Light Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 3] = nodeValue("Shadow Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black ); + + inputs[| 4] = nodeValue("Roughness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) + .setDisplay(VALUE_DISPLAY.slider, [ 0, 1, 0.01 ]); + + inputs[| 5] = nodeValue("Roughness Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ); + + inputs[| 6] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(100000, 999999) ); + + holding_side = noone; + + side_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { + var _size = 32; + var _space = 8; + var ww = (_size * 3) + (_space * 2); + var hh = ww + ui(16); + + var _x0 = _x + _w / 2 - ww / 2; + var _y0 = _y + ui(8); + + var _side = inputs[| 1].getValue(); + + if(holding_side != noone && mouse_release(mb_left)) + holding_side = noone; + + for( var i = 0; i < 3; i++ ) + for( var j = 0; j < 3; j++ ) { + var ind = i * 3 + j; + var _sx = _x0 + j * (_space + _size); + var _sy = _y0 + i * (_space + _size); + + if(_hover && point_in_rectangle(_m[0], _m[1], _sx, _sy, _sx + _size, _sy + _size)) { + draw_sprite_stretched(THEME.button, 1, _sx, _sy, _size, _size); + + if(mouse_click(mb_left, _focus)) { + draw_sprite_stretched(THEME.button, 2, _sx, _sy, _size, _size); + + if(holding_side != noone) { + _side[ind] = holding_side; + inputs[| 1].setValue(_side); + } + } + + if(mouse_press(mb_left, _focus)) { + if(ind == 4) + _side[ind] = !_side[ind]; + else + _side[ind] = (_side[ind] + 2) % 3 - 1; + inputs[| 1].setValue(_side); + + holding_side = _side[ind]; + } + } else + draw_sprite_stretched(THEME.button, 0, _sx, _sy, _size, _size); + + if(ind == 4) { + if(_side[ind]) draw_sprite_stretched_ext(THEME.color_picker_box, 1, _sx + ui(2), _sy + ui(2), _size - ui(4), _size - ui(4), COLORS._main_accent, 1); + } else { + switch(_side[ind]) { + case 1 : draw_sprite_stretched_ext(THEME.color_picker_box, 1, _sx + ui(2), _sy + ui(2), _size - ui(4), _size - ui(4), c_white, 1); break; + case -1 : draw_sprite_stretched_ext(THEME.color_picker_box, 1, _sx + ui(2), _sy + ui(2), _size - ui(4), _size - ui(4), c_black, 1); break; + } + } + } + + return hh; + }); + + input_display_list = [ 0, + ["Effect", false], side_renderer, 2, 3, + ["Roughness", false], 4, 5, 6, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _high = _data[1]; + var _chig = _data[2]; + var _csha = _data[3]; + var _roug = _data[4]; + var _rSca = _data[5]; + var _seed = _data[6]; + + surface_set_shader(_outSurf, sh_pb_highlight); + shader_set_dim(, _surf); + shader_set_i("sides", _high); + + shader_set_color("highlightColor", _chig); + shader_set_color("shadowColor", _csha); + shader_set_f("roughness", _roug); + shader_set_f("roughScale", _rSca); + shader_set_f("seed", _seed); + DRAW_CLEAR + + draw_surface_safe(_surf, 0, 0); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_highlight/node_pb_fx_highlight.yy b/scripts/node_pb_fx_highlight/node_pb_fx_highlight.yy new file mode 100644 index 000000000..ab4f9108a --- /dev/null +++ b/scripts/node_pb_fx_highlight/node_pb_fx_highlight.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_highlight", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_highlight/node_stripe.yy b/scripts/node_pb_fx_highlight/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_highlight/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_intersect/node_checkerboard.yy b/scripts/node_pb_fx_intersect/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_intersect/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_intersect/node_pb_fx_intersect.gml b/scripts/node_pb_fx_intersect/node_pb_fx_intersect.gml new file mode 100644 index 000000000..aa2552208 --- /dev/null +++ b/scripts/node_pb_fx_intersect/node_pb_fx_intersect.gml @@ -0,0 +1,25 @@ +function Node_PB_Fx_Intersect(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Subtract"; + + inputs[| 1] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ) + .setVisible(true, true); + + input_display_list = [ 0, + ["Effect", false], 1, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _subs = _data[1]; + + surface_set_shader(_outSurf); + draw_surface_safe(_surf); + + BLEND_MULTIPLY + draw_surface_safe(_subs); + BLEND_NORMAL + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_intersect/node_pb_fx_intersect.yy b/scripts/node_pb_fx_intersect/node_pb_fx_intersect.yy new file mode 100644 index 000000000..dabc33070 --- /dev/null +++ b/scripts/node_pb_fx_intersect/node_pb_fx_intersect.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_intersect", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_intersect/node_stripe.yy b/scripts/node_pb_fx_intersect/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_intersect/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_outline/node_checkerboard.yy b/scripts/node_pb_fx_outline/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_outline/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_outline/node_pb_fx_outline.gml b/scripts/node_pb_fx_outline/node_pb_fx_outline.gml new file mode 100644 index 000000000..1ce45471e --- /dev/null +++ b/scripts/node_pb_fx_outline/node_pb_fx_outline.gml @@ -0,0 +1,32 @@ +function Node_PB_Fx_Outline(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Outline"; + + inputs[| 1] = nodeValue("Corner", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + inputs[| 2] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 3] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Inside", "Outside" ]); + + input_display_list = [ 0, + ["Effect", false], 3, 1, 2, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _corn = _data[1]; + var _colr = _data[2]; + var _side = _data[3]; + + surface_set_shader(_outSurf, sh_pb_outline); + shader_set_dim(, _surf); + shader_set_i("corner", _corn); + shader_set_i("side", _side); + DRAW_CLEAR + + draw_surface_ext_safe(_surf, 0, 0,,,, _colr); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_outline/node_pb_fx_outline.yy b/scripts/node_pb_fx_outline/node_pb_fx_outline.yy new file mode 100644 index 000000000..250a80683 --- /dev/null +++ b/scripts/node_pb_fx_outline/node_pb_fx_outline.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_outline", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_outline/node_stripe.yy b/scripts/node_pb_fx_outline/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_outline/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_radial/node_checkerboard.yy b/scripts/node_pb_fx_radial/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_radial/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_radial/node_pb_fx_radial.gml b/scripts/node_pb_fx_radial/node_pb_fx_radial.gml new file mode 100644 index 000000000..1332ca1de --- /dev/null +++ b/scripts/node_pb_fx_radial/node_pb_fx_radial.gml @@ -0,0 +1,26 @@ +function Node_PB_Fx_Radial(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Radial"; + + inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 ) + .setVisible(true, true); + + input_display_list = [ 0, + ["Effect", false], 1, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _amo = _data[1]; + + surface_set_shader(_outSurf); + for( var i = 0; i < _amo; i++ ) { + var aa = i / _amo * 360; + var p = point_rotate(0, 0, surface_get_width(_outSurf) / 2, surface_get_height(_outSurf) / 2, aa); + + draw_surface_ext_safe(_surf, p[0], p[1],,, aa); + } + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_radial/node_pb_fx_radial.yy b/scripts/node_pb_fx_radial/node_pb_fx_radial.yy new file mode 100644 index 000000000..e2e6a636a --- /dev/null +++ b/scripts/node_pb_fx_radial/node_pb_fx_radial.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_radial", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_radial/node_stripe.yy b/scripts/node_pb_fx_radial/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_radial/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_shading/node_checkerboard.yy b/scripts/node_pb_fx_shading/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_shading/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_shading/node_pb_fx_shading.gml b/scripts/node_pb_fx_shading/node_pb_fx_shading.gml new file mode 100644 index 000000000..f4fc2e4af --- /dev/null +++ b/scripts/node_pb_fx_shading/node_pb_fx_shading.gml @@ -0,0 +1,28 @@ +function Node_PB_Fx_Shading(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Shading"; + + inputs[| 1] = nodeValue("Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 1, 1, 1, 1 ] ) + .setDisplay(VALUE_DISPLAY.padding); + + inputs[| 2] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + input_display_list = [ 0, + ["Effect", false], 1, 2, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _padd = _data[1]; + var _colr = _data[2]; + + surface_set_shader(_outSurf, sh_pb_shade); + shader_set_dim(, _surf); + shader_set_f("padding", _padd); + DRAW_CLEAR + + draw_surface_ext_safe(_surf, 0, 0,,,, _colr); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_shading/node_pb_fx_shading.yy b/scripts/node_pb_fx_shading/node_pb_fx_shading.yy new file mode 100644 index 000000000..84de5f636 --- /dev/null +++ b/scripts/node_pb_fx_shading/node_pb_fx_shading.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_shading", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_shading/node_stripe.yy b/scripts/node_pb_fx_shading/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_shading/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_stack/node_checkerboard.yy b/scripts/node_pb_fx_stack/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_stack/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_stack/node_pb_fx_stack.gml b/scripts/node_pb_fx_stack/node_pb_fx_stack.gml new file mode 100644 index 000000000..2de824f1e --- /dev/null +++ b/scripts/node_pb_fx_stack/node_pb_fx_stack.gml @@ -0,0 +1,71 @@ +function Node_PB_Fx_Stack(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Stack"; + + inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 ); + + inputs[| 2] = nodeValue("Direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_button, array_create(4, THEME.obj_direction) ); + + inputs[| 3] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 4] = nodeValue("Highlight", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + inputs[| 5] = nodeValue("Highlight Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white ); + + inputs[| 6] = nodeValue("Invert", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + + input_display_list = [ 0, + ["Effect", false], 1, 2, 6, 3, 4, 5, + ]; + + static step = function() { + var _high = current_data[4]; + + inputs[| 5].setVisible(_high); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _amou = _data[1]; + var _dirr = _data[2]; + var _colr = _data[3]; + var _high = _data[4]; + var _hclr = _data[5]; + var _invr = _data[6]; + + surface_set_target(_outSurf); + DRAW_CLEAR + var px = 0; + var py = 0; + + if(_invr) { + switch(_dirr) { + case 0 : px = -_amou; break; + case 1 : py = _amou; break; + case 2 : px = _amou; break; + case 3 : py = -_amou; break; + } + } + + shader_set(sh_draw_color); + for( var i = 0; i < _amou; i++ ) { + var cc = _colr; + if(_high && i == _amou - 1) + cc = _hclr; + draw_surface_ext_safe(_surf, px, py,,,, cc); + + switch(_dirr) { + case 0 : px++; break; + case 1 : py--; break; + case 2 : px--; break; + case 3 : py++; break; + } + } + shader_reset(); + + draw_surface_safe(_surf, px, py); + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_stack/node_pb_fx_stack.yy b/scripts/node_pb_fx_stack/node_pb_fx_stack.yy new file mode 100644 index 000000000..2820e2ac6 --- /dev/null +++ b/scripts/node_pb_fx_stack/node_pb_fx_stack.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_stack", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_stack/node_stripe.yy b/scripts/node_pb_fx_stack/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_stack/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_substract/node_checkerboard.yy b/scripts/node_pb_fx_substract/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_fx_substract/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_fx_substract/node_pb_fx_substract.gml b/scripts/node_pb_fx_substract/node_pb_fx_substract.gml new file mode 100644 index 000000000..ae081a7ba --- /dev/null +++ b/scripts/node_pb_fx_substract/node_pb_fx_substract.gml @@ -0,0 +1,25 @@ +function Node_PB_Fx_Subtract(_x, _y, _group = noone) : Node_PB_Fx(_x, _y, _group) constructor { + name = "Subtract"; + + inputs[| 1] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ) + .setVisible(true, true); + + input_display_list = [ 0, + ["Effect", false], 1, + ]; + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var _subs = _data[1]; + + surface_set_shader(_outSurf); + draw_surface_safe(_surf); + + BLEND_SUBTRACT + draw_surface_safe(_subs); + BLEND_NORMAL + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_pb_fx_substract/node_pb_fx_substract.yy b/scripts/node_pb_fx_substract/node_pb_fx_substract.yy new file mode 100644 index 000000000..e1dbbf9d5 --- /dev/null +++ b/scripts/node_pb_fx_substract/node_pb_fx_substract.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_fx_substract", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "effect", + "path": "folders/nodes/data/pixel builder/effect.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_fx_substract/node_stripe.yy b/scripts/node_pb_fx_substract/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_fx_substract/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_layer/node_checkerboard.yy b/scripts/node_pb_layer/node_checkerboard.yy new file mode 100644 index 000000000..f65eb196c --- /dev/null +++ b/scripts/node_pb_layer/node_checkerboard.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_checkerboard", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_pb_layer/node_pb_layer.gml b/scripts/node_pb_layer/node_pb_layer.gml new file mode 100644 index 000000000..3f8bcc6e3 --- /dev/null +++ b/scripts/node_pb_layer/node_pb_layer.gml @@ -0,0 +1,27 @@ +function Node_PB_Layer(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { + name = "PB Layer"; + icon = THEME.pixel_builder; + + w = 128; + h = 128; + min_h = h; + + inputs[| 0] = nodeValue("Layer", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ); + + outputs[| 0] = nodeValue("pBox", self, JUNCTION_CONNECT.output, VALUE_TYPE.pbBox, noone ); + + static update = function() {} + + static getPreviewValue = function() { + return group.outputs[| 0]; + } + + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + var bbox = drawGetBbox(xx, yy, _s) + .toSquare() + .pad(8); + + draw_set_color(c_white); + draw_rectangle_border(bbox.x0, bbox.y0, bbox.x1, bbox.y1, 2); + } +} \ No newline at end of file diff --git a/scripts/node_pb_layer/node_pb_layer.yy b/scripts/node_pb_layer/node_pb_layer.yy new file mode 100644 index 000000000..41a4ad0ec --- /dev/null +++ b/scripts/node_pb_layer/node_pb_layer.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pb_layer", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "box", + "path": "folders/nodes/data/pixel builder/box.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_pb_layer/node_stripe.yy b/scripts/node_pb_layer/node_stripe.yy new file mode 100644 index 000000000..3c179d416 --- /dev/null +++ b/scripts/node_pb_layer/node_stripe.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "generator", + "path": "folders/nodes/data/generator.yy", + }, + "resourceVersion": "1.0", + "name": "node_stripe", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_perlin/node_perlin.gml b/scripts/node_perlin/node_perlin.gml index 608b61dd0..4af971672 100644 --- a/scripts/node_perlin/node_perlin.gml +++ b/scripts/node_perlin/node_perlin.gml @@ -1,7 +1,7 @@ function Node_Perlin(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Perlin Noise"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_perlin_smear/node_perlin_smear.gml b/scripts/node_perlin_smear/node_perlin_smear.gml index 767adeaec..ac471c901 100644 --- a/scripts/node_perlin_smear/node_perlin_smear.gml +++ b/scripts/node_perlin_smear/node_perlin_smear.gml @@ -8,7 +8,7 @@ function Node_Perlin_Smear(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro uniform_ite = shader_get_uniform(shader, "iteration"); uniform_bri = shader_get_uniform(shader, "bright"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) diff --git a/scripts/node_pixel_builder/node_pixel_builder.gml b/scripts/node_pixel_builder/node_pixel_builder.gml new file mode 100644 index 000000000..44f828f96 --- /dev/null +++ b/scripts/node_pixel_builder/node_pixel_builder.gml @@ -0,0 +1,151 @@ +function Node_Pixel_Builder(_x, _y, _group = noone) : Node_Collection(_x, _y, _group) constructor { + name = "Pixel Builder"; + color = COLORS.node_blend_feedback; + icon = THEME.pixel_builder; + + reset_all_child = true; + + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) + .setDisplay(VALUE_DISPLAY.vector); + + outputs[| 0] = nodeValue("Surface Out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + custom_input_index = ds_list_size(inputs); + custom_output_index = ds_list_size(outputs); + + if(!LOADING && !APPENDING && !CLONING) { + var input = nodeBuild("Node_PB_Layer", -256, -32, self); + UPDATE |= RENDER_TYPE.full; + } + + static getNextNodes = function() { + var allReady = true; + for(var i = custom_input_index; i < ds_list_size(inputs); i++) { + var _in = inputs[| i].from; + if(!_in.isRenderActive()) continue; + + allReady &= _in.isRenderable() + } + + if(!allReady) return []; + + return __nodeLeafList(getNodeList()); + } + + static checkComplete = function() { + for( var i = 0; i < ds_list_size(nodes); i++ ) + if(!nodes[| i].rendered) return []; + + buildPixel(); + + var _nodes = []; + var _tos = outputs[| 0].getJunctionTo(); + + for( var j = 0; j < array_length(_tos); j++ ) { + var _to = _tos[j]; + array_push(_nodes, _to.node); + } + + return _nodes; + } + + static update = function() { + var _dim = inputs[| 0].getValue(); + + for( var i = 0; i < ds_list_size(nodes); i++ ) { + var _n = nodes[| i]; + + if(!is_instanceof(_n, Node_PB_Layer)) + continue; + + var _layer = _n.inputs[| 0].getValue(); + + var _box = new __pbBox(); + _box.layer = _layer; + _box.w = _dim[0]; + _box.h = _dim[1]; + _box.layer_w = _dim[0]; + _box.layer_h = _dim[1]; + + _n.outputs[| 0].setValue(_box); + } + + outputs[| 0].setValue(surface_create(_dim[0], _dim[1])); + } + + static buildPixel = function() { + LOG_BLOCK_START(); + LOG_IF(global.FLAG.render, $"================== BUILD PIXEL =================="); + LOG_BLOCK_START(); + + var _dim = inputs[| 0].getValue(); + var _surfs = ds_map_create(); + + for( var i = 0; i < ds_list_size(nodes); i++ ) { + var _n = nodes[| i]; + if(!_n.isTerminal()) continue; + + var _surf, _pbox = noone; + + _surf = _n.outputs[| 0].getValue(); + + if(is_instanceof(_n, Node_PB_Draw)) + _pbox = _n.outputs[| 1].getValue(); + else if(is_instanceof(_n, Node_PB_Fx)) + _pbox = _n.getpBox(); + else + continue; + + if(_pbox == noone) + continue; + + if(!is_array(_surf)) + _surf = [ _surf ]; + if(!is_array(_pbox)) + _pbox = [ _pbox ]; + + for( var j = 0; j < array_length(_surf); j++ ) { + var _box = array_safe_get(_pbox, j) + if(!is_instanceof(_box, __pbBox)) continue; + + var _layer = _box.layer; + if(!ds_map_exists(_surfs, _layer)) + _surfs[? _layer] = []; + array_push(_surfs[? _layer], _surf[j]); + } + } + + var _outSurf = outputs[| 0].getValue(); + surface_array_free(_outSurf); + + if(ds_map_empty(_surfs)) { + ds_map_destroy(_surfs); + outputs[| 0].setValue(surface_create(_dim[0], _dim[1])); + return; + } + + var _layers = ds_map_keys_to_array(_surfs); + + array_sort(_layers, true); + + _outSurf = surface_create(_dim[0], _dim[1]); + surface_set_target(_outSurf); + + for( var k = 0; k < array_length(_layers); k++ ) { + var _s = _surfs[? _layers[k]]; + + for( var j = 0; j < array_length(_s); j++ ) { + var _drawSurf = _s[j]; + draw_surface_safe(_drawSurf, 0, 0); + } + } + + surface_reset_target(); + + ds_map_destroy(_surfs); + + outputs[| 0].setValue(_outSurf); + } + + PATCH_STATIC +} \ No newline at end of file diff --git a/scripts/node_pixel_builder/node_pixel_builder.yy b/scripts/node_pixel_builder/node_pixel_builder.yy new file mode 100644 index 000000000..fb89c3d20 --- /dev/null +++ b/scripts/node_pixel_builder/node_pixel_builder.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_pixel_builder", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/data/pixel builder.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_plot_linear/node_plot_linear.gml b/scripts/node_plot_linear/node_plot_linear.gml index fd0840bf2..aff6d4be2 100644 --- a/scripts/node_plot_linear/node_plot_linear.gml +++ b/scripts/node_plot_linear/node_plot_linear.gml @@ -1,7 +1,7 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Bar / Graph"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Data", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, []) @@ -13,10 +13,10 @@ function Node_Plot_Linear(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou inputs[| 3] = nodeValue("Sample frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1); - inputs[| 4] = nodeValue("Origin", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size / 2 ]) + inputs[| 4] = nodeValue("Origin", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, DEF_SURF_H / 2 ]) .setDisplay(VALUE_DISPLAY.vector); - inputs[| 5] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, def_surf_size / 2); + inputs[| 5] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF_W / 2); inputs[| 6] = nodeValue("Base Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); diff --git a/scripts/node_polygonal_shape/node_polygonal_shape.gml b/scripts/node_polygonal_shape/node_polygonal_shape.gml index 0b718a922..8f6568064 100644 --- a/scripts/node_polygonal_shape/node_polygonal_shape.gml +++ b/scripts/node_polygonal_shape/node_polygonal_shape.gml @@ -3,7 +3,7 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr shapesArray = [ "Rectangle", "Ellipse", "Star", "Capsule", "Ring", "Arc", "Gear", "Cross" ]; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); diff --git a/scripts/node_posterize/node_posterize.gml b/scripts/node_posterize/node_posterize.gml index 004da9f5f..b0ba2b199 100644 --- a/scripts/node_posterize/node_posterize.gml +++ b/scripts/node_posterize/node_posterize.gml @@ -9,7 +9,7 @@ function Node_Posterize(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); - inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 1] = nodeValue("Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); inputs[| 2] = nodeValue("Use palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); diff --git a/scripts/node_random_shape/node_random_shape.gml b/scripts/node_random_shape/node_random_shape.gml index 17b21056b..8853187e3 100644 --- a/scripts/node_random_shape/node_random_shape.gml +++ b/scripts/node_random_shape/node_random_shape.gml @@ -1,7 +1,7 @@ function Node_Random_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Random Shape"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom_range(100000, 999999)); diff --git a/scripts/node_region_fill/node_region_fill.gml b/scripts/node_region_fill/node_region_fill.gml index c5a0c6f60..8959fc391 100644 --- a/scripts/node_region_fill/node_region_fill.gml +++ b/scripts/node_region_fill/node_region_fill.gml @@ -5,10 +5,10 @@ function Node_Region_Fill(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou inputs[| 1] = nodeValue("Mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); - inputs[| 2] = nodeValue("Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) + inputs[| 2] = nodeValue("Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); - inputs[| 3] = nodeValue("Fill Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + inputs[| 3] = nodeValue("Fill Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); inputs[| 4] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom_range(10000, 99999)); diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index d12a44177..badc80ee0 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -40,10 +40,11 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { } #region nodes - globalvar ALL_NODES, ALL_NODE_LIST, NODE_CATEGORY, NODE_PAGE_DEFAULT; - ALL_NODES = ds_map_create(); - ALL_NODE_LIST = ds_list_create(); - NODE_CATEGORY = ds_list_create(); + globalvar ALL_NODES, ALL_NODE_LIST, NODE_CATEGORY, NODE_PAGE_DEFAULT, NODE_PB_CATEGORY; + ALL_NODES = ds_map_create(); + ALL_NODE_LIST = ds_list_create(); + NODE_CATEGORY = ds_list_create(); + NODE_PB_CATEGORY = ds_list_create(); function nodeBuild(_name, _x, _y, _group = PANEL_GRAPH.getCurrentContext()) { if(!ds_map_exists(ALL_NODES, _name)) { @@ -77,6 +78,10 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { ds_list_add(NODE_CATEGORY, { name: name, list: list, filter: filter }); } + function addNodePBCatagory(name, list, filter = []) { + ds_list_add(NODE_PB_CATEGORY, { name: name, list: list, filter: filter }); + } + function __initNodes() { var favPath = DIRECTORY + "Nodes/fav.json"; global.FAV_NODES = file_exists(favPath)? json_load_struct(favPath) : []; @@ -369,6 +374,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { addNodeObject(generator, "4 Points Gradient", s_node_gradient_4points, "Node_Gradient_Points", [1, Node_Gradient_Points],, "Create image from 4 color points."); ds_list_add(generator, "Drawer"); + addNodeObject(generator, "Pixel Builder", s_node_pixel_builder, "Node_Pixel_Builder", [1, Node_Pixel_Builder]).setVersion(1147); addNodeObject(generator, "Line", s_node_line, "Node_Line", [1, Node_Line],, "Draw line on an image. Connect path data to it to draw line from path."); addNodeObject(generator, "Draw Text", s_node_text_render, "Node_Text", [1, Node_Text],, "Draw text on an image."); addNodeObject(generator, "Shape", s_node_shape, "Node_Shape", [1, Node_Shape],, "Draw simple shapes using signed distance field."); @@ -616,10 +622,62 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { ds_list_add(node, "Debug"); addNodeObject(node, "Print", s_node_print, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145); - //var vct = ds_list_create(); - //addNodeCatagory("VCT", vct); - // addNodeObject(vct, "Biterator", s_node_condition, "Node_Biterator", [1, Node_Biterator]); - //addNodeObject(vct, "Blinker", s_node_condition, "Node_VCT_Blinker", [1, Node_VCT_Blinker]); + //////////////////////////////////////////////////////////////// PIXEL BUILDER //////////////////////////////////////////////////////////////// + + var pb_draw = ds_list_create(); + addNodePBCatagory("Draw", pb_draw); + ds_list_add(pb_draw, "Fill"); + addNodeObject(pb_draw, "Fill", s_node_pb_draw_fill, "Node_PB_Draw_Fill", [1, Node_PB_Draw_Fill]); + + ds_list_add(pb_draw, "Shape"); + addNodeObject(pb_draw, "Rectangle", s_node_pb_draw_rectangle, "Node_PB_Draw_Rectangle", [1, Node_PB_Draw_Rectangle]); + addNodeObject(pb_draw, "Round Rectangle", s_node_pb_draw_roundrectangle, "Node_PB_Draw_Round_Rectangle", [1, Node_PB_Draw_Round_Rectangle]); + addNodeObject(pb_draw, "Trapezoid", s_node_pb_draw_trapezoid, "Node_PB_Draw_Trapezoid", [1, Node_PB_Draw_Trapezoid]); + addNodeObject(pb_draw, "Ellipse", s_node_pb_draw_ellipse, "Node_PB_Draw_Ellipse", [1, Node_PB_Draw_Ellipse]); + addNodeObject(pb_draw, "Semi-Ellipse", s_node_pb_draw_semi_ellipse, "Node_PB_Draw_Semi_Ellipse", [1, Node_PB_Draw_Semi_Ellipse]); + addNodeObject(pb_draw, "Angle", s_node_pb_draw_angle, "Node_PB_Draw_Angle", [1, Node_PB_Draw_Angle]); + addNodeObject(pb_draw, "Blob", s_node_pb_draw_blob, "Node_PB_Draw_Blob", [1, Node_PB_Draw_Blob]); + + var pb_box = ds_list_create(); + addNodePBCatagory("Box", pb_box); + ds_list_add(pb_box, "Layer"); + addNodeObject(pb_box, "Layer", s_node_pb_layer, "Node_PB_Layer", [1, Node_PB_Layer]); + + ds_list_add(pb_box, "Box"); + addNodeObject(pb_box, "Transform", s_node_pb_box_transform, "Node_PB_Box_Transform", [1, Node_PB_Box_Transform]); + addNodeObject(pb_box, "Mirror", s_node_pb_box_mirror, "Node_PB_Box_Mirror", [1, Node_PB_Box_Mirror]); + addNodeObject(pb_box, "Inset", s_node_pb_box_inset, "Node_PB_Box_Inset", [1, Node_PB_Box_Inset]); + addNodeObject(pb_box, "Split", s_node_pb_box_split, "Node_PB_Box_Split", [1, Node_PB_Box_Split]); + addNodeObject(pb_box, "Divide", s_node_pb_box_divide, "Node_PB_Box_Divide", [1, Node_PB_Box_Divide]); + addNodeObject(pb_box, "Divide Grid", s_node_pb_box_divide_grid, "Node_PB_Box_Divide_Grid", [1, Node_PB_Box_Divide_Grid]); + addNodeObject(pb_box, "Contract", s_node_pb_box_contract, "Node_PB_Box_Contract", [1, Node_PB_Box_Contract]); + + var pb_fx = ds_list_create(); + addNodePBCatagory("Effects", pb_fx); + ds_list_add(pb_fx, "Effect"); + addNodeObject(pb_fx, "Outline", s_node_pb_fx_outline, "Node_PB_Fx_Outline", [1, Node_PB_Fx_Outline]); + addNodeObject(pb_fx, "Stack", s_node_pb_fx_stack, "Node_PB_Fx_Stack", [1, Node_PB_Fx_Stack]); + addNodeObject(pb_fx, "Radial", s_node_pb_fx_radial, "Node_PB_Fx_Radial", [1, Node_PB_Fx_Radial]); + + ds_list_add(pb_fx, "Lighting"); + addNodeObject(pb_fx, "Highlight", s_node_pb_fx_highlight, "Node_PB_Fx_Highlight", [1, Node_PB_Fx_Highlight]); + addNodeObject(pb_fx, "Shading", s_node_pb_fx_shading, "Node_PB_Fx_Shading", [1, Node_PB_Fx_Shading]); + + ds_list_add(pb_fx, "Texture"); + addNodeObject(pb_fx, "Hashing", s_node_pb_fx_hash, "Node_PB_Fx_Hash", [1, Node_PB_Fx_Hash]); + + ds_list_add(pb_fx, "Blend"); + addNodeObject(pb_fx, "Add", s_node_pb_fx_add, "Node_PB_Fx_Add", [1, Node_PB_Fx_Add]); + addNodeObject(pb_fx, "Subtract", s_node_pb_fx_subtract, "Node_PB_Fx_Subtract", [1, Node_PB_Fx_Subtract]); + addNodeObject(pb_fx, "Intersect", s_node_pb_fx_interesct, "Node_PB_Fx_Intersect", [1, Node_PB_Fx_Intersect]); + + var pb_arr = ds_list_create(); + addNodePBCatagory("Array", pb_arr); + addNodeObject(pb_arr, "Array", s_node_array, "Node_Array", [1, Node_Array]); + addNodeObject(pb_arr, "Array Get", s_node_array_get, "Node_Array_Get", [1, Node_Array_Get], ["get array"]); + addNodeObject(pb_arr, "Array Set", s_node_array_set, "Node_Array_Set", [1, Node_Array_Set], ["set array"]).setVersion(1120); + addNodeObject(pb_arr, "Array Insert", s_node_array_insert, "Node_Array_Insert", [1, Node_Array_Insert], ["insert array"]).setVersion(1120); + addNodeObject(pb_arr, "Array Remove", s_node_array_remove, "Node_Array_Remove", [1, Node_Array_Remove], ["remove array", "delete array", "array delete"]).setVersion(1120); var hid = ds_list_create(); addNodeCatagory("Hidden", hid, ["Hidden"]); @@ -670,200 +728,4 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { global.VALUE_SUGGESTION[? VALUE_TYPE.buffer] = [ "Node_Surface_From_Buffer" ]; global.VALUE_SUGGESTION[? VALUE_TYPE.action] = [ ]; -#endregion - -#region node function - function nodeLoad(_data, scale = false, _group = PANEL_GRAPH.getCurrentContext()) { - if(!is_struct(_data)) return; - - var _x = _data.x; - var _y = _data.y; - var _type = _data.type; - - var _node = nodeBuild(_type, _x, _y, _group); - if(_node) _node.deserialize(_data, scale); - - return _node; - } - - function nodeDelete(node, _merge = false) { - var list = node.group == noone? PROJECT.nodes : node.group.getNodeList(); - ds_list_remove(list, node); - node.destroy(_merge); - - recordAction(ACTION_TYPE.node_delete, node); - PANEL_ANIMATION.updatePropertyList(); - } - - function nodeCleanUp() { - var key = ds_map_find_first(PROJECT.nodeMap); - repeat(ds_map_size(PROJECT.nodeMap)) { - if(PROJECT.nodeMap[? key]) { - PROJECT.nodeMap[? key].active = false; - PROJECT.nodeMap[? key].cleanUp(); - delete PROJECT.nodeMap[? key]; - } - key = ds_map_find_next(PROJECT.nodeMap, key); - } - - ds_map_clear(APPEND_MAP); - } - - function graphFocusNode(node) { - PANEL_INSPECTOR.setInspecting(node); - ds_list_clear(PANEL_GRAPH.nodes_select_list); - PANEL_GRAPH.node_focus = node; - PANEL_GRAPH.fullView(); - } - - function refreshNodeMap() { - ds_map_clear(PROJECT.nodeNameMap); - var key = ds_map_find_first(PROJECT.nodeMap); - var amo = ds_map_size(PROJECT.nodeMap); - - repeat(amo) { - var node = PROJECT.nodeMap[? key]; - - if(node.internalName != "") - PROJECT.nodeNameMap[? node.internalName] = node; - - key = ds_map_find_next(PROJECT.nodeMap, key); - } - } - - function nodeGetData(str) { - str = string_trim(str); - var strs = string_splice(str, "."); - - if(array_length(strs) == 0) return 0; - - if(array_length(strs) == 1) { - var splt = string_splice(strs[0], "["); - var inp = PROJECT.globalNode.getInput(strs[0]); - return inp == noone? 0 : inp.getValueRecursive()[0]; - } else if(string_lower(strs[0]) == "project") { - if(!ds_map_exists(PROJECT_VARIABLES, strs[1])) return 0; - return PROJECT_VARIABLES[? strs[1]](); - } else if(array_length(strs) > 2) { - var key = strs[0]; - if(!ds_map_exists(PROJECT.nodeNameMap, key)) return 0; - - var node = PROJECT.nodeNameMap[? key]; - var map = noone; - switch(string_lower(strs[1])) { - case "inputs" : - case "input" : - map = node.inputMap; - break; - case "outputs" : - case "output" : - map = node.outputMap; - break; - default : return 0; - } - - var _junc_key = string_lower(strs[2]); - var _junc = ds_map_try_get(map, _junc_key, noone); - - if(_junc == noone) return 0; - - return _junc.getValue(); - } - - return 0; - } -#endregion - -#region attribute - global.SURFACE_INTERPOLATION = [ - "No aliasing", - "Bilinear", - "Bicubic", - "radSin" - ]; - - global.SURFACE_OVERSAMPLE = [ - "Empty", - "Clamp", - "Repeat" - ]; - - function __initSurfaceFormat() { - var surface_format = [ - surface_rgba4unorm, - surface_rgba8unorm, - surface_rgba16float, - surface_rgba32float, - surface_r8unorm, - surface_r16float, - surface_r32float - ]; - - var surface_format_name = [ - "4 bit RGBA", - "8 bit RGBA", - "16 bit RGBA", - "32 bit RGBA", - "8 bit Greyscale", - "16 bit Greyscale", - "32 bit Greyscale" - ]; - - global.SURFACE_FORMAT = []; - global.SURFACE_FORMAT_NAME = []; - - for( var i = 0; i < array_length(surface_format); i++ ) { - var sup = surface_format_is_supported(surface_format[i]); - array_push(global.SURFACE_FORMAT, surface_format[i]); - array_push(global.SURFACE_FORMAT_NAME, (sup? "" : "-") + surface_format_name[i]); - - if(!sup) log_message("WARNING", "Surface format [" + surface_format_name[i] + "] not supported in this device."); - } - - global.SURFACE_FORMAT_NAME_PROCESS = [ "Input" ]; - global.SURFACE_FORMAT_NAME_PROCESS = array_append(global.SURFACE_FORMAT_NAME_PROCESS, global.SURFACE_FORMAT_NAME); - } - - function attribute_surface_depth(label = true) { - var depth_array = inputs[| 0].type == VALUE_TYPE.surface? global.SURFACE_FORMAT_NAME_PROCESS : global.SURFACE_FORMAT_NAME; - attributes.color_depth = array_find(depth_array, "8 bit RGBA"); - - if(label) array_push(attributeEditors, "Surface"); - array_push(attributeEditors, ["Color depth", function() { return attributes.color_depth; }, - new scrollBox(depth_array, function(val) { - attributes.color_depth = val; - triggerRender(); - }, false)]); - } - - function attribute_interpolation(label = false) { - attributes.interpolation = 0; - - if(label) array_push(attributeEditors, "Surface"); - array_push(attributeEditors, ["Texture interpolation", function() { return attributes.interpolation; }, - new scrollBox(global.SURFACE_INTERPOLATION, function(val) { - attributes.interpolation = val; - triggerRender(); - }, false)]); - } - - function attribute_oversample(label = false) { - attributes.oversample = 0; - - if(label) array_push(attributeEditors, "Surface"); - array_push(attributeEditors, ["Oversample", function() { return attributes.oversample; }, - new scrollBox(global.SURFACE_OVERSAMPLE, function(val) { - attributes.oversample = val; - triggerRender(); - }, false)]); - } - - function attribute_auto_execute(label = false) { - attributes.auto_exe = false; - if(label) array_push(attributeEditors, "Node"); - array_push(attributeEditors, ["Auto execute", function() { return attributes.auto_exe; }, - new checkBox(function() { - attributes.auto_exe = !attributes.auto_exe; - })]); - } #endregion \ No newline at end of file diff --git a/scripts/node_repeat/node_repeat.gml b/scripts/node_repeat/node_repeat.gml index 923c429a2..645692dea 100644 --- a/scripts/node_repeat/node_repeat.gml +++ b/scripts/node_repeat/node_repeat.gml @@ -3,7 +3,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); @@ -11,7 +11,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor inputs[| 3] = nodeValue("Pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Linear", "Grid", "Circular" ]); - inputs[| 4] = nodeValue("Repeat position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [def_surf_size / 2, 0]) + inputs[| 4] = nodeValue("Repeat position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [DEF_SURF_W / 2, 0]) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function() { return getDimension(); }); @@ -50,7 +50,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constructor inputs[| 18] = nodeValue("Column", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); - inputs[| 19] = nodeValue("Column shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, def_surf_size / 2]) + inputs[| 19] = nodeValue("Column shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, DEF_SURF_H / 2]) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function() { return getDimension(); }); diff --git a/scripts/node_rigid_render/node_rigid_render.gml b/scripts/node_rigid_render/node_rigid_render.gml index 710383256..57bccbc6d 100644 --- a/scripts/node_rigid_render/node_rigid_render.gml +++ b/scripts/node_rigid_render/node_rigid_render.gml @@ -4,7 +4,7 @@ function Node_Rigid_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constr icon = THEME.rigidSim; use_cache = true; - inputs[| 0] = nodeValue("Render dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, def_surf_size2) + inputs[| 0] = nodeValue("Render dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector) .rejectArray(); diff --git a/scripts/node_scale/node_scale.gml b/scripts/node_scale/node_scale.gml index 94d2ba17f..4ffb5c46d 100644 --- a/scripts/node_scale/node_scale.gml +++ b/scripts/node_scale/node_scale.gml @@ -10,7 +10,7 @@ function Node_Scale(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con inputs[| 2] = nodeValue("Mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Upscale", "Scale to fit" ]); - inputs[| 3] = nodeValue("Target dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, def_surf_size2) + inputs[| 3] = nodeValue("Target dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 4] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); diff --git a/scripts/node_scatter/node_scatter.gml b/scripts/node_scatter/node_scatter.gml index 012a4ee03..7d6e78830 100644 --- a/scripts/node_scatter/node_scatter.gml +++ b/scripts/node_scatter/node_scatter.gml @@ -4,7 +4,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8); @@ -15,7 +15,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 4] = nodeValue("Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0]) .setDisplay(VALUE_DISPLAY.rotation_range); - inputs[| 5] = nodeValue("Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + inputs[| 5] = nodeValue("Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ DEF_SURF_W / 2, DEF_SURF_H / 2, DEF_SURF_W / 2, DEF_SURF_H / 2, AREA_SHAPE.rectangle ]) .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }); inputs[| 6] = nodeValue("Distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) @@ -56,14 +56,16 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 19] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone); + inputs[| 20] = nodeValue("Rotate along path", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); outputs[| 1] = nodeValue("Atlas data", self, JUNCTION_CONNECT.output, VALUE_TYPE.atlas, []) .rejectArrayProcess(); input_display_list = [ - ["Output", false], 0, 1, 15, 10, - ["Scatter", false], 5, 6, 13, 14, 19, 17, 9, 2, + ["Output", true], 0, 1, 15, 10, + ["Scatter", false], 5, 6, 13, 14, 19, 20, 17, 9, 2, ["Transform", false], 3, 8, 7, 4, ["Render", false], 18, 11, 12, 16, ]; @@ -99,6 +101,7 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 17].setVisible(_dis == 3); inputs[| 9].setVisible(_dis != 2); inputs[| 19].setVisible(_dis == 4, _dis == 4); + inputs[| 20].setVisible(_dis == 4); } static process_data = function(_outSurf, _data, _output_index, _array_index) { @@ -131,7 +134,9 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var mulpA = _data[16]; var useV = _data[17]; var blend = _data[18]; + var path = _data[19]; + var pathRot = _data[20]; var _in_w, _in_h; @@ -205,6 +210,15 @@ function Node_Scatter(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c if(vRot && _v != noone) _r *= _v; + + if(_dist == 4 && path != noone && pathRot) { + var rat = i / max(1, _amount - 1) * 0.9999; + var p0 = path.getPointRatio(clamp(rat - 0.001, 0, 0.9999)); + var p1 = path.getPointRatio(clamp(rat + 0.001, 0, 0.9999)); + + var dirr = point_direction(p0.x, p0.y, p1.x, p1.y); + _r += dirr; + } var surf = _inSurf; var ind = 0; diff --git a/scripts/node_scatter_points/node_scatter_points.gml b/scripts/node_scatter_points/node_scatter_points.gml index f8958fb75..e971d3d84 100644 --- a/scripts/node_scatter_points/node_scatter_points.gml +++ b/scripts/node_scatter_points/node_scatter_points.gml @@ -5,7 +5,7 @@ function Node_Scatter_Points(_x, _y, _group = noone) : Node(_x, _y, _group) cons w = 96; - inputs[| 0] = nodeValue("Point area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + inputs[| 0] = nodeValue("Point area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2, DEF_SURF_W / 2, DEF_SURF_H / 2, AREA_SHAPE.rectangle ]) .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 7].getValue(); }); inputs[| 1] = nodeValue("Point distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) @@ -27,7 +27,7 @@ function Node_Scatter_Points(_x, _y, _group = noone) : Node(_x, _y, _group) cons inputs[| 6] = nodeValue("Fixed position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Fix point position, and only select point in the area."); - inputs[| 7] = nodeValue("Reference dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 7] = nodeValue("Reference dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); input_display_list = [ diff --git a/scripts/node_simple_shape/node_simple_shape.gml b/scripts/node_simple_shape/node_simple_shape.gml index f54e2e448..f05a7594f 100644 --- a/scripts/node_simple_shape/node_simple_shape.gml +++ b/scripts/node_simple_shape/node_simple_shape.gml @@ -30,7 +30,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con uniform_stRad = shader_get_uniform(shader, "stRad"); uniform_edRad = shader_get_uniform(shader, "edRad"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); @@ -38,7 +38,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con inputs[| 2] = nodeValue("Shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Rectangle", "Ellipse", "Regular polygon", "Star", "Arc", "Teardrop", "Cross", "Leaf" ]); - inputs[| 3] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + inputs[| 3] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W / 2, DEF_SURF_H / 2, DEF_SURF_W / 2, DEF_SURF_H / 2, AREA_SHAPE.rectangle ]) .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 0].getValue(); }); inputs[| 4] = nodeValue("Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 3) diff --git a/scripts/node_solid/node_solid.gml b/scripts/node_solid/node_solid.gml index c4db38682..accd3391b 100644 --- a/scripts/node_solid/node_solid.gml +++ b/scripts/node_solid/node_solid.gml @@ -1,7 +1,7 @@ function Node_Solid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Solid"; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); diff --git a/scripts/node_sprite_stack/node_sprite_stack.gml b/scripts/node_sprite_stack/node_sprite_stack.gml index 8a24b7ebb..7cc8f0a6b 100644 --- a/scripts/node_sprite_stack/node_sprite_stack.gml +++ b/scripts/node_sprite_stack/node_sprite_stack.gml @@ -4,7 +4,7 @@ function Node_Sprite_Stack(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro inputs[| 0] = nodeValue("Base shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); - inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue("Stack amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); @@ -26,12 +26,20 @@ function Node_Sprite_Stack(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro inputs[| 8] = nodeValue("Move base", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make each copy move the original image." ); + inputs[| 9] = nodeValue("Highlight", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "None", "Color", "Inner pixel" ]); + + inputs[| 10] = nodeValue("Highlight color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); + + inputs[| 11] = nodeValue("Highlight alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) + .setDisplay(VALUE_DISPLAY.slider, [0, 1, .01]); + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); input_display_list = [ ["Output", true], 0, 1, ["Stack", false], 2, 3, 8, 4, 5, - ["Render", false], 6, 7, + ["Render", false], 6, 7, 9, 10, 11, ]; attribute_surface_depth(); @@ -45,17 +53,28 @@ function Node_Sprite_Stack(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny); } - static process_data = function(_outSurf, _data, _output_index, _array_index) { - var _in = _data[0]; - var _dim = _data[1]; - var _amo = _data[2]; - var _shf = _data[3]; + static step = function() { + var _high = inputs[| 9].getValue(); - var _pos = _data[4]; - var _rot = _data[5]; - var _col = _data[6]; - var _alp = _data[7]; - var _mov = _data[8]; + inputs[| 10].setVisible(_high); + inputs[| 11].setVisible(_high); + } + + static process_data = function(_outSurf, _data, _output_index, _array_index) { + var _in = _data[0]; + var _dim = _data[1]; + var _amo = _data[2]; + var _shf = _data[3]; + + var _pos = _data[4]; + var _rot = _data[5]; + var _col = _data[6]; + var _alp = _data[7]; + var _mov = _data[8]; + + var _hig = _data[ 9]; + var _hiC = _data[10]; + var _hiA = _data[11]; _outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth()); @@ -68,7 +87,7 @@ function Node_Sprite_Stack(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro DRAW_CLEAR if(is_surface(_in)) { var _ww = surface_get_width(_in); - var _hh = surface_get_width(_in); + var _hh = surface_get_height(_in); var _po = point_rotate(0, 0, _ww / 2, _hh / 2, _rot); var aa = _alp; var aa_delta = (1 - aa) / _amo; @@ -76,13 +95,23 @@ function Node_Sprite_Stack(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro _pos[0] += _shf[0] * _amo; _pos[1] += _shf[1] * _amo; - repeat(_amo) { - draw_surface_ext_safe(_in, _po[0] + _pos[0], _po[1] + _pos[1], 1, 1, _rot, _col, aa); + for( var i = 0; i < _amo; i++ ) { + if(_hig && i == _amo - 1) { + shader_set(sh_replace_color); + shader_set_i("type", _hig); + shader_set_f("dimension", _ww, _hh); + shader_set_f("shift", _shf[0] / _ww, _shf[1] / _hh); + shader_set_f("angle", degtorad(_rot)); + draw_surface_ext_safe(_in, _po[0] + _pos[0], _po[1] + _pos[1], 1, 1, _rot, _hiC, _hiA); + shader_reset(); + } else + draw_surface_ext_safe(_in, _po[0] + _pos[0], _po[1] + _pos[1], 1, 1, _rot, _col, aa); _pos[0] -= _shf[0]; _pos[1] -= _shf[1]; aa += aa_delta; } + draw_surface_ext_safe(_in, _po[0] + _pos[0], _po[1] + _pos[1], 1, 1, _rot, c_white, aa); } else if(is_array(_in)) { for(var i = 0; i < _amo; i++) { diff --git a/scripts/node_strand_render/node_strand_render.gml b/scripts/node_strand_render/node_strand_render.gml index 09524fbde..b3b70fb64 100644 --- a/scripts/node_strand_render/node_strand_render.gml +++ b/scripts/node_strand_render/node_strand_render.gml @@ -4,7 +4,7 @@ function Node_Strand_Render(_x, _y, _group = noone) : Node(_x, _y, _group) const icon = THEME.strandSim; use_cache = true; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Strand", self, JUNCTION_CONNECT.input, VALUE_TYPE.strands, noone) diff --git a/scripts/node_strand_render_texture/node_strand_render_texture.gml b/scripts/node_strand_render_texture/node_strand_render_texture.gml index 44d44096a..484ab8d9d 100644 --- a/scripts/node_strand_render_texture/node_strand_render_texture.gml +++ b/scripts/node_strand_render_texture/node_strand_render_texture.gml @@ -4,7 +4,7 @@ function Node_Strand_Render_Texture(_x, _y, _group = noone) : Node(_x, _y, _grou icon = THEME.strandSim; use_cache = true; - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Strand", self, JUNCTION_CONNECT.input, VALUE_TYPE.strands, noone) diff --git a/scripts/node_stripe/node_stripe.gml b/scripts/node_stripe/node_stripe.gml index 61726947b..105ae2d0c 100644 --- a/scripts/node_stripe/node_stripe.gml +++ b/scripts/node_stripe/node_stripe.gml @@ -18,7 +18,7 @@ function Node_Stripe(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co uniform_clr0 = shader_get_uniform(shader, "color0"); uniform_clr1 = shader_get_uniform(shader, "color1"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1) diff --git a/scripts/node_surface_from_color/node_surface_from_color.gml b/scripts/node_surface_from_color/node_surface_from_color.gml index e0644d8e8..9613fc0cf 100644 --- a/scripts/node_surface_from_color/node_surface_from_color.gml +++ b/scripts/node_surface_from_color/node_surface_from_color.gml @@ -1,7 +1,7 @@ function Node_Surface_From_Color(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Surface from Color"; - inputs[| 0] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, []) + inputs[| 0] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE ) .setDisplay(VALUE_DISPLAY.palette); outputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); diff --git a/scripts/node_text/node_text.gml b/scripts/node_text/node_text.gml index 62589b310..669a74446 100644 --- a/scripts/node_text/node_text.gml +++ b/scripts/node_text/node_text.gml @@ -17,7 +17,7 @@ function Node_Text(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons inputs[| 5] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); - inputs[| 6] = nodeValue("Fixed dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 6] = nodeValue("Fixed dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector) .setVisible(true, false); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index d3959981a..f44f98c64 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -34,6 +34,8 @@ enum VALUE_TYPE { armature = 23, buffer = 24, + pbBox = 25, + action = 99, } @@ -59,6 +61,7 @@ enum VALUE_DISPLAY { area, kernel, transform, + corner, //Curve curve, @@ -113,6 +116,7 @@ function value_color(i) { $5dde8f, //gradient $6691ff, //armature $808080, //buffer + $976bff, //pbBox ]; if(i == 99) return $5dde8f; @@ -147,6 +151,8 @@ function value_bit(i) { case VALUE_TYPE.buffer : return 1 << 27; + case VALUE_TYPE.pbBox : return 1 << 28; + case VALUE_TYPE.trigger : return 1 << 22; case VALUE_TYPE.action : return 1 << 22 | 1 << 3; @@ -452,6 +458,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru process_array = true; validateValue = true; + fullUpdate = false; + static setDefault = function(vals) { if(LOADING || APPENDING) return self; @@ -698,6 +706,17 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru }, unit); if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1); + for( var i = 0; i < array_length(animators); i++ ) + animators[i].suffix = " " + array_safe_get(global.displaySuffix_Padding, i); + + extract_node = "Node_Vector4"; + break; + case VALUE_DISPLAY.corner : + editWidget = new cornerBox(function(index, val) { + return setValueDirect(val, index); + }, unit); + if(type == VALUE_TYPE.integer) editWidget.setSlideSpeed(1); + for( var i = 0; i < array_length(animators); i++ ) animators[i].suffix = " " + array_safe_get(global.displaySuffix_Padding, i); @@ -1250,7 +1269,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru updated = animators[index].setValue(val, connect_type == JUNCTION_CONNECT.input && record, time); } else { if(index != noone) { - var _val = animator.getValue(time); + var _val = variable_clone(animator.getValue(time)); _val[index] = val; updated = animator.setValue(_val, connect_type == JUNCTION_CONNECT.input && record, time); } else @@ -1267,7 +1286,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru if(_update) node.valueUpdate(self.index); node.clearCacheForward(); - UPDATE |= RENDER_TYPE.partial; + if(fullUpdate) UPDATE |= RENDER_TYPE.full; + else UPDATE |= RENDER_TYPE.partial; } cache_array[0] = false; diff --git a/scripts/node_wrap/node_wrap.gml b/scripts/node_wrap/node_wrap.gml index 41b7c88ab..9e9ce52a6 100644 --- a/scripts/node_wrap/node_wrap.gml +++ b/scripts/node_wrap/node_wrap.gml @@ -7,15 +7,15 @@ function Node_Warp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 2] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] ) + inputs[| 2] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W, 0 ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 3] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] ) + inputs[| 3] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, DEF_SURF_H ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 4] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] ) + inputs[| 4] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); diff --git a/scripts/node_wrap_perspective/node_wrap_perspective.gml b/scripts/node_wrap_perspective/node_wrap_perspective.gml index 77eda2df2..f724abb2c 100644 --- a/scripts/node_wrap_perspective/node_wrap_perspective.gml +++ b/scripts/node_wrap_perspective/node_wrap_perspective.gml @@ -10,15 +10,15 @@ function Node_Warp_Perspective(_x, _y, _group = noone) : Node_Processor(_x, _y, .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 3] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] ) + inputs[| 3] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W, 0 ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 4] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] ) + inputs[| 4] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, DEF_SURF_H ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 5] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] ) + inputs[| 5] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); @@ -26,15 +26,15 @@ function Node_Warp_Perspective(_x, _y, _group = noone) : Node_Processor(_x, _y, .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 7] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, 0 ] ) + inputs[| 7] = nodeValue("Top right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ DEF_SURF_W, 0 ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 8] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, def_surf_size ] ) + inputs[| 8] = nodeValue("Bottom left", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, DEF_SURF_H ] ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); - inputs[| 9] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size, def_surf_size ] ) + inputs[| 9] = nodeValue("Bottom right", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector) .setUnitRef(function(index) { return getDimension(index); }); diff --git a/scripts/node_zigzag/node_zigzag.gml b/scripts/node_zigzag/node_zigzag.gml index 049ea431f..2e8e0aa58 100644 --- a/scripts/node_zigzag/node_zigzag.gml +++ b/scripts/node_zigzag/node_zigzag.gml @@ -9,7 +9,7 @@ function Node_Zigzag(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co uniform_col1 = shader_get_uniform(shader, "col1"); uniform_col2 = shader_get_uniform(shader, "col2"); - inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) + inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF ) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) diff --git a/scripts/notification_system/notification_system.yy b/scripts/notification_system/notification_system.yy index 055a711ca..80d6e20f7 100644 --- a/scripts/notification_system/notification_system.yy +++ b/scripts/notification_system/notification_system.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index ce52c1651..82995a0e9 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -1772,6 +1772,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { case "Node_Rigid_Group" : bg = merge_color(COLORS.panel_bg_clear, COLORS.node_blend_simulation, 0.05); break; case "Node_Fluid_Group" : bg = merge_color(COLORS.panel_bg_clear, COLORS.node_blend_fluid, 0.05); break; case "Node_Strand_Group" : bg = merge_color(COLORS.panel_bg_clear, COLORS.node_blend_strand, 0.05); break; + case "Node_Pixel_Builder" : bg = merge_color(COLORS.panel_bg_clear, COLORS.node_blend_feedback, 0.05); break; } draw_clear(bg); diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index e9312bf39..2f603866a 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -1,6 +1,6 @@ -function Inspector_Custom_Renderer(draw) : widget() constructor { +function Inspector_Custom_Renderer(drawFn) : widget() constructor { h = 64; - self.draw = draw; + self.draw = drawFn; } function Panel_Inspector() : PanelContent() constructor { @@ -68,8 +68,9 @@ function Panel_Inspector() : PanelContent() constructor { meta_tb[i].hide = true; meta_display = [ - [ __txt("Metadata"), false ], - [ __txtx("panel_globalvar", "Global variables"), false, button(function() { panelAdd("Panel_Globalvar", true); }, THEME.node_goto).setIcon(THEME.node_goto, 0, COLORS._main_icon) ] + [ __txt("Project Settings"), false ], + [ __txt("Metadata"), true ], + [ __txtx("panel_globalvar", "Global variables"), true, button(function() { panelAdd("Panel_Globalvar", true); }, THEME.node_goto).setIcon(THEME.node_goto, 0, COLORS._main_icon) ] ]; workshop_uploading = false; @@ -133,7 +134,10 @@ function Panel_Inspector() : PanelContent() constructor { var hh = ui(8); var yy = _y + ui(8); - for( var i = 0; i < 2; i++ ) { + var rx = x + ui(16); + var ry = y + top_bar_h; + + for( var i = 0; i < array_length(meta_display); i++ ) { var _meta = meta_display[i]; var _txt = array_safe_get(_meta, 0); var _b = array_safe_get(_meta, 2, noone); @@ -166,12 +170,44 @@ function Panel_Inspector() : PanelContent() constructor { continue; } - if(i == 0) { + if(i == 0) { + var _edt = PROJECT.attributeEditor; + for( var j = 0; j < array_length(_edt); j++ ) { + var title = _edt[j][0]; + var param = _edt[j][1]; + var editW = _edt[j][2]; + + draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text_inner); + draw_text_add(ui(32), yy, __txt(title)); + yy += line_get_height() + ui(6); + hh += line_get_height() + ui(6); + + editW.setFocusHover(pFOCUS, _hover); + if(pFOCUS) editW.register(contentPane); + + var wh = 0; + var _data = PROJECT.attributes[$ param]; + + wh = editW.drawParam({ + x: ui(16), + y: yy, + w: w - ui(16 + 48), + h: TEXTBOX_HEIGHT, + data: _data, + m: _m, + rx: rx, + ry: ry, + }); + + yy += wh + ui(8); + hh += wh + ui(8); + } + } else if(i == 1) { for( var j = 0; j < array_length(meta.displays); j++ ) { var display = meta.displays[j]; draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text_inner); - draw_text_add(ui(16), yy, __txt(display[0])); + draw_text_add(ui(32), yy, __txt(display[0])); yy += line_get_height() + ui(6); hh += line_get_height() + ui(6); @@ -188,8 +224,6 @@ function Panel_Inspector() : PanelContent() constructor { break; case "textArrayBox" : meta_tb[j].arraySet = current_meta.tags; - var rx = x + ui(16); - var ry = y + top_bar_h; wh = meta_tb[j].draw(ui(16), yy, w - ui(16 + 48), display[2], _m, rx, ry); break; } @@ -197,7 +231,7 @@ function Panel_Inspector() : PanelContent() constructor { yy += wh + ui(8); hh += wh + ui(8); } - } else if (i == 1) { + } else if (i == 2) { if(findPanel("Panel_Globalvar")) { yy += ui(4); hh += ui(4); diff --git a/scripts/preferences/preferences.yy b/scripts/preferences/preferences.yy index 9a7fa163c..dcc59f159 100644 --- a/scripts/preferences/preferences.yy +++ b/scripts/preferences/preferences.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/preset_data/preset_data.yy b/scripts/preset_data/preset_data.yy index bd7674955..094b54edc 100644 --- a/scripts/preset_data/preset_data.yy +++ b/scripts/preset_data/preset_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/render_data/render_data.yy b/scripts/render_data/render_data.yy index 234200c13..a9f68f146 100644 --- a/scripts/render_data/render_data.yy +++ b/scripts/render_data/render_data.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/sample_projects/sample_projects.yy b/scripts/sample_projects/sample_projects.yy index 070701b1e..dfc13af5b 100644 --- a/scripts/sample_projects/sample_projects.yy +++ b/scripts/sample_projects/sample_projects.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/shader_functions/shader_functions.gml b/scripts/shader_functions/shader_functions.gml index 17bc9c6d9..a31042580 100644 --- a/scripts/shader_functions/shader_functions.gml +++ b/scripts/shader_functions/shader_functions.gml @@ -71,6 +71,27 @@ function shader_set_surface_dimension(uniform, surface) { shader_set_uniform_f(shader_get_uniform(shader, uniform), tw, th); } +function shader_set_dim(uniform = "dimension", surf = noone) { + if(!is_surface(surf)) return; + + shader_set_f(uniform, surface_get_width(surf), surface_get_height(surf)); +} + +function shader_set_color(uniform, col, alpha = 1) { + shader_set_f(uniform, colToVec4(col, alpha)); +} + +function shader_set_palette(pal, pal_uni = "palette", amo_uni = "paletteAmount") { + shader_set_i(amo_uni, array_length(pal)); + + var _pal = []; + for( var i = 0; i < array_length(pal); i++ ) + array_append(_pal, colToVec4(pal[i])); + + if(array_length(_pal)) + shader_set_f(pal_uni, _pal); +} + #region prebuild enum BLEND { normal, diff --git a/scripts/sprite_loader/sprite_loader.yy b/scripts/sprite_loader/sprite_loader.yy index 3f803a8ea..606d671a3 100644 --- a/scripts/sprite_loader/sprite_loader.yy +++ b/scripts/sprite_loader/sprite_loader.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/theme_definition/theme_definition.yy b/scripts/theme_definition/theme_definition.yy index 4c7284279..9f6636f6c 100644 --- a/scripts/theme_definition/theme_definition.yy +++ b/scripts/theme_definition/theme_definition.yy @@ -5,7 +5,7 @@ "isCompatibility": false, "isDnD": false, "parent": { - "name": "scritps", - "path": "folders/main/scritps.yy", + "name": "startup scripts", + "path": "folders/main/startup scripts.yy", }, } \ No newline at end of file diff --git a/scripts/transformBox/transformBox.gml b/scripts/transformBox/transformBox.gml index b653f0bab..53a52b338 100644 --- a/scripts/transformBox/transformBox.gml +++ b/scripts/transformBox/transformBox.gml @@ -38,8 +38,8 @@ function transformBox(_onModify) : widget() constructor { tb[TRANSFORM.sca_y].register(parent); } - static drawParam = function(param) { - return draw(param.x, param.y, param.w, param.data, param.mouse); + static drawParam = function(params) { + return draw(params.x, params.y, params.w, params.data, params.m); } static draw = function(_x, _y, _w, _data, _m) { diff --git a/scripts/vectorBox/vectorBox.gml b/scripts/vectorBox/vectorBox.gml index 48aa534e2..06c9c8445 100644 --- a/scripts/vectorBox/vectorBox.gml +++ b/scripts/vectorBox/vectorBox.gml @@ -74,6 +74,10 @@ function vectorBox(_size, _onModify, _unit = noone) : widget() constructor { unit.triggerButton.register(parent); } + static drawParam = function(params) { + return draw(params.x, params.y, params.w, params.h, params.data, params.m); + } + static draw = function(_x, _y, _w, _h, _data, _m) { x = _x; y = _y; @@ -122,6 +126,8 @@ function vectorBox(_size, _onModify, _unit = noone) : widget() constructor { } resetFocus(); + + return _h; } static apply = function() { diff --git a/scripts/widget/widget.gml b/scripts/widget/widget.gml index bfb49d236..47207b9e1 100644 --- a/scripts/widget/widget.gml +++ b/scripts/widget/widget.gml @@ -71,6 +71,6 @@ function widget() constructor { hover = false; } - static draw_param = function(param) {} + static drawParam = function(param) {} static draw = function() {} } \ No newline at end of file diff --git a/shaders/sh_ani_noise/sh_ani_noise.fsh b/shaders/sh_ani_noise/sh_ani_noise.fsh index 6d4a72163..e73bad390 100644 --- a/shaders/sh_ani_noise/sh_ani_noise.fsh +++ b/shaders/sh_ani_noise/sh_ani_noise.fsh @@ -9,13 +9,9 @@ uniform vec2 position; uniform float angle; uniform float seed; -float random1D (in vec2 st, float _seed) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233)) * mod(_seed, 32.156) * 12.588) * 43758.5453123); -} +float random1D (in vec2 st, float _seed) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233)) * mod(_seed, 32.156) * 12.588) * 43758.5453123); } -float random (in vec2 st) { - return mix(random1D(st, floor(seed)), random1D(st, floor(seed) + 1.), fract(seed)); -} +float random (in vec2 st) { return mix(random1D(st, floor(seed)), random1D(st, floor(seed) + 1.), fract(seed)); } void main() { vec2 pos = v_vTexcoord - position, _pos; diff --git a/shaders/sh_cell_noise/sh_cell_noise.fsh b/shaders/sh_cell_noise/sh_cell_noise.fsh index 3e839c09a..f6df9fa8f 100644 --- a/shaders/sh_cell_noise/sh_cell_noise.fsh +++ b/shaders/sh_cell_noise/sh_cell_noise.fsh @@ -19,13 +19,9 @@ uniform float radiusShatter; #define PI 3.14159265359 #define TAU 6.283185307179586 -vec2 random2( vec2 p ) { - return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); -} +vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); } -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } void main() { vec2 pos = position / dimension; diff --git a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh index cc809ee55..3ef8a2d16 100644 --- a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh +++ b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh @@ -17,13 +17,9 @@ uniform int pattern; #define TAU 6.283185307179586 #define PI 3.14159265359 -vec2 random2( vec2 p ) { - return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); -} +vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); } -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } void main() { vec2 pos = position / dimension; diff --git a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh index e6bdfc2cb..0041522a8 100644 --- a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh +++ b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh @@ -17,13 +17,9 @@ uniform int colored; #define TAU 6.283185307179586 -vec2 random2( vec2 p ) { - return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); -} +vec2 random2( vec2 p ) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); } -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } vec3 colorNoise(in vec2 st) { float randR = random(st); diff --git a/shaders/sh_color_picker_hue/sh_color_picker_hue.fsh b/shaders/sh_color_picker_hue/sh_color_picker_hue.fsh index 7df260170..7347168e6 100644 --- a/shaders/sh_color_picker_hue/sh_color_picker_hue.fsh +++ b/shaders/sh_color_picker_hue/sh_color_picker_hue.fsh @@ -5,6 +5,10 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; uniform float hue; +uniform int usePalette; +uniform vec4 palette[64]; +uniform int paletteAmount; + vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); @@ -15,5 +19,21 @@ void main() { vec3 _rgb = hsv2rgb(vec3(hue, v_vTexcoord.x, 1.0 - v_vTexcoord.y)); vec4 color = vec4(_rgb.r, _rgb.g, _rgb.b, v_vColour.a); + + if(usePalette == 1) { + int index = 0; + float minDist = 999.; + for(int i = 0; i < paletteAmount; i++) { + float dist = distance(color.rgb, palette[i].rgb); + + if(dist < minDist) { + minDist = dist; + index = i; + } + } + + color = palette[index]; + } + gl_FragColor = color; } \ No newline at end of file diff --git a/shaders/sh_color_picker_hue/sh_color_picker_hue.yy b/shaders/sh_color_picker_hue/sh_color_picker_hue.yy index 70f3eb46a..a2767c78c 100644 --- a/shaders/sh_color_picker_hue/sh_color_picker_hue.yy +++ b/shaders/sh_color_picker_hue/sh_color_picker_hue.yy @@ -3,8 +3,8 @@ "resourceVersion": "1.0", "name": "sh_color_picker_hue", "parent": { - "name": "color", - "path": "folders/shader/filter/color.yy", + "name": "color picker", + "path": "folders/shader/color picker.yy", }, "type": 1, } \ No newline at end of file diff --git a/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.fsh b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.fsh new file mode 100644 index 000000000..b78d2b6d5 --- /dev/null +++ b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.fsh @@ -0,0 +1,45 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; +uniform float sat; +uniform float value; + +uniform int usePalette; +uniform vec4 palette[64]; +uniform int paletteAmount; + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + vec3 _rgb; + + if(usePalette == 0) + _rgb = hsv2rgb(vec3(v_vTexcoord.y, 1., 1.)); + else if(usePalette == 1) + _rgb = hsv2rgb(vec3(v_vTexcoord.y, sat, value)); + + vec4 color = vec4(_rgb.r, _rgb.g, _rgb.b, v_vColour.a); + + if(usePalette == 1) { + int index = 0; + float minDist = 999.; + for(int i = 0; i < paletteAmount; i++) { + float dist = distance(color.rgb, palette[i].rgb); + + if(dist < minDist) { + minDist = dist; + index = i; + } + } + + color = palette[index]; + } + + gl_FragColor = color; +} \ No newline at end of file diff --git a/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.vsh b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.yy b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.yy new file mode 100644 index 000000000..aa484b001 --- /dev/null +++ b/shaders/sh_color_picker_side_hue/sh_color_picker_side_hue.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_color_picker_side_hue", + "parent": { + "name": "color picker", + "path": "folders/shader/color picker.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_color_picker_side_value/sh_color_picker_side_value.fsh b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.fsh new file mode 100644 index 000000000..bd86b854c --- /dev/null +++ b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.fsh @@ -0,0 +1,40 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; +uniform float hue; +uniform float sat; + +uniform int usePalette; +uniform vec4 palette[64]; +uniform int paletteAmount; + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() { + vec3 _rgb = hsv2rgb(vec3(hue, sat, 1. - v_vTexcoord.y)); + + vec4 color = vec4(_rgb.r, _rgb.g, _rgb.b, v_vColour.a); + + if(usePalette == 1) { + int index = 0; + float minDist = 999.; + for(int i = 0; i < paletteAmount; i++) { + float dist = distance(color.rgb, palette[i].rgb); + + if(dist < minDist) { + minDist = dist; + index = i; + } + } + + color = palette[index]; + } + + gl_FragColor = color; +} \ No newline at end of file diff --git a/shaders/sh_color_picker_side_value/sh_color_picker_side_value.vsh b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_color_picker_side_value/sh_color_picker_side_value.yy b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.yy new file mode 100644 index 000000000..1ef615ace --- /dev/null +++ b/shaders/sh_color_picker_side_value/sh_color_picker_side_value.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_color_picker_side_value", + "parent": { + "name": "color picker", + "path": "folders/shader/color picker.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_color_picker_value/sh_color_picker_value.fsh b/shaders/sh_color_picker_value/sh_color_picker_value.fsh index 00c7da286..6c39032a6 100644 --- a/shaders/sh_color_picker_value/sh_color_picker_value.fsh +++ b/shaders/sh_color_picker_value/sh_color_picker_value.fsh @@ -5,6 +5,10 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; uniform float value; +uniform int usePalette; +uniform vec4 palette[64]; +uniform int paletteAmount; + vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); @@ -15,5 +19,21 @@ void main() { vec3 _rgb = hsv2rgb(vec3(v_vTexcoord.x, 1.0 - v_vTexcoord.y, value)); vec4 color = vec4(_rgb.r, _rgb.g, _rgb.b, v_vColour.a); + + if(usePalette == 1) { + int index = 0; + float minDist = 999.; + for(int i = 0; i < paletteAmount; i++) { + float dist = distance(color.rgb, palette[i].rgb); + + if(dist < minDist) { + minDist = dist; + index = i; + } + } + + color = palette[index]; + } + gl_FragColor = color; } \ No newline at end of file diff --git a/shaders/sh_color_picker_value/sh_color_picker_value.yy b/shaders/sh_color_picker_value/sh_color_picker_value.yy index 2f824da66..283fc2049 100644 --- a/shaders/sh_color_picker_value/sh_color_picker_value.yy +++ b/shaders/sh_color_picker_value/sh_color_picker_value.yy @@ -3,8 +3,8 @@ "resourceVersion": "1.0", "name": "sh_color_picker_value", "parent": { - "name": "color", - "path": "folders/shader/filter/color.yy", + "name": "color picker", + "path": "folders/shader/color picker.yy", }, "type": 1, } \ No newline at end of file diff --git a/shaders/sh_draw_color/sh_draw_color.fsh b/shaders/sh_draw_color/sh_draw_color.fsh new file mode 100644 index 000000000..f115c56ba --- /dev/null +++ b/shaders/sh_draw_color/sh_draw_color.fsh @@ -0,0 +1,9 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() { + gl_FragColor = vec4(v_vColour.rgb, texture2D( gm_BaseTexture, v_vTexcoord ).a); +} diff --git a/shaders/sh_draw_color/sh_draw_color.vsh b/shaders/sh_draw_color/sh_draw_color.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_draw_color/sh_draw_color.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_draw_color/sh_draw_color.yy b/shaders/sh_draw_color/sh_draw_color.yy new file mode 100644 index 000000000..985e7dd75 --- /dev/null +++ b/shaders/sh_draw_color/sh_draw_color.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_draw_color", + "parent": { + "name": "draw", + "path": "folders/shader/draw.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_grid/sh_grid.fsh b/shaders/sh_grid/sh_grid.fsh index aef2c9d06..aa788f2c6 100644 --- a/shaders/sh_grid/sh_grid.fsh +++ b/shaders/sh_grid/sh_grid.fsh @@ -24,9 +24,7 @@ uniform vec4 gradient_color[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT]; uniform int gradient_keys; -float random (in vec2 st) { - return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); -} +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); diff --git a/shaders/sh_grid_hex/sh_grid_hex.fsh b/shaders/sh_grid_hex/sh_grid_hex.fsh index f08f813cc..66a09be4e 100644 --- a/shaders/sh_grid_hex/sh_grid_hex.fsh +++ b/shaders/sh_grid_hex/sh_grid_hex.fsh @@ -21,9 +21,7 @@ uniform int gradient_keys; #define PI 3.14159265359 -float random (in vec2 st) { - return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); -} +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); diff --git a/shaders/sh_grid_noise/sh_grid_noise.fsh b/shaders/sh_grid_noise/sh_grid_noise.fsh index fbf4d0e7f..4d4bbb128 100644 --- a/shaders/sh_grid_noise/sh_grid_noise.fsh +++ b/shaders/sh_grid_noise/sh_grid_noise.fsh @@ -23,13 +23,9 @@ vec3 hsv2rgb(vec3 c) { return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } -float randomSeed (in vec2 st, float _seed) { - return fract(sin(dot(st.xy + vec2(5.0654, 9.684), vec2(12.9898, 78.233))) * (43758.5453123 + _seed)); -} +float randomSeed (in vec2 st, float _seed) { return fract(sin(dot(st.xy + vec2(5.0654, 9.684), vec2(12.9898, 78.233))) * (43758.5453123 + _seed)); } -float random (in vec2 st) { - return mix(randomSeed(st, floor(seed)), randomSeed(st, floor(seed) + 1.), fract(seed)); -} +float random (in vec2 st) { return mix(randomSeed(st, floor(seed)), randomSeed(st, floor(seed) + 1.), fract(seed)); } void main() { vec2 st = v_vTexcoord - position / dimension; diff --git a/shaders/sh_grid_tri/sh_grid_tri.fsh b/shaders/sh_grid_tri/sh_grid_tri.fsh index 9d97acca1..8ae26475d 100644 --- a/shaders/sh_grid_tri/sh_grid_tri.fsh +++ b/shaders/sh_grid_tri/sh_grid_tri.fsh @@ -24,9 +24,7 @@ uniform vec4 gradient_color[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT]; uniform int gradient_keys; -float random (in vec2 st) { - return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); -} +float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.54065), vec2(12.9898, 78.233))) * (43758.5453123 + seed) ); } vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); diff --git a/shaders/sh_noise_fbm/sh_noise_fbm.fsh b/shaders/sh_noise_fbm/sh_noise_fbm.fsh index 1540d569b..37272c5eb 100644 --- a/shaders/sh_noise_fbm/sh_noise_fbm.fsh +++ b/shaders/sh_noise_fbm/sh_noise_fbm.fsh @@ -22,9 +22,7 @@ vec3 hsv2rgb(vec3 c) { return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } -float random (in vec2 st) { - return fract(sin(dot(st.xy + mod(seed, 1000.), vec2(1892.9898, 78.23453))) * 437.54123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy + mod(seed, 1000.), vec2(1892.9898, 78.23453))) * 437.54123); } float noise (in vec2 st) { vec2 i = floor(st); diff --git a/shaders/sh_pb_blob/sh_pb_blob.fsh b/shaders/sh_pb_blob/sh_pb_blob.fsh new file mode 100644 index 000000000..016589674 --- /dev/null +++ b/shaders/sh_pb_blob/sh_pb_blob.fsh @@ -0,0 +1,17 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform float btop; +uniform float bbot; + +void main() { + vec2 pos = v_vTexcoord.x > 0.5? vec2(v_vTexcoord.x - 0.5, v_vTexcoord.y) : vec2(0.5 - v_vTexcoord.x, v_vTexcoord.y); + + float _t = (1. - pos.y); + float _x = 3. * (btop * _t * (1. - _t) * (1. - _t) + bbot * _t * _t * (1. - _t)); + + gl_FragColor = pos.x < _x? v_vColour : vec4(0.); +} diff --git a/shaders/sh_pb_blob/sh_pb_blob.vsh b/shaders/sh_pb_blob/sh_pb_blob.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_pb_blob/sh_pb_blob.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pb_blob/sh_pb_blob.yy b/shaders/sh_pb_blob/sh_pb_blob.yy new file mode 100644 index 000000000..2f1ab8aad --- /dev/null +++ b/shaders/sh_pb_blob/sh_pb_blob.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pb_blob", + "parent": { + "name": "pixel builder", + "path": "folders/shader/pixel builder.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_pb_hash/sh_pb_hash.fsh b/shaders/sh_pb_hash/sh_pb_hash.fsh new file mode 100644 index 000000000..bc0553c72 --- /dev/null +++ b/shaders/sh_pb_hash/sh_pb_hash.fsh @@ -0,0 +1,25 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec4 color; + +uniform float hash; +uniform int invert; + +void main() { + vec2 px = v_vTexcoord * dimension; + float index; + + if(invert == 1) index = px.x - px.y; + else index = px.x + px.y; + + if(mod(index, hash) >= hash / 2.) + gl_FragColor = color; + else + gl_FragColor = texture2D( gm_BaseTexture, v_vTexcoord ); + +} diff --git a/shaders/sh_pb_hash/sh_pb_hash.vsh b/shaders/sh_pb_hash/sh_pb_hash.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_pb_hash/sh_pb_hash.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pb_hash/sh_pb_hash.yy b/shaders/sh_pb_hash/sh_pb_hash.yy new file mode 100644 index 000000000..78b2f5c36 --- /dev/null +++ b/shaders/sh_pb_hash/sh_pb_hash.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pb_hash", + "parent": { + "name": "pixel builder", + "path": "folders/shader/pixel builder.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_pb_highlight/sh_pb_highlight.fsh b/shaders/sh_pb_highlight/sh_pb_highlight.fsh new file mode 100644 index 000000000..ef5e30417 --- /dev/null +++ b/shaders/sh_pb_highlight/sh_pb_highlight.fsh @@ -0,0 +1,124 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform int sides[9]; + +uniform vec4 highlightColor; +uniform vec4 shadowColor; + +uniform float seed; +uniform float roughness; +uniform float roughScale; + +float random (in vec2 st) { return fract(sin(dot(st.xy + seed / 100., vec2(12.9898, 78.233))) * 43758.5453123); } + +vec4 sample ( vec2 position ) { + if(position.x < 0.) return vec4(0.); + if(position.y < 0.) return vec4(0.); + if(position.x > 1.) return vec4(0.); + if(position.y > 1.) return vec4(0.); + + return texture2D( gm_BaseTexture, position ); +} + +vec4 index ( vec4 def, int ind ) { + if(sides[ind] == 1) + return highlightColor; + else if(sides[ind] == -1) + return shadowColor; + return def; +} + +void main() { + vec2 tx = 1. / dimension; + + gl_FragColor = sample(v_vTexcoord ); + if(gl_FragColor.a == 0.) return; + + bool a0 = sample( v_vTexcoord + vec2( -tx.x, -tx.y) ).a == 0.; + bool a1 = sample( v_vTexcoord + vec2( 0., -tx.y) ).a == 0.; + bool a2 = sample( v_vTexcoord + vec2( tx.x, -tx.y) ).a == 0.; + + bool a3 = sample( v_vTexcoord + vec2( -tx.x, 0.) ).a == 0.; + bool a5 = sample( v_vTexcoord + vec2( tx.x, 0.) ).a == 0.; + + bool a6 = sample( v_vTexcoord + vec2( -tx.x, tx.y) ).a == 0.; + bool a7 = sample( v_vTexcoord + vec2( 0., tx.y) ).a == 0.; + bool a8 = sample( v_vTexcoord + vec2( tx.x, tx.y) ).a == 0.; + + //outer corner + if(a0 && a1 && a3) + gl_FragColor = index( gl_FragColor, 0 ); + else if(a1 && a2 && a5) + gl_FragColor = index( gl_FragColor, 2 ); + else if(a3 && a6 && a7) + gl_FragColor = index( gl_FragColor, 6 ); + else if(a5 && a7 && a8) + gl_FragColor = index( gl_FragColor, 8 ); + + //outer side + else if(a0 && a1 && a2 && !a3 && !a5 && !a6 && !a7 && !a8) + gl_FragColor = index( gl_FragColor, 1 ); + else if(a0 && !a1 && !a2 && a3 && !a5 && a6 && !a7 && !a8) + gl_FragColor = index( gl_FragColor, 3 ); + else if(!a0 && !a1 && a2 && !a3 && a5 && !a6 && !a7 && a8) + gl_FragColor = index( gl_FragColor, 5 ); + else if(!a0 && !a1 && !a2 && !a3 && !a5 && a6 && a7 && a8) + gl_FragColor = index( gl_FragColor, 7 ); + + //inner side + else if(a1) + gl_FragColor = index( gl_FragColor, 1 ); + else if(a3) + gl_FragColor = index( gl_FragColor, 3 ); + else if(a5) + gl_FragColor = index( gl_FragColor, 5 ); + else if(a7) + gl_FragColor = index( gl_FragColor, 7 ); + + //inner corner + else if(a0) + gl_FragColor = index( gl_FragColor, 0 ); + else if(a2) + gl_FragColor = index( gl_FragColor, 2 ); + else if(a6) + gl_FragColor = index( gl_FragColor, 6 ); + else if(a8) + gl_FragColor = index( gl_FragColor, 8 ); + + else { + bool a11 = sample( v_vTexcoord + vec2( 0., -tx.y) * 2. ).a == 0.; + bool a33 = sample( v_vTexcoord + vec2(-tx.x, 0.) * 2. ).a == 0.; + bool a55 = sample( v_vTexcoord + vec2( tx.x, 0.) * 2. ).a == 0.; + bool a77 = sample( v_vTexcoord + vec2( 0., tx.y) * 2. ).a == 0.; + + //corner smooth + if(sides[4] == 1) { + if(sides[1] == sides[3] && a11 && a33) + gl_FragColor = index( gl_FragColor, 0 ); + if(sides[1] == sides[5] && a11 && a55) + gl_FragColor = index( gl_FragColor, 2 ); + if(sides[7] == sides[3] && a77 && a33) + gl_FragColor = index( gl_FragColor, 6 ); + if(sides[7] == sides[5] && a77 && a55) + gl_FragColor = index( gl_FragColor, 8 ); + } + + if(roughness > 0.) { + float r = random(v_vTexcoord * roughScale); + + if(!a1 && a11 && r < roughness) + gl_FragColor = index( gl_FragColor, 1 ); + else if(!a3 && a33 && r < roughness) + gl_FragColor = index( gl_FragColor, 3 ); + else if(!a5 && a55 && r < roughness) + gl_FragColor = index( gl_FragColor, 5 ); + else if(!a7 && a77 && r < roughness) + gl_FragColor = index( gl_FragColor, 7 ); + } + } +} diff --git a/shaders/sh_pb_highlight/sh_pb_highlight.vsh b/shaders/sh_pb_highlight/sh_pb_highlight.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_pb_highlight/sh_pb_highlight.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pb_highlight/sh_pb_highlight.yy b/shaders/sh_pb_highlight/sh_pb_highlight.yy new file mode 100644 index 000000000..1bf08a2a3 --- /dev/null +++ b/shaders/sh_pb_highlight/sh_pb_highlight.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pb_highlight", + "parent": { + "name": "pixel builder", + "path": "folders/shader/pixel builder.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_pb_outline/sh_pb_outline.fsh b/shaders/sh_pb_outline/sh_pb_outline.fsh new file mode 100644 index 000000000..dd10730df --- /dev/null +++ b/shaders/sh_pb_outline/sh_pb_outline.fsh @@ -0,0 +1,43 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform int corner; +uniform int side; + +vec4 sample ( vec2 position ) { + if(position.x < 0.) return vec4(0.); + if(position.y < 0.) return vec4(0.); + if(position.x > 1.) return vec4(0.); + if(position.y > 1.) return vec4(0.); + + return texture2D( gm_BaseTexture, position ); +} + +void main() { + vec2 tx = 1. / dimension; + + gl_FragColor = sample( v_vTexcoord ); + float _s = float(side); + + if(gl_FragColor.a == _s) return; + + bool a0 = sample( v_vTexcoord + vec2( -tx.x, -tx.y) ).a == _s; + bool a1 = sample( v_vTexcoord + vec2( 0., -tx.y) ).a == _s; + bool a2 = sample( v_vTexcoord + vec2( tx.x, -tx.y) ).a == _s; + + bool a3 = sample( v_vTexcoord + vec2( -tx.x, 0.) ).a == _s; + bool a5 = sample( v_vTexcoord + vec2( tx.x, 0.) ).a == _s; + + bool a6 = sample( v_vTexcoord + vec2( -tx.x, tx.y) ).a == _s; + bool a7 = sample( v_vTexcoord + vec2( 0., tx.y) ).a == _s; + bool a8 = sample( v_vTexcoord + vec2( tx.x, tx.y) ).a == _s; + + if( a1 || a3 || a5 || a7 ) + gl_FragColor = v_vColour; + if( corner == 1 && ( a0 || a2 || a6 || a8 ) ) + gl_FragColor = v_vColour; +} diff --git a/shaders/sh_pb_outline/sh_pb_outline.vsh b/shaders/sh_pb_outline/sh_pb_outline.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_pb_outline/sh_pb_outline.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pb_outline/sh_pb_outline.yy b/shaders/sh_pb_outline/sh_pb_outline.yy new file mode 100644 index 000000000..033bb51c0 --- /dev/null +++ b/shaders/sh_pb_outline/sh_pb_outline.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pb_outline", + "parent": { + "name": "pixel builder", + "path": "folders/shader/pixel builder.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_pb_shade/sh_pb_shade.fsh b/shaders/sh_pb_shade/sh_pb_shade.fsh new file mode 100644 index 000000000..8b9ffe96a --- /dev/null +++ b/shaders/sh_pb_shade/sh_pb_shade.fsh @@ -0,0 +1,57 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec4 padding; + +vec4 sample ( vec2 position ) { + if(position.x < 0.) return vec4(0.); + if(position.y < 0.) return vec4(0.); + if(position.x > 1.) return vec4(0.); + if(position.y > 1.) return vec4(0.); + + return texture2D( gm_BaseTexture, position ); +} + +void main() { + vec2 tx = 1. / dimension; + vec2 pos; + + gl_FragColor = sample( v_vTexcoord ); + if(gl_FragColor.a == 0.) return; + + for(float i = 1.; i <= padding[0]; i++) { + pos = v_vTexcoord + vec2( tx.x, 0. ) * i; + if(sample(pos).a == 0.) { + gl_FragColor = v_vColour; + return; + } + } + + for(float i = 1.; i <= padding[1]; i++) { + pos = v_vTexcoord + vec2( 0.,-tx.y ) * i; + if(sample(pos).a == 0.) { + gl_FragColor = v_vColour; + return; + } + } + + for(float i = 1.; i <= padding[2]; i++) { + pos = v_vTexcoord + vec2(-tx.x, 0. ) * i; + if(sample(pos).a == 0.) { + gl_FragColor = v_vColour; + return; + } + } + + for(float i = 1.; i <= padding[3]; i++) { + pos = v_vTexcoord + vec2( 0., tx.y ) * i; + if(sample(pos).a == 0.) { + gl_FragColor = v_vColour; + return; + } + } +} diff --git a/shaders/sh_pb_shade/sh_pb_shade.vsh b/shaders/sh_pb_shade/sh_pb_shade.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_pb_shade/sh_pb_shade.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_pb_shade/sh_pb_shade.yy b/shaders/sh_pb_shade/sh_pb_shade.yy new file mode 100644 index 000000000..93ef9cfe5 --- /dev/null +++ b/shaders/sh_pb_shade/sh_pb_shade.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_pb_shade", + "parent": { + "name": "pixel builder", + "path": "folders/shader/pixel builder.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_perlin/sh_perlin.fsh b/shaders/sh_perlin/sh_perlin.fsh index 7236d3742..f31729206 100644 --- a/shaders/sh_perlin/sh_perlin.fsh +++ b/shaders/sh_perlin/sh_perlin.fsh @@ -10,9 +10,7 @@ uniform float scale; uniform float bright; uniform int iteration; -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } float noise (in vec2 st) { vec2 i = floor(st); diff --git a/shaders/sh_perlin_smear/sh_perlin_smear.fsh b/shaders/sh_perlin_smear/sh_perlin_smear.fsh index 6344eace5..3df75a93b 100644 --- a/shaders/sh_perlin_smear/sh_perlin_smear.fsh +++ b/shaders/sh_perlin_smear/sh_perlin_smear.fsh @@ -10,9 +10,7 @@ uniform vec2 scale; uniform int iteration; uniform float bright; -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } float noise (in vec2 st) { vec2 i = floor(st); diff --git a/shaders/sh_region_fill_color/sh_region_fill_color.fsh b/shaders/sh_region_fill_color/sh_region_fill_color.fsh index 5af9d1c8b..c40d4f82f 100644 --- a/shaders/sh_region_fill_color/sh_region_fill_color.fsh +++ b/shaders/sh_region_fill_color/sh_region_fill_color.fsh @@ -8,9 +8,7 @@ uniform vec4 colors[32]; uniform float colorAmount; uniform float seed; -float random (in vec2 st) { - return fract(sin(dot(st.xy + seed / 100., vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy + seed / 100., vec2(12.9898, 78.233))) * 43758.5453123); } void main() { vec4 c = texture2D( gm_BaseTexture, v_vTexcoord ); diff --git a/shaders/sh_replace_color/sh_replace_color.fsh b/shaders/sh_replace_color/sh_replace_color.fsh new file mode 100644 index 000000000..d38283d88 --- /dev/null +++ b/shaders/sh_replace_color/sh_replace_color.fsh @@ -0,0 +1,41 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform vec2 shift; +uniform int type; +uniform float angle; + +void main() { + vec4 c = texture2D( gm_BaseTexture, v_vTexcoord ); + vec4 ca; + + if(type == 1) { + ca = v_vColour; + } else if(type == 2) { + vec2 tx = 1. / dimension; + mat2 rot = mat2(cos(angle), -sin(angle), + sin(angle), cos(angle)); + vec2 shf = rot * shift; + vec2 px = v_vTexcoord - shf; + vec4 l = texture2D( gm_BaseTexture, px); + + while(l == c) { + px -= shf; + l = texture2D( gm_BaseTexture, px); + + if(l.a == 0.) break; + if(px.x < 0. || px.y < 0.) break; + if(px.x > 1. || px.y > 1.) break; + } + + if(c.a == 1. && l.a > 0.) + ca = l * v_vColour; + } + + vec4 cc = mix(c, ca, ca.a); + gl_FragColor = vec4(cc.rgb, c.a); +} diff --git a/shaders/sh_replace_color/sh_replace_color.vsh b/shaders/sh_replace_color/sh_replace_color.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_replace_color/sh_replace_color.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_replace_color/sh_replace_color.yy b/shaders/sh_replace_color/sh_replace_color.yy new file mode 100644 index 000000000..94b0c7aa5 --- /dev/null +++ b/shaders/sh_replace_color/sh_replace_color.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_replace_color", + "parent": { + "name": "misc", + "path": "folders/shader/misc.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/shaders/sh_stripe/sh_stripe.fsh b/shaders/sh_stripe/sh_stripe.fsh index 501925ed7..3291c7ff0 100644 --- a/shaders/sh_stripe/sh_stripe.fsh +++ b/shaders/sh_stripe/sh_stripe.fsh @@ -24,9 +24,7 @@ uniform int blend; #define PI 3.14159265359 -float random (in vec2 st) { - return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); -} +float random (in vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123); } vec3 rgb2hsv(vec3 c) { vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); diff --git a/sprites/s_node_pb_box_contract/65342bfd-1697-461b-925a-796ad0c481a8.png b/sprites/s_node_pb_box_contract/65342bfd-1697-461b-925a-796ad0c481a8.png new file mode 100644 index 000000000..a7a509155 Binary files /dev/null and b/sprites/s_node_pb_box_contract/65342bfd-1697-461b-925a-796ad0c481a8.png differ diff --git a/sprites/s_node_pb_box_contract/layers/65342bfd-1697-461b-925a-796ad0c481a8/8a0d5d07-5845-47f7-9908-efc37cd11d3f.png b/sprites/s_node_pb_box_contract/layers/65342bfd-1697-461b-925a-796ad0c481a8/8a0d5d07-5845-47f7-9908-efc37cd11d3f.png new file mode 100644 index 000000000..a7a509155 Binary files /dev/null and b/sprites/s_node_pb_box_contract/layers/65342bfd-1697-461b-925a-796ad0c481a8/8a0d5d07-5845-47f7-9908-efc37cd11d3f.png differ diff --git a/sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy b/sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy new file mode 100644 index 000000000..1a3e3e2a3 --- /dev/null +++ b/sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_contract", + "bbox_bottom": 61, + "bbox_left": 3, + "bbox_right": 60, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"65342bfd-1697-461b-925a-796ad0c481a8",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"8a0d5d07-5845-47f7-9908-efc37cd11d3f","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_contract", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"65342bfd-1697-461b-925a-796ad0c481a8","path":"sprites/s_node_pb_box_contract/s_node_pb_box_contract.yy",},},},"Disabled":false,"id":"bb8d03d6-b788-4e8d-821b-651ccd4c86b1","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_divide/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5.png b/sprites/s_node_pb_box_divide/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5.png new file mode 100644 index 000000000..0a4d7a153 Binary files /dev/null and b/sprites/s_node_pb_box_divide/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5.png differ diff --git a/sprites/s_node_pb_box_divide/layers/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5/bc217285-104c-484e-b948-907b91cce514.png b/sprites/s_node_pb_box_divide/layers/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5/bc217285-104c-484e-b948-907b91cce514.png new file mode 100644 index 000000000..0a4d7a153 Binary files /dev/null and b/sprites/s_node_pb_box_divide/layers/d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5/bc217285-104c-484e-b948-907b91cce514.png differ diff --git a/sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy b/sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy new file mode 100644 index 000000000..b8290762e --- /dev/null +++ b/sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_divide", + "bbox_bottom": 61, + "bbox_left": 2, + "bbox_right": 61, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"bc217285-104c-484e-b948-907b91cce514","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_divide", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d2983c5f-4e8a-4de9-a7cc-0d0c4a3fc6b5","path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},},},"Disabled":false,"id":"3b483227-5fee-4fc9-802f-f5f0abb154ea","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_divide_grid/209d3225-6a62-4f9f-8941-d4d4d62bd77a.png b/sprites/s_node_pb_box_divide_grid/209d3225-6a62-4f9f-8941-d4d4d62bd77a.png new file mode 100644 index 000000000..c496d97ce Binary files /dev/null and b/sprites/s_node_pb_box_divide_grid/209d3225-6a62-4f9f-8941-d4d4d62bd77a.png differ diff --git a/sprites/s_node_pb_box_divide_grid/layers/209d3225-6a62-4f9f-8941-d4d4d62bd77a/8d401f48-03fd-4d33-8978-d33b72ec5906.png b/sprites/s_node_pb_box_divide_grid/layers/209d3225-6a62-4f9f-8941-d4d4d62bd77a/8d401f48-03fd-4d33-8978-d33b72ec5906.png new file mode 100644 index 000000000..c496d97ce Binary files /dev/null and b/sprites/s_node_pb_box_divide_grid/layers/209d3225-6a62-4f9f-8941-d4d4d62bd77a/8d401f48-03fd-4d33-8978-d33b72ec5906.png differ diff --git a/sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.yy b/sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.yy new file mode 100644 index 000000000..fe32c7b15 --- /dev/null +++ b/sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_divide_grid", + "bbox_bottom": 61, + "bbox_left": 2, + "bbox_right": 61, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"209d3225-6a62-4f9f-8941-d4d4d62bd77a",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"8d401f48-03fd-4d33-8978-d33b72ec5906","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_divide_grid", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"209d3225-6a62-4f9f-8941-d4d4d62bd77a","path":"sprites/s_node_pb_box_divide_grid/s_node_pb_box_divide_grid.yy",},},},"Disabled":false,"id":"9a797cb9-a48c-41ae-9ebb-30cd9d043324","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_inset/18b62ef8-498a-444a-b11d-bab636015a71.png b/sprites/s_node_pb_box_inset/18b62ef8-498a-444a-b11d-bab636015a71.png new file mode 100644 index 000000000..3ff37237e Binary files /dev/null and b/sprites/s_node_pb_box_inset/18b62ef8-498a-444a-b11d-bab636015a71.png differ diff --git a/sprites/s_node_pb_box_inset/layers/18b62ef8-498a-444a-b11d-bab636015a71/3fecb569-1a80-43a3-bd27-da27dbdf7d33.png b/sprites/s_node_pb_box_inset/layers/18b62ef8-498a-444a-b11d-bab636015a71/3fecb569-1a80-43a3-bd27-da27dbdf7d33.png new file mode 100644 index 000000000..3ff37237e Binary files /dev/null and b/sprites/s_node_pb_box_inset/layers/18b62ef8-498a-444a-b11d-bab636015a71/3fecb569-1a80-43a3-bd27-da27dbdf7d33.png differ diff --git a/sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy b/sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy new file mode 100644 index 000000000..acc366fd0 --- /dev/null +++ b/sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_inset", + "bbox_bottom": 60, + "bbox_left": 3, + "bbox_right": 60, + "bbox_top": 3, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"18b62ef8-498a-444a-b11d-bab636015a71",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3fecb569-1a80-43a3-bd27-da27dbdf7d33","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_inset", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"18b62ef8-498a-444a-b11d-bab636015a71","path":"sprites/s_node_pb_box_inset/s_node_pb_box_inset.yy",},},},"Disabled":false,"id":"ae973d44-ebfc-4881-9525-c65953c46eaf","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_mirror/f588fc02-4483-425b-bda1-9e53bbeffe11.png b/sprites/s_node_pb_box_mirror/f588fc02-4483-425b-bda1-9e53bbeffe11.png new file mode 100644 index 000000000..fca435e0a Binary files /dev/null and b/sprites/s_node_pb_box_mirror/f588fc02-4483-425b-bda1-9e53bbeffe11.png differ diff --git a/sprites/s_node_pb_box_mirror/layers/f588fc02-4483-425b-bda1-9e53bbeffe11/c2babca2-a330-4521-aa78-d5631fe8cd93.png b/sprites/s_node_pb_box_mirror/layers/f588fc02-4483-425b-bda1-9e53bbeffe11/c2babca2-a330-4521-aa78-d5631fe8cd93.png new file mode 100644 index 000000000..fca435e0a Binary files /dev/null and b/sprites/s_node_pb_box_mirror/layers/f588fc02-4483-425b-bda1-9e53bbeffe11/c2babca2-a330-4521-aa78-d5631fe8cd93.png differ diff --git a/sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy b/sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy new file mode 100644 index 000000000..a5626c215 --- /dev/null +++ b/sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_mirror", + "bbox_bottom": 61, + "bbox_left": 2, + "bbox_right": 61, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f588fc02-4483-425b-bda1-9e53bbeffe11",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c2babca2-a330-4521-aa78-d5631fe8cd93","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_mirror", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"f588fc02-4483-425b-bda1-9e53bbeffe11","path":"sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy",},},},"Disabled":false,"id":"41d30371-9f8b-45c0-b1c6-20f23553d9fb","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_split/d166c3d8-c027-4f6d-904d-84663b63d995.png b/sprites/s_node_pb_box_split/d166c3d8-c027-4f6d-904d-84663b63d995.png new file mode 100644 index 000000000..af2b87fdd Binary files /dev/null and b/sprites/s_node_pb_box_split/d166c3d8-c027-4f6d-904d-84663b63d995.png differ diff --git a/sprites/s_node_pb_box_split/layers/d166c3d8-c027-4f6d-904d-84663b63d995/c8057d8c-39ca-4ba5-ad00-19192aaa0c20.png b/sprites/s_node_pb_box_split/layers/d166c3d8-c027-4f6d-904d-84663b63d995/c8057d8c-39ca-4ba5-ad00-19192aaa0c20.png new file mode 100644 index 000000000..af2b87fdd Binary files /dev/null and b/sprites/s_node_pb_box_split/layers/d166c3d8-c027-4f6d-904d-84663b63d995/c8057d8c-39ca-4ba5-ad00-19192aaa0c20.png differ diff --git a/sprites/s_node_pb_box_split/s_node_pb_box_split.yy b/sprites/s_node_pb_box_split/s_node_pb_box_split.yy new file mode 100644 index 000000000..0f3461257 --- /dev/null +++ b/sprites/s_node_pb_box_split/s_node_pb_box_split.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_split", + "bbox_bottom": 61, + "bbox_left": 3, + "bbox_right": 60, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d166c3d8-c027-4f6d-904d-84663b63d995",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c8057d8c-39ca-4ba5-ad00-19192aaa0c20","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_split", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d166c3d8-c027-4f6d-904d-84663b63d995","path":"sprites/s_node_pb_box_split/s_node_pb_box_split.yy",},},},"Disabled":false,"id":"0aeb5b23-ed43-4cd4-b02e-1e84bfa26773","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_box_transform/b36bac71-415b-4c6d-bed2-09fc16232e98.png b/sprites/s_node_pb_box_transform/b36bac71-415b-4c6d-bed2-09fc16232e98.png new file mode 100644 index 000000000..31cce3eef Binary files /dev/null and b/sprites/s_node_pb_box_transform/b36bac71-415b-4c6d-bed2-09fc16232e98.png differ diff --git a/sprites/s_node_pb_box_transform/layers/b36bac71-415b-4c6d-bed2-09fc16232e98/d21f2955-2370-4054-8031-af841ab2b95e.png b/sprites/s_node_pb_box_transform/layers/b36bac71-415b-4c6d-bed2-09fc16232e98/d21f2955-2370-4054-8031-af841ab2b95e.png new file mode 100644 index 000000000..31cce3eef Binary files /dev/null and b/sprites/s_node_pb_box_transform/layers/b36bac71-415b-4c6d-bed2-09fc16232e98/d21f2955-2370-4054-8031-af841ab2b95e.png differ diff --git a/sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy b/sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy new file mode 100644 index 000000000..e20ee9989 --- /dev/null +++ b/sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_box_transform", + "bbox_bottom": 62, + "bbox_left": 3, + "bbox_right": 62, + "bbox_top": 3, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b36bac71-415b-4c6d-bed2-09fc16232e98",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d21f2955-2370-4054-8031-af841ab2b95e","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_box_transform", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"b36bac71-415b-4c6d-bed2-09fc16232e98","path":"sprites/s_node_pb_box_transform/s_node_pb_box_transform.yy",},},},"Disabled":false,"id":"dc7a8ace-f09e-4680-bfad-9791d75e664b","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_angle/ca7846a5-284f-464f-aaa3-1b5560300193.png b/sprites/s_node_pb_draw_angle/ca7846a5-284f-464f-aaa3-1b5560300193.png new file mode 100644 index 000000000..9270460b7 Binary files /dev/null and b/sprites/s_node_pb_draw_angle/ca7846a5-284f-464f-aaa3-1b5560300193.png differ diff --git a/sprites/s_node_pb_draw_angle/layers/ca7846a5-284f-464f-aaa3-1b5560300193/13eef45f-b223-4349-bdc1-6865d0cd8424.png b/sprites/s_node_pb_draw_angle/layers/ca7846a5-284f-464f-aaa3-1b5560300193/13eef45f-b223-4349-bdc1-6865d0cd8424.png new file mode 100644 index 000000000..9270460b7 Binary files /dev/null and b/sprites/s_node_pb_draw_angle/layers/ca7846a5-284f-464f-aaa3-1b5560300193/13eef45f-b223-4349-bdc1-6865d0cd8424.png differ diff --git a/sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy b/sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy new file mode 100644 index 000000000..074286c64 --- /dev/null +++ b/sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_angle", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ca7846a5-284f-464f-aaa3-1b5560300193",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"13eef45f-b223-4349-bdc1-6865d0cd8424","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_angle", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"ca7846a5-284f-464f-aaa3-1b5560300193","path":"sprites/s_node_pb_draw_angle/s_node_pb_draw_angle.yy",},},},"Disabled":false,"id":"aa9b1a24-206a-4711-ac28-e8f263218c13","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_blob/55f24c5f-c6cc-4f23-8ad2-01ce06183511.png b/sprites/s_node_pb_draw_blob/55f24c5f-c6cc-4f23-8ad2-01ce06183511.png new file mode 100644 index 000000000..cde2db357 Binary files /dev/null and b/sprites/s_node_pb_draw_blob/55f24c5f-c6cc-4f23-8ad2-01ce06183511.png differ diff --git a/sprites/s_node_pb_draw_blob/layers/55f24c5f-c6cc-4f23-8ad2-01ce06183511/6946248a-cb46-40b8-b618-1281af5870a1.png b/sprites/s_node_pb_draw_blob/layers/55f24c5f-c6cc-4f23-8ad2-01ce06183511/6946248a-cb46-40b8-b618-1281af5870a1.png new file mode 100644 index 000000000..cde2db357 Binary files /dev/null and b/sprites/s_node_pb_draw_blob/layers/55f24c5f-c6cc-4f23-8ad2-01ce06183511/6946248a-cb46-40b8-b618-1281af5870a1.png differ diff --git a/sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy b/sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy new file mode 100644 index 000000000..1f3dc3ccb --- /dev/null +++ b/sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_blob", + "bbox_bottom": 53, + "bbox_left": 7, + "bbox_right": 56, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"55f24c5f-c6cc-4f23-8ad2-01ce06183511",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"6946248a-cb46-40b8-b618-1281af5870a1","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_blob", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"55f24c5f-c6cc-4f23-8ad2-01ce06183511","path":"sprites/s_node_pb_draw_blob/s_node_pb_draw_blob.yy",},},},"Disabled":false,"id":"e3d069b4-c222-43fa-8d9f-2f43995e949d","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_ellipse/fca72b55-9e1c-4765-810f-aaeada84730a.png b/sprites/s_node_pb_draw_ellipse/fca72b55-9e1c-4765-810f-aaeada84730a.png new file mode 100644 index 000000000..f60c3846f Binary files /dev/null and b/sprites/s_node_pb_draw_ellipse/fca72b55-9e1c-4765-810f-aaeada84730a.png differ diff --git a/sprites/s_node_pb_draw_ellipse/layers/fca72b55-9e1c-4765-810f-aaeada84730a/1ea0f4cc-6622-4c0b-8388-1d362182c510.png b/sprites/s_node_pb_draw_ellipse/layers/fca72b55-9e1c-4765-810f-aaeada84730a/1ea0f4cc-6622-4c0b-8388-1d362182c510.png new file mode 100644 index 000000000..f60c3846f Binary files /dev/null and b/sprites/s_node_pb_draw_ellipse/layers/fca72b55-9e1c-4765-810f-aaeada84730a/1ea0f4cc-6622-4c0b-8388-1d362182c510.png differ diff --git a/sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy b/sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy new file mode 100644 index 000000000..7853e7fff --- /dev/null +++ b/sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_ellipse", + "bbox_bottom": 53, + "bbox_left": 10, + "bbox_right": 53, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"fca72b55-9e1c-4765-810f-aaeada84730a",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1ea0f4cc-6622-4c0b-8388-1d362182c510","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_ellipse", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"fca72b55-9e1c-4765-810f-aaeada84730a","path":"sprites/s_node_pb_draw_ellipse/s_node_pb_draw_ellipse.yy",},},},"Disabled":false,"id":"08e6fd57-4bbb-4660-99d0-d6363b960642","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_fill/e4bf1652-1080-431f-a006-b27c657eed90.png b/sprites/s_node_pb_draw_fill/e4bf1652-1080-431f-a006-b27c657eed90.png new file mode 100644 index 000000000..985c34df3 Binary files /dev/null and b/sprites/s_node_pb_draw_fill/e4bf1652-1080-431f-a006-b27c657eed90.png differ diff --git a/sprites/s_node_pb_draw_fill/layers/e4bf1652-1080-431f-a006-b27c657eed90/9c6511d9-a468-4bf7-8242-d22f275bbcef.png b/sprites/s_node_pb_draw_fill/layers/e4bf1652-1080-431f-a006-b27c657eed90/9c6511d9-a468-4bf7-8242-d22f275bbcef.png new file mode 100644 index 000000000..985c34df3 Binary files /dev/null and b/sprites/s_node_pb_draw_fill/layers/e4bf1652-1080-431f-a006-b27c657eed90/9c6511d9-a468-4bf7-8242-d22f275bbcef.png differ diff --git a/sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy b/sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy new file mode 100644 index 000000000..54439f588 --- /dev/null +++ b/sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_fill", + "bbox_bottom": 59, + "bbox_left": 2, + "bbox_right": 60, + "bbox_top": 3, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e4bf1652-1080-431f-a006-b27c657eed90",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9c6511d9-a468-4bf7-8242-d22f275bbcef","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_fill", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"e4bf1652-1080-431f-a006-b27c657eed90","path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},},},"Disabled":false,"id":"ebb6a3a5-027c-431c-80e1-27bd8501bcec","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_rectangle/acd35f34-8471-4a6f-a5e0-cb79578aa061.png b/sprites/s_node_pb_draw_rectangle/acd35f34-8471-4a6f-a5e0-cb79578aa061.png new file mode 100644 index 000000000..4e112c974 Binary files /dev/null and b/sprites/s_node_pb_draw_rectangle/acd35f34-8471-4a6f-a5e0-cb79578aa061.png differ diff --git a/sprites/s_node_pb_draw_rectangle/layers/acd35f34-8471-4a6f-a5e0-cb79578aa061/d79e88aa-49b5-4217-8eee-8a92e395f8fc.png b/sprites/s_node_pb_draw_rectangle/layers/acd35f34-8471-4a6f-a5e0-cb79578aa061/d79e88aa-49b5-4217-8eee-8a92e395f8fc.png new file mode 100644 index 000000000..4e112c974 Binary files /dev/null and b/sprites/s_node_pb_draw_rectangle/layers/acd35f34-8471-4a6f-a5e0-cb79578aa061/d79e88aa-49b5-4217-8eee-8a92e395f8fc.png differ diff --git a/sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy b/sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy new file mode 100644 index 000000000..ad4ffdd4d --- /dev/null +++ b/sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_rectangle", + "bbox_bottom": 53, + "bbox_left": 10, + "bbox_right": 53, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"acd35f34-8471-4a6f-a5e0-cb79578aa061",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d79e88aa-49b5-4217-8eee-8a92e395f8fc","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_rectangle", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"acd35f34-8471-4a6f-a5e0-cb79578aa061","path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",},},},"Disabled":false,"id":"f76c19e1-43ea-47aa-b13c-5540f94516d5","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_roundrectangle/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6.png b/sprites/s_node_pb_draw_roundrectangle/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6.png new file mode 100644 index 000000000..f172a2c94 Binary files /dev/null and b/sprites/s_node_pb_draw_roundrectangle/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6.png differ diff --git a/sprites/s_node_pb_draw_roundrectangle/layers/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6/59ec12a2-d1e6-42f8-8c85-cd333c488303.png b/sprites/s_node_pb_draw_roundrectangle/layers/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6/59ec12a2-d1e6-42f8-8c85-cd333c488303.png new file mode 100644 index 000000000..f172a2c94 Binary files /dev/null and b/sprites/s_node_pb_draw_roundrectangle/layers/d3656bba-3d47-4d15-bc5e-fc2e505cd6d6/59ec12a2-d1e6-42f8-8c85-cd333c488303.png differ diff --git a/sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy b/sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy new file mode 100644 index 000000000..1f779b74a --- /dev/null +++ b/sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_roundrectangle", + "bbox_bottom": 53, + "bbox_left": 10, + "bbox_right": 53, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"d3656bba-3d47-4d15-bc5e-fc2e505cd6d6",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"59ec12a2-d1e6-42f8-8c85-cd333c488303","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_roundrectangle", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"d3656bba-3d47-4d15-bc5e-fc2e505cd6d6","path":"sprites/s_node_pb_draw_roundrectangle/s_node_pb_draw_roundrectangle.yy",},},},"Disabled":false,"id":"76ff5371-89fb-4ebf-937c-654d63730bff","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_semi_ellipse/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0.png b/sprites/s_node_pb_draw_semi_ellipse/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0.png new file mode 100644 index 000000000..184fbe2d4 Binary files /dev/null and b/sprites/s_node_pb_draw_semi_ellipse/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0.png differ diff --git a/sprites/s_node_pb_draw_semi_ellipse/layers/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0/2c9ff924-f437-464b-b669-fc54b5222969.png b/sprites/s_node_pb_draw_semi_ellipse/layers/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0/2c9ff924-f437-464b-b669-fc54b5222969.png new file mode 100644 index 000000000..184fbe2d4 Binary files /dev/null and b/sprites/s_node_pb_draw_semi_ellipse/layers/ac7d98d4-ebce-4783-ab3b-1509c6de3bc0/2c9ff924-f437-464b-b669-fc54b5222969.png differ diff --git a/sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy b/sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy new file mode 100644 index 000000000..ed9a44f28 --- /dev/null +++ b/sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_semi_ellipse", + "bbox_bottom": 53, + "bbox_left": 10, + "bbox_right": 53, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ac7d98d4-ebce-4783-ab3b-1509c6de3bc0",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2c9ff924-f437-464b-b669-fc54b5222969","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_semi_ellipse", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"ac7d98d4-ebce-4783-ab3b-1509c6de3bc0","path":"sprites/s_node_pb_draw_semi_ellipse/s_node_pb_draw_semi_ellipse.yy",},},},"Disabled":false,"id":"afa2888c-2127-4b13-bb50-52d0a7743d0e","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_draw_trapezoid/173f7e7d-1c4a-4cda-9573-9bf058483454.png b/sprites/s_node_pb_draw_trapezoid/173f7e7d-1c4a-4cda-9573-9bf058483454.png new file mode 100644 index 000000000..e559feb84 Binary files /dev/null and b/sprites/s_node_pb_draw_trapezoid/173f7e7d-1c4a-4cda-9573-9bf058483454.png differ diff --git a/sprites/s_node_pb_draw_trapezoid/layers/173f7e7d-1c4a-4cda-9573-9bf058483454/46792b76-3783-472b-8ac3-da79ce05c773.png b/sprites/s_node_pb_draw_trapezoid/layers/173f7e7d-1c4a-4cda-9573-9bf058483454/46792b76-3783-472b-8ac3-da79ce05c773.png new file mode 100644 index 000000000..e559feb84 Binary files /dev/null and b/sprites/s_node_pb_draw_trapezoid/layers/173f7e7d-1c4a-4cda-9573-9bf058483454/46792b76-3783-472b-8ac3-da79ce05c773.png differ diff --git a/sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy b/sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy new file mode 100644 index 000000000..2b4c881fa --- /dev/null +++ b/sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_draw_trapezoid", + "bbox_bottom": 53, + "bbox_left": 10, + "bbox_right": 53, + "bbox_top": 10, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"173f7e7d-1c4a-4cda-9573-9bf058483454",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"46792b76-3783-472b-8ac3-da79ce05c773","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_draw_trapezoid", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"173f7e7d-1c4a-4cda-9573-9bf058483454","path":"sprites/s_node_pb_draw_trapezoid/s_node_pb_draw_trapezoid.yy",},},},"Disabled":false,"id":"9d3b0377-7735-4f18-a540-c41be5e9ae7e","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_add/a6ba0f1b-fdd6-4189-a758-146ce7b68696.png b/sprites/s_node_pb_fx_add/a6ba0f1b-fdd6-4189-a758-146ce7b68696.png new file mode 100644 index 000000000..2b6250a57 Binary files /dev/null and b/sprites/s_node_pb_fx_add/a6ba0f1b-fdd6-4189-a758-146ce7b68696.png differ diff --git a/sprites/s_node_pb_fx_add/layers/a6ba0f1b-fdd6-4189-a758-146ce7b68696/ccb281ff-e089-43cb-a95f-0bd19bfda4cf.png b/sprites/s_node_pb_fx_add/layers/a6ba0f1b-fdd6-4189-a758-146ce7b68696/ccb281ff-e089-43cb-a95f-0bd19bfda4cf.png new file mode 100644 index 000000000..2b6250a57 Binary files /dev/null and b/sprites/s_node_pb_fx_add/layers/a6ba0f1b-fdd6-4189-a758-146ce7b68696/ccb281ff-e089-43cb-a95f-0bd19bfda4cf.png differ diff --git a/sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy b/sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy new file mode 100644 index 000000000..a7e5f0349 --- /dev/null +++ b/sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_add", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a6ba0f1b-fdd6-4189-a758-146ce7b68696",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ccb281ff-e089-43cb-a95f-0bd19bfda4cf","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_add", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"a6ba0f1b-fdd6-4189-a758-146ce7b68696","path":"sprites/s_node_pb_fx_add/s_node_pb_fx_add.yy",},},},"Disabled":false,"id":"07bac57b-5b67-4080-90ad-eb18d2c79cca","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_hash/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8.png b/sprites/s_node_pb_fx_hash/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8.png new file mode 100644 index 000000000..c148fb0e8 Binary files /dev/null and b/sprites/s_node_pb_fx_hash/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8.png differ diff --git a/sprites/s_node_pb_fx_hash/layers/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8/2a44244c-36d9-4beb-8ce9-1a38297af766.png b/sprites/s_node_pb_fx_hash/layers/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8/2a44244c-36d9-4beb-8ce9-1a38297af766.png new file mode 100644 index 000000000..c148fb0e8 Binary files /dev/null and b/sprites/s_node_pb_fx_hash/layers/2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8/2a44244c-36d9-4beb-8ce9-1a38297af766.png differ diff --git a/sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy b/sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy new file mode 100644 index 000000000..b352bd640 --- /dev/null +++ b/sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_hash", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2a44244c-36d9-4beb-8ce9-1a38297af766","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_hash", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"2b1c737b-6533-4e28-aa2f-1ceb4c6a0bb8","path":"sprites/s_node_pb_fx_hash/s_node_pb_fx_hash.yy",},},},"Disabled":false,"id":"f4a42994-4d38-402c-a5d0-eebbd9dc1640","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_highlight/5f08ab2d-7916-4587-afbb-90c97334b410.png b/sprites/s_node_pb_fx_highlight/5f08ab2d-7916-4587-afbb-90c97334b410.png new file mode 100644 index 000000000..49fe6a77d Binary files /dev/null and b/sprites/s_node_pb_fx_highlight/5f08ab2d-7916-4587-afbb-90c97334b410.png differ diff --git a/sprites/s_node_pb_fx_highlight/layers/5f08ab2d-7916-4587-afbb-90c97334b410/574ae896-7b3b-4d05-8b85-8ce3a7759492.png b/sprites/s_node_pb_fx_highlight/layers/5f08ab2d-7916-4587-afbb-90c97334b410/574ae896-7b3b-4d05-8b85-8ce3a7759492.png new file mode 100644 index 000000000..49fe6a77d Binary files /dev/null and b/sprites/s_node_pb_fx_highlight/layers/5f08ab2d-7916-4587-afbb-90c97334b410/574ae896-7b3b-4d05-8b85-8ce3a7759492.png differ diff --git a/sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy b/sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy new file mode 100644 index 000000000..bf9a87c4f --- /dev/null +++ b/sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_highlight", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5f08ab2d-7916-4587-afbb-90c97334b410",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"574ae896-7b3b-4d05-8b85-8ce3a7759492","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_highlight", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"5f08ab2d-7916-4587-afbb-90c97334b410","path":"sprites/s_node_pb_fx_highlight/s_node_pb_fx_highlight.yy",},},},"Disabled":false,"id":"96235330-8e33-4cf5-b4d8-a664c1413e7d","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_interesct/35a1a620-0e88-483a-a417-bbdd75ab9dac.png b/sprites/s_node_pb_fx_interesct/35a1a620-0e88-483a-a417-bbdd75ab9dac.png new file mode 100644 index 000000000..17ad1a220 Binary files /dev/null and b/sprites/s_node_pb_fx_interesct/35a1a620-0e88-483a-a417-bbdd75ab9dac.png differ diff --git a/sprites/s_node_pb_fx_interesct/layers/35a1a620-0e88-483a-a417-bbdd75ab9dac/1d2fbd79-57b6-4002-b490-ecf719e57b3a.png b/sprites/s_node_pb_fx_interesct/layers/35a1a620-0e88-483a-a417-bbdd75ab9dac/1d2fbd79-57b6-4002-b490-ecf719e57b3a.png new file mode 100644 index 000000000..17ad1a220 Binary files /dev/null and b/sprites/s_node_pb_fx_interesct/layers/35a1a620-0e88-483a-a417-bbdd75ab9dac/1d2fbd79-57b6-4002-b490-ecf719e57b3a.png differ diff --git a/sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy b/sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy new file mode 100644 index 000000000..76dcef9d4 --- /dev/null +++ b/sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_interesct", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"35a1a620-0e88-483a-a417-bbdd75ab9dac",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1d2fbd79-57b6-4002-b490-ecf719e57b3a","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_interesct", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"35a1a620-0e88-483a-a417-bbdd75ab9dac","path":"sprites/s_node_pb_fx_interesct/s_node_pb_fx_interesct.yy",},},},"Disabled":false,"id":"a0519d16-ab28-4726-b5f3-4f3b0829c285","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_outline/7e41d641-3304-4e76-a342-4f2c74308b09.png b/sprites/s_node_pb_fx_outline/7e41d641-3304-4e76-a342-4f2c74308b09.png new file mode 100644 index 000000000..acf40e86b Binary files /dev/null and b/sprites/s_node_pb_fx_outline/7e41d641-3304-4e76-a342-4f2c74308b09.png differ diff --git a/sprites/s_node_pb_fx_outline/layers/7e41d641-3304-4e76-a342-4f2c74308b09/dd68a98d-1d02-4b1b-ac2d-f50b43cbb1c5.png b/sprites/s_node_pb_fx_outline/layers/7e41d641-3304-4e76-a342-4f2c74308b09/dd68a98d-1d02-4b1b-ac2d-f50b43cbb1c5.png new file mode 100644 index 000000000..acf40e86b Binary files /dev/null and b/sprites/s_node_pb_fx_outline/layers/7e41d641-3304-4e76-a342-4f2c74308b09/dd68a98d-1d02-4b1b-ac2d-f50b43cbb1c5.png differ diff --git a/sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy b/sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy new file mode 100644 index 000000000..27ea9f061 --- /dev/null +++ b/sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_outline", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7e41d641-3304-4e76-a342-4f2c74308b09",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"dd68a98d-1d02-4b1b-ac2d-f50b43cbb1c5","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_outline", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"7e41d641-3304-4e76-a342-4f2c74308b09","path":"sprites/s_node_pb_fx_outline/s_node_pb_fx_outline.yy",},},},"Disabled":false,"id":"6f9436f4-d6a0-4d5c-bbd0-36fc0df08792","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_radial/64c17f82-cc4e-4281-9417-4840a98a3641.png b/sprites/s_node_pb_fx_radial/64c17f82-cc4e-4281-9417-4840a98a3641.png new file mode 100644 index 000000000..a4563efa0 Binary files /dev/null and b/sprites/s_node_pb_fx_radial/64c17f82-cc4e-4281-9417-4840a98a3641.png differ diff --git a/sprites/s_node_pb_fx_radial/layers/64c17f82-cc4e-4281-9417-4840a98a3641/0a944c7b-cdd1-4b9c-9410-c3e4a91f5aa1.png b/sprites/s_node_pb_fx_radial/layers/64c17f82-cc4e-4281-9417-4840a98a3641/0a944c7b-cdd1-4b9c-9410-c3e4a91f5aa1.png new file mode 100644 index 000000000..a4563efa0 Binary files /dev/null and b/sprites/s_node_pb_fx_radial/layers/64c17f82-cc4e-4281-9417-4840a98a3641/0a944c7b-cdd1-4b9c-9410-c3e4a91f5aa1.png differ diff --git a/sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy b/sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy new file mode 100644 index 000000000..00e0b15bc --- /dev/null +++ b/sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_radial", + "bbox_bottom": 59, + "bbox_left": 4, + "bbox_right": 59, + "bbox_top": 4, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"64c17f82-cc4e-4281-9417-4840a98a3641",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"0a944c7b-cdd1-4b9c-9410-c3e4a91f5aa1","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_radial", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"64c17f82-cc4e-4281-9417-4840a98a3641","path":"sprites/s_node_pb_fx_radial/s_node_pb_fx_radial.yy",},},},"Disabled":false,"id":"0c973628-b960-4adf-87fb-dc5d4ea8f4d2","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_shading/e2256e64-7f5e-46bb-b029-624b1c77f54c.png b/sprites/s_node_pb_fx_shading/e2256e64-7f5e-46bb-b029-624b1c77f54c.png new file mode 100644 index 000000000..a21046069 Binary files /dev/null and b/sprites/s_node_pb_fx_shading/e2256e64-7f5e-46bb-b029-624b1c77f54c.png differ diff --git a/sprites/s_node_pb_fx_shading/layers/e2256e64-7f5e-46bb-b029-624b1c77f54c/abd1d62f-c861-4e27-8df3-f9b72e118981.png b/sprites/s_node_pb_fx_shading/layers/e2256e64-7f5e-46bb-b029-624b1c77f54c/abd1d62f-c861-4e27-8df3-f9b72e118981.png new file mode 100644 index 000000000..a21046069 Binary files /dev/null and b/sprites/s_node_pb_fx_shading/layers/e2256e64-7f5e-46bb-b029-624b1c77f54c/abd1d62f-c861-4e27-8df3-f9b72e118981.png differ diff --git a/sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy b/sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy new file mode 100644 index 000000000..7b74e040d --- /dev/null +++ b/sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_shading", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e2256e64-7f5e-46bb-b029-624b1c77f54c",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"abd1d62f-c861-4e27-8df3-f9b72e118981","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_shading", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"e2256e64-7f5e-46bb-b029-624b1c77f54c","path":"sprites/s_node_pb_fx_shading/s_node_pb_fx_shading.yy",},},},"Disabled":false,"id":"91657c20-140b-41ee-ada2-6630402aed8d","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_stack/f93e58e8-2f73-44a2-9c79-92f60b499f54.png b/sprites/s_node_pb_fx_stack/f93e58e8-2f73-44a2-9c79-92f60b499f54.png new file mode 100644 index 000000000..4a68dd61a Binary files /dev/null and b/sprites/s_node_pb_fx_stack/f93e58e8-2f73-44a2-9c79-92f60b499f54.png differ diff --git a/sprites/s_node_pb_fx_stack/layers/f93e58e8-2f73-44a2-9c79-92f60b499f54/aa9ac2a1-2de5-451b-b442-72b0f18fbe08.png b/sprites/s_node_pb_fx_stack/layers/f93e58e8-2f73-44a2-9c79-92f60b499f54/aa9ac2a1-2de5-451b-b442-72b0f18fbe08.png new file mode 100644 index 000000000..4a68dd61a Binary files /dev/null and b/sprites/s_node_pb_fx_stack/layers/f93e58e8-2f73-44a2-9c79-92f60b499f54/aa9ac2a1-2de5-451b-b442-72b0f18fbe08.png differ diff --git a/sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy b/sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy new file mode 100644 index 000000000..6f1123c1e --- /dev/null +++ b/sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_stack", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f93e58e8-2f73-44a2-9c79-92f60b499f54",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"aa9ac2a1-2de5-451b-b442-72b0f18fbe08","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_stack", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"f93e58e8-2f73-44a2-9c79-92f60b499f54","path":"sprites/s_node_pb_fx_stack/s_node_pb_fx_stack.yy",},},},"Disabled":false,"id":"0d51b64e-6ad2-4c9f-8d43-3b0dd70d2b6c","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_fx_subtract/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36.png b/sprites/s_node_pb_fx_subtract/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36.png new file mode 100644 index 000000000..2e426f090 Binary files /dev/null and b/sprites/s_node_pb_fx_subtract/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36.png differ diff --git a/sprites/s_node_pb_fx_subtract/layers/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36/a2327c60-7ae9-42bd-a37e-7dad310fa27b.png b/sprites/s_node_pb_fx_subtract/layers/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36/a2327c60-7ae9-42bd-a37e-7dad310fa27b.png new file mode 100644 index 000000000..2e426f090 Binary files /dev/null and b/sprites/s_node_pb_fx_subtract/layers/3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36/a2327c60-7ae9-42bd-a37e-7dad310fa27b.png differ diff --git a/sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy b/sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy new file mode 100644 index 000000000..e983bae8f --- /dev/null +++ b/sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_fx_subtract", + "bbox_bottom": 55, + "bbox_left": 8, + "bbox_right": 55, + "bbox_top": 8, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"a2327c60-7ae9-42bd-a37e-7dad310fa27b","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_fx_subtract", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"3bbb2476-5dc1-4ef8-8d1f-cfacbf05ef36","path":"sprites/s_node_pb_fx_subtract/s_node_pb_fx_subtract.yy",},},},"Disabled":false,"id":"90104efb-2b77-492a-b3f3-5fbdb6d591bf","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, +} \ No newline at end of file diff --git a/sprites/s_node_pb_layer/dac959c8-6ffd-40c6-999b-1e972f074c95.png b/sprites/s_node_pb_layer/dac959c8-6ffd-40c6-999b-1e972f074c95.png new file mode 100644 index 000000000..ad14cfb72 Binary files /dev/null and b/sprites/s_node_pb_layer/dac959c8-6ffd-40c6-999b-1e972f074c95.png differ diff --git a/sprites/s_node_pb_layer/layers/dac959c8-6ffd-40c6-999b-1e972f074c95/6268addc-aa70-4036-a0de-0041ab23939d.png b/sprites/s_node_pb_layer/layers/dac959c8-6ffd-40c6-999b-1e972f074c95/6268addc-aa70-4036-a0de-0041ab23939d.png new file mode 100644 index 000000000..ad14cfb72 Binary files /dev/null and b/sprites/s_node_pb_layer/layers/dac959c8-6ffd-40c6-999b-1e972f074c95/6268addc-aa70-4036-a0de-0041ab23939d.png differ diff --git a/sprites/s_node_pb_layer/s_node_pb_layer.yy b/sprites/s_node_pb_layer/s_node_pb_layer.yy new file mode 100644 index 000000000..e5a92b320 --- /dev/null +++ b/sprites/s_node_pb_layer/s_node_pb_layer.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pb_layer", + "bbox_bottom": 57, + "bbox_left": 4, + "bbox_right": 59, + "bbox_top": 9, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"dac959c8-6ffd-40c6-999b-1e972f074c95",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"6268addc-aa70-4036-a0de-0041ab23939d","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pb_layer", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"dac959c8-6ffd-40c6-999b-1e972f074c95","path":"sprites/s_node_pb_layer/s_node_pb_layer.yy",},},},"Disabled":false,"id":"09922b92-99b7-4f6d-9890-2154db261afd","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, +} \ No newline at end of file diff --git a/sprites/s_node_pixel_builder/50e3973b-0a83-4a4f-a43b-2cb5f3dae836.png b/sprites/s_node_pixel_builder/50e3973b-0a83-4a4f-a43b-2cb5f3dae836.png new file mode 100644 index 000000000..9480993ae Binary files /dev/null and b/sprites/s_node_pixel_builder/50e3973b-0a83-4a4f-a43b-2cb5f3dae836.png differ diff --git a/sprites/s_node_pixel_builder/layers/50e3973b-0a83-4a4f-a43b-2cb5f3dae836/9fe3b4b7-02a6-45f1-a5ed-a5eb9467a5f7.png b/sprites/s_node_pixel_builder/layers/50e3973b-0a83-4a4f-a43b-2cb5f3dae836/9fe3b4b7-02a6-45f1-a5ed-a5eb9467a5f7.png new file mode 100644 index 000000000..9480993ae Binary files /dev/null and b/sprites/s_node_pixel_builder/layers/50e3973b-0a83-4a4f-a43b-2cb5f3dae836/9fe3b4b7-02a6-45f1-a5ed-a5eb9467a5f7.png differ diff --git a/sprites/s_node_pixel_builder/s_node_pixel_builder.yy b/sprites/s_node_pixel_builder/s_node_pixel_builder.yy new file mode 100644 index 000000000..56adb1812 --- /dev/null +++ b/sprites/s_node_pixel_builder/s_node_pixel_builder.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_pixel_builder", + "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":"50e3973b-0a83-4a4f-a43b-2cb5f3dae836",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9fe3b4b7-02a6-45f1-a5ed-a5eb9467a5f7","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "pixel builder", + "path": "folders/nodes/icons/pixel builder.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_pixel_builder", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"50e3973b-0a83-4a4f-a43b-2cb5f3dae836","path":"sprites/s_node_pixel_builder/s_node_pixel_builder.yy",},},},"Disabled":false,"id":"89b7c358-108e-4312-a2c1-c9592b5547ae","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, +} \ No newline at end of file