mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-03-03 14:14:49 +01:00
Tester
This commit is contained in:
parent
0664451464
commit
9219431741
159 changed files with 13704 additions and 11099 deletions
|
@ -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",},
|
||||||
|
|
|
@ -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.
|
@ -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.
7
objects/_addon_custom/Alarm_0.gml
Normal file
7
objects/_addon_custom/Alarm_0.gml
Normal 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
|
|
@ -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;
|
||||||
|
|
|
@ -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": [],
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
/// @description
|
/// @description
|
||||||
name = "";
|
#region load
|
||||||
menu = [];
|
name = "";
|
||||||
|
menu = [];
|
||||||
|
#endregion
|
||||||
|
|
55
objects/o_crash_handler/Create_0.gml
Normal file
55
objects/o_crash_handler/Create_0.gml
Normal 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
|
163
objects/o_crash_handler/Draw_64.gml
Normal file
163
objects/o_crash_handler/Draw_64.gml
Normal 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);
|
34
objects/o_crash_handler/o_crash_handler.yy
Normal file
34
objects/o_crash_handler/o_crash_handler.yy
Normal 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,
|
||||||
|
}
|
|
@ -323,6 +323,7 @@ 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);
|
||||||
|
@ -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)
|
||||||
|
|
|
@ -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");
|
||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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"))) {
|
||||||
|
|
10
objects/o_process_handler/Create_0.gml
Normal file
10
objects/o_process_handler/Create_0.gml
Normal 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
|
33
objects/o_process_handler/o_process_handler.yy
Normal file
33
objects/o_process_handler/o_process_handler.yy
Normal 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,
|
||||||
|
}
|
|
@ -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,},
|
||||||
],
|
],
|
||||||
|
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -53,13 +53,3 @@ 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
81
scripts/__bone/__bone.gml
Normal 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
11
scripts/__bone/__bone.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
|
@ -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); }
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -57,20 +57,8 @@ 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) {
|
||||||
|
@ -78,3 +66,22 @@ function addonActivated(_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();
|
||||||
|
}
|
|
@ -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",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -82,25 +82,13 @@ function setException() {
|
||||||
}
|
}
|
||||||
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";
|
ExecProcessFromArgVAsync(GetArgVFromProcid(ProcIdFromSelf())); //create new dialog
|
||||||
tt += ex.longMessage;
|
|
||||||
tt += "\n---------------------------- :( ----------------------------\n";
|
|
||||||
|
|
||||||
tt += "\n\nCrash log stored in clipboard and saved at " + path;
|
|
||||||
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;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
4
scripts/draw_circle_prec/draw_circle_prec.gml
Normal file
4
scripts/draw_circle_prec/draw_circle_prec.gml
Normal 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);
|
||||||
|
}
|
11
scripts/draw_circle_prec/draw_circle_prec.yy
Normal file
11
scripts/draw_circle_prec/draw_circle_prec.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -6,6 +6,6 @@
|
||||||
"isDnD": false,
|
"isDnD": false,
|
||||||
"parent": {
|
"parent": {
|
||||||
"name": "Gameframe",
|
"name": "Gameframe",
|
||||||
"path": "folders/_Extensions/Gameframe.yy",
|
"path": "folders/_extensions/Gameframe.yy",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -6,6 +6,6 @@
|
||||||
"isDnD": false,
|
"isDnD": false,
|
||||||
"parent": {
|
"parent": {
|
||||||
"name": "Gameframe",
|
"name": "Gameframe",
|
||||||
"path": "folders/_Extensions/Gameframe.yy",
|
"path": "folders/_extensions/Gameframe.yy",
|
||||||
},
|
},
|
||||||
}
|
}
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 = "") {
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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);
|
||||||
|
|
150
scripts/node_armature/node_armature.gml
Normal file
150
scripts/node_armature/node_armature.gml
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
11
scripts/node_armature/node_armature.yy
Normal file
11
scripts/node_armature/node_armature.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
784
scripts/node_armature_bind/node_armature_bind.gml
Normal file
784
scripts/node_armature_bind/node_armature_bind.gml
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
11
scripts/node_armature_bind/node_armature_bind.yy
Normal file
11
scripts/node_armature_bind/node_armature_bind.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
12
scripts/node_armature_bind/node_array.yy
Normal file
12
scripts/node_armature_bind/node_array.yy
Normal 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",
|
||||||
|
}
|
12
scripts/node_armature_bind/node_counter.yy
Normal file
12
scripts/node_armature_bind/node_counter.yy
Normal 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",
|
||||||
|
}
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -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,11 +717,18 @@ 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;
|
||||||
|
|
||||||
|
@ -924,8 +964,8 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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, "")
|
||||||
|
|
|
@ -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,
|
||||||
|
@ -417,20 +434,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
@ -111,17 +111,17 @@ 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; }
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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() {}
|
||||||
}
|
}
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
140
scripts/panel_node_data_gen/panel_node_data_gen.gml
Normal file
140
scripts/panel_node_data_gen/panel_node_data_gen.gml
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
11
scripts/panel_node_data_gen/panel_node_data_gen.yy
Normal file
11
scripts/panel_node_data_gen/panel_node_data_gen.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
|
@ -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");
|
||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
61
scripts/panel_test/panel_test.gml
Normal file
61
scripts/panel_test/panel_test.gml
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
scripts/panel_test/panel_test.yy
Normal file
11
scripts/panel_test/panel_test.yy
Normal 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",
|
||||||
|
},
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue