This commit is contained in:
Tanasart 2023-06-17 14:30:49 +02:00
parent 0664451464
commit 9219431741
159 changed files with 13704 additions and 11099 deletions

View file

@ -1,9 +1,11 @@
{ {
"FolderOrderSettings": [ "FolderOrderSettings": [
{"name":"_Extensions","order":9,"path":"folders/_Extensions.yy",}, {"name":"_crash_handler","order":13,"path":"folders/_crash_handler.yy",},
{"name":"BBMOD","order":8,"path":"folders/_Extensions/BBMOD.yy",}, {"name":"sprites","order":3,"path":"folders/_crash_handler/sprites.yy",},
{"name":"Math","order":1,"path":"folders/_Extensions/BBMOD/Math.yy",}, {"name":"_extensions","order":9,"path":"folders/_extensions.yy",},
{"name":"MAC","order":6,"path":"folders/_Extensions/MAC.yy",}, {"name":"BBMOD","order":8,"path":"folders/_extensions/BBMOD.yy",},
{"name":"Math","order":1,"path":"folders/_extensions/BBMOD/Math.yy",},
{"name":"MAC","order":6,"path":"folders/_extensions/MAC.yy",},
{"name":"addons","order":11,"path":"folders/addons.yy",}, {"name":"addons","order":11,"path":"folders/addons.yy",},
{"name":"custom","order":4,"path":"folders/addons/custom.yy",}, {"name":"custom","order":4,"path":"folders/addons/custom.yy",},
{"name":"key displayer","order":2,"path":"folders/addons/key displayer.yy",}, {"name":"key displayer","order":2,"path":"folders/addons/key displayer.yy",},
@ -71,6 +73,7 @@
{"name":"animation","order":5,"path":"folders/nodes/data/animation.yy",}, {"name":"animation","order":5,"path":"folders/nodes/data/animation.yy",},
{"name":"audio","order":21,"path":"folders/nodes/data/audio.yy",}, {"name":"audio","order":21,"path":"folders/nodes/data/audio.yy",},
{"name":"compose","order":15,"path":"folders/nodes/data/compose.yy",}, {"name":"compose","order":15,"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":14,"path":"folders/nodes/data/feedback.yy",},
{"name":"filter","order":1,"path":"folders/nodes/data/filter.yy",}, {"name":"filter","order":1,"path":"folders/nodes/data/filter.yy",},
{"name":"colors","order":4,"path":"folders/nodes/data/filter/colors.yy",}, {"name":"colors","order":4,"path":"folders/nodes/data/filter/colors.yy",},
@ -228,6 +231,7 @@
{"name":"fd_rectangle_replace_material_advanced","order":15,"path":"scripts/fd_rectangle_replace_material_advanced/fd_rectangle_replace_material_advanced.yy",}, {"name":"fd_rectangle_replace_material_advanced","order":15,"path":"scripts/fd_rectangle_replace_material_advanced/fd_rectangle_replace_material_advanced.yy",},
{"name":"array_functions","order":2,"path":"scripts/array_functions/array_functions.yy",}, {"name":"array_functions","order":2,"path":"scripts/array_functions/array_functions.yy",},
{"name":"sh_blur_final","order":2,"path":"shaders/sh_blur_final/sh_blur_final.yy",}, {"name":"sh_blur_final","order":2,"path":"shaders/sh_blur_final/sh_blur_final.yy",},
{"name":"s_window_frame","order":6,"path":"sprites/s_window_frame/s_window_frame.yy",},
{"name":"sh_fd_visualize_velocity_glsl","order":19,"path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",}, {"name":"sh_fd_visualize_velocity_glsl","order":19,"path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",},
{"name":"fd_rectangle_set_material_time_step","order":8,"path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",}, {"name":"fd_rectangle_set_material_time_step","order":8,"path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},
{"name":"s_node_path_sample","order":3,"path":"sprites/s_node_path_sample/s_node_path_sample.yy",}, {"name":"s_node_path_sample","order":3,"path":"sprites/s_node_path_sample/s_node_path_sample.yy",},
@ -276,6 +280,7 @@
{"name":"node_flip","order":13,"path":"scripts/node_flip/node_flip.yy",}, {"name":"node_flip","order":13,"path":"scripts/node_flip/node_flip.yy",},
{"name":"sh_FXAA","order":52,"path":"shaders/sh_FXAA/sh_FXAA.yy",}, {"name":"sh_FXAA","order":52,"path":"shaders/sh_FXAA/sh_FXAA.yy",},
{"name":"node_gradient_points","order":18,"path":"scripts/node_gradient_points/node_gradient_points.yy",}, {"name":"node_gradient_points","order":18,"path":"scripts/node_gradient_points/node_gradient_points.yy",},
{"name":"s_button_hide_fill","order":4,"path":"sprites/s_button_hide_fill/s_button_hide_fill.yy",},
{"name":"_f_code","order":9,"path":"fonts/_f_code/_f_code.yy",}, {"name":"_f_code","order":9,"path":"fonts/_f_code/_f_code.yy",},
{"name":"sh_combine_rgb","order":40,"path":"shaders/sh_combine_rgb/sh_combine_rgb.yy",}, {"name":"sh_combine_rgb","order":40,"path":"shaders/sh_combine_rgb/sh_combine_rgb.yy",},
{"name":"s_node_strandSim","order":3,"path":"sprites/s_node_strandSim/s_node_strandSim.yy",}, {"name":"s_node_strandSim","order":3,"path":"sprites/s_node_strandSim/s_node_strandSim.yy",},
@ -284,6 +289,7 @@
{"name":"fd_rectangle_get_velocity_maccormack_weight","order":23,"path":"scripts/fd_rectangle_get_velocity_maccormack_weight/fd_rectangle_get_velocity_maccormack_weight.yy",}, {"name":"fd_rectangle_get_velocity_maccormack_weight","order":23,"path":"scripts/fd_rectangle_get_velocity_maccormack_weight/fd_rectangle_get_velocity_maccormack_weight.yy",},
{"name":"sh_fd_advect_material_rgba_8_glsl","order":5,"path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",}, {"name":"sh_fd_advect_material_rgba_8_glsl","order":5,"path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",},
{"name":"addon_function","order":3,"path":"scripts/addon_function/addon_function.yy",}, {"name":"addon_function","order":3,"path":"scripts/addon_function/addon_function.yy",},
{"name":"node_armature_bind","order":1,"path":"scripts/node_armature_bind/node_armature_bind.yy",},
{"name":"fd_rectangle_get_material_dissipation_type","order":8,"path":"scripts/fd_rectangle_get_material_dissipation_type/fd_rectangle_get_material_dissipation_type.yy",}, {"name":"fd_rectangle_get_material_dissipation_type","order":8,"path":"scripts/fd_rectangle_get_material_dissipation_type/fd_rectangle_get_material_dissipation_type.yy",},
{"name":"draw_surface_blend","order":1,"path":"scripts/draw_surface_blend/draw_surface_blend.yy",}, {"name":"draw_surface_blend","order":1,"path":"scripts/draw_surface_blend/draw_surface_blend.yy",},
{"name":"o_dialog_group_input_order","order":3,"path":"objects/o_dialog_group_input_order/o_dialog_group_input_order.yy",}, {"name":"o_dialog_group_input_order","order":3,"path":"objects/o_dialog_group_input_order/o_dialog_group_input_order.yy",},
@ -328,6 +334,7 @@
{"name":"fd_rectangle_update_view","order":5,"path":"scripts/fd_rectangle_update_view/fd_rectangle_update_view.yy",}, {"name":"fd_rectangle_update_view","order":5,"path":"scripts/fd_rectangle_update_view/fd_rectangle_update_view.yy",},
{"name":"s_node_rigidSim_renderer","order":1,"path":"sprites/s_node_rigidSim_renderer/s_node_rigidSim_renderer.yy",}, {"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":"__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":9,"path":"scripts/__node/__node.yy",},
{"name":"fd_rectangle_add_velocity","order":5,"path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",}, {"name":"fd_rectangle_add_velocity","order":5,"path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",},
{"name":"sh_level_selector","order":23,"path":"shaders/sh_level_selector/sh_level_selector.yy",}, {"name":"sh_level_selector","order":23,"path":"shaders/sh_level_selector/sh_level_selector.yy",},
@ -489,6 +496,7 @@
{"name":"node_string_regex_replace","order":24,"path":"scripts/node_string_regex_replace/node_string_regex_replace.yy",}, {"name":"node_string_regex_replace","order":24,"path":"scripts/node_string_regex_replace/node_string_regex_replace.yy",},
{"name":"s_node_particle","order":12,"path":"sprites/s_node_particle/s_node_particle.yy",}, {"name":"s_node_particle","order":12,"path":"sprites/s_node_particle/s_node_particle.yy",},
{"name":"s_node_random","order":3,"path":"sprites/s_node_random/s_node_random.yy",}, {"name":"s_node_random","order":3,"path":"sprites/s_node_random/s_node_random.yy",},
{"name":"s_window_exit","order":2,"path":"sprites/s_window_exit/s_window_exit.yy",},
{"name":"s_node_color_remove","order":7,"path":"sprites/s_node_color_remove/s_node_color_remove.yy",}, {"name":"s_node_color_remove","order":7,"path":"sprites/s_node_color_remove/s_node_color_remove.yy",},
{"name":"sh_average","order":7,"path":"shaders/sh_average/sh_average.yy",}, {"name":"sh_average","order":7,"path":"shaders/sh_average/sh_average.yy",},
{"name":"sh_warp_4points_pers","order":10,"path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",}, {"name":"sh_warp_4points_pers","order":10,"path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",},
@ -608,6 +616,7 @@
{"name":"sh_fd_advect_material_a_8_glsl","order":3,"path":"shaders/sh_fd_advect_material_a_8_glsl/sh_fd_advect_material_a_8_glsl.yy",}, {"name":"sh_fd_advect_material_a_8_glsl","order":3,"path":"shaders/sh_fd_advect_material_a_8_glsl/sh_fd_advect_material_a_8_glsl.yy",},
{"name":"node_color_remove","order":2,"path":"scripts/node_color_remove/node_color_remove.yy",}, {"name":"node_color_remove","order":2,"path":"scripts/node_color_remove/node_color_remove.yy",},
{"name":"spr_gameframe_pixel","order":3,"path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",}, {"name":"spr_gameframe_pixel","order":3,"path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",},
{"name":"process_functions","order":38,"path":"scripts/process_functions/process_functions.yy",},
{"name":"s_node_radial","order":53,"path":"sprites/s_node_radial/s_node_radial.yy",}, {"name":"s_node_radial","order":53,"path":"sprites/s_node_radial/s_node_radial.yy",},
{"name":"s_node_grid","order":3,"path":"sprites/s_node_grid/s_node_grid.yy",}, {"name":"s_node_grid","order":3,"path":"sprites/s_node_grid/s_node_grid.yy",},
{"name":"s_node_animation_control","order":31,"path":"sprites/s_node_animation_control/s_node_animation_control.yy",}, {"name":"s_node_animation_control","order":31,"path":"sprites/s_node_animation_control/s_node_animation_control.yy",},
@ -702,6 +711,7 @@
{"name":"preview_overlay_puppet","order":4,"path":"scripts/preview_overlay_puppet/preview_overlay_puppet.yy",}, {"name":"preview_overlay_puppet","order":4,"path":"scripts/preview_overlay_puppet/preview_overlay_puppet.yy",},
{"name":"s_icon_64","order":2,"path":"sprites/s_icon_64/s_icon_64.yy",}, {"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":"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":"s_node_gradient_replace","order":18,"path":"sprites/s_node_gradient_replace/s_node_gradient_replace.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",}, {"name":"node_perlin_smear","order":9,"path":"scripts/node_perlin_smear/node_perlin_smear.yy",},
{"name":"node_alpha_cutoff","order":10,"path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",}, {"name":"node_alpha_cutoff","order":10,"path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},
@ -985,6 +995,7 @@
{"name":"mouse_input","order":1,"path":"scripts/mouse_input/mouse_input.yy",}, {"name":"mouse_input","order":1,"path":"scripts/mouse_input/mouse_input.yy",},
{"name":"string_cut","order":2,"path":"scripts/string_cut/string_cut.yy",}, {"name":"string_cut","order":2,"path":"scripts/string_cut/string_cut.yy",},
{"name":"node_3d_prim_cylinder","order":2,"path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",}, {"name":"node_3d_prim_cylinder","order":2,"path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},
{"name":"s_discord","order":7,"path":"sprites/s_discord/s_discord.yy",},
{"name":"panel_nodes","order":2,"path":"scripts/panel_nodes/panel_nodes.yy",}, {"name":"panel_nodes","order":2,"path":"scripts/panel_nodes/panel_nodes.yy",},
{"name":"sh_gradient_points","order":19,"path":"shaders/sh_gradient_points/sh_gradient_points.yy",}, {"name":"sh_gradient_points","order":19,"path":"shaders/sh_gradient_points/sh_gradient_points.yy",},
{"name":"s_node_vfx_turb","order":5,"path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",}, {"name":"s_node_vfx_turb","order":5,"path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},
@ -1023,6 +1034,7 @@
{"name":"gameframe_macros","order":1,"path":"scripts/gameframe_macros/gameframe_macros.yy",}, {"name":"gameframe_macros","order":1,"path":"scripts/gameframe_macros/gameframe_macros.yy",},
{"name":"s_node_trigger_bool","order":4,"path":"sprites/s_node_trigger_bool/s_node_trigger_bool.yy",}, {"name":"s_node_trigger_bool","order":4,"path":"sprites/s_node_trigger_bool/s_node_trigger_bool.yy",},
{"name":"panel_color","order":1,"path":"scripts/panel_color/panel_color.yy",}, {"name":"panel_color","order":1,"path":"scripts/panel_color/panel_color.yy",},
{"name":"s_copy","order":3,"path":"sprites/s_copy/s_copy.yy",},
{"name":"s_node_line","order":7,"path":"sprites/s_node_line/s_node_line.yy",}, {"name":"s_node_line","order":7,"path":"sprites/s_node_line/s_node_line.yy",},
{"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":"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":"node_counter","order":1,"path":"scripts/node_counter/node_counter.yy",},
@ -1063,6 +1075,7 @@
{"name":"node_print","order":10,"path":"scripts/node_print/node_print.yy",}, {"name":"node_print","order":10,"path":"scripts/node_print/node_print.yy",},
{"name":"s_node_strandSim_force","order":6,"path":"sprites/s_node_strandSim_force/s_node_strandSim_force.yy",}, {"name":"s_node_strandSim_force","order":6,"path":"sprites/s_node_strandSim_force/s_node_strandSim_force.yy",},
{"name":"s_node_array_reverse","order":8,"path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",}, {"name":"s_node_array_reverse","order":8,"path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",},
{"name":"o_process_handler","order":3,"path":"objects/o_process_handler/o_process_handler.yy",},
{"name":"sh_ani_noise","order":4,"path":"shaders/sh_ani_noise/sh_ani_noise.yy",}, {"name":"sh_ani_noise","order":4,"path":"shaders/sh_ani_noise/sh_ani_noise.yy",},
{"name":"sh_level","order":11,"path":"shaders/sh_level/sh_level.yy",}, {"name":"sh_level","order":11,"path":"shaders/sh_level/sh_level.yy",},
{"name":"sh_grid_tri","order":20,"path":"shaders/sh_grid_tri/sh_grid_tri.yy",}, {"name":"sh_grid_tri","order":20,"path":"shaders/sh_grid_tri/sh_grid_tri.yy",},
@ -1093,6 +1106,7 @@
{"name":"draw_UI_scale","order":8,"path":"scripts/draw_UI_scale/draw_UI_scale.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_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",}, {"name":"s_node_RGB_combine","order":45,"path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",},
{"name":"draw_circle_prec","order":23,"path":"scripts/draw_circle_prec/draw_circle_prec.yy",},
{"name":"s_node_shadow_cast","order":49,"path":"sprites/s_node_shadow_cast/s_node_shadow_cast.yy",}, {"name":"s_node_shadow_cast","order":49,"path":"sprites/s_node_shadow_cast/s_node_shadow_cast.yy",},
{"name":"fft_functions","order":1,"path":"scripts/fft_functions/fft_functions.yy",}, {"name":"fft_functions","order":1,"path":"scripts/fft_functions/fft_functions.yy",},
{"name":"path_function","order":4,"path":"scripts/path_function/path_function.yy",}, {"name":"path_function","order":4,"path":"scripts/path_function/path_function.yy",},
@ -1159,6 +1173,7 @@
{"name":"node_tunnel_out","order":7,"path":"scripts/node_tunnel_out/node_tunnel_out.yy",}, {"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":"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_level","order":7,"path":"scripts/node_level/node_level.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":"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",}, {"name":"s_node_group_output","order":15,"path":"sprites/s_node_group_output/s_node_group_output.yy",},
{"name":"node_path_l_system","order":10,"path":"scripts/node_path_l_system/node_path_l_system.yy",}, {"name":"node_path_l_system","order":10,"path":"scripts/node_path_l_system/node_path_l_system.yy",},
@ -1216,6 +1231,7 @@
{"name":"node_camera","order":3,"path":"scripts/node_camera/node_camera.yy",}, {"name":"node_camera","order":3,"path":"scripts/node_camera/node_camera.yy",},
{"name":"s_node_color_replace","order":8,"path":"sprites/s_node_color_replace/s_node_color_replace.yy",}, {"name":"s_node_color_replace","order":8,"path":"sprites/s_node_color_replace/s_node_color_replace.yy",},
{"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",}, {"name":"draw_surface_functions","order":4,"path":"scripts/draw_surface_functions/draw_surface_functions.yy",},
{"name":"s_noti_icon_error","order":5,"path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},
{"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",}, {"name":"node_rigid_variable","order":8,"path":"scripts/node_rigid_variable/node_rigid_variable.yy",},
{"name":"s_node_zoom","order":54,"path":"sprites/s_node_zoom/s_node_zoom.yy",}, {"name":"s_node_zoom","order":54,"path":"sprites/s_node_zoom/s_node_zoom.yy",},
{"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",}, {"name":"node_noise_fbm","order":3,"path":"scripts/node_noise_fbm/node_noise_fbm.yy",},
@ -1258,6 +1274,7 @@
{"name":"s_node_noise_aniso","order":9,"path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",}, {"name":"s_node_noise_aniso","order":9,"path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},
{"name":"s_node_gradient_palette","order":16,"path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",}, {"name":"s_node_gradient_palette","order":16,"path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",},
{"name":"node_array_shuffle","order":22,"path":"scripts/node_array_shuffle/node_array_shuffle.yy",}, {"name":"node_array_shuffle","order":22,"path":"scripts/node_array_shuffle/node_array_shuffle.yy",},
{"name":"panel_node_data_gen","order":9,"path":"scripts/panel_node_data_gen/panel_node_data_gen.yy",},
{"name":"fd_rectangle_update_material","order":21,"path":"scripts/fd_rectangle_update_material/fd_rectangle_update_material.yy",}, {"name":"fd_rectangle_update_material","order":21,"path":"scripts/fd_rectangle_update_material/fd_rectangle_update_material.yy",},
{"name":"sh_perlin_tiled","order":2,"path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",}, {"name":"sh_perlin_tiled","order":2,"path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},
{"name":"sh_time_remap","order":2,"path":"shaders/sh_time_remap/sh_time_remap.yy",}, {"name":"sh_time_remap","order":2,"path":"shaders/sh_time_remap/sh_time_remap.yy",},

View file

@ -19,11 +19,13 @@
}, },
"defaultScriptType": 1, "defaultScriptType": 1,
"Folders": [ "Folders": [
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"_Extensions","folderPath":"folders/_Extensions.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"_crash_handler","folderPath":"folders/_crash_handler.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"BBMOD","folderPath":"folders/_Extensions/BBMOD.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/_crash_handler/sprites.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Math","folderPath":"folders/_Extensions/BBMOD/Math.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"_extensions","folderPath":"folders/_extensions.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Gameframe","folderPath":"folders/_Extensions/Gameframe.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"BBMOD","folderPath":"folders/_extensions/BBMOD.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"MAC","folderPath":"folders/_Extensions/MAC.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Math","folderPath":"folders/_extensions/BBMOD/Math.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"Gameframe","folderPath":"folders/_extensions/Gameframe.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"MAC","folderPath":"folders/_extensions/MAC.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"addons","folderPath":"folders/addons.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"addons","folderPath":"folders/addons.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"custom","folderPath":"folders/addons/custom.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"custom","folderPath":"folders/addons/custom.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"key displayer","folderPath":"folders/addons/key displayer.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"key displayer","folderPath":"folders/addons/key displayer.yy",},
@ -94,6 +96,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"audio","folderPath":"folders/nodes/data/audio.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"audio","folderPath":"folders/nodes/data/audio.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"compose","folderPath":"folders/nodes/data/compose.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"compose","folderPath":"folders/nodes/data/compose.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"armature","folderPath":"folders/nodes/data/compose/armature.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"feedback","folderPath":"folders/nodes/data/feedback.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"feedback","folderPath":"folders/nodes/data/feedback.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"blur","folderPath":"folders/nodes/data/filter/blur.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"blur","folderPath":"folders/nodes/data/filter/blur.yy",},
@ -285,6 +288,7 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_grid_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_grid_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_keyframe_override.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_keyframe_override.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_minimap_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_minimap_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_node_dropper.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_output_visibility.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_output_visibility.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_play_sound.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_play_sound.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -498,6 +502,7 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_tab.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_tab.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_scroll_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_scroll_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_selection.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_selection.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_window_frame.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_badge.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_badge.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_frame.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_frame.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
@ -517,6 +522,7 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_top_right.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_top_right.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_progress_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_slider.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_slider.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_box_header.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_box_header.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_textbox_code_line.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_textbox_code_line.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
@ -684,6 +690,7 @@
{"id":{"name":"fd_rectangle_replace_material_advanced","path":"scripts/fd_rectangle_replace_material_advanced/fd_rectangle_replace_material_advanced.yy",},}, {"id":{"name":"fd_rectangle_replace_material_advanced","path":"scripts/fd_rectangle_replace_material_advanced/fd_rectangle_replace_material_advanced.yy",},},
{"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},}, {"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},},
{"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},}, {"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},},
{"id":{"name":"s_window_frame","path":"sprites/s_window_frame/s_window_frame.yy",},},
{"id":{"name":"sh_fd_visualize_velocity_glsl","path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",},}, {"id":{"name":"sh_fd_visualize_velocity_glsl","path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",},},
{"id":{"name":"fd_rectangle_set_material_time_step","path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},}, {"id":{"name":"fd_rectangle_set_material_time_step","path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},},
{"id":{"name":"s_node_path_sample","path":"sprites/s_node_path_sample/s_node_path_sample.yy",},}, {"id":{"name":"s_node_path_sample","path":"sprites/s_node_path_sample/s_node_path_sample.yy",},},
@ -742,6 +749,7 @@
{"id":{"name":"sh_FXAA","path":"shaders/sh_FXAA/sh_FXAA.yy",},}, {"id":{"name":"sh_FXAA","path":"shaders/sh_FXAA/sh_FXAA.yy",},},
{"id":{"name":"shader_functions","path":"scripts/shader_functions/shader_functions.yy",},}, {"id":{"name":"shader_functions","path":"scripts/shader_functions/shader_functions.yy",},},
{"id":{"name":"node_gradient_points","path":"scripts/node_gradient_points/node_gradient_points.yy",},}, {"id":{"name":"node_gradient_points","path":"scripts/node_gradient_points/node_gradient_points.yy",},},
{"id":{"name":"s_button_hide_fill","path":"sprites/s_button_hide_fill/s_button_hide_fill.yy",},},
{"id":{"name":"_f_code","path":"fonts/_f_code/_f_code.yy",},}, {"id":{"name":"_f_code","path":"fonts/_f_code/_f_code.yy",},},
{"id":{"name":"sh_combine_rgb","path":"shaders/sh_combine_rgb/sh_combine_rgb.yy",},}, {"id":{"name":"sh_combine_rgb","path":"shaders/sh_combine_rgb/sh_combine_rgb.yy",},},
{"id":{"name":"s_node_strandSim","path":"sprites/s_node_strandSim/s_node_strandSim.yy",},}, {"id":{"name":"s_node_strandSim","path":"sprites/s_node_strandSim/s_node_strandSim.yy",},},
@ -753,6 +761,7 @@
{"id":{"name":"s_node_mesh_path","path":"sprites/s_node_mesh_path/s_node_mesh_path.yy",},}, {"id":{"name":"s_node_mesh_path","path":"sprites/s_node_mesh_path/s_node_mesh_path.yy",},},
{"id":{"name":"sh_fd_advect_material_rgba_8_glsl","path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",},}, {"id":{"name":"sh_fd_advect_material_rgba_8_glsl","path":"shaders/sh_fd_advect_material_rgba_8_glsl/sh_fd_advect_material_rgba_8_glsl.yy",},},
{"id":{"name":"addon_function","path":"scripts/addon_function/addon_function.yy",},}, {"id":{"name":"addon_function","path":"scripts/addon_function/addon_function.yy",},},
{"id":{"name":"node_armature_bind","path":"scripts/node_armature_bind/node_armature_bind.yy",},},
{"id":{"name":"fd_rectangle_get_material_dissipation_type","path":"scripts/fd_rectangle_get_material_dissipation_type/fd_rectangle_get_material_dissipation_type.yy",},}, {"id":{"name":"fd_rectangle_get_material_dissipation_type","path":"scripts/fd_rectangle_get_material_dissipation_type/fd_rectangle_get_material_dissipation_type.yy",},},
{"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},}, {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},},
{"id":{"name":"o_dialog_group_input_order","path":"objects/o_dialog_group_input_order/o_dialog_group_input_order.yy",},}, {"id":{"name":"o_dialog_group_input_order","path":"objects/o_dialog_group_input_order/o_dialog_group_input_order.yy",},},
@ -800,6 +809,7 @@
{"id":{"name":"fd_rectangle_update_view","path":"scripts/fd_rectangle_update_view/fd_rectangle_update_view.yy",},}, {"id":{"name":"fd_rectangle_update_view","path":"scripts/fd_rectangle_update_view/fd_rectangle_update_view.yy",},},
{"id":{"name":"s_node_rigidSim_renderer","path":"sprites/s_node_rigidSim_renderer/s_node_rigidSim_renderer.yy",},}, {"id":{"name":"s_node_rigidSim_renderer","path":"sprites/s_node_rigidSim_renderer/s_node_rigidSim_renderer.yy",},},
{"id":{"name":"__init_background","path":"scripts/__init_background/__init_background.yy",},}, {"id":{"name":"__init_background","path":"scripts/__init_background/__init_background.yy",},},
{"id":{"name":"s_textbox","path":"sprites/s_textbox/s_textbox.yy",},},
{"id":{"name":"__node","path":"scripts/__node/__node.yy",},}, {"id":{"name":"__node","path":"scripts/__node/__node.yy",},},
{"id":{"name":"fd_rectangle_add_velocity","path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",},}, {"id":{"name":"fd_rectangle_add_velocity","path":"scripts/fd_rectangle_add_velocity/fd_rectangle_add_velocity.yy",},},
{"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},}, {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},},
@ -875,6 +885,7 @@
{"id":{"name":"node_array_sort","path":"scripts/node_array_sort/node_array_sort.yy",},}, {"id":{"name":"node_array_sort","path":"scripts/node_array_sort/node_array_sort.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":"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":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.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",},}, {"id":{"name":"sh_fd_calculate_pressure_jacobi_glsl","path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",},},
{"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},},
{"id":{"name":"node_struct_get","path":"scripts/node_struct_get/node_struct_get.yy",},}, {"id":{"name":"node_struct_get","path":"scripts/node_struct_get/node_struct_get.yy",},},
@ -986,6 +997,7 @@
{"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},}, {"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},},
{"id":{"name":"sh_flood_fill_thres","path":"shaders/sh_flood_fill_thres/sh_flood_fill_thres.yy",},}, {"id":{"name":"sh_flood_fill_thres","path":"shaders/sh_flood_fill_thres/sh_flood_fill_thres.yy",},},
{"id":{"name":"s_node_random","path":"sprites/s_node_random/s_node_random.yy",},}, {"id":{"name":"s_node_random","path":"sprites/s_node_random/s_node_random.yy",},},
{"id":{"name":"s_window_exit","path":"sprites/s_window_exit/s_window_exit.yy",},},
{"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},}, {"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},},
{"id":{"name":"sh_average","path":"shaders/sh_average/sh_average.yy",},}, {"id":{"name":"sh_average","path":"shaders/sh_average/sh_average.yy",},},
{"id":{"name":"sh_warp_4points_pers","path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",},}, {"id":{"name":"sh_warp_4points_pers","path":"shaders/sh_warp_4points_pers/sh_warp_4points_pers.yy",},},
@ -1124,6 +1136,7 @@
{"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},}, {"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},},
{"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},}, {"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},},
{"id":{"name":"spr_gameframe_pixel","path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",},}, {"id":{"name":"spr_gameframe_pixel","path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",},},
{"id":{"name":"process_functions","path":"scripts/process_functions/process_functions.yy",},},
{"id":{"name":"s_node_radial","path":"sprites/s_node_radial/s_node_radial.yy",},}, {"id":{"name":"s_node_radial","path":"sprites/s_node_radial/s_node_radial.yy",},},
{"id":{"name":"s_node_grid","path":"sprites/s_node_grid/s_node_grid.yy",},}, {"id":{"name":"s_node_grid","path":"sprites/s_node_grid/s_node_grid.yy",},},
{"id":{"name":"node_trigger","path":"scripts/node_trigger/node_trigger.yy",},}, {"id":{"name":"node_trigger","path":"scripts/node_trigger/node_trigger.yy",},},
@ -1230,6 +1243,7 @@
{"id":{"name":"__mesh","path":"scripts/__mesh/__mesh.yy",},}, {"id":{"name":"__mesh","path":"scripts/__mesh/__mesh.yy",},},
{"id":{"name":"s_icon_64","path":"sprites/s_icon_64/s_icon_64.yy",},}, {"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":"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":"save_function","path":"scripts/save_function/save_function.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":"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",},}, {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},},
@ -1503,6 +1517,7 @@
{"id":{"name":"s_node_condition","path":"sprites/s_node_condition/s_node_condition.yy",},}, {"id":{"name":"s_node_condition","path":"sprites/s_node_condition/s_node_condition.yy",},},
{"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},}, {"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},},
{"id":{"name":"fd_rectangle_set_collision_mask_surface","path":"scripts/fd_rectangle_set_collision_mask_surface/fd_rectangle_set_collision_mask_surface.yy",},}, {"id":{"name":"fd_rectangle_set_collision_mask_surface","path":"scripts/fd_rectangle_set_collision_mask_surface/fd_rectangle_set_collision_mask_surface.yy",},},
{"id":{"name":"node_armature","path":"scripts/node_armature/node_armature.yy",},},
{"id":{"name":"node_array_length","path":"scripts/node_array_length/node_array_length.yy",},}, {"id":{"name":"node_array_length","path":"scripts/node_array_length/node_array_length.yy",},},
{"id":{"name":"node_erode","path":"scripts/node_erode/node_erode.yy",},}, {"id":{"name":"node_erode","path":"scripts/node_erode/node_erode.yy",},},
{"id":{"name":"draw_circle_angle","path":"scripts/draw_circle_angle/draw_circle_angle.yy",},}, {"id":{"name":"draw_circle_angle","path":"scripts/draw_circle_angle/draw_circle_angle.yy",},},
@ -1552,6 +1567,7 @@
{"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},}, {"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},},
{"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},}, {"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},},
{"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},}, {"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},},
{"id":{"name":"s_discord","path":"sprites/s_discord/s_discord.yy",},},
{"id":{"name":"panel_nodes","path":"scripts/panel_nodes/panel_nodes.yy",},}, {"id":{"name":"panel_nodes","path":"scripts/panel_nodes/panel_nodes.yy",},},
{"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},}, {"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},},
{"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},}, {"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},},
@ -1560,6 +1576,7 @@
{"id":{"name":"node_surface_to_color","path":"scripts/node_surface_to_color/node_surface_to_color.yy",},}, {"id":{"name":"node_surface_to_color","path":"scripts/node_surface_to_color/node_surface_to_color.yy",},},
{"id":{"name":"sh_shadow_cast_light_sep","path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",},}, {"id":{"name":"sh_shadow_cast_light_sep","path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",},},
{"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},}, {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},},
{"id":{"name":"o_crash_handler","path":"objects/o_crash_handler/o_crash_handler.yy",},},
{"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},},
{"id":{"name":"node_morph_surface","path":"scripts/node_morph_surface/node_morph_surface.yy",},}, {"id":{"name":"node_morph_surface","path":"scripts/node_morph_surface/node_morph_surface.yy",},},
{"id":{"name":"node_tunnel_in","path":"scripts/node_tunnel_in/node_tunnel_in.yy",},}, {"id":{"name":"node_tunnel_in","path":"scripts/node_tunnel_in/node_tunnel_in.yy",},},
@ -1596,6 +1613,7 @@
{"id":{"name":"gameframe_macros","path":"scripts/gameframe_macros/gameframe_macros.yy",},}, {"id":{"name":"gameframe_macros","path":"scripts/gameframe_macros/gameframe_macros.yy",},},
{"id":{"name":"s_node_trigger_bool","path":"sprites/s_node_trigger_bool/s_node_trigger_bool.yy",},}, {"id":{"name":"s_node_trigger_bool","path":"sprites/s_node_trigger_bool/s_node_trigger_bool.yy",},},
{"id":{"name":"panel_color","path":"scripts/panel_color/panel_color.yy",},}, {"id":{"name":"panel_color","path":"scripts/panel_color/panel_color.yy",},},
{"id":{"name":"s_copy","path":"sprites/s_copy/s_copy.yy",},},
{"id":{"name":"s_node_line","path":"sprites/s_node_line/s_node_line.yy",},}, {"id":{"name":"s_node_line","path":"sprites/s_node_line/s_node_line.yy",},},
{"id":{"name":"fd_rectangle_get_material_dissipation_value","path":"scripts/fd_rectangle_get_material_dissipation_value/fd_rectangle_get_material_dissipation_value.yy",},}, {"id":{"name":"fd_rectangle_get_material_dissipation_value","path":"scripts/fd_rectangle_get_material_dissipation_value/fd_rectangle_get_material_dissipation_value.yy",},},
{"id":{"name":"panel_graph","path":"scripts/panel_graph/panel_graph.yy",},}, {"id":{"name":"panel_graph","path":"scripts/panel_graph/panel_graph.yy",},},
@ -1644,6 +1662,7 @@
{"id":{"name":"node_print","path":"scripts/node_print/node_print.yy",},}, {"id":{"name":"node_print","path":"scripts/node_print/node_print.yy",},},
{"id":{"name":"s_node_strandSim_force","path":"sprites/s_node_strandSim_force/s_node_strandSim_force.yy",},}, {"id":{"name":"s_node_strandSim_force","path":"sprites/s_node_strandSim_force/s_node_strandSim_force.yy",},},
{"id":{"name":"s_node_array_reverse","path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",},}, {"id":{"name":"s_node_array_reverse","path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",},},
{"id":{"name":"o_process_handler","path":"objects/o_process_handler/o_process_handler.yy",},},
{"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},}, {"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},},
{"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},}, {"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},},
{"id":{"name":"s_contest_banner","path":"sprites/s_contest_banner/s_contest_banner.yy",},}, {"id":{"name":"s_contest_banner","path":"sprites/s_contest_banner/s_contest_banner.yy",},},
@ -1680,6 +1699,7 @@
{"id":{"name":"s_node_strandSim_update","path":"sprites/s_node_strandSim_update/s_node_strandSim_update.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",},}, {"id":{"name":"async_functions","path":"scripts/async_functions/async_functions.yy",},},
{"id":{"name":"s_node_RGB_combine","path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",},}, {"id":{"name":"s_node_RGB_combine","path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",},},
{"id":{"name":"draw_circle_prec","path":"scripts/draw_circle_prec/draw_circle_prec.yy",},},
{"id":{"name":"s_node_shadow_cast","path":"sprites/s_node_shadow_cast/s_node_shadow_cast.yy",},}, {"id":{"name":"s_node_shadow_cast","path":"sprites/s_node_shadow_cast/s_node_shadow_cast.yy",},},
{"id":{"name":"fft_functions","path":"scripts/fft_functions/fft_functions.yy",},}, {"id":{"name":"fft_functions","path":"scripts/fft_functions/fft_functions.yy",},},
{"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},}, {"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},},
@ -1754,6 +1774,7 @@
{"id":{"name":"node_tunnel_out","path":"scripts/node_tunnel_out/node_tunnel_out.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":"s_node_array_shuffle","path":"sprites/s_node_array_shuffle/s_node_array_shuffle.yy",},},
{"id":{"name":"node_level","path":"scripts/node_level/node_level.yy",},}, {"id":{"name":"node_level","path":"scripts/node_level/node_level.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":"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",},}, {"id":{"name":"s_node_group_output","path":"sprites/s_node_group_output/s_node_group_output.yy",},},
{"id":{"name":"node_path_l_system","path":"scripts/node_path_l_system/node_path_l_system.yy",},}, {"id":{"name":"node_path_l_system","path":"scripts/node_path_l_system/node_path_l_system.yy",},},
@ -1821,6 +1842,7 @@
{"id":{"name":"s_node_color_replace","path":"sprites/s_node_color_replace/s_node_color_replace.yy",},}, {"id":{"name":"s_node_color_replace","path":"sprites/s_node_color_replace/s_node_color_replace.yy",},},
{"id":{"name":"draw_surface_functions","path":"scripts/draw_surface_functions/draw_surface_functions.yy",},}, {"id":{"name":"draw_surface_functions","path":"scripts/draw_surface_functions/draw_surface_functions.yy",},},
{"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},}, {"id":{"name":"sh_mask","path":"shaders/sh_mask/sh_mask.yy",},},
{"id":{"name":"s_noti_icon_error","path":"sprites/s_noti_icon_error/s_noti_icon_error.yy",},},
{"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},}, {"id":{"name":"node_rigid_variable","path":"scripts/node_rigid_variable/node_rigid_variable.yy",},},
{"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},}, {"id":{"name":"s_node_zoom","path":"sprites/s_node_zoom/s_node_zoom.yy",},},
{"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},}, {"id":{"name":"migration_function","path":"scripts/migration_function/migration_function.yy",},},
@ -1870,6 +1892,7 @@
{"id":{"name":"steam_ugc_functions","path":"scripts/steam_ugc_functions/steam_ugc_functions.yy",},}, {"id":{"name":"steam_ugc_functions","path":"scripts/steam_ugc_functions/steam_ugc_functions.yy",},},
{"id":{"name":"s_node_gradient_palette","path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",},}, {"id":{"name":"s_node_gradient_palette","path":"sprites/s_node_gradient_palette/s_node_gradient_palette.yy",},},
{"id":{"name":"node_array_shuffle","path":"scripts/node_array_shuffle/node_array_shuffle.yy",},}, {"id":{"name":"node_array_shuffle","path":"scripts/node_array_shuffle/node_array_shuffle.yy",},},
{"id":{"name":"panel_node_data_gen","path":"scripts/panel_node_data_gen/panel_node_data_gen.yy",},},
{"id":{"name":"fd_rectangle_update_material","path":"scripts/fd_rectangle_update_material/fd_rectangle_update_material.yy",},}, {"id":{"name":"fd_rectangle_update_material","path":"scripts/fd_rectangle_update_material/fd_rectangle_update_material.yy",},},
{"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},}, {"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},},
{"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},}, {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},},

Binary file not shown.

View file

@ -109,7 +109,7 @@
"pref_expand_hovering_panel": "Expand hovering panel", "pref_expand_hovering_panel": "Expand hovering panel",
"pref_graph_zoom_smoothing": "Graph zoom smoothing", "pref_graph_zoom_smoothing": "Graph zoom smoothing",
"pref_warning_notification_time": "Warning notification time", "pref_warning_notification_time": "Warning notification time",
"pref_enable_test_mode": "Enable test mode (require restart)", "pref_enable_test_mode": "Enable dev mode (require restart)",
"pref_directory": "Directory path (restart required)", "pref_directory": "Directory path (restart required)",
"pref_auto_save_time": "Autosave delay (-1 to disable)", "pref_auto_save_time": "Autosave delay (-1 to disable)",
"pref_mouse_wheel_speed": "Scroll speed", "pref_mouse_wheel_speed": "Scroll speed",

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,7 @@
/// @description
#region deserialize
if(!struct_has(LOAD_ADDON, name)) exit;
var _mp = json_parse(LOAD_ADDON[$ name]);
lua_call(thread, "deserialize", _mp);
#endregion

View file

@ -2,6 +2,8 @@
event_inherited(); event_inherited();
#region init #region init
alarm[0] = 1;
function init(directory, _openDialog = true) { function init(directory, _openDialog = true) {
ID = UUID_generate(); ID = UUID_generate();
global.ADDON_ID[? ID] = self; global.ADDON_ID[? ID] = self;

View file

@ -7,6 +7,7 @@
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":1,"eventType":3,"isDnD":false,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":1,"eventType":3,"isDnD":false,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":1,"isDnD":false,}, {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":1,"isDnD":false,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":2,"isDnD":false,},
], ],
"managed": true, "managed": true,
"overriddenProperties": [], "overriddenProperties": [],

View file

@ -1,3 +1,5 @@
/// @description /// @description
name = ""; #region load
menu = []; name = "";
menu = [];
#endregion

View file

@ -0,0 +1,55 @@
/// @description
gameframe_init();
gameframe_button_array = [];
#region setup
window_set_size(640, 480);
display_set_gui_size(640, 480);
window_set_caption("Pixel Composer crashed")
window_set_position(
(display_get_width() - 640) / 2,
(display_get_height() - 320) / 2); // center window
#endregion
#region directory
globalvar DIRECTORY, APP_DIRECTORY;
DIRECTORY = "";
if(OS == os_windows) {
APP_DIRECTORY = environment_get_variable("userprofile") + "\\AppData\\Local\\PixelComposer\\";
} else if(OS == os_macosx) {
var home_dir = environment_get_variable("HOME");
if(string(home_dir) == "0")
log_message("DIRECTORY", "Directory not found.");
else
APP_DIRECTORY = string(home_dir) + "/PixelComposer/";
}
var perstPath = APP_DIRECTORY + "persistPreference.json";
if(file_exists(perstPath)) {
PRESIST_PREF = json_load_struct(perstPath);
DIRECTORY = struct_has(PRESIST_PREF, "path")? PRESIST_PREF.path : "";
}
var dir_valid = DIRECTORY != "" && directory_exists(DIRECTORY);
if(!dir_valid) DIRECTORY = APP_DIRECTORY;
#endregion
#region log
path = DIRECTORY + "log/crash_log.txt";
if(!file_exists(path)) game_end(1);
crash_content = file_text_read_all(path);
log_surface = surface_create(1, 1);
log_y = 0;
log_y_to = 0;
LOCALE = {
config: {
per_character_line_break: true
}
}
win_w = 640;
win_h = 320;
#endregion

View file

@ -0,0 +1,163 @@
/// @description
gameframe_update();
draw_clear(#1c1c23);
var w = window_get_width();
var h = window_get_height();
if(win_w != w || win_h != h) {
display_set_gui_size(w, h);
win_w = w;
win_h = h;
}
draw_set_text(_f_p1, fa_left, fa_center, c_white);
draw_text(34, 18, "Pixel Composer crashed");
draw_sprite_ext(s_noti_icon_error, 0, 18, 18, 0.5, 0.5, 0, c_white, 1);
#region display
var bx0 = w - 32;
var by0 = 0;
var bx1 = w;
var by1 = 32;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx1, by1)) {
draw_sprite_ext(s_window_exit, 0, bx0 + 16, by0 + 16, 0.5, 0.5, 0, #eb004b, 1);
if(mouse_check_button(mb_left))
game_end();
} else
draw_sprite_ext(s_window_exit, 0, bx0 + 16, by0 + 16, 0.5, 0.5, 0, c_white, 1);
var x0 = 8;
var y0 = 32;
var x1 = w - 8;
var y1 = h - 8 - 32 - 8;
var tw = x1 - x0;
var th = y1 - y0;
draw_sprite_stretched(s_textbox, 3, x0, y0, tw, th);
draw_sprite_stretched(s_textbox, 0, x0, y0, tw, th);
log_surface = surface_verify(log_surface, tw - 16, th - 16);
log_y = lerp_float(log_y, log_y_to, 5);
var log_y_max = 0;
surface_set_target(log_surface);
draw_clear_alpha(0, 0);
BLEND_ALPHA_MULP
draw_set_text(_f_p1, fa_left, fa_top, c_white);
log_y_max = draw_text_ext_add(0, log_y, crash_content, -1, tw - 16);
BLEND_NORMAL
surface_reset_target();
log_y_max = max(0, log_y_max - th + 64);
if(mouse_wheel_down()) log_y_to = clamp(log_y_to - 64, -log_y_max, 0);
if(mouse_wheel_up()) log_y_to = clamp(log_y_to + 64, -log_y_max, 0);
BLEND_ADD
draw_surface(log_surface, x0 + 8, y0 + 8);
BLEND_NORMAL
#endregion
#region copy
draw_set_text(_f_p2, fa_left, fa_center, #8fde5d);
var bx1 = x1 - 8;
var bx0 = bx1 - 32 - string_width("Copy ");
var by0 = y0 + 8;
var by1 = by0 + 32;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx1, by1)) {
if(mouse_check_button(mb_left)) {
draw_sprite_stretched_ext(s_button_hide_fill, 2, bx0, by0, bx1 - bx0, 32, #6d6d81, 1);
clipboard_set_text(crash_content);
}
draw_sprite_stretched(s_button_hide_fill, 1, bx0, by0, bx1 - bx0, 32);
}
draw_sprite_ext(s_copy, 0, bx0 + 16, by0 + 16, 0.5, 0.5, 0, #8fde5d, 1);
draw_text(bx0 + 32, by0 + 16, "Copy ");
#endregion
#region close
draw_set_text(_f_p2, fa_center, fa_center, c_white);
var bw = 160;
var bh = 32;
var bx0 = w / 2 - bw / 2 - 8 - bw;
var by0 = h - 8 - bh;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx0 + bw, by0 + bh)) {
if(mouse_check_button_pressed(mb_left))
game_end();
if(mouse_check_button(mb_left))
draw_sprite_stretched(s_button, 2, bx0, by0, bw, bh);
else
draw_sprite_stretched(s_button, 1, bx0, by0, bw, bh);
} else
draw_sprite_stretched(s_button, 0, bx0, by0, bw, bh);
draw_text(bx0 + bw / 2, by0 + bh / 2, "Close");
#endregion
#region open log
draw_set_text(_f_p2, fa_center, fa_center, c_white);
var bw = 160;
var bh = 32;
var bx0 = w / 2 - bw / 2;
var by0 = h - 8 - bh;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx0 + bw, by0 + bh)) {
if(mouse_check_button_pressed(mb_left))
shellOpenExplorer(DIRECTORY + "log");
if(mouse_check_button(mb_left))
draw_sprite_stretched(s_button, 2, bx0, by0, bw, bh);
else
draw_sprite_stretched(s_button, 1, bx0, by0, bw, bh);
} else
draw_sprite_stretched(s_button, 0, bx0, by0, bw, bh);
draw_text(bx0 + bw / 2, by0 + bh / 2, "Open log folder");
#endregion
#region restart
draw_set_text(_f_p2, fa_center, fa_center, c_white);
var bw = 160;
var bh = 32;
var bx0 = w / 2 + bw / 2 + 8;
var by0 = h - 8 - bh;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx0 + bw, by0 + bh)) {
if(mouse_check_button_pressed(mb_left)) {
var path = executable_get_pathname();
execute_shell(path, "--crashed");
}
if(mouse_check_button(mb_left))
draw_sprite_stretched(s_button, 2, bx0, by0, bw, bh);
else
draw_sprite_stretched(s_button, 1, bx0, by0, bw, bh);
} else
draw_sprite_stretched(s_button, 0, bx0, by0, bw, bh);
draw_text(bx0 + bw / 2, by0 + bh / 2, "Restart application");
#endregion
#region discord
draw_set_text(_f_p2, fa_center, fa_center, c_white);
var bw = 32;
var bh = 32;
var bx0 = w - 8 - bw;
var by0 = h - 8 - bh;
if(point_in_rectangle(mouse_mx, mouse_my, bx0, by0, bx0 + bw, by0 + bh)) {
if(mouse_check_button_pressed(mb_left))
url_open($"https://discord.com/channels/953634069646835773/1069552823047553076");
if(mouse_check_button(mb_left))
draw_sprite_stretched(s_button_hide_fill, 2, bx0, by0, bw, bh);
else
draw_sprite_stretched(s_button_hide_fill, 1, bx0, by0, bw, bh);
}
draw_sprite_ext(s_discord, 0, bx0 + 16, by0 + 16, 0.5, 0.5, 0, c_white, 0.5);
#endregion
draw_sprite_stretched_ext(s_window_frame, 0, 0, 0, w, h, #eb004b, 1);

View file

@ -0,0 +1,34 @@
{
"resourceType": "GMObject",
"resourceVersion": "1.0",
"name": "o_crash_handler",
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,},
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,},
],
"managed": true,
"overriddenProperties": [],
"parent": {
"name": "_crash_handler",
"path": "folders/_crash_handler.yy",
},
"parentObjectId": null,
"persistent": false,
"physicsAngularDamping": 0.1,
"physicsDensity": 0.5,
"physicsFriction": 0.2,
"physicsGroup": 1,
"physicsKinematic": false,
"physicsLinearDamping": 0.1,
"physicsObject": false,
"physicsRestitution": 0.1,
"physicsSensor": false,
"physicsShape": 1,
"physicsShapePoints": [],
"physicsStartAwake": true,
"properties": [],
"solid": false,
"spriteId": null,
"spriteMaskId": null,
"visible": true,
}

View file

@ -323,7 +323,8 @@ event_inherited();
// draw_set_text(f_p0, fa_center, fa_top, COLORS._main_text_sub); // draw_set_text(f_p0, fa_center, fa_top, COLORS._main_text_sub);
// draw_text(content_pane.w / 2, content_pane.h / 2 - ui(4), "Right click on a node and select 'Add to favorite'\nto add node to favorite panel."); // draw_text(content_pane.w / 2, content_pane.h / 2 - ui(4), "Right click on a node and select 'Add to favorite'\nto add node to favorite panel.");
//} //}
var group_labels = [];
if(PREF_MAP[? "dialog_add_node_view"] == 0) { //grid if(PREF_MAP[? "dialog_add_node_view"] == 0) { //grid
var grid_size = ui(64); var grid_size = ui(64);
var grid_width = ui(80); var grid_width = ui(80);
@ -335,7 +336,7 @@ event_inherited();
var cProg = 0; var cProg = 0;
hh += grid_space; hh += grid_space;
grid_width = round(content_pane.surface_w - grid_space) / col - grid_space; grid_width = round(content_pane.surface_w - grid_space) / col - grid_space;
for(var index = 0; index < node_count; index++) { for(var index = 0; index < node_count; index++) {
var _node = _list[| index]; var _node = _list[| index];
@ -348,12 +349,10 @@ event_inherited();
cProg = 0; cProg = 0;
curr_height = 0; curr_height = 0;
BLEND_OVERRIDE; array_push(group_labels, {
draw_sprite_stretched(THEME.group_label, 0, ui(16), yy, content_pane.surface_w - ui(32), ui(24)); y: yy,
BLEND_NORMAL; text: __txt(_node)
});
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(16 + 16), yy + ui(12), __txt(_node));
hh += ui(24 + 12); hh += ui(24 + 12);
yy += ui(24 + 12); yy += ui(24 + 12);
@ -417,6 +416,19 @@ event_inherited();
} }
} }
var len = array_length(group_labels);
for( var i = 0; i < len; i++ ) {
var lb = group_labels[i];
var _yy = max(lb.y, i == len - 1? ui(8) : min(ui(8), group_labels[i + 1].y - ui(32)));
BLEND_OVERRIDE;
draw_sprite_stretched(THEME.group_label, 0, ui(16), _yy, content_pane.surface_w - ui(32), ui(24));
BLEND_NORMAL;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(16 + 16), _yy + ui(12), lb.text);
}
hh += curr_height; hh += curr_height;
yy += curr_height; yy += curr_height;
} else if(PREF_MAP[? "dialog_add_node_view"] == 1) { //list } else if(PREF_MAP[? "dialog_add_node_view"] == 1) { //list
@ -436,12 +448,10 @@ event_inherited();
hh += ui(8); hh += ui(8);
yy += ui(8); yy += ui(8);
BLEND_OVERRIDE; array_push(group_labels, {
draw_sprite_stretched(THEME.group_label, 0, ui(8), yy, content_pane.surface_w - ui(24), ui(24)); y: yy,
BLEND_NORMAL; text: __txt(_node)
});
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(24), yy + ui(12), __txt(_node));
hh += ui(32); hh += ui(32);
yy += ui(32); yy += ui(32);
@ -496,6 +506,19 @@ event_inherited();
yy += list_height; yy += list_height;
hh += list_height; hh += list_height;
} }
var len = array_length(group_labels);
for( var i = 0; i < len; i++ ) {
var lb = group_labels[i];
var _yy = max(lb.y, i == len - 1? ui(8) : min(ui(8), group_labels[i + 1].y - ui(32)));
BLEND_OVERRIDE;
draw_sprite_stretched(THEME.group_label, 0, ui(16), _yy, content_pane.surface_w - ui(32), ui(24));
BLEND_NORMAL;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(16 + 16), _yy + ui(12), lb.text);
}
} }
if(ADD_NODE_PAGE == -1) if(ADD_NODE_PAGE == -1)

View file

@ -30,7 +30,7 @@ event_inherited();
}), }),
-1, -1,
menuItem(__txtx("noti_open_log", "Open log file"), function() { menuItem(__txtx("noti_open_log", "Open log file"), function() {
shellOpenExplorer(DIRECTORY + "log.txt"); shellOpenExplorer(DIRECTORY + "log/log.txt");
}), }),
]; ];

View file

@ -282,8 +282,12 @@
} }
#endregion #endregion
#region tween #region physics
tweenInit();
physics_world_update_iterations(100); physics_world_update_iterations(100);
#endregion #endregion
#region dropper
globalvar NODE_DROPPER_TARGET, NODE_DROPPER_TARGET_CAN;
NODE_DROPPER_TARGET = noone;
NODE_DROPPER_TARGET_CAN = false;
#endregion

View file

@ -137,6 +137,14 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
#region draw gui top #region draw gui top
PANEL_MAIN.drawGUI(); PANEL_MAIN.drawGUI();
if(NODE_DROPPER_TARGET != noone) {
draw_sprite_ui(THEME.node_dropper, 0, mouse_x + ui(20), mouse_y + ui(20));
if(mouse_press(mb_left, NODE_DROPPER_TARGET_CAN))
NODE_DROPPER_TARGET = noone;
NODE_DROPPER_TARGET_CAN = true;
} else
NODE_DROPPER_TARGET_CAN = false;
#endregion #endregion
#region debug #region debug

View file

@ -54,6 +54,10 @@
var t = current_time; var t = current_time;
PREF_LOAD(); PREF_LOAD();
var dir = string(DIRECTORY) + "log";
if(!directory_exists(dir))
directory_create(dir);
log_clear(); log_clear();
log_newline(); log_newline();
log_message("SESSION", "Begin"); log_message("SESSION", "Begin");

View file

@ -152,9 +152,6 @@ if(OS == os_windows && gameframe_is_minimized()) exit;
} }
#endregion #endregion
#region tween
//tweenStep();
#endregion
//print("===== Step end ====="); //print("===== Step end =====");
//if(keyboard_check_pressed(ord("Q"))) { //if(keyboard_check_pressed(ord("Q"))) {

View file

@ -0,0 +1,10 @@
/// @description
#region process management
global.PROC_ID = bool(EnvironmentGetVariableExists("process_id"))? int64(EnvironmentGetVariable("process_id")) : 0;
EnvironmentSetVariable("process_id", string(global.PROC_ID + 1));
if (global.PROC_ID == 1) { // if spawn after the main windows
instance_destroy(o_main, false);
instance_create(0, 0, o_crash_handler);
}
#endregion

View file

@ -0,0 +1,33 @@
{
"resourceType": "GMObject",
"resourceVersion": "1.0",
"name": "o_process_handler",
"eventList": [
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,},
],
"managed": true,
"overriddenProperties": [],
"parent": {
"name": "main",
"path": "folders/main.yy",
},
"parentObjectId": null,
"persistent": false,
"physicsAngularDamping": 0.1,
"physicsDensity": 0.5,
"physicsFriction": 0.2,
"physicsGroup": 1,
"physicsKinematic": false,
"physicsLinearDamping": 0.1,
"physicsObject": false,
"physicsRestitution": 0.1,
"physicsSensor": false,
"physicsShape": 1,
"physicsShapePoints": [],
"physicsStartAwake": true,
"properties": [],
"solid": false,
"spriteId": null,
"spriteMaskId": null,
"visible": true,
}

View file

@ -7,12 +7,14 @@
"inheritCreationOrder": false, "inheritCreationOrder": false,
"inheritLayers": false, "inheritLayers": false,
"instanceCreationOrder": [ "instanceCreationOrder": [
{"name":"inst_5CA22FC1","path":"rooms/rm_main/rm_main.yy",},
{"name":"inst_78CD7A2C","path":"rooms/rm_main/rm_main.yy",}, {"name":"inst_78CD7A2C","path":"rooms/rm_main/rm_main.yy",},
], ],
"isDnd": false, "isDnd": false,
"layers": [ "layers": [
{"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","depth":0,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[ {"resourceType":"GMRInstanceLayer","resourceVersion":"1.0","name":"Instances","depth":0,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_78CD7A2C","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"o_main","path":"objects/o_main/o_main.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":160.0,"y":160.0,}, {"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_78CD7A2C","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"o_main","path":"objects/o_main/o_main.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":160.0,"y":160.0,},
{"resourceType":"GMRInstance","resourceVersion":"1.0","name":"inst_5CA22FC1","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"objectId":{"name":"o_process_handler","path":"objects/o_process_handler/o_process_handler.yy",},"properties":[],"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":160.0,"y":96.0,},
],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,}, ],"layers":[],"properties":[],"userdefinedDepth":false,"visible":true,},
{"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Background","animationFPS":15.0,"animationSpeedType":0,"colour":4280491036,"depth":100,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"hspeed":0.0,"htiled":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"spriteId":null,"stretch":false,"userdefinedAnimFPS":false,"userdefinedDepth":false,"visible":true,"vspeed":0.0,"vtiled":false,"x":0,"y":0,}, {"resourceType":"GMRBackgroundLayer","resourceVersion":"1.0","name":"Background","animationFPS":15.0,"animationSpeedType":0,"colour":4280491036,"depth":100,"effectEnabled":true,"effectType":null,"gridX":16,"gridY":16,"hierarchyFrozen":false,"hspeed":0.0,"htiled":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"properties":[],"spriteId":null,"stretch":false,"userdefinedAnimFPS":false,"userdefinedDepth":false,"visible":true,"vspeed":0.0,"vtiled":false,"x":0,"y":0,},
], ],

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -52,14 +52,4 @@ function Tween(value, valType = TWEEN_VALUE.number, twType = TWEEN_TYPE.log, twS
} }
static destroy = function() { array_remove(TWEEN_VALUES, self); } static destroy = function() { array_remove(TWEEN_VALUES, self); }
}
function tweenInit() {
globalvar TWEEN_VALUES;
TWEEN_VALUES = [];
}
function tweenStep() {
for( var i = 0; i < array_length(TWEEN_VALUES); i++ )
TWEEN_VALUES[i].step();
} }

81
scripts/__bone/__bone.gml Normal file
View file

@ -0,0 +1,81 @@
function __Bone(parent = noone, distance = 0, direction = 0, angle = 0, length = 0) constructor {
self.distance = distance;
self.direction = direction;
self.angle = angle;
self.length = length;
self.is_main = false;
self.parent_anchor = true;
self.childs = [];
self.parent = parent;
if(parent != noone) {
distance = parent.length;
direction = parent.angle;
}
static addChild = function(bone) {
array_push(childs, bone);
return self;
}
static getPoint = function(distance, direction) {
if(parent == noone)
return new Point(lengthdir_x(self.distance, self.direction), lengthdir_y(self.distance, self.direction))
.add(lengthdir_x( distance, direction), lengthdir_y( distance, direction));
if(parent_anchor) {
var p = parent.getPoint(parent.length, parent.angle);
return p.add(lengthdir_x(distance, direction), lengthdir_y(distance, direction));
}
var p = parent.getPoint(self.distance, self.direction);
return p.add(lengthdir_x(distance, direction), lengthdir_y(distance, direction));
}
static draw = function(edit = false, _x = 0, _y = 0, _s = 1, _mx = 0, _my = 0, child = true, hovering = noone) {
var hover = noone;
var p0 = getPoint(0, 0);
var p1 = getPoint(length, angle);
p0.x = _x + p0.x * _s;
p0.y = _y + p0.y * _s;
p1.x = _x + p1.x * _s;
p1.y = _y + p1.y * _s;
if(parent != noone) {
var aa = (hovering != noone && hovering[0] == self && hovering[1] == 2)? 1 : 0.75;
draw_set_color(COLORS._main_accent);
draw_set_alpha(aa);
draw_line_width2(p0.x, p0.y, p1.x, p1.y, 6, 2);
draw_set_alpha(1.00);
if(edit && distance_to_line(_mx, _my, p0.x, p0.y, p1.x, p1.y) <= 6)
hover = [ self, 2 ];
if(!parent_anchor) {
if(edit && point_in_circle(_mx, _my, p0.x, p0.y, ui(12))) {
draw_sprite_colored(THEME.anchor_selector, 0, p0.x, p0.y);
hover = [ self, 0 ];
} else
draw_sprite_colored(THEME.anchor_selector, 2, p0.x, p0.y);
}
if(edit && point_in_circle(_mx, _my, p1.x, p1.y, ui(12))) {
draw_sprite_colored(THEME.anchor_selector, 0, p1.x, p1.y);
hover = [ self, 1 ];
} else
draw_sprite_colored(THEME.anchor_selector, 2, p1.x, p1.y);
}
if(child)
for( var i = 0; i < array_length(childs); i++ ) {
var h = childs[i].draw(edit, _x, _y, _s, _mx, _my, true, hovering)
if(hover == noone && h != noone)
hover = h;
}
return hover;
}
}

11
scripts/__bone/__bone.yy Normal file
View file

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

View file

@ -12,6 +12,10 @@ function Point(x = 0, y = 0) constructor {
static add = function(x, y) { self.x += x; self.y += y; return self; } static add = function(x, y) { self.x += x; self.y += y; return self; }
static addPoint = function(p) { self.x += p.x; self.y += p.y; return self; } static addPoint = function(p) { self.x += p.x; self.y += p.y; return self; }
static _add = function(x, y) { return new Point(self.x + x, self.y + y); }
static _addPoint = function(p) { return new Point(self.x + p.x, self.y + p.y); }
static lerpTo = function(p, rat) { return new Point( lerp(x, p.x, rat), lerp(y, p.y, rat) ); } static lerpTo = function(p, rat) { return new Point( lerp(x, p.x, rat), lerp(y, p.y, rat) ); }
static directionTo = function(p) { return point_direction(x, y, p.x, p.y); } static directionTo = function(p) { return point_direction(x, y, p.x, p.y); }
static distanceTo = function(p) { return point_distance(x, y, p.x, p.y); } static distanceTo = function(p) { return point_distance(x, y, p.x, p.y); }

View file

@ -268,7 +268,7 @@ function Strand(sx = 0, sy = 0, amount = 5, length = 8, direct = 0, curlFreq = 4
nx = _x + nx * _s; nx = _x + nx * _s;
ny = _y + ny * _s; ny = _y + ny * _s;
draw_circle(nx, ny, 3, false); draw_circle_prec(nx, ny, 3, false);
} }
} }

View file

@ -81,7 +81,7 @@ function _Node_Strand_Affector(_x, _y, _group = noone) : Node(_x, _y, _group) co
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
if(_typ == 0) { if(_typ == 0) {
draw_circle(px, py, _ran, true); draw_circle_prec(px, py, _ran, true);
var x0 = px - (_ran + fal); var x0 = px - (_ran + fal);
var y0 = py - (_ran + fal); var y0 = py - (_ran + fal);

View file

@ -57,24 +57,31 @@ function addonContextSubMenu(_name, _content) constructor {
} }
function addonTrigger(_addon, _openDialog = true) { function addonTrigger(_addon, _openDialog = true) {
var _name = filename_name_only(_addon); if(addonActivated(_addon)) addonUnload(_addon);
with(_addon_custom) { else addonLoad(_addon, _openDialog);
if(name != _name)
continue;
instance_destroy();
return;
}
var addonPath = DIRECTORY + "Addons\\" + _name;
if(!directory_exists(addonPath)) return;
with(instance_create(0, 0, _addon_custom))
init(addonPath, _openDialog);
} }
function addonActivated(_addon) { function addonActivated(_addon) {
var _name = filename_name_only(_addon); var _name = filename_name_only(_addon);
with(_addon_custom) if(name == _name) return true; with(_addon_custom) if(name == _name) return true;
return false; return false;
}
function addonLoad(_addon, _openDialog = true) {
var _name = filename_name_only(_addon);
var addonPath = DIRECTORY + "Addons\\" + _name;
if(!directory_exists(addonPath)) return;
with(_addon_custom) if(name == _name) return;
with(instance_create(0, 0, _addon_custom))
init(addonPath, _openDialog);
}
function addonUnload(_addon) {
var _name = filename_name_only(_addon);
var addonPath = DIRECTORY + "Addons\\" + _name;
if(!directory_exists(addonPath)) return;
with(_addon_custom) if(name == _name) instance_destroy();
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Math", "name": "Math",
"path": "folders/_Extensions/BBMOD/Math.yy", "path": "folders/_extensions/BBMOD/Math.yy",
}, },
} }

View file

@ -132,9 +132,9 @@ function curveBox(_onModify) : widget() constructor {
if(i > 0) { //draw pre line if(i > 0) { //draw pre line
draw_line(bx0, by0, _x0, _y0); draw_line(bx0, by0, _x0, _y0);
draw_circle(bx0, by0, 3, false); draw_circle_prec(bx0, by0, 3, false);
if(hover && point_in_circle(msx, msy, bx0, by0, 10)) { if(hover && point_in_circle(msx, msy, bx0, by0, 10)) {
draw_circle(bx0, by0, 5, false); draw_circle_prec(bx0, by0, 5, false);
node_hovering = ind + 2; node_hovering = ind + 2;
node_hover_typ = -1; node_hover_typ = -1;
} }
@ -143,18 +143,18 @@ function curveBox(_onModify) : widget() constructor {
if(i < points - 1) { //draw post line if(i < points - 1) { //draw post line
draw_line(ax0, ay0, _x0, _y0); draw_line(ax0, ay0, _x0, _y0);
draw_circle(ax0, ay0, 3, false); draw_circle_prec(ax0, ay0, 3, false);
if(hover && point_in_circle(msx, msy, ax0, ay0, 10)) { if(hover && point_in_circle(msx, msy, ax0, ay0, 10)) {
draw_circle(ax0, ay0, 5, false); draw_circle_prec(ax0, ay0, 5, false);
node_hovering = ind + 2; node_hovering = ind + 2;
node_hover_typ = 1; node_hover_typ = 1;
} }
} }
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_x0, _y0, 3, false); draw_circle_prec(_x0, _y0, 3, false);
if(hover && point_in_circle(msx, msy, _x0, _y0, 10)) { if(hover && point_in_circle(msx, msy, _x0, _y0, 10)) {
draw_circle(_x0, _y0, 5, false); draw_circle_prec(_x0, _y0, 5, false);
node_hovering = ind + 2; node_hovering = ind + 2;
node_hover_typ = 0; node_hover_typ = 0;
} }

View file

@ -15,7 +15,7 @@ function _log_template() {
return $"{string(current_year)}/{string(current_month)}/{string(current_day)} {string_lead_zero(current_hour, 2)}:{string_lead_zero(current_minute, 2)}:{string_lead_zero(current_second, 2)} > "; return $"{string(current_year)}/{string(current_month)}/{string(current_day)} {string_lead_zero(current_hour, 2)}:{string_lead_zero(current_minute, 2)}:{string_lead_zero(current_second, 2)} > ";
} }
function __log(title, str, fname = "log.txt") { function __log(title, str, fname = "log/log.txt") {
var path = DIRECTORY + fname; var path = DIRECTORY + fname;
var f = file_text_open_append(path); var f = file_text_open_append(path);
var t = _log_template(); var t = _log_template();
@ -42,14 +42,14 @@ function log_crash(str) {
} }
function log_newline() { function log_newline() {
var path = DIRECTORY + "log.txt"; var path = DIRECTORY + "log/log.txt";
var f = file_text_open_write(path); var f = file_text_open_write(path);
file_text_writeln(f); file_text_writeln(f);
file_text_close(f); file_text_close(f);
} }
function log_clear() { function log_clear() {
var path = DIRECTORY + "log.txt"; var path = DIRECTORY + "log/log.txt";
if(file_exists(path)) if(file_exists(path))
file_delete(path); file_delete(path);
} }
@ -81,26 +81,14 @@ function setException() {
tt += ex.stacktrace[i] + "\n"; tt += ex.stacktrace[i] + "\n";
} }
tt += "\n---------------------------- :( ----------------------------\n"; tt += "\n---------------------------- :( ----------------------------\n";
var path = string(DIRECTORY) + "crash_log.txt"; var path = DIRECTORY + "log/crash_log.txt";
file_text_write_all(path, tt); file_text_write_all(path, tt);
clipboard_set_text(tt); clipboard_set_text(tt);
show_debug_message(tt); show_debug_message(tt);
var tt = "\n-------------------------- OH NO --------------------------\n\n";
tt += ex.longMessage;
tt += "\n---------------------------- :( ----------------------------\n";
tt += "\n\nCrash log stored in clipboard and saved at " + path; ExecProcessFromArgVAsync(GetArgVFromProcid(ProcIdFromSelf())); //create new dialog
tt += "\n\nRelaunch the program?";
widget_set_caption("Pixel Composer crashed");
widget_set_icon(DIRECTORY + "icon.png");
if(show_question(tt)) {
var path = executable_get_pathname();
execute_shell(path, "--crashed");
}
return 0; return 0;
}); });
} }

View file

@ -0,0 +1,4 @@
function draw_circle_prec(x, y, r, border, precision = 32) {
draw_set_circle_precision(precision);
draw_circle(x, y, r, border);
}

View file

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

View file

@ -1,4 +1,4 @@
function draw_corner(x1, y1, xc, yc, x3, y3, thick = 1, col = c_white) { function draw_corner(x1, y1, xc, yc, x3, y3, thick = 1, col = c_white, sample = 10) {
var dir0 = point_direction(x1, y1, xc, yc); var dir0 = point_direction(x1, y1, xc, yc);
var dir1 = point_direction(x3, y3, xc, yc); var dir1 = point_direction(x3, y3, xc, yc);
@ -10,9 +10,9 @@ function draw_corner(x1, y1, xc, yc, x3, y3, thick = 1, col = c_white) {
var x4 = p4[0]; var x4 = p4[0];
var y4 = p4[1]; var y4 = p4[1];
//draw_circle(x1, y1, 3, false); //draw_circle_prec(x1, y1, 3, false);
//draw_circle(xc, yc, 3, false); //draw_circle_prec(xc, yc, 3, false);
//draw_circle(x3, y3, 3, false); //draw_circle_prec(x3, y3, 3, false);
var ra = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4); var ra = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);
if(ra == 0) return; if(ra == 0) return;
@ -26,7 +26,8 @@ function draw_corner(x1, y1, xc, yc, x3, y3, thick = 1, col = c_white) {
draw_set_color(col); draw_set_color(col);
var ox, oy, nx, ny; var ox, oy, nx, ny;
for( var i = 0; i <= 1; i += 0.1 ) { var st = 1 / round(sample);
for( var i = 0; i <= 1; i += st ) {
var a = d0 + angle_difference(d1, d0) * i; var a = d0 + angle_difference(d1, d0) * i;
nx = px + lengthdir_x(r, a); nx = px + lengthdir_x(r, a);
ny = py + lengthdir_y(r, a); ny = py + lengthdir_y(r, a);

View file

@ -39,8 +39,8 @@ function draw_line_curve_color(x0, y0, x1, y1, xc = noone, yc = noone, _s = 1, t
if(xc == noone) xc = (x0 + x1) / 2; if(xc == noone) xc = (x0 + x1) / 2;
if(yc == noone) yc = (y0 + y1) / 2; if(yc == noone) yc = (y0 + y1) / 2;
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 16 * PREF_MAP[? "connection_line_sample"]); var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREF_MAP[? "connection_line_sample"]);
sample = clamp(sample, 8, 128); sample = clamp(sample, 2, 128);
var x2 = lerp(x0, x1, 0. - sign(x1 - x0) * 0.2) - abs(y1 - y0) * 0.1; var x2 = lerp(x0, x1, 0. - sign(x1 - x0) * 0.2) - abs(y1 - y0) * 0.1;
var x3 = lerp(x0, x1, 1. + sign(x1 - x0) * 0.2) + abs(y1 - y0) * 0.1; var x3 = lerp(x0, x1, 1. + sign(x1 - x0) * 0.2) + abs(y1 - y0) * 0.1;
@ -88,8 +88,8 @@ function draw_line_curve_color(x0, y0, x1, y1, xc = noone, yc = noone, _s = 1, t
} }
function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white) { function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white) {
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 16 * PREF_MAP[? "connection_line_sample"]); var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREF_MAP[? "connection_line_sample"]);
sample = clamp(sample, 8, 128); sample = clamp(sample, 2, 128);
var x2 = lerp(x0, x1, 0.9); var x2 = lerp(x0, x1, 0.9);
var x3 = x1; var x3 = x1;
@ -125,8 +125,8 @@ function draw_line_curve_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_whit
} }
function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) { function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) {
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 16 * PREF_MAP[? "connection_line_sample"]); var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREF_MAP[? "connection_line_sample"]);
sample = clamp(sample, 8, 128); sample = clamp(sample, 2, 128);
var dist = 999999; var dist = 999999;
var ox, oy, nx, ny, t, it; var ox, oy, nx, ny, t, it;
@ -163,8 +163,8 @@ function distance_to_curve(mx, my, x0, y0, x1, y1, xc, yc, _s) {
} }
function distance_to_curve_corner(mx, my, x0, y0, x1, y1, _s) { function distance_to_curve_corner(mx, my, x0, y0, x1, y1, _s) {
var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 16 * PREF_MAP[? "connection_line_sample"]); var sample = ceil((abs(x0 - x1) + abs(y0 - y1)) / 32 * PREF_MAP[? "connection_line_sample"]);
sample = clamp(sample, 8, 128); sample = clamp(sample, 2, 128);
var dist = 999999; var dist = 999999;
var ox, oy, nx, ny, t, it; var ox, oy, nx, ny, t, it;

View file

@ -1,4 +1,7 @@
function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
var sample = corner / 4;
sample = clamp(sample, 1, 8);
if(cx == noone) cx = (x0 + x1) / 2; if(cx == noone) cx = (x0 + x1) / 2;
if(cy == noone) cy = (y0 + y1) / 2; if(cy == noone) cy = (y0 + y1) / 2;
@ -6,13 +9,13 @@ function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, t
var _x1 = max(x0, x1); var _x1 = max(x0, x1);
var _y0 = min(y0, y1); var _y0 = min(y0, y1);
var _y1 = max(y0, y1); var _y1 = max(y0, y1);
var th = thick / 2; var th = thick / 2;
var inv = x1 - 16 * indexOut * _s <= x0 + 16 * indexIn * _s; var inv = x1 - 16 * indexOut * _s <= x0 + 16 * indexIn * _s;
var rat = inv? (_y1 == _y0? 0.5 : (cy - _y0) / (_y1 - _y0)) : var rat = inv? (_y1 == _y0? 0.5 : (cy - _y0) / (_y1 - _y0)) :
(_x1 == _x0? 0.5 : (cx - _x0) / (_x1 - _x0)); (_x1 == _x0? 0.5 : (cx - _x0) / (_x1 - _x0));
var cm = merge_color(col1, col2, clamp(rat, 0, 1)); var cm = merge_color(col1, col2, clamp(rat, 0, 1));
var iy = sign(y1 - y0); var iy = sign(y1 - y0);
var iy0 = sign(cy - y0); var iy0 = sign(cy - y0);
var iy1 = sign(y1 - cy); var iy1 = sign(y1 - cy);
@ -31,13 +34,13 @@ function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, t
draw_line_round_color(xx1, cy + corner * iy1, xx1, y1 - corns * iy1, thick, cm, col2); draw_line_round_color(xx1, cy + corner * iy1, xx1, y1 - corns * iy1, thick, cm, col2);
if(corns) { if(corns) {
draw_corner(xx0 - corns, y0, xx0, y0, xx0, y0 + corns * iy0, thick, col1); draw_corner(xx0 - corns, y0, xx0, y0, xx0, y0 + corns * iy0, thick, col1, sample);
draw_corner(xx1, y1 - corns * iy1, xx1, y1, xx1 + corns, y1, thick, col2); draw_corner(xx1, y1 - corns * iy1, xx1, y1, xx1 + corns, y1, thick, col2, sample);
} }
if(corner) { if(corner) {
draw_corner(xx0, cy - corner * iy0, xx0, cy, xx0 - corner, cy, thick, cm); draw_corner(xx0, cy - corner * iy0, xx0, cy, xx0 - corner, cy, thick, cm, sample);
draw_corner(xx1 + corner, cy, xx1, cy, xx1, cy + corner * iy1, thick, cm); draw_corner(xx1 + corner, cy, xx1, cy, xx1, cy + corner * iy1, thick, cm, sample);
} }
} else { } else {
draw_set_color(col1); draw_line_width(x0, y0, xx0, y0, thick); draw_set_color(col1); draw_line_width(x0, y0, xx0, y0, thick);
@ -56,8 +59,8 @@ function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, t
draw_line_round_color(cx + corner * sign(x1 - cx), y1, x1, y1, thick, cm, col2); draw_line_round_color(cx + corner * sign(x1 - cx), y1, x1, y1, thick, cm, col2);
if(corner) { if(corner) {
draw_corner(cx - corner * sign(cx - x0), y0, cx, y0, cx, y0 + corner * iy, thick, cm); draw_corner(cx - corner * sign(cx - x0), y0, cx, y0, cx, y0 + corner * iy, thick, cm, sample);
draw_corner(cx, y1 - corner * iy, cx, y1, cx + corner * sign(x1 - cx), y1, thick, cm); draw_corner(cx, y1 - corner * iy, cx, y1, cx + corner * sign(x1 - cx), y1, thick, cm, sample);
} }
} else { } else {
draw_line_dashed_color(x0, y0, cx, y0, thick, col1, cm, 12); draw_line_dashed_color(x0, y0, cx, y0, thick, col1, cm, 12);
@ -68,6 +71,9 @@ function draw_line_elbow_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, t
} }
function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
var sample = corner / 4;
sample = clamp(sample, 1, 8);
var rat = abs(x0 - x1) / (abs(x0 - x1) + abs(y0 - y1)); var rat = abs(x0 - x1) / (abs(x0 - x1) + abs(y0 - y1));
var colc = merge_color(col1, col2, rat); var colc = merge_color(col1, col2, rat);
corner = min(corner, abs(x0 - x1), abs(y0 - y1)); corner = min(corner, abs(x0 - x1), abs(y0 - y1));
@ -77,7 +83,7 @@ function draw_line_elbow_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_whit
draw_line_round_color(x0, y0, x1 - corner * sx, y0, thick, col1, colc); draw_line_round_color(x0, y0, x1 - corner * sx, y0, thick, col1, colc);
draw_line_round_color(x1, y0 + corner * sy, x1, y1, thick, colc, col2); draw_line_round_color(x1, y0 + corner * sy, x1, y1, thick, colc, col2);
draw_corner(x1 - corner * sx, y0, x1, y0, x1, y0 + corner * sy, thick, colc); draw_corner(x1 - corner * sx, y0, x1, y0, x1, y0 + corner * sy, thick, colc, sample);
} }
function distance_to_elbow(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) { function distance_to_elbow(mx, my, x0, y0, x1, y1, cx, cy, _s, indexIn = 1, indexOut = 1) {

View file

@ -1,4 +1,7 @@
function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, c1 = c_white, c2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = 1, thick = 1, c1 = c_white, c2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
var sample = corner / 4;
sample = clamp(sample, 1, 8);
if(cx == noone) cx = (x0 + x1) / 2; if(cx == noone) cx = (x0 + x1) / 2;
if(cy == noone) cy = (y0 + y1) / 2; if(cy == noone) cy = (y0 + y1) / 2;
@ -58,9 +61,9 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color(x1s + _xcr, y0 + _xcr * iy, xx1 - _ycr, y1s - _ycr * iy, thick, cm, cm); draw_line_round_color(x1s + _xcr, y0 + _xcr * iy, xx1 - _ycr, y1s - _ycr * iy, thick, cm, cm);
if(cS) draw_corner(xx1, y1 - cS * iy, xx1, y1, xx1 + cS, y1, thick, c2); if(cS) draw_corner(xx1, y1 - cS * iy, xx1, y1, xx1 + cS, y1, thick, c2, sample);
if(xcr) draw_corner(x1s - xcr, y0, x1s, y0, x1s + _xcr, y0 + _xcr * iy, thick, cm); if(xcr) draw_corner(x1s - xcr, y0, x1s, y0, x1s + _xcr, y0 + _xcr * iy, thick, cm, sample);
if(ycr) draw_corner(xx1 - _ycr, y1s - _ycr * iy, xx1, y1s, xx1, y1s + ycr * iy, thick, cm); if(ycr) draw_corner(xx1 - _ycr, y1s - _ycr * iy, xx1, y1s, xx1, y1s + ycr * iy, thick, cm, sample);
} else if(bot) { } else if(bot) {
draw_line_round_color(x0, y0, xx0 - cS, y0, thick, c1, c1); draw_line_round_color(x0, y0, xx0 - cS, y0, thick, c1, c1);
draw_line_round_color(xx1, y1, x1, y1, thick, c2, c2); draw_line_round_color(xx1, y1, x1, y1, thick, c2, c2);
@ -79,9 +82,9 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color(xx0 + _ycr, y1s + _ycr * iy, x1s - _xcr, y1 - _xcr * iy, thick, cm, cm); draw_line_round_color(xx0 + _ycr, y1s + _ycr * iy, x1s - _xcr, y1 - _xcr * iy, thick, cm, cm);
if(cS) draw_corner(xx0 - cS, y0, xx0, y0, xx0, y0 + cS * iy, thick, c1); if(cS) draw_corner(xx0 - cS, y0, xx0, y0, xx0, y0 + cS * iy, thick, c1, sample);
if(xcr) draw_corner(x1s - _xcr, y1 - _xcr * iy, x1s, y1, x1s + xcr, y1, thick, cm); if(xcr) draw_corner(x1s - _xcr, y1 - _xcr * iy, x1s, y1, x1s + xcr, y1, thick, cm, sample);
if(ycr) draw_corner(xx0, y1s - ycr * iy, xx0, y1s, xx0 + _ycr, y1s + _ycr * iy, thick, cm); if(ycr) draw_corner(xx0, y1s - ycr * iy, xx0, y1s, xx0 + _ycr, y1s + _ycr * iy, thick, cm, sample);
} else { } else {
draw_line_round_color(x0, y0, xx0 - cS0, y0, thick, c1, c1); draw_line_round_color(x0, y0, xx0 - cS0, y0, thick, c1, c1);
draw_line_round_color(xx1 + cS1, y1, x1, y1, thick, c2, c2); draw_line_round_color(xx1 + cS1, y1, x1, y1, thick, c2, c2);
@ -101,11 +104,11 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color(xx0 + _corY0, yC0 + _corY0 * iy, xx1 - _corY1, yC1 - _corY1 * iy, thick, cm, cm); draw_line_round_color(xx0 + _corY0, yC0 + _corY0 * iy, xx1 - _corY1, yC1 - _corY1 * iy, thick, cm, cm);
if(cS0) draw_corner(xx0 - cS0, y0, xx0, y0, xx0, y0 + cS0 * iy0, thick, c1); if(cS0) draw_corner(xx0 - cS0, y0, xx0, y0, xx0, y0 + cS0 * iy0, thick, c1, sample);
if(cS1) draw_corner(xx1, y1 - cS1 * iy1, xx1, y1, xx1 + cS1, y1, thick, c2); if(cS1) draw_corner(xx1, y1 - cS1 * iy1, xx1, y1, xx1 + cS1, y1, thick, c2, sample);
if(corY0) draw_corner(xx0, yC0 - corY0 * iy, xx0, yC0, xx0 + _corY0, yC0 + _corY0 * iy, thick, cm); if(corY0) draw_corner(xx0, yC0 - corY0 * iy, xx0, yC0, xx0 + _corY0, yC0 + _corY0 * iy, thick, cm, sample);
if(corY1) draw_corner(xx1, yC1 + corY1 * iy, xx1, yC1, xx1 - _corY1, yC1 - _corY1 * iy, thick, cm); if(corY1) draw_corner(xx1, yC1 + corY1 * iy, xx1, yC1, xx1 - _corY1, yC1 - _corY1 * iy, thick, cm, sample);
} }
} else { } else {
var cR0 = min(cS, abs(y0 - cy) / 2); var cR0 = min(cS, abs(y0 - cy) / 2);
@ -144,8 +147,8 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color( crX0 - _cR, crY0 + _cR * iy0, crX3 + _cR, crY3 - _cR * iy1, thick, cm, cm); draw_line_round_color( crX0 - _cR, crY0 + _cR * iy0, crX3 + _cR, crY3 - _cR * iy1, thick, cm, cm);
if(cR) { if(cR) {
draw_corner( crX0, crY0 - cR * iy0, crX0, crY0, crX0 - _cR, crY0 + _cR * iy0, thick, cm); draw_corner( crX0, crY0 - cR * iy0, crX0, crY0, crX0 - _cR, crY0 + _cR * iy0, thick, cm, sample);
draw_corner(crX3 + _cR, crY3 - _cR * iy1, crX3, crY3, crX3, crY3 + cR * iy1, thick, cm); draw_corner(crX3 + _cR, crY3 - _cR * iy1, crX3, crY3, crX3, crY3 + cR * iy1, thick, cm, sample);
} }
} else { } else {
draw_line_round_color( crX0, y0 + cR0 * iy0, crX0, crY0 - crn0 * iy0, thick, c1, cm); draw_line_round_color( crX0, y0 + cR0 * iy0, crX0, crY0 - crn0 * iy0, thick, c1, cm);
@ -156,13 +159,13 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color(crX2 - _crn1 * ix, crY2 + _crn1 * iy1, crX3 + _crn1 * ix, crY3 - _crn1 * iy1, thick, cm, cm); draw_line_round_color(crX2 - _crn1 * ix, crY2 + _crn1 * iy1, crX3 + _crn1 * ix, crY3 - _crn1 * iy1, thick, cm, cm);
if(crn0) { if(crn0) {
draw_corner( crX0, crY0 - crn0 * iy0, crX0, crY0, crX0 - _crn0 * ix, crY0 + _crn0 * iy0, thick, cm); draw_corner( crX0, crY0 - crn0 * iy0, crX0, crY0, crX0 - _crn0 * ix, crY0 + _crn0 * iy0, thick, cm, sample);
draw_corner(crX1 + _crn0 * ix, crY1 - _crn0 * iy0, crX1, crY1, crX1 - crn0 * ix, crY1, thick, cm); draw_corner(crX1 + _crn0 * ix, crY1 - _crn0 * iy0, crX1, crY1, crX1 - crn0 * ix, crY1, thick, cm, sample);
} }
if(crn1) { if(crn1) {
draw_corner(crX2 + crn1 * ix, crY2, crX2, crY2, crX2 - _crn1 * ix, crY2 + _crn1 * iy1, thick, cm); draw_corner(crX2 + crn1 * ix, crY2, crX2, crY2, crX2 - _crn1 * ix, crY2 + _crn1 * iy1, thick, cm, sample);
draw_corner( crX3, crY3 + crn1 * iy1, crX3, crY3, crX3 + _crn1 * ix, crY3 - _crn1 * iy1, thick, cm); draw_corner( crX3, crY3 + crn1 * iy1, crX3, crY3, crX3 + _crn1 * ix, crY3 - _crn1 * iy1, thick, cm, sample);
} }
} }
} }
@ -187,8 +190,8 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
draw_line_round_color(_xc1 + corn, y1, x1, y1, thick, cm, c2); draw_line_round_color(_xc1 + corn, y1, x1, y1, thick, cm, c2);
if(corn) { if(corn) {
draw_corner(_xc0 - corn, y0, _xc0, y0, _xc0 + cor2, y0 + cor2 * iy, thick, cm); draw_corner(_xc0 - corn, y0, _xc0, y0, _xc0 + cor2, y0 + cor2 * iy, thick, cm, sample);
draw_corner(_xc1 - cor2, y1 - cor2 * iy, _xc1, y1, _xc1 + corn, y1, thick, cm); draw_corner(_xc1 - cor2, y1 - cor2 * iy, _xc1, y1, _xc1 + corn, y1, thick, cm, sample);
} }
} else { } else {
draw_line_dashed_color( x0, y0, _xc0, y0, thick, c1, cm, 12); draw_line_dashed_color( x0, y0, _xc0, y0, thick, c1, cm, 12);
@ -199,6 +202,9 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s =
} }
function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) { function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c_white, col2 = c_white, corner = 0, indexIn = 1, indexOut = 1, type = LINE_STYLE.solid) {
var sample = corner / 4;
sample = clamp(sample, 1, 8);
var rat = abs(x0 - x1) / (abs(x0 - x1) + abs(y0 - y1)); var rat = abs(x0 - x1) / (abs(x0 - x1) + abs(y0 - y1));
var colc = merge_color(col1, col2, rat); var colc = merge_color(col1, col2, rat);
@ -212,8 +218,8 @@ function draw_line_elbow_diag_corner(x0, y0, x1, y1, _s = 1, thick = 1, col1 = c
draw_line_round_color(x1 - (diag - cor2) * sx, y0 + cor2 * sy, x1 - cor2 * sx, y0 + (diag - cor2) * sy, thick, colc, colc); draw_line_round_color(x1 - (diag - cor2) * sx, y0 + cor2 * sy, x1 - cor2 * sx, y0 + (diag - cor2) * sy, thick, colc, colc);
draw_line_round_color( x1, y0 + (diag + corner) * sy, x1, y1, thick, colc, col2); draw_line_round_color( x1, y0 + (diag + corner) * sy, x1, y1, thick, colc, col2);
draw_corner(x1 - (diag + corner) * sx, y0, x1 - diag * sx, y0, x1 - (diag - cor2) * sx, y0 + cor2 * sy, thick, colc); draw_corner(x1 - (diag + corner) * sx, y0, x1 - diag * sx, y0, x1 - (diag - cor2) * sx, y0 + cor2 * sy, thick, colc, sample);
draw_corner(x1 - cor2 * sx, y0 + (diag - cor2) * sy, x1, y0 + diag * sy, x1, y0 + (diag + corner) * sy, thick, colc); draw_corner(x1 - cor2 * sx, y0 + (diag - cor2) * sy, x1, y0 + diag * sy, x1, y0 + (diag + corner) * sy, thick, colc, sample);
//draw_circle(x1 - diag * sx, y0, 4, false); //draw_circle(x1 - diag * sx, y0, 4, false);
//draw_circle(x1, y0 + diag * sy, 4, false); //draw_circle(x1, y0 + diag * sy, 4, false);

View file

@ -1,6 +1,7 @@
function draw_line_round(x1, y1, x2, y2, w) { function draw_line_round(x1, y1, x2, y2, w) {
draw_line_width(x1, y1, x2, y2, w); draw_line_width(x1, y1, x2, y2, w);
draw_set_circle_precision(8);
draw_circle(x1, y1, w/2, false); draw_circle(x1, y1, w/2, false);
draw_circle(x2, y2, w/2, false); draw_circle(x2, y2, w/2, false);
} }
@ -8,6 +9,7 @@ function draw_line_round(x1, y1, x2, y2, w) {
function draw_line_round_color(x1, y1, x2, y2, w, c1, c2) { function draw_line_round_color(x1, y1, x2, y2, w, c1, c2) {
draw_line_width_color(x1, y1, x2, y2, w, c1, c2); draw_line_width_color(x1, y1, x2, y2, w, c1, c2);
draw_set_circle_precision(8);
draw_set_color(c1); draw_set_color(c1);
draw_circle(x1, y1, w/2, false); draw_circle(x1, y1, w/2, false);

View file

@ -10,8 +10,9 @@ function draw_text_add(_x, _y, _text, scale = 1) {
function draw_text_ext_add(_x, _y, _text, _sep, _w, scale = 1) { function draw_text_ext_add(_x, _y, _text, _sep, _w, scale = 1) {
BLEND_ALPHA_MULP; BLEND_ALPHA_MULP;
__draw_text_ext_transformed(_x, _y, _text, _sep, _w, scale, scale, 0); var h = __draw_text_ext_transformed(_x, _y, _text, _sep, _w, scale, scale, 0);
BLEND_NORMAL; BLEND_NORMAL;
return h;
} }
function draw_text_bbox(bbox, text) { function draw_text_bbox(bbox, text) {
@ -28,7 +29,7 @@ function draw_text_cut(x, y, str, w, scale = 1) {
function __draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation) { function __draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation) {
if(!LOCALE.config.per_character_line_break) { if(!LOCALE.config.per_character_line_break) {
draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation); draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation);
return; return string_height_ext(_text, _sep, _w) * sy;
} }
var lines = []; var lines = [];
@ -40,11 +41,16 @@ function __draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation)
var ch = string_char_at(_text, i); var ch = string_char_at(_text, i);
var ww = string_width(ch) * sx; var ww = string_width(ch) * sx;
if(line_w + ww > _w) { if(ch == "\n" || line_w + ww > _w) {
array_push(lines, line); array_push(lines, line);
line = ch; if(ch != "\n") {
line_w = ww; line = ch;
} else { line_w = ww;
} else {
line = "";
line_w = 0;
}
} else if(ch != "\n") {
line += ch; line += ch;
line_w += ww; line_w += ww;
} }
@ -81,6 +87,8 @@ function __draw_text_ext_transformed(_x, _y, _text, _sep, _w, sx, sy, rotation)
draw_set_halign(ha); draw_set_halign(ha);
draw_set_valign(va); draw_set_valign(va);
return hh;
} }
#macro _string_width_ext string_width_ext #macro _string_width_ext string_width_ext

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Gameframe", "name": "Gameframe",
"path": "folders/_Extensions/Gameframe.yy", "path": "folders/_extensions/Gameframe.yy",
}, },
} }

View file

@ -6,6 +6,6 @@
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "Gameframe", "name": "Gameframe",
"path": "folders/_Extensions/Gameframe.yy", "path": "folders/_extensions/Gameframe.yy",
}, },
} }

View file

@ -1,11 +1,10 @@
#region save #region save
globalvar LOADING, LOADING_VERSION, APPENDING, CLONING, SAFE_MODE; globalvar LOADING, LOADING_VERSION, APPENDING, CLONING, SAFE_MODE;
globalvar LOAD_ADDON;
globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL; globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
globalvar RENDERING;
RENDERING = false;
LOADING = false; LOADING = false;
LOAD_ADDON = {};
CLONING = false; CLONING = false;
LOADING_VERSION = 0; LOADING_VERSION = 0;
APPENDING = false; APPENDING = false;

View file

@ -34,7 +34,7 @@ function json_save_struct(path, struct, pretty = false) {
var s; var s;
if(pretty) if(pretty)
s = json_beautify(json_stringify(struct)); s = json_stringify(struct, true);
else else
s = json_stringify_minify(struct); s = json_stringify_minify(struct);

View file

@ -113,14 +113,10 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
try { try {
if(struct_has(_load_content, "addon")) { if(struct_has(_load_content, "addon")) {
var _addon = _load_content.addon; var _addon = _load_content.addon;
LOAD_ADDON = _addon;
with(addon) { struct_foreach(_addon, function(_name, _value) { addonLoad(_name, false); });
if(!struct_has(_addon, name)) continue; } else
var _mp = json_parse(_addon.name); LOAD_ADDON = {};
lua_call(thread, "deserialize", _mp);
}
}
} catch(e) { } catch(e) {
log_warning("LOAD, addon", exception_print(e)); log_warning("LOAD, addon", exception_print(e));
} }
@ -192,7 +188,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false) {
log_warning("LOAD, connect", exception_print(e)); log_warning("LOAD, connect", exception_print(e));
} }
UPDATE |= RENDER_TYPE.full; Render();
LOADING = false; LOADING = false;
MODIFIED = false; MODIFIED = false;

View file

@ -49,10 +49,10 @@
return __txtx(prefix + key, txt); return __txtx(prefix + key, txt);
} }
function __txt_node_name(node) { function __txt_node_name(node, def = "") {
if(struct_has(LOCALE.node, node)) if(struct_has(LOCALE.node, node))
return LOCALE.node[$ node].name; return LOCALE.node[$ node].name;
return node; return def;
} }
function __txt_node_tooltip(node, def = "") { function __txt_node_tooltip(node, def = "") {

View file

@ -43,23 +43,18 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
butx += ui(20); butx += ui(20);
if(!global_var) { if(!global_var) {
if(jun.expUse) { index = jun.visible;
var validated = is_struct(jun.expTree) && jun.expTree.validate(); draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 0.8);
draw_sprite_ui_uniform(THEME.node_use_expression, validated? 0 : 2, butx, lb_y, 1,, 0.8); if(_hover && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) {
} else { if(visi_hold != noone)
index = jun.visible; jun.visible = visi_hold;
draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 0.8);
if(_hover && point_in_circle(_m[0], _m[1], butx, lb_y, ui(10))) {
if(visi_hold != noone)
jun.visible = visi_hold;
draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 1); draw_sprite_ui_uniform(THEME.junc_visible, index, butx, lb_y, 1,, 1);
TOOLTIP = __txt("Visibility"); TOOLTIP = __txt("Visibility");
if(mouse_press(mb_left, _focus)) { if(mouse_press(mb_left, _focus)) {
jun.visible = !jun.visible; jun.visible = !jun.visible;
visi_hold = jun.visible; visi_hold = jun.visible;
}
} }
} }
} else } else
@ -172,6 +167,13 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
var ic_b = jun.expUse? c_white : COLORS._main_icon; var ic_b = jun.expUse? c_white : COLORS._main_icon;
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, __txtx("panel_inspector_use_expression", "Use expression"), THEME.node_use_expression, jun.expUse, ic_b) == 2) if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, __txtx("panel_inspector_use_expression", "Use expression"), THEME.node_use_expression, jun.expUse, ic_b) == 2)
jun.expUse = !jun.expUse; jun.expUse = !jun.expUse;
if(jun.expUse) {
bx -= ui(28);
var cc = NODE_DROPPER_TARGET == jun? COLORS._main_value_positive : COLORS._main_icon;
if(buttonInstant(THEME.button_hide, bx - ui(12), by - ui(12), ui(24), ui(24), _m, _focus, _hover, __txtx("panel_inspector_dropper", "Node dropper"), THEME.node_dropper, 0, cc) == 2)
NODE_DROPPER_TARGET = NODE_DROPPER_TARGET == jun? noone : jun;
}
} }
#endregion #endregion

View file

@ -1,3 +1,16 @@
function Node_create_3D_Obj(_x, _y, _group = noone) {
var path = "";
if(!LOADING && !APPENDING && !CLONING) {
path = get_open_filename(".obj", "");
key_release();
if(path == "") return noone;
}
var node = new Node_3D_Obj(_x, _y, _group);
node.setPath(path);
return node;
}
function Node_create_3D_Obj_path(_x, _y, path) { function Node_create_3D_Obj_path(_x, _y, path) {
if(!file_exists(path)) return noone; if(!file_exists(path)) return noone;
@ -146,6 +159,8 @@ function Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
static updateObj = function(updateMat = true) { static updateObj = function(updateMat = true) {
var _path = inputs[| 0].getValue(); var _path = inputs[| 0].getValue();
if(!file_exists(_path)) return;
var _flip = inputs[| 12].getValue(); var _flip = inputs[| 12].getValue();
var _dir = filename_dir(_path); var _dir = filename_dir(_path);
var _pathMtl = string_copy(_path, 1, string_length(_path) - 4) + ".mtl"; var _pathMtl = string_copy(_path, 1, string_length(_path) - 4) + ".mtl";

View file

@ -3,8 +3,12 @@ function Node_FXAA(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
active_index = 1;
input_display_list = [ input_display_list = [
0, 1, 0,
] ]
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);

View file

@ -0,0 +1,150 @@
function Node_Armature(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Armature Create";
//inputs[| 0] = nodeValue("Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
input_fix_len = ds_list_size(inputs);
data_length = 1;
static createBone = function(parent, distance, direction) {
var bone = new __Bone(parent, distance, direction);
parent.addChild(bone);
if(parent == attributes.bones)
bone.parent_anchor = false;
return bone;
}
outputs[| 0] = nodeValue("Armature", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
attributes.bones = new __Bone();
attributes.bones.is_main = true;
tools = [
new NodeTool( "Add bones", THEME.path_tools_transform ),
new NodeTool( "Remove bones", THEME.path_tools_transform ),
];
anchor_selecting = noone;
builder_bone = noone;
builder_type = 0;
builder_sx = 0;
builder_sy = 0;
builder_mx = 0;
builder_my = 0;
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
anchor_selecting = attributes.bones.draw(active, _x, _y, _s, _mx, _my, true, anchor_selecting);
var mx = (_mx - _x) / _s;
var my = (_my - _y) / _s;
if(builder_bone != noone) {
var dir = point_direction(builder_sx, builder_sy, mx, my);
var dis = point_distance(builder_sx, builder_sy, mx, my);
if(!key_mod_press(ALT)) {
if(builder_type == 0) {
var bo = builder_bone.getPoint(builder_bone.length, builder_bone.angle);
builder_bone.direction = dir;
builder_bone.distance = dis;
var bn = builder_bone.getPoint(0, 0);
builder_bone.angle = point_direction(bo.x, bo.y, bn.x, bn.y);
builder_bone.length = point_distance( bo.x, bo.y, bn.x, bn.y);
} else if(builder_type == 1) {
var chs = [];
for( var i = 0; i < array_length(builder_bone.childs); i++ ) {
var ch = builder_bone.childs[i];
chs[i] = ch.getPoint(ch.length, ch.angle);
}
builder_bone.angle = dir;
builder_bone.length = dis;
for( var i = 0; i < array_length(builder_bone.childs); i++ ) {
var ch = builder_bone.childs[i];
var c0 = ch.getPoint(0, 0);
ch.angle = point_direction(c0.x, c0.y, chs[i].x, chs[i].y);
ch.length = point_distance( c0.x, c0.y, chs[i].x, chs[i].y);
}
}
} else {
if(builder_type == 0) {
builder_bone.direction = dir;
builder_bone.distance = dis;
} else if(builder_type == 1) {
builder_bone.angle = dir;
builder_bone.length = dis;
} else if(builder_type == 2) {
var bo = builder_bone.getPoint(0, 0);
var bx = bo.x + (mx - builder_mx) / _s;
var by = bo.y + (my - builder_my) / _s;
if(builder_bone.parent_anchor) {
} else {
builder_bone.direction = point_direction(builder_sx, builder_sy, bx, by);
builder_bone.distance = point_distance( builder_sx, builder_sy, bx, by);
}
}
}
if(mouse_release(mb_left))
builder_bone = noone;
}
if(isUsingTool(0)) { // builder
if(mouse_press(mb_left, active)) {
if(anchor_selecting == noone) {
builder_bone = createBone(attributes.bones, point_distance(0, 0, mx, my), point_direction(0, 0, mx, my));
builder_type = 1;
builder_sx = mx;
builder_sy = my;
} else if(anchor_selecting[1] == 1) {
builder_bone = createBone(anchor_selecting[0], 0, 0);
builder_type = 1;
builder_sx = mx;
builder_sy = my;
}
}
} else { //mover
if(anchor_selecting != noone && mouse_press(mb_left, active)) {
builder_bone = anchor_selecting[0];
builder_type = anchor_selecting[1];
if(builder_type == 0) {
var orig = builder_bone.parent.getPoint(0, 0);
builder_sx = orig.x;
builder_sy = orig.y;
} else if(builder_type == 1) {
var orig = builder_bone.getPoint(0, 0);
builder_sx = orig.x;
builder_sy = orig.y;
} else if(builder_type == 2) {
var _par = builder_bone.parent;
var orig = _par.getPoint(_par.length, _par.angle);
builder_sx = orig.x;
builder_sy = orig.y;
builder_mx = mx;
builder_my = my;
}
}
}
}
static update = function(frame = ANIMATOR.current_frame) {
outputs[| 0].setValue(attributes.bones);
}
static postDeserialize = function() {
var _inputs = load_map.inputs;
for(var i = input_fix_len; i < array_length(_inputs); i += data_length)
createBone();
}
}

View file

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

View file

@ -0,0 +1,784 @@
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)
.setDisplay(VALUE_DISPLAY.vector);
attribute_surface_depth();
attribute_interpolation();
input_fix_len = ds_list_size(inputs);
data_length = 4;
attributes.layer_visible = [];
attributes.layer_selectable = [];
hold_visibility = true;
hold_select = true;
layer_dragging = noone;
layer_remove = -1;
layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
var amo = (ds_list_size(inputs) - input_fix_len) / data_length - 1;
if(array_length(current_data) != ds_list_size(inputs)) return 0;
var lh = 32;
var _h = 8 + max(1, amo) * (lh + 4) + 8;
layer_renderer.h = _h;
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _y, _w, _h, COLORS.node_composite_bg_blend, 1);
var _vis = attributes.layer_visible;
var _sel = attributes.layer_selectable;
var ly = _y + 8;
var ssh = lh - 6;
var hoverIndex = noone;
draw_set_color(COLORS.node_composite_separator);
draw_line(_x + 16, ly, _x + _w - 16, ly);
layer_remove = -1;
for(var i = 0; i < amo; i++) {
var ind = amo - i - 1;
var index = input_fix_len + ind * data_length;
var _surf = current_data[index + 0];
var _pos = current_data[index + 1];
var _bx = _x + _w - 24;
var _cy = ly + i * (lh + 4);
if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 16)) {
draw_sprite_ui_uniform(THEME.icon_delete, 3, _bx, _cy + lh / 2, 1, COLORS._main_value_negative);
if(mouse_press(mb_left, _focus))
layer_remove = ind;
} else
draw_sprite_ui_uniform(THEME.icon_delete, 3, _bx, _cy + lh / 2, 1, COLORS._main_icon);
if(!is_surface(_surf)) continue;
var aa = (ind != layer_dragging || layer_dragging == noone)? 1 : 0.5;
var vis = _vis[ind];
var sel = _sel[ind];
var hover = point_in_rectangle(_m[0], _m[1], _x, _cy, _x + _w, _cy + lh);
draw_set_color(COLORS.node_composite_separator);
draw_line(_x + 16, _cy + lh + 2, _x + _w - 16, _cy + lh + 2);
var _bx = _x + 24 * 2 + 8;
if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 12)) {
draw_sprite_ui_uniform(THEME.junc_visible, vis, _bx, _cy + lh / 2, 1, c_white);
if(mouse_press(mb_left, _focus))
hold_visibility = !_vis[ind];
if(mouse_click(mb_left, _focus) && _vis[ind] != hold_visibility) {
_vis[@ ind] = hold_visibility;
doUpdate();
}
} else
draw_sprite_ui_uniform(THEME.junc_visible, vis, _bx, _cy + lh / 2, 1, COLORS._main_icon, 0.5 + 0.5 * vis);
_bx += 24 + 8;
if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 12)) {
draw_sprite_ui_uniform(THEME.cursor_select, sel, _bx, _cy + lh / 2, 1, c_white);
if(mouse_press(mb_left, _focus))
hold_select = !_sel[ind];
if(mouse_click(mb_left, _focus) && _sel[ind] != hold_select)
_sel[@ ind] = hold_select;
} else
draw_sprite_ui_uniform(THEME.cursor_select, sel, _bx, _cy + lh / 2, 1, COLORS._main_icon, 0.5 + 0.5 * sel);
draw_set_color(COLORS.node_composite_bg);
var _sx0 = _bx + 24;
var _sx1 = _sx0 + ssh;
var _sy0 = _cy + 3;
var _sy1 = _sy0 + ssh;
draw_rectangle(_sx0, _sy0, _sx1, _sy1, true);
var _ssw = surface_get_width(_surf);
var _ssh = surface_get_height(_surf);
var _sss = min(ssh / _ssw, ssh / _ssh);
draw_surface_ext_safe(_surf, _sx0, _sy0, _sss, _sss, 0, c_white, 1);
draw_set_text(f_p1, fa_left, fa_center, hover? COLORS._main_text : COLORS._main_text);
draw_set_alpha(aa);
draw_text(_sx1 + 12, _cy + lh / 2, inputs[| index].name);
draw_set_alpha(1);
if(_hover && point_in_rectangle(_m[0], _m[1], _x, _cy, _x + _w, _cy + lh)) {
hoverIndex = ind;
if(layer_dragging != noone) {
draw_set_color(COLORS._main_accent);
if(layer_dragging > ind)
draw_line_width(_x + 16, _cy + lh + 2, _x + _w - 16, _cy + lh + 2, 2);
else if(layer_dragging < ind)
draw_line_width(_x + 16, _cy - 2, _x + _w - 16, _cy - 2, 2);
}
}
if(layer_dragging == noone || layer_dragging == ind) {
var _bx = _x + 24;
if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 16)) {
draw_sprite_ui_uniform(THEME.hamburger, 3, _bx, _cy + lh / 2, .75, c_white);
if(mouse_press(mb_left, _focus))
layer_dragging = ind;
} else
draw_sprite_ui_uniform(THEME.hamburger, 3, _bx, _cy + lh / 2, .75, COLORS._main_icon);
}
}
if(layer_dragging != noone && mouse_release(mb_left)) {
if(layer_dragging != hoverIndex && hoverIndex != noone) {
var index = input_fix_len + layer_dragging * data_length;
var targt = input_fix_len + hoverIndex * data_length;
var _vis = attributes.layer_visible;
var _sel = attributes.layer_selectable;
var ext = [];
var vis = _vis[layer_dragging];
array_delete(_vis, layer_dragging, 1);
array_insert(_vis, hoverIndex, vis);
var sel = _sel[layer_dragging];
array_delete(_sel, layer_dragging, 1);
array_insert(_sel, hoverIndex, sel);
for( var i = 0; i < data_length; i++ ) {
ext[i] = inputs[| index];
ds_list_delete(inputs, index);
}
for( var i = 0; i < data_length; i++ ) {
ds_list_insert(inputs, targt + i, ext[i]);
}
doUpdate();
}
layer_dragging = noone;
}
return _h;
});
input_display_list = [
["Output", true], 0,
["Layers", false], layer_renderer,
["Surfaces", true],
];
input_display_list_len = array_length(input_display_list);
function deleteLayer(index) {
var idx = input_fix_len + index * data_length;
for( var i = 0; i < data_length; i++ ) {
ds_list_delete(inputs, idx);
array_remove(input_display_list, idx + i);
}
for( var i = input_display_list_len; i < array_length(input_display_list); i++ ) {
if(input_display_list[i] > idx)
input_display_list[i] = input_display_list[i] - data_length;
}
doUpdate();
}
function createNewSurface() {
var index = ds_list_size(inputs);
var _s = floor((index - input_fix_len) / data_length);
inputs[| index + 0] = nodeValue(_s? ("Surface " + string(_s)) : "Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| index + 0].surface_index = index;
inputs[| index + 0].hover_effect = 0;
inputs[| index + 1] = nodeValue("Position " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
.setUnitRef(function(index) { return [ overlay_w, overlay_h ]; });
inputs[| index + 1].surface_index = index;
inputs[| index + 2] = nodeValue("Rotation " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.rotation);
inputs[| index + 2].surface_index = index;
inputs[| index + 3] = nodeValue("Scale " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| index + 3].surface_index = index;
array_push(input_display_list, index + 0);
array_push(input_display_list, index + 1);
array_push(input_display_list, index + 2);
array_push(input_display_list, index + 3);
while(_s >= array_length(attributes.layer_visible))
array_push(attributes.layer_visible, true);
while(_s >= array_length(attributes.layer_selectable))
array_push(attributes.layer_selectable, true);
}
if(!LOADING && !APPENDING) createNewSurface();
//function getInput() { return inputs[| ds_list_size(inputs) - data_length]; }
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();
temp_surface = [ surface_create(1, 1), surface_create(1, 1) ];
surf_dragging = -1;
input_dragging = -1;
drag_type = 0;
dragging_sx = 0;
dragging_sy = 0;
dragging_mx = 0;
dragging_my = 0;
rot_anc_x = 0;
rot_anc_y = 0;
overlay_w = 0;
overlay_h = 0;
atlas_data = [];
static getInputAmount = function() {
return input_fix_len + (ds_list_size(inputs) - input_fix_len) / data_length;
}
static getInputIndex = function(index) {
if(index < input_fix_len) return index;
return input_fix_len + (index - input_fix_len) * data_length;
}
static setHeight = function() {
var _hi = ui(32);
var _ho = ui(32);
for( var i = 0; i < getInputAmount(); i++ )
if(inputs[| getInputIndex(i)].isVisible())
_hi += 24;
for( var i = 0; i < ds_list_size(outputs); i++ )
if(outputs[| i].isVisible())
_ho += 24;
h = max(min_h, (preview_surface && previewable)? 128 : 0, _hi, _ho);
}
static drawJunctions = function(_x, _y, _mx, _my, _s) {
if(!active) return;
var hover = noone;
var amo = array_length(input_display_list);
var hov = PANEL_GRAPH._junction_hovering;
var ind = -1;
if(hov != noone && struct_has(hov, "surface_index"))
ind = hov.surface_index;
for( var i = 0; i < getInputAmount(); i++ ) {
var idx = getInputIndex(i);
if(!inputs[| idx].isVisible()) continue;
if(inputs[| idx].drawJunction(_s, _mx, _my, 1.5))
hover = inputs[| idx];
if(idx >= input_fix_len && inputs[| idx].hover_effect > 0) {
var _px0 = 999999;
var _py0 = 999999;
var _px1 = -999999;
var _py1 = -999999;
var _drw = false;
var _hov = inputs[| idx].hover_effect;
for( var j = 1; j < data_length; j++ ) {
if(!inputs[| idx + j].isVisible()) continue;
_px0 = min( _px0, inputs[| idx + j].x );
_py0 = min( _py0, inputs[| idx + j].y );
_px1 = max( _px1, inputs[| idx + j].x );
_py1 = max( _py1, inputs[| idx + j].y );
_drw = true;
}
if(!_drw) continue;
//if(_hov > 0.5) {
// var pilx = _px0 - 16 * _s;
// var pily = _py0 - 16 * _s;
// var pilw = _px1 - _px0 + 32 * _s;
// var pilh = _py1 - _py0 + 32 * _s;
// draw_sprite_stretched_ext(THEME.node_bg_pill, 0, pilx, pily, pilw, pilh, COLORS._main_icon_dark, (_hov - 0.5) * 2);
//}
for( var j = 1; j < data_length; j++ ) {
if(inputs[| idx + j].drawJunction(_s, _mx, _my, 1.5))
hover = inputs[| idx + j];
}
}
}
for(var i = 0; i < ds_list_size(outputs); i++)
if(outputs[| i].drawJunction(_s, _mx, _my))
hover = outputs[| i];
return hover;
}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {
if(!active) return;
var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
var jun;
var xx = x * _s + _x;
var yy = y * _s + _y;
show_input_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx - 8 * _s, yy + 20 * _s, xx + 8 * _s, yy + h * _s);
show_output_name = PANEL_GRAPH.pHOVER && point_in_rectangle(_mx, _my, xx + (w - 8) * _s, yy + 20 * _s, xx + (w + 8) * _s, yy + h * _s);
var hov = PANEL_GRAPH._junction_hovering;
var ind = -1;
if(hov != noone && struct_has(hov, "surface_index"))
ind = hov.surface_index;
if(ind != -1) {
for( var j = 1; j < data_length; j++ ) {
if(ind + j >= ds_list_size(inputs)) break;
inputs[| ind + j].drawNameBG(_s);
}
for( var j = 1; j < data_length; j++ ) {
if(ind + j >= ds_list_size(inputs)) break;
inputs[| ind + j].drawName(_s, _mx, _my);
}
} else if(show_input_name) {
for( var i = 0; i < getInputAmount(); i++ ) {
var idx = getInputIndex(i);
if(idx == ind) continue;
inputs[| idx].drawNameBG(_s);
}
for( var i = 0; i < getInputAmount(); i++ ) {
var idx = getInputIndex(i);
if(idx == ind) continue;
inputs[| idx].drawName(_s, _mx, _my);
}
}
if(show_output_name) {
for(var i = 0; i < ds_list_size(outputs); i++)
outputs[| i].drawNameBG(_s);
for(var i = 0; i < ds_list_size(outputs); i++)
outputs[| i].drawName(_s, _mx, _my);
}
}
static preDraw = function(_x, _y, _s) {
var xx = x * _s + _x;
var yy = y * _s + _y;
var jun;
var inamo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
var _in = yy + ui(32) * _s;
var hov = PANEL_GRAPH._junction_hovering;
var ind = -1;
if(hov != noone && struct_has(hov, "surface_index"))
ind = hov.surface_index;
for( var i = 0; i < getInputAmount(); i++ ) {
var idx = getInputIndex(i);
jun = ds_list_get(inputs, idx, noone);
if(jun == noone || is_undefined(jun)) continue;
jun.x = xx;
jun.y = _in;
if(i >= input_fix_len) {
jun.hover_effect = lerp_float(jun.hover_effect, ind == idx, 3);
var sp = jun.hover_effect * 24;
var sx = xx - sp * _s;
var sy = _in;
for( var j = 1; j < data_length; j++ ) {
var _jun = ds_list_get(inputs, idx + j, noone);
_jun.x = sx;
_jun.y = sy;
sy += sp * _s * _jun.isVisible();
}
}
_in += 24 * _s * jun.isVisible();
}
var outamo = output_display_list == -1? ds_list_size(outputs) : array_length(output_display_list);
xx = xx + w * _s;
_in = yy + ui(32) * _s;
for(var i = 0; i < outamo; i++) {
var idx = getOutputJunctionIndex(i);
jun = outputs[| idx];
jun.x = xx;
jun.y = _in;
_in += 24 * _s * jun.isVisible();
}
}
static onValueFromUpdate = function(index) {
if(LOADING || APPENDING) return;
if(index + data_length >= ds_list_size(inputs))
createNewSurface();
}
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
var dim = inputs[| 0].getValue();
var ww = dim[0];
var hh = dim[1];
var x0 = _x;
var x1 = _x + ww * _s;
var y0 = _y;
var y1 = _y + hh * _s;
if(input_dragging > -1) {
if(drag_type == NODE_COMPOSE_DRAG.move) {
var _dx = (_mx - dragging_mx) / _s;
var _dy = (_my - dragging_my) / _s;
if(key_mod_press(SHIFT)) {
if(abs(_dx) > abs(_dy) + ui(16))
_dy = 0;
else if(abs(_dy) > abs(_dx) + ui(16))
_dx = 0;
else {
_dx = max(_dx, _dy);
_dy = _dx;
}
}
var pos_x = value_snap(dragging_sx + _dx, _snx);
var pos_y = value_snap(dragging_sy + _dy, _sny);
if(key_mod_press(ALT)) {
var _surf = current_data[input_dragging - 1];
var _sw = surface_get_width(_surf);
var _sh = surface_get_height(_surf);
var x0 = pos_x, x1 = pos_x + _sw;
var y0 = pos_y, y1 = pos_y + _sh;
var xc = (x0 + x1) / 2;
var yc = (y0 + y1) / 2;
var snap = 4;
draw_set_color(COLORS._main_accent);
if(abs(x0 - 0) < snap) {
pos_x = 0;
draw_line_width(_x + _s * 0, 0, _x + _s * 0, WIN_H, 2);
}
if(abs(y0 - 0) < snap) {
pos_y = 0;
draw_line_width(0, _y + _s * 0, WIN_W, _y + _s * 0, 2);
}
if(abs(x1 - ww) < snap) {
pos_x = ww - _sw;
draw_line_width(_x + _s * ww, 0, _x + _s * ww, WIN_H, 2);
}
if(abs(y1 - hh) < snap) {
pos_y = hh - _sh;
draw_line_width(0, _y + _s * hh, WIN_W, _y + _s * hh, 2);
}
if(abs(xc - ww / 2) < snap) {
pos_x = ww / 2 - _sw / 2;
draw_line_width(_x + _s * ww / 2, 0, _x + _s * ww / 2, WIN_H, 2);
}
if(abs(yc - hh / 2) < snap) {
pos_y = hh / 2 - _sh / 2;
draw_line_width(0, _y + _s * hh / 2, WIN_W, _y + _s * hh / 2, 2);
}
}
if(inputs[| input_dragging].setValue([ pos_x, pos_y ]))
UNDO_HOLDING = true;
} else if(drag_type == NODE_COMPOSE_DRAG.rotate) {
var aa = point_direction(rot_anc_x, rot_anc_y, _mx, _my);
var da = angle_difference(dragging_mx, aa);
var sa;
if(key_mod_press(CTRL))
sa = round((dragging_sx - da) / 15) * 15;
else
sa = dragging_sx - da;
if(inputs[| input_dragging].setValue(sa))
UNDO_HOLDING = true;
} else if(drag_type == NODE_COMPOSE_DRAG.scale) {
var _surf = inputs[| surf_dragging + 0].getValue();
var _rot = inputs[| surf_dragging + 2].getValue();
var _sw = surface_get_width(_surf);
var _sh = surface_get_width(_surf);
var _p = point_rotate(_mx - dragging_mx, _my - dragging_my, 0, 0, -_rot);
var sca_x = _p[0] / _s / _sw * 2;
var sca_y = _p[1] / _s / _sh * 2;
if(key_mod_press(SHIFT)) {
sca_x = min(sca_x, sca_y);
sca_y = min(sca_x, sca_y);
}
if(inputs[| input_dragging].setValue([ sca_x, sca_y ]))
UNDO_HOLDING = true;
}
if(mouse_release(mb_left)) {
input_dragging = -1;
UNDO_HOLDING = false;
}
}
var hovering = -1;
var hovering_type = 0;
var _vis = attributes.layer_visible;
var _sel = attributes.layer_selectable;
var amo = (ds_list_size(inputs) - input_fix_len) / data_length;
if(array_length(current_data) < input_fix_len + amo * data_length)
return;
for(var i = 0; i < amo; i++) {
var vis = _vis[i];
var sel = _sel[i];
if(!vis) continue;
var index = input_fix_len + i * data_length;
var _surf = current_data[index + 0];
var _pos = current_data[index + 1];
var _rot = current_data[index + 2];
var _sca = current_data[index + 3];
if(!_surf || is_array(_surf)) continue;
var _ww = surface_get_width(_surf);
var _hh = surface_get_height(_surf);
var _sw = _ww * _sca[0];
var _sh = _hh * _sca[1];
var cx = _pos[0] + _ww / 2;
var cy = _pos[1] + _hh / 2;
var _d0 = point_rotate(cx - _sw / 2, cy - _sh / 2, cx, cy, _rot);
var _d1 = point_rotate(cx - _sw / 2, cy + _sh / 2, cx, cy, _rot);
var _d2 = point_rotate(cx + _sw / 2, cy - _sh / 2, cx, cy, _rot);
var _d3 = point_rotate(cx + _sw / 2, cy + _sh / 2, cx, cy, _rot);
var _rr = point_rotate(cx, cy - _sh / 2 - 1, cx, cy, _rot);
_d0[0] = overlay_x(_d0[0], _x, _s); _d0[1] = overlay_y(_d0[1], _y, _s);
_d1[0] = overlay_x(_d1[0], _x, _s); _d1[1] = overlay_y(_d1[1], _y, _s);
_d2[0] = overlay_x(_d2[0], _x, _s); _d2[1] = overlay_y(_d2[1], _y, _s);
_d3[0] = overlay_x(_d3[0], _x, _s); _d3[1] = overlay_y(_d3[1], _y, _s);
_rr[0] = overlay_x(_rr[0], _x, _s); _rr[1] = overlay_y(_rr[1], _y, _s);
var _borcol = COLORS.node_composite_overlay_border;
var _ri = 0;
var _si = 0;
if(!sel) continue;
if(point_in_circle(_mx, _my, _d3[0], _d3[1], 12)) {
hovering = index;
hovering_type = NODE_COMPOSE_DRAG.scale;
_si = 1;
} else if(point_in_rectangle_points(_mx, _my, _d0[0], _d0[1], _d1[0], _d1[1], _d2[0], _d2[1], _d3[0], _d3[1])) {
hovering = index;
hovering_type = NODE_COMPOSE_DRAG.move;
} else if(point_in_circle(_mx, _my, _rr[0], _rr[1], 12)) {
hovering = index;
hovering_type = NODE_COMPOSE_DRAG.rotate;
_ri = 1;
}
draw_sprite_colored(THEME.anchor_rotate, _ri, _rr[0], _rr[1],, _rot);
draw_sprite_colored(THEME.anchor_scale, _si, _d3[0], _d3[1],, _rot);
draw_set_color(_borcol);
draw_line(_d0[0], _d0[1], _d1[0], _d1[1]);
draw_line(_d0[0], _d0[1], _d2[0], _d2[1]);
draw_line(_d3[0], _d3[1], _d1[0], _d1[1]);
draw_line(_d3[0], _d3[1], _d2[0], _d2[1]);
}
if(hovering != -1) {
var _surf = current_data[hovering];
var _pos = current_data[hovering + 1];
var _rot = current_data[hovering + 2];
var _sca = current_data[hovering + 3];
var _ww = surface_get_width(_surf);
var _hh = surface_get_height(_surf);
var _dx0 = _x + _pos[0] * _s;
var _dy0 = _y + _pos[1] * _s;
var _dx1 = _dx0 + _ww * _s;
var _dy1 = _dy0 + _hh * _s;
var _sw = _ww * _sca[0];
var _sh = _hh * _sca[1];
var cx = _pos[0] + _ww / 2;
var cy = _pos[1] + _hh / 2;
var _d0 = point_rotate(cx - _sw / 2, cy - _sh / 2, cx, cy, _rot);
var _d1 = point_rotate(cx - _sw / 2, cy + _sh / 2, cx, cy, _rot);
var _d2 = point_rotate(cx + _sw / 2, cy - _sh / 2, cx, cy, _rot);
var _d3 = point_rotate(cx + _sw / 2, cy + _sh / 2, cx, cy, _rot);
_d0[0] = overlay_x(_d0[0], _x, _s); _d0[1] = overlay_y(_d0[1], _y, _s);
_d1[0] = overlay_x(_d1[0], _x, _s); _d1[1] = overlay_y(_d1[1], _y, _s);
_d2[0] = overlay_x(_d2[0], _x, _s); _d2[1] = overlay_y(_d2[1], _y, _s);
_d3[0] = overlay_x(_d3[0], _x, _s); _d3[1] = overlay_y(_d3[1], _y, _s);
if(hovering_type == NODE_COMPOSE_DRAG.move) {
draw_set_color(COLORS._main_accent);
draw_line_round(_d0[0], _d0[1], _d1[0], _d1[1], 2);
draw_line_round(_d0[0], _d0[1], _d2[0], _d2[1], 2);
draw_line_round(_d3[0], _d3[1], _d1[0], _d1[1], 2);
draw_line_round(_d3[0], _d3[1], _d2[0], _d2[1], 2);
if(mouse_press(mb_left, active)) {
surf_dragging = hovering;
input_dragging = hovering + 1;
drag_type = hovering_type;
dragging_sx = _pos[0];
dragging_sy = _pos[1];
dragging_mx = _mx;
dragging_my = _my;
}
} else if(hovering_type == NODE_COMPOSE_DRAG.rotate) { //rot
if(mouse_press(mb_left, active)) {
surf_dragging = hovering;
input_dragging = hovering + 2;
drag_type = hovering_type;
dragging_sx = _rot;
rot_anc_x = _dx0 + _ww / 2 * _s;
rot_anc_y = _dy0 + _hh / 2 * _s;
dragging_mx = point_direction(rot_anc_x, rot_anc_y, _mx, _my);
}
} else if(hovering_type == NODE_COMPOSE_DRAG.scale) { //sca
if(mouse_press(mb_left, active)) {
surf_dragging = hovering;
input_dragging = hovering + 3;
drag_type = hovering_type;
dragging_sx = _sca[0];
dragging_sy = _sca[1];
dragging_mx = _dx0 + _ww / 2 * _s;
dragging_my = _dy0 + _hh / 2 * _s;
}
}
}
if(layer_remove > -1) {
deleteLayer(layer_remove);
layer_remove = -1;
}
}
static step = function() {
var _dim_type = getSingleValue(1);
inputs[| 2].setVisible(_dim_type == COMPOSE_OUTPUT_SCALING.constant);
}
static process_data = function(_outSurf, _data, _output_index, _array_index) {
if(_output_index == 1) return atlas_data;
if(_output_index == 0 && _array_index == 0) atlas_data = [];
if(array_length(_data) < 4) return _outSurf;
var _dim = _data[0];
var cDep = attrDepth();
var ww = _dim[0], hh = _dim[1];
overlay_w = ww;
overlay_h = hh;
if(is_surface(base))
_outSurf = surface_size_to(_outSurf, ww, hh, cDep);
for(var i = 0; i < 2; i++) {
temp_surface[i] = surface_verify(temp_surface[i], surface_get_width(_outSurf), surface_get_height(_outSurf), cDep);
surface_set_target(temp_surface[i]);
DRAW_CLEAR
surface_reset_target();
}
var res_index = 0, bg = 0;
var imageAmo = (ds_list_size(inputs) - input_fix_len) / data_length;
var _vis = attributes.layer_visible;
surface_set_shader(_outSurf, sh_sample, true, BLEND.alphamulp);
for(var i = 0; i < imageAmo; i++) {
var vis = _vis[i];
if(!vis) continue;
var startDataIndex = input_fix_len + i * data_length;
var _s = _data[startDataIndex + 0];
var _pos = _data[startDataIndex + 1];
var _rot = _data[startDataIndex + 2];
var _sca = _data[startDataIndex + 3];
if(!_s || is_array(_s)) continue;
var _ww = surface_get_width(_s);
var _hh = surface_get_height(_s);
var _sw = _ww * _sca[0];
var _sh = _hh * _sca[1];
var cx = _pos[0] + _ww / 2;
var cy = _pos[1] + _hh / 2;
var _d0 = point_rotate(cx - _sw / 2, cy - _sh / 2, cx, cy, _rot);
shader_set_interpolation(_s);
array_push(atlas_data, new SurfaceAtlas(_s, [ _d0[0], _d0[1] ], _rot, [ _sca[0], _sca[1] ]));
draw_surface_ext_safe(_s, _d0[0], _d0[1], _sca[0], _sca[1], _rot);
}
surface_reset_shader();
return _outSurf;
}
static postDeserialize = function() {
var _inputs = load_map.inputs;
for(var i = input_fix_len; i < array_length(_inputs); i += data_length)
createNewSurface();
}
static attributeSerialize = function() {
var att = {};
att.layer_visible = attributes.layer_visible;
att.layer_selectable = attributes.layer_selectable;
return att;
}
static attributeDeserialize = function(attr) {
if(struct_has(attr, "layer_visible"))
attributes.layer_visible = attr.layer_visible;
if(struct_has(attr, "layer_selectable"))
attributes.layer_selectable = attr.layer_selectable;
}
}

View file

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

View file

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

View file

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

View file

@ -24,8 +24,8 @@ function Node_Base_Convert(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text); draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text);
var baseFrom = current_data[1]; var baseFrom = array_safe_get(current_data, 1);
var baseTo = current_data[2]; var baseTo = array_safe_get(current_data, 2);
var bbox = drawGetBbox(xx, yy, _s); var bbox = drawGetBbox(xx, yy, _s);
var b1 = BBOX().fromPoints(bbox.x0, bbox.y0, bbox.xc - _s * 8, bbox.y1); var b1 = BBOX().fromPoints(bbox.x0, bbox.y0, bbox.xc - _s * 8, bbox.y1);

View file

@ -157,7 +157,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
draw_point(_x + 1, _y); draw_point(_x + 1, _y);
draw_point(_x, _y + 1); draw_point(_x, _y + 1);
} else } else
draw_circle(_x, _y, _siz / 2, 0); draw_circle_prec(_x, _y, _siz / 2, 0);
} else { } else {
var _sw = surface_get_width(_brush); var _sw = surface_get_width(_brush);
var _sh = surface_get_height(_brush); var _sh = surface_get_height(_brush);

View file

@ -155,11 +155,11 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
LOG_IF(global.FLAG.render, $"→→→→→ Call get next node from group"); LOG_IF(global.FLAG.render, $"→→→→→ Call get next node from group");
var nodes = []; var nodes = [];
if(renderActive) { if(isRenderActive()) {
var allReady = true; var allReady = true;
for(var i = custom_input_index; i < ds_list_size(inputs); i++) { for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var _in = inputs[| i].from; var _in = inputs[| i].from;
if(!_in.renderActive) continue; if(!_in.isRenderActive()) continue;
if(!_in.isRenderable()) { if(!_in.isRenderable()) {
LOG_IF(global.FLAG.render, $"Node {_in.internalName} not ready, loop skip."); LOG_IF(global.FLAG.render, $"Node {_in.internalName} not ready, loop skip.");
@ -184,7 +184,7 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
var _to = _ot.value_to[| j]; var _to = _ot.value_to[| j];
var _node = _to.node; var _node = _to.node;
if(!_node.renderActive) continue; if(!_node.isRenderActive()) continue;
if(_node.active && _to.value_from != noone && _to.value_from.node == group && _node.isRenderable()) if(_node.active && _to.value_from != noone && _to.value_from.node == group && _node.isRenderable())
array_push(nodes, _to.node); array_push(nodes, _to.node);
@ -469,8 +469,8 @@ function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) construc
static attributeDeserialize = function(attr) { static attributeDeserialize = function(attr) {
if(struct_has(attr, "separator")) if(struct_has(attr, "separator"))
attributes.separator = json_parse(attr.separator); attributes.separator = json_parse(attr.separator);
attributes.w = attr.w; attributes.w = struct_try_get(attr, "w", 128);
attributes.h = attr.h; attributes.h = struct_try_get(attr, "h", 128);
} }
} }

View file

@ -28,7 +28,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
internalName = str + string(irandom_range(10000, 99999)); internalName = str + string(irandom_range(10000, 99999));
NODE_NAME_MAP[? internalName] = self; NODE_NAME_MAP[? internalName] = self;
display_name = __txt_node_name(instanceof(self)); display_name = __txt_node_name(instanceof(self), name);
}); });
} }
@ -399,10 +399,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static resetRender = function() { setRenderStatus(false); } static resetRender = function() { setRenderStatus(false); }
static isRenderActive = function() { return renderActive || (PREF_MAP[? "render_all_export"] && ANIMATOR.rendering); }
static isRenderable = function(log = false) { //Check if every input is ready (updated) static isRenderable = function(log = false) { //Check if every input is ready (updated)
if(!active) return false; if(!active) return false;
if(!renderActive) return false; if(!isRenderActive()) return false;
//if(group && struct_has(group, "iterationStatus") && group.iterationStatus() == ITERATION_STATUS.complete) return false; //if(group && struct_has(group, "iterationStatus") && group.iterationStatus() == ITERATION_STATUS.complete) return false;
@ -411,9 +412,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
if( _in.type == VALUE_TYPE.node) continue; if( _in.type == VALUE_TYPE.node) continue;
var val_from = _in.value_from; var val_from = _in.value_from;
if( val_from == noone) continue; if( val_from == noone) continue;
if(!val_from.node.active) continue; if(!val_from.node.active) continue;
if(!val_from.node.renderActive) continue; if(!val_from.node.isRenderActive()) continue;
if(!val_from.node.rendered && !val_from.node.update_on_frame) { if(!val_from.node.rendered && !val_from.node.update_on_frame) {
LOG_LINE_IF(global.FLAG.render, $"Node {internalName} is not renderable because input {val_from.node.internalName} is not rendered"); LOG_LINE_IF(global.FLAG.render, $"Node {internalName} is not renderable because input {val_from.node.internalName} is not rendered");
return false; return false;
@ -471,6 +472,16 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
return point_in_rectangle(_mx, _my, xx, yy, xx + w * _s, yy + h * _s); return point_in_rectangle(_mx, _my, xx, yy, xx + w * _s, yy + h * _s);
} }
draw_graph_culled = false;
static cullCheck = function(_x, _y, _s, minx, miny, maxx, maxy) {
var x0 = x * _s + _x;
var y0 = y * _s + _y;
var x1 = (x + w) * _s + _x;
var y1 = (y + h) * _s + _y;
draw_graph_culled = !rectangle_in_rectangle(minx, miny, maxx, maxy, x0, y0, x1, y1);
}
static preDraw = function(_x, _y, _s) { static preDraw = function(_x, _y, _s) {
var xx = x * _s + _x; var xx = x * _s + _x;
var yy = y * _s + _y; var yy = y * _s + _y;
@ -519,6 +530,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static drawNodeBase = function(xx, yy, _s) { static drawNodeBase = function(xx, yy, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
var aa = 0.25 + 0.5 * renderActive; var aa = 0.25 + 0.5 * renderActive;
draw_sprite_stretched_ext(bg_spr, 0, xx, yy, w * _s, h * _s, color, aa); draw_sprite_stretched_ext(bg_spr, 0, xx, yy, w * _s, h * _s, color, aa);
@ -534,6 +546,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static drawNodeName = function(xx, yy, _s) { static drawNodeName = function(xx, yy, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
draw_name = false; draw_name = false;
@ -599,6 +612,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static drawJunctionNames = function(_x, _y, _mx, _my, _s) { static drawJunctionNames = function(_x, _y, _mx, _my, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list); var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
var jun; var jun;
@ -646,7 +660,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
} }
static drawConnections = function(_x, _y, _s, mx, my, _active, aa = 1) { static drawConnections = function(_x, _y, _s, mx, my, _active, aa = 1, minx = undefined, miny = undefined, maxx = undefined, maxy = undefined) {
if(!active) return; if(!active) return;
var hovering = noone; var hovering = noone;
@ -668,10 +682,29 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
var st = 0; var st = 0;
if(hasInspector1Update()) st = -1; if(hasInspector1Update()) st = -1;
if(hasInspector2Update()) st = -2; if(hasInspector2Update()) st = -2;
var _inputs = [];
var drawLineIndex = 1; var drawLineIndex = 1;
for(var i = st; i < ds_list_size(inputs); i++) {
var jun;
if(i == -1) jun = inspectInput1;
else if(i == -2) jun = inspectInput2;
else jun = inputs[| i];
if(jun.value_from == noone) continue;
if(!jun.value_from.node.active) continue;
if(!jun.isVisible()) continue;
if(i >= 0)
array_push(_inputs, jun);
}
var len = array_length(_inputs);
for( var i = 0; i < len; i++ )
_inputs[i].drawLineIndex = 1 + (i > len / 2? (len - 1 - i) : i) * 0.5;
for(var i = st; i < ds_list_size(inputs); i++) { for(var i = st; i < ds_list_size(inputs); i++) {
var jun; var jun;
if(i == -1) jun = inspectInput1; if(i == -1) jun = inspectInput1;
@ -684,10 +717,17 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
if(jun.value_from == noone) continue; if(jun.value_from == noone) continue;
if(!jun.value_from.node.active) continue; if(!jun.value_from.node.active) continue;
if(!jun.isVisible()) continue; if(!jun.isVisible()) continue;
jun.drawLineIndex = drawLineIndex;
var frx = jun.value_from.x; var frx = jun.value_from.x;
var fry = jun.value_from.y; var fry = jun.value_from.y;
if(!is_undefined(minx)) {
if(jx < minx && frx < minx) continue;
if(jx > maxx && frx > maxx) continue;
if(jy < miny && fry < miny) continue;
if(jy > maxy && fry > maxy) continue;
}
var c0 = value_color(jun.value_from.type); var c0 = value_color(jun.value_from.type);
var c1 = value_color(jun.type); var c1 = value_color(jun.type);
@ -762,7 +802,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
cx *= aa; cx *= aa;
cy *= aa; cy *= aa;
corner *= aa; corner *= aa;
th = max(1, th); th = max(1, round(th));
switch(PREF_MAP[? "curve_connection_line"]) { switch(PREF_MAP[? "curve_connection_line"]) {
case 0 : case 0 :
@ -790,14 +830,13 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
draw_line_elbow_diag_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, jun.value_from.drawLineIndex, jun.drawLineIndex, ty); draw_line_elbow_diag_color(frx, fry, jx, jy, cx, cy, ss, th, c0, c1, corner, jun.value_from.drawLineIndex, jun.drawLineIndex, ty);
break; break;
} }
drawLineIndex += 0.5;
} }
return hovering; return hovering;
} }
static drawPreview = function(xx, yy, _s) { static drawPreview = function(xx, yy, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
var _node = outputs[| preview_channel]; var _node = outputs[| preview_channel];
@ -891,6 +930,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static drawDimension = function(xx, yy, _s) { static drawDimension = function(xx, yy, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
if(_s * w < 64) return; if(_s * w < 64) return;
@ -923,9 +963,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
} }
static drawNode = function(_x, _y, _mx, _my, _s) { static drawNode = function(_x, _y, _mx, _my, _s) {
if(draw_graph_culled) return;
if(!active) return; if(!active) return;
//if(group != PANEL_GRAPH.getCurrentContext()) return;
var xx = x * _s + _x; var xx = x * _s + _x;
var yy = y * _s + _y; var yy = y * _s + _y;
@ -1121,7 +1161,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
static clearCache = function() { static clearCache = function() {
if(!use_cache) return; if(!use_cache) return;
if(!renderActive) return; if(!isRenderActive()) return;
if(array_length(cached_output) != ANIMATOR.frames_total) if(array_length(cached_output) != ANIMATOR.frames_total)
array_resize(cached_output, ANIMATOR.frames_total); array_resize(cached_output, ANIMATOR.frames_total);
@ -1134,7 +1174,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
} }
} }
static clearCacheForward = function() { static clearCacheForward = function() {
if(!renderActive) return; if(!isRenderActive()) return;
clearCache(); clearCache();
for( var i = 0; i < ds_list_size(outputs); i++ ) for( var i = 0; i < ds_list_size(outputs); i++ )
@ -1358,7 +1398,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
if(struct_has(load_map, "outputs")) { if(struct_has(load_map, "outputs")) {
var _outputs = load_map.outputs; var _outputs = load_map.outputs;
for(var i = 0; i < ds_list_size(outputs); i++) { var amo = min(ds_list_size(outputs), array_length(_outputs));
for(var i = 0; i < amo; i++) {
if(outputs[| i] == noone) continue; if(outputs[| i] == noone) continue;
outputs[| i].applyDeserialize(_outputs[i], load_scale, preset); outputs[| i].applyDeserialize(_outputs[i], load_scale, preset);
} }

View file

@ -26,7 +26,7 @@ function Node_create_Display_Image_path(_x, _y, path) {
} }
function Node_Display_Image(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { function Node_Display_Image(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = ""; name = "Display Image";
auto_height = false; auto_height = false;
inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "") inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")

View file

@ -18,6 +18,23 @@ Animated WebP (.webp)|*.webp",
return node; return node;
} }
function exportAll() {
ANIMATOR.rendering = true;
Render();
ANIMATOR.rendering = false;
var key = ds_map_find_first(NODE_MAP);
repeat(ds_map_size(NODE_MAP)) {
var node = NODE_MAP[? key];
key = ds_map_find_next(NODE_MAP, key);
if(!node.active) continue;
if(instanceof(node) != "Node_Export") continue;
node.doInspectorAction();
}
}
enum NODE_EXPORT_FORMAT { enum NODE_EXPORT_FORMAT {
single, single,
sequence, sequence,
@ -412,25 +429,12 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
insp2UpdateTooltip = "Export All"; insp2UpdateTooltip = "Export All";
insp2UpdateIcon = [ THEME.play_all, 0, COLORS._main_value_positive ]; insp2UpdateIcon = [ THEME.play_all, 0, COLORS._main_value_positive ];
static onInspector1Update = function() { static onInspector1Update = function() {
if(isInLoop()) UPDATE |= RENDER_TYPE.full; if(isInLoop()) UPDATE |= RENDER_TYPE.full;
else doInspectorAction(); else doInspectorAction();
} }
static onInspector2Update = function() { static onInspector2Update = function() { exportAll(); }
var key = ds_map_find_first(NODE_MAP);
repeat(ds_map_size(NODE_MAP)) {
var node = NODE_MAP[? key];
key = ds_map_find_next(NODE_MAP, key);
if(!node.active) continue;
if(instanceof(node) != "Node_Export") continue;
node.doInspectorAction();
}
if(isInLoop()) UPDATE |= RENDER_TYPE.full;
}
static doInspectorAction = function() { static doInspectorAction = function() {
if(LOADING || APPENDING) return; if(LOADING || APPENDING) return;
@ -440,6 +444,10 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var form = inputs[| 3].getValue(); var form = inputs[| 3].getValue();
if(form == NODE_EXPORT_FORMAT.single) { if(form == NODE_EXPORT_FORMAT.single) {
ANIMATOR.rendering = true;
Render();
ANIMATOR.rendering = false;
export(); export();
return; return;
} }

View file

@ -24,7 +24,7 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group)
var allReady = true; var allReady = true;
for(var i = custom_input_index; i < ds_list_size(inputs); i++) { for(var i = custom_input_index; i < ds_list_size(inputs); i++) {
var _in = inputs[| i].from; var _in = inputs[| i].from;
if(!_in.renderActive) continue; if(!_in.isRenderActive()) continue;
allReady &= _in.isRenderable() allReady &= _in.isRenderable()
} }

View file

@ -31,7 +31,7 @@ function Node_Fluid_Repulse(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
var py = _y + _pos[1] * _s; var py = _y + _pos[1] * _s;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(px, py, _rad * _s, true); draw_circle_prec(px, py, _rad * _s, true);
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori); inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);

View file

@ -35,7 +35,7 @@ function Node_Fluid_Vortex(_x, _y, _group = noone) : Node_Fluid(_x, _y, _group)
var py = _y + _pos[1] * _s; var py = _y + _pos[1] * _s;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(px, py, _rad * _s, true); draw_circle_prec(px, py, _rad * _s, true);
inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori); inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny, 0, 1, THEME.anchor_scale_hori);

View file

@ -45,7 +45,7 @@ function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constr
var nodes = []; var nodes = [];
for(var j = 0; j < ds_list_size(outParent.value_to); j++) { for(var j = 0; j < ds_list_size(outParent.value_to); j++) {
var _to = outParent.value_to[| j]; var _to = outParent.value_to[| j];
if(!_to.node.renderActive) continue; if(!_to.node.isRenderActive()) continue;
//printIf(global.FLAG.render, "Value to " + _to.name); //printIf(global.FLAG.render, "Value to " + _to.name);
if(!_to.node.active || _to.value_from == noone) { if(!_to.node.active || _to.value_from == noone) {

View file

@ -11,6 +11,7 @@ function __generate_node_data() {
var dir = DIRECTORY + "Nodes/"; var dir = DIRECTORY + "Nodes/";
if(!directory_exists(dir)) directory_create(dir); if(!directory_exists(dir)) directory_create(dir);
var data = {}; var data = {};
var junc = {};
var locale = {}; var locale = {};
repeat(amo) { repeat(amo) {
@ -20,18 +21,23 @@ function __generate_node_data() {
if(_b.name == "") continue; if(_b.name == "") continue;
var _data = {}; var _data = variable_clone(_n, 1);
_data.node = _n.node;
var _junc = {};
_junc.node = _n.node;
var _loca = {}; var _loca = {};
_loca.name = _n.name; _loca.name = _n.name;
_loca.tooltip = _n.tooltip; _loca.tooltip = _n.tooltip;
var _din = [], _dot = []; var _jin = [], _jot = [];
var _lin = [], _lot = []; var _lin = [], _lot = [];
var _din = [], _dot = [];
for( var i = 0; i < ds_list_size(_b.inputs); i++ ) { for( var i = 0; i < ds_list_size(_b.inputs); i++ ) {
_din[i] = { _din[i] = variable_clone(_b.inputs[| i], 1);
_jin[i] = {
type: _b.inputs[| i].type, type: _b.inputs[| i].type,
visible: _b.inputs[| i].visible? 1 : 0, visible: _b.inputs[| i].visible? 1 : 0,
}; };
@ -43,7 +49,9 @@ function __generate_node_data() {
} }
for( var i = 0; i < ds_list_size(_b.outputs); i++ ) { for( var i = 0; i < ds_list_size(_b.outputs); i++ ) {
_dot[i] = { _dot[i] = variable_clone(_b.outputs[| i], 1);
_jot[i] = {
type: _b.outputs[| i].type, type: _b.outputs[| i].type,
visible: _b.outputs[| i].visible? 1 : 0, visible: _b.outputs[| i].visible? 1 : 0,
}; };
@ -54,17 +62,23 @@ function __generate_node_data() {
}; };
} }
_data.inputs = _din; _junc.inputs = _jin;
_data.outputs = _dot; _junc.outputs = _jot;
data[$ _n.name] = _data; junc[$ _n.name] = _junc;
_loca.inputs = _lin; _loca.inputs = _lin;
_loca.outputs = _lot; _loca.outputs = _lot;
locale[$ _n.node] = _loca; locale[$ _n.node] = _loca;
_data.inputs = _din;
_data.outputs = _dot;
data[$ _n.name] = _data;
} }
json_save_struct(dir + "nodes.json", data, false); json_save_struct(dir + "node_data.json", data, true);
json_save_struct(dir + "lnodes.json", locale, true); json_save_struct(dir + "node_junctions.json", junc, false);
json_save_struct(dir + "node_locale.json", locale, true);
shellOpenExplorer(dir);
CLONING = false; CLONING = false;
game_end(); game_end();

View file

@ -95,10 +95,10 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
} }
static lerpValue = function(from, to, _lrp) { static lerpValue = function(from, to, _lrp) {
if(prop.type == VALUE_TYPE.color) { var _f = from.value;
var _f = from.value; var _t = to.value;
var _t = to.value;
if(prop.type == VALUE_TYPE.color) {
if(is_array(_f)) { if(is_array(_f)) {
var amo = max(array_length(_f), array_length(_t)); var amo = max(array_length(_f), array_length(_t));
var res = array_create(amo); var res = array_create(amo);
@ -110,18 +110,18 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
return processType(merge_color(_f, _t, _lrp)); return processType(merge_color(_f, _t, _lrp));
} }
if(typeArray(prop.display_type) && is_array(from.value)) { if(is_array(_f)) {
var _vec = array_create(array_length(from.value)); var _vec = array_create(array_length(_f));
for(var i = 0; i < array_length(_vec); i++) for(var i = 0; i < array_length(_vec); i++)
_vec[i] = processType(lerp(from.value[i], to.value[i], _lrp)); _vec[i] = processType(lerp(_f[i], _t[i], _lrp));
return _vec; return _vec;
} }
if(prop.type == VALUE_TYPE.text) if(prop.type == VALUE_TYPE.text)
return processType(from.value); return processType(_f);
return processType(lerp(from.value, to.value, _lrp)); return processType(lerp(_f, _t, _lrp));
} }
static getName = function() { return prop.name + suffix; } static getName = function() { return prop.name + suffix; }

View file

@ -50,7 +50,6 @@ function Node_Logic(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
data_length = 1; data_length = 1;
function createNewInput() { function createNewInput() {
print("Create")
var index = ds_list_size(inputs); var index = ds_list_size(inputs);
var jname = chr(ord("a") + index - 1); var jname = chr(ord("a") + index - 1);

View file

@ -47,7 +47,7 @@ function Node_Path_Anchor(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
if(!_mir) if(!_mir)
active &= !inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny); active &= !inputs[| 2].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny);
else else
draw_circle(c2x, c2y, 4, false); draw_circle_prec(c2x, c2y, 4, false);
} }
function process_data(_output, _data, _output_index, _array_index = 0) { function process_data(_output, _data, _output_index, _array_index = 0) {

View file

@ -26,7 +26,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
return self; return self;
} }
static getName = function() { return __txt_node_name(node); } static getName = function() { return __txt_node_name(node, name); }
static getTooltip = function() { return __txt_node_tooltip(node, tooltip); } static getTooltip = function() { return __txt_node_tooltip(node, tooltip); }
function build(_x, _y, _group = PANEL_GRAPH.getCurrentContext(), _param = "") { function build(_x, _y, _group = PANEL_GRAPH.getCurrentContext(), _param = "") {
@ -261,6 +261,9 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
addNodeObject(transform, "Nine Slice", s_node_9patch, "Node_9Slice", [1, Node_9Slice], ["9 slice", "splice"], "Cut image into 3x3 parts, and scale/repeat only the middle part."); addNodeObject(transform, "Nine Slice", s_node_9patch, "Node_9Slice", [1, Node_9Slice], ["9 slice", "splice"], "Cut image into 3x3 parts, and scale/repeat only the middle part.");
addNodeObject(transform, "Padding", s_node_padding, "Node_Padding", [1, Node_Padding],, "Make image bigger by adding space in 4 directions."); addNodeObject(transform, "Padding", s_node_padding, "Node_Padding", [1, Node_Padding],, "Make image bigger by adding space in 4 directions.");
//ds_list_add(transform, "Armature");
//addNodeObject(transform, "Armature Create", s_node_compose, "Node_Armature", [1, Node_Armature], ["rigging", "bone"], "");
var filter = ds_list_create(); var filter = ds_list_create();
addNodeCatagory("Filter", filter); addNodeCatagory("Filter", filter);
ds_list_add(filter, "Combines"); ds_list_add(filter, "Combines");
@ -343,7 +346,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
addNodeObject(threeD, "Sprite Stack", s_node_stack, "Node_Sprite_Stack", [1, Node_Sprite_Stack],, "Create sprite stack either from repeating a single image or stacking different images using array."); addNodeObject(threeD, "Sprite Stack", s_node_stack, "Node_Sprite_Stack", [1, Node_Sprite_Stack],, "Create sprite stack either from repeating a single image or stacking different images using array.");
ds_list_add(threeD, "3D generates"); ds_list_add(threeD, "3D generates");
addNodeObject(threeD, "3D Object", s_node_3d_obj, "Node_3D_Obj", [1, Node_3D_Obj],, "Load .obj file from your computer as a 3D object."); addNodeObject(threeD, "3D Object", s_node_3d_obj, "Node_3D_Obj", [0, Node_create_3D_Obj],, "Load .obj file from your computer as a 3D object.");
addNodeObject(threeD, "3D Plane", s_node_3d_plane, "Node_3D_Plane", [1, Node_3D_Plane],, "Put 2D image on a plane in 3D space."); addNodeObject(threeD, "3D Plane", s_node_3d_plane, "Node_3D_Plane", [1, Node_3D_Plane],, "Put 2D image on a plane in 3D space.");
addNodeObject(threeD, "3D Cube", s_node_3d_cube, "Node_3D_Cube", [1, Node_3D_Cube]); addNodeObject(threeD, "3D Cube", s_node_3d_cube, "Node_3D_Cube", [1, Node_3D_Cube]);
addNodeObject(threeD, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Cylinder", [1, Node_3D_Cylinder]); addNodeObject(threeD, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Cylinder", [1, Node_3D_Cylinder]);
@ -760,7 +763,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
} }
function attribute_surface_depth(label = true) { function attribute_surface_depth(label = true) {
depth_array = inputs[| 0].type == VALUE_TYPE.surface? global.SURFACE_FORMAT_NAME_PROCESS : global.SURFACE_FORMAT_NAME; 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"); attributes.color_depth = array_find(depth_array, "8 bit RGBA");
if(label) array_push(attributeEditors, "Surface"); if(label) array_push(attributeEditors, "Surface");

View file

@ -68,7 +68,7 @@ function Node_Rigid_Force_Apply(_x, _y, _group = noone) : Node(_x, _y, _group) c
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_set_alpha(0.5); draw_set_alpha(0.5);
draw_circle(px, py, _rad * _s, 1); draw_circle_prec(px, py, _rad * _s, 1);
draw_set_alpha(1); draw_set_alpha(1);
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);

View file

@ -194,7 +194,7 @@ function Node_Rigid_Object(_x, _y, _group = noone) : Node(_x, _y, _group) constr
//draw_text(_dx, _dy - 8, i); //draw_text(_dx, _dy - 8, i);
if(isNotUsingTool()) if(isNotUsingTool())
draw_circle(_dx, _dy, 4, false) draw_circle_prec(_dx, _dy, 4, false)
else { else {
draw_sprite_colored(THEME.anchor_selector, hover == i, _dx, _dy); draw_sprite_colored(THEME.anchor_selector, hover == i, _dx, _dy);
if(point_distance(_mx, _my, _dx, _dy) < 8) if(point_distance(_mx, _my, _dx, _dy) < 8)

View file

@ -327,7 +327,7 @@ function Node_Strand_Create(_x, _y, _group = noone) : Node(_x, _y, _group) const
var fall = tool_push.attribute.fall; var fall = tool_push.attribute.fall;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_mx, _my, rad * _s, true); draw_circle_prec(_mx, _my, rad * _s, true);
draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true);
draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true);
@ -378,7 +378,7 @@ function Node_Strand_Create(_x, _y, _group = noone) : Node(_x, _y, _group) const
var fall = isUsingTool(2)? tool_stretch.attribute.fall : tool_cut.attribute.fall; var fall = isUsingTool(2)? tool_stretch.attribute.fall : tool_cut.attribute.fall;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_mx, _my, rad * _s, true); draw_circle_prec(_mx, _my, rad * _s, true);
draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true);
draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true);
@ -392,7 +392,7 @@ function Node_Strand_Create(_x, _y, _group = noone) : Node(_x, _y, _group) const
var fall = tool_grab.attribute.fall; var fall = tool_grab.attribute.fall;
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_mx, _my, rad * _s, true); draw_circle_prec(_mx, _my, rad * _s, true);
draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 - fall), true);
draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true); draw_circle_dash(_mx, _my, rad * _s * (1 + fall), true);

View file

@ -43,5 +43,10 @@ function NodeTool(name, spr) constructor {
} else } else
PANEL_PREVIEW.tool_current = self; PANEL_PREVIEW.tool_current = self;
} }
if(PANEL_PREVIEW.tool_current == self)
onToggle();
} }
static onToggle = function() {}
} }

View file

@ -489,7 +489,7 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
ny = _y + _pos[1] * _s; ny = _y + _pos[1] * _s;
draw_set_alpha(1); draw_set_alpha(1);
draw_circle(nx, ny, 4, false); draw_circle_prec(nx, ny, 4, false);
if(i) { if(i) {
draw_set_alpha(0.5); draw_set_alpha(0.5);
draw_line_dashed(ox, oy, nx, ny); draw_line_dashed(ox, oy, nx, ny);

View file

@ -90,14 +90,14 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
var amo = ds_map_size(TUNNELS_IN_MAP); var amo = ds_map_size(TUNNELS_IN_MAP);
var k = ds_map_find_first(TUNNELS_IN_MAP); var k = ds_map_find_first(TUNNELS_IN_MAP);
repeat(amo) { repeat(amo) {
if(ds_map_exists(NODE_MAP, k)) if(ds_map_exists(NODE_MAP, k) && struct_has(NODE_MAP[? k], "resetMap"))
NODE_MAP[? k].resetMap(); NODE_MAP[? k].resetMap();
k = ds_map_find_next(TUNNELS_IN_MAP, k); k = ds_map_find_next(TUNNELS_IN_MAP, k);
} }
var k = ds_map_find_first(TUNNELS_IN_MAP); var k = ds_map_find_first(TUNNELS_IN_MAP);
repeat(amo) { repeat(amo) {
if(ds_map_exists(NODE_MAP, k)) if(ds_map_exists(NODE_MAP, k) && struct_has(NODE_MAP[? k], "checkDuplicate"))
NODE_MAP[? k].checkDuplicate(); NODE_MAP[? k].checkDuplicate();
k = ds_map_find_next(TUNNELS_IN_MAP, k); k = ds_map_find_next(TUNNELS_IN_MAP, k);
} }

View file

@ -393,7 +393,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
draw_line_shift_x = 0; draw_line_shift_x = 0;
draw_line_shift_y = 0; draw_line_shift_y = 0;
draw_line_thick = new Tween(1,,, 1.5); draw_line_thick = 1;
draw_line_shift_hover = false; draw_line_shift_hover = false;
drawLineIndex = 1; drawLineIndex = 1;
@ -425,8 +425,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
express_edit = new textArea(TEXTBOX_INPUT.text, function(str) { express_edit = new textArea(TEXTBOX_INPUT.text, function(str) {
expression = str; expression = str;
expTree = evaluateFunctionTree(expression); expressionUpdate();
node.triggerRender();
}); });
express_edit.boxColor = COLORS._main_value_positive; express_edit.boxColor = COLORS._main_value_positive;
express_edit.align = fa_left; express_edit.align = fa_left;
@ -849,6 +848,11 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} }
resetDisplay(); resetDisplay();
static expressionUpdate = function() {
expTree = evaluateFunctionTree(expression);
node.triggerRender();
}
static onValidate = function() { static onValidate = function() {
if(!validateValue) return; if(!validateValue) return;
var _val = value_validation, str = ""; var _val = value_validation, str = "";
@ -927,7 +931,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} }
if(display_type == VALUE_DISPLAY.area) { if(display_type == VALUE_DISPLAY.area) {
var dispType = nodeFrom.extra_data[0]; var dispType = array_safe_get(nodeFrom.extra_data, 0, AREA_MODE.area);
var surfGet = nodeFrom.display_data; var surfGet = nodeFrom.display_data;
if(!applyUnit || surfGet == -1) return value; if(!applyUnit || surfGet == -1) return value;
@ -1216,7 +1220,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
cache_array[0] = false; cache_array[0] = false;
cache_value[0] = false; cache_value[0] = false;
if(!LOADING) MODIFIED = true; if(!LOADING) {
//print("setValueDirect");
MODIFIED = true;
}
} }
onValidate(); onValidate();
@ -1657,8 +1664,9 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
animator.deserialize(struct_try_get(_map, "raw_value"), scale); animator.deserialize(struct_try_get(_map, "raw_value"), scale);
if(struct_has(_map, "animators")) { if(struct_has(_map, "animators")) {
var anims = _map.animators; var anims = _map.animators;
for( var i = 0; i < array_length(anims); i++ ) var amo = min(array_length(anims), array_length(animators));
for( var i = 0; i < amo; i++ )
animators[i].deserialize(anims[i], scale); animators[i].deserialize(anims[i], scale);
} }

View file

@ -66,7 +66,7 @@ function Node_WAV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
first_update = false; first_update = false;
output_display_list = [ 0, 2, 3, 4, 1, 5 ]; output_display_list = [ 0, 1, 2, 3, 4, 5 ];
audio_surface = -1; audio_surface = -1;
preview_audio = -1; preview_audio = -1;

View file

@ -45,10 +45,10 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
} }
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
var ran = current_data[0]; var ran = array_safe_get(current_data, 0);
var fre = current_data[1]; var fre = array_safe_get(current_data, 1);
var sed = current_data[2]; var sed = array_safe_get(current_data, 2);
var disp = current_data[3]; var disp = array_safe_get(current_data, 3);
var time = ANIMATOR.current_frame; var time = ANIMATOR.current_frame;
var total_time = ANIMATOR.frames_total; var total_time = ANIMATOR.frames_total;

View file

@ -122,7 +122,7 @@ function Node_Mesh_Warp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
var rad = 16; var rad = 16;
draw_circle(_mx, _my, rad, true); draw_circle_prec(_mx, _my, rad, true);
var _xx = (_mx - _x) / _s; var _xx = (_mx - _x) / _s;
var _yy = (_my - _y) / _s; var _yy = (_my - _y) / _s;
@ -168,10 +168,10 @@ function Node_Mesh_Warp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
static draw = function(_x, _y, _s) { static draw = function(_x, _y, _s) {
if(pin) { if(pin) {
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_x + x * _s, _y + y * _s, 3, false); draw_circle_prec(_x + x * _s, _y + y * _s, 3, false);
} else { } else {
draw_set_color(COLORS.node_overlay_gizmo_inactive); draw_set_color(COLORS.node_overlay_gizmo_inactive);
draw_circle(_x + x * _s, _y + y * _s, 2, false); draw_circle_prec(_x + x * _s, _y + y * _s, 2, false);
} }
} }
@ -292,7 +292,10 @@ function Node_Mesh_Warp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
var ww = useArray? surface_get_width(surf[0]) : surface_get_width(surf); var ww = useArray? surface_get_width(surf[0]) : surface_get_width(surf);
var hh = useArray? surface_get_height(surf[0]) : surface_get_height(surf); var hh = useArray? surface_get_height(surf[0]) : surface_get_height(surf);
var fullmh = inputs[| 7].getValue() || useArray; var fullmh = inputs[| 7].getValue();
if(is_array(fullmh)) fullmh = false;
fullmh |= useArray;
var gw = ww / sample; var gw = ww / sample;
var gh = hh / sample; var gh = hh / sample;
var cont = noone; var cont = noone;
@ -519,13 +522,13 @@ function Node_Mesh_Warp(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
static postConnect = function() { static postConnect = function() {
setTriangle(); setTriangle();
if(loadPin != noone) { if(loadPin == noone) return;
for( var i = 0; i < ds_list_size(loadPin); i++ ) {
var ind = loadPin[| i]; for( var i = 0; i < array_length(loadPin); i++ ) {
if(ind < array_length(points)) var ind = loadPin[i];
points[ind].pin = true; if(ind < array_length(points))
} points[ind].pin = true;
loadPin = noone;
} }
loadPin = noone;
} }
} }

View file

@ -421,7 +421,7 @@ function Panel_Animation() : PanelContent() constructor {
draw_line(bar_line_x, ui(12), bar_line_x, bar_h - PANEL_PAD); draw_line(bar_line_x, ui(12), bar_line_x, bar_h - PANEL_PAD);
draw_set_text(f_p2, fa_center, fa_bottom, COLORS._main_text_sub); draw_set_text(f_p2, fa_center, fa_bottom, COLORS._main_text_sub);
draw_text(bar_line_x, ui(16), string(i)); draw_text_add(bar_line_x, ui(16), string(i));
} }
var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift; var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift;
@ -430,7 +430,7 @@ function Panel_Animation() : PanelContent() constructor {
draw_line(bar_line_x, ui(12), bar_line_x, bar_h - PANEL_PAD); draw_line(bar_line_x, ui(12), bar_line_x, bar_h - PANEL_PAD);
draw_set_text(f_p2, fa_center, fa_bottom, cc); draw_set_text(f_p2, fa_center, fa_bottom, cc);
draw_text(bar_line_x, ui(16), string(ANIMATOR.current_frame + 1)); draw_text_add(bar_line_x, ui(16), string(ANIMATOR.current_frame + 1));
#endregion #endregion
#region cache #region cache
@ -883,7 +883,7 @@ function Panel_Animation() : PanelContent() constructor {
draw_set_color(cc); draw_set_color(cc);
draw_set_alpha(aa); draw_set_alpha(aa);
draw_text(ui(32), ty - 2, animator.getName()); draw_text_add(ui(32), ty - 2, animator.getName());
draw_set_alpha(1); draw_set_alpha(1);
} }
@ -1522,7 +1522,7 @@ function Panel_Animation() : PanelContent() constructor {
for(var i = timeline_separate; i <= ANIMATOR.frames_total; i += timeline_separate) { for(var i = timeline_separate; i <= ANIMATOR.frames_total; i += timeline_separate) {
var bar_line_x = i * ui(timeline_scale) + timeline_shift; var bar_line_x = i * ui(timeline_scale) + timeline_shift;
draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_sub); draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_sub);
draw_text(bar_line_x - ui(2), PANEL_PAD, string(i)); draw_text_add(bar_line_x - ui(2), PANEL_PAD, string(i));
} }
var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift; var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift;
@ -1537,7 +1537,7 @@ function Panel_Animation() : PanelContent() constructor {
draw_rectangle(bar_line_x - tx, PANEL_PAD, bar_line_x, hh, false); draw_rectangle(bar_line_x - tx, PANEL_PAD, bar_line_x, hh, false);
draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_on_accent); draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_on_accent);
draw_text(bar_line_x - ui(2), PANEL_PAD, cf); draw_text_add(bar_line_x - ui(2), PANEL_PAD, cf);
#endregion #endregion
gpu_set_blendmode(bm_subtract); gpu_set_blendmode(bm_subtract);
@ -1616,15 +1616,15 @@ function Panel_Animation() : PanelContent() constructor {
if(y1 - y0 < ui(40)) { if(y1 - y0 < ui(40)) {
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub);
draw_text(ui(16), cy, __txt("Frame")); draw_text_add(ui(16), cy, __txt("Frame"));
draw_set_text(f_p1, fa_right, fa_center, ANIMATOR.is_playing? COLORS._main_accent : COLORS._main_text_sub); draw_set_text(f_p1, fa_right, fa_center, ANIMATOR.is_playing? COLORS._main_accent : COLORS._main_text_sub);
draw_text(w - ui(16), cy, txt); draw_text_add(w - ui(16), cy, txt);
} else { } else {
draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub);
draw_text(w / 2, cy - ui(12), __txt("Frame")); draw_text_add(w / 2, cy - ui(12), __txt("Frame"));
draw_set_text(f_h5, fa_center, fa_center, ANIMATOR.is_playing? COLORS._main_accent : COLORS._main_text_sub); draw_set_text(f_h5, fa_center, fa_center, ANIMATOR.is_playing? COLORS._main_accent : COLORS._main_text_sub);
draw_text(w / 2, cy + ui(6), txt); draw_text_add(w / 2, cy + ui(6), txt);
} }
return; return;
} }

View file

@ -229,7 +229,7 @@ function Panel_Collection() : PanelContent() constructor {
if(meta.version != SAVEFILE_VERSION) { if(meta.version != SAVEFILE_VERSION) {
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_boxx + grid_size - ui(8), yy + grid_size - ui(8), 3, false); draw_circle_prec(_boxx + grid_size - ui(8), yy + grid_size - ui(8), 3, false);
} }
} }

View file

@ -313,7 +313,7 @@
if(!ds_list_empty(panel.childs)) { if(!ds_list_empty(panel.childs)) {
for( var i = 0; i < ds_list_size(panel.childs); i++ ) for( var i = 0; i < ds_list_size(panel.childs); i++ )
cont[i] = _panelSerializeArray(panel.childs[| i]); cont[i] = _panelSerializeArray(panel.childs[| i] );
} else { } else {
for( var i = 0; i < array_length(panel.content); i++ ) for( var i = 0; i < array_length(panel.content); i++ )
cont[i] = instanceof(panel.content[i]); cont[i] = instanceof(panel.content[i]);
@ -338,9 +338,9 @@
if(!is_struct(panel)) return; if(!is_struct(panel)) return;
if(instanceof(panel) != "Panel") return; if(instanceof(panel) != "Panel") return;
if(array_length(panel.content) == 0) return; if(array_length(panel.content) == 0) return;
if(!panel.content.expandable) return; if(!panel.getContent().expandable) return;
PANEL_MAIN.childs[| 1].setContent(panel.content); PANEL_MAIN.childs[| 1].setContent(panel.getContent());
FULL_SCREEN_CONTENT = panel; FULL_SCREEN_CONTENT = panel;
} }
#endregion #endregion

View file

@ -391,10 +391,13 @@ function Panel_Graph() : PanelContent() constructor {
var gr_x = graph_x * graph_s; var gr_x = graph_x * graph_s;
var gr_y = graph_y * graph_s; var gr_y = graph_y * graph_s;
//var t = current_time; var log = false;
for(var i = 0; i < ds_list_size(nodes_list); i++) var t = current_time;
nodes_list[| i].preDraw(gr_x, gr_y, graph_s); for(var i = 0; i < ds_list_size(nodes_list); i++) {
//print("Predraw time: " + string(current_time - t)); t = current_time; nodes_list[| i].cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64);
nodes_list[| i].preDraw(gr_x, gr_y, graph_s, gr_x, gr_y);
}
printIf(log, "Predraw time: " + string(current_time - t)); t = current_time;
#region draw frame #region draw frame
for(var i = 0; i < ds_list_size(nodes_list); i++) { for(var i = 0; i < ds_list_size(nodes_list); i++) {
@ -402,7 +405,7 @@ function Panel_Graph() : PanelContent() constructor {
nodes_list[| i].drawNode(gr_x, gr_y, mx, my, graph_s); nodes_list[| i].drawNode(gr_x, gr_y, mx, my, graph_s);
} }
#endregion #endregion
//print("Frame draw time: " + string(current_time - t)); t = current_time; printIf(log, "Frame draw time: " + string(current_time - t)); t = current_time;
#region hover #region hover
node_hovering = noone; node_hovering = noone;
@ -425,10 +428,16 @@ function Panel_Graph() : PanelContent() constructor {
if(node_hovering) node_hovering.onDrawHover(gr_x, gr_y, mx, my, graph_s); if(node_hovering) node_hovering.onDrawHover(gr_x, gr_y, mx, my, graph_s);
#endregion #endregion
//print("Hover time: " + string(current_time - t)); t = current_time; printIf(log, "Hover time: " + string(current_time - t)); t = current_time;
if(mouse_on_graph && pFOCUS) { if(mouse_on_graph && pHOVER) {
if(mouse_press(mb_left) && !key_mod_press(ALT)) { if(NODE_DROPPER_TARGET != noone && node_hovering) {
node_hovering.draw_droppable = true;
if(mouse_press(mb_left, NODE_DROPPER_TARGET_CAN)) {
NODE_DROPPER_TARGET.expression += node_hovering.internalName;
NODE_DROPPER_TARGET.expressionUpdate();
}
} else if(mouse_press(mb_left, pFOCUS) && !key_mod_press(ALT)) {
if(key_mod_press(SHIFT)) { if(key_mod_press(SHIFT)) {
if(ds_list_empty(nodes_select_list) && node_focus) if(ds_list_empty(nodes_select_list) && node_focus)
ds_list_add(nodes_select_list, node_focus); ds_list_add(nodes_select_list, node_focus);
@ -485,7 +494,7 @@ function Panel_Graph() : PanelContent() constructor {
} }
} }
if(mouse_press(mb_right)) { if(mouse_press(mb_right, pFOCUS)) {
node_hover = node_hovering; node_hover = node_hovering;
if(node_hover) { if(node_hover) {
var menu = []; var menu = [];
@ -646,7 +655,7 @@ function Panel_Graph() : PanelContent() constructor {
} }
} }
} }
//print("Node selection time: " + string(current_time - t)); t = current_time; printIf(log, "Node selection time: " + string(current_time - t)); t = current_time;
if(node_focus) if(node_focus)
node_focus.drawActive(gr_x, gr_y, graph_s); node_focus.drawActive(gr_x, gr_y, graph_s);
@ -656,7 +665,7 @@ function Panel_Graph() : PanelContent() constructor {
if(!_node) continue; if(!_node) continue;
_node.drawActive(gr_x, gr_y, graph_s); _node.drawActive(gr_x, gr_y, graph_s);
} }
//print("Draw active: " + string(current_time - t)); t = current_time; printIf(log, "Draw active: " + string(current_time - t)); t = current_time;
var aa = PREF_MAP[? "connection_line_aa"]; var aa = PREF_MAP[? "connection_line_aa"];
connection_surface = surface_verify(connection_surface, w * aa, h * aa); connection_surface = surface_verify(connection_surface, w * aa, h * aa);
@ -666,10 +675,11 @@ function Panel_Graph() : PanelContent() constructor {
var hov = noone; var hov = noone;
var hoverable = !bool(node_dragging) && pHOVER; var hoverable = !bool(node_dragging) && pHOVER;
for(var i = 0; i < ds_list_size(nodes_list); i++) { for(var i = 0; i < ds_list_size(nodes_list); i++) {
var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, graph_s, mx, my, hoverable, aa); var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, graph_s, mx, my, hoverable, aa, -64, -64, w + 64, h + 64);
if(_hov != noone && is_struct(_hov)) hov = _hov; if(_hov != noone && is_struct(_hov)) hov = _hov;
} }
//print("Draw connection: " + string(current_time - t)); t = current_time; printIf(log, "Draw connection: " + string(current_time - t)); t = current_time;
surface_reset_target(); surface_reset_target();
shader_set(sh_downsample); shader_set(sh_downsample);
shader_set_f("down", aa); shader_set_f("down", aa);
@ -681,7 +691,7 @@ function Panel_Graph() : PanelContent() constructor {
value_focus = noone; value_focus = noone;
#region draw node #region draw node
//var t = current_time; var t = current_time;
for(var i = 0; i < ds_list_size(nodes_list); i++) for(var i = 0; i < ds_list_size(nodes_list); i++)
nodes_list[| i].onDrawNodeBehind(gr_x, gr_y, mx, my, graph_s); nodes_list[| i].onDrawNodeBehind(gr_x, gr_y, mx, my, graph_s);
@ -706,7 +716,8 @@ function Panel_Graph() : PanelContent() constructor {
for(var i = 0; i < ds_list_size(nodes_list); i++) for(var i = 0; i < ds_list_size(nodes_list); i++)
nodes_list[| i].drawBadge(gr_x, gr_y, graph_s); nodes_list[| i].drawBadge(gr_x, gr_y, graph_s);
//print("Draw node: " + string(current_time - t)); t = current_time;
printIf(log, "Draw node: " + string(current_time - t)); t = current_time;
#endregion #endregion
#region dragging #region dragging
@ -811,7 +822,7 @@ function Panel_Graph() : PanelContent() constructor {
} }
} }
} }
//print("Drag node time : " + string(current_time - t)); t = current_time; printIf(log, "Drag node time : " + string(current_time - t)); t = current_time;
if(mouse_release(mb_left)) if(mouse_release(mb_left))
node_dragging = noone; node_dragging = noone;
@ -899,7 +910,7 @@ function Panel_Graph() : PanelContent() constructor {
} }
#endregion #endregion
//print("Draw selection frame : " + string(current_time - t)); t = current_time; printIf(log, "Draw selection frame : " + string(current_time - t)); t = current_time;
} }
function doDuplicate() { function doDuplicate() {

View file

@ -23,6 +23,7 @@ function graph_export_image(allList, nodeList, settings = {}) {
for( var i = 0; i < ds_list_size(nodeList); i++ ) { for( var i = 0; i < ds_list_size(nodeList); i++ ) {
var _node = nodeList[| i]; var _node = nodeList[| i];
_node.draw_graph_culled = false;
var _x = _node.x * scale; var _x = _node.x * scale;
var _y = _node.y * scale; var _y = _node.y * scale;

View file

@ -139,7 +139,7 @@ function Panel_Inspector() : PanelContent() constructor {
draw_sprite_ui(THEME.arrow, meta_display[i][1]? 0 : 3, ui(16), yy + ui(32) / 2, 1, 1, 0, COLORS.panel_inspector_group_bg, 1); draw_sprite_ui(THEME.arrow, meta_display[i][1]? 0 : 3, ui(16), yy + ui(32) / 2, 1, 1, 0, COLORS.panel_inspector_group_bg, 1);
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_inner); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_inner);
draw_text(ui(32), yy + ui(32) / 2, _txt); draw_text_add(ui(32), yy + ui(32) / 2, _txt);
yy += ui(32 + 8); yy += ui(32 + 8);
hh += ui(32 + 8); hh += ui(32 + 8);
@ -211,7 +211,7 @@ function Panel_Inspector() : PanelContent() constructor {
var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2; var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2;
var byc = by + bh / 2; var byc = by + bh / 2;
draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr); draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr);
draw_text(bxc + ui(48), byc, txt); draw_text_add(bxc + ui(48), byc, txt);
bx += bw + ui(4); bx += bw + ui(4);
@ -225,7 +225,7 @@ function Panel_Inspector() : PanelContent() constructor {
var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2; var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2;
var byc = by + bh / 2; var byc = by + bh / 2;
draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr); draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr);
draw_text(bxc + ui(48), byc, txt); draw_text_add(bxc + ui(48), byc, txt);
} else { } else {
var bw = bbw; var bw = bbw;
@ -240,7 +240,7 @@ function Panel_Inspector() : PanelContent() constructor {
var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2; var bxc = bx + bw / 2 - (string_width(txt) + ui(48)) / 2;
var byc = by + bh / 2; var byc = by + bh / 2;
draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr); draw_sprite_ui(icon, 0, bxc + ui(24), byc,,,, colr);
draw_text(bxc + ui(48), byc, txt); draw_text_add(bxc + ui(48), byc, txt);
} }
yy += bh + ui(16); yy += bh + ui(16);
@ -367,7 +367,7 @@ function Panel_Inspector() : PanelContent() constructor {
} }
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_text(ui(32), yy + ui(32) / 2, txt); draw_text_add(ui(32), yy + ui(32) / 2, txt);
hh += ui(32 + 8); hh += ui(32 + 8);
@ -400,7 +400,7 @@ function Panel_Inspector() : PanelContent() constructor {
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(8), con_w, ui(32), COLORS.panel_inspector_output_label, 0.85); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(8), con_w, ui(32), COLORS.panel_inspector_output_label, 0.85);
draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub);
draw_text(xc, yy + ui(8 + 16), __txt("Outputs")); draw_text_add(xc, yy + ui(8 + 16), __txt("Outputs"));
continue; continue;
} else { } else {
var outInd = i - amoIn - 1; var outInd = i - amoIn - 1;
@ -443,10 +443,18 @@ function Panel_Inspector() : PanelContent() constructor {
} }
} }
if(_hover && point_in_rectangle(_m[0], _m[1], 4, _selY, contentPane.surface_w - ui(4), _selY + _selH)) { if(_hover && point_in_rectangle(_m[0], _m[1], ui(4), _selY, contentPane.surface_w - ui(4), _selY + _selH)) {
_HOVERING_ELEMENT = jun; _HOVERING_ELEMENT = jun;
draw_sprite_stretched_ext(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1); if(NODE_DROPPER_TARGET != noone && NODE_DROPPER_TARGET != jun) {
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, ui(4), _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_value_positive, 1);
if(mouse_press(mb_left, NODE_DROPPER_TARGET_CAN)) {
NODE_DROPPER_TARGET.expression += $"{jun.node.internalName}.{jun.connect_type == JUNCTION_CONNECT.input? "inputs" : "outputs"}.{jun.internalName}";
NODE_DROPPER_TARGET.expressionUpdate();
}
} else
draw_sprite_stretched_ext(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1);
if(anim_toggling) { if(anim_toggling) {
jun.setAnim(!jun.is_anim); jun.setAnim(!jun.is_anim);
PANEL_ANIMATION.updatePropertyList(); PANEL_ANIMATION.updatePropertyList();
@ -540,7 +548,7 @@ function Panel_Inspector() : PanelContent() constructor {
tb_node_name.draw(ui(64), ui(14), w - ui(128), ui(32), txt, [mx, my], VALUE_DISPLAY.node_title); tb_node_name.draw(ui(64), ui(14), w - ui(128), ui(32), txt, [mx, my], VALUE_DISPLAY.node_title);
draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p1, fa_center, fa_center, COLORS._main_text_sub);
draw_text(w / 2 + ui(8), ui(56), inspecting.name); draw_text_add(w / 2 + ui(8), ui(56), inspecting.name);
draw_set_text(f_p3, fa_center, fa_center, COLORS._main_text_sub); draw_set_text(f_p3, fa_center, fa_center, COLORS._main_text_sub);
draw_set_alpha(0.65); draw_set_alpha(0.65);

View file

@ -147,6 +147,9 @@ function Panel_Menu() : PanelContent() constructor {
node.doInspectorAction(); node.doInspectorAction();
} }
}), }),
menuItem(__txtx("panel_menu_export_render_all", "Render disabled node when export"),
function() { PREF_MAP[? "render_all_export"] = !PREF_MAP[? "render_all_export"]; },,,
function() { return PREF_MAP[? "render_all_export"]; } ),
]], ]],
[ __txt("Panels"), [ [ __txt("Panels"), [
menuItem(__txt("Workspace"), function(_dat) { menuItem(__txt("Workspace"), function(_dat) {
@ -212,6 +215,9 @@ function Panel_Menu() : PanelContent() constructor {
menuItem(__txtx("panel_debug_console", "Debug console"), function() { menuItem(__txtx("panel_debug_console", "Debug console"), function() {
panelAdd("Panel_Console", true) panelAdd("Panel_Console", true)
}), }),
menuItem(__txtx("panel_menu_tester", "Tester"), function() {
var dia = dialogPanelCall(new Panel_Test());
}),
-1, -1,
menuItem(__txtx("panel_menu_test_load_all", "Load all current collections"), function() { menuItem(__txtx("panel_menu_test_load_all", "Load all current collections"), function() {
@ -231,7 +237,8 @@ function Panel_Menu() : PanelContent() constructor {
__test_load_all_nodes(); __test_load_all_nodes();
}), }),
menuItem(__txtx("panel_menu_test_gen_guide", "Generate node guide"), function() { menuItem(__txtx("panel_menu_test_gen_guide", "Generate node guide"), function() {
__generate_node_data(); var dia = dialogPanelCall(new Panel_Node_Data_Gen());
dia.destroy_on_click_out = false;
}), }),
-1, -1,
menuItem(__txtx("panel_menu_test_crash", "Force crash"), function() { menuItem(__txtx("panel_menu_test_crash", "Force crash"), function() {

View file

@ -0,0 +1,140 @@
var _filter = ["x", "y", "updated", "rendered", "show_output_name", "insp2UpdateIcon", "preview_trans", "value_validation", "group", "draw_padding", "draw_droppable",
"preview_drop_y", "badgeInspect", "preview_mx", "temp_surface", "load_scale", "node_id", "show_input_name", "graph_h", "display_data", "drawLineIndex", "draw_line_shift_x",
"draw_line_shift_y", "cache_array", "drag_mx", "drag_my", "expTree", "value_to", "draw_line_thick", "expUse", "expression", "drag_sx", "drag_sy", "drag_type", "con_node",
"cache_value", "show_graph", "preview_x", "preview_y", "badgePreview", "data_list", "open_rx", "open_ry", "parent", "active", "cached_output", "current_data", "cache_result",
"draw_graph_culled", "dopesheet_y", "render_time", "renderActive", "preview_speed", "preview_drop_x", "preview_drop_y", "inspecting", "value_to_arr", "draw_name" ];
global.node_data_filter = ds_map_create();
for( var i = 0; i < array_length(_filter); i++ )
global.node_data_filter[? _filter[i]] = 1;
function __node_data_clone(struct) {
var _var = variable_struct_get_names(struct);
var _str = {};
for( var i = 0; i < array_length(_var); i++ ) {
if(ds_map_exists(global.node_data_filter, _var[i])) continue;
var val = struct[$ _var[i]];
if(is_struct(val)) continue;
if(is_array(val)) {
for( var j = 0; j < array_length(val); j++ ) {
if(is_struct(val[j]))
val[j] = __node_data_clone(val[j]);
}
}
_str[$ _var[i]] = val;
}
return _str;
}
function Panel_Node_Data_Gen() : PanelContent() constructor {
w = ui(640);
h = ui(64);
title = "Dump node data";
amo = ds_map_size(ALL_NODES);
cur = 0;
key = ds_map_find_first(ALL_NODES);
CLONING = true;
NODE_EXTRACT = true;
dir = DIRECTORY + "Nodes/";
if(!directory_exists(dir)) directory_create(dir);
data = {};
junc = {};
locale = {};
game_set_speed(99999, gamespeed_fps);
function drawContent(panel) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
draw_set_text(f_p0, fa_center, fa_top, COLORS._main_text);
draw_text(w / 2, ui(8), cur + 2 < amo? "Dumping node data... (Program terminate on complete)" : "Writing JSON");
var bx0 = ui(8);
var by0 = ui(40);
var bx1 = w - ui(8);
var by1 = h - ui(8);
var bw = bx1 - bx0;
var bh = by1 - by0;
draw_sprite_stretched(THEME.progress_bar, 0, bx0, by0, bw, bh);
draw_sprite_stretched(THEME.progress_bar, 1, bx0, by0, bw * cur / amo, bh);
var _n = ALL_NODES[? key];
var _b = _n.build(0, 0);
key = ds_map_find_next(ALL_NODES, key);
if(_b.name == "") return;
var _data = __node_data_clone(_b);
var _junc = {};
_junc.node = _n.node;
var _loca = {};
_loca.name = _n.name;
_loca.tooltip = _n.tooltip;
var _jin = [], _jot = [];
var _lin = [], _lot = [];
var _din = [], _dot = [];
for( var i = 0; i < ds_list_size(_b.inputs); i++ ) {
_din[i] = __node_data_clone(_b.inputs[| i]);
_jin[i] = {
type: _b.inputs[| i].type,
visible: _b.inputs[| i].visible? 1 : 0,
};
_lin[i] = {
name: _b.inputs[| i]._initName,
tooltip: _b.inputs[| i].tooltip,
};
}
for( var i = 0; i < ds_list_size(_b.outputs); i++ ) {
_dot[i] = __node_data_clone(_b.outputs[| i]);
_jot[i] = {
type: _b.outputs[| i].type,
visible: _b.outputs[| i].visible? 1 : 0,
};
_lot[i] = {
name: _b.outputs[| i]._initName,
tooltip: _b.outputs[| i].tooltip,
};
}
nodeDelete(_b);
_junc.inputs = _jin;
_junc.outputs = _jot;
junc[$ _n.name] = _junc;
_loca.inputs = _lin;
_loca.outputs = _lot;
locale[$ _n.node] = _loca;
_data.inputs = _din;
_data.outputs = _dot;
data[$ _n.name] = _data;
cur++;
if(cur < amo) return;
json_save_struct(dir + "node_data.json", data, false);
json_save_struct(dir + "node_junctions.json", junc, false);
json_save_struct(dir + "node_locale.json", locale, true);
shellOpenExplorer(dir);
CLONING = false;
game_end();
}
}

View file

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

View file

@ -29,7 +29,7 @@ function Panel_Notification() : PanelContent() constructor {
}), }),
-1, -1,
menuItem(__txtx("noti_open_log", "Open log file"), function() { menuItem(__txtx("noti_open_log", "Open log file"), function() {
shellOpenExplorer(DIRECTORY + "log.txt"); shellOpenExplorer(DIRECTORY + "log/log.txt");
}), }),
]; ];

View file

@ -0,0 +1,61 @@
function Panel_Test() : PanelContent() constructor {
w = ui(480);
h = ui(160);
title = "Tester";
test_dir = "";
tb_test_dir = new textBox(TEXTBOX_INPUT.text, function(txt) { test_dir = txt; });
testing = false;
test_files = [];
test_index = 0;
function startTesting() {
if(testing) return;
testing = true;
test_index = 0;
test_files = [];
var f = file_find_first(test_dir + "/*", fa_none);
var _f = "";
while(f != "") {
var path = test_dir + f;
if(filename_ext(path) == ".pxc")
array_push(test_files, path);
f = file_find_next();
}
for( var i = 0; i < array_length(test_files); i++ ) {
run_in(i * 2, function(i) { LOAD_PATH(test_files[i]); test_index = i }, i);
}
}
function drawContent(panel) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
var yy = 8;
var hh = TEXTBOX_HEIGHT;
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_text(8, yy + hh / 2, "Directory");
tb_test_dir.setActiveFocus(pFOCUS, pHOVER);
tb_test_dir.draw(128, yy, w - 8 - 128, hh, test_dir, [ mx, my ]);
yy += hh + 8;
if(testing) {
draw_sprite_stretched(THEME.progress_bar, 0, 8, yy, w - 16, hh);
draw_sprite_stretched(THEME.progress_bar, 1, 8, yy, (w - 16) * test_index / array_length(test_files), hh);
if(test_index == array_length(test_files) - 1)
testing = false;
} else {
if(buttonInstant(THEME.button, 8, yy, w - 16, hh, [ mx, my ], pFOCUS, pHOVER) == 2)
startTesting();
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
draw_text(w / 2, yy + hh / 2, "Start test");
}
}
}

View file

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

View file

@ -68,6 +68,8 @@
PREF_MAP[? "show_crash_dialog"] = false; PREF_MAP[? "show_crash_dialog"] = false;
PREF_MAP[? "save_file_minify"] = true; PREF_MAP[? "save_file_minify"] = true;
PREF_MAP[? "render_all_export"] = true;
#endregion #endregion
#region hotkeys #region hotkeys

View file

@ -19,7 +19,7 @@ function preview_overlay_puppet(interact, active, _x, _y, _s, _mx, _my, _snx, _s
switch(_val[PUPPET_CONTROL.mode]) { switch(_val[PUPPET_CONTROL.mode]) {
case PUPPET_FORCE_MODE.move : case PUPPET_FORCE_MODE.move :
draw_line_width2(_ax, _ay, _ax1, _ay1, 6, 1); draw_line_width2(_ax, _ay, _ax1, _ay1, 6, 1);
draw_circle(_ax, _ay, __wd * _s, true); draw_circle_prec(_ax, _ay, __wd * _s, true);
draw_sprite_colored(THEME.anchor_selector, 0, _ax, _ay); draw_sprite_colored(THEME.anchor_selector, 0, _ax, _ay);
draw_sprite_colored(THEME.anchor_selector, 2, _ax1, _ay1); draw_sprite_colored(THEME.anchor_selector, 2, _ax1, _ay1);
@ -89,7 +89,7 @@ function preview_overlay_puppet(interact, active, _x, _y, _s, _mx, _my, _snx, _s
if(point_in_circle(_mx, _my, rx, ry, 8)) { if(point_in_circle(_mx, _my, rx, ry, 8)) {
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_circle(_ax, _ay, 64, true); draw_circle_prec(_ax, _ay, 64, true);
hover = 6; hover = 6;
draw_sprite_colored(THEME.anchor_rotate, 1, rx, ry,, dir - 45); draw_sprite_colored(THEME.anchor_rotate, 1, rx, ry,, dir - 45);

Some files were not shown because too many files have changed in this diff Show more