1.1.0.1 Update

This commit is contained in:
Tanasart 2023-01-17 14:11:55 +07:00
parent 2adbd51215
commit 70828e7568
323 changed files with 10897 additions and 6236 deletions

View file

@ -33,10 +33,11 @@
{"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},"order":40,}, {"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},"order":40,},
{"id":{"name":"s_node_color","path":"sprites/s_node_color/s_node_color.yy",},"order":0,}, {"id":{"name":"s_node_color","path":"sprites/s_node_color/s_node_color.yy",},"order":0,},
{"id":{"name":"s_node_image_gif","path":"sprites/s_node_image_gif/s_node_image_gif.yy",},"order":7,}, {"id":{"name":"s_node_image_gif","path":"sprites/s_node_image_gif/s_node_image_gif.yy",},"order":7,},
{"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":7,}, {"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":5,},
{"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":3,}, {"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":3,},
{"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":6,}, {"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":6,},
{"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":34,}, {"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":34,},
{"id":{"name":"textInput","path":"scripts/textInput/textInput.yy",},"order":24,},
{"id":{"name":"node_dither","path":"scripts/node_dither/node_dither.yy",},"order":11,}, {"id":{"name":"node_dither","path":"scripts/node_dither/node_dither.yy",},"order":11,},
{"id":{"name":"sh_perlin_smear","path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",},"order":7,}, {"id":{"name":"sh_perlin_smear","path":"shaders/sh_perlin_smear/sh_perlin_smear.yy",},"order":7,},
{"id":{"name":"node_switch","path":"scripts/node_switch/node_switch.yy",},"order":8,}, {"id":{"name":"node_switch","path":"scripts/node_switch/node_switch.yy",},"order":8,},
@ -82,6 +83,7 @@
{"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,}, {"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,},
{"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":9,}, {"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":9,},
{"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,}, {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,},
{"id":{"name":"node_string_get_char","path":"scripts/node_string_get_char/node_string_get_char.yy",},"order":19,},
{"id":{"name":"sh_simplex","path":"shaders/sh_simplex/sh_simplex.yy",},"order":22,}, {"id":{"name":"sh_simplex","path":"shaders/sh_simplex/sh_simplex.yy",},"order":22,},
{"id":{"name":"node_noise_grid_tri","path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",},"order":25,}, {"id":{"name":"node_noise_grid_tri","path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",},"order":25,},
{"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,},
@ -117,7 +119,7 @@
{"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,}, {"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,},
{"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,}, {"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,},
{"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,}, {"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,},
{"id":{"name":"node_VFX_group","path":"scripts/node_VFX_group/node_VFX_group.yy",},"order":6,}, {"id":{"name":"node_VFX_group","path":"scripts/node_VFX_group/node_VFX_group.yy",},"order":4,},
{"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":8,}, {"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":8,},
{"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":30,}, {"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":30,},
{"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,}, {"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,},
@ -126,7 +128,7 @@
{"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},"order":1,}, {"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},"order":1,},
{"id":{"name":"s_node_switch","path":"sprites/s_node_switch/s_node_switch.yy",},"order":20,}, {"id":{"name":"s_node_switch","path":"sprites/s_node_switch/s_node_switch.yy",},"order":20,},
{"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},"order":2,}, {"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},"order":2,},
{"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},"order":3,}, {"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},"order":2,},
{"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},"order":2,}, {"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},"order":2,},
{"id":{"name":"sh_blend_multiply","path":"shaders/sh_blend_multiply/sh_blend_multiply.yy",},"order":0,}, {"id":{"name":"sh_blend_multiply","path":"shaders/sh_blend_multiply/sh_blend_multiply.yy",},"order":0,},
{"id":{"name":"node_bevel","path":"scripts/node_bevel/node_bevel.yy",},"order":3,}, {"id":{"name":"node_bevel","path":"scripts/node_bevel/node_bevel.yy",},"order":3,},
@ -136,6 +138,7 @@
{"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,}, {"id":{"name":"node_displacement","path":"scripts/node_displacement/node_displacement.yy",},"order":8,},
{"id":{"name":"text_file","path":"scripts/text_file/text_file.yy",},"order":5,}, {"id":{"name":"text_file","path":"scripts/text_file/text_file.yy",},"order":5,},
{"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":3,}, {"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":3,},
{"id":{"name":"sh_channel_G_grey","path":"shaders/sh_channel_G_grey/sh_channel_G_grey.yy",},"order":8,},
{"id":{"name":"s_node_vec4","path":"sprites/s_node_vec4/s_node_vec4.yy",},"order":8,}, {"id":{"name":"s_node_vec4","path":"sprites/s_node_vec4/s_node_vec4.yy",},"order":8,},
{"id":{"name":"buttonGroup","path":"scripts/buttonGroup/buttonGroup.yy",},"order":5,}, {"id":{"name":"buttonGroup","path":"scripts/buttonGroup/buttonGroup.yy",},"order":5,},
{"id":{"name":"s_node_image_sheet","path":"sprites/s_node_image_sheet/s_node_image_sheet.yy",},"order":10,}, {"id":{"name":"s_node_image_sheet","path":"sprites/s_node_image_sheet/s_node_image_sheet.yy",},"order":10,},
@ -146,6 +149,7 @@
{"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,},
{"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,}, {"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,},
{"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,}, {"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,},
{"id":{"name":"preview_overlay_vector","path":"scripts/preview_overlay_vector/preview_overlay_vector.yy",},"order":2,},
{"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":18,}, {"id":{"name":"sh_gradient_display","path":"shaders/sh_gradient_display/sh_gradient_display.yy",},"order":18,},
{"id":{"name":"node_json_file_write","path":"scripts/node_json_file_write/node_json_file_write.yy",},"order":12,}, {"id":{"name":"node_json_file_write","path":"scripts/node_json_file_write/node_json_file_write.yy",},"order":12,},
{"id":{"name":"s_node_chromatic_abarration","path":"sprites/s_node_chromatic_abarration/s_node_chromatic_abarration.yy",},"order":12,}, {"id":{"name":"s_node_chromatic_abarration","path":"sprites/s_node_chromatic_abarration/s_node_chromatic_abarration.yy",},"order":12,},
@ -178,7 +182,7 @@
{"id":{"name":"sh_vertex_normal_pass","path":"shaders/sh_vertex_normal_pass/sh_vertex_normal_pass.yy",},"order":5,}, {"id":{"name":"sh_vertex_normal_pass","path":"shaders/sh_vertex_normal_pass/sh_vertex_normal_pass.yy",},"order":5,},
{"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":6,}, {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":6,},
{"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":5,}, {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":5,},
{"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,}, {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":3,},
{"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":25,}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":25,},
{"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":10,}, {"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":10,},
{"id":{"name":"node_lua_compute","path":"scripts/node_lua_compute/node_lua_compute.yy",},"order":7,}, {"id":{"name":"node_lua_compute","path":"scripts/node_lua_compute/node_lua_compute.yy",},"order":7,},
@ -206,7 +210,9 @@
{"id":{"name":"node_combine_rgb","path":"scripts/node_combine_rgb/node_combine_rgb.yy",},"order":49,}, {"id":{"name":"node_combine_rgb","path":"scripts/node_combine_rgb/node_combine_rgb.yy",},"order":49,},
{"id":{"name":"checkbox","path":"scripts/checkbox/checkbox.yy",},"order":7,}, {"id":{"name":"checkbox","path":"scripts/checkbox/checkbox.yy",},"order":7,},
{"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},"order":12,}, {"id":{"name":"s_node_particle","path":"sprites/s_node_particle/s_node_particle.yy",},"order":12,},
{"id":{"name":"s_node_random","path":"sprites/s_node_random/s_node_random.yy",},"order":24,},
{"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},"order":6,}, {"id":{"name":"s_node_color_remove","path":"sprites/s_node_color_remove/s_node_color_remove.yy",},"order":6,},
{"id":{"name":"sh_average","path":"shaders/sh_average/sh_average.yy",},"order":7,},
{"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,}, {"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,},
{"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,}, {"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,},
{"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,}, {"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,},
@ -216,6 +222,7 @@
{"id":{"name":"s_node_threshold","path":"sprites/s_node_threshold/s_node_threshold.yy",},"order":45,}, {"id":{"name":"s_node_threshold","path":"sprites/s_node_threshold/s_node_threshold.yy",},"order":45,},
{"id":{"name":"node_condition","path":"scripts/node_condition/node_condition.yy",},"order":0,}, {"id":{"name":"node_condition","path":"scripts/node_condition/node_condition.yy",},"order":0,},
{"id":{"name":"sh_draw_normal","path":"shaders/sh_draw_normal/sh_draw_normal.yy",},"order":12,}, {"id":{"name":"sh_draw_normal","path":"shaders/sh_draw_normal/sh_draw_normal.yy",},"order":12,},
{"id":{"name":"preview_overlay_rotation","path":"scripts/preview_overlay_rotation/preview_overlay_rotation.yy",},"order":1,},
{"id":{"name":"sh_seperate_shape_index","path":"shaders/sh_seperate_shape_index/sh_seperate_shape_index.yy",},"order":0,}, {"id":{"name":"sh_seperate_shape_index","path":"shaders/sh_seperate_shape_index/sh_seperate_shape_index.yy",},"order":0,},
{"id":{"name":"node_registry","path":"scripts/node_registry/node_registry.yy",},"order":5,}, {"id":{"name":"node_registry","path":"scripts/node_registry/node_registry.yy",},"order":5,},
{"id":{"name":"sh_checkerboard","path":"shaders/sh_checkerboard/sh_checkerboard.yy",},"order":12,}, {"id":{"name":"sh_checkerboard","path":"shaders/sh_checkerboard/sh_checkerboard.yy",},"order":12,},
@ -233,7 +240,7 @@
{"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,}, {"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,},
{"id":{"name":"sh_noise","path":"shaders/sh_noise/sh_noise.yy",},"order":16,}, {"id":{"name":"sh_noise","path":"shaders/sh_noise/sh_noise.yy",},"order":16,},
{"id":{"name":"sh_skew","path":"shaders/sh_skew/sh_skew.yy",},"order":6,}, {"id":{"name":"sh_skew","path":"shaders/sh_skew/sh_skew.yy",},"order":6,},
{"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":14,}, {"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":12,},
{"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,}, {"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,},
{"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,}, {"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,},
{"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":16,}, {"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":16,},
@ -252,9 +259,9 @@
{"id":{"name":"sh_threshold","path":"shaders/sh_threshold/sh_threshold.yy",},"order":48,}, {"id":{"name":"sh_threshold","path":"shaders/sh_threshold/sh_threshold.yy",},"order":48,},
{"id":{"name":"ac_flash","path":"animcurves/ac_flash/ac_flash.yy",},"order":0,}, {"id":{"name":"ac_flash","path":"animcurves/ac_flash/ac_flash.yy",},"order":0,},
{"id":{"name":"o_dialog_drag_folder","path":"objects/o_dialog_drag_folder/o_dialog_drag_folder.yy",},"order":2,}, {"id":{"name":"o_dialog_drag_folder","path":"objects/o_dialog_drag_folder/o_dialog_drag_folder.yy",},"order":2,},
{"id":{"name":"node_VFX_effect_repel","path":"scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy",},"order":11,}, {"id":{"name":"node_VFX_effect_repel","path":"scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy",},"order":9,},
{"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":1,}, {"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":1,},
{"id":{"name":"node_VFX_effect_attract","path":"scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy",},"order":10,}, {"id":{"name":"node_VFX_effect_attract","path":"scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy",},"order":8,},
{"id":{"name":"s_node_text_splice","path":"sprites/s_node_text_splice/s_node_text_splice.yy",},"order":17,}, {"id":{"name":"s_node_text_splice","path":"sprites/s_node_text_splice/s_node_text_splice.yy",},"order":17,},
{"id":{"name":"sh_blend_multiply_alpha","path":"shaders/sh_blend_multiply_alpha/sh_blend_multiply_alpha.yy",},"order":4,}, {"id":{"name":"sh_blend_multiply_alpha","path":"shaders/sh_blend_multiply_alpha/sh_blend_multiply_alpha.yy",},"order":4,},
{"id":{"name":"node_3d_object_transform","path":"scripts/node_3d_object_transform/node_3d_object_transform.yy",},"order":11,}, {"id":{"name":"node_3d_object_transform","path":"scripts/node_3d_object_transform/node_3d_object_transform.yy",},"order":11,},
@ -271,11 +278,13 @@
{"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,}, {"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,},
{"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,}, {"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,},
{"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,}, {"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,},
{"id":{"name":"sh_shadow_cast","path":"shaders/sh_shadow_cast/sh_shadow_cast.yy",},"order":0,},
{"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,}, {"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,},
{"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,}, {"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,},
{"id":{"name":"node_boolean","path":"scripts/node_boolean/node_boolean.yy",},"order":17,}, {"id":{"name":"node_boolean","path":"scripts/node_boolean/node_boolean.yy",},"order":17,},
{"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,}, {"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,},
{"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":6,}, {"id":{"name":"window_command_hook","path":"extensions/window_command_hook/window_command_hook.yy",},"order":6,},
{"id":{"name":"node_average","path":"scripts/node_average/node_average.yy",},"order":56,},
{"id":{"name":"slider","path":"scripts/slider/slider.yy",},"order":15,}, {"id":{"name":"slider","path":"scripts/slider/slider.yy",},"order":15,},
{"id":{"name":"s_node_convolution","path":"sprites/s_node_convolution/s_node_convolution.yy",},"order":46,}, {"id":{"name":"s_node_convolution","path":"sprites/s_node_convolution/s_node_convolution.yy",},"order":46,},
{"id":{"name":"node_9slice","path":"scripts/node_9slice/node_9slice.yy",},"order":6,}, {"id":{"name":"node_9slice","path":"scripts/node_9slice/node_9slice.yy",},"order":6,},
@ -305,6 +314,7 @@
{"id":{"name":"node_noise_simplex","path":"scripts/node_noise_simplex/node_noise_simplex.yy",},"order":23,}, {"id":{"name":"node_noise_simplex","path":"scripts/node_noise_simplex/node_noise_simplex.yy",},"order":23,},
{"id":{"name":"ds_list","path":"scripts/ds_list/ds_list.yy",},"order":1,}, {"id":{"name":"ds_list","path":"scripts/ds_list/ds_list.yy",},"order":1,},
{"id":{"name":"o_dialog_gradient","path":"objects/o_dialog_gradient/o_dialog_gradient.yy",},"order":1,}, {"id":{"name":"o_dialog_gradient","path":"objects/o_dialog_gradient/o_dialog_gradient.yy",},"order":1,},
{"id":{"name":"sh_channel_R_grey","path":"shaders/sh_channel_R_grey/sh_channel_R_grey.yy",},"order":7,},
{"id":{"name":"sh_blend_subtract","path":"shaders/sh_blend_subtract/sh_blend_subtract.yy",},"order":5,}, {"id":{"name":"sh_blend_subtract","path":"shaders/sh_blend_subtract/sh_blend_subtract.yy",},"order":5,},
{"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":0,}, {"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":0,},
{"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,}, {"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,},
@ -317,13 +327,14 @@
{"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":20,}, {"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":20,},
{"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":3,}, {"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":3,},
{"id":{"name":"s_node_blur_simple","path":"sprites/s_node_blur_simple/s_node_blur_simple.yy",},"order":41,}, {"id":{"name":"s_node_blur_simple","path":"sprites/s_node_blur_simple/s_node_blur_simple.yy",},"order":41,},
{"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":2,}, {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":1,},
{"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,}, {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,},
{"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},"order":22,}, {"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},"order":22,},
{"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":4,}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":4,},
{"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":8,}, {"id":{"name":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":8,},
{"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,}, {"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,},
{"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":20,}, {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":20,},
{"id":{"name":"fontScrollBox","path":"scripts/fontScrollBox/fontScrollBox.yy",},"order":26,},
{"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},"order":22,}, {"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},"order":22,},
{"id":{"name":"s_node_text_display","path":"sprites/s_node_text_display/s_node_text_display.yy",},"order":19,}, {"id":{"name":"s_node_text_display","path":"sprites/s_node_text_display/s_node_text_display.yy",},"order":19,},
{"id":{"name":"luaRenderer","path":"scripts/luaRenderer/luaRenderer.yy",},"order":2,}, {"id":{"name":"luaRenderer","path":"scripts/luaRenderer/luaRenderer.yy",},"order":2,},
@ -336,19 +347,21 @@
{"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},"order":3,}, {"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},"order":3,},
{"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},"order":2,}, {"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},"order":2,},
{"id":{"name":"matrixGrid","path":"scripts/matrixGrid/matrixGrid.yy",},"order":23,}, {"id":{"name":"matrixGrid","path":"scripts/matrixGrid/matrixGrid.yy",},"order":23,},
{"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},"order":1,}, {"id":{"name":"ase_object","path":"scripts/ase_object/ase_object.yy",},"order":7,},
{"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},"order":0,},
{"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,}, {"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,},
{"id":{"name":"node_noise_grid_hex","path":"scripts/node_noise_grid_hex/node_noise_grid_hex.yy",},"order":24,}, {"id":{"name":"node_noise_grid_hex","path":"scripts/node_noise_grid_hex/node_noise_grid_hex.yy",},"order":24,},
{"id":{"name":"node_lua_global","path":"scripts/node_lua_global/node_lua_global.yy",},"order":6,}, {"id":{"name":"node_lua_global","path":"scripts/node_lua_global/node_lua_global.yy",},"order":6,},
{"id":{"name":"o_dialog_preset","path":"objects/o_dialog_preset/o_dialog_preset.yy",},"order":1,}, {"id":{"name":"o_dialog_preset","path":"objects/o_dialog_preset/o_dialog_preset.yy",},"order":1,},
{"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},"order":21,}, {"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},"order":21,},
{"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":19,}, {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":14,},
{"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,}, {"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,},
{"id":{"name":"node_array_range","path":"scripts/node_array_range/node_array_range.yy",},"order":12,}, {"id":{"name":"node_array_range","path":"scripts/node_array_range/node_array_range.yy",},"order":12,},
{"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,}, {"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,},
{"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,}, {"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,},
{"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,}, {"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,},
{"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":27,}, {"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":27,},
{"id":{"name":"preview_overlay_puppet","path":"scripts/preview_overlay_puppet/preview_overlay_puppet.yy",},"order":4,},
{"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},"order":0,}, {"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},"order":0,},
{"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":6,}, {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":6,},
{"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},"order":37,}, {"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},"order":37,},
@ -359,10 +372,13 @@
{"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,}, {"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,},
{"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":4,}, {"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":4,},
{"id":{"name":"color_selector","path":"scripts/color_selector/color_selector.yy",},"order":4,}, {"id":{"name":"color_selector","path":"scripts/color_selector/color_selector.yy",},"order":4,},
{"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},"order":13,}, {"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},"order":11,},
{"id":{"name":"node_ase_file_read","path":"scripts/node_ase_file_read/node_ase_file_read.yy",},"order":14,},
{"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,}, {"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,},
{"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},"order":35,}, {"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},"order":35,},
{"id":{"name":"s_node_text_char_get","path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",},"order":23,},
{"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,}, {"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,},
{"id":{"name":"o_dialog_fontscrollbox","path":"objects/o_dialog_fontscrollbox/o_dialog_fontscrollbox.yy",},"order":4,},
{"id":{"name":"s_node_vfx_output","path":"sprites/s_node_vfx_output/s_node_vfx_output.yy",},"order":11,}, {"id":{"name":"s_node_vfx_output","path":"sprites/s_node_vfx_output/s_node_vfx_output.yy",},"order":11,},
{"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,}, {"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,},
{"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,}, {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,},
@ -383,10 +399,12 @@
{"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},"order":11,}, {"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},"order":11,},
{"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":11,}, {"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":11,},
{"id":{"name":"s_node_compare","path":"sprites/s_node_compare/s_node_compare.yy",},"order":20,}, {"id":{"name":"s_node_compare","path":"sprites/s_node_compare/s_node_compare.yy",},"order":20,},
{"id":{"name":"sh_camera","path":"shaders/sh_camera/sh_camera.yy",},"order":43,},
{"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":2,}, {"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":2,},
{"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,}, {"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,},
{"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},"order":2,}, {"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},"order":2,},
{"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":4,}, {"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":4,},
{"id":{"name":"node_random","path":"scripts/node_random/node_random.yy",},"order":20,},
{"id":{"name":"sh_channel_A","path":"shaders/sh_channel_A/sh_channel_A.yy",},"order":0,}, {"id":{"name":"sh_channel_A","path":"shaders/sh_channel_A/sh_channel_A.yy",},"order":0,},
{"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},"order":42,}, {"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},"order":42,},
{"id":{"name":"s_node_feedback","path":"sprites/s_node_feedback/s_node_feedback.yy",},"order":3,}, {"id":{"name":"s_node_feedback","path":"sprites/s_node_feedback/s_node_feedback.yy",},"order":3,},
@ -398,12 +416,14 @@
{"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},"order":39,}, {"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},"order":39,},
{"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},"order":11,}, {"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},"order":11,},
{"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},"order":2,}, {"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},"order":2,},
{"id":{"name":"node_palette_extract","path":"scripts/node_palette_extract/node_palette_extract.yy",},"order":7,},
{"id":{"name":"s_node_solid","path":"sprites/s_node_solid/s_node_solid.yy",},"order":15,}, {"id":{"name":"s_node_solid","path":"sprites/s_node_solid/s_node_solid.yy",},"order":15,},
{"id":{"name":"string_hexadecimal","path":"scripts/string_hexadecimal/string_hexadecimal.yy",},"order":1,}, {"id":{"name":"string_hexadecimal","path":"scripts/string_hexadecimal/string_hexadecimal.yy",},"order":1,},
{"id":{"name":"s_node_camera","path":"sprites/s_node_camera/s_node_camera.yy",},"order":3,}, {"id":{"name":"s_node_camera","path":"sprites/s_node_camera/s_node_camera.yy",},"order":3,},
{"id":{"name":"sh_vertex_pnt_light","path":"shaders/sh_vertex_pnt_light/sh_vertex_pnt_light.yy",},"order":4,}, {"id":{"name":"sh_vertex_pnt_light","path":"shaders/sh_vertex_pnt_light/sh_vertex_pnt_light.yy",},"order":4,},
{"id":{"name":"surfaceBox","path":"scripts/surfaceBox/surfaceBox.yy",},"order":22,}, {"id":{"name":"surfaceBox","path":"scripts/surfaceBox/surfaceBox.yy",},"order":22,},
{"id":{"name":"s_node_csv_file_read","path":"sprites/s_node_csv_file_read/s_node_csv_file_read.yy",},"order":12,}, {"id":{"name":"s_node_csv_file_read","path":"sprites/s_node_csv_file_read/s_node_csv_file_read.yy",},"order":12,},
{"id":{"name":"s_node_repeat","path":"sprites/s_node_repeat/s_node_repeat.yy",},"order":23,},
{"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},"order":12,}, {"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},"order":12,},
{"id":{"name":"string_splice","path":"scripts/string_splice/string_splice.yy",},"order":5,}, {"id":{"name":"string_splice","path":"scripts/string_splice/string_splice.yy",},"order":5,},
{"id":{"name":"s_node_vfx_input","path":"sprites/s_node_vfx_input/s_node_vfx_input.yy",},"order":12,}, {"id":{"name":"s_node_vfx_input","path":"sprites/s_node_vfx_input/s_node_vfx_input.yy",},"order":12,},
@ -413,7 +433,8 @@
{"id":{"name":"sh_convolution","path":"shaders/sh_convolution/sh_convolution.yy",},"order":50,}, {"id":{"name":"sh_convolution","path":"shaders/sh_convolution/sh_convolution.yy",},"order":50,},
{"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":4,}, {"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":4,},
{"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,}, {"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,},
{"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":12,}, {"id":{"name":"widget","path":"scripts/widget/widget.yy",},"order":25,},
{"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":10,},
{"id":{"name":"s_node_skew","path":"sprites/s_node_skew/s_node_skew.yy",},"order":11,}, {"id":{"name":"s_node_skew","path":"sprites/s_node_skew/s_node_skew.yy",},"order":11,},
{"id":{"name":"s_node_feedback_input","path":"sprites/s_node_feedback_input/s_node_feedback_input.yy",},"order":10,}, {"id":{"name":"s_node_feedback_input","path":"sprites/s_node_feedback_input/s_node_feedback_input.yy",},"order":10,},
{"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":8,}, {"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":8,},
@ -429,9 +450,11 @@
{"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},"order":6,}, {"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},"order":6,},
{"id":{"name":"node_twirl","path":"scripts/node_twirl/node_twirl.yy",},"order":30,}, {"id":{"name":"node_twirl","path":"scripts/node_twirl/node_twirl.yy",},"order":30,},
{"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},"order":15,}, {"id":{"name":"s_node_decorner","path":"sprites/s_node_decorner/s_node_decorner.yy",},"order":15,},
{"id":{"name":"s_node_text_combine","path":"sprites/s_node_text_combine/s_node_text_combine.yy",},"order":25,},
{"id":{"name":"s_node_gradient","path":"sprites/s_node_gradient/s_node_gradient.yy",},"order":1,}, {"id":{"name":"s_node_gradient","path":"sprites/s_node_gradient/s_node_gradient.yy",},"order":1,},
{"id":{"name":"s_node_padding","path":"sprites/s_node_padding/s_node_padding.yy",},"order":4,}, {"id":{"name":"s_node_padding","path":"sprites/s_node_padding/s_node_padding.yy",},"order":4,},
{"id":{"name":"sh_blend_add_alpha_adj","path":"shaders/sh_blend_add_alpha_adj/sh_blend_add_alpha_adj.yy",},"order":2,}, {"id":{"name":"sh_blend_add_alpha_adj","path":"shaders/sh_blend_add_alpha_adj/sh_blend_add_alpha_adj.yy",},"order":2,},
{"id":{"name":"preview_overlay_area","path":"scripts/preview_overlay_area/preview_overlay_area.yy",},"order":3,},
{"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":10,}, {"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":10,},
{"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":7,}, {"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":7,},
{"id":{"name":"node_string_trim","path":"scripts/node_string_trim/node_string_trim.yy",},"order":15,}, {"id":{"name":"node_string_trim","path":"scripts/node_string_trim/node_string_trim.yy",},"order":15,},
@ -455,10 +478,10 @@
{"id":{"name":"s_node_loop_output","path":"sprites/s_node_loop_output/s_node_loop_output.yy",},"order":13,}, {"id":{"name":"s_node_loop_output","path":"sprites/s_node_loop_output/s_node_loop_output.yy",},"order":13,},
{"id":{"name":"_p_dialog","path":"objects/_p_dialog/_p_dialog.yy",},"order":0,}, {"id":{"name":"_p_dialog","path":"objects/_p_dialog/_p_dialog.yy",},"order":0,},
{"id":{"name":"render_data","path":"scripts/render_data/render_data.yy",},"order":2,}, {"id":{"name":"render_data","path":"scripts/render_data/render_data.yy",},"order":2,},
{"id":{"name":"_node_VFX","path":"scripts/_node_VFX/_node_VFX.yy",},"order":4,},
{"id":{"name":"addon_key_displayer","path":"objects/addon_key_displayer/addon_key_displayer.yy",},"order":0,}, {"id":{"name":"addon_key_displayer","path":"objects/addon_key_displayer/addon_key_displayer.yy",},"order":0,},
{"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":9,}, {"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":9,},
{"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,}, {"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,},
{"id":{"name":"s_node_average","path":"sprites/s_node_average/s_node_average.yy",},"order":48,},
{"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":1,}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":1,},
{"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"order":4,}, {"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},"order":4,},
{"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":0,}, {"id":{"name":"s_node_3d_cube","path":"sprites/s_node_3d_cube/s_node_3d_cube.yy",},"order":0,},
@ -494,6 +517,7 @@
{"id":{"name":"node_sprite_sheet","path":"scripts/node_sprite_sheet/node_sprite_sheet.yy",},"order":0,}, {"id":{"name":"node_sprite_sheet","path":"scripts/node_sprite_sheet/node_sprite_sheet.yy",},"order":0,},
{"id":{"name":"value_snap","path":"scripts/value_snap/value_snap.yy",},"order":10,}, {"id":{"name":"value_snap","path":"scripts/value_snap/value_snap.yy",},"order":10,},
{"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},"order":0,}, {"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},"order":0,},
{"id":{"name":"sh_mirror_mask","path":"shaders/sh_mirror_mask/sh_mirror_mask.yy",},"order":8,},
{"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},"order":10,}, {"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},"order":10,},
{"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,}, {"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,},
{"id":{"name":"sh_vertex_pt","path":"shaders/sh_vertex_pt/sh_vertex_pt.yy",},"order":2,}, {"id":{"name":"sh_vertex_pt","path":"shaders/sh_vertex_pt/sh_vertex_pt.yy",},"order":2,},
@ -518,6 +542,7 @@
{"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},"order":19,}, {"id":{"name":"sh_gradient_points","path":"shaders/sh_gradient_points/sh_gradient_points.yy",},"order":19,},
{"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"order":5,}, {"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"order":5,},
{"id":{"name":"GmlLua","path":"scripts/GmlLua/GmlLua.yy",},"order":0,}, {"id":{"name":"GmlLua","path":"scripts/GmlLua/GmlLua.yy",},"order":0,},
{"id":{"name":"sh_shadow_cast_light_sep","path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",},"order":1,},
{"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,}, {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,},
{"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,},
{"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,}, {"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,},
@ -544,6 +569,7 @@
{"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},"order":14,}, {"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},"order":14,},
{"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":29,}, {"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":29,},
{"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,}, {"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,},
{"id":{"name":"preview_overlay_scalar","path":"scripts/preview_overlay_scalar/preview_overlay_scalar.yy",},"order":0,},
{"id":{"name":"s_node_3d_extrude","path":"sprites/s_node_3d_extrude/s_node_3d_extrude.yy",},"order":2,}, {"id":{"name":"s_node_3d_extrude","path":"sprites/s_node_3d_extrude/s_node_3d_extrude.yy",},"order":2,},
{"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,}, {"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,},
{"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":36,},
@ -563,6 +589,7 @@
{"id":{"name":"sh_grid_tri","path":"shaders/sh_grid_tri/sh_grid_tri.yy",},"order":20,}, {"id":{"name":"sh_grid_tri","path":"shaders/sh_grid_tri/sh_grid_tri.yy",},"order":20,},
{"id":{"name":"s_node_text","path":"sprites/s_node_text/s_node_text.yy",},"order":16,}, {"id":{"name":"s_node_text","path":"sprites/s_node_text/s_node_text.yy",},"order":16,},
{"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,}, {"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,},
{"id":{"name":"s_node_ase_file","path":"sprites/s_node_ase_file/s_node_ase_file.yy",},"order":18,},
{"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,},
{"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},"order":18,},
{"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,}, {"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,},
@ -579,9 +606,11 @@
{"id":{"name":"s_node_array_add","path":"sprites/s_node_array_add/s_node_array_add.yy",},"order":13,}, {"id":{"name":"s_node_array_add","path":"sprites/s_node_array_add/s_node_array_add.yy",},"order":13,},
{"id":{"name":"s_node_counter","path":"sprites/s_node_counter/s_node_counter.yy",},"order":0,}, {"id":{"name":"s_node_counter","path":"sprites/s_node_counter/s_node_counter.yy",},"order":0,},
{"id":{"name":"s_node_image_sequence_to_anim","path":"sprites/s_node_image_sequence_to_anim/s_node_image_sequence_to_anim.yy",},"order":9,}, {"id":{"name":"s_node_image_sequence_to_anim","path":"sprites/s_node_image_sequence_to_anim/s_node_image_sequence_to_anim.yy",},"order":9,},
{"id":{"name":"_node_VFX_spawner","path":"scripts/_node_VFX_spawner/_node_VFX_spawner.yy",},"order":15,}, {"id":{"name":"_node_VFX_spawner","path":"scripts/_node_VFX_spawner/_node_VFX_spawner.yy",},"order":13,},
{"id":{"name":"sh_channel_B_grey","path":"shaders/sh_channel_B_grey/sh_channel_B_grey.yy",},"order":9,},
{"id":{"name":"draw_UI_scale","path":"scripts/draw_UI_scale/draw_UI_scale.yy",},"order":8,}, {"id":{"name":"draw_UI_scale","path":"scripts/draw_UI_scale/draw_UI_scale.yy",},"order":8,},
{"id":{"name":"s_node_RGB_combine","path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",},"order":43,}, {"id":{"name":"s_node_RGB_combine","path":"sprites/s_node_RGB_combine/s_node_RGB_combine.yy",},"order":43,},
{"id":{"name":"s_node_shadow_cast","path":"sprites/s_node_shadow_cast/s_node_shadow_cast.yy",},"order":47,},
{"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},"order":4,}, {"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},"order":4,},
{"id":{"name":"sh_channel_H","path":"shaders/sh_channel_H/sh_channel_H.yy",},"order":3,}, {"id":{"name":"sh_channel_H","path":"shaders/sh_channel_H/sh_channel_H.yy",},"order":3,},
{"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},"order":32,}, {"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},"order":32,},
@ -596,6 +625,7 @@
{"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},"order":5,}, {"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},"order":5,},
{"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,}, {"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,},
{"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,}, {"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,},
{"id":{"name":"s_node_palette_extract","path":"sprites/s_node_palette_extract/s_node_palette_extract.yy",},"order":11,},
{"id":{"name":"node_palette_replacement","path":"scripts/node_palette_replacement/node_palette_replacement.yy",},"order":54,}, {"id":{"name":"node_palette_replacement","path":"scripts/node_palette_replacement/node_palette_replacement.yy",},"order":54,},
{"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":19,}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":19,},
{"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},"order":6,}, {"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},"order":6,},
@ -604,15 +634,18 @@
{"id":{"name":"sh_lum2alpha","path":"shaders/sh_lum2alpha/sh_lum2alpha.yy",},"order":43,}, {"id":{"name":"sh_lum2alpha","path":"shaders/sh_lum2alpha/sh_lum2alpha.yy",},"order":43,},
{"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,}, {"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,},
{"id":{"name":"s_node_3d_sphere","path":"sprites/s_node_3d_sphere/s_node_3d_sphere.yy",},"order":8,}, {"id":{"name":"s_node_3d_sphere","path":"sprites/s_node_3d_sphere/s_node_3d_sphere.yy",},"order":8,},
{"id":{"name":"node_VFX_effector","path":"scripts/node_VFX_effector/node_VFX_effector.yy",},"order":8,}, {"id":{"name":"node_VFX_effector","path":"scripts/node_VFX_effector/node_VFX_effector.yy",},"order":6,},
{"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":0,}, {"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":0,},
{"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":1,}, {"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":1,},
{"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},"order":5,}, {"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},"order":5,},
{"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},"order":9,}, {"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},"order":9,},
{"id":{"name":"s_node_ase_layer","path":"sprites/s_node_ase_layer/s_node_ase_layer.yy",},"order":17,},
{"id":{"name":"_f_p1","path":"fonts/_f_p1/_f_p1.yy",},"order":1,}, {"id":{"name":"_f_p1","path":"fonts/_f_p1/_f_p1.yy",},"order":1,},
{"id":{"name":"curve_bezier_function","path":"scripts/curve_bezier_function/curve_bezier_function.yy",},"order":0,}, {"id":{"name":"curve_bezier_function","path":"scripts/curve_bezier_function/curve_bezier_function.yy",},"order":0,},
{"id":{"name":"sh_blur_simple","path":"shaders/sh_blur_simple/sh_blur_simple.yy",},"order":6,}, {"id":{"name":"sh_blur_simple","path":"shaders/sh_blur_simple/sh_blur_simple.yy",},"order":6,},
{"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},"order":5,}, {"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},"order":5,},
{"id":{"name":"node_string_merge","path":"scripts/node_string_merge/node_string_merge.yy",},"order":21,},
{"id":{"name":"bin_function","path":"scripts/bin_function/bin_function.yy",},"order":11,},
{"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},"order":9,}, {"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},"order":9,},
{"id":{"name":"node_3d_combine","path":"scripts/node_3d_combine/node_3d_combine.yy",},"order":10,}, {"id":{"name":"node_3d_combine","path":"scripts/node_3d_combine/node_3d_combine.yy",},"order":10,},
{"id":{"name":"draw_line_dashed","path":"scripts/draw_line_dashed/draw_line_dashed.yy",},"order":7,}, {"id":{"name":"draw_line_dashed","path":"scripts/draw_line_dashed/draw_line_dashed.yy",},"order":7,},
@ -624,6 +657,7 @@
{"id":{"name":"s_node_group_output","path":"sprites/s_node_group_output/s_node_group_output.yy",},"order":15,}, {"id":{"name":"s_node_group_output","path":"sprites/s_node_group_output/s_node_group_output.yy",},"order":15,},
{"id":{"name":"sh_channel_S","path":"shaders/sh_channel_S/sh_channel_S.yy",},"order":5,}, {"id":{"name":"sh_channel_S","path":"shaders/sh_channel_S/sh_channel_S.yy",},"order":5,},
{"id":{"name":"string_scale","path":"scripts/string_scale/string_scale.yy",},"order":6,}, {"id":{"name":"string_scale","path":"scripts/string_scale/string_scale.yy",},"order":6,},
{"id":{"name":"node_repeat","path":"scripts/node_repeat/node_repeat.yy",},"order":26,},
{"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":4,}, {"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":4,},
{"id":{"name":"__node_value_processor","path":"scripts/__node_value_processor/__node_value_processor.yy",},"order":7,}, {"id":{"name":"__node_value_processor","path":"scripts/__node_value_processor/__node_value_processor.yy",},"order":7,},
{"id":{"name":"s_node_group_input","path":"sprites/s_node_group_input/s_node_group_input.yy",},"order":16,}, {"id":{"name":"s_node_group_input","path":"sprites/s_node_group_input/s_node_group_input.yy",},"order":16,},
@ -639,7 +673,7 @@
{"id":{"name":"sh_displace","path":"shaders/sh_displace/sh_displace.yy",},"order":5,}, {"id":{"name":"sh_displace","path":"shaders/sh_displace/sh_displace.yy",},"order":5,},
{"id":{"name":"node_group","path":"scripts/node_group/node_group.yy",},"order":0,}, {"id":{"name":"node_group","path":"scripts/node_group/node_group.yy",},"order":0,},
{"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,}, {"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,},
{"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":9,}, {"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":7,},
{"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,}, {"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,},
{"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":7,}, {"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":7,},
{"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,}, {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,},
@ -672,11 +706,14 @@
{"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":14,}, {"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":14,},
{"id":{"name":"node_iterator_output","path":"scripts/node_iterator_output/node_iterator_output.yy",},"order":3,}, {"id":{"name":"node_iterator_output","path":"scripts/node_iterator_output/node_iterator_output.yy",},"order":3,},
{"id":{"name":"debug","path":"scripts/debug/debug.yy",},"order":9,}, {"id":{"name":"debug","path":"scripts/debug/debug.yy",},"order":9,},
{"id":{"name":"node_shadow_cast","path":"scripts/node_shadow_cast/node_shadow_cast.yy",},"order":55,},
{"id":{"name":"s_node_3d_obj_combine","path":"sprites/s_node_3d_obj_combine/s_node_3d_obj_combine.yy",},"order":5,}, {"id":{"name":"s_node_3d_obj_combine","path":"sprites/s_node_3d_obj_combine/s_node_3d_obj_combine.yy",},"order":5,},
{"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},"order":3,}, {"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},"order":3,},
{"id":{"name":"node_lerp","path":"scripts/node_lerp/node_lerp.yy",},"order":6,}, {"id":{"name":"node_lerp","path":"scripts/node_lerp/node_lerp.yy",},"order":6,},
{"id":{"name":"s_node_pixel_sort","path":"sprites/s_node_pixel_sort/s_node_pixel_sort.yy",},"order":40,}, {"id":{"name":"s_node_pixel_sort","path":"sprites/s_node_pixel_sort/s_node_pixel_sort.yy",},"order":40,},
{"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},"order":32,}, {"id":{"name":"node_texture_remap","path":"scripts/node_texture_remap/node_texture_remap.yy",},"order":32,},
{"id":{"name":"node_ase_layer","path":"scripts/node_ase_layer/node_ase_layer.yy",},"order":15,},
{"id":{"name":"font_sprite_loader","path":"scripts/font_sprite_loader/font_sprite_loader.yy",},"order":10,},
{"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":9,}, {"id":{"name":"s_node_noise_aniso","path":"sprites/s_node_noise_aniso/s_node_noise_aniso.yy",},"order":9,},
{"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,}, {"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,},
{"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":2,}, {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":2,},
@ -776,6 +813,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspectors","folderPath":"folders/panels/data/inspectors.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspectors","folderPath":"folders/panels/data/inspectors.yy","order":6,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/panels/preview.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/panels/preview.yy","order":7,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"overlay","folderPath":"folders/panels/preview/overlay.yy","order":4,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/shader.yy","order":9,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/shader.yy","order":9,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/shader/3d.yy","order":29,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/shader/3d.yy","order":29,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"blend","folderPath":"folders/shader/blend.yy","order":18,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"blend","folderPath":"folders/shader/blend.yy","order":18,},
@ -783,6 +821,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"channels","folderPath":"folders/shader/channels.yy","order":42,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"channels","folderPath":"folders/shader/channels.yy","order":42,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/shader/draw.yy","order":39,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"draw","folderPath":"folders/shader/draw.yy","order":39,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/shader/filter.yy","order":30,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/shader/filter.yy","order":30,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shadow caster","folderPath":"folders/shader/filter/shadow caster.yy","order":52,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/shader/generator.yy","order":19,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/shader/generator.yy","order":19,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shape seperator","folderPath":"folders/shader/shape seperator.yy","order":35,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"shape seperator","folderPath":"folders/shader/shape seperator.yy","order":35,},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy","order":20,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/shader/sprites.yy","order":20,},
@ -949,7 +988,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_rotator_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_rotator_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_rotate_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_rotate_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_remove.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_remove.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_scale_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_scale_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_add.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_add.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_move.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_move.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
@ -1006,7 +1044,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_bg_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_bg_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_button.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_button.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"A9Rwvus4g_1fk5bwb_iqs.tmp","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg_name.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg_name.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
@ -1038,7 +1075,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_arrow.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_arrow.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_tick.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_tick.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
@ -1053,17 +1089,24 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"FiraCode-Medium.ttf","CopyToMask":-1,"filePath":"datafiles/data/themes/default/fonts",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"FiraCode-Medium.ttf","CopyToMask":-1,"filePath":"datafiles/data/themes/default/fonts",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_textbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_textbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","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",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_on_end.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_on_end.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"1.png.tmp$$","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"1.png.tmp$$","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_view_group.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_view_group.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_key_display.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_key_display.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_ease_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_ease_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_widget_highlight.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_area_type.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_file_explorer.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_solid.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
], ],

Binary file not shown.

Binary file not shown.

View file

@ -2,41 +2,41 @@
"h3": { "h3": {
"path": "./NotoSans-Bold.ttf", "path": "./NotoSans-Bold.ttf",
"size": 20, "size": 20,
"range": [32, 127] "range": [32, 255]
}, },
"h5": { "h5": {
"path": "./NotoSans-Bold.ttf", "path": "./NotoSans-Bold.ttf",
"size": 16, "size": 16,
"range": [32, 127] "range": [32, 255]
}, },
"p0": { "p0": {
"path": "./NotoSans-Medium.ttf", "path": "./NotoSans-Medium.ttf",
"size": 12, "size": 12,
"range": [32, 127] "range": [32, 255]
}, },
"p0b": { "p0b": {
"path": "./NotoSans-Bold.ttf", "path": "./NotoSans-Bold.ttf",
"size": 12, "size": 12,
"range": [32, 127] "range": [32, 255]
}, },
"p1": { "p1": {
"path": "./NotoSans-SemiBold.ttf", "path": "./NotoSans-SemiBold.ttf",
"size": 11, "size": 11,
"range": [32, 127] "range": [32, 255]
}, },
"p2": { "p2": {
"path": "./NotoSans-SemiBold.ttf", "path": "./NotoSans-SemiBold.ttf",
"size": 10, "size": 10,
"range": [32, 127] "range": [32, 255]
}, },
"p3": { "p3": {
"path": "./NotoSans-SemiBold.ttf", "path": "./NotoSans-SemiBold.ttf",
"size": 9, "size": 9,
"range": [32, 127] "range": [32, 255]
}, },
"code": { "code": {
"path": "./FiraCode-Medium.ttf", "path": "./FiraCode-Medium.ttf",
"size": 12, "size": 12,
"range": [32, 127] "range": [32, 255]
} }
} }

View file

@ -158,6 +158,13 @@
"yorigin": 24, "yorigin": 24,
"slice": null "slice": null
}, },
"cursor_select": {
"path": "./icon/s_cursor.png",
"subimages": 2,
"xorigin": 16,
"yorigin": 16,
"slice": null
},
"file": { "file": {
"path": "./icon/s_file.png", "path": "./icon/s_file.png",
"subimages": 1, "subimages": 1,
@ -165,6 +172,13 @@
"yorigin": 24, "yorigin": 24,
"slice": null "slice": null
}, },
"explorer": {
"path": "./icon/s_file_explorer.png",
"subimages": 1,
"xorigin": 20,
"yorigin": 20,
"slice": null
},
"fill": { "fill": {
"path": "./icon/s_fill_16.png", "path": "./icon/s_fill_16.png",
"subimages": 1, "subimages": 1,
@ -410,6 +424,13 @@
"yorigin": 72, "yorigin": 72,
"slice": null "slice": null
}, },
"inspector_area_type": {
"path": "./inspector/s_prop_area_type.png",
"subimages": 3,
"xorigin": 16,
"yorigin": 16,
"slice": null
},
"inspector_padding": { "inspector_padding": {
"path": "./inspector/s_inspector_padding.png", "path": "./inspector/s_inspector_padding.png",
"subimages": 1, "subimages": 1,
@ -564,16 +585,10 @@
}, },
"node_pin_bg_active": { "node_pin_bg_active": {
"path": "./node/s_node_pin_active.png", "path": "./node/s_node_pin_active.png",
"subimages": 2, "subimages": 1,
"xorigin": 20, "xorigin": 20,
"yorigin": 20, "yorigin": 20,
"slice": { "slice": null
"enabled": true,
"left": 9,
"right": 9,
"top": 9,
"bottom": 9
}
}, },
"node_active": { "node_active": {
"path": "./node/s_node_active.png", "path": "./node/s_node_active.png",
@ -656,8 +671,8 @@
"node_resize": { "node_resize": {
"path": "./icon/s_node_resize.png", "path": "./icon/s_node_resize.png",
"subimages": 1, "subimages": 1,
"xorigin": 16, "xorigin": 32,
"yorigin": 16, "yorigin": 32,
"slice": null "slice": null
}, },
"node_state": { "node_state": {
@ -927,7 +942,7 @@
}, },
"anchor": { "anchor": {
"path": "./preview/s_anchor.png", "path": "./preview/s_anchor.png",
"subimages": 1, "subimages": 2,
"xorigin": 20, "xorigin": 20,
"yorigin": 20, "yorigin": 20,
"slice": null "slice": null
@ -946,6 +961,13 @@
"yorigin": 24, "yorigin": 24,
"slice": null "slice": null
}, },
"anchor_solid_hori": {
"path": "./preview/s_anchor_solid.png",
"subimages": 2,
"xorigin": 32,
"yorigin": 20,
"slice": null
},
"anchor_scale_hori": { "anchor_scale_hori": {
"path": "./preview/s_anchor_scale_hori_strip2.png", "path": "./preview/s_anchor_scale_hori_strip2.png",
"subimages": 2, "subimages": 2,
@ -1237,6 +1259,19 @@
"bottom": 4 "bottom": 4
} }
}, },
"widget_selecting": {
"path": "./widget/s_widget_highlight.png",
"subimages": 1,
"xorigin": 0,
"yorigin": 0,
"slice": {
"enabled": true,
"left": 5,
"right": 5,
"top": 5,
"bottom": 5
}
},
"textbox": { "textbox": {
"path": "./widget/s_textbox_strip4.png", "path": "./widget/s_textbox_strip4.png",
"subimages": 4, "subimages": 4,

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

BIN
fonts/_f_p0/_f_p0.old.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

582
fonts/_f_p0/_f_p0.old.yy Normal file
View file

@ -0,0 +1,582 @@
{
"resourceType": "GMFont",
"resourceVersion": "1.0",
"name": "_f_p0",
"hinting": 0,
"glyphOperations": 0,
"interpreter": 0,
"pointRounding": 0,
"applyKerning": 0,
"fontName": "Segoe UI",
"styleName": "Semibold",
"size": 12.0,
"bold": true,
"italic": false,
"charset": 0,
"AntiAlias": 1,
"first": 0,
"last": 0,
"sampleText": "abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)",
"includeTTF": false,
"TTFName": "",
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"ascenderOffset": 0,
"ascender": 0,
"glyphs": {
"32": {"x":2,"y":2,"w":4,"h":21,"character":32,"shift":4,"offset":0,},
"33": {"x":163,"y":48,"w":3,"h":21,"character":33,"shift":5,"offset":1,},
"34": {"x":156,"y":48,"w":5,"h":21,"character":34,"shift":7,"offset":1,},
"35": {"x":144,"y":48,"w":10,"h":21,"character":35,"shift":9,"offset":0,},
"36": {"x":135,"y":48,"w":7,"h":21,"character":36,"shift":9,"offset":1,},
"37": {"x":120,"y":48,"w":13,"h":21,"character":37,"shift":13,"offset":0,},
"38": {"x":106,"y":48,"w":12,"h":21,"character":38,"shift":11,"offset":0,},
"39": {"x":102,"y":48,"w":2,"h":21,"character":39,"shift":4,"offset":1,},
"40": {"x":95,"y":48,"w":5,"h":21,"character":40,"shift":5,"offset":1,},
"41": {"x":88,"y":48,"w":5,"h":21,"character":41,"shift":5,"offset":0,},
"42": {"x":168,"y":48,"w":7,"h":21,"character":42,"shift":7,"offset":0,},
"43": {"x":77,"y":48,"w":9,"h":21,"character":43,"shift":11,"offset":1,},
"44": {"x":63,"y":48,"w":3,"h":21,"character":44,"shift":4,"offset":0,},
"45": {"x":56,"y":48,"w":5,"h":21,"character":45,"shift":6,"offset":1,},
"46": {"x":50,"y":48,"w":4,"h":21,"character":46,"shift":4,"offset":0,},
"47": {"x":40,"y":48,"w":8,"h":21,"character":47,"shift":7,"offset":-1,},
"48": {"x":29,"y":48,"w":9,"h":21,"character":48,"shift":9,"offset":0,},
"49": {"x":22,"y":48,"w":5,"h":21,"character":49,"shift":6,"offset":0,},
"50": {"x":12,"y":48,"w":8,"h":21,"character":50,"shift":9,"offset":0,},
"51": {"x":2,"y":48,"w":8,"h":21,"character":51,"shift":9,"offset":0,},
"52": {"x":240,"y":25,"w":9,"h":21,"character":52,"shift":9,"offset":0,},
"53": {"x":68,"y":48,"w":7,"h":21,"character":53,"shift":9,"offset":1,},
"54": {"x":177,"y":48,"w":9,"h":21,"character":54,"shift":9,"offset":0,},
"55": {"x":188,"y":48,"w":9,"h":21,"character":55,"shift":9,"offset":0,},
"56": {"x":199,"y":48,"w":9,"h":21,"character":56,"shift":9,"offset":0,},
"57": {"x":165,"y":71,"w":9,"h":21,"character":57,"shift":9,"offset":0,},
"58": {"x":159,"y":71,"w":4,"h":21,"character":58,"shift":4,"offset":0,},
"59": {"x":153,"y":71,"w":4,"h":21,"character":59,"shift":4,"offset":0,},
"60": {"x":143,"y":71,"w":8,"h":21,"character":60,"shift":11,"offset":2,},
"61": {"x":132,"y":71,"w":9,"h":21,"character":61,"shift":11,"offset":1,},
"62": {"x":122,"y":71,"w":8,"h":21,"character":62,"shift":11,"offset":2,},
"63": {"x":113,"y":71,"w":7,"h":21,"character":63,"shift":7,"offset":0,},
"64": {"x":97,"y":71,"w":14,"h":21,"character":64,"shift":15,"offset":1,},
"65": {"x":84,"y":71,"w":11,"h":21,"character":65,"shift":11,"offset":0,},
"66": {"x":74,"y":71,"w":8,"h":21,"character":66,"shift":10,"offset":1,},
"67": {"x":62,"y":71,"w":10,"h":21,"character":67,"shift":10,"offset":0,},
"68": {"x":50,"y":71,"w":10,"h":21,"character":68,"shift":11,"offset":1,},
"69": {"x":41,"y":71,"w":7,"h":21,"character":69,"shift":8,"offset":1,},
"70": {"x":32,"y":71,"w":7,"h":21,"character":70,"shift":8,"offset":1,},
"71": {"x":19,"y":71,"w":11,"h":21,"character":71,"shift":11,"offset":0,},
"72": {"x":7,"y":71,"w":10,"h":21,"character":72,"shift":12,"offset":1,},
"73": {"x":2,"y":71,"w":3,"h":21,"character":73,"shift":5,"offset":1,},
"74": {"x":245,"y":48,"w":6,"h":21,"character":74,"shift":6,"offset":0,},
"75": {"x":234,"y":48,"w":9,"h":21,"character":75,"shift":10,"offset":1,},
"76": {"x":225,"y":48,"w":7,"h":21,"character":76,"shift":8,"offset":1,},
"77": {"x":210,"y":48,"w":13,"h":21,"character":77,"shift":15,"offset":1,},
"78": {"x":228,"y":25,"w":10,"h":21,"character":78,"shift":12,"offset":1,},
"79": {"x":214,"y":25,"w":12,"h":21,"character":79,"shift":12,"offset":0,},
"80": {"x":204,"y":25,"w":8,"h":21,"character":80,"shift":9,"offset":1,},
"81": {"x":227,"y":2,"w":13,"h":21,"character":81,"shift":12,"offset":0,},
"82": {"x":209,"y":2,"w":10,"h":21,"character":82,"shift":10,"offset":1,},
"83": {"x":198,"y":2,"w":9,"h":21,"character":83,"shift":9,"offset":0,},
"84": {"x":187,"y":2,"w":9,"h":21,"character":84,"shift":9,"offset":0,},
"85": {"x":176,"y":2,"w":9,"h":21,"character":85,"shift":11,"offset":1,},
"86": {"x":163,"y":2,"w":11,"h":21,"character":86,"shift":10,"offset":0,},
"87": {"x":145,"y":2,"w":16,"h":21,"character":87,"shift":15,"offset":0,},
"88": {"x":133,"y":2,"w":10,"h":21,"character":88,"shift":10,"offset":0,},
"89": {"x":121,"y":2,"w":10,"h":21,"character":89,"shift":9,"offset":0,},
"90": {"x":109,"y":2,"w":10,"h":21,"character":90,"shift":9,"offset":0,},
"91": {"x":221,"y":2,"w":4,"h":21,"character":91,"shift":5,"offset":1,},
"92": {"x":99,"y":2,"w":8,"h":21,"character":92,"shift":6,"offset":-1,},
"93": {"x":85,"y":2,"w":4,"h":21,"character":93,"shift":5,"offset":0,},
"94": {"x":74,"y":2,"w":9,"h":21,"character":94,"shift":11,"offset":1,},
"95": {"x":65,"y":2,"w":7,"h":21,"character":95,"shift":7,"offset":0,},
"96": {"x":58,"y":2,"w":5,"h":21,"character":96,"shift":5,"offset":0,},
"97": {"x":48,"y":2,"w":8,"h":21,"character":97,"shift":8,"offset":0,},
"98": {"x":38,"y":2,"w":8,"h":21,"character":98,"shift":10,"offset":1,},
"99": {"x":29,"y":2,"w":7,"h":21,"character":99,"shift":8,"offset":0,},
"100": {"x":18,"y":2,"w":9,"h":21,"character":100,"shift":10,"offset":0,},
"101": {"x":8,"y":2,"w":8,"h":21,"character":101,"shift":9,"offset":0,},
"102": {"x":91,"y":2,"w":6,"h":21,"character":102,"shift":6,"offset":0,},
"103": {"x":242,"y":2,"w":9,"h":21,"character":103,"shift":10,"offset":0,},
"104": {"x":91,"y":25,"w":8,"h":21,"character":104,"shift":9,"offset":1,},
"105": {"x":2,"y":25,"w":3,"h":21,"character":105,"shift":4,"offset":1,},
"106": {"x":187,"y":25,"w":6,"h":21,"character":106,"shift":4,"offset":-2,},
"107": {"x":177,"y":25,"w":8,"h":21,"character":107,"shift":8,"offset":1,},
"108": {"x":173,"y":25,"w":2,"h":21,"character":108,"shift":4,"offset":1,},
"109": {"x":158,"y":25,"w":13,"h":21,"character":109,"shift":14,"offset":1,},
"110": {"x":148,"y":25,"w":8,"h":21,"character":110,"shift":9,"offset":1,},
"111": {"x":137,"y":25,"w":9,"h":21,"character":111,"shift":10,"offset":0,},
"112": {"x":127,"y":25,"w":8,"h":21,"character":112,"shift":10,"offset":1,},
"113": {"x":116,"y":25,"w":9,"h":21,"character":113,"shift":10,"offset":0,},
"114": {"x":109,"y":25,"w":5,"h":21,"character":114,"shift":6,"offset":1,},
"115": {"x":195,"y":25,"w":7,"h":21,"character":115,"shift":7,"offset":0,},
"116": {"x":101,"y":25,"w":6,"h":21,"character":116,"shift":6,"offset":0,},
"117": {"x":81,"y":25,"w":8,"h":21,"character":117,"shift":9,"offset":1,},
"118": {"x":70,"y":25,"w":9,"h":21,"character":118,"shift":8,"offset":0,},
"119": {"x":56,"y":25,"w":12,"h":21,"character":119,"shift":12,"offset":0,},
"120": {"x":46,"y":25,"w":8,"h":21,"character":120,"shift":8,"offset":0,},
"121": {"x":35,"y":25,"w":9,"h":21,"character":121,"shift":8,"offset":0,},
"122": {"x":25,"y":25,"w":8,"h":21,"character":122,"shift":7,"offset":0,},
"123": {"x":18,"y":25,"w":5,"h":21,"character":123,"shift":5,"offset":0,},
"124": {"x":14,"y":25,"w":2,"h":21,"character":124,"shift":4,"offset":1,},
"125": {"x":7,"y":25,"w":5,"h":21,"character":125,"shift":5,"offset":0,},
"126": {"x":176,"y":71,"w":9,"h":21,"character":126,"shift":11,"offset":1,},
"9647": {"x":187,"y":71,"w":10,"h":21,"character":9647,"shift":16,"offset":3,},
},
"kerningPairs": [
{"first":34,"second":969,"amount":-1,},
{"first":39,"second":969,"amount":-1,},
{"first":40,"second":106,"amount":1,},
{"first":40,"second":309,"amount":1,},
{"first":42,"second":65,"amount":-1,},
{"first":42,"second":74,"amount":-1,},
{"first":42,"second":256,"amount":-1,},
{"first":42,"second":258,"amount":-1,},
{"first":42,"second":260,"amount":-1,},
{"first":42,"second":308,"amount":-1,},
{"first":42,"second":506,"amount":-1,},
{"first":42,"second":508,"amount":-1,},
{"first":42,"second":913,"amount":-1,},
{"first":42,"second":916,"amount":-1,},
{"first":42,"second":923,"amount":-1,},
{"first":42,"second":1040,"amount":-1,},
{"first":44,"second":8216,"amount":-1,},
{"first":44,"second":8217,"amount":-1,},
{"first":44,"second":8220,"amount":-1,},
{"first":44,"second":8221,"amount":-1,},
{"first":46,"second":8216,"amount":-1,},
{"first":46,"second":8217,"amount":-1,},
{"first":46,"second":8220,"amount":-1,},
{"first":46,"second":8221,"amount":-1,},
{"first":65,"second":42,"amount":-1,},
{"first":65,"second":84,"amount":-1,},
{"first":65,"second":86,"amount":-1,},
{"first":65,"second":89,"amount":-1,},
{"first":65,"second":221,"amount":-1,},
{"first":65,"second":354,"amount":-1,},
{"first":65,"second":356,"amount":-1,},
{"first":65,"second":358,"amount":-1,},
{"first":65,"second":374,"amount":-1,},
{"first":65,"second":376,"amount":-1,},
{"first":65,"second":7922,"amount":-1,},
{"first":65,"second":8216,"amount":-1,},
{"first":65,"second":8217,"amount":-1,},
{"first":65,"second":8220,"amount":-1,},
{"first":65,"second":8221,"amount":-1,},
{"first":65,"second":8482,"amount":-1,},
{"first":68,"second":44,"amount":-1,},
{"first":68,"second":46,"amount":-1,},
{"first":68,"second":8218,"amount":-1,},
{"first":68,"second":8222,"amount":-1,},
{"first":68,"second":8230,"amount":-1,},
{"first":70,"second":44,"amount":-1,},
{"first":70,"second":46,"amount":-1,},
{"first":70,"second":65,"amount":-1,},
{"first":70,"second":192,"amount":-1,},
{"first":70,"second":193,"amount":-1,},
{"first":70,"second":194,"amount":-1,},
{"first":70,"second":195,"amount":-1,},
{"first":70,"second":196,"amount":-1,},
{"first":70,"second":197,"amount":-1,},
{"first":70,"second":198,"amount":-1,},
{"first":70,"second":256,"amount":-1,},
{"first":70,"second":258,"amount":-1,},
{"first":70,"second":260,"amount":-1,},
{"first":70,"second":506,"amount":-1,},
{"first":70,"second":508,"amount":-1,},
{"first":70,"second":8218,"amount":-1,},
{"first":70,"second":8222,"amount":-1,},
{"first":70,"second":8230,"amount":-1,},
{"first":74,"second":198,"amount":-1,},
{"first":74,"second":8218,"amount":-1,},
{"first":76,"second":42,"amount":-1,},
{"first":76,"second":84,"amount":-1,},
{"first":76,"second":86,"amount":-1,},
{"first":76,"second":89,"amount":-1,},
{"first":76,"second":221,"amount":-1,},
{"first":76,"second":354,"amount":-1,},
{"first":76,"second":356,"amount":-1,},
{"first":76,"second":358,"amount":-1,},
{"first":76,"second":374,"amount":-1,},
{"first":76,"second":376,"amount":-1,},
{"first":76,"second":7922,"amount":-1,},
{"first":76,"second":8216,"amount":-1,},
{"first":76,"second":8217,"amount":-1,},
{"first":76,"second":8220,"amount":-1,},
{"first":76,"second":8221,"amount":-1,},
{"first":76,"second":8482,"amount":-1,},
{"first":79,"second":8218,"amount":-1,},
{"first":79,"second":8222,"amount":-1,},
{"first":80,"second":44,"amount":-2,},
{"first":80,"second":46,"amount":-2,},
{"first":80,"second":65,"amount":-1,},
{"first":80,"second":74,"amount":-1,},
{"first":80,"second":192,"amount":-1,},
{"first":80,"second":193,"amount":-1,},
{"first":80,"second":194,"amount":-1,},
{"first":80,"second":195,"amount":-1,},
{"first":80,"second":196,"amount":-1,},
{"first":80,"second":197,"amount":-1,},
{"first":80,"second":198,"amount":-1,},
{"first":80,"second":256,"amount":-1,},
{"first":80,"second":258,"amount":-1,},
{"first":80,"second":260,"amount":-1,},
{"first":80,"second":308,"amount":-1,},
{"first":80,"second":506,"amount":-1,},
{"first":80,"second":508,"amount":-1,},
{"first":80,"second":8218,"amount":-2,},
{"first":80,"second":8222,"amount":-2,},
{"first":80,"second":8230,"amount":-1,},
{"first":81,"second":46,"amount":-1,},
{"first":81,"second":8218,"amount":-1,},
{"first":81,"second":8222,"amount":-1,},
{"first":81,"second":8230,"amount":-1,},
{"first":84,"second":44,"amount":-1,},
{"first":84,"second":46,"amount":-1,},
{"first":84,"second":65,"amount":-1,},
{"first":84,"second":74,"amount":-1,},
{"first":84,"second":97,"amount":-1,},
{"first":84,"second":99,"amount":-1,},
{"first":84,"second":100,"amount":-1,},
{"first":84,"second":101,"amount":-1,},
{"first":84,"second":103,"amount":-1,},
{"first":84,"second":109,"amount":-1,},
{"first":84,"second":110,"amount":-1,},
{"first":84,"second":111,"amount":-1,},
{"first":84,"second":112,"amount":-1,},
{"first":84,"second":113,"amount":-1,},
{"first":84,"second":114,"amount":-1,},
{"first":84,"second":115,"amount":-1,},
{"first":84,"second":117,"amount":-1,},
{"first":84,"second":119,"amount":-1,},
{"first":84,"second":120,"amount":-1,},
{"first":84,"second":121,"amount":-1,},
{"first":84,"second":122,"amount":-1,},
{"first":84,"second":192,"amount":-1,},
{"first":84,"second":193,"amount":-1,},
{"first":84,"second":194,"amount":-1,},
{"first":84,"second":195,"amount":-1,},
{"first":84,"second":196,"amount":-1,},
{"first":84,"second":197,"amount":-1,},
{"first":84,"second":198,"amount":-1,},
{"first":84,"second":224,"amount":-1,},
{"first":84,"second":225,"amount":-1,},
{"first":84,"second":226,"amount":-1,},
{"first":84,"second":227,"amount":-1,},
{"first":84,"second":228,"amount":-1,},
{"first":84,"second":229,"amount":-1,},
{"first":84,"second":230,"amount":-1,},
{"first":84,"second":231,"amount":-1,},
{"first":84,"second":232,"amount":-1,},
{"first":84,"second":233,"amount":-1,},
{"first":84,"second":234,"amount":-1,},
{"first":84,"second":235,"amount":-1,},
{"first":84,"second":239,"amount":1,},
{"first":84,"second":241,"amount":-1,},
{"first":84,"second":242,"amount":-1,},
{"first":84,"second":243,"amount":-1,},
{"first":84,"second":244,"amount":-1,},
{"first":84,"second":245,"amount":-1,},
{"first":84,"second":246,"amount":-1,},
{"first":84,"second":249,"amount":-1,},
{"first":84,"second":250,"amount":-1,},
{"first":84,"second":251,"amount":-1,},
{"first":84,"second":252,"amount":-1,},
{"first":84,"second":253,"amount":-1,},
{"first":84,"second":255,"amount":-1,},
{"first":84,"second":256,"amount":-1,},
{"first":84,"second":257,"amount":-1,},
{"first":84,"second":258,"amount":-1,},
{"first":84,"second":259,"amount":-1,},
{"first":84,"second":260,"amount":-1,},
{"first":84,"second":261,"amount":-1,},
{"first":84,"second":263,"amount":-1,},
{"first":84,"second":265,"amount":-1,},
{"first":84,"second":269,"amount":-1,},
{"first":84,"second":271,"amount":-1,},
{"first":84,"second":273,"amount":-1,},
{"first":84,"second":275,"amount":-1,},
{"first":84,"second":277,"amount":-1,},
{"first":84,"second":279,"amount":-1,},
{"first":84,"second":281,"amount":-1,},
{"first":84,"second":283,"amount":-1,},
{"first":84,"second":285,"amount":-1,},
{"first":84,"second":287,"amount":-1,},
{"first":84,"second":289,"amount":-1,},
{"first":84,"second":291,"amount":-1,},
{"first":84,"second":297,"amount":1,},
{"first":84,"second":299,"amount":1,},
{"first":84,"second":301,"amount":1,},
{"first":84,"second":308,"amount":-1,},
{"first":84,"second":324,"amount":-1,},
{"first":84,"second":328,"amount":-1,},
{"first":84,"second":331,"amount":-1,},
{"first":84,"second":333,"amount":-1,},
{"first":84,"second":335,"amount":-1,},
{"first":84,"second":337,"amount":-1,},
{"first":84,"second":339,"amount":-1,},
{"first":84,"second":341,"amount":-1,},
{"first":84,"second":343,"amount":-1,},
{"first":84,"second":345,"amount":-1,},
{"first":84,"second":347,"amount":-1,},
{"first":84,"second":349,"amount":-1,},
{"first":84,"second":351,"amount":-1,},
{"first":84,"second":353,"amount":-1,},
{"first":84,"second":361,"amount":-1,},
{"first":84,"second":363,"amount":-1,},
{"first":84,"second":365,"amount":-1,},
{"first":84,"second":367,"amount":-1,},
{"first":84,"second":369,"amount":-1,},
{"first":84,"second":371,"amount":-1,},
{"first":84,"second":373,"amount":-1,},
{"first":84,"second":375,"amount":-1,},
{"first":84,"second":378,"amount":-1,},
{"first":84,"second":380,"amount":-1,},
{"first":84,"second":382,"amount":-1,},
{"first":84,"second":506,"amount":-1,},
{"first":84,"second":507,"amount":-1,},
{"first":84,"second":508,"amount":-1,},
{"first":84,"second":509,"amount":-1,},
{"first":84,"second":511,"amount":-1,},
{"first":84,"second":537,"amount":-1,},
{"first":84,"second":7809,"amount":-1,},
{"first":84,"second":7811,"amount":-1,},
{"first":84,"second":7813,"amount":-1,},
{"first":84,"second":7923,"amount":-1,},
{"first":84,"second":8218,"amount":-1,},
{"first":84,"second":8222,"amount":-1,},
{"first":84,"second":8230,"amount":-1,},
{"first":85,"second":198,"amount":-1,},
{"first":86,"second":44,"amount":-1,},
{"first":86,"second":46,"amount":-1,},
{"first":86,"second":65,"amount":-1,},
{"first":86,"second":97,"amount":-1,},
{"first":86,"second":99,"amount":-1,},
{"first":86,"second":100,"amount":-1,},
{"first":86,"second":101,"amount":-1,},
{"first":86,"second":103,"amount":-1,},
{"first":86,"second":111,"amount":-1,},
{"first":86,"second":113,"amount":-1,},
{"first":86,"second":191,"amount":-1,},
{"first":86,"second":192,"amount":-1,},
{"first":86,"second":193,"amount":-1,},
{"first":86,"second":194,"amount":-1,},
{"first":86,"second":195,"amount":-1,},
{"first":86,"second":196,"amount":-1,},
{"first":86,"second":197,"amount":-1,},
{"first":86,"second":198,"amount":-1,},
{"first":86,"second":224,"amount":-1,},
{"first":86,"second":225,"amount":-1,},
{"first":86,"second":226,"amount":-1,},
{"first":86,"second":227,"amount":-1,},
{"first":86,"second":228,"amount":-1,},
{"first":86,"second":229,"amount":-1,},
{"first":86,"second":230,"amount":-1,},
{"first":86,"second":231,"amount":-1,},
{"first":86,"second":232,"amount":-1,},
{"first":86,"second":233,"amount":-1,},
{"first":86,"second":234,"amount":-1,},
{"first":86,"second":235,"amount":-1,},
{"first":86,"second":239,"amount":1,},
{"first":86,"second":242,"amount":-1,},
{"first":86,"second":243,"amount":-1,},
{"first":86,"second":244,"amount":-1,},
{"first":86,"second":245,"amount":-1,},
{"first":86,"second":246,"amount":-1,},
{"first":86,"second":256,"amount":-1,},
{"first":86,"second":257,"amount":-1,},
{"first":86,"second":258,"amount":-1,},
{"first":86,"second":259,"amount":-1,},
{"first":86,"second":260,"amount":-1,},
{"first":86,"second":261,"amount":-1,},
{"first":86,"second":263,"amount":-1,},
{"first":86,"second":265,"amount":-1,},
{"first":86,"second":269,"amount":-1,},
{"first":86,"second":271,"amount":-1,},
{"first":86,"second":273,"amount":-1,},
{"first":86,"second":275,"amount":-1,},
{"first":86,"second":277,"amount":-1,},
{"first":86,"second":279,"amount":-1,},
{"first":86,"second":281,"amount":-1,},
{"first":86,"second":283,"amount":-1,},
{"first":86,"second":285,"amount":-1,},
{"first":86,"second":287,"amount":-1,},
{"first":86,"second":289,"amount":-1,},
{"first":86,"second":291,"amount":-1,},
{"first":86,"second":333,"amount":-1,},
{"first":86,"second":335,"amount":-1,},
{"first":86,"second":337,"amount":-1,},
{"first":86,"second":339,"amount":-1,},
{"first":86,"second":506,"amount":-1,},
{"first":86,"second":507,"amount":-1,},
{"first":86,"second":508,"amount":-1,},
{"first":86,"second":509,"amount":-1,},
{"first":86,"second":511,"amount":-1,},
{"first":86,"second":8218,"amount":-1,},
{"first":86,"second":8222,"amount":-1,},
{"first":86,"second":8230,"amount":-1,},
{"first":87,"second":44,"amount":-1,},
{"first":87,"second":46,"amount":-1,},
{"first":87,"second":198,"amount":-1,},
{"first":87,"second":239,"amount":1,},
{"first":87,"second":8218,"amount":-1,},
{"first":87,"second":8222,"amount":-1,},
{"first":87,"second":8230,"amount":-1,},
{"first":89,"second":44,"amount":-1,},
{"first":89,"second":46,"amount":-1,},
{"first":89,"second":65,"amount":-1,},
{"first":89,"second":97,"amount":-1,},
{"first":89,"second":99,"amount":-1,},
{"first":89,"second":100,"amount":-1,},
{"first":89,"second":101,"amount":-1,},
{"first":89,"second":103,"amount":-1,},
{"first":89,"second":109,"amount":-1,},
{"first":89,"second":110,"amount":-1,},
{"first":89,"second":111,"amount":-1,},
{"first":89,"second":112,"amount":-1,},
{"first":89,"second":113,"amount":-1,},
{"first":89,"second":114,"amount":-1,},
{"first":89,"second":115,"amount":-1,},
{"first":89,"second":117,"amount":-1,},
{"first":89,"second":191,"amount":-1,},
{"first":89,"second":192,"amount":-1,},
{"first":89,"second":193,"amount":-1,},
{"first":89,"second":194,"amount":-1,},
{"first":89,"second":195,"amount":-1,},
{"first":89,"second":196,"amount":-1,},
{"first":89,"second":197,"amount":-1,},
{"first":89,"second":198,"amount":-1,},
{"first":89,"second":224,"amount":-1,},
{"first":89,"second":225,"amount":-1,},
{"first":89,"second":226,"amount":-1,},
{"first":89,"second":227,"amount":-1,},
{"first":89,"second":228,"amount":-1,},
{"first":89,"second":229,"amount":-1,},
{"first":89,"second":230,"amount":-1,},
{"first":89,"second":231,"amount":-1,},
{"first":89,"second":232,"amount":-1,},
{"first":89,"second":233,"amount":-1,},
{"first":89,"second":234,"amount":-1,},
{"first":89,"second":235,"amount":-1,},
{"first":89,"second":239,"amount":1,},
{"first":89,"second":241,"amount":-1,},
{"first":89,"second":242,"amount":-1,},
{"first":89,"second":243,"amount":-1,},
{"first":89,"second":244,"amount":-1,},
{"first":89,"second":245,"amount":-1,},
{"first":89,"second":246,"amount":-1,},
{"first":89,"second":249,"amount":-1,},
{"first":89,"second":250,"amount":-1,},
{"first":89,"second":251,"amount":-1,},
{"first":89,"second":252,"amount":-1,},
{"first":89,"second":256,"amount":-1,},
{"first":89,"second":257,"amount":-1,},
{"first":89,"second":258,"amount":-1,},
{"first":89,"second":259,"amount":-1,},
{"first":89,"second":260,"amount":-1,},
{"first":89,"second":261,"amount":-1,},
{"first":89,"second":263,"amount":-1,},
{"first":89,"second":265,"amount":-1,},
{"first":89,"second":269,"amount":-1,},
{"first":89,"second":271,"amount":-1,},
{"first":89,"second":273,"amount":-1,},
{"first":89,"second":275,"amount":-1,},
{"first":89,"second":277,"amount":-1,},
{"first":89,"second":279,"amount":-1,},
{"first":89,"second":281,"amount":-1,},
{"first":89,"second":283,"amount":-1,},
{"first":89,"second":285,"amount":-1,},
{"first":89,"second":287,"amount":-1,},
{"first":89,"second":289,"amount":-1,},
{"first":89,"second":291,"amount":-1,},
{"first":89,"second":324,"amount":-1,},
{"first":89,"second":328,"amount":-1,},
{"first":89,"second":331,"amount":-1,},
{"first":89,"second":333,"amount":-1,},
{"first":89,"second":335,"amount":-1,},
{"first":89,"second":337,"amount":-1,},
{"first":89,"second":339,"amount":-1,},
{"first":89,"second":341,"amount":-1,},
{"first":89,"second":343,"amount":-1,},
{"first":89,"second":345,"amount":-1,},
{"first":89,"second":347,"amount":-1,},
{"first":89,"second":349,"amount":-1,},
{"first":89,"second":351,"amount":-1,},
{"first":89,"second":353,"amount":-1,},
{"first":89,"second":361,"amount":-1,},
{"first":89,"second":363,"amount":-1,},
{"first":89,"second":365,"amount":-1,},
{"first":89,"second":367,"amount":-1,},
{"first":89,"second":369,"amount":-1,},
{"first":89,"second":371,"amount":-1,},
{"first":89,"second":506,"amount":-1,},
{"first":89,"second":507,"amount":-1,},
{"first":89,"second":508,"amount":-1,},
{"first":89,"second":509,"amount":-1,},
{"first":89,"second":511,"amount":-1,},
{"first":89,"second":537,"amount":-1,},
{"first":89,"second":8218,"amount":-1,},
{"first":89,"second":8222,"amount":-1,},
{"first":89,"second":8230,"amount":-1,},
{"first":91,"second":106,"amount":1,},
{"first":91,"second":309,"amount":1,},
{"first":101,"second":39,"amount":-1,},
{"first":102,"second":41,"amount":1,},
{"first":102,"second":44,"amount":-1,},
{"first":102,"second":46,"amount":-1,},
{"first":102,"second":93,"amount":1,},
{"first":102,"second":239,"amount":1,},
{"first":102,"second":297,"amount":1,},
{"first":102,"second":299,"amount":1,},
{"first":102,"second":301,"amount":1,},
{"first":102,"second":8230,"amount":-1,},
{"first":102,"second":8482,"amount":1,},
{"first":102,"second":64831,"amount":1,},
{"first":107,"second":45,"amount":-1,},
{"first":107,"second":8208,"amount":-1,},
{"first":110,"second":39,"amount":-1,},
{"first":111,"second":34,"amount":-1,},
{"first":111,"second":39,"amount":-1,},
{"first":111,"second":8217,"amount":-1,},
{"first":111,"second":8221,"amount":-1,},
{"first":112,"second":8216,"amount":-1,},
{"first":112,"second":8217,"amount":-1,},
{"first":112,"second":8221,"amount":-1,},
{"first":114,"second":44,"amount":-1,},
{"first":114,"second":45,"amount":-1,},
{"first":114,"second":46,"amount":-1,},
{"first":114,"second":8208,"amount":-1,},
{"first":114,"second":8216,"amount":1,},
{"first":114,"second":8217,"amount":1,},
{"first":114,"second":8218,"amount":-1,},
{"first":114,"second":8220,"amount":1,},
{"first":114,"second":8221,"amount":1,},
{"first":114,"second":8222,"amount":-1,},
{"first":114,"second":8230,"amount":-1,},
{"first":116,"second":45,"amount":-1,},
{"first":116,"second":8208,"amount":-1,},
{"first":118,"second":44,"amount":-1,},
{"first":118,"second":46,"amount":-1,},
{"first":118,"second":8218,"amount":-1,},
{"first":118,"second":8222,"amount":-1,},
{"first":118,"second":8230,"amount":-1,},
{"first":121,"second":44,"amount":-1,},
{"first":121,"second":46,"amount":-1,},
{"first":121,"second":8218,"amount":-1,},
{"first":121,"second":8222,"amount":-1,},
{"first":121,"second":8230,"amount":-1,},
{"first":123,"second":106,"amount":1,},
{"first":123,"second":309,"amount":1,},
],
"ranges": [
{"lower":32,"upper":127,},
{"lower":9647,"upper":9647,},
],
"regenerateBitmap": false,
"canGenerateBitmap": true,
"maintainGms1Font": false,
"parent": {
"name": "font",
"path": "folders/font.yy",
},
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -24,7 +24,7 @@
"path": "texturegroups/Default", "path": "texturegroups/Default",
}, },
"ascenderOffset": 0, "ascenderOffset": 0,
"ascender": 0, "ascender": 15,
"glyphs": { "glyphs": {
"32": {"x":2,"y":2,"w":4,"h":21,"character":32,"shift":4,"offset":0,}, "32": {"x":2,"y":2,"w":4,"h":21,"character":32,"shift":4,"offset":0,},
"33": {"x":163,"y":48,"w":3,"h":21,"character":33,"shift":5,"offset":1,}, "33": {"x":163,"y":48,"w":3,"h":21,"character":33,"shift":5,"offset":1,},

View file

@ -2,5 +2,5 @@
if(sHOVER) HOVER = noone; if(sHOVER) HOVER = noone;
if(sFOCUS) setFocus(noone); if(sFOCUS) setFocus(noone);
TEXTBOX_ACTIVE = noone; WIDGET_CURRENT = noone;
ds_list_remove(DIALOGS, self); ds_list_remove(DIALOGS, self);

View file

@ -5,3 +5,17 @@ name = "Key display";
alpha = 0; alpha = 0;
disp_text = ""; disp_text = "";
depth = -999; depth = -999;
extra_keys = [
[vk_control, "Ctrl"],
[vk_shift, "Shift"],
[vk_alt, "Alt"],
[vk_tab, "Tab"],
[vk_backspace, "Backspace"],
[vk_delete, "Delete"],
[vk_escape, "Escape"],
[vk_up, "Up"],
[vk_down, "Down"],
[vk_left, "Left"],
[vk_right, "Right"],
]

View file

@ -2,12 +2,10 @@
#region draw #region draw
var key = ""; var key = "";
if(keyboard_check(vk_control)) for( var i = 0; i < array_length(extra_keys); i++ ) {
key += "Ctrl"; if(keyboard_check(extra_keys[i][0]))
if(keyboard_check(vk_shift)) key += key == ""? extra_keys[i][1] : (" + " + extra_keys[i][1]);
key += key == ""? "Shift" : " + Shift"; }
if(keyboard_check(vk_alt))
key += key == ""? "Alt" : " + Alt";
if(keyboard_check(vk_anykey)) { if(keyboard_check(vk_anykey)) {
var pres = keyboard_lastkey; var pres = keyboard_lastkey;

View file

@ -195,8 +195,9 @@ event_inherited();
var spr_x = _boxx + grid_size / 2; var spr_x = _boxx + grid_size / 2;
var spr_y = yy + grid_size / 2; var spr_y = yy + grid_size / 2;
if(variable_struct_exists(_node, "spr") && sprite_exists(_node.spr))
draw_sprite_ui_uniform(_node.spr, 0, spr_x, spr_y); if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
if(sprite_exists(_node.spr)) draw_sprite_ui_uniform(_node.spr, 0, spr_x, spr_y);
if(_node.new_node) if(_node.new_node)
draw_sprite_ui_uniform(THEME.node_new_badge, 0, _boxx + grid_size - ui(12), yy + ui(6)); draw_sprite_ui_uniform(THEME.node_new_badge, 0, _boxx + grid_size - ui(12), yy + ui(6));
@ -260,7 +261,9 @@ event_inherited();
var spr_x = list_height / 2 + ui(14); var spr_x = list_height / 2 + ui(14);
var spr_y = yy + list_height / 2; var spr_y = yy + list_height / 2;
if(variable_struct_exists(_node, "spr") && sprite_exists(_node.spr)) {
if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
if(sprite_exists(_node.spr)) {
var ss = (list_height - ui(8)) / max(sprite_get_width(_node.spr), sprite_get_height(_node.spr)); var ss = (list_height - ui(8)) / max(sprite_get_width(_node.spr), sprite_get_height(_node.spr));
draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1); draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1);
} }
@ -286,8 +289,8 @@ event_inherited();
#region resize #region resize
dialog_resizable = true; dialog_resizable = true;
dialog_w_min = ui(200); dialog_w_min = ui(320);
dialog_h_min = ui(120); dialog_h_min = ui(320);
dialog_w_max = ui(960); dialog_w_max = ui(960);
dialog_h_max = ui(800); dialog_h_max = ui(800);
@ -313,7 +316,7 @@ event_inherited();
searchNodes(); searchNodes();
}); });
tb_search.auto_update = true; tb_search.auto_update = true;
TEXTBOX_ACTIVE = tb_search; WIDGET_CURRENT = tb_search;
function searchNodes() { function searchNodes() {
ds_list_clear(search_list); ds_list_clear(search_list);
@ -394,7 +397,8 @@ event_inherited();
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1); draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
BLEND_NORMAL BLEND_NORMAL
if(variable_struct_exists(_node, "spr") && sprite_exists(_node.spr)) { if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
if(sprite_exists(_node.spr)) {
var _si = current_time * PREF_MAP[? "collection_preview_speed"] / 3000; var _si = current_time * PREF_MAP[? "collection_preview_speed"] / 3000;
var _sw = sprite_get_width(_node.spr); var _sw = sprite_get_width(_node.spr);
var _sh = sprite_get_height(_node.spr); var _sh = sprite_get_height(_node.spr);
@ -460,7 +464,8 @@ event_inherited();
BLEND_NORMAL BLEND_NORMAL
} }
if(variable_struct_exists(_node, "spr") && sprite_exists(_node.spr)) { if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
if(sprite_exists(_node.spr)) {
var _si = current_time * PREF_MAP[? "collection_preview_speed"] / 3000; var _si = current_time * PREF_MAP[? "collection_preview_speed"] / 3000;
var _sw = sprite_get_width(_node.spr); var _sw = sprite_get_width(_node.spr);
var _sh = sprite_get_height(_node.spr); var _sh = sprite_get_height(_node.spr);

View file

@ -1,4 +1,4 @@
/// @description /// @description
event_inherited(); event_inherited();
TEXTBOX_ACTIVE = noone; WIDGET_CURRENT = noone;

View file

@ -8,7 +8,7 @@ if !ready exit;
#endregion #endregion
#region search #region search
TEXTBOX_ACTIVE = tb_search; WIDGET_CURRENT = tb_search;
if(search_string == "") { if(search_string == "") {
tb_search.focus = false; tb_search.focus = false;

View file

@ -87,14 +87,15 @@ event_inherited();
} }
} }
if(sprite_exists(content.spr)) { var spr = content.getSpr();
var sw = sprite_get_width(content.spr); if(sprite_exists(spr)) {
var sh = sprite_get_height(content.spr); var sw = sprite_get_width(spr);
var sh = sprite_get_height(spr);
var ss = img_size / max(sw, sh); var ss = img_size / max(sw, sh);
var sx = xx + (grid_size - sw * ss) / 2; var sx = xx + (grid_size - sw * ss) / 2;
var sy = yy + (grid_size - sh * ss) / 2; var sy = yy + (grid_size - sh * ss) / 2;
draw_sprite_ext(content.spr, frame, sx, sy, ss, ss, 0, c_white, 1); draw_sprite_ext(spr, frame, sx, sy, ss, ss, 0, c_white, 1);
} }
} }
} }

View file

@ -22,6 +22,6 @@ event_inherited();
instance_destroy(); instance_destroy();
}); });
TEXTBOX_ACTIVE = tb_name; WIDGET_CURRENT = tb_name;
KEYBOARD_STRING = ""; KEYBOARD_STRING = "";
#endregion #endregion

View file

@ -0,0 +1,9 @@
/// @description init
#region pos
var hght = line_height(f_p0, 8);
var hh = array_length(FONT_INTERNAL) * hght;
dialog_h = min(max_h, hh);
sc_content.resize(dialog_w, dialog_h);
#endregion
event_inherited();

View file

@ -0,0 +1,52 @@
/// @description init
event_inherited();
#region
dialog_w = 560;
max_h = 640;
draggable = false;
destroy_on_click_out = true;
scrollbox = noone;
anchor = ANCHOR.top | ANCHOR.left;
sc_content = new scrollPane(0, 0, function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
var hght = line_height(f_p0, 8);
var data = FONT_INTERNAL;
var _h = array_length(data) * hght;
var _dw = sc_content.surface_w;
for(var i = 0; i < array_length(data); i++) {
var _ly = _y + i * hght;
var fullpath = DIRECTORY + "Fonts/" + data[i];
if(sHOVER && sc_content.hover && point_in_rectangle(_m[0], _m[1], 0, _ly + 1, _dw, _ly + hght - 1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, 0, _ly, _dw, hght, COLORS.dialog_menubox_highlight, 1);
if(mouse_press(mb_left, sFOCUS)) {
scrollbox.onModify(i);
instance_destroy();
}
}
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
draw_text_cut(ui(8), _ly + hght / 2, data[i], _dw);
if(ds_map_exists(FONT_SPRITES, fullpath)) {
var spr = FONT_SPRITES[? fullpath];
var sw = sprite_get_width(spr);
var sh = sprite_get_height(spr);
var ss = (hght - ui(8)) / sh;
sw *= ss;
sh *= ss;
draw_sprite_ext(spr, 0, _dw - ui(8) - sw, _ly + hght / 2 - sh / 2, ss, ss, 0, c_white, 1);
}
}
return _h;
});
#endregion

View file

@ -0,0 +1,4 @@
/// @description init
event_inherited();
scrollbox.open = false;

View file

@ -0,0 +1,9 @@
/// @description init
#region draw
draw_sprite_stretched(THEME.textbox, 3, dialog_x, dialog_y, dialog_w, dialog_h);
sc_content.active = sHOVER;
sc_content.draw(dialog_x, dialog_y);
draw_sprite_stretched(THEME.textbox, 1, dialog_x, dialog_y, dialog_w, dialog_h);
#endregion

View file

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

View file

@ -2,7 +2,7 @@
event_inherited(); event_inherited();
#region data #region data
dialog_w = ui(812); dialog_w = ui(1068);
dialog_h = ui(476); dialog_h = ui(476);
name = "Gradient editor"; name = "Gradient editor";
@ -137,6 +137,92 @@ event_inherited();
}) })
#endregion #endregion
#region palette
palettes = ds_list_create();
palette_name = ds_list_create();
palette_selecting = -1;
function paletteCollect() {
ds_list_clear(palettes);
ds_list_clear(palette_name);
var path = DIRECTORY + "Palettes/"
var file = file_find_first(path + "*", 0);
while(file != "") {
ds_list_add(palettes, loadPalette(path + file));
ds_list_add(palette_name, filename_name(file));
file = file_find_next();
}
file_find_close();
}
paletteCollect();
sp_palette_w = ui(240 - 32 - 16);
sp_palette_size = ui(24);
click_block = false;
sp_palettes = new scrollPane(sp_palette_w, dialog_h - ui(62), function(_y, _m) {
var ww = sp_palette_w - ui(40);
var hh = ui(32);
var _gs = sp_palette_size;
var yy = _y + ui(8);
var _height, pre_amo;
var _hover = sHOVER && sp_palettes.hover;
draw_clear_alpha(COLORS.panel_bg_clear, 0);
for(var i = 0; i < ds_list_size(palettes); i++) {
pre_amo = array_length(palettes[| i]);
var col = floor(ww / _gs);
var row = ceil(pre_amo / col);
if(palette_selecting == i)
_height = ui(28) + row * _gs + ui(12);
else
_height = ui(56);
var isHover = _hover && point_in_rectangle(_m[0], _m[1], ui(4), yy, ui(4) + sp_palette_w - ui(16), yy + _height);
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(4), yy, sp_palette_w - ui(16), _height);
if(isHover)
draw_sprite_stretched_ext(THEME.node_active, 1, ui(4), yy, sp_palette_w - ui(16), _height, COLORS._main_accent, 1);
draw_set_text(f_p2, fa_left, fa_top, COLORS._main_text_sub);
draw_text(ui(16), yy + ui(8), palette_name[| i]);
if(palette_selecting == i)
drawPaletteGrid(palettes[| i], ui(16), yy + ui(28), ww, _gs);
else
drawPalette(palettes[| i], ui(16), yy + ui(28), ww, ui(20));
if(!click_block && mouse_click(mb_left, sFOCUS)) {
if(palette_selecting == i && _hover && point_in_rectangle(_m[0], _m[1], ui(16), yy + ui(28), ui(16) + ww, yy + ui(28) + _height)) {
var m_ax = _m[0] - ui(16);
var m_ay = _m[1] - (yy + ui(28));
var m_gx = floor(m_ax / _gs);
var m_gy = floor(m_ay / _gs);
var _index = m_gy * col + m_gx;
if(_index < pre_amo && _index >= 0) {
selector.setColor(palettes[| i][_index]);
selector.setHSV();
}
} else if(isHover) {
palette_selecting = i;
click_block = true;
}
}
yy += _height + ui(4);
hh += _height + ui(4);
}
if(mouse_release(mb_left))
click_block = false;
return hh;
})
#endregion
#region action #region action
function checkMouse() {} function checkMouse() {}
#endregion #endregion

View file

@ -13,7 +13,9 @@ if !ready exit;
var presets_w = ui(240); var presets_w = ui(240);
var content_x = dialog_x + presets_w + ui(16); var content_x = dialog_x + presets_w + ui(16);
var content_w = dialog_w - presets_w - ui(16); var content_w = ui(556);
var palette_x = content_x + content_w + ui(16);
draw_sprite_stretched(THEME.dialog_bg, 0, presets_x, dialog_y, presets_w, dialog_h); draw_sprite_stretched(THEME.dialog_bg, 0, presets_x, dialog_y, presets_w, dialog_h);
if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, presets_x, dialog_y, presets_w, dialog_h, COLORS._main_accent, 1); if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, presets_x, dialog_y, presets_w, dialog_h, COLORS._main_accent, 1);
@ -21,9 +23,13 @@ if !ready exit;
draw_sprite_stretched(THEME.dialog_bg, 0, content_x, dialog_y, content_w, dialog_h); draw_sprite_stretched(THEME.dialog_bg, 0, content_x, dialog_y, content_w, dialog_h);
if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, content_x, dialog_y, content_w, dialog_h, COLORS._main_accent, 1); if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, content_x, dialog_y, content_w, dialog_h, COLORS._main_accent, 1);
draw_sprite_stretched(THEME.dialog_bg, 0, palette_x, dialog_y, presets_w, dialog_h);
if(sFOCUS) draw_sprite_stretched_ext(THEME.dialog_active, 0, palette_x, dialog_y, presets_w, dialog_h, COLORS._main_accent, 1);
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text_title); draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text_title);
draw_text(presets_x + ui(24), dialog_y + ui(16), "Presets"); draw_text(presets_x + ui(24), dialog_y + ui(16), "Presets");
draw_text(content_x + ui(24), dialog_y + ui(16), name); draw_text(content_x + ui(24), dialog_y + ui(16), name);
draw_text(palette_x + ui(24), dialog_y + ui(16), "Palettes");
#endregion #endregion
#region presets #region presets
@ -72,6 +78,13 @@ if !ready exit;
bx -= ui(32); bx -= ui(32);
#endregion #endregion
#region palette
draw_sprite_stretched(THEME.ui_panel_bg, 0, palette_x + ui(16), dialog_y + ui(44), ui(240 - 32), dialog_h - ui(60));
sp_palettes.active = sFOCUS;
sp_palettes.draw(palette_x + ui(16 + 8), dialog_y + ui(44));
#endregion
#region gradient #region gradient
var gr_x = content_x + ui(22); var gr_x = content_x + ui(22);
var gr_y = dialog_y + ui(54); var gr_y = dialog_y + ui(54);

View file

@ -15,6 +15,29 @@ event_inherited();
current_page = 0; current_page = 0;
filter = NOTI_TYPE.log | NOTI_TYPE.warning | NOTI_TYPE.error; filter = NOTI_TYPE.log | NOTI_TYPE.warning | NOTI_TYPE.error;
rightClickMenu = [
[ "Clear log messages", function() {
for( var i = ds_list_size(STATUSES) - 1; i >= 0; i-- ) {
if(STATUSES[| i].type == NOTI_TYPE.log)
ds_list_delete(STATUSES, i);
}
} ],
[ "Clear warning messages", function() {
for( var i = ds_list_size(STATUSES) - 1; i >= 0; i-- ) {
if(STATUSES[| i].type == NOTI_TYPE.warning)
ds_list_delete(STATUSES, i);
}
} ],
-1,
[ "Clear all notifications", function() {
ds_list_clear(STATUSES);
} ],
-1,
[ "Open log file", function() {
shellOpenExplorer(DIRECTORY + "log.txt");
} ],
];
sp_noti = new scrollPane(dialog_w - ui(80), dialog_h - ui(88), function(_y, _m) { sp_noti = new scrollPane(dialog_w - ui(80), dialog_h - ui(88), function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear, 0); draw_clear_alpha(COLORS.panel_bg_clear, 0);
@ -35,14 +58,17 @@ event_inherited();
var _w = sp_noti.w - ui(12); var _w = sp_noti.w - ui(12);
var _h = ui(8) + string_height_ext(noti.txt, -1, txw) + ui(8); var _h = ui(8) + string_height_ext(noti.txt, -1, txw) + ui(8);
var cc = COLORS.dialog_notification_bg;
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg, 1); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg, 1);
if(sHOVER && sp_noti.hover && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) { if(sHOVER && sp_noti.hover && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) {
cc = COLORS.dialog_notification_bg_hover; draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS.dialog_notification_bg_hover, 1);
if(noti.tooltip != "")
TOOLTIP = noti.tooltip;
if(noti.onClick != noone && mouse_press(mb_left, sFOCUS)) if(noti.onClick != noone && mouse_press(mb_left, sFOCUS))
noti.onClick(); noti.onClick();
if(mouse_press(mb_right, sFOCUS)) { if(mouse_press(mb_right, sFOCUS)) {
var dia = dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8)); var dia = dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8));
dia.noti = noti; dia.noti = noti;
@ -50,12 +76,13 @@ event_inherited();
[ "Copy notification message", function() { [ "Copy notification message", function() {
clipboard_set_text(o_dialog_menubox.noti.txt); clipboard_set_text(o_dialog_menubox.noti.txt);
} ], } ],
[ "Delete notification", function() {
ds_list_remove(STATUSES, o_dialog_menubox.noti);
} ],
]); ]);
} }
} }
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), _w, _h - ui(4), cc, 1);
if(noti.life_max > 0) { if(noti.life_max > 0) {
var _nwx = sp_noti.w - ui(12) - ui(40); var _nwx = sp_noti.w - ui(12) - ui(40);
var _nw = _nwx * noti.life / noti.life_max; var _nw = _nwx * noti.life / noti.life_max;
@ -65,6 +92,9 @@ event_inherited();
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), ui(48), _h - ui(4), noti.color, 1); draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), ui(48), _h - ui(4), noti.color, 1);
if(noti.icon_end != noone)
draw_sprite_ui(noti.icon_end, 1, _w - ui(24), yy + _h / 2,,,, COLORS._main_icon);
var ic = noti.icon; var ic = noti.icon;
if(noti.icon == noone) { if(noti.icon == noone) {
switch(noti.type) { switch(noti.type) {
@ -78,11 +108,13 @@ event_inherited();
var tx = ui(48) + timeW + ui(12); var tx = ui(48) + timeW + ui(12);
if(yy >= -_h && yy <= sp_noti.h) {
draw_set_text(f_p3, fa_right, fa_center, COLORS._main_text_sub); draw_set_text(f_p3, fa_right, fa_center, COLORS._main_text_sub);
draw_text_ext(tx - ui(4), yy + _h / 2, noti.time, -1, txw); draw_text_ext(tx - ui(4), yy + _h / 2, noti.time, -1, txw);
draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p2, fa_left, fa_center, COLORS._main_text);
draw_text_ext(tx + ui(4), yy + _h / 2, noti.txt, -1, txw); draw_text_ext(tx + ui(4), yy + _h / 2, noti.txt, -1, txw);
}
yy += _h; yy += _h;
hh += _h; hh += _h;

View file

@ -17,18 +17,21 @@ if !ready exit;
var by = dialog_y + ui(16) + line_height() / 2 - hh / 2; var by = dialog_y + ui(16) + line_height() / 2 - hh / 2;
var error = !!(filter & NOTI_TYPE.error); var error = !!(filter & NOTI_TYPE.error);
if(buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_error, error, c_white, 0.3 + error * 0.7) == 2) var b = buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_error, error, c_white, 0.3 + error * 0.7);
filter = filter ^ NOTI_TYPE.error; if(b == 2) filter = filter ^ NOTI_TYPE.error;
if(b == 3) dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8)).setMenu(rightClickMenu);
bx -= ui(36); bx -= ui(36);
var warn = !!(filter & NOTI_TYPE.warning); var warn = !!(filter & NOTI_TYPE.warning);
if(buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_warning, warn, c_white, 0.3 + warn * 0.7) == 2) var b = buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_warning, warn, c_white, 0.3 + warn * 0.7);
filter = filter ^ NOTI_TYPE.warning; if(b == 2) filter = filter ^ NOTI_TYPE.warning;
if(b == 3) dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8)).setMenu(rightClickMenu);
bx -= ui(36); bx -= ui(36);
var log = !!(filter & NOTI_TYPE.log); var log = !!(filter & NOTI_TYPE.log);
if(buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_log, log, c_white, 0.3 + log * 0.7) == 2) var b = buttonInstant(THEME.button_hide, bx, by, ww, hh, mouse_ui, sFOCUS, sHOVER,, THEME.noti_icon_log, log, c_white, 0.3 + log * 0.7);
filter = filter ^ NOTI_TYPE.log; if(b == 2) filter = filter ^ NOTI_TYPE.log;
if(b == 3) dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8)).setMenu(rightClickMenu);
draw_sprite_stretched(THEME.ui_panel_bg, 0, dialog_x + ui(24), dialog_y + ui(48), dialog_w - ui(48), dialog_h - ui(72)); draw_sprite_stretched(THEME.ui_panel_bg, 0, dialog_x + ui(24), dialog_y + ui(48), dialog_w - ui(48), dialog_h - ui(72));
sp_noti.active = sHOVER; sp_noti.active = sHOVER;

View file

@ -281,7 +281,7 @@ event_inherited();
var cw = ui(100); var cw = ui(100);
var ch = th - ui(4); var ch = th - ui(4);
var cx = x1 - cw; var cx = x1 - cw - ui(8);
var category = ""; var category = "";
for( var i = 0; i < array_length(COLOR_KEYS); i++ ) { for( var i = 0; i < array_length(COLOR_KEYS); i++ ) {
@ -304,7 +304,7 @@ event_inherited();
} }
if(ind % 2 == 0) if(ind % 2 == 0)
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, yy - padd, sp_colors.w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1); draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, yy - padd, sp_colors.surface_w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1);
var keyStr = string_replace_all(key, "_", " "); var keyStr = string_replace_all(key, "_", " ");
keyStr = string_replace(keyStr, cat + " ", ""); keyStr = string_replace(keyStr, cat + " ", "");
@ -355,6 +355,17 @@ event_inherited();
var padd = ui(6); var padd = ui(6);
var ind = 0; var ind = 0;
for(var i = 0; i < ds_list_size(current_list); i++) {
var _pref = current_list[| i];
if(is_string(_pref)) continue;
var name = _pref[0];
if(search_text != "" && string_pos(string_lower(search_text), string_lower(name)) == 0)
continue;
_pref[2].register(sp_pref);
}
for(var i = 0; i < ds_list_size(current_list); i++) { for(var i = 0; i < ds_list_size(current_list); i++) {
var _pref = current_list[| i]; var _pref = current_list[| i];
@ -373,7 +384,7 @@ event_inherited();
continue; continue;
if(ind % 2 == 0) if(ind % 2 == 0)
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, yy - padd, sp_pref.w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1); draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, yy - padd, sp_pref.surface_w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1);
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text); draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(ui(8), yy + th / 2, _pref[0]); draw_text(ui(8), yy + th / 2, _pref[0]);
@ -430,6 +441,8 @@ event_inherited();
var hh = 0; var hh = 0;
var currGroup = -1; var currGroup = -1;
var x1 = sp_hotkey.surface_w; var x1 = sp_hotkey.surface_w;
var key_x1 = x1 - ui(32);
var modified = false;
for(var j = 0; j < ds_list_size(HOTKEY_CONTEXT); j++) { for(var j = 0; j < ds_list_size(HOTKEY_CONTEXT); j++) {
var ll = HOTKEYS[? HOTKEY_CONTEXT[| j]]; var ll = HOTKEYS[? HOTKEY_CONTEXT[| j]];
@ -439,7 +452,10 @@ event_inherited();
var group = key.context; var group = key.context;
var name = key.name; var name = key.name;
var pkey = key.key; var pkey = key.key;
//var modi = key.modi; var modi = key.modi;
var dkey = key.dKey;
var dmod = key.dModi;
if(search_text != "" && string_pos(string_lower(search_text), string_lower(name)) == 0) if(search_text != "" && string_pos(string_lower(search_text), string_lower(name)) == 0)
continue; continue;
@ -457,7 +473,7 @@ event_inherited();
if(i % 2 == 0) { if(i % 2 == 0) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh - padd, draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh - padd,
sp_hotkey.w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1); sp_hotkey.surface_w, th + padd * 2, COLORS.dialog_preference_prop_bg, 1);
} }
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text); draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text);
@ -480,20 +496,25 @@ event_inherited();
PREF_SAVE(); PREF_SAVE();
} else if(keyboard_check_pressed(vk_anykey)) { } else if(keyboard_check_pressed(vk_anykey)) {
var press = false; var press = false;
for(var a = 32; a <= 126; a++) {
if(keyboard_check_pressed(a)) {
key.key = ord(string_upper(ansi_char(a)));
press = true;
break;
}
}
if(!press) {
for(var a = 0; a < array_length(vk_list); a++) { for(var a = 0; a < array_length(vk_list); a++) {
if(keyboard_check_pressed(vk_list[a])) { if(!keyboard_check_pressed(vk_list[a])) continue;
key.key = vk_list[a]; key.key = vk_list[a];
press = true; press = true;
break; break;
} }
if(!press) {
var k = ds_map_find_first(global.KEY_STRING_MAP);
var amo = ds_map_size(global.KEY_STRING_MAP);
repeat(amo) {
if(!keyboard_check_pressed(k)) {
k = ds_map_find_next(global.KEY_STRING_MAP, k);
continue;
}
key.key = k;
press = true;
break;
} }
} }
@ -501,21 +522,47 @@ event_inherited();
PREF_SAVE(); PREF_SAVE();
} }
draw_sprite_stretched(THEME.button_hide, 2, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12)); draw_sprite_stretched(THEME.button_hide, 2, key_x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12));
} else { } else {
if(buttonInstant(THEME.button_hide, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12), var bx = key_x1 - ui(40) - kw;
_m, sFOCUS, sHOVER && sp_hotkey.hover) == 2) { var by = _y + hh - ui(6);
if(buttonInstant(THEME.button_hide, bx, by, kw + ui(32), th + ui(12), _m, sFOCUS, sHOVER && sp_hotkey.hover) == 2) {
hk_editing = key; hk_editing = key;
keyboard_lastchar = pkey; keyboard_lastchar = pkey;
} }
} }
draw_set_text(f_p0, fa_right, fa_top, hk_editing == key? COLORS._main_text_accent : COLORS._main_text); draw_set_text(f_p0, fa_right, fa_top, hk_editing == key? COLORS._main_text_accent : COLORS._main_text);
draw_text(x1 - ui(24), _y + hh, dk); draw_text(key_x1 - ui(24), _y + hh, dk);
if(key.key != dkey || key.modi != dmod) {
modified = true;
var bx = x1 - ui(32);
var by = _y + hh;
if(buttonInstant(THEME.button_hide, bx, by, ui(24), ui(24), _m, sFOCUS, sHOVER && sp_hotkey.hover, "Reset", THEME.refresh_s) == 2) {
key.key = dkey;
key.modi = dmod;
}
}
hh += th + padd * 2; hh += th + padd * 2;
} }
} }
if(modified) {
var bx = x1 - ui(32);
var by = _y + ui(2);
if(buttonInstant(THEME.button_hide, bx, by, ui(24), ui(24), _m, sFOCUS, sHOVER && sp_hotkey.hover, "Reset all", THEME.refresh_s) == 2) {
for(var j = 0; j < ds_list_size(HOTKEY_CONTEXT); j++) {
var ll = HOTKEYS[? HOTKEY_CONTEXT[| j]];
for(var i = 0; i < ds_list_size(ll); i++) {
var key = ll[| i];
key.key = key.dKey;
key.modi = key.dModi;
}
}
}
}
return hh; return hh;
}) })
#endregion #endregion

View file

@ -79,7 +79,7 @@ if !ready exit;
sp_colors.active = sHOVER; sp_colors.active = sHOVER;
sp_colors.draw(dialog_x + ui(168), yy + ui(40)); sp_colors.draw(dialog_x + ui(168), yy + ui(40));
} else if(page_current == 2) { } else if(page_current == 4) {
if(mouse_press(mb_left, sFOCUS)) if(mouse_press(mb_left, sFOCUS))
hk_editing = noone; hk_editing = noone;

View file

@ -40,7 +40,7 @@
addHotkey("", "Undo", "Z", MOD_KEY.ctrl, function() { UNDO(); }); addHotkey("", "Undo", "Z", MOD_KEY.ctrl, function() { UNDO(); });
addHotkey("", "Redo", "Z", MOD_KEY.ctrl | MOD_KEY.shift, function() { REDO(); }); addHotkey("", "Redo", "Z", MOD_KEY.ctrl | MOD_KEY.shift, function() { REDO(); });
addHotkey("", "Full panel", vk_tab, MOD_KEY.none, set_focus_fullscreen); addHotkey("", "Full panel", "`", MOD_KEY.none, set_focus_fullscreen);
addHotkey("", "Render all", vk_f5, MOD_KEY.none, function() { addHotkey("", "Render all", vk_f5, MOD_KEY.none, function() {
UPDATE |= RENDER_TYPE.full; UPDATE |= RENDER_TYPE.full;
@ -84,6 +84,10 @@
case ".json" : case ".json" :
node = Node_create_Json_File_Read_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path); node = Node_create_Json_File_Read_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
break; break;
case ".ase" :
case ".aseprite" :
node = Node_create_ASE_File_Read_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
break;
case ".png" : case ".png" :
case ".jpg" : case ".jpg" :
case ".jpeg" : case ".jpeg" :

View file

@ -1,4 +1,18 @@
/// @description init /// @description init
#region widget scroll
if(keyboard_check_pressed(vk_tab) && keyboard_check(vk_shift))
widget_previous();
else if(keyboard_check_pressed(vk_tab))
widget_next();
if(keyboard_check_pressed(vk_enter))
widget_trigger();
#endregion
#region register UI element
WIDGET_ACTIVE = [];
#endregion
#region panels #region panels
if(PANEL_MAIN != 0) { if(PANEL_MAIN != 0) {
PANEL_MAIN.draw(); PANEL_MAIN.draw();

View file

@ -1,2 +1,3 @@
/// @description init /// @description init
MODIFIED = false; MODIFIED = false;
PREF_LOAD();

View file

@ -50,6 +50,7 @@
var l = HOTKEYS[? ""]; var l = HOTKEYS[? ""];
for(var i = 0; i < ds_list_size(l); i++) { for(var i = 0; i < ds_list_size(l); i++) {
var hotkey = l[| i]; var hotkey = l[| i];
var name = hotkey.name;
if(key_press(hotkey.key, hotkey.modi)) { if(key_press(hotkey.key, hotkey.modi)) {
hotkey.action(); hotkey.action();

View file

@ -34,7 +34,7 @@
_k = ds_map_find_next(NODE_MAP, _k); _k = ds_map_find_next(NODE_MAP, _k);
} }
if(UPDATE & RENDER_TYPE.full || ANIMATOR.rendering) if(UPDATE & RENDER_TYPE.full || (ANIMATOR.rendering && ANIMATOR.frame_progress))
Render(); Render();
if(UPDATE & RENDER_TYPE.partial) if(UPDATE & RENDER_TYPE.partial)
Render(true); Render(true);

View file

@ -2,9 +2,12 @@
"resourceType": "GMWindowsOptions", "resourceType": "GMWindowsOptions",
"resourceVersion": "1.1", "resourceVersion": "1.1",
"name": "Windows", "name": "Windows",
"option_windows_display_name": "Pixel Composer 1.0.9", "ConfigValues": {
"option_windows_executable_name": "${project_name} 1.0.9.exe", "Tester": {"option_windows_version":"1.1.0.1","option_windows_executable_name":"${project_name} 1.1.0.1.exe","option_windows_display_name":"Pixel Composer 1.1.0.1",},
"option_windows_version": "1.0.9.0", },
"option_windows_display_name": "Pixel Composer 1.1.0",
"option_windows_executable_name": "${project_name} 1.1.0.exe",
"option_windows_version": "1.1.0.0",
"option_windows_company_info": "MakhamDev", "option_windows_company_info": "MakhamDev",
"option_windows_product_info": "Pixel Composer", "option_windows_product_info": "Pixel Composer",
"option_windows_copyright_info": "", "option_windows_copyright_info": "",

View file

@ -66,13 +66,13 @@ enum CAMERA_PROJ {
vertex_add_pnt(VB, [_0, _0, _0], [0, 0, -1], [0, 0]); vertex_add_pnt(VB, [_0, _0, _0], [0, 0, -1], [0, 0]);
vertex_add_pnt(VB, [_0, _1, _0], [0, 0, -1], [0, 1]); vertex_add_pnt(VB, [_0, _1, _0], [0, 0, -1], [0, 1]);
vertex_add_pnt(VB, [_1, _0, _1], [0, 0, 1], [1, 0]); vertex_add_pnt(VB, [_1, _0, _1], [0, 0, 1], [0, 0]);
vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [0, 0]); vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [1, 0]);
vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [1, 1]); vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [0, 1]);
vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [1, 1]); vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [0, 1]);
vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [0, 0]); vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [1, 0]);
vertex_add_pnt(VB, [_0, _1, _1], [0, 0, 1], [0, 1]); vertex_add_pnt(VB, [_0, _1, _1], [0, 0, 1], [1, 1]);
vertex_add_pnt(VB, [_1, _0, _0], [0, 1, 0], [1, 0]); vertex_add_pnt(VB, [_1, _0, _0], [0, 1, 0], [1, 0]);
@ -92,13 +92,13 @@ enum CAMERA_PROJ {
vertex_add_pnt(VB, [_0, _1, _1], [0, -1, 0], [0, 1]); vertex_add_pnt(VB, [_0, _1, _1], [0, -1, 0], [0, 1]);
vertex_add_pnt(VB, [_0, _1, _0], [1, 0, 0], [0, 1]); vertex_add_pnt(VB, [_0, _1, _0], [1, 0, 0], [1, 1]);
vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [0, 0]); vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [1, 0]);
vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [1, 1]); vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [0, 1]);
vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [1, 1]); vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [0, 1]);
vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [0, 0]); vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [1, 0]);
vertex_add_pnt(VB, [_0, _0, _1], [1, 0, 0], [1, 0]); vertex_add_pnt(VB, [_0, _0, _1], [1, 0, 0], [0, 0]);
vertex_add_pnt(VB, [_1, _1, _0], [-1, 0, 0], [0, 1]); vertex_add_pnt(VB, [_1, _1, _0], [-1, 0, 0], [0, 1]);
vertex_add_pnt(VB, [_1, _0, _0], [-1, 0, 0], [0, 0]); vertex_add_pnt(VB, [_1, _0, _0], [-1, 0, 0], [0, 0]);

View file

@ -31,14 +31,16 @@ function __part(_node) constructor {
scx = 1; scx = 1;
scy = 1; scy = 1;
scx_s = 1; sc_sx = 1;
scy_s = 1; sc_sy = 1;
sct = CURVE_DEF_11;
rot = 0; rot = 0;
follow = false; follow = false;
rot_s = 0; rot_s = 0;
col = -1; col = -1;
blend = c_white;
alp = 1; alp = 1;
alp_draw = alp; alp_draw = alp;
alp_fade = 0; alp_fade = 0;
@ -70,17 +72,18 @@ function __part(_node) constructor {
wig = _wig; wig = _wig;
} }
function setTransform(_scx, _scy, _scxs, _scys, _rot, _rots, _follow) { function setTransform(_scx, _scy, _sct, _rot, _rots, _follow) {
scx = _scx; sc_sx = _scx;
scy = _scy; sc_sy = _scy;
scx_s = _scxs; sct = _sct;
scy_s = _scys;
rot = _rot; rot = _rot;
rot_s = _rots; rot_s = _rots;
follow = _follow; follow = _follow;
} }
function setDraw(_col, _alp, _fade) { function setDraw(_col, _blend, _alp, _fade) {
col = _col; col = _col;
blend = _blend;
alp = _alp; alp = _alp;
alp_draw = _alp; alp_draw = _alp;
alp_fade = _fade; alp_fade = _fade;
@ -109,23 +112,17 @@ function __part(_node) constructor {
gy += g; gy += g;
y += gy; y += gy;
if(scx_s < 0) scx = max(scx + scx_s, 0);
else scx = scx + scx_s;
if(scy_s < 0) scy = max(scy + scy_s, 0);
else scy = scy + scy_s;
if(follow) if(follow)
rot = point_direction(xp, yp, x, y); rot = point_direction(xp, yp, x, y);
else else
rot += rot_s; rot += rot_s;
alp_draw = alp * eval_curve_bezier_cubic_x(alp_fade, 1 - life / life_total);
if(step_int > 0 && safe_mod(life, step_int) == 0) if(step_int > 0 && safe_mod(life, step_int) == 0)
node.onPartStep(self); node.onPartStep(self);
if(life-- < 0) kill(); if(life-- < 0) kill();
} }
function draw(exact) { function draw(exact, surf_w, surf_h) {
if(!active) return; if(!active) return;
var ss = surf; var ss = surf;
if(is_array(surf)) { if(is_array(surf)) {
@ -148,7 +145,9 @@ function __part(_node) constructor {
} }
if(!is_surface(ss)) return; if(!is_surface(ss)) return;
var cc = (col == -1)? c_white : gradient_eval(col, 1 - life / life_total); scx = sc_sx * eval_curve_bezier_cubic_x(sct, 1 - life / life_total);
scy = sc_sy * eval_curve_bezier_cubic_x(sct, 1 - life / life_total);
var _xx, _yy; var _xx, _yy;
var s_w = surface_get_width(ss) * scx; var s_w = surface_get_width(ss) * scx;
var s_h = surface_get_height(ss) * scy; var s_h = surface_get_height(ss) * scy;
@ -175,6 +174,16 @@ function __part(_node) constructor {
_yy = round(_yy); _yy = round(_yy);
} }
var x0 = _xx - s_w * 1.5;
var y0 = _yy - s_h * 1.5;
var x1 = _xx + s_w * 1.5;
var y1 = _yy + s_h * 1.5;
if(x0 > surf_w || y0 > surf_h || x1 < 0 || y1 < 0) return;
var cc = (col == -1)? c_white : gradient_eval(col, 1 - life / life_total);
cc = colorMultiply(blend, cc);
alp_draw = alp * eval_curve_bezier_cubic_x(alp_fade, 1 - life / life_total);
draw_surface_ext_safe(ss, _xx, _yy, scx, scy, rot, cc, alp_draw); draw_surface_ext_safe(ss, _xx, _yy, scx, scy, rot, cc, alp_draw);
} }

View file

@ -1,367 +0,0 @@
/* Backup
function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "VFX";
use_cache = true;
inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0)
.setDisplay(noone, "particles");
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| 3] = nodeValue(3, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2);
inputs[| 4] = nodeValue(4, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); });
inputs[| 5] = nodeValue(5, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]);
inputs[| 6] = nodeValue(6, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 7] = nodeValue(7, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 8] = nodeValue(8, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 10] = nodeValue(10, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 11] = nodeValue(11, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range);
inputs[| 12] = nodeValue(12, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 13] = nodeValue(13, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient);
inputs[| 14] = nodeValue(14, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 15] = nodeValue(15, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
inputs[| 16] = nodeValue(16, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 17] = nodeValue(17, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]);
inputs[| 18] = nodeValue(18, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 19] = nodeValue(19, "Draw exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 20] = nodeValue(20, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 21] = nodeValue(21, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 22] = nodeValue(22, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 23] = nodeValue(23, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 24] = nodeValue(24, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]);
inputs[| 25] = nodeValue(25, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ])
.setVisible(false);
inputs[| 26] = nodeValue(26, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
.setVisible(false);
inputs[| 27] = nodeValue(27, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]);
inputs[| 28] = nodeValue(28, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
.setVisible(false, true);
inputs[| 29] = nodeValue(29, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ])
.setVisible(false);
input_display_list = [
["Output", true], 1,
["Sprite", false], 0, 25, 26, 29,
["Spawn", true], 17, 2, 3, 4, 5, 27, 28, 6,
["Movement", true], 7, 20, 8,
["Physics", true], 21, 22,
["Rotation", true], 16, 9, 10,
["Scale", true], 11, 18, 12,
["Color", true], 13, 14, 15,
["Render", true], 24, 19, 23
];
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
seed_origin = irandom(9999999);
seed = seed_origin;
def_surface = -1;
parts = ds_list_create();
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++)
ds_list_add(parts, new __part());
outputs[| 1] = nodeValue(1, "Particle data", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts );
static spawn = function(_time = ANIMATOR.current_frame) {
random_set_seed(seed++);
var _inSurf = inputs[| 0].getValue(_time);
if(_inSurf == 0) {
if(def_surface == -1 || !surface_exists(def_surface)) {
def_surface = PIXEL_SURFACE;
surface_set_target(def_surface);
draw_clear(c_white);
surface_reset_target();
}
_inSurf = def_surface;
}
var _spawn_amount = inputs[| 3].getValue(_time);
var _amo = _spawn_amount;
var _spawn_area = inputs[| 4].getValue(_time);
var _distrib = inputs[| 5].getValue(_time);
var _scatter = inputs[| 27].getValue(_time);
var _life = inputs[| 6].getValue(_time);
var _direction = inputs[| 7].getValue(_time);
var _velocity = inputs[| 20].getValue(_time);
var _accel = inputs[| 8].getValue(_time);
var _grav = inputs[| 21].getValue(_time);
var _wigg = inputs[| 22].getValue(_time);
var _follow = inputs[| 16].getValue(_time);
var _rotation = inputs[| 9].getValue(_time);
var _rotation_speed = inputs[| 10].getValue(_time);
var _scale = inputs[| 11].getValue(_time);
var _size = inputs[| 18].getValue(_time);
var _scale_speed = inputs[| 12].getValue(_time);
var _loop = inputs[| 23].getValue(_time);
var _color = inputs[| 13].getValue(_time);
var _alpha = inputs[| 14].getValue(_time);
var _fade = inputs[| 15].getValue(_time);
var _arr_type = inputs[| 25].getValue(_time);
var _anim_speed = inputs[| 26].getValue(_time);
var _anim_end = inputs[| 29].getValue(_time);
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
if(!parts[| i].active) {
var _spr = _inSurf, _index = 0;
if(is_array(_inSurf)) {
if(_arr_type == 0) {
_index = irandom(array_length(_inSurf) - 1);
_spr = _inSurf[_index];
} else if(_arr_type == 1) {
_index = safe_mod(spawn_index, array_length(_inSurf));
_spr = _inSurf[_index];
} else if(_arr_type == 2)
_spr = _inSurf;
}
var xx = 0;
var yy = 0;
if(_scatter == 2) {
var _b_data = inputs[| 28].getValue(_time);
if(!is_array(_b_data) || array_length(_b_data) <= 0) return;
var _b = _b_data[safe_mod(_index, array_length(_b_data))];
if(!is_array(_b) || array_length(_b) != 4) return;
xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2);
yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3);
parts[| i].boundary_data = _b;
} else {
var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount);
xx = sp[0];
yy = sp[1];
parts[| i].boundary_data = -1;
}
var _lif = random_range(_life[0], _life[1]);
var _rot = random_range(_rotation[0], _rotation[1]);
var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]);
var _dirr = random_range(_direction[0], _direction[1]);
var _velo = random_range(_velocity[0], _velocity[1]);
var _vx = lengthdir_x(_velo, _dirr);
var _vy = lengthdir_y(_velo, _dirr);
var _acc = random_range(_accel[0], _accel[1]);
var _ss = random_range(_size[0], _size[1]);
var _scx = random_range(_scale[0], _scale[1]) * _ss;
var _scy = random_range(_scale[2], _scale[3]) * _ss;
var _alp = random_range(_alpha[0], _alpha[1]);
parts[| i].create(_spr, xx, yy, _lif);
parts[| i].anim_speed = _anim_speed;
parts[| i].anim_end = _anim_end;
parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg);
parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow);
parts[| i].setDraw(_color, _alp, _fade);
spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]);
if(--_amo <= 0)
return;
}
}
}
function reset() {
spawn_index = 0;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
parts[| i].kill();
}
render();
seed = seed_origin;
var _loop = inputs[| 23].getValue();
if(!_loop) return;
for(var i = 0; i < ANIMATOR.frames_total; i++)
runVFX(i);
seed = seed_origin;
}
function updateParticle(_time = ANIMATOR.current_frame) {
var jun = outputs[| 1];
for(var j = 0; j < ds_list_size(jun.value_to); j++) {
if(jun.value_to[| j].value_from == jun)
jun.value_to[| j].node.doUpdate();
}
render(_time);
}
function checkPartPool() {
var _part_amo = PREF_MAP[? "part_max_amount"];
var _curr_amo = ds_list_size(parts);
if(_part_amo > _curr_amo) {
repeat(_part_amo - _curr_amo)
ds_list_add(parts, new __part());
} else if(_part_amo < _curr_amo) {
repeat(_curr_amo - _part_amo)
ds_list_delete(parts, 0);
}
}
static runVFX = function(_time = ANIMATOR.current_frame) {
var _spawn_delay = inputs[| 2].getValue(_time);
var _spawn_type = inputs[| 17].getValue(_time);
switch(_spawn_type) {
case 0 :
if(safe_mod(_time, _spawn_delay) == 0)
spawn(_time);
break;
case 1 :
if(_time == _spawn_delay)
spawn(_time);
break;
}
for(var i = 0; i < ds_list_size(parts); i++)
parts[| i].step();
updateParticle(_time);
triggerRender();
}
static step = function() {
var _inSurf = inputs[| 0].getValue();
var _scatt = inputs[| 27].getValue();
var _loop = inputs[| 23].getValue();
inputs[| 25].setVisible(false);
inputs[| 26].setVisible(false);
inputs[| 28].setVisible(_scatt == 2);
if(is_array(_inSurf)) {
inputs[| 25].setVisible(true);
var _type = inputs[| 25].getValue();
if(_type == 2) {
inputs[| 26].setVisible(true);
inputs[| 29].setVisible(true);
}
}
checkPartPool();
var _spawn_type = inputs[| 17].getValue();
if(_spawn_type == 0) inputs[| 2].name = "Spawn delay";
else inputs[| 2].name = "Spawn frame";
if(ANIMATOR.frame_progress) {
if(recoverCache()) {
triggerRender();
return;
}
if(!ANIMATOR.is_playing) return;
if(ANIMATOR.current_frame == 0) {
reset();
runVFX(ANIMATOR.current_frame);
} else if(cached_output[ANIMATOR.current_frame - 1] != 0) {
runVFX(ANIMATOR.current_frame);
}
}
}
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
if(onDrawOverlay != -1)
onDrawOverlay(active, _x, _y, _s, _mx, _my);
}
static onDrawOverlay = -1;
function render(_time = ANIMATOR.current_frame) {
var _dim = inputs[| 1].getValue(_time);
var _exact = inputs[| 19].getValue(_time);
var _blend = inputs[| 24].getValue(_time);
var _outSurf = outputs[| 0].getValue();
if(is_surface(_outSurf))
surface_size_to(_outSurf, _dim[0], _dim[1]);
else {
_outSurf = surface_create_valid(_dim[0], _dim[1]);
outputs[| 0].setValue(_outSurf);
}
surface_set_target(_outSurf);
draw_clear_alpha(c_white, 0);
switch(_blend) {
case PARTICLE_BLEND_MODE.normal : gpu_set_blendmode(bm_normal); break;
case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break;
}
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++)
parts[| i].draw(_exact);
gpu_set_blendmode(bm_normal);
surface_reset_target();
cacheCurrentFrame(_outSurf);
}
static update = function() {
reset();
}
render();
}

View file

@ -78,8 +78,8 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
var _area_y0 = _area_y - _area_h; var _area_y0 = _area_y - _area_h;
var _area_y1 = _area_y + _area_h; var _area_y1 = _area_y + _area_h;
for(var i = 0; i < ds_list_size(parts); i++) { for(var i = 0; i < array_length(parts); i++) {
var part = parts[| i]; var part = parts[i];
var pv = part.getPivot(); var pv = part.getPivot();
var px = _x + part.x * _s; var px = _x + part.x * _s;
var py = _y + part.y * _s; var py = _y + part.y * _s;
@ -91,12 +91,12 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1),
distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1),
distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1)); distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1));
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); str = eval_curve_bezier_cubic_t(_fall, clamp(_dst / _fads, 0., 1.));
} }
} else if(_area_t == AREA_SHAPE.elipse) { } else if(_area_t == AREA_SHAPE.elipse) {
if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) { if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) {
var _dst = point_distance(pv[0], pv[1], _area_x, _area_y); var _dst = point_distance(pv[0], pv[1], _area_x, _area_y);
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); str = eval_curve_bezier_cubic_t(_fall, clamp(_dst / _fads, 0., 1.));
} }
} }
@ -141,6 +141,19 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
} }
} }
static updateParticleForward = function(_render = true) {
update();
var pt = outputs[| 0];
for( var i = 0; i < ds_list_size(pt.value_to); i++ ) {
var _n = pt.value_to[| i];
if(_n.value_from != pt) continue;
if(variable_struct_exists(_n.node, "updateParticleForward"))
_n.node.updateParticleForward();
}
}
static step = function() { static step = function() {
var _type = inputs[| 5].getValue(); var _type = inputs[| 5].getValue();
switch(_type) { switch(_type) {
@ -206,12 +219,12 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1),
distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1), distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1),
distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1)); distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1));
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); str = eval_curve_bezier_cubic_t(_fall, clamp(_dst / _fads, 0., 1.));
} }
} else if(_area_t == AREA_SHAPE.elipse) { } else if(_area_t == AREA_SHAPE.elipse) {
if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) { if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) {
var _dst = point_distance(pv[0], pv[1], _area_x, _area_y); var _dst = point_distance(pv[0], pv[1], _area_x, _area_y);
str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); str = eval_curve_bezier_cubic_t(_fall, clamp(_dst / _fads, 0., 1.));
} }
} }
@ -297,7 +310,7 @@ function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) cons
for(var i = 0; i < ds_list_size(inputs); i++) { for(var i = 0; i < ds_list_size(inputs); i++) {
current_data[i] = inputs[| i].getValue(); current_data[i] = inputs[| i].getValue();
} }
for(var i = 0; i < ds_list_size(parts); i++) for(var i = 0; i < array_length(parts); i++)
affect(parts[| i]); affect(parts[i]);
} }
} }

View file

@ -5,7 +5,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
.setDisplay(noone, "particles"); .setDisplay(noone, "particles");
inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2);
inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ])
.setDisplay(VALUE_DISPLAY.area); .setDisplay(VALUE_DISPLAY.area);
@ -17,6 +19,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
inputs[| 6] = nodeValue(6, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ]) inputs[| 6] = nodeValue(6, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ])
.setDisplay(VALUE_DISPLAY.rotation_range); .setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range); .setDisplay(VALUE_DISPLAY.range);
@ -28,13 +31,15 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
inputs[| 10] = nodeValue(10, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] ) inputs[| 10] = nodeValue(10, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range); .setDisplay(VALUE_DISPLAY.vector_range);
inputs[| 11] = nodeValue(11, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector); inputs[| 11] = nodeValue(11, "Scale over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
inputs[| 12] = nodeValue(12, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) inputs[| 12] = nodeValue(12, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient); .setDisplay(VALUE_DISPLAY.gradient);
inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range); .setDisplay(VALUE_DISPLAY.range);
inputs[| 14] = nodeValue(14, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11); inputs[| 14] = nodeValue(14, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
inputs[| 15] = nodeValue(15, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); inputs[| 15] = nodeValue(15, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
@ -49,6 +54,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
.setDisplay(VALUE_DISPLAY.range); .setDisplay(VALUE_DISPLAY.range);
inputs[| 19] = nodeValue(19, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); inputs[| 19] = nodeValue(19, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 20] = nodeValue(20, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); inputs[| 20] = nodeValue(20, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 21] = nodeValue(21, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); inputs[| 21] = nodeValue(21, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
@ -71,33 +77,40 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
.setVisible(false); .setVisible(false);
inputs[| 27] = nodeValue(27, "Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); inputs[| 27] = nodeValue(27, "Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 28] = nodeValue(28, "Random blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
.setDisplay(VALUE_DISPLAY.gradient);
inputs[| 29] = nodeValue(29, "Directed from center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
input_len = ds_list_size(inputs); input_len = ds_list_size(inputs);
input_display_list = [ input_display_list = [
["Sprite", false], 0, 22, 23, 26, ["Sprite", false], 0, 22, 23, 26,
["Spawn", true], 27, 16, 1, 2, 3, 4, 24, 25, 5, ["Spawn", true], 27, 16, 1, 2, 3, 4, 24, 25, 5,
["Movement", true], 6, 18, 7, ["Movement", true], 29, 6, 18, 7,
["Physics", true], 19, 20, ["Physics", true], 19, 20,
["Rotation", true], 15, 8, 9, ["Rotation", true], 15, 8, 9,
["Scale", true], 10, 17, 11, ["Scale", true], 10, 17, 11,
["Color", true], 12, 13, 14, ["Color", true], 12, 28, 13, 14,
["Render", true], 21 ["Render", true], 21
]; ];
parts = ds_list_create(); parts = array_create(PREF_MAP[? "part_max_amount"]);
parts_runner = 0;
seed_origin = irandom(9999999); seed_origin = irandom(9999999);
seed = seed_origin; seed = seed_origin;
spawn_index = 0; spawn_index = 0;
def_surface = -1; def_surface = -1;
current_data = [];
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++)
ds_list_add(parts, new __part(self)); parts[i] = new __part(self);
static spawn = function(_time = ANIMATOR.current_frame, _pos = -1) { static spawn = function(_time = ANIMATOR.current_frame, _pos = -1) {
random_set_seed(seed++); var _inSurf = current_data[0];
var _inSurf = inputs[| 0].getValue(_time);
if(_inSurf == 0) { if(_inSurf == 0) {
if(def_surface == -1 || !surface_exists(def_surface)) { if(def_surface == -1 || !surface_exists(def_surface)) {
@ -109,40 +122,45 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
_inSurf = def_surface; _inSurf = def_surface;
} }
var _spawn_amount = inputs[| 2].getValue(_time); var _spawn_amount = current_data[ 2];
var _amo = _spawn_amount; var _amo = _spawn_amount;
var _spawn_area = inputs[| 3].getValue(_time); var _spawn_area = current_data[ 3];
var _distrib = inputs[| 4].getValue(_time); var _distrib = current_data[ 4];
var _scatter = inputs[| 24].getValue(_time); var _scatter = current_data[24];
var _life = inputs[| 5].getValue(_time); var _life = current_data[ 5];
var _direction = inputs[| 6].getValue(_time); var _direction = current_data[ 6];
var _velocity = inputs[| 18].getValue(_time); var _directCenter = current_data[29];
var _velocity = current_data[18];
var _accel = inputs[| 7].getValue(_time); var _accel = current_data[ 7];
var _grav = inputs[| 19].getValue(_time); var _grav = current_data[19];
var _wigg = inputs[| 20].getValue(_time); var _wigg = current_data[20];
var _follow = inputs[| 15].getValue(_time); var _follow = current_data[15];
var _rotation = inputs[| 8].getValue(_time); var _rotation = current_data[ 8];
var _rotation_speed = inputs[| 9].getValue(_time); var _rotation_speed = current_data[ 9];
var _scale = inputs[| 10].getValue(_time); var _scale = current_data[10];
var _size = inputs[| 17].getValue(_time); var _size = current_data[17];
var _scale_speed = inputs[| 11].getValue(_time); var _scale_time = current_data[11];
var _color = inputs[| 12].getValue(_time); var _color = current_data[12];
var _alpha = inputs[| 13].getValue(_time); var _blend = current_data[28];
var _fade = inputs[| 14].getValue(_time); var _bldTyp = inputs[| 28].getExtraData();
var _alpha = current_data[13];
var _fade = current_data[14];
var _arr_type = inputs[| 22].getValue(_time); var _arr_type = current_data[22];
var _anim_speed = inputs[| 23].getValue(_time); var _anim_speed = current_data[23];
var _anim_end = inputs[| 26].getValue(_time); var _anim_end = current_data[26];
if(_rotation[1] < _rotation[0]) _rotation[1] += 360; if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { repeat(_amo) {
if(parts[| i].active) continue; random_set_seed(seed++);
parts_runner = clamp(parts_runner, 0, array_length(parts) - 1);
var part = parts[parts_runner];
var _spr = _inSurf, _index = 0; var _spr = _inSurf, _index = 0;
if(is_array(_inSurf)) { if(is_array(_inSurf)) {
@ -160,7 +178,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
if(_pos == -1) { if(_pos == -1) {
if(_scatter == 2) { if(_scatter == 2) {
var _b_data = inputs[| 25].getValue(_time); var _b_data = current_data[25];
if(!is_array(_b_data) || array_length(_b_data) <= 0) return; if(!is_array(_b_data) || array_length(_b_data) <= 0) return;
var _b = _b_data[safe_mod(_index, array_length(_b_data))]; var _b = _b_data[safe_mod(_index, array_length(_b_data))];
if(!is_array(_b) || array_length(_b) != 4) return; if(!is_array(_b) || array_length(_b) != 4) return;
@ -168,13 +186,13 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2); xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2);
yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3); yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3);
parts[| i].boundary_data = _b; part.boundary_data = _b;
} else { } else {
var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount); var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount, seed);
xx = sp[0]; xx = sp[0];
yy = sp[1]; yy = sp[1];
parts[| i].boundary_data = -1; part.boundary_data = -1;
} }
} else { } else {
xx = _pos[0]; xx = _pos[0];
@ -186,7 +204,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
var _rot = random_range(_rotation[0], _rotation[1]); var _rot = random_range(_rotation[0], _rotation[1]);
var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]); var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]);
var _dirr = random_range(_direction[0], _direction[1]); var _dirr = _directCenter? point_direction(_spawn_area[0], _spawn_area[1], xx, yy) : random_range(_direction[0], _direction[1]);
var _velo = random_range(_velocity[0], _velocity[1]); var _velo = random_range(_velocity[0], _velocity[1]);
var _vx = lengthdir_x(_velo, _dirr); var _vx = lengthdir_x(_velo, _dirr);
@ -198,58 +216,68 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
var _scy = random_range(_scale[2], _scale[3]) * _ss; var _scy = random_range(_scale[2], _scale[3]) * _ss;
var _alp = random_range(_alpha[0], _alpha[1]); var _alp = random_range(_alpha[0], _alpha[1]);
var _bld = gradient_eval(_blend, random(1), ds_list_get(_bldTyp, 0));
parts[| i].create(_spr, xx, yy, _lif); part.seed = irandom(99999);
parts[| i].anim_speed = _anim_speed; part.create(_spr, xx, yy, _lif);
parts[| i].anim_end = _anim_end; part.anim_speed = _anim_speed;
part.anim_end = _anim_end;
parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg); part.setPhysic(_vx, _vy, _acc, _grav, _wigg);
parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow); part.setTransform(_scx, _scy, _scale_time, _rot, _rot_spd, _follow);
parts[| i].setDraw(_color, _alp, _fade); part.setDraw(_color, _bld, _alp, _fade);
spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]); spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]);
onSpawn(_time, parts[| i]); onSpawn(_time, part);
if(--_amo <= 0) return; parts_runner = safe_mod((parts_runner + 1), PREF_MAP[? "part_max_amount"]);
} }
} }
static onSpawn = function(_time, part) {} static onSpawn = function(_time, part) {}
static updateParticleForward = function(_render = true) {}
function reset() { function reset() {
spawn_index = 0; spawn_index = 0;
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { for(var i = 0; i < array_length(parts); i++) {
parts[| i].kill(); if(!parts[i].active) continue;
parts[i].kill();
} }
render(); render();
seed = seed_origin; seed = seed_origin;
var _loop = inputs[| 21].getValue(); var _loop = inputs[| 21].getValue();
if(!_loop) return; if(!_loop) return;
for(var i = 0; i < ANIMATOR.frames_total; i++) for(var i = 0; i < ANIMATOR.frames_total; i++) {
runVFX(i); runVFX(i, false);
updateParticleForward(false);
}
seed = seed_origin; seed = seed_origin;
} }
function checkPartPool() { function checkPartPool() {
var _part_amo = PREF_MAP[? "part_max_amount"]; var _part_amo = PREF_MAP[? "part_max_amount"];
var _curr_amo = ds_list_size(parts); var _curr_amo = array_length(parts);
if(_part_amo > _curr_amo) { if(_part_amo > _curr_amo) {
repeat(_part_amo - _curr_amo) repeat(_part_amo - _curr_amo)
ds_list_add(parts, new __part(self)); array_push(parts, new __part(self));
} else if(_part_amo < _curr_amo) { } else if(_part_amo < _curr_amo) {
repeat(_curr_amo - _part_amo) array_resize(parts, _part_amo);
ds_list_delete(parts, 0);
} }
} }
static runVFX = function(_time = ANIMATOR.current_frame) { static runVFX = function(_time = ANIMATOR.current_frame, _render = true) {
var _spawn_delay = inputs[| 1].getValue(_time); var _spawn_delay = inputs[| 1].getValue(_time);
var _spawn_type = inputs[| 16].getValue(_time); var _spawn_type = inputs[| 16].getValue(_time);
var _spawn_active = inputs[| 27].getValue(_time); var _spawn_active = inputs[| 27].getValue(_time);
for( var i = 0; i < ds_list_size(inputs); i++ )
current_data[i] = inputs[| i].getValue(_time);
if(_spawn_active) { if(_spawn_active) {
switch(_spawn_type) { switch(_spawn_type) {
case 0 : case 0 :
@ -263,8 +291,13 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
} }
} }
for(var i = 0; i < ds_list_size(parts); i++) for(var i = 0; i < array_length(parts); i++) {
parts[| i].step(); if(!parts[i].active) continue;
parts[i].step();
}
if(!_render) return;
triggerRender(); triggerRender();
render(_time); render(_time);
} }
@ -272,7 +305,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
static step = function() { static step = function() {
var _inSurf = inputs[| 0].getValue(); var _inSurf = inputs[| 0].getValue();
var _scatt = inputs[| 24].getValue(); var _scatt = inputs[| 24].getValue();
var _dirAng = inputs[| 29].getValue();
inputs[| 6].setVisible(!_dirAng);
inputs[| 22].setVisible(false); inputs[| 22].setVisible(false);
inputs[| 23].setVisible(false); inputs[| 23].setVisible(false);
inputs[| 25].setVisible(_scatt == 2); inputs[| 25].setVisible(_scatt == 2);

View file

@ -3,24 +3,100 @@ enum AREA_SHAPE {
elipse elipse
} }
function areaBox(_onModify, _unit = noone) constructor { enum AREA_MODE {
area,
padding,
two_point,
}
function areaBox(_onModify, _unit = noone) : widget() constructor {
onModify = _onModify; onModify = _onModify;
unit = _unit; unit = _unit;
onSurfaceSize = -1; onSurfaceSize = -1;
active = false; link_value = false;
hover = false; current_data = [ 0, 0, 0, 0 ];
mode = AREA_MODE.area;
onModifySingle[0] = function(val) { onModify(0, toNumber(val)); } onModifySingle[0] = function(val) {
onModifySingle[1] = function(val) { onModify(1, toNumber(val)); } if(mode == AREA_MODE.area) {
onModifySingle[2] = function(val) { onModify(2, toNumber(val)); } onModify(0, toNumber(val));
onModifySingle[3] = function(val) { onModify(3, toNumber(val)); } } else if(mode == AREA_MODE.padding) {
var v = toNumber(val);
if(link_value) current_data = [ v, v, v, v ];
else current_data[0] = v;
setAllData(current_data);
} else if(mode == AREA_MODE.two_point) {
onModify(0, val);
}
}
onModifySingle[1] = function(val) {
if(mode == AREA_MODE.area) {
onModify(1, toNumber(val));
} else if(mode == AREA_MODE.padding) {
var v = toNumber(val);
if(link_value) current_data = [ v, v, v, v ];
else current_data[1] = v;
setAllData(current_data);
} else if(mode == AREA_MODE.two_point) {
onModify(1, val);
}
}
onModifySingle[2] = function(val) {
if(mode == AREA_MODE.area) {
onModify(2, toNumber(val));
} else if(mode == AREA_MODE.padding) {
var v = toNumber(val);
if(link_value) current_data = [ v, v, v, v ];
else current_data[2] = v;
setAllData(current_data);
} else if(mode == AREA_MODE.two_point) {
onModify(2, val);
}
}
onModifySingle[3] = function(val) {
if(mode == AREA_MODE.area) {
onModify(3, toNumber(val));
} else if(mode == AREA_MODE.padding) {
var v = toNumber(val);
if(link_value) current_data = [ v, v, v, v ];
else current_data[3] = v;
setAllData(current_data);
} else if(mode == AREA_MODE.two_point) {
onModify(3, val);
}
}
for(var i = 0; i < 4; i++) { for(var i = 0; i < 4; i++) {
tb[i] = new textBox(TEXTBOX_INPUT.number, onModifySingle[i]); tb[i] = new textBox(TEXTBOX_INPUT.number, onModifySingle[i]);
tb[i].slidable = true;
} }
static draw = function(_x, _y, _data, _m) { static setAllData = function(data) {
onModify(0, data[0]);
onModify(1, data[1]);
onModify(2, data[2]);
onModify(3, data[3]);
}
static register = function(parent = noone) {
for(var i = 0; i < 4; i++)
tb[i].register(parent);
if(unit != noone && unit.reference != noone)
unit.triggerButton.register(parent);
}
static draw = function(_x, _y, _data, _extra_data, _m) {
x = _x;
y = _y;
w = 0;
h = ui(204);
mode = ds_list_get(_extra_data, 0);
if(buttonInstant(THEME.button_hide, _x - ui(48), _y + ui(64 - 48), ui(96), ui(96), _m, active, hover, "", THEME.inspector_area, array_safe_get(_data, 4), c_white) == 2) { if(buttonInstant(THEME.button_hide, _x - ui(48), _y + ui(64 - 48), ui(96), ui(96), _m, active, hover, "", THEME.inspector_area, array_safe_get(_data, 4), c_white) == 2) {
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
var val = (array_safe_get(_data, 4) + 1) % 2; var val = (array_safe_get(_data, 4) + 1) % 2;
@ -36,6 +112,63 @@ function areaBox(_onModify, _unit = noone) constructor {
onModify(2, toNumber(ss[0] / 2)); onModify(2, toNumber(ss[0] / 2));
onModify(3, toNumber(ss[1] / 2)); onModify(3, toNumber(ss[1] / 2));
} }
var txt = "";
switch(mode) {
case AREA_MODE.area : txt = "Center + Span"; break;
case AREA_MODE.padding : txt = "Padding"; break;
case AREA_MODE.two_point : txt = "Two points"; break;
}
if(buttonInstant(THEME.button_hide, _x + ui(76 - 24), _y + ui(28 - 12), ui(24), ui(24), _m, active, hover, txt, THEME.inspector_area_type, mode, c_white) == 2) {
switch(mode) {
case AREA_MODE.area :
var cx = array_safe_get(_data, 0);
var cy = array_safe_get(_data, 1);
var sw = array_safe_get(_data, 2);
var sh = array_safe_get(_data, 3);
var ss = onSurfaceSize();
onModify(0, ss[0] - (cx + sw));
onModify(1, cy - sh);
onModify(2, cx - sw);
onModify(3, ss[1] - (cy + sh));
break;
case AREA_MODE.padding :
var r = array_safe_get(_data, 0);
var t = array_safe_get(_data, 1);
var l = array_safe_get(_data, 2);
var b = array_safe_get(_data, 3);
var ss = onSurfaceSize();
onModify(0, l);
onModify(1, t);
onModify(2, ss[0] - r);
onModify(3, ss[1] - b);
break;
case AREA_MODE.two_point :
var x0 = array_safe_get(_data, 0);
var y0 = array_safe_get(_data, 1);
var x1 = array_safe_get(_data, 2);
var y1 = array_safe_get(_data, 3);
onModify(0, (x0 + x1) / 2);
onModify(1, (y0 + y1) / 2);
onModify(2, abs(x0 - x1) / 2);
onModify(3, abs(y0 - y1) / 2);
break;
}
_extra_data[| 0] = (mode + 1) % 3;
}
}
if(mode == AREA_MODE.padding) {
var cc = link_value? COLORS._main_accent : COLORS._main_icon;
if(buttonInstant(THEME.button_hide, _x - ui(76), _y + ui(88), ui(24), ui(24), _m, active, hover, "Link value", THEME.value_link, link_value, cc) == 2)
link_value = !link_value;
} }
for(var i = 0; i < 4; i++) { for(var i = 0; i < 4; i++) {
@ -44,11 +177,65 @@ function areaBox(_onModify, _unit = noone) constructor {
tb[i].align = fa_center; tb[i].align = fa_center;
} }
tb[0].draw(_x - ui(56) - ui(48), _y - ui(28), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 0), _m); current_data = _data;
tb[1].draw(_x + ui(56) - ui(48), _y - ui(28), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 1), _m);
tb[2].draw(_x - ui(48), _y + ui(64 + 48 + 8), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 2), _m); if(mode == AREA_MODE.area) {
tb[3].draw(_x + ui(68), _y + ui(64 - 16), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 3), _m); var tb_x0 = _x + ui(6) - ui(64) - ui(48);
var tb_x1 = _x + ui(6) + ui(64) - ui(48);
var tb_y0 = _y - ui(28);
var tb_y1 = _y + ui(64 + 48 + 8);
draw_set_text(f_p0, fa_right, fa_center, COLORS._main_text_sub);
draw_text(tb_x0 - ui(4), tb_y0 + TEXTBOX_HEIGHT / 2, "x");
draw_text(tb_x1 - ui(4), tb_y0 + TEXTBOX_HEIGHT / 2, "y");
draw_text(tb_x0 - ui(4), tb_y1 + TEXTBOX_HEIGHT / 2, "w");
draw_text(tb_x1 - ui(4), tb_y1 + TEXTBOX_HEIGHT / 2, "h");
tb[0].draw(tb_x0, tb_y0, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 0), _m);
tb[1].draw(tb_x1, tb_y0, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 1), _m);
tb[2].draw(tb_x0, tb_y1, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 2), _m);
tb[3].draw(tb_x1, tb_y1, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 3), _m);
} else if(mode == AREA_MODE.padding) {
var tb_rx = _x + ui(56);
var tb_ry = _y + ui(48);
var tb_tx = _x - ui(48);
var tb_ty = _y - ui(28);
var tb_lx = _x - ui(56 + 96);
var tb_ly = _y + ui(48);
var tb_bx = _x - ui(48);
var tb_by = _y + ui(64 + 48 + 8);
tb[0].draw(tb_rx, tb_ry, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 0), _m);
tb[1].draw(tb_tx, tb_ty, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 1), _m);
tb[2].draw(tb_lx, tb_ly, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 2), _m);
tb[3].draw(tb_bx, tb_by, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 3), _m);
} else if(mode == AREA_MODE.two_point) {
var tb_x0 = _x + ui(6) - ui(64) - ui(48);
var tb_x1 = _x + ui(6) + ui(64) - ui(48);
var tb_y0 = _y - ui(28);
var tb_y1 = _y + ui(64 + 48 + 8);
draw_set_text(f_p0, fa_right, fa_center, COLORS._main_text_sub);
draw_text(tb_x0 - ui(4), tb_y0 + TEXTBOX_HEIGHT / 2, "x0");
draw_text(tb_x1 - ui(4), tb_y0 + TEXTBOX_HEIGHT / 2, "y0");
draw_text(tb_x0 - ui(4), tb_y1 + TEXTBOX_HEIGHT / 2, "x1");
draw_text(tb_x1 - ui(4), tb_y1 + TEXTBOX_HEIGHT / 2, "y1");
tb[0].draw(tb_x0, tb_y0, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 0), _m);
tb[1].draw(tb_x1, tb_y0, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 1), _m);
tb[2].draw(tb_x0, tb_y1, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 2), _m);
tb[3].draw(tb_x1, tb_y1, ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 3), _m);
}
if(unit != noone && unit.reference != noone) { if(unit != noone && unit.reference != noone) {
unit.triggerButton.hover = hover; unit.triggerButton.hover = hover;
@ -57,7 +244,6 @@ function areaBox(_onModify, _unit = noone) constructor {
unit.draw(_x + ui(56 + 48 + 8), _y - ui(28), ui(32), ui(32), _m); unit.draw(_x + ui(56 + 48 + 8), _y - ui(28), ui(32), ui(32), _m);
} }
active = false; resetFocus();
hover = false;
} }
} }

View file

@ -8,7 +8,7 @@ enum AREA_SCATTER {
random random
} }
function area_get_random_point(area, distrib, scatter, index = 0, total = 1) { function area_get_random_point(area, distrib, scatter, index = 0, total = 1, _sed = 999) {
if(total == 0) return [0, 0]; if(total == 0) return [0, 0];
var _area_x = array_safe_get(area, 0); var _area_x = array_safe_get(area, 0);
@ -32,12 +32,12 @@ function area_get_random_point(area, distrib, scatter, index = 0, total = 1) {
yy = _area_y - _area_h + _irow * _ihig; yy = _area_y - _area_h + _irow * _ihig;
} else if(scatter == AREA_SCATTER.random) { } else if(scatter == AREA_SCATTER.random) {
if(_area_t == AREA_SHAPE.rectangle) { if(_area_t == AREA_SHAPE.rectangle) {
xx = _area_x + random_range(-_area_w, _area_w); xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
yy = _area_y + random_range(-_area_h, _area_h); yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
} else { } else {
var rr = random(360); var rr = random_seed(360, _sed); _sed++;
xx = _area_x + lengthdir_x(1, rr) * random(_area_w); xx = _area_x + lengthdir_x(1, rr) * random_seed(_area_w, _sed); _sed++;
yy = _area_y + lengthdir_y(1, rr) * random(_area_h); yy = _area_y + lengthdir_y(1, rr) * random_seed(_area_h, _sed); _sed++;
} }
} }
break; break;
@ -48,17 +48,17 @@ function area_get_random_point(area, distrib, scatter, index = 0, total = 1) {
var perimeter = _area_w * 2 + _area_h * 2; var perimeter = _area_w * 2 + _area_h * 2;
var i = perimeter * index / total; var i = perimeter * index / total;
if(i < _area_w) { if(i < _area_w) {
xx = _area_x + random_range(-_area_w, _area_w); xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
yy = _area_y - _area_h; yy = _area_y - _area_h;
} else if(i < _area_w + _area_h) { } else if(i < _area_w + _area_h) {
xx = _area_x - _area_w; xx = _area_x - _area_w;
yy = _area_y + random_range(-_area_h, _area_h); yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
} else if(i < _area_w * 2 + _area_h) { } else if(i < _area_w * 2 + _area_h) {
xx = _area_x + random_range(-_area_w, _area_w); xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
yy = _area_y + _area_h; yy = _area_y + _area_h;
} else { } else {
xx = _area_x + _area_w; xx = _area_x + _area_w;
yy = _area_y + random_range(-_area_h, _area_h); yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
} }
} else { } else {
var rr = 360 * index / total; var rr = 360 * index / total;
@ -68,22 +68,22 @@ function area_get_random_point(area, distrib, scatter, index = 0, total = 1) {
} else if(scatter == AREA_SCATTER.random) { } else if(scatter == AREA_SCATTER.random) {
if(_area_t == AREA_SHAPE.rectangle) { if(_area_t == AREA_SHAPE.rectangle) {
var perimeter = _area_w * 2 + _area_h * 2; var perimeter = _area_w * 2 + _area_h * 2;
var i = random(perimeter); var i = random_seed(perimeter, _sed); _sed++;
if(i < _area_w) { if(i < _area_w) {
xx = _area_x + random_range(-_area_w, _area_w); xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
yy = _area_y - _area_h; yy = _area_y - _area_h;
} else if(i < _area_w + _area_h) { } else if(i < _area_w + _area_h) {
xx = _area_x - _area_w; xx = _area_x - _area_w;
yy = _area_y + random_range(-_area_h, _area_h); yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
} else if(i < _area_w * 2 + _area_h) { } else if(i < _area_w * 2 + _area_h) {
xx = _area_x + random_range(-_area_w, _area_w); xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
yy = _area_y + _area_h; yy = _area_y + _area_h;
} else { } else {
xx = _area_x + _area_w; xx = _area_x + _area_w;
yy = _area_y + random_range(-_area_h, _area_h); yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
} }
} else { } else {
var rr = random(360); var rr = random_seed(360, _sed); _sed++;
xx = _area_x + lengthdir_x(_area_w, rr); xx = _area_x + lengthdir_x(_area_w, rr);
yy = _area_y + lengthdir_y(_area_h, rr); yy = _area_y + lengthdir_y(_area_h, rr);
} }

View file

@ -13,6 +13,7 @@ function array_safe_set(arr, index, value) {
} }
function array_safe_get(arr, index, def = 0) { function array_safe_get(arr, index, def = 0) {
if(index < 0) return def;
if(index >= array_length(arr)) return def; if(index >= array_length(arr)) return def;
return arr[index]; return arr[index];
} }

View file

@ -0,0 +1,87 @@
function ase_cel(_layer, _data, _file) constructor {
data = _data;
file = _file;
layerTarget = _layer;
static checkSurface = function() {
if(is_surface(data[? "Surface"])) return;
var width = data[? "Width"];
var height = data[? "Height"];
data[? "Surface"] = surface_create(width, height);
var color = file[? "Color depth"];
if(color == 32) {//rgba
buffer_set_surface(data[? "Buffer"], data[? "Surface"], 0);
return;
}
var size = width * height;
var buff = buffer_create(size * 4, buffer_fixed, 1);
buffer_seek(buff, buffer_seek_start, 0);
buffer_seek(data[? "Buffer"], buffer_seek_start, 0);
if(color == 16) { //grey
repeat(size) {
var bin = buffer_read(data[? "Buffer"], buffer_u16);
buffer_write(buff, buffer_u8, bin);
buffer_write(buff, buffer_u8, bin);
buffer_write(buff, buffer_u8, bin);
buffer_write(buff, buffer_u8, bin >> 8);
}
} else if(color == 8) { //index
var palet = file[? "Palette"];
repeat(size) {
var bin = buffer_read(data[? "Buffer"], buffer_u8);
var cc = array_safe_get(palet, bin);
for( var i = 0; i < 4; i++ )
buffer_write(buff, buffer_u8, cc[i]);
}
}
buffer_set_surface(buff, data[? "Surface"], 0);
}
static getSurface = function() {
var type = data[? "Cel type"];
if(type == 0) {
} else if(type == 1) {
var frTarget = data[? "Frame position"];
var cel = layerTarget.getCel(frTarget);
if(!cel) return noone;
return cel.getSurface();
} else if(type == 2) {
checkSurface();
return data[? "Surface"];
}
return noone;
}
}
function ase_layer(name) constructor {
self.name = name;
cels = [];
tag = noone;
static setFrameCel = function(index, cel) {
cels[index] = cel;
}
static getCel = function(index = ANIMATOR.current_frame) {
var ind;
if(tag != noone) {
var st = tag[? "Frame start"];
var ed = tag[? "Frame end"];
ind = st + index % (ed - st + 1);
} else
ind = index % array_length(cels);
return array_safe_get(cels, ind);
}
}

View file

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

View file

@ -1,32 +1,500 @@
function read_ase(path) { /*
var file = file_bin_open(path, 0); * ASE file reader
var load_str = ""; * Author: MakhamDev
* File spec from: https://github.com/aseprite/aseprite/blob/main/docs/ase-file-specs.md
*/
bin_read_dword(file); enum _BIN_TYPE {
bin_read_word(file); byte,
var frames = bin_read_word(file); word,
var width = bin_read_word(file); short,
var height = bin_read_word(file); dword,
long,
fixed,
float,
double,
qword,
long64,
var pos = 128; string,
file_bin_seek(file, pos); point,
size,
rect,
color,
pixel,
}
repeat(frames) { //ASE blend mode
bin_read_dword(file); //Normal = 0
bin_read_word(file); //Multiply = 1
//Screen = 2
//Overlay = 3
//Darken = 4
//Lighten = 5
//Color Dodge = 6
//Color Burn = 7
//Hard Light = 8
//Soft Light = 9
//Difference = 10
//Exclusion = 11
//Hue = 12
//Saturation = 13
//Color = 14
//Luminosity = 15
//Addition = 16
//Subtract = 17
//Divide = 18
var old_chunk = bin_read_word(file); global.ASE_LOG = false;
bin_read_word(file); globalvar __ase_format_header;
bin_read_word(file); __ase_format_header = [
bin_read_word(file); [_BIN_TYPE.dword, "File size"],
[_BIN_TYPE.word, "Magic number"],
[_BIN_TYPE.word, "Frame amount"],
[_BIN_TYPE.word, "Width"],
[_BIN_TYPE.word, "Height"],
[_BIN_TYPE.word, "Color depth"], //32: RGBA, 16: Grey, 8: Index
[_BIN_TYPE.dword, "Flags"],
[_BIN_TYPE.word, "Speed"], //DEPRECATED
[_BIN_TYPE.dword, "0"],
[_BIN_TYPE.dword, "0"],
[_BIN_TYPE.byte, "Palette entry"], //For indexed sprite, index in palette that consider a transparent color.
[_BIN_TYPE.byte, "Ignore", 3],
[_BIN_TYPE.word, "Number of colors"],
[_BIN_TYPE.byte, "Pixel width"], //If zero, then pixel ratio is 1:1
[_BIN_TYPE.byte, "Pixel height"], //If zero, then pixel ratio is 1:1
[_BIN_TYPE.short, "Grid X"],
[_BIN_TYPE.short, "Grid Y"],
[_BIN_TYPE.word, "Grid width"], //If zero, no grid
[_BIN_TYPE.word, "Grid height"], //If zero, no grid
[_BIN_TYPE.byte, "Unused", 84],
];
var new_chunk = bin_read_dword(file); globalvar __ase_format_frame;
__ase_format_frame = [
[_BIN_TYPE.dword, "Length"],
[_BIN_TYPE.word, "Magic number"],
[_BIN_TYPE.word, "Chunk amount"], //If 0xFFFF, use "Chunk amount new"
[_BIN_TYPE.word, "Duration"], //In millisec
[_BIN_TYPE.byte, "Unused", 2],
[_BIN_TYPE.dword, "Chunk amount new"],
];
var chunks = new_chunk == 0? old_chunk : new_chunk; globalvar __ase_format_chunk;
__ase_format_chunk = [
[_BIN_TYPE.dword, "Length"],
[_BIN_TYPE.word, "Type"],
];
globalvar __ase_format_chunk_old_palette;
__ase_format_chunk_old_palette = [
[_BIN_TYPE.word, "Packet amount"],
];
globalvar __ase_format_chunk_old_palette_packet;
__ase_format_chunk_old_palette_packet = [
[_BIN_TYPE.byte, "Entries skip index"],
[_BIN_TYPE.byte, "Color amount"],
[_BIN_TYPE.color, "Colors", "Color amount"],
];
globalvar __ase_format_chunk_layer;
__ase_format_chunk_layer = [
[_BIN_TYPE.word, "Flag"], //1: Visible, 2: Editable, 4:Lock, 8:BG
[_BIN_TYPE.word, "Layer type"], //0: Normal, 1: Group, 2: Tilemap
[_BIN_TYPE.word, "Child level"],
[_BIN_TYPE.word, "Ignore"],
[_BIN_TYPE.word, "Ignore"],
[_BIN_TYPE.word, "Blend mode"],
[_BIN_TYPE.byte, "Opacity"],
[_BIN_TYPE.byte, "Unused", 3],
[_BIN_TYPE.string, "Name"],
[_BIN_TYPE.dword, "Tileset index", 1, function(chunk) { return chunk[? "Layer type"] == 2; }],
];
globalvar __ase_format_chunk_cel;
__ase_format_chunk_cel = [
[_BIN_TYPE.word, "Layer index"],
[_BIN_TYPE.short, "X"],
[_BIN_TYPE.short, "Y"],
[_BIN_TYPE.byte, "Opacity"],
[_BIN_TYPE.word, "Cel type"], //0: Raw image, 1: Linked, 2: Compressed image, 3: Compressed tilemap
[_BIN_TYPE.byte, "Unused", 7],
];
globalvar __ase_format_chunk_cel_raw_image;
__ase_format_chunk_cel_raw_image = [
[_BIN_TYPE.word, "Width"],
[_BIN_TYPE.word, "Height"],
[_BIN_TYPE.pixel, "Pixels", function(chunk) { return chunk[? "Width"] * chunk[? "Width"]; }],
];
globalvar __ase_format_chunk_cel_linked;
__ase_format_chunk_cel_linked = [
[_BIN_TYPE.word, "Frame position"],
];
globalvar __ase_format_chunk_cel_compress_image;
__ase_format_chunk_cel_compress_image = [
[_BIN_TYPE.word, "Width"],
[_BIN_TYPE.word, "Height"],
//[_BIN_TYPE.long, "Raw cel", function(chunk) { return chunk[? "Width"] * chunk[? "Width"]; }],
];
globalvar __ase_format_chunk_cel_compress_tilemap;
__ase_format_chunk_cel_compress_tilemap = [
[_BIN_TYPE.word, "Width"],
[_BIN_TYPE.word, "Height"],
[_BIN_TYPE.word, "Bits per tile"],
[_BIN_TYPE.dword, "Bitmask for tile ID"],
[_BIN_TYPE.dword, "X flip"],
[_BIN_TYPE.dword, "Y flip"],
[_BIN_TYPE.dword, "90CW rotation"],
[_BIN_TYPE.byte, "Unused", 10],
//[_BIN_TYPE.tile, "Tiles", function(chunk) { return chunk[? "Width"] * chunk[? "Width"]; }],
];
globalvar __ase_format_chunk_cel_extra;
__ase_format_chunk_cel_extra = [
[_BIN_TYPE.dword, "Flag"],
[_BIN_TYPE.fixed, "X"],
[_BIN_TYPE.fixed, "Y"],
[_BIN_TYPE.fixed, "Width"],
[_BIN_TYPE.fixed, "Height"],
[_BIN_TYPE.byte, "Unused", 16],
];
globalvar __ase_format_chunk_color_profile;
__ase_format_chunk_color_profile = [
[_BIN_TYPE.word, "Type"], //0: no profile, 1: sRGB, 2: ICC
[_BIN_TYPE.word, "Flag"], //1: Fix gamma
[_BIN_TYPE.fixed, "Fixed gamma"],
[_BIN_TYPE.byte, "Unused", 8],
[_BIN_TYPE.dword, "ICC Data length", 1, function(chunk) { return chunk[? "Type"] == 2; }],
[_BIN_TYPE.byte, "ICC Data", "ICC Data length", function(chunk) { return chunk[? "Type"] == 2; }],
];
globalvar __ase_format_chunk_file;
__ase_format_chunk_file = [
[_BIN_TYPE.dword, "Entries"],
[_BIN_TYPE.byte, "Unused", 8],
];
globalvar __ase_format_chunk_file_entry;
__ase_format_chunk_file_entry = [
[_BIN_TYPE.dword, "ID"],
[_BIN_TYPE.byte, "File type"], //0: External palette, 1: External tileset, 2: Extension anme
[_BIN_TYPE.byte, "Unused", 7],
[_BIN_TYPE.string, "File name"],
];
globalvar __ase_format_chunk_tag;
__ase_format_chunk_tag = [
[_BIN_TYPE.word, "Tag amount"],
[_BIN_TYPE.byte, "Unused", 8],
];
globalvar __ase_format_chunk_tag_entry;
__ase_format_chunk_tag_entry = [
[_BIN_TYPE.word, "Frame start"],
[_BIN_TYPE.word, "Frame end"],
[_BIN_TYPE.byte, "Loop"], //0: Forward, 1: Backward, 2: Ping pong, 3: Ping pong reverse
[_BIN_TYPE.word, "Repeat amount"], //0: Infinite, N: N-times
[_BIN_TYPE.byte, "Unused", 6],
[_BIN_TYPE.color, "Color"],
[_BIN_TYPE.byte, "Extra"],
[_BIN_TYPE.string, "Name"],
]
globalvar __ase_format_chunk_palette;
__ase_format_chunk_palette = [
[_BIN_TYPE.dword, "Color amount"],
[_BIN_TYPE.dword, "First index"],
[_BIN_TYPE.dword, "Last index"],
[_BIN_TYPE.byte, "Unused", 8],
];
globalvar __ase_format_chunk_palette_entry;
__ase_format_chunk_palette_entry = [
[_BIN_TYPE.word, "Flag"], //1: Has name
[_BIN_TYPE.byte, "Red"],
[_BIN_TYPE.byte, "Green"],
[_BIN_TYPE.byte, "Blue"],
[_BIN_TYPE.byte, "Alpha"],
[_BIN_TYPE.string, "Name", 1, function(chunk) { return chunk[? "Flag"] & (1 << 0); }],
];
globalvar __ase_format_chunk_user_data;
__ase_format_chunk_user_data = [
[_BIN_TYPE.dword, "Flag"], //1: Text, 2: Color, 4: Properties
[_BIN_TYPE.string, "Name", 1, function(chunk) { return chunk[? "Flag"] & (1 << 0); }],
[_BIN_TYPE.byte, "Red", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
[_BIN_TYPE.byte, "Green", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
[_BIN_TYPE.byte, "Blue", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
[_BIN_TYPE.byte, "Alpha", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
];
globalvar __ase_format_chunk_user_data_prop;
__ase_format_chunk_user_data_prop = [
[_BIN_TYPE.dword, "Length"],
[_BIN_TYPE.dword, "Prop amount"],
]
/* TODO: Use data read */
globalvar __ase_format_chunk_slice;
__ase_format_chunk_slice = [
[_BIN_TYPE.dword, "Slice key amount"],
[_BIN_TYPE.dword, "Flag"], //1: 9 slice, 2: pivot
[_BIN_TYPE.dword, "Reserved"],
[_BIN_TYPE.string, "Name"],
];
globalvar __ase_format_chunk_slice_key;
__ase_format_chunk_slice_key = [
[_BIN_TYPE.dword, "Frame number"],
[_BIN_TYPE.long, "X"],
[_BIN_TYPE.long, "Y"],
[_BIN_TYPE.dword, "Width"],
[_BIN_TYPE.dword, "Height"],
];
globalvar __ase_format_chunk_slice_nine;
__ase_format_chunk_slice_nine = [
[_BIN_TYPE.long, "Center X"],
[_BIN_TYPE.long, "Center Y"],
[_BIN_TYPE.dword, "Center width"],
[_BIN_TYPE.dword, "Center height"],
];
globalvar __ase_format_chunk_slice_pivot;
__ase_format_chunk_slice_pivot = [
[_BIN_TYPE.long, "Pivot X"],
[_BIN_TYPE.long, "Pivot Y"],
];
globalvar __ase_format_chunk_tileset;
__ase_format_chunk_tileset = [
[_BIN_TYPE.dword, "ID"],
[_BIN_TYPE.dword, "Flag"], //1: Link to external file, 2: Include tile in this file, 4: Use ID 0 as empty tiles.
[_BIN_TYPE.dword, "Tile amount"],
[_BIN_TYPE.word, "Tile width"],
[_BIN_TYPE.word, "Tile height"],
[_BIN_TYPE.short, "Base index"],
[_BIN_TYPE.byte, "Reserved", 14],
[_BIN_TYPE.string, "Name"],
[_BIN_TYPE.dword, "ID of external file", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
[_BIN_TYPE.dword, "Tileset ID", 1, function(chunk) { return chunk[? "Flag"] & (1 << 1); }],
[_BIN_TYPE.dword, "Data length", 1, function(chunk) { return chunk[? "Flag"] & (1 << 2); }],
[_BIN_TYPE.pixel, "Compressed image", "Data length", function(chunk) { return chunk[? "Flag"] & (1 << 2); }],
];
function read_format_type(bin, datType, outMap) {
switch(datType) {
case _BIN_TYPE.byte: return bin_read_byte(bin);
case _BIN_TYPE.word: return bin_read_word(bin);
case _BIN_TYPE.short: return bin_read_short(bin);
case _BIN_TYPE.dword: return bin_read_dword(bin);
case _BIN_TYPE.long: return bin_read_long(bin);
case _BIN_TYPE.fixed: return bin_read_fixed(bin);
case _BIN_TYPE.float: return bin_read_float(bin);
case _BIN_TYPE.double: return bin_read_double(bin);
case _BIN_TYPE.qword: return bin_read_qword(bin);
case _BIN_TYPE.long64: return bin_read_long64(bin);
case _BIN_TYPE.string: return bin_read_string(bin);
case _BIN_TYPE.point: return bin_read_point(bin);
case _BIN_TYPE.size: return bin_read_size(bin);
case _BIN_TYPE.rect: return bin_read_rect(bin);
case _BIN_TYPE.color: return bin_read_color(bin);
case _BIN_TYPE.pixel: return bin_read_pixel(bin, outMap[? "Color depth"]);
} }
file_bin_close(file);
return 0;
}
function read_format(bin, format, outMap) {
var datType = array_safe_get(format, 0, 0);
var key = array_safe_get(format, 1, "");
var amount = array_safe_get(format, 2, 1);
if(is_string(amount))
amount = ds_map_exists(outMap, amount)? outMap[? amount] : 1;
else if(is_method(amount))
amount = amount(outMap);
if(amount == 1) {
var val = read_format_type(bin, datType, outMap);
outMap[? key] = val;
return val;
} else {
var a = array_create(amount);
for( var i = 0; i < amount; i++ )
a[i] = read_format_type(bin, datType, outMap);
outMap[? key] = a;
return a;
}
}
function read_format_array(bin, formatArr, outMap) {
for( var i = 0; i < array_length(formatArr); i++ ) {
if(array_length(formatArr[i]) >= 4 && !formatArr[i][3](outMap))
continue;
var pos = file_bin_position(bin);
var val = read_format(bin, formatArr[i], outMap);
//printIf(global.ASE_LOG, "Pos " + dec_to_hex(pos) + " - " + dec_to_hex(file_bin_position(bin)));
if(formatArr[i][1] == "Type")
printIf(global.ASE_LOG, "\t" + formatArr[i][1] + ":\t 0x" + dec_to_hex(val, 4));
else
printIf(global.ASE_LOG, "\t" + formatArr[i][1] + ":\t " + string(val));
}
}
function read_ase(path, fileMap) {
printIf(global.ASE_LOG, "===== Reading: " + path + " =====");
var file = file_bin_open(path, 0);
file_bin_seek(file, 0);
ds_map_clear(fileMap);
read_format_array(file, __ase_format_header, fileMap);
var frames = [];
var frameAmo = ds_map_exists(fileMap, "Frame amount")? fileMap[? "Frame amount"] : 0;
for( var i = 0; i < frameAmo; i++ ) {
printIf(global.ASE_LOG, "\n=== Reading frame " + string(i) + " ===");
array_push(frames, read_ase_frame(file));
}
fileMap[? "Frames"] = frames;
file_bin_close(file);
return fileMap;
}
function read_ase_frame(file) {
var frame = ds_map_create();
read_format_array(file, __ase_format_frame, frame);
var chunks = [];
var chunkAmo = ds_map_exists(frame, "Chunk amount")? frame[? "Chunk amount"] : 0;
if(chunkAmo == 65535)
chunkAmo = ds_map_exists(frame, "Chunk amount new")? frame[? "Chunk amount new"] : chunkAmo;
for( var i = 0; i < chunkAmo; i++ ) {
printIf(global.ASE_LOG, "\n=== Reading chunk " + string(i) + " ===");
array_push(chunks, read_ase_chunk(file));
}
frame[? "Chunks"] = chunks;
return frame;
}
function read_ase_chunk(file) {
var chunk = ds_map_create();
var startPos = file_bin_position(file);
read_format_array(file, __ase_format_chunk, chunk);
var skipPos = startPos + chunk[? "Length"];
switch(chunk[? "Type"]) {
case 0x0004: //old palette
case 0x0011: //old palette
printIf(global.ASE_LOG, "\n -- Reading chunk [Old palette] -- ");
read_format_array(file, __ase_format_chunk_old_palette, chunk);
var cc = [];
for( var i = 0; i < chunk[? "Packet amount"]; i++ ) {
cc[i] = ds_map_create();
read_format_array(file, __ase_format_chunk_old_palette_packet, cc[i]);
}
chunk[? "Packets"] = cc;
break;
case 0x2004: //layer
printIf(global.ASE_LOG, "\n -- Reading chunk [Layer] -- ");
read_format_array(file, __ase_format_chunk_layer, chunk);
break;
case 0x2005: //cel
printIf(global.ASE_LOG, "\n -- Reading chunk [Cel] -- ");
read_format_array(file, __ase_format_chunk_cel, chunk);
var type = chunk[? "Cel type"];
switch(type) {
case 0 :
read_format_array(file, __ase_format_chunk_cel_raw_image, chunk);
break;
case 1 :
read_format_array(file, __ase_format_chunk_cel_linked, chunk);
break;
case 2 :
read_format_array(file, __ase_format_chunk_cel_compress_image, chunk);
chunk[? "Surface"] = noone;
var compressLength = (skipPos - file_bin_position(file));
var _compBuff = buffer_create(compressLength * buffer_sizeof(buffer_u8), buffer_grow, 1);
buffer_seek(_compBuff, buffer_seek_start, 0);
repeat(compressLength) {
var byte = file_bin_read_byte(file);
buffer_write(_compBuff, buffer_u8, byte);
}
var _rawBuff = buffer_decompress(_compBuff);
if(_rawBuff != -1)
chunk[? "Buffer"] = _rawBuff;
buffer_delete(_compBuff);
break;
case 3 :
read_format_array(file, __ase_format_chunk_cel_compress_tilemap, chunk);
//TILE READ
break;
}
break;
case 0x2006: //cel extra
break;
case 0x2007: //color profile
printIf(global.ASE_LOG, "\n -- Reading chunk [Color profile] -- ");
read_format_array(file, __ase_format_chunk_color_profile, chunk);
break;
case 0x2008: //external file
break;
case 0x2009: //mask DEPRECATED
break;
case 0x2017: //path
break;
case 0x2018: //tag
printIf(global.ASE_LOG, "\n -- Reading chunk [Tag] -- ");
read_format_array(file, __ase_format_chunk_tag, chunk);
var amo = chunk[? "Tag amount"]
var tags = [];
repeat(amo) {
var m = ds_map_create();
read_format_array(file, __ase_format_chunk_tag_entry, m);
array_push(tags, m);
}
chunk[? "Tags"] = tags;
break;
case 0x2019: //palette
printIf(global.ASE_LOG, "\n -- Reading chunk [Palette] -- ");
read_format_array(file, __ase_format_chunk_palette, chunk);
var cc = [];
for( var i = 0; i < chunk[? "Color amount"]; i++ ) {
cc[i] = ds_map_create();
read_format_array(file, __ase_format_chunk_palette_entry, cc[i]);
}
chunk[? "Palette"] = cc;
break;
case 0x2020: //user data
break;
case 0x2022: //slice
break;
case 0x2023: //tileset
break;
}
file_bin_seek(file, skipPos - file_bin_position(file));
return chunk;
} }

View file

@ -29,7 +29,7 @@
for( var i = 0; i < ds_list_size(_st.content); i++ ) { for( var i = 0; i < ds_list_size(_st.content); i++ ) {
var _f = _st.content[| i]; var _f = _st.content[| i];
global.ASSET_MAP[? _f.path] = _f.spr; global.ASSET_MAP[? _f.path] = _f;
} }
for( var i = 0; i < ds_list_size(_st.subDir); i++ ) { for( var i = 0; i < ds_list_size(_st.subDir); i++ ) {
@ -53,7 +53,7 @@
if(valid) return s; if(valid) return s;
} }
var spr = global.ASSET_MAP[? key]; var spr = global.ASSET_MAP[? key].getSpr();
global.ASSET_CACHE[? key] = surface_create_from_sprite(spr); global.ASSET_CACHE[? key] = surface_create_from_sprite(spr);
return global.ASSET_CACHE[? key]; return global.ASSET_CACHE[? key];

View file

@ -0,0 +1,27 @@
function bin_fraction(intVal, len) {
var amp = 1;
var val = 0;
for( var i = len - 1; i >= 0; i-- ) {
var _b = (intVal & ~(1 << len)) >> len;
amp *= 0.5;
val = amp * _b;
}
return val;
}
/// GMLscripts.com
function dec_to_hex(dec, len = 1) {
var hex = "";
if (dec < 0) {
len = max(len, ceil(logn(16, 2 * abs(dec))));
}
var dig = "0123456789ABCDEF";
while (len-- || dec) {
hex = string_char_at(dig, (dec & $F) + 1) + hex;
dec = dec >> 4;
}
return hex;
}

View file

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

View file

@ -1,16 +1,16 @@
function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, clamp_border = false, mask = noone) { function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, sampleMode = 0, overColor = noone) {
static uni_bor = shader_get_uniform(sh_blur_gaussian, "clamp_border"); static uni_bor = shader_get_uniform(sh_blur_gaussian, "sampleMode");
static uni_dim = shader_get_uniform(sh_blur_gaussian, "dimension"); static uni_dim = shader_get_uniform(sh_blur_gaussian, "dimension");
static uni_hor = shader_get_uniform(sh_blur_gaussian, "horizontal"); static uni_hor = shader_get_uniform(sh_blur_gaussian, "horizontal");
static uni_wei = shader_get_uniform(sh_blur_gaussian, "weight"); static uni_wei = shader_get_uniform(sh_blur_gaussian, "weight");
static uni_sze = shader_get_uniform(sh_blur_gaussian, "size"); static uni_sze = shader_get_uniform(sh_blur_gaussian, "size");
static uni_ovr = shader_get_uniform(sh_blur_gaussian, "overrideColor");
static uni_umk = shader_get_uniform(sh_blur_gaussian, "useMask"); static uni_ovc = shader_get_uniform(sh_blur_gaussian, "overColor");
static uni_msk = shader_get_sampler_index(sh_blur_gaussian, "mask");
var hori = surface_create_valid(surface_get_width(surface), surface_get_height(surface)); var hori = surface_create_valid(surface_get_width(surface), surface_get_height(surface));
var vert = surface_create_valid(surface_get_width(surface), surface_get_height(surface)); var vert = surface_create_valid(surface_get_width(surface), surface_get_height(surface));
#region kernel generation
size = max(1, round(size)); size = max(1, round(size));
var gau_array = array_create(size); var gau_array = array_create(size);
var we = 0; var we = 0;
@ -24,7 +24,9 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, clamp
for(var i = 0; i < size; i++) { for(var i = 0; i < size; i++) {
gau_array[i] /= we; gau_array[i] /= we;
} }
#endregion
BLEND_OVER
surface_set_target(hori); surface_set_target(hori);
draw_clear_alpha(bg_c, bg); draw_clear_alpha(bg_c, bg);
@ -32,12 +34,12 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, clamp
shader_set_uniform_f_array(uni_dim, [ surface_get_width(surface), surface_get_height(surface) ]); shader_set_uniform_f_array(uni_dim, [ surface_get_width(surface), surface_get_height(surface) ]);
shader_set_uniform_f_array(uni_wei, gau_array); shader_set_uniform_f_array(uni_wei, gau_array);
shader_set_uniform_i(uni_bor, clamp_border? 1 : 0); shader_set_uniform_i(uni_bor, sampleMode);
shader_set_uniform_i(uni_sze, size); shader_set_uniform_i(uni_sze, size);
shader_set_uniform_i(uni_hor, 1); shader_set_uniform_i(uni_hor, 1);
shader_set_uniform_i(uni_umk, is_surface(mask)); shader_set_uniform_i(uni_ovr, overColor != noone);
texture_set_stage(uni_msk, surface_get_texture(mask)); shader_set_uniform_f_array(uni_ovc, colToVec4(overColor));
draw_surface_safe(surface, 0, 0); draw_surface_safe(surface, 0, 0);
shader_reset(); shader_reset();
@ -52,6 +54,7 @@ function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, clamp
draw_surface_safe(hori, 0, 0); draw_surface_safe(hori, 0, 0);
shader_reset(); shader_reset();
surface_reset_target(); surface_reset_target();
BLEND_NORMAL
surface_free(hori); surface_free(hori);

View file

@ -2,10 +2,7 @@ function button(_onClick, _icon = noone) {
return new buttonClass(_onClick, _icon); return new buttonClass(_onClick, _icon);
} }
function buttonClass(_onClick, _icon = noone) constructor { function buttonClass(_onClick, _icon = noone) : widget() constructor {
active = false;
hover = false;
icon = _icon; icon = _icon;
icon_blend = c_white; icon_blend = c_white;
icon_index = 0; icon_index = 0;
@ -15,6 +12,11 @@ function buttonClass(_onClick, _icon = noone) constructor {
onClick = _onClick; onClick = _onClick;
static trigger = function() {
if(!onClick) return;
onClick();
}
static setIcon = function(_icon, _index = 0, _blend = c_white) { static setIcon = function(_icon, _index = 0, _blend = c_white) {
icon = _icon; icon = _icon;
icon_index = _index; icon_index = _index;
@ -33,11 +35,16 @@ function buttonClass(_onClick, _icon = noone) constructor {
} }
static draw = function(_x, _y, _w, _h, _m, spr = THEME.button, blend = c_white) { static draw = function(_x, _y, _w, _h, _m, spr = THEME.button, blend = c_white) {
x = _x;
y = _y;
w = _w;
h = _h;
var click = false; var click = false;
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) {
draw_sprite_stretched_ext(spr, 1, _x, _y, _w, _h, blend, 1); draw_sprite_stretched_ext(spr, 1, _x, _y, _w, _h, blend, 1);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
if(onClick) onClick(); trigger();
click = true; click = true;
} }
if(mouse_click(mb_left, active)) if(mouse_click(mb_left, active))
@ -45,15 +52,19 @@ function buttonClass(_onClick, _icon = noone) constructor {
if(tooltip != "") TOOLTIP = tooltip; if(tooltip != "") TOOLTIP = tooltip;
} else { } else {
draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1); draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1);
if(mouse_press(mb_left)) deactivate();
} }
if(icon) draw_sprite_ui_uniform(icon, icon_index, _x + _w / 2, _y + _h / 2,, icon_blend); if(icon) draw_sprite_ui_uniform(icon, icon_index, _x + _w / 2, _y + _h / 2,, icon_blend);
if(text != "") { if(text != "") {
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
draw_text(_x + _w / 2, _y + _h / 2, text); draw_text(_x + _w / 2, _y + _h / 2, text);
} }
hover = false; if(WIDGET_CURRENT == self)
active = false; draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6));
resetFocus();
return click; return click;
} }
@ -67,17 +78,19 @@ function buttonInstant(spr, _x, _y, _w, _h, _m, _act, _hvr, _tip = "", _icon = n
draw_sprite_stretched(spr, 1, _x, _y, _w, _h); draw_sprite_stretched(spr, 1, _x, _y, _w, _h);
if(_tip != "") if(_tip != "")
TOOLTIP = _tip; TOOLTIP = _tip;
if(mouse_press(mb_left, _act)) if(mouse_press(mb_left, _act))
res = 2; res = 2;
if(mouse_press(mb_right, _act))
res = 3;
if(mouse_click(mb_left, _act)) if(mouse_click(mb_left, _act))
draw_sprite_stretched(spr, 2, _x, _y, _w, _h); draw_sprite_stretched(spr, 2, _x, _y, _w, _h);
} else { } else
draw_sprite_stretched(spr, 0, _x, _y, _w, _h); draw_sprite_stretched(spr, 0, _x, _y, _w, _h);
}
if(_icon) { if(_icon)
draw_sprite_ui_uniform(_icon, _icon_index, _x + _w / 2, _y + _h / 2, 1, _icon_blend, _icon_alpha); draw_sprite_ui_uniform(_icon, _icon_index, _x + _w / 2, _y + _h / 2, 1, _icon_blend, _icon_alpha);
}
return res; return res;
} }

View file

@ -2,10 +2,7 @@ function buttonColor(_onApply) {
return new buttonColorClass(_onApply); return new buttonColorClass(_onApply);
} }
function buttonColorClass(_onApply) constructor { function buttonColorClass(_onApply) : widget() constructor {
active = false;
hover = false;
onApply = _onApply; onApply = _onApply;
onColorPick = function() { onColorPick = function() {
var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2); var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2);
@ -16,10 +13,24 @@ function buttonColorClass(_onApply) constructor {
is_picking = false; is_picking = false;
current_color = c_black;
b_picker = button(onColorPick); b_picker = button(onColorPick);
b_picker.icon = THEME.color_picker_dropper; b_picker.icon = THEME.color_picker_dropper;
static trigger = function() {
var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2);
dialog.selector.setColor(current_color);
dialog.selector.onApply = onApply;
dialog.onApply = onApply;
}
static draw = function(_x, _y, _w, _h, _color, _m) { static draw = function(_x, _y, _w, _h, _color, _m) {
x = _x;
y = _y;
w = _w;
h = _h;
current_color = _color;
b_picker.hover = hover; b_picker.hover = hover;
b_picker.active = active; b_picker.active = active;
b_picker.draw(_x + _w - ui(32), _y + _h / 2 - ui(16), ui(32), ui(32), _m, THEME.button_hide); b_picker.draw(_x + _w - ui(32), _y + _h / 2 - ui(16), ui(32), ui(32), _m, THEME.button_hide);
@ -40,21 +51,22 @@ function buttonColorClass(_onApply) constructor {
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _cw, _y + _h)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _cw, _y + _h)) {
draw_sprite_stretched(THEME.button, 1, _x, _y, _cw, _h); draw_sprite_stretched(THEME.button, 1, _x, _y, _cw, _h);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2); trigger();
dialog.selector.setColor(_color);
dialog.selector.onApply = onApply;
dialog.onApply = onApply;
click = true; click = true;
} }
if(mouse_click(mb_left, active)) if(mouse_click(mb_left, active))
draw_sprite_stretched(THEME.button, 2, _x, _y, _cw, _h); draw_sprite_stretched(THEME.button, 2, _x, _y, _cw, _h);
} else { } else {
draw_sprite_stretched(THEME.button, 0, _x, _y, _cw, _h); draw_sprite_stretched(THEME.button, 0, _x, _y, _cw, _h);
if(mouse_press(mb_left)) deactivate();
} }
draw_sprite_stretched_ext(THEME.color_picker_sample, 0, _x + ui(4), _y + ui(4), _cw - ui(8), _h - ui(8), _color, 1); draw_sprite_stretched_ext(THEME.color_picker_sample, 0, _x + ui(4), _y + ui(4), _cw - ui(8), _h - ui(8), _color, 1);
hover = false; if(WIDGET_CURRENT == self)
active = false; draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6));
resetFocus();
return click; return click;
} }

View file

@ -2,32 +2,46 @@ function buttonGradient(_onApply) {
return new buttonGradientClass(_onApply); return new buttonGradientClass(_onApply);
} }
function buttonGradientClass(_onApply) constructor { function buttonGradientClass(_onApply) : widget() constructor {
active = false;
hover = false;
onApply = _onApply; onApply = _onApply;
current_gradient = noone;
current_data = noone;
static trigger = function() {
var dialog = dialogCall(o_dialog_gradient, WIN_W / 2, WIN_H / 2);
dialog.setGradient(current_gradient, current_data);
dialog.onApply = onApply;
}
static draw = function(_x, _y, _w, _h, _gradient, _data, _m) { static draw = function(_x, _y, _w, _h, _gradient, _data, _m) {
x = _x;
y = _y;
w = _w;
h = _h;
current_gradient = _gradient;
current_data = _data;
var click = false; var click = false;
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) {
draw_sprite_stretched(THEME.button, 1, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 1, _x, _y, _w, _h);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
var dialog = dialogCall(o_dialog_gradient, WIN_W / 2, WIN_H / 2); trigger();
dialog.setGradient(_gradient, _data);
dialog.onApply = onApply;
click = true; click = true;
} }
if(mouse_click(mb_left, active)) if(mouse_click(mb_left, active))
draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h);
} else { } else {
draw_sprite_stretched(THEME.button, 0, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 0, _x, _y, _w, _h);
if(mouse_press(mb_left)) deactivate();
} }
draw_gradient(_x + ui(6), _y + ui(6), _w - ui(12), _h - ui(12), _gradient, _data[| 0]); draw_gradient(_x + ui(6), _y + ui(6), _w - ui(12), _h - ui(12), _gradient, _data[| 0]);
hover = false; if(WIDGET_CURRENT == self)
active = false; draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6));
resetFocus();
return click; return click;
} }

View file

@ -2,12 +2,12 @@ function buttonGroup(_data, _onClick) {
return new buttonGroupClass(_data, _onClick); return new buttonGroupClass(_data, _onClick);
} }
function buttonGroupClass(_data, _onClick) constructor { function buttonGroupClass(_data, _onClick) : widget() constructor {
data = _data; data = _data;
onClick = _onClick; onClick = _onClick;
display_button = false;
hover = false; current_selecting = 0;
active = false;
for(var i = 0; i < array_length(data); i++) { for(var i = 0; i < array_length(data); i++) {
buttons[i] = button(-1); buttons[i] = button(-1);
@ -15,7 +15,28 @@ function buttonGroupClass(_data, _onClick) constructor {
sb_small = new scrollBox(data, _onClick); sb_small = new scrollBox(data, _onClick);
static trigger = function() {
if(current_selecting + 1 >= array_length(data))
onClick(0);
else
onClick(current_selecting + 1);
}
static register = function(parent = noone) {
if(display_button) {
array_push(WIDGET_ACTIVE, self);
self.parent = parent;
} else
sb_small.register(parent);
}
static draw = function(_x, _y, _w, _h, _selecting, _m, _rx = 0, _ry = 0) { static draw = function(_x, _y, _w, _h, _selecting, _m, _rx = 0, _ry = 0) {
x = _x;
y = _y;
w = _w;
h = _h;
current_selecting = _selecting;
var amo = array_length(data); var amo = array_length(data);
var ww = _w / amo; var ww = _w / amo;
@ -26,7 +47,9 @@ function buttonGroupClass(_data, _onClick) constructor {
total_width += string_width(data[i]) + ui(32); total_width += string_width(data[i]) + ui(32);
} }
if(total_width < _w) { display_button = total_width < _w;
if(display_button) {
for(var i = 0; i < amo; i++) { for(var i = 0; i < amo; i++) {
buttons[i].hover = hover; buttons[i].hover = hover;
buttons[i].active = active; buttons[i].active = active;
@ -34,11 +57,10 @@ function buttonGroupClass(_data, _onClick) constructor {
var bx = _x + ww * i; var bx = _x + ww * i;
var spr = i == 0 ? THEME.button_left : (i == amo - 1? THEME.button_right : THEME.button_middle); var spr = i == 0 ? THEME.button_left : (i == amo - 1? THEME.button_right : THEME.button_middle);
if(_selecting == i) { if(_selecting == i)
draw_sprite_stretched(spr, 2, bx, _y, ww, _h); draw_sprite_stretched(spr, 2, bx, _y, ww, _h);
} else if(buttons[i].draw(bx, _y, ww, _h, _m, spr)) { else if(buttons[i].draw(bx, _y, ww, _h, _m, spr))
onClick(i); onClick(i);
}
if(is_string(data[i])) { if(is_string(data[i])) {
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text); draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
@ -53,7 +75,9 @@ function buttonGroupClass(_data, _onClick) constructor {
sb_small.draw(_x, _y, _w, _h, data[_selecting], _m, _rx, _ry); sb_small.draw(_x, _y, _w, _h, data[_selecting], _m, _rx, _ry);
} }
hover = false; if(WIDGET_CURRENT == self)
active = false; draw_sprite_stretched(THEME.widget_selecting, 0, x - ui(3), y - ui(3), w + ui(6), h + ui(6));
resetFocus();
} }
} }

View file

@ -2,32 +2,43 @@ function buttonPalette(_onApply) {
return new buttonPaletteClass(_onApply); return new buttonPaletteClass(_onApply);
} }
function buttonPaletteClass(_onApply) constructor { function buttonPaletteClass(_onApply) : widget() constructor {
active = false;
hover = false;
onApply = _onApply; onApply = _onApply;
current_palette = noone;
static trigger = function() {
var dialog = dialogCall(o_dialog_palette, WIN_W / 2, WIN_H / 2);
dialog.setPalette(current_palette);
dialog.onApply = onApply;
}
static draw = function(_x, _y, _w, _h, _color, _m) { static draw = function(_x, _y, _w, _h, _color, _m) {
x = _x;
y = _y;
w = _w;
h = _h;
current_palette = _color;
var click = false; var click = false;
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) {
draw_sprite_stretched(THEME.button, 1, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 1, _x, _y, _w, _h);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
var dialog = dialogCall(o_dialog_palette, WIN_W / 2, WIN_H / 2); trigger();
dialog.setPalette(_color);
dialog.onApply = onApply;
click = true; click = true;
} }
if(mouse_click(mb_left, active)) if(mouse_click(mb_left, active))
draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h);
} else { } else {
draw_sprite_stretched(THEME.button, 0, _x, _y, _w, _h); draw_sprite_stretched(THEME.button, 0, _x, _y, _w, _h);
if(mouse_press(mb_left)) deactivate();
} }
drawPalette(_color, _x + ui(6), _y + ui(6), _w - ui(12), _h - ui(12)); drawPalette(_color, _x + ui(6), _y + ui(6), _w - ui(12), _h - ui(12));
hover = false; resetFocus();
active = false;
if(WIDGET_CURRENT == self)
draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6));
return click; return click;
} }

View file

@ -2,14 +2,135 @@ function bin_read_byte(bin) {
return file_bin_read_byte(bin); return file_bin_read_byte(bin);
} }
function bin_read_word(bin) { function bin_read_word(bin) {
return file_bin_read_byte(bin) + file_bin_read_byte(bin); var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
return b0 + (b1 << 8);
} }
function bin_read_short(bin) { function bin_read_short(bin) {
return file_bin_read_byte(bin) + file_bin_read_byte(bin); var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var short = b0 + (b1 << 8);
var sig = short >> 15;
short = short & ~(1 << 15);
return sig? -power(2, 15) + short : short;
} }
function bin_read_dword(bin) { function bin_read_dword(bin) {
return file_bin_read_byte(bin) + file_bin_read_byte(bin) + file_bin_read_byte(bin) + file_bin_read_byte(bin); var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var dword = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24);
return dword;
} }
function bin_read_long(bin) { function bin_read_long(bin) {
return file_bin_read_byte(bin) + file_bin_read_byte(bin) + file_bin_read_byte(bin) + file_bin_read_byte(bin); var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var long = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24);
var sig = long >> 31;
long = long & ~(1 << 31);
return sig? -power(2, 31) : long;
}
function bin_read_fixed(bin) {
var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var fixInt = b0 + (b1 << 8);
var fixFrc = b2 + (b3 << 8);
return fixInt + bin_fraction(fixFrc, 16);
}
function bin_read_float(bin) {
var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var float = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24);
var sig = float >> 31;
var expo = (float & ~(1 << 31)) >> 23;
var mant = float & 0b00000000_01111111_11111111_11111111;
var val = (1 + mant) * power(2, expo - 127);
return sig? -val : val;
}
function bin_read_double(bin) {
var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var b4 = file_bin_read_byte(bin);
var b5 = file_bin_read_byte(bin);
var b6 = file_bin_read_byte(bin);
var b7 = file_bin_read_byte(bin);
var double = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56);
var sig = double >> 63;
var expo = (double & ~(1 << 63)) >> 52;
var mant = double & 0b00000000_00001111_11111111_11111111_11111111_11111111_11111111_11111111;
var val = (1 + mant) * power(2, expo - 1023);
return sig? -val : val;
}
function bin_read_qword(bin) {
var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var b4 = file_bin_read_byte(bin);
var b5 = file_bin_read_byte(bin);
var b6 = file_bin_read_byte(bin);
var b7 = file_bin_read_byte(bin);
return b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56);
}
function bin_read_long64(bin) {
var b0 = file_bin_read_byte(bin);
var b1 = file_bin_read_byte(bin);
var b2 = file_bin_read_byte(bin);
var b3 = file_bin_read_byte(bin);
var b4 = file_bin_read_byte(bin);
var b5 = file_bin_read_byte(bin);
var b6 = file_bin_read_byte(bin);
var b7 = file_bin_read_byte(bin);
var long = b0 + (b1 << 8) + (b2 << 16) + (b3 << 24) + (b2 << 32) + (b3 << 40) + (b2 << 48) + (b3 << 56);
var sig = long >> 63;
long = long & ~(1 << 63);
return sig? -long : long;
}
//
function bin_read_string(bin) {
var len = bin_read_word(bin);
var ss = "";
repeat(len) {
var utf = bin_read_byte(bin);
ss += chr(utf);
}
return ss;
}
function bin_read_point(bin) {
return [bin_read_long(bin), bin_read_long(bin)];
}
function bin_read_size(bin) {
return [bin_read_long(bin), bin_read_long(bin)];
}
function bin_read_rect(bin) {
return [bin_read_point(bin), bin_read_size(bin)];
}
function bin_read_color(bin) {
var r = bin_read_byte(bin);
var g = bin_read_byte(bin);
var b = bin_read_byte(bin);
return make_color_rgb(r, g, b);
}
function bin_read_pixel(bin, type) {
switch(type) {
case 0 : return [ bin_read_byte(bin), bin_read_byte(bin), bin_read_byte(bin), bin_read_byte(bin) ];
case 1 : return [ bin_read_byte(bin), bin_read_byte(bin) ];
case 2 : return [ bin_read_byte(bin) ];
}
return 0;
} }

View file

@ -1,10 +1,17 @@
function checkBox(_onClick) constructor { function checkBox(_onClick) : widget() constructor {
active = false;
hover = false;
onClick = _onClick; onClick = _onClick;
static trigger = function() {
if(!onClick) return;
onClick();
}
static draw = function(_x, _y, _value, _m, ss = ui(28), halign = fa_left, valign = fa_top) { static draw = function(_x, _y, _value, _m, ss = ui(28), halign = fa_left, valign = fa_top) {
x = _x;
y = _y;
w = ss;
h = ss;
var _dx, _dy; var _dx, _dy;
switch(halign) { switch(halign) {
case fa_left: _dx = _x; break; case fa_left: _dx = _x; break;
@ -24,10 +31,13 @@ function checkBox(_onClick) constructor {
draw_sprite_stretched(THEME.checkbox, _value * 2 + 1, _dx, _dy, ss, ss); draw_sprite_stretched(THEME.checkbox, _value * 2 + 1, _dx, _dy, ss, ss);
if(mouse_press(mb_left, active)) if(mouse_press(mb_left, active))
if(onClick) onClick(); trigger();
} } else
if(mouse_press(mb_left)) deactivate();
hover = false; if(WIDGET_CURRENT == self)
active = false; draw_sprite_stretched(THEME.widget_selecting, 0, _dx - ui(3), _dy - ui(3), ss + ui(6), ss + ui(6));
resetFocus();
} }
} }

View file

@ -15,3 +15,15 @@ function colorBrightness(clr) {
var b2 = color_get_blue(clr) / 255; var b2 = color_get_blue(clr) / 255;
return 0.299 * r2 + 0.587 * g2 + 0.224 * b2; return 0.299 * r2 + 0.587 * g2 + 0.224 * b2;
} }
function colorMultiply(c1, c2) {
var r1 = color_get_red(c1) / 255;
var g1 = color_get_green(c1) / 255;
var b1 = color_get_blue(c1) / 255;
var r2 = color_get_red(c2) / 255;
var g2 = color_get_green(c2) / 255;
var b2 = color_get_blue(c2) / 255;
return make_color_rgb((r1 * r2) * 255, (g1 * g2) * 255, (b1 * b2) * 255);
}

View file

@ -15,13 +15,10 @@ enum PUPPET_FORCE_MODE {
wind, wind,
} }
function controlPointBox(_onModify) constructor { function controlPointBox(_onModify) : widget() constructor {
onModify = _onModify; onModify = _onModify;
onSurfaceSize = -1; onSurfaceSize = -1;
active = false;
hover = false;
tbCx = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.cx, toNumber(val)); }); tbCx = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.cx, toNumber(val)); });
tbCy = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.cy, toNumber(val)); }); tbCy = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.cy, toNumber(val)); });
tbFx = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.fx, toNumber(val)); }); tbFx = new textBox(TEXTBOX_INPUT.float, function(val) { onModify(PUPPET_CONTROL.fx, toNumber(val)); });
@ -42,7 +39,21 @@ function controlPointBox(_onModify) constructor {
function(val) { onModify(PUPPET_CONTROL.mode, toNumber(val)); } function(val) { onModify(PUPPET_CONTROL.mode, toNumber(val)); }
); );
static register = function(parent = noone) {
sMode.register(parent);
tbCx.register(parent);
tbCy.register(parent);
tbFx.register(parent);
tbFy.register(parent);
tbW.register(parent);
tbH.register(parent);
rot.register(parent);
}
static draw = function(_x, _y, _w, _data, _m, _rx, _ry) { static draw = function(_x, _y, _w, _data, _m, _rx, _ry) {
x = _x;
y = _y;
tbCx.hover = hover; tbCx.active = active; tbCx.hover = hover; tbCx.active = active;
tbCy.hover = hover; tbCy.active = active; tbCy.hover = hover; tbCy.active = active;
tbFx.hover = hover; tbFx.active = active; tbFx.hover = hover; tbFx.active = active;
@ -109,8 +120,7 @@ function controlPointBox(_onModify) constructor {
break; break;
} }
active = false; resetFocus();
hover = false;
return yy - _y; return yy - _y;
} }

View file

@ -9,6 +9,7 @@
globalvar KEYBOARD_STRING, KEYBOARD_PRESSED; globalvar KEYBOARD_STRING, KEYBOARD_PRESSED;
globalvar CTRL, ALT, SHIFT; globalvar CTRL, ALT, SHIFT;
WIDGET_ACTIVE = [];
KEYBOARD_PRESSED = vk_nokey; KEYBOARD_PRESSED = vk_nokey;
CTRL = KEYBOARD_STATUS.idle; CTRL = KEYBOARD_STATUS.idle;
ALT = KEYBOARD_STATUS.idle; ALT = KEYBOARD_STATUS.idle;
@ -28,3 +29,40 @@
return key == KEYBOARD_STATUS.pressing; return key == KEYBOARD_STATUS.pressing;
} }
#endregion #endregion
#region widget
globalvar WIDGET_CURRENT, WIDGET_ACTIVE, WIDGET_CURRENT_SCROLL;
WIDGET_CURRENT = noone;
WIDGET_CURRENT_SCROLL = noone;
function widget_next() {
if(WIDGET_CURRENT == noone) return;
if(array_length(WIDGET_ACTIVE) == 0) return;
var ind = array_find(WIDGET_ACTIVE, WIDGET_CURRENT);
WIDGET_CURRENT.deactivate();
if(ind + 1 == array_length(WIDGET_ACTIVE))
WIDGET_ACTIVE[0].activate();
else
WIDGET_ACTIVE[ind + 1].activate();
}
function widget_previous() {
if(WIDGET_CURRENT == noone) return;
if(array_length(WIDGET_ACTIVE) == 0) return;
var ind = array_find(WIDGET_ACTIVE, WIDGET_CURRENT);
WIDGET_CURRENT.deactivate();
if(ind == 0)
WIDGET_ACTIVE[array_length(WIDGET_ACTIVE) - 1].activate();
else
WIDGET_ACTIVE[ind - 1].activate();
}
function widget_trigger() {
if(WIDGET_CURRENT == noone) return;
WIDGET_CURRENT.trigger();
}
#endregion

View file

@ -1,9 +1,6 @@
function curveBox(_onModify) constructor { function curveBox(_onModify) : widget() constructor {
onModify = _onModify; onModify = _onModify;
active = false;
hover = false;
node_dragging = -1; node_dragging = -1;
drag_range = 0; drag_range = 0;
@ -13,7 +10,14 @@ function curveBox(_onModify) constructor {
return _y + _h * clamp((y_max - val) / y_range, 0, 1); return _y + _h * clamp((y_max - val) / y_range, 0, 1);
} }
static register = function() {}
static draw = function(_x, _y, _w, _h, _data, _m) { static draw = function(_x, _y, _w, _h, _data, _m) {
x = _x;
y = _y;
w = _w;
h = _h;
static curve_amo = 3; static curve_amo = 3;
var curve_h = _h; var curve_h = _h;
@ -106,7 +110,6 @@ function curveBox(_onModify) constructor {
drag_max = y_max; drag_max = y_max;
} }
active = false; resetFocus();
hover = false;
} }
} }

View file

@ -1,4 +1,5 @@
#macro CURVE_DEF_01 [0, 1/3, 1/3, 2/3, 2/3, 1] #macro CURVE_DEF_01 [0, 1/3, 1/3, 2/3, 2/3, 1]
#macro CURVE_DEF_10 [1, 2/3, 1/3, 1/3, 2/3, 0]
#macro CURVE_DEF_11 [1, 1/3, 1, 2/3, 1, 1] #macro CURVE_DEF_11 [1, 1/3, 1, 2/3, 1, 1]
function draw_line_bezier_cubic(x0, y0, _w, _h, _bz) { function draw_line_bezier_cubic(x0, y0, _w, _h, _bz) {
@ -43,6 +44,8 @@ function eval_curve_bezier_cubic_x(_bz, _x, _prec = 0.00001) {
var _xt = _x; var _xt = _x;
var _binRep = 5; var _binRep = 5;
if(_bz[0] == _bz[2] && _bz[0] == _bz[4] && _bz[0] == _bz[5]) return _bz[0];
repeat(_binRep) { repeat(_binRep) {
var _ftx = power(1 - _xt, 3) * 0 var _ftx = power(1 - _xt, 3) * 0
+ 3 * power(1 - _xt, 2) * _xt * _bz[1] + 3 * power(1 - _xt, 2) * _xt * _bz[1]

View file

@ -12,10 +12,10 @@ function __log(title, str, fname = "log.txt") {
file_text_close(f); file_text_close(f);
} }
function log_message(title, str, icon = noone) { function log_message(title, str, icon = noone, flash = false) {
__log("[MESSAGE] ", string(title) + ": " + string(str)); __log("[MESSAGE] ", string(title) + ": " + string(str));
return noti_status(string(title) + ": " + string(str), icon); return noti_status(string(title) + ": " + string(str), icon, flash);
} }
function log_warning(title, str) { function log_warning(title, str) {

View file

@ -1,8 +1,30 @@
function FileObject(_name, _path) constructor { function FileObject(_name, _path) constructor {
name = _name; name = _name;
path = _path; path = _path;
spr_path = [];
spr = -1; spr = -1;
content = -1; content = -1;
surface = noone;
static getSurface = function() {
if(is_surface(surface)) return surface;
var spr = getSpr();
surface = surface_create_from_sprite_ext(spr, 0);
return surface;
}
static getSpr = function() {
if(sprite_exists(spr)) return spr;
var path = array_safe_get(spr_path, 0);
var amo = array_safe_get(spr_path, 1);
var cent = array_safe_get(spr_path, 2);
if(path == 0) return -1;
spr = sprite_add(path, amo, false, false, 0, 0);
if(cent)
sprite_set_offset(spr, sprite_get_width(spr) / 2, sprite_get_height(spr) / 2);
return spr;
}
} }
function DirectoryObject(name, path) constructor { function DirectoryObject(name, path) constructor {
@ -48,7 +70,7 @@ function DirectoryObject(name, path) constructor {
var p = string_pos("strip", icon_path); var p = string_pos("strip", icon_path);
if(p) amo = toNumber(string_copy(icon_path, p, string_length(icon_path) - p + 1)); if(p) amo = toNumber(string_copy(icon_path, p, string_length(icon_path) - p + 1));
f.spr = sprite_add(icon_path, amo, false, false, 0, 0); f.spr_path = [icon_path, amo, false];
} else { } else {
var icon_path = path + "\\" + filename_change_ext(file, ".png"); var icon_path = path + "\\" + filename_change_ext(file, ".png");
if(!file_exists(icon_path)) continue; if(!file_exists(icon_path)) continue;
@ -59,8 +81,7 @@ function DirectoryObject(name, path) constructor {
var amo = ww % hh == 0? ww / hh : 1; var amo = ww % hh == 0? ww / hh : 1;
sprite_delete(_temp); sprite_delete(_temp);
f.spr = sprite_add(icon_path, amo, false, false, 0, 0); f.spr_path = [icon_path, amo, true];
sprite_set_offset(f.spr, sprite_get_width(f.spr) / 2, sprite_get_height(f.spr) / 2);
} }
} }
} }

View file

@ -0,0 +1,70 @@
function fontScrollBox(_onModify) : widget() constructor {
onModify = _onModify;
open = false;
open_rx = 0;
open_ry = 0;
align = fa_center;
extra_button = button(function() { shellOpenExplorer(DIRECTORY + "Fonts\\"); } )
.setTooltip("Open font folder")
.setIcon(THEME.folder_content, 0, COLORS._main_icon);
static trigger = function() {
refreshFontFolder();
open = true;
with(dialogCall(o_dialog_fontscrollbox, x + open_rx, y + open_ry)) {
scrollbox = other;
align = other.align;
}
}
static draw = function(_x, _y, _w, _h, _text, _m = mouse_ui, _rx = 0, _ry = 0) {
x = _x;
y = _y;
open_rx = _rx;
open_ry = _ry;
h = _h;
w = _w;
if(extra_button != noone) {
extra_button.hover = hover;
extra_button.active = active;
extra_button.draw(_x + _w - ui(32), _y + _h / 2 - ui(32 / 2), ui(32), ui(32), _m, THEME.button_hide);
w -= ui(40);
}
if(open) {
resetFocus();
return;
}
draw_sprite_stretched(THEME.textbox, 3, _x, _y, w, _h);
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + w, _y + _h)) {
draw_sprite_stretched(THEME.textbox, 1, _x, _y, w, _h);
if(mouse_press(mb_left, active))
trigger();
if(mouse_click(mb_left, active))
draw_sprite_stretched(THEME.textbox, 2, _x, _y, w, _h);
} else {
draw_sprite_stretched_ext(THEME.textbox, 0, _x, _y, w, _h, c_white, 0.5 + 0.5 * interactable);
if(mouse_press(mb_left)) deactivate();
}
draw_set_text(f_p0, align, fa_center, COLORS._main_text);
draw_set_alpha(0.5 + 0.5 * interactable);
if(align == fa_center)
draw_text(_x + w / 2, _y + _h / 2 - ui(2), _text);
else if(align == fa_left)
draw_text(_x + ui(8), _y + _h / 2 - ui(2), _text);
draw_set_alpha(1);
draw_sprite_ui_uniform(THEME.scroll_box_arrow, 0, _x + w - 20, _y + _h / 2, 1, COLORS._main_icon, 0.5 + 0.5 * interactable);
if(WIDGET_CURRENT == self)
draw_sprite_stretched(THEME.widget_selecting, 0, _x - ui(3), _y - ui(3), _w + ui(6), _h + ui(6));
resetFocus();
}
}

View file

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

View file

@ -1,6 +1,6 @@
globalvar FONT_LOADED, f_h3, f_h5, f_p0, f_p0b, f_p1, f_p2, f_p3, f_code; globalvar FONT_ISLOADED, f_h3, f_h5, f_p0, f_p0b, f_p1, f_p2, f_p3, f_code;
FONT_LOADED = false; FONT_ISLOADED = false;
function _font_path(rel) { function _font_path(rel) {
return DIRECTORY + "themes/" + PREF_MAP[? "theme"] + "/fonts/" + string_replace_all(rel, "./", ""); return DIRECTORY + "themes/" + PREF_MAP[? "theme"] + "/fonts/" + string_replace_all(rel, "./", "");
@ -19,7 +19,7 @@ function _font_load_from_struct(str, def) {
function font_clear(font) { if(font_exists(font)) font_delete(font); } function font_clear(font) { if(font_exists(font)) font_delete(font); }
function loadFonts() { function loadFonts() {
if(FONT_LOADED) { if(FONT_ISLOADED) {
font_clear(f_h3); font_clear(f_h3);
font_clear(f_h5); font_clear(f_h5);
@ -44,7 +44,7 @@ function loadFonts() {
f_p2 = _f_p2; f_p2 = _f_p2;
f_p3 = _f_p3; f_p3 = _f_p3;
f_code = _f_code; f_code = _f_code;
FONT_LOADED = false; FONT_ISLOADED = false;
return; return;
} }
@ -66,5 +66,5 @@ function loadFonts() {
f_code = _font_load_from_struct(fontDef.code, _f_code); f_code = _font_load_from_struct(fontDef.code, _f_code);
FONT_LOADED = true; FONT_ISLOADED = true;
} }

View file

@ -0,0 +1,42 @@
globalvar FONT_INTERNAL, FONT_SPRITES;
FONT_SPRITES = ds_map_create();
#region font refresh
function loadFontSprite(path) {
if(ds_map_exists(FONT_SPRITES, path)) return;
var f = font_add(path, 32, false, false, 32, 255);
draw_set_text(f, fa_left, fa_top, c_white);
var name = "ABCabc123";
var ww = string_width(name);
var hh = string_height(name);
var s = surface_create(ww, hh);
surface_set_target(s);
draw_clear_alpha(0, 0);
draw_text(0, 0, name);
surface_reset_target();
var spr = sprite_create_from_surface(s, 0, 0, ww, hh, false, false, 0, 0);
surface_free(s);
FONT_SPRITES[? path] = spr;
}
function refreshFontFolder() {
FONT_INTERNAL = [];
var root = DIRECTORY + "Fonts/*";
var f = file_find_first(root, -1);
var filter = [ ".ttf", ".otf" ];
while(f != "") {
var fullname = DIRECTORY + "Fonts/" + f;
var ext = filename_ext(fullname);
if(array_exists(filter, string_lower(ext))) {
array_push(FONT_INTERNAL, f);
loadFontSprite(fullname);
}
f = file_find_next();
}
file_find_close();
}
#endregion

View file

@ -1,11 +1,11 @@
{ {
"resourceType": "GMScript", "resourceType": "GMScript",
"resourceVersion": "1.0", "resourceVersion": "1.0",
"name": "_node_VFX", "name": "font_sprite_loader",
"isDnD": false, "isDnD": false,
"isCompatibility": false, "isCompatibility": false,
"parent": { "parent": {
"name": "VFX", "name": "font",
"path": "folders/nodes/data/VFX.yy", "path": "folders/font.yy",
}, },
} }

View file

@ -1,6 +1,8 @@
#region save #region save
globalvar LOADING, LOADING_VERSION, APPENDING, MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL; globalvar LOADING, LOADING_VERSION, APPENDING, CLONING;
globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
LOADING = false; LOADING = false;
CLONING = false;
LOADING_VERSION = 0; LOADING_VERSION = 0;
APPENDING = false; APPENDING = false;
READONLY = false; READONLY = false;
@ -21,9 +23,9 @@
COLOR_KEYS = []; COLOR_KEYS = [];
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING;
VERSION = 1090; VERSION = 1110;
SAVEFILE_VERSION = 1090; SAVEFILE_VERSION = 1100;
VERSION_STRING = "1.0.9"; VERSION_STRING = "1.1.1.0";
globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT; globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT;
@ -41,14 +43,12 @@
#region inputs #region inputs
globalvar FOCUS, FOCUS_STR, HOVER, DOUBLE_CLICK, CURRENT_PATH, DIALOG_CLICK; globalvar FOCUS, FOCUS_STR, HOVER, DOUBLE_CLICK, CURRENT_PATH, DIALOG_CLICK;
globalvar TEXTBOX_ACTIVE;
CURRENT_PATH = ""; CURRENT_PATH = "";
DOUBLE_CLICK = false; DOUBLE_CLICK = false;
FOCUS = noone; FOCUS = noone;
FOCUS_STR = ""; FOCUS_STR = "";
HOVER = noone; HOVER = noone;
TEXTBOX_ACTIVE = noone;
DIALOG_CLICK = true; DIALOG_CLICK = true;
globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H; globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H;

View file

@ -47,10 +47,12 @@ function gradient_eval(_gradient, _time, _int = GRADIENT_INTER.smooth) {
for(var i = 0; i < ds_list_size(_gradient); i++) { for(var i = 0; i < ds_list_size(_gradient); i++) {
var _key = _gradient[| i]; var _key = _gradient[| i];
if(_key.time >= _time) { if(_key.time < _time) continue;
if(i == 0) if(_key.time == _time) return _gradient[| i].value;
if(i == 0) //before first color
return _gradient[| 0].value; return _gradient[| 0].value;
else {
var c0 = _gradient[| i - 1].value; var c0 = _gradient[| i - 1].value;
if(_int == GRADIENT_INTER.smooth) { if(_int == GRADIENT_INTER.smooth) {
var rat = (_time - _gradient[| i - 1].time) / (_gradient[| i].time - _gradient[| i - 1].time); var rat = (_time - _gradient[| i - 1].time) / (_gradient[| i].time - _gradient[| i - 1].time);
@ -60,10 +62,8 @@ function gradient_eval(_gradient, _time, _int = GRADIENT_INTER.smooth) {
return c0; return c0;
} }
} }
}
}
return _gradient[| ds_list_size(_gradient) - 1].value; return _gradient[| ds_list_size(_gradient) - 1].value; //after last color
} }
function gradient_add(_gradient, _addkey, _deleteDup) { function gradient_add(_gradient, _addkey, _deleteDup) {

View file

@ -1,3 +1,133 @@
#region key map
global.KEY_STRING_MAP = ds_map_create();
global.KEY_STRING_MAP[? 48] = "0"
global.KEY_STRING_MAP[? 49] = "1"
global.KEY_STRING_MAP[? 50] = "2"
global.KEY_STRING_MAP[? 51] = "3"
global.KEY_STRING_MAP[? 52] = "4"
global.KEY_STRING_MAP[? 53] = "5"
global.KEY_STRING_MAP[? 54] = "6"
global.KEY_STRING_MAP[? 55] = "7"
global.KEY_STRING_MAP[? 56] = "8"
global.KEY_STRING_MAP[? 57] = "9"
global.KEY_STRING_MAP[? 65] = "A"
global.KEY_STRING_MAP[? 66] = "B"
global.KEY_STRING_MAP[? 67] = "C"
global.KEY_STRING_MAP[? 68] = "D"
global.KEY_STRING_MAP[? 69] = "E"
global.KEY_STRING_MAP[? 70] = "F"
global.KEY_STRING_MAP[? 71] = "G"
global.KEY_STRING_MAP[? 72] = "H"
global.KEY_STRING_MAP[? 73] = "I"
global.KEY_STRING_MAP[? 74] = "J"
global.KEY_STRING_MAP[? 75] = "K"
global.KEY_STRING_MAP[? 76] = "L"
global.KEY_STRING_MAP[? 77] = "M"
global.KEY_STRING_MAP[? 78] = "N"
global.KEY_STRING_MAP[? 79] = "O"
global.KEY_STRING_MAP[? 80] = "P"
global.KEY_STRING_MAP[? 81] = "Q"
global.KEY_STRING_MAP[? 82] = "R"
global.KEY_STRING_MAP[? 83] = "S"
global.KEY_STRING_MAP[? 84] = "T"
global.KEY_STRING_MAP[? 85] = "U"
global.KEY_STRING_MAP[? 86] = "V"
global.KEY_STRING_MAP[? 87] = "W"
global.KEY_STRING_MAP[? 88] = "X"
global.KEY_STRING_MAP[? 89] = "Y"
global.KEY_STRING_MAP[? 90] = "Z"
global.KEY_STRING_MAP[? 96] = "Num 0"
global.KEY_STRING_MAP[? 97] = "Num 1"
global.KEY_STRING_MAP[? 98] = "Num 2"
global.KEY_STRING_MAP[? 99] = "Num 3"
global.KEY_STRING_MAP[? 100] = "Num 4"
global.KEY_STRING_MAP[? 101] = "Num 5"
global.KEY_STRING_MAP[? 102] = "Num 6"
global.KEY_STRING_MAP[? 103] = "Num 7"
global.KEY_STRING_MAP[? 104] = "Num 8"
global.KEY_STRING_MAP[? 105] = "Num 9"
global.KEY_STRING_MAP[? 106] = "Num *"
global.KEY_STRING_MAP[? 107] = "Num +"
global.KEY_STRING_MAP[? 109] = "Num -"
global.KEY_STRING_MAP[? 110] = "Num ."
global.KEY_STRING_MAP[? 111] = "Num /"
global.KEY_STRING_MAP[? 186] = ";"
global.KEY_STRING_MAP[? 187] = "="
global.KEY_STRING_MAP[? 188] = ","
global.KEY_STRING_MAP[? 189] = "-"
global.KEY_STRING_MAP[? 190] = "."
global.KEY_STRING_MAP[? 191] = "/"
global.KEY_STRING_MAP[? 192] = "`" // actually `
global.KEY_STRING_MAP[? 219] = "["
global.KEY_STRING_MAP[? 220] = "\\"
global.KEY_STRING_MAP[? 221] = "]"
global.KEY_STRING_MAP[? 222] = "'" // actually # but that needs to be escaped
global.KEY_STRING_MAP[? 223] = "`" // actually ` but that needs to be escaped
function key_get_index(key) {
var k = ds_map_find_first(global.KEY_STRING_MAP);
repeat(ds_map_size(global.KEY_STRING_MAP)) {
if(global.KEY_STRING_MAP[? k] == key) return k;
k = ds_map_find_next(global.KEY_STRING_MAP, k);
}
return false;
}
#endregion
#region get name
function key_get_name(_key, _mod) {
var dk = "";
if(_mod & MOD_KEY.ctrl) dk += "Ctrl+";
if(_mod & MOD_KEY.shift) dk += "Shift+";
if(_mod & MOD_KEY.alt) dk += "Alt+";
switch(_key) {
case vk_space : dk += "Space"; break;
case vk_left : dk += "Left"; break;
case vk_right : dk += "Right"; break;
case vk_up : dk += "Up"; break;
case vk_down : dk += "Down"; break;
case vk_backspace : dk += "Backspace"; break;
case vk_tab : dk += "Tab"; break;
case vk_home : dk += "Home"; break;
case vk_end : dk += "End"; break;
case vk_delete : dk += "Delete"; break;
case vk_insert : dk += "Insert"; break;
case vk_pageup : dk += "Page Up"; break;
case vk_pagedown : dk += "Page Down"; break;
case vk_pause : dk += "Pause"; break;
case vk_printscreen : dk += "Printscreen"; break;
case vk_f1 : dk += "F1"; break;
case vk_f2 : dk += "F2"; break;
case vk_f3 : dk += "F3"; break;
case vk_f4 : dk += "F4"; break;
case vk_f5 : dk += "F5"; break;
case vk_f6 : dk += "F6"; break;
case vk_f7 : dk += "F7"; break;
case vk_f8 : dk += "F8"; break;
case vk_f9 : dk += "F9"; break;
case vk_f10 : dk += "F10"; break;
case vk_f11 : dk += "F11"; break;
case vk_f12 : dk += "F12"; break;
default :
if(ds_map_exists(global.KEY_STRING_MAP, _key))
dk += global.KEY_STRING_MAP[? _key];
else
dk += ansi_char(_key);
break;
}
return dk;
}
#endregion
enum MOD_KEY { enum MOD_KEY {
none = 0, none = 0,
ctrl = 1, ctrl = 1,
@ -6,7 +136,7 @@ enum MOD_KEY {
} }
function key_press(_key, _mod) { function key_press(_key, _mod) {
if(TEXTBOX_ACTIVE) return false; if(WIDGET_CURRENT) return false;
if(keyboard_check_released(_key) && HOTKEY_MOD == _mod) if(keyboard_check_released(_key) && HOTKEY_MOD == _mod)
return true; return true;

View file

@ -131,6 +131,15 @@ function LOAD_PATH(path, readonly = false) {
log_warning("LOAD, update", exception_print(e)); log_warning("LOAD, update", exception_print(e));
} }
try {
for(var i = 0; i < ds_list_size(create_list); i++) {
if(create_list[| i].inspectorUpdate != noone)
create_list[| i].inspectorUpdate();
}
} catch(e) {
log_warning("LOAD, update", exception_print(e));
}
Render(); Render();
if(!ds_queue_empty(CONNECTION_CONFLICT)) { if(!ds_queue_empty(CONNECTION_CONFLICT)) {

View file

@ -1,5 +1,9 @@
function luaArgumentRenderer() { function luaArgumentRenderer() {
argument_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { argument_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
argument_renderer.x = _x;
argument_renderer.y = _y;
argument_renderer.w = _w;
var tx = _x; var tx = _x;
var ty = _y + ui(8); var ty = _y + ui(8);
var hh = ui(8); var hh = ui(8);
@ -10,13 +14,11 @@ function luaArgumentRenderer() {
var _typ = _jType.getValue(); var _typ = _jType.getValue();
var _h = 0; var _h = 0;
_jType.editWidget.hover = _hover; _jType.editWidget.setFocus(_focus, _hover);
_jType.editWidget.active = _focus;
_jType.editWidget.draw(tx, ty, ui(128), _th, _jType.display_data[_jType.showValue()], _m, argument_renderer.rx, argument_renderer.ry); _jType.editWidget.draw(tx, ty, ui(128), _th, _jType.display_data[_jType.showValue()], _m, argument_renderer.rx, argument_renderer.ry);
var _jName = inputs[| i + 0]; var _jName = inputs[| i + 0];
_jName.editWidget.hover = _hover; _jName.editWidget.setFocus(_focus, _hover);
_jName.editWidget.active = _focus;
_jName.editWidget.draw(tx + ui(128 + 8), ty, _w - ui(128 + 8), _th, _jName.showValue(), _m, _jName.display_type); _jName.editWidget.draw(tx + ui(128 + 8), ty, _w - ui(128 + 8), _th, _jName.showValue(), _m, _jName.display_type);
_h += _th + ui(6); _h += _th + ui(6);
@ -25,8 +27,7 @@ function luaArgumentRenderer() {
draw_text_add(tx + ui(8), ty + _th + ui(6) + ui(6), "Value"); draw_text_add(tx + ui(8), ty + _th + ui(6) + ui(6), "Value");
var _jValue = inputs[| i + 2]; var _jValue = inputs[| i + 2];
_jValue.editWidget.hover = _hover; _jValue.editWidget.setFocus(_focus, _hover);
_jValue.editWidget.active = _focus;
if(_typ == 2) { if(_typ == 2) {
_jValue.editWidget.draw(tx + ui(64), ty + _th + ui(6), _w - ui(64), ui(96), _jValue.showValue(), _m, argument_renderer.rx, argument_renderer.ry); _jValue.editWidget.draw(tx + ui(64), ty + _th + ui(6), _w - ui(64), ui(96), _jValue.showValue(), _m, argument_renderer.rx, argument_renderer.ry);
_h += ui(96 + 8); _h += ui(96 + 8);
@ -39,6 +40,15 @@ function luaArgumentRenderer() {
ty += _h; ty += _h;
} }
argument_renderer.h = hh;
return hh; return hh;
}); });
argument_renderer.register = function(parent = noone) {
for( var i = input_fix_len; i < ds_list_size(inputs); i += data_length ) {
inputs[| i + 1].editWidget.register(parent);
inputs[| i + 0].editWidget.register(parent);
inputs[| i + 2].editWidget.register(parent);
}
}
} }

View file

@ -1,10 +1,8 @@
function matrixGrid(_type, _onModify, _unit = noone) constructor { function matrixGrid(_type, _onModify, _unit = noone) : widget() constructor {
size = 9; size = 9;
onModify = _onModify; onModify = _onModify;
unit = _unit; unit = _unit;
hover = false;
active = false;
linked = false; linked = false;
b_link = button(function() { linked = !linked; }); b_link = button(function() { linked = !linked; });
b_link.icon = THEME.value_link; b_link.icon = THEME.value_link;
@ -33,12 +31,30 @@ function matrixGrid(_type, _onModify, _unit = noone) constructor {
extras = -1; extras = -1;
static register = function(parent = noone) {
b_link.register(parent);
for( var i = 0; i < size; i++ )
tb[i].register(parent);
if(extras)
extras.register(parent);
if(unit != noone && unit.reference != noone)
unit.triggerButton.register(parent);
}
for(var i = 0; i < size; i++) { for(var i = 0; i < size; i++) {
tb[i] = new textBox(_type, onModifySingle[i]); tb[i] = new textBox(_type, onModifySingle[i]);
tb[i].slidable = true; tb[i].slidable = true;
} }
static draw = function(_x, _y, _w, _h, _data, _m) { static draw = function(_x, _y, _w, _h, _data, _m) {
x = _x;
y = _y;
w = _w;
h = _h;
if(extras && instanceof(extras) == "buttonClass") { if(extras && instanceof(extras) == "buttonClass") {
extras.hover = hover; extras.hover = hover;
extras.active = active; extras.active = active;
@ -87,8 +103,7 @@ function matrixGrid(_type, _onModify, _unit = noone) constructor {
tb[ind].draw(bx + ui(8), by, ww - ui(8), TEXTBOX_HEIGHT, _data[ind], _m); tb[ind].draw(bx + ui(8), by, ww - ui(8), TEXTBOX_HEIGHT, _data[ind], _m);
} }
hover = false; resetFocus();
active = false;
return th; return th;
} }

View file

@ -85,7 +85,6 @@ function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con
} }
} }
static process_data = function(_outSurf, _data, _output_index, _array_index) { static process_data = function(_outSurf, _data, _output_index, _array_index) {
var _shape = _data[1]; var _shape = _data[1];

View file

@ -1,7 +1,7 @@
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;
var node = new Node_3D_Obj(_x, _y); var node = new Node_3D_Obj(_x, _y, PANEL_GRAPH.getCurrentContext());
node.setPath(path); node.setPath(path);
return node; return node;
} }
@ -213,7 +213,7 @@ function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
var _proj = inputs[| 15].getValue(); var _proj = inputs[| 15].getValue();
var _fov = inputs[| 16].getValue(); var _fov = inputs[| 16].getValue();
inputs[| 16].setVisible(_proj); inputs[| 16].setVisible(_proj == 1);
for( var i = 0; i < array_length(output_display_list) - 1; i++ ) { for( var i = 0; i < array_length(output_display_list) - 1; i++ ) {
var ind = output_display_list[i]; var ind = output_display_list[i];

View file

@ -15,7 +15,7 @@ function Node_3D_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
inputs[| 4] = nodeValue(4, "Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2 ]) inputs[| 4] = nodeValue(4, "Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2 ])
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)
.setUnitRef( function() { return inputs[| 2].getValue(); }); .setUnitRef( function() { return inputs[| 0].getValue(); });
inputs[| 5] = nodeValue(5, "Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) inputs[| 5] = nodeValue(5, "Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
@ -48,7 +48,7 @@ function Node_3D_Repeat(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
.setDisplay(VALUE_DISPLAY.vector); .setDisplay(VALUE_DISPLAY.vector);
inputs[| 16] = nodeValue(16, "Repeat pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 16] = nodeValue(16, "Repeat pattern", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Linear", "Radial" ]); .setDisplay(VALUE_DISPLAY.enum_button, [ "Linear", "Circular" ]);
inputs[| 17] = nodeValue(17, "Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 17] = nodeValue(17, "Axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "x", "y", "z" ]); .setDisplay(VALUE_DISPLAY.enum_button, [ "x", "y", "z" ]);

View file

@ -10,8 +10,8 @@ function Node_VFX_Accelerate(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _g
var _rot = random_range(_rot_range[0], _rot_range[1]); var _rot = random_range(_rot_range[0], _rot_range[1]);
var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ];
part.sx = part.sx + _vect[0] * _sten * str; part.sx = part.sx + _vect[0] * str * _sten;
part.sy = part.sy + _vect[1] * _sten * str; part.sy = part.sy + _vect[1] * str * _sten;
part.rot += _rot * str; part.rot += _rot * str;

View file

@ -2,12 +2,13 @@ function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _grou
name = "Attract"; name = "Attract";
node_draw_icon = s_node_vfx_attract; node_draw_icon = s_node_vfx_attract;
inputs[| 4].setVisible(false, false);
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];
var _area_x = _area[0]; var _area_x = _area[0];
var _area_y = _area[1]; var _area_y = _area[1];
var _vect = current_data[4];
var _sten = current_data[5]; var _sten = current_data[5];
var _rot_range = current_data[6]; var _rot_range = current_data[6];
var _sca_range = current_data[7]; var _sca_range = current_data[7];
@ -23,9 +24,10 @@ function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _grou
var scx_s = _sca[0] * str; var scx_s = _sca[0] * str;
var scy_s = _sca[1] * str; var scy_s = _sca[1] * str;
if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s));
else part.scx += sign(part.scx) * scx_s; if(scx_s < 0) part.sc_sx = lerp_linear(part.sc_sx, 0, abs(scx_s));
if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); else part.sc_sx += sign(part.sc_sx) * scx_s;
else part.scy += sign(part.scy) * scy_s; if(scy_s < 0) part.sc_sy = lerp_linear(part.sc_sy, 0, abs(scy_s));
else part.sc_sy += sign(part.sc_sy) * scy_s;
} }
} }

View file

@ -2,6 +2,10 @@ function Node_VFX_Destroy(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _grou
name = "Destroy"; name = "Destroy";
node_draw_icon = s_node_vfx_destroy; node_draw_icon = s_node_vfx_destroy;
inputs[| 4].setVisible(false, false);
inputs[| 6].setVisible(false, false);
inputs[| 7].setVisible(false, false);
function onAffect(part, str) { function onAffect(part, str) {
var _sten = current_data[5]; var _sten = current_data[5];

View file

@ -2,12 +2,13 @@ function Node_VFX_Repel(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group)
name = "Repel"; name = "Repel";
node_draw_icon = s_node_vfx_repel; node_draw_icon = s_node_vfx_repel;
inputs[| 4].setVisible(false, false);
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];
var _area_x = _area[0]; var _area_x = _area[0];
var _area_y = _area[1]; var _area_y = _area[1];
var _vect = current_data[4];
var _sten = current_data[5]; var _sten = current_data[5];
var _rot_range = current_data[6]; var _rot_range = current_data[6];
var _sca_range = current_data[7]; var _sca_range = current_data[7];

View file

@ -2,8 +2,14 @@ function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _g
name = "Turbulence"; name = "Turbulence";
node_draw_icon = s_node_vfx_turb; node_draw_icon = s_node_vfx_turb;
inputs[| 4].setVisible(false, false);
inputs[| 8] = nodeValue(8, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
.setVisible(true, false);
array_push(input_display_list, 8);
function onAffect(part, str) { function onAffect(part, str) {
var _vect = current_data[4];
var _sten = current_data[5]; var _sten = current_data[5];
var _rot_range = current_data[6]; var _rot_range = current_data[6];
var _sca_range = current_data[7]; var _sca_range = current_data[7];
@ -12,20 +18,22 @@ function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _g
var pv = part.getPivot(); var pv = part.getPivot();
var t_scale = current_data[10]; var t_scale = current_data[8];
var per = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 4, part.seed) - 0.5) * 2; var perx = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 1, part.seed) - 0.5) * 2;
per *= str; var pery = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 1, part.seed + 100) - 0.5) * 2;
part.x = part.x + _vect[0] * per; part.x += perx * str * _sten;
part.y = part.y + _vect[1] * per; part.y += pery * str * _sten;
part.rot += _rot * per; part.rot += _rot * perx;
var scx_s = _sca[0] * str; var scx_s = _sca[0] * str;
var scy_s = _sca[1] * str; var scy_s = _sca[1] * str;
if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s));
else part.scx += sign(part.scx) * scx_s; else if(scx_s > 0) part.scx += sign(part.scx) * scx_s;
if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s));
else part.scy += sign(part.scy) * scy_s; else if(scy_s > 0) part.scy += sign(part.scy) * scy_s;
} }
} }

View file

@ -2,23 +2,37 @@ function Node_VFX_Vortex(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group
name = "Vortex"; name = "Vortex";
node_draw_icon = s_node_vfx_vortex; node_draw_icon = s_node_vfx_vortex;
inputs[| 4].setVisible(false, false);
inputs[| 8] = nodeValue(8, "Attraction force", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2 );
inputs[| 9] = nodeValue(9, "Clockwise", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
array_push(input_display_list, 8, 9);
function onAffect(part, str) { function onAffect(part, str) {
var _area = current_data[1]; var _area = current_data[1];
var _area_x = _area[0]; var _area_x = _area[0];
var _area_y = _area[1]; var _area_y = _area[1];
var _vect = current_data[4];
var _sten = current_data[5]; var _sten = current_data[5];
var _rot_range = current_data[6]; var _rot_range = current_data[6];
var _sca_range = current_data[7]; var _sca_range = current_data[7];
var _attr = current_data[8];
var _clkw = current_data[9];
var _rot = random_range(_rot_range[0], _rot_range[1]); var _rot = random_range(_rot_range[0], _rot_range[1]);
var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ];
var pv = part.getPivot(); var pv = part.getPivot();
var dirr = point_direction(_area_x, _area_y, pv[0], pv[1]) + 90;
part.x = part.x + lengthdir_x(_sten * str, dirr); var dirr = point_direction(_area_x, _area_y, pv[0], pv[1]) + (_clkw? 90 : -90);
part.y = part.y + lengthdir_y(_sten * str, dirr); part.x += lengthdir_x(_sten * str, dirr);
part.y += lengthdir_y(_sten * str, dirr);
var dirr = point_direction(pv[0], pv[1], _area_x, _area_y);
part.x += lengthdir_x(_attr * str, dirr);
part.y += lengthdir_y(_attr * str, dirr);
part.rot += _rot * str; part.rot += _rot * str;

View file

@ -29,8 +29,6 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
inputs[| 7] = nodeValue(7, "Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ] ) inputs[| 7] = nodeValue(7, "Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector_range); .setDisplay(VALUE_DISPLAY.vector_range);
inputs[| 8] = nodeValue(8, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
input_display_list = [ 0, input_display_list = [ 0,
["Area", false], 1, 2, 3, ["Area", false], 1, 2, 3,
["Effect", false], 4, 5, 6, 7, ["Effect", false], 4, 5, 6, 7,
@ -115,8 +113,8 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1)); distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1));
} else if(_area_t == AREA_SHAPE.elipse) { } else if(_area_t == AREA_SHAPE.elipse) {
var _dirr = point_direction(_area_x, _area_y, pv[0], pv[1]); var _dirr = point_direction(_area_x, _area_y, pv[0], pv[1]);
var _epx = _area_x + lengthdir_x(_area_w / 2, _dirr); var _epx = _area_x + lengthdir_x(_area_w, _dirr);
var _epy = _area_y + lengthdir_y(_area_h / 2, _dirr); var _epy = _area_y + lengthdir_y(_area_h, _dirr);
in = point_distance(_area_x, _area_y, pv[0], pv[1]) < point_distance(_area_x, _area_y, _epx, _epy); in = point_distance(_area_x, _area_y, pv[0], pv[1]) < point_distance(_area_x, _area_y, _epx, _epy);
_dst = point_distance(pv[0], pv[1], _epx, _epy); _dst = point_distance(pv[0], pv[1], _epx, _epy);
@ -124,7 +122,7 @@ function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) construct
if(_dst <= _fads) { if(_dst <= _fads) {
var inf = in? 0.5 + _dst / _fads : 0.5 - _dst / _fads; var inf = in? 0.5 + _dst / _fads : 0.5 - _dst / _fads;
str = eval_curve_bezier_cubic(_fall, clamp(inf, 0., 1.)); str = eval_curve_bezier_cubic_t(_fall, clamp(inf, 0., 1.));
} else if(in) } else if(in)
str = 1; str = 1;

View file

@ -3,12 +3,12 @@ function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) c
color = COLORS.node_blend_vfx; color = COLORS.node_blend_vfx;
ungroupable = false; ungroupable = false;
if(!LOADING && !APPENDING) { if(!LOADING && !APPENDING && !CLONING) {
var input = nodeBuild("Node_VFX_Spawner", -256, -32, self); var input = nodeBuild("Node_VFX_Spawner", -256, -32, self);
var renderer = nodeBuild("Node_VFX_Renderer", 256, -32, self); var renderer = nodeBuild("Node_VFX_Renderer", 256, -32, self);
var output = nodeBuild("Node_Group_Output", 256 + 32 * 5, -32, self); var output = nodeBuild("Node_Group_Output", 256 + 32 * 5, -32, self);
renderer.inputs[| renderer.input_index].setFrom(input.outputs[| 0]); renderer.inputs[| renderer.input_fix_len].setFrom(input.outputs[| 0]);
output.inputs[| 0].setFrom(renderer.outputs[| 0]); output.inputs[| 0].setFrom(renderer.outputs[| 0]);
} }
} }

View file

@ -57,20 +57,25 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct
outputs[| 0].setValue(_outSurf); outputs[| 0].setValue(_outSurf);
surface_set_target(_outSurf); surface_set_target(_outSurf);
draw_clear_alpha(c_white, 0);
switch(_blend) { switch(_blend) {
case PARTICLE_BLEND_MODE.normal : gpu_set_blendmode(bm_normal); break; case PARTICLE_BLEND_MODE.normal :
case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break; draw_clear_alpha(c_white, 0);
gpu_set_blendmode(bm_normal);
break;
case PARTICLE_BLEND_MODE.additive :
draw_clear_alpha(c_black, 0);
gpu_set_blendmode(bm_add);
break;
} }
var surf_w = surface_get_width(_outSurf);
var surf_h = surface_get_height(_outSurf);
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) {
var parts = inputs[| i].getValue(_time); var parts = inputs[| i].getValue(_time);
if(!ds_exists(parts, ds_type_list)) continue; for(var j = 0; j < array_length(parts); j++) {
if(!parts[j].active) continue;
for(var j = 0; j < ds_list_size(parts); j++) { parts[j].draw(_exact, surf_w, surf_h);
if(!parts[| j].active) continue;
parts[| j].draw(_exact);
} }
} }

View file

@ -13,14 +13,29 @@ function Node_VFX_Spawner(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _
array_insert(input_display_list, 0, ["Trigger", true], input_len + 0, input_len + 1); array_insert(input_display_list, 0, ["Trigger", true], input_len + 0, input_len + 1);
static updateParticleForward = function(_render = true) {
var pt = outputs[| 0];
for( var i = 0; i < ds_list_size(pt.value_to); i++ ) {
var _n = pt.value_to[| i];
if(_n.value_from != pt) continue;
if(variable_struct_exists(_n.node, "updateParticleForward"))
_n.node.updateParticleForward();
}
}
static onSpawn = function(_time, part) { static onSpawn = function(_time, part) {
part.step_int = inputs[| input_len + 1].getValue(_time); part.step_int = inputs[| input_len + 1].getValue(_time);
} }
static onPartCreate = function(part) { static onPartCreate = function(part) {
var pv = part.getPivot();
var vt = outputs[| 1]; var vt = outputs[| 1];
if(ds_list_empty(vt.value_to)) return;
var pv = part.getPivot();
for( var i = 0; i < ds_list_size(inputs); i++ )
current_data[i] = inputs[| i].getValue();
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) { for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i]; var _n = vt.value_to[| i];
if(_n.value_from != vt) continue; if(_n.value_from != vt) continue;
@ -29,9 +44,13 @@ function Node_VFX_Spawner(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _
} }
static onPartStep = function(part) { static onPartStep = function(part) {
var pv = part.getPivot();
var vt = outputs[| 2]; var vt = outputs[| 2];
if(ds_list_empty(vt.value_to)) return;
var pv = part.getPivot();
for( var i = 0; i < ds_list_size(inputs); i++ )
current_data[i] = inputs[| i].getValue();
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) { for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i]; var _n = vt.value_to[| i];
if(_n.value_from != vt) continue; if(_n.value_from != vt) continue;
@ -40,9 +59,13 @@ function Node_VFX_Spawner(_x, _y, _group = -1) : Node_VFX_Spawner_Base(_x, _y, _
} }
static onPartDestroy = function(part) { static onPartDestroy = function(part) {
var pv = part.getPivot();
var vt = outputs[| 3]; var vt = outputs[| 3];
if(ds_list_empty(vt.value_to)) return;
var pv = part.getPivot();
for( var i = 0; i < ds_list_size(inputs); i++ )
current_data[i] = inputs[| i].getValue();
for( var i = 0; i < ds_list_size(vt.value_to); i++ ) { for( var i = 0; i < ds_list_size(vt.value_to); i++ ) {
var _n = vt.value_to[| i]; var _n = vt.value_to[| i];
if(_n.value_from != vt) continue; if(_n.value_from != vt) continue;

View file

@ -4,7 +4,7 @@ function Node_Anim_Curve(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c
previewable = false; previewable = false;
w = 96; w = 96;
min_h = 0;
inputs[| 0] = nodeValue(0, "Curve", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_01); inputs[| 0] = nodeValue(0, "Curve", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_01);
inputs[| 1] = nodeValue(1, "Progress", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) inputs[| 1] = nodeValue(1, "Progress", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)

View file

@ -4,7 +4,7 @@ function Node_Area(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru
previewable = false; previewable = false;
w = 96; w = 96;
min_h = 0;
inputs[| 0] = nodeValue(0, "Postion", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) inputs[| 0] = nodeValue(0, "Postion", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector) .setDisplay(VALUE_DISPLAY.vector)

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