1.1.0.1 Update
|
@ -33,10 +33,11 @@
|
|||
{"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_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_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":"textInput","path":"scripts/textInput/textInput.yy",},"order":24,},
|
||||
{"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":"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":"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":"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":"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,},
|
||||
|
@ -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":"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_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_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,},
|
||||
|
@ -126,7 +128,7 @@
|
|||
{"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_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":"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,},
|
||||
|
@ -136,6 +138,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -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_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,},
|
||||
{"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":"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,},
|
||||
|
@ -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":"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":"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":"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,},
|
||||
|
@ -206,7 +210,9 @@
|
|||
{"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":"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":"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_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,},
|
||||
{"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":"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":"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":"node_registry","path":"scripts/node_registry/node_registry.yy",},"order":5,},
|
||||
{"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":"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":"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":"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,},
|
||||
|
@ -252,9 +259,9 @@
|
|||
{"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":"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":"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":"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,},
|
||||
|
@ -271,11 +278,13 @@
|
|||
{"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":"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":"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_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":"node_average","path":"scripts/node_average/node_average.yy",},"order":56,},
|
||||
{"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":"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":"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":"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":"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,},
|
||||
|
@ -317,13 +327,14 @@
|
|||
{"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_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":"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":"Apollo","path":"extensions/Apollo/Apollo.yy",},"order":8,},
|
||||
{"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":"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":"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,},
|
||||
|
@ -336,19 +347,21 @@
|
|||
{"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":"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":"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":"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":"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":"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":"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":"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":"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,},
|
||||
|
@ -359,10 +372,13 @@
|
|||
{"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":"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":"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":"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":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,},
|
||||
{"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_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":"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":"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":"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":"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,},
|
||||
|
@ -398,12 +416,14 @@
|
|||
{"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":"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":"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":"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":"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":"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,},
|
||||
|
@ -413,7 +433,8 @@
|
|||
{"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":"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_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,},
|
||||
|
@ -429,9 +450,11 @@
|
|||
{"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":"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_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":"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":"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,},
|
||||
|
@ -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":"_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":"_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":"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":"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_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,},
|
||||
|
@ -494,6 +517,7 @@
|
|||
{"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":"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":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,},
|
||||
{"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":"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":"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_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,},
|
||||
|
@ -544,6 +569,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -563,6 +589,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -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_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":"_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":"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":"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,},
|
||||
|
@ -596,6 +625,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -604,15 +634,18 @@
|
|||
{"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":"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":"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":"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":"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":"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":"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,},
|
||||
|
@ -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":"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":"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":"__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,},
|
||||
|
@ -639,7 +673,7 @@
|
|||
{"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":"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":"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,},
|
||||
|
@ -672,11 +706,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":"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":"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":"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_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":"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,},
|
||||
|
@ -776,6 +813,7 @@
|
|||
{"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":"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":"3d","folderPath":"folders/shader/3d.yy","order":29,},
|
||||
{"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":"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":"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":"shape seperator","folderPath":"folders/shader/shape seperator.yy","order":35,},
|
||||
{"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_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_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_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",},
|
||||
|
@ -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_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":"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_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",},
|
||||
|
@ -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.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":"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":"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",},
|
||||
|
@ -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":"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":"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_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":"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":"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":"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":"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":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||
],
|
||||
|
|
|
@ -2,41 +2,41 @@
|
|||
"h3": {
|
||||
"path": "./NotoSans-Bold.ttf",
|
||||
"size": 20,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"h5": {
|
||||
"path": "./NotoSans-Bold.ttf",
|
||||
"size": 16,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"p0": {
|
||||
"path": "./NotoSans-Medium.ttf",
|
||||
"size": 12,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"p0b": {
|
||||
"path": "./NotoSans-Bold.ttf",
|
||||
"size": 12,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"p1": {
|
||||
"path": "./NotoSans-SemiBold.ttf",
|
||||
"size": 11,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"p2": {
|
||||
"path": "./NotoSans-SemiBold.ttf",
|
||||
"size": 10,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"p3": {
|
||||
"path": "./NotoSans-SemiBold.ttf",
|
||||
"size": 9,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
},
|
||||
"code": {
|
||||
"path": "./FiraCode-Medium.ttf",
|
||||
"size": 12,
|
||||
"range": [32, 127]
|
||||
"range": [32, 255]
|
||||
}
|
||||
}
|
|
@ -158,6 +158,13 @@
|
|||
"yorigin": 24,
|
||||
"slice": null
|
||||
},
|
||||
"cursor_select": {
|
||||
"path": "./icon/s_cursor.png",
|
||||
"subimages": 2,
|
||||
"xorigin": 16,
|
||||
"yorigin": 16,
|
||||
"slice": null
|
||||
},
|
||||
"file": {
|
||||
"path": "./icon/s_file.png",
|
||||
"subimages": 1,
|
||||
|
@ -165,6 +172,13 @@
|
|||
"yorigin": 24,
|
||||
"slice": null
|
||||
},
|
||||
"explorer": {
|
||||
"path": "./icon/s_file_explorer.png",
|
||||
"subimages": 1,
|
||||
"xorigin": 20,
|
||||
"yorigin": 20,
|
||||
"slice": null
|
||||
},
|
||||
"fill": {
|
||||
"path": "./icon/s_fill_16.png",
|
||||
"subimages": 1,
|
||||
|
@ -410,6 +424,13 @@
|
|||
"yorigin": 72,
|
||||
"slice": null
|
||||
},
|
||||
"inspector_area_type": {
|
||||
"path": "./inspector/s_prop_area_type.png",
|
||||
"subimages": 3,
|
||||
"xorigin": 16,
|
||||
"yorigin": 16,
|
||||
"slice": null
|
||||
},
|
||||
"inspector_padding": {
|
||||
"path": "./inspector/s_inspector_padding.png",
|
||||
"subimages": 1,
|
||||
|
@ -564,16 +585,10 @@
|
|||
},
|
||||
"node_pin_bg_active": {
|
||||
"path": "./node/s_node_pin_active.png",
|
||||
"subimages": 2,
|
||||
"subimages": 1,
|
||||
"xorigin": 20,
|
||||
"yorigin": 20,
|
||||
"slice": {
|
||||
"enabled": true,
|
||||
"left": 9,
|
||||
"right": 9,
|
||||
"top": 9,
|
||||
"bottom": 9
|
||||
}
|
||||
"slice": null
|
||||
},
|
||||
"node_active": {
|
||||
"path": "./node/s_node_active.png",
|
||||
|
@ -656,8 +671,8 @@
|
|||
"node_resize": {
|
||||
"path": "./icon/s_node_resize.png",
|
||||
"subimages": 1,
|
||||
"xorigin": 16,
|
||||
"yorigin": 16,
|
||||
"xorigin": 32,
|
||||
"yorigin": 32,
|
||||
"slice": null
|
||||
},
|
||||
"node_state": {
|
||||
|
@ -927,7 +942,7 @@
|
|||
},
|
||||
"anchor": {
|
||||
"path": "./preview/s_anchor.png",
|
||||
"subimages": 1,
|
||||
"subimages": 2,
|
||||
"xorigin": 20,
|
||||
"yorigin": 20,
|
||||
"slice": null
|
||||
|
@ -946,6 +961,13 @@
|
|||
"yorigin": 24,
|
||||
"slice": null
|
||||
},
|
||||
"anchor_solid_hori": {
|
||||
"path": "./preview/s_anchor_solid.png",
|
||||
"subimages": 2,
|
||||
"xorigin": 32,
|
||||
"yorigin": 20,
|
||||
"slice": null
|
||||
},
|
||||
"anchor_scale_hori": {
|
||||
"path": "./preview/s_anchor_scale_hori_strip2.png",
|
||||
"subimages": 2,
|
||||
|
@ -1237,6 +1259,19 @@
|
|||
"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": {
|
||||
"path": "./widget/s_textbox_strip4.png",
|
||||
"subimages": 4,
|
||||
|
|
BIN
datafiles/data/themes/default/graphics/icon/s_cursor.png
Normal file
After Width: | Height: | Size: 755 B |
BIN
datafiles/data/themes/default/graphics/icon/s_file_explorer.png
Normal file
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 624 B |
After Width: | Height: | Size: 231 B |
BIN
fonts/_f_p0/_f_p0.old.png
Normal file
After Width: | Height: | Size: 10 KiB |
582
fonts/_f_p0/_f_p0.old.yy
Normal 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",
|
||||
},
|
||||
}
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.3 KiB |
|
@ -24,7 +24,7 @@
|
|||
"path": "texturegroups/Default",
|
||||
},
|
||||
"ascenderOffset": 0,
|
||||
"ascender": 0,
|
||||
"ascender": 15,
|
||||
"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,},
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
if(sHOVER) HOVER = noone;
|
||||
if(sFOCUS) setFocus(noone);
|
||||
|
||||
TEXTBOX_ACTIVE = noone;
|
||||
WIDGET_CURRENT = noone;
|
||||
ds_list_remove(DIALOGS, self);
|
|
@ -4,4 +4,18 @@ event_inherited();
|
|||
name = "Key display";
|
||||
alpha = 0;
|
||||
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"],
|
||||
]
|
|
@ -2,12 +2,10 @@
|
|||
#region draw
|
||||
var key = "";
|
||||
|
||||
if(keyboard_check(vk_control))
|
||||
key += "Ctrl";
|
||||
if(keyboard_check(vk_shift))
|
||||
key += key == ""? "Shift" : " + Shift";
|
||||
if(keyboard_check(vk_alt))
|
||||
key += key == ""? "Alt" : " + Alt";
|
||||
for( var i = 0; i < array_length(extra_keys); i++ ) {
|
||||
if(keyboard_check(extra_keys[i][0]))
|
||||
key += key == ""? extra_keys[i][1] : (" + " + extra_keys[i][1]);
|
||||
}
|
||||
|
||||
if(keyboard_check(vk_anykey)) {
|
||||
var pres = keyboard_lastkey;
|
||||
|
|
|
@ -195,8 +195,9 @@ event_inherited();
|
|||
|
||||
var spr_x = _boxx + 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)
|
||||
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_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));
|
||||
draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1);
|
||||
}
|
||||
|
@ -286,8 +289,8 @@ event_inherited();
|
|||
|
||||
#region resize
|
||||
dialog_resizable = true;
|
||||
dialog_w_min = ui(200);
|
||||
dialog_h_min = ui(120);
|
||||
dialog_w_min = ui(320);
|
||||
dialog_h_min = ui(320);
|
||||
dialog_w_max = ui(960);
|
||||
dialog_h_max = ui(800);
|
||||
|
||||
|
@ -313,7 +316,7 @@ event_inherited();
|
|||
searchNodes();
|
||||
});
|
||||
tb_search.auto_update = true;
|
||||
TEXTBOX_ACTIVE = tb_search;
|
||||
WIDGET_CURRENT = tb_search;
|
||||
|
||||
function searchNodes() {
|
||||
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);
|
||||
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 _sw = sprite_get_width(_node.spr);
|
||||
var _sh = sprite_get_height(_node.spr);
|
||||
|
@ -460,7 +464,8 @@ event_inherited();
|
|||
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 _sw = sprite_get_width(_node.spr);
|
||||
var _sh = sprite_get_height(_node.spr);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/// @description
|
||||
event_inherited();
|
||||
|
||||
TEXTBOX_ACTIVE = noone;
|
||||
WIDGET_CURRENT = noone;
|
|
@ -8,7 +8,7 @@ if !ready exit;
|
|||
#endregion
|
||||
|
||||
#region search
|
||||
TEXTBOX_ACTIVE = tb_search;
|
||||
WIDGET_CURRENT = tb_search;
|
||||
|
||||
if(search_string == "") {
|
||||
tb_search.focus = false;
|
||||
|
|
|
@ -87,14 +87,15 @@ event_inherited();
|
|||
}
|
||||
}
|
||||
|
||||
if(sprite_exists(content.spr)) {
|
||||
var sw = sprite_get_width(content.spr);
|
||||
var sh = sprite_get_height(content.spr);
|
||||
var spr = content.getSpr();
|
||||
if(sprite_exists(spr)) {
|
||||
var sw = sprite_get_width(spr);
|
||||
var sh = sprite_get_height(spr);
|
||||
var ss = img_size / max(sw, sh);
|
||||
var sx = xx + (grid_size - sw * 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,6 @@ event_inherited();
|
|||
instance_destroy();
|
||||
});
|
||||
|
||||
TEXTBOX_ACTIVE = tb_name;
|
||||
WIDGET_CURRENT = tb_name;
|
||||
KEYBOARD_STRING = "";
|
||||
#endregion
|
9
objects/o_dialog_fontscrollbox/Alarm_0.gml
Normal 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();
|
52
objects/o_dialog_fontscrollbox/Create_0.gml
Normal 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
|
4
objects/o_dialog_fontscrollbox/Destroy_0.gml
Normal file
|
@ -0,0 +1,4 @@
|
|||
/// @description init
|
||||
event_inherited();
|
||||
|
||||
scrollbox.open = false;
|
9
objects/o_dialog_fontscrollbox/Draw_64.gml
Normal 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
|
39
objects/o_dialog_fontscrollbox/o_dialog_fontscrollbox.yy
Normal 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",
|
||||
},
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
event_inherited();
|
||||
|
||||
#region data
|
||||
dialog_w = ui(812);
|
||||
dialog_w = ui(1068);
|
||||
dialog_h = ui(476);
|
||||
|
||||
name = "Gradient editor";
|
||||
|
@ -137,6 +137,92 @@ event_inherited();
|
|||
})
|
||||
#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
|
||||
function checkMouse() {}
|
||||
#endregion
|
|
@ -13,7 +13,9 @@ if !ready exit;
|
|||
var presets_w = ui(240);
|
||||
|
||||
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);
|
||||
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);
|
||||
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_text(presets_x + ui(24), dialog_y + ui(16), "Presets");
|
||||
draw_text(content_x + ui(24), dialog_y + ui(16), name);
|
||||
draw_text(palette_x + ui(24), dialog_y + ui(16), "Palettes");
|
||||
#endregion
|
||||
|
||||
#region presets
|
||||
|
@ -72,6 +78,13 @@ if !ready exit;
|
|||
bx -= ui(32);
|
||||
#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
|
||||
var gr_x = content_x + ui(22);
|
||||
var gr_y = dialog_y + ui(54);
|
||||
|
|
|
@ -15,6 +15,29 @@ event_inherited();
|
|||
current_page = 0;
|
||||
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) {
|
||||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
||||
|
||||
|
@ -35,14 +58,17 @@ event_inherited();
|
|||
var _w = sp_noti.w - ui(12);
|
||||
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);
|
||||
|
||||
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))
|
||||
noti.onClick();
|
||||
|
||||
if(mouse_press(mb_right, sFOCUS)) {
|
||||
var dia = dialogCall(o_dialog_menubox, mouse_mx + ui(8), mouse_my + ui(8));
|
||||
dia.noti = noti;
|
||||
|
@ -50,12 +76,13 @@ event_inherited();
|
|||
[ "Copy notification message", function() {
|
||||
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) {
|
||||
var _nwx = sp_noti.w - ui(12) - ui(40);
|
||||
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);
|
||||
|
||||
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;
|
||||
if(noti.icon == noone) {
|
||||
switch(noti.type) {
|
||||
|
@ -78,11 +108,13 @@ event_inherited();
|
|||
|
||||
var tx = ui(48) + timeW + ui(12);
|
||||
|
||||
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);
|
||||
if(yy >= -_h && yy <= sp_noti.h) {
|
||||
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_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_set_text(f_p2, fa_left, fa_center, COLORS._main_text);
|
||||
draw_text_ext(tx + ui(4), yy + _h / 2, noti.txt, -1, txw);
|
||||
}
|
||||
|
||||
yy += _h;
|
||||
hh += _h;
|
||||
|
|
|
@ -17,18 +17,21 @@ if !ready exit;
|
|||
var by = dialog_y + ui(16) + line_height() / 2 - hh / 2;
|
||||
|
||||
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)
|
||||
filter = filter ^ NOTI_TYPE.error;
|
||||
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);
|
||||
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);
|
||||
|
||||
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)
|
||||
filter = filter ^ NOTI_TYPE.warning;
|
||||
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);
|
||||
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);
|
||||
|
||||
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)
|
||||
filter = filter ^ NOTI_TYPE.log;
|
||||
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);
|
||||
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));
|
||||
sp_noti.active = sHOVER;
|
||||
|
|
|
@ -281,7 +281,7 @@ event_inherited();
|
|||
|
||||
var cw = ui(100);
|
||||
var ch = th - ui(4);
|
||||
var cx = x1 - cw;
|
||||
var cx = x1 - cw - ui(8);
|
||||
var category = "";
|
||||
|
||||
for( var i = 0; i < array_length(COLOR_KEYS); i++ ) {
|
||||
|
@ -304,7 +304,7 @@ event_inherited();
|
|||
}
|
||||
|
||||
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, "_", " ");
|
||||
keyStr = string_replace(keyStr, cat + " ", "");
|
||||
|
@ -355,6 +355,17 @@ event_inherited();
|
|||
var padd = ui(6);
|
||||
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++) {
|
||||
var _pref = current_list[| i];
|
||||
|
||||
|
@ -373,7 +384,7 @@ event_inherited();
|
|||
continue;
|
||||
|
||||
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_text(ui(8), yy + th / 2, _pref[0]);
|
||||
|
@ -429,8 +440,10 @@ event_inherited();
|
|||
var padd = ui(8);
|
||||
var hh = 0;
|
||||
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++) {
|
||||
var ll = HOTKEYS[? HOTKEY_CONTEXT[| j]];
|
||||
|
||||
|
@ -439,7 +452,10 @@ event_inherited();
|
|||
var group = key.context;
|
||||
var name = key.name;
|
||||
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)
|
||||
continue;
|
||||
|
@ -457,7 +473,7 @@ event_inherited();
|
|||
|
||||
if(i % 2 == 0) {
|
||||
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);
|
||||
|
@ -469,10 +485,10 @@ event_inherited();
|
|||
if(hk_editing == key) {
|
||||
var _mod_prs = 0;
|
||||
|
||||
if(key_mod_press(CTRL)) _mod_prs |= MOD_KEY.ctrl;
|
||||
if(key_mod_press(CTRL)) _mod_prs |= MOD_KEY.ctrl;
|
||||
if(keyboard_check(vk_shift)) _mod_prs |= MOD_KEY.shift;
|
||||
if(keyboard_check(vk_alt)) _mod_prs |= MOD_KEY.alt;
|
||||
|
||||
|
||||
if(keyboard_check_pressed(vk_escape)) {
|
||||
key.key = "";
|
||||
key.modi = 0;
|
||||
|
@ -480,42 +496,73 @@ event_inherited();
|
|||
PREF_SAVE();
|
||||
} else if(keyboard_check_pressed(vk_anykey)) {
|
||||
var press = false;
|
||||
for(var a = 32; a <= 126; a++) {
|
||||
if(keyboard_check_pressed(a)) {
|
||||
key.key = ord(string_upper(ansi_char(a)));
|
||||
|
||||
for(var a = 0; a < array_length(vk_list); a++) {
|
||||
if(!keyboard_check_pressed(vk_list[a])) continue;
|
||||
key.key = vk_list[a];
|
||||
press = true;
|
||||
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;
|
||||
}
|
||||
}
|
||||
if(!press) {
|
||||
for(var a = 0; a < array_length(vk_list); a++) {
|
||||
if(keyboard_check_pressed(vk_list[a])) {
|
||||
key.key = vk_list[a];
|
||||
press = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(press) key.modi = _mod_prs;
|
||||
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 {
|
||||
if(buttonInstant(THEME.button_hide, x1 - ui(40) - kw, _y + hh - ui(6), kw + ui(32), th + ui(12),
|
||||
_m, sFOCUS, sHOVER && sp_hotkey.hover) == 2) {
|
||||
hk_editing = key;
|
||||
keyboard_lastchar = pkey;
|
||||
var bx = key_x1 - ui(40) - kw;
|
||||
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;
|
||||
keyboard_lastchar = pkey;
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
})
|
||||
#endregion
|
||||
|
|
|
@ -79,7 +79,7 @@ if !ready exit;
|
|||
|
||||
sp_colors.active = sHOVER;
|
||||
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))
|
||||
hk_editing = noone;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
addHotkey("", "Undo", "Z", MOD_KEY.ctrl, function() { UNDO(); });
|
||||
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() {
|
||||
UPDATE |= RENDER_TYPE.full;
|
||||
|
@ -84,6 +84,10 @@
|
|||
case ".json" :
|
||||
node = Node_create_Json_File_Read_path(PANEL_GRAPH.mouse_grid_x, PANEL_GRAPH.mouse_grid_y, path);
|
||||
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 ".jpg" :
|
||||
case ".jpeg" :
|
||||
|
|
|
@ -1,4 +1,18 @@
|
|||
/// @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
|
||||
if(PANEL_MAIN != 0) {
|
||||
PANEL_MAIN.draw();
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
/// @description init
|
||||
MODIFIED = false;
|
||||
MODIFIED = false;
|
||||
PREF_LOAD();
|
|
@ -49,7 +49,8 @@
|
|||
if(ds_map_exists(HOTKEYS, "")) {
|
||||
var l = HOTKEYS[? ""];
|
||||
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)) {
|
||||
hotkey.action();
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
_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();
|
||||
if(UPDATE & RENDER_TYPE.partial)
|
||||
Render(true);
|
||||
|
|
|
@ -2,9 +2,12 @@
|
|||
"resourceType": "GMWindowsOptions",
|
||||
"resourceVersion": "1.1",
|
||||
"name": "Windows",
|
||||
"option_windows_display_name": "Pixel Composer 1.0.9",
|
||||
"option_windows_executable_name": "${project_name} 1.0.9.exe",
|
||||
"option_windows_version": "1.0.9.0",
|
||||
"ConfigValues": {
|
||||
"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_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_product_info": "Pixel Composer",
|
||||
"option_windows_copyright_info": "",
|
||||
|
|
|
@ -66,13 +66,13 @@ enum CAMERA_PROJ {
|
|||
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, [_1, _0, _1], [0, 0, 1], [1, 0]);
|
||||
vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [0, 0]);
|
||||
vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [1, 1]);
|
||||
vertex_add_pnt(VB, [_1, _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], [0, 1]);
|
||||
|
||||
vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [1, 1]);
|
||||
vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [0, 0]);
|
||||
vertex_add_pnt(VB, [_0, _1, _1], [0, 0, 1], [0, 1]);
|
||||
vertex_add_pnt(VB, [_1, _1, _1], [0, 0, 1], [0, 1]);
|
||||
vertex_add_pnt(VB, [_0, _0, _1], [0, 0, 1], [1, 0]);
|
||||
vertex_add_pnt(VB, [_0, _1, _1], [0, 0, 1], [1, 1]);
|
||||
|
||||
|
||||
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, _0], [1, 0, 0], [0, 1]);
|
||||
vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [0, 0]);
|
||||
vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [1, 1]);
|
||||
vertex_add_pnt(VB, [_0, _1, _0], [1, 0, 0], [1, 1]);
|
||||
vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [1, 0]);
|
||||
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, _0, _0], [1, 0, 0], [0, 0]);
|
||||
vertex_add_pnt(VB, [_0, _0, _1], [1, 0, 0], [1, 0]);
|
||||
vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [0, 1]);
|
||||
vertex_add_pnt(VB, [_0, _0, _0], [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, _0, _0], [-1, 0, 0], [0, 0]);
|
||||
|
|
|
@ -31,14 +31,16 @@ function __part(_node) constructor {
|
|||
|
||||
scx = 1;
|
||||
scy = 1;
|
||||
scx_s = 1;
|
||||
scy_s = 1;
|
||||
sc_sx = 1;
|
||||
sc_sy = 1;
|
||||
sct = CURVE_DEF_11;
|
||||
|
||||
rot = 0;
|
||||
follow = false;
|
||||
rot_s = 0;
|
||||
|
||||
col = -1;
|
||||
blend = c_white;
|
||||
alp = 1;
|
||||
alp_draw = alp;
|
||||
alp_fade = 0;
|
||||
|
@ -70,17 +72,18 @@ function __part(_node) constructor {
|
|||
|
||||
wig = _wig;
|
||||
}
|
||||
function setTransform(_scx, _scy, _scxs, _scys, _rot, _rots, _follow) {
|
||||
scx = _scx;
|
||||
scy = _scy;
|
||||
scx_s = _scxs;
|
||||
scy_s = _scys;
|
||||
function setTransform(_scx, _scy, _sct, _rot, _rots, _follow) {
|
||||
sc_sx = _scx;
|
||||
sc_sy = _scy;
|
||||
sct = _sct;
|
||||
|
||||
rot = _rot;
|
||||
rot_s = _rots;
|
||||
follow = _follow;
|
||||
}
|
||||
function setDraw(_col, _alp, _fade) {
|
||||
function setDraw(_col, _blend, _alp, _fade) {
|
||||
col = _col;
|
||||
blend = _blend;
|
||||
alp = _alp;
|
||||
alp_draw = _alp;
|
||||
alp_fade = _fade;
|
||||
|
@ -109,23 +112,17 @@ function __part(_node) constructor {
|
|||
gy += g;
|
||||
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)
|
||||
rot = point_direction(xp, yp, x, y);
|
||||
else
|
||||
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)
|
||||
node.onPartStep(self);
|
||||
if(life-- < 0) kill();
|
||||
}
|
||||
|
||||
function draw(exact) {
|
||||
function draw(exact, surf_w, surf_h) {
|
||||
if(!active) return;
|
||||
var ss = surf;
|
||||
if(is_array(surf)) {
|
||||
|
@ -148,7 +145,9 @@ function __part(_node) constructor {
|
|||
}
|
||||
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 s_w = surface_get_width(ss) * scx;
|
||||
var s_h = surface_get_height(ss) * scy;
|
||||
|
@ -175,6 +174,16 @@ function __part(_node) constructor {
|
|||
_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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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_y1 = _area_y + _area_h;
|
||||
|
||||
for(var i = 0; i < ds_list_size(parts); i++) {
|
||||
var part = parts[| i];
|
||||
for(var i = 0; i < array_length(parts); i++) {
|
||||
var part = parts[i];
|
||||
var pv = part.getPivot();
|
||||
var px = _x + part.x * _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_y0, _area_x0, _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) {
|
||||
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);
|
||||
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() {
|
||||
var _type = inputs[| 5].getValue();
|
||||
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_y0, _area_x0, _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) {
|
||||
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);
|
||||
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++) {
|
||||
current_data[i] = inputs[| i].getValue();
|
||||
}
|
||||
for(var i = 0; i < ds_list_size(parts); i++)
|
||||
affect(parts[| i]);
|
||||
for(var i = 0; i < array_length(parts); i++)
|
||||
affect(parts[i]);
|
||||
}
|
||||
}
|
|
@ -5,7 +5,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
|
|||
.setDisplay(noone, "particles");
|
||||
|
||||
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[| 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);
|
||||
|
||||
|
@ -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 ])
|
||||
.setDisplay(VALUE_DISPLAY.rotation_range);
|
||||
|
||||
inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
|
||||
.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 ] )
|
||||
.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)
|
||||
.setDisplay(VALUE_DISPLAY.gradient);
|
||||
|
||||
inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
|
||||
.setDisplay(VALUE_DISPLAY.range);
|
||||
|
||||
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);
|
||||
|
@ -49,6 +54,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
|
|||
.setDisplay(VALUE_DISPLAY.range);
|
||||
|
||||
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[| 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);
|
||||
|
||||
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_display_list = [
|
||||
["Sprite", false], 0, 22, 23, 26,
|
||||
["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,
|
||||
["Rotation", true], 15, 8, 9,
|
||||
["Scale", true], 10, 17, 11,
|
||||
["Color", true], 12, 13, 14,
|
||||
["Color", true], 12, 28, 13, 14,
|
||||
["Render", true], 21
|
||||
];
|
||||
|
||||
parts = ds_list_create();
|
||||
parts = array_create(PREF_MAP[? "part_max_amount"]);
|
||||
parts_runner = 0;
|
||||
|
||||
seed_origin = irandom(9999999);
|
||||
seed = seed_origin;
|
||||
spawn_index = 0;
|
||||
def_surface = -1;
|
||||
|
||||
current_data = [];
|
||||
|
||||
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) {
|
||||
random_set_seed(seed++);
|
||||
|
||||
var _inSurf = inputs[| 0].getValue(_time);
|
||||
var _inSurf = current_data[0];
|
||||
|
||||
if(_inSurf == 0) {
|
||||
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;
|
||||
}
|
||||
|
||||
var _spawn_amount = inputs[| 2].getValue(_time);
|
||||
var _spawn_amount = current_data[ 2];
|
||||
var _amo = _spawn_amount;
|
||||
|
||||
var _spawn_area = inputs[| 3].getValue(_time);
|
||||
var _distrib = inputs[| 4].getValue(_time);
|
||||
var _scatter = inputs[| 24].getValue(_time);
|
||||
var _spawn_area = current_data[ 3];
|
||||
var _distrib = current_data[ 4];
|
||||
var _scatter = current_data[24];
|
||||
|
||||
var _life = inputs[| 5].getValue(_time);
|
||||
var _direction = inputs[| 6].getValue(_time);
|
||||
var _velocity = inputs[| 18].getValue(_time);
|
||||
var _life = current_data[ 5];
|
||||
var _direction = current_data[ 6];
|
||||
var _directCenter = current_data[29];
|
||||
var _velocity = current_data[18];
|
||||
|
||||
var _accel = inputs[| 7].getValue(_time);
|
||||
var _grav = inputs[| 19].getValue(_time);
|
||||
var _wigg = inputs[| 20].getValue(_time);
|
||||
var _accel = current_data[ 7];
|
||||
var _grav = current_data[19];
|
||||
var _wigg = current_data[20];
|
||||
|
||||
var _follow = inputs[| 15].getValue(_time);
|
||||
var _rotation = inputs[| 8].getValue(_time);
|
||||
var _rotation_speed = inputs[| 9].getValue(_time);
|
||||
var _scale = inputs[| 10].getValue(_time);
|
||||
var _size = inputs[| 17].getValue(_time);
|
||||
var _scale_speed = inputs[| 11].getValue(_time);
|
||||
var _follow = current_data[15];
|
||||
var _rotation = current_data[ 8];
|
||||
var _rotation_speed = current_data[ 9];
|
||||
var _scale = current_data[10];
|
||||
var _size = current_data[17];
|
||||
var _scale_time = current_data[11];
|
||||
|
||||
var _color = inputs[| 12].getValue(_time);
|
||||
var _alpha = inputs[| 13].getValue(_time);
|
||||
var _fade = inputs[| 14].getValue(_time);
|
||||
var _color = current_data[12];
|
||||
var _blend = current_data[28];
|
||||
var _bldTyp = inputs[| 28].getExtraData();
|
||||
var _alpha = current_data[13];
|
||||
var _fade = current_data[14];
|
||||
|
||||
var _arr_type = inputs[| 22].getValue(_time);
|
||||
var _anim_speed = inputs[| 23].getValue(_time);
|
||||
var _anim_end = inputs[| 26].getValue(_time);
|
||||
var _arr_type = current_data[22];
|
||||
var _anim_speed = current_data[23];
|
||||
var _anim_end = current_data[26];
|
||||
|
||||
if(_rotation[1] < _rotation[0]) _rotation[1] += 360;
|
||||
|
||||
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
|
||||
if(parts[| i].active) continue;
|
||||
repeat(_amo) {
|
||||
random_set_seed(seed++);
|
||||
parts_runner = clamp(parts_runner, 0, array_length(parts) - 1);
|
||||
var part = parts[parts_runner];
|
||||
|
||||
var _spr = _inSurf, _index = 0;
|
||||
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(_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;
|
||||
var _b = _b_data[safe_mod(_index, array_length(_b_data))];
|
||||
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);
|
||||
yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3);
|
||||
|
||||
parts[| i].boundary_data = _b;
|
||||
part.boundary_data = _b;
|
||||
} 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];
|
||||
yy = sp[1];
|
||||
|
||||
parts[| i].boundary_data = -1;
|
||||
part.boundary_data = -1;
|
||||
}
|
||||
} else {
|
||||
xx = _pos[0];
|
||||
|
@ -185,9 +203,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
|
|||
|
||||
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 _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 _vx = lengthdir_x(_velo, _dirr);
|
||||
var _vy = lengthdir_y(_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 _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"]);
|
||||
onSpawn(_time, parts[| i]);
|
||||
var _bld = gradient_eval(_blend, random(1), ds_list_get(_bldTyp, 0));
|
||||
|
||||
if(--_amo <= 0) return;
|
||||
part.seed = irandom(99999);
|
||||
part.create(_spr, xx, yy, _lif);
|
||||
part.anim_speed = _anim_speed;
|
||||
part.anim_end = _anim_end;
|
||||
|
||||
part.setPhysic(_vx, _vy, _acc, _grav, _wigg);
|
||||
part.setTransform(_scx, _scy, _scale_time, _rot, _rot_spd, _follow);
|
||||
part.setDraw(_color, _bld, _alp, _fade);
|
||||
spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]);
|
||||
onSpawn(_time, part);
|
||||
|
||||
parts_runner = safe_mod((parts_runner + 1), PREF_MAP[? "part_max_amount"]);
|
||||
}
|
||||
}
|
||||
|
||||
static onSpawn = function(_time, part) {}
|
||||
|
||||
static updateParticleForward = function(_render = true) {}
|
||||
|
||||
function reset() {
|
||||
spawn_index = 0;
|
||||
for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) {
|
||||
parts[| i].kill();
|
||||
for(var i = 0; i < array_length(parts); i++) {
|
||||
if(!parts[i].active) continue;
|
||||
parts[i].kill();
|
||||
}
|
||||
|
||||
render();
|
||||
seed = seed_origin;
|
||||
|
||||
var _loop = inputs[| 21].getValue();
|
||||
if(!_loop) return;
|
||||
|
||||
for(var i = 0; i < ANIMATOR.frames_total; i++)
|
||||
runVFX(i);
|
||||
for(var i = 0; i < ANIMATOR.frames_total; i++) {
|
||||
runVFX(i, false);
|
||||
updateParticleForward(false);
|
||||
}
|
||||
|
||||
seed = seed_origin;
|
||||
}
|
||||
|
||||
function checkPartPool() {
|
||||
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) {
|
||||
repeat(_part_amo - _curr_amo)
|
||||
ds_list_add(parts, new __part(self));
|
||||
array_push(parts, new __part(self));
|
||||
} else if(_part_amo < _curr_amo) {
|
||||
repeat(_curr_amo - _part_amo)
|
||||
ds_list_delete(parts, 0);
|
||||
array_resize(parts, _part_amo);
|
||||
}
|
||||
}
|
||||
|
||||
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_type = inputs[| 16].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) {
|
||||
switch(_spawn_type) {
|
||||
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++)
|
||||
parts[| i].step();
|
||||
for(var i = 0; i < array_length(parts); i++) {
|
||||
if(!parts[i].active) continue;
|
||||
parts[i].step();
|
||||
}
|
||||
|
||||
if(!_render) return;
|
||||
|
||||
triggerRender();
|
||||
render(_time);
|
||||
}
|
||||
|
@ -272,7 +305,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const
|
|||
static step = function() {
|
||||
var _inSurf = inputs[| 0].getValue();
|
||||
var _scatt = inputs[| 24].getValue();
|
||||
var _dirAng = inputs[| 29].getValue();
|
||||
|
||||
inputs[| 6].setVisible(!_dirAng);
|
||||
inputs[| 22].setVisible(false);
|
||||
inputs[| 23].setVisible(false);
|
||||
inputs[| 25].setVisible(_scatt == 2);
|
||||
|
|
|
@ -3,24 +3,100 @@ enum AREA_SHAPE {
|
|||
elipse
|
||||
}
|
||||
|
||||
function areaBox(_onModify, _unit = noone) constructor {
|
||||
enum AREA_MODE {
|
||||
area,
|
||||
padding,
|
||||
two_point,
|
||||
}
|
||||
|
||||
function areaBox(_onModify, _unit = noone) : widget() constructor {
|
||||
onModify = _onModify;
|
||||
unit = _unit;
|
||||
onSurfaceSize = -1;
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
link_value = false;
|
||||
current_data = [ 0, 0, 0, 0 ];
|
||||
mode = AREA_MODE.area;
|
||||
|
||||
onModifySingle[0] = function(val) { onModify(0, toNumber(val)); }
|
||||
onModifySingle[1] = function(val) { onModify(1, toNumber(val)); }
|
||||
onModifySingle[2] = function(val) { onModify(2, toNumber(val)); }
|
||||
onModifySingle[3] = function(val) { onModify(3, toNumber(val)); }
|
||||
onModifySingle[0] = function(val) {
|
||||
if(mode == AREA_MODE.area) {
|
||||
onModify(0, 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++) {
|
||||
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(mouse_press(mb_left, active)) {
|
||||
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(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++) {
|
||||
|
@ -44,12 +177,66 @@ function areaBox(_onModify, _unit = noone) constructor {
|
|||
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);
|
||||
tb[1].draw(_x + ui(56) - ui(48), _y - ui(28), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 1), _m);
|
||||
current_data = _data;
|
||||
|
||||
tb[2].draw(_x - ui(48), _y + ui(64 + 48 + 8), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 2), _m);
|
||||
tb[3].draw(_x + ui(68), _y + ui(64 - 16), ui(96), TEXTBOX_HEIGHT, array_safe_get(_data, 3), _m);
|
||||
if(mode == AREA_MODE.area) {
|
||||
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) {
|
||||
unit.triggerButton.hover = hover;
|
||||
unit.triggerButton.active = active;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
resetFocus();
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@ enum AREA_SCATTER {
|
|||
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];
|
||||
|
||||
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;
|
||||
} else if(scatter == AREA_SCATTER.random) {
|
||||
if(_area_t == AREA_SHAPE.rectangle) {
|
||||
xx = _area_x + random_range(-_area_w, _area_w);
|
||||
yy = _area_y + random_range(-_area_h, _area_h);
|
||||
xx = _area_x + random_range_seed(-_area_w, _area_w, _sed); _sed++;
|
||||
yy = _area_y + random_range_seed(-_area_h, _area_h, _sed); _sed++;
|
||||
} else {
|
||||
var rr = random(360);
|
||||
xx = _area_x + lengthdir_x(1, rr) * random(_area_w);
|
||||
yy = _area_y + lengthdir_y(1, rr) * random(_area_h);
|
||||
var rr = random_seed(360, _sed); _sed++;
|
||||
xx = _area_x + lengthdir_x(1, rr) * random_seed(_area_w, _sed); _sed++;
|
||||
yy = _area_y + lengthdir_y(1, rr) * random_seed(_area_h, _sed); _sed++;
|
||||
}
|
||||
}
|
||||
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 i = perimeter * index / total;
|
||||
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;
|
||||
} else if(i < _area_w + _area_h) {
|
||||
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) {
|
||||
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;
|
||||
} else {
|
||||
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 {
|
||||
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) {
|
||||
if(_area_t == AREA_SHAPE.rectangle) {
|
||||
var perimeter = _area_w * 2 + _area_h * 2;
|
||||
var i = random(perimeter);
|
||||
var i = random_seed(perimeter, _sed); _sed++;
|
||||
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;
|
||||
} else if(i < _area_w + _area_h) {
|
||||
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) {
|
||||
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;
|
||||
} else {
|
||||
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 {
|
||||
var rr = random(360);
|
||||
var rr = random_seed(360, _sed); _sed++;
|
||||
xx = _area_x + lengthdir_x(_area_w, rr);
|
||||
yy = _area_y + lengthdir_y(_area_h, rr);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ function array_safe_set(arr, index, value) {
|
|||
}
|
||||
|
||||
function array_safe_get(arr, index, def = 0) {
|
||||
if(index < 0) return def;
|
||||
if(index >= array_length(arr)) return def;
|
||||
return arr[index];
|
||||
}
|
||||
|
|
87
scripts/ase_object/ase_object.gml
Normal 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);
|
||||
}
|
||||
}
|
11
scripts/ase_object/ase_object.yy
Normal 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",
|
||||
},
|
||||
}
|
|
@ -1,32 +1,500 @@
|
|||
function read_ase(path) {
|
||||
var file = file_bin_open(path, 0);
|
||||
var load_str = "";
|
||||
/*
|
||||
* ASE file reader
|
||||
* Author: MakhamDev
|
||||
* File spec from: https://github.com/aseprite/aseprite/blob/main/docs/ase-file-specs.md
|
||||
*/
|
||||
|
||||
enum _BIN_TYPE {
|
||||
byte,
|
||||
word,
|
||||
short,
|
||||
dword,
|
||||
long,
|
||||
fixed,
|
||||
float,
|
||||
double,
|
||||
qword,
|
||||
long64,
|
||||
|
||||
bin_read_dword(file);
|
||||
bin_read_word(file);
|
||||
var frames = bin_read_word(file);
|
||||
var width = bin_read_word(file);
|
||||
var height = bin_read_word(file);
|
||||
|
||||
var pos = 128;
|
||||
file_bin_seek(file, pos);
|
||||
|
||||
repeat(frames) {
|
||||
bin_read_dword(file);
|
||||
bin_read_word(file);
|
||||
|
||||
var old_chunk = bin_read_word(file);
|
||||
|
||||
bin_read_word(file);
|
||||
bin_read_word(file);
|
||||
bin_read_word(file);
|
||||
|
||||
var new_chunk = bin_read_dword(file);
|
||||
|
||||
var chunks = new_chunk == 0? old_chunk : new_chunk;
|
||||
|
||||
string,
|
||||
point,
|
||||
size,
|
||||
rect,
|
||||
color,
|
||||
pixel,
|
||||
}
|
||||
|
||||
//ASE blend mode
|
||||
//Normal = 0
|
||||
//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
|
||||
|
||||
global.ASE_LOG = false;
|
||||
|
||||
globalvar __ase_format_header;
|
||||
__ase_format_header = [
|
||||
[_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],
|
||||
];
|
||||
|
||||
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"],
|
||||
];
|
||||
|
||||
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"]);
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
for( var i = 0; i < ds_list_size(_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++ ) {
|
||||
|
@ -53,7 +53,7 @@
|
|||
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);
|
||||
|
||||
return global.ASSET_CACHE[? key];
|
||||
|
|
27
scripts/bin_function/bin_function.gml
Normal 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;
|
||||
}
|
11
scripts/bin_function/bin_function.yy
Normal 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",
|
||||
},
|
||||
}
|
|
@ -1,30 +1,32 @@
|
|||
function surface_apply_gaussian(surface, size, bg = false, bg_c = c_white, clamp_border = false, mask = noone) {
|
||||
static uni_bor = shader_get_uniform(sh_blur_gaussian, "clamp_border");
|
||||
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, "sampleMode");
|
||||
static uni_dim = shader_get_uniform(sh_blur_gaussian, "dimension");
|
||||
static uni_hor = shader_get_uniform(sh_blur_gaussian, "horizontal");
|
||||
static uni_wei = shader_get_uniform(sh_blur_gaussian, "weight");
|
||||
static uni_sze = shader_get_uniform(sh_blur_gaussian, "size");
|
||||
|
||||
static uni_umk = shader_get_uniform(sh_blur_gaussian, "useMask");
|
||||
static uni_msk = shader_get_sampler_index(sh_blur_gaussian, "mask");
|
||||
static uni_ovr = shader_get_uniform(sh_blur_gaussian, "overrideColor");
|
||||
static uni_ovc = shader_get_uniform(sh_blur_gaussian, "overColor");
|
||||
|
||||
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));
|
||||
|
||||
size = max(1, round(size));
|
||||
var gau_array = array_create(size);
|
||||
var we = 0;
|
||||
var b = 0.3 * ((size - 1) * 0.5 - 1) + 0.8;
|
||||
for(var i = 0; i < size; i++) {
|
||||
var _x = i * .5;
|
||||
#region kernel generation
|
||||
size = max(1, round(size));
|
||||
var gau_array = array_create(size);
|
||||
var we = 0;
|
||||
var b = 0.3 * ((size - 1) * 0.5 - 1) + 0.8;
|
||||
for(var i = 0; i < size; i++) {
|
||||
var _x = i * .5;
|
||||
|
||||
gau_array[i] = (1 / sqrt(2 * pi * b)) * exp( -sqr(_x) / (2 * sqr(b)) );
|
||||
we += i? gau_array[i] * 2 : gau_array[i];
|
||||
}
|
||||
for(var i = 0; i < size; i++) {
|
||||
gau_array[i] /= we;
|
||||
}
|
||||
gau_array[i] = (1 / sqrt(2 * pi * b)) * exp( -sqr(_x) / (2 * sqr(b)) );
|
||||
we += i? gau_array[i] * 2 : gau_array[i];
|
||||
}
|
||||
for(var i = 0; i < size; i++) {
|
||||
gau_array[i] /= we;
|
||||
}
|
||||
#endregion
|
||||
|
||||
BLEND_OVER
|
||||
surface_set_target(hori);
|
||||
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_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_hor, 1);
|
||||
|
||||
shader_set_uniform_i(uni_umk, is_surface(mask));
|
||||
texture_set_stage(uni_msk, surface_get_texture(mask));
|
||||
shader_set_uniform_i(uni_ovr, overColor != noone);
|
||||
shader_set_uniform_f_array(uni_ovc, colToVec4(overColor));
|
||||
|
||||
draw_surface_safe(surface, 0, 0);
|
||||
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);
|
||||
shader_reset();
|
||||
surface_reset_target();
|
||||
BLEND_NORMAL
|
||||
|
||||
surface_free(hori);
|
||||
|
||||
|
|
|
@ -2,10 +2,7 @@ function button(_onClick, _icon = noone) {
|
|||
return new buttonClass(_onClick, _icon);
|
||||
}
|
||||
|
||||
function buttonClass(_onClick, _icon = noone) constructor {
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
function buttonClass(_onClick, _icon = noone) : widget() constructor {
|
||||
icon = _icon;
|
||||
icon_blend = c_white;
|
||||
icon_index = 0;
|
||||
|
@ -15,6 +12,11 @@ function buttonClass(_onClick, _icon = noone) constructor {
|
|||
|
||||
onClick = _onClick;
|
||||
|
||||
static trigger = function() {
|
||||
if(!onClick) return;
|
||||
onClick();
|
||||
}
|
||||
|
||||
static setIcon = function(_icon, _index = 0, _blend = c_white) {
|
||||
icon = _icon;
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
|
||||
var click = false;
|
||||
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);
|
||||
if(mouse_press(mb_left, active)) {
|
||||
if(onClick) onClick();
|
||||
trigger();
|
||||
click = true;
|
||||
}
|
||||
if(mouse_click(mb_left, active))
|
||||
|
@ -45,15 +52,19 @@ function buttonClass(_onClick, _icon = noone) constructor {
|
|||
if(tooltip != "") TOOLTIP = tooltip;
|
||||
} else {
|
||||
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(text != "") {
|
||||
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
|
||||
draw_text(_x + _w / 2, _y + _h / 2, text);
|
||||
}
|
||||
|
||||
hover = false;
|
||||
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));
|
||||
|
||||
resetFocus();
|
||||
|
||||
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);
|
||||
if(_tip != "")
|
||||
TOOLTIP = _tip;
|
||||
|
||||
if(mouse_press(mb_left, _act))
|
||||
res = 2;
|
||||
if(mouse_press(mb_right, _act))
|
||||
res = 3;
|
||||
|
||||
if(mouse_click(mb_left, _act))
|
||||
draw_sprite_stretched(spr, 2, _x, _y, _w, _h);
|
||||
} else {
|
||||
} else
|
||||
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);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
|
@ -2,10 +2,7 @@ function buttonColor(_onApply) {
|
|||
return new buttonColorClass(_onApply);
|
||||
}
|
||||
|
||||
function buttonColorClass(_onApply) constructor {
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
function buttonColorClass(_onApply) : widget() constructor {
|
||||
onApply = _onApply;
|
||||
onColorPick = function() {
|
||||
var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2);
|
||||
|
@ -16,10 +13,24 @@ function buttonColorClass(_onApply) constructor {
|
|||
|
||||
is_picking = false;
|
||||
|
||||
current_color = c_black;
|
||||
b_picker = button(onColorPick);
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
current_color = _color;
|
||||
|
||||
b_picker.hover = hover;
|
||||
b_picker.active = active;
|
||||
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)) {
|
||||
draw_sprite_stretched(THEME.button, 1, _x, _y, _cw, _h);
|
||||
if(mouse_press(mb_left, active)) {
|
||||
var dialog = dialogCall(o_dialog_color_selector, WIN_W / 2, WIN_H / 2);
|
||||
dialog.selector.setColor(_color);
|
||||
dialog.selector.onApply = onApply;
|
||||
dialog.onApply = onApply;
|
||||
trigger();
|
||||
click = true;
|
||||
}
|
||||
if(mouse_click(mb_left, active))
|
||||
draw_sprite_stretched(THEME.button, 2, _x, _y, _cw, _h);
|
||||
} else {
|
||||
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);
|
||||
|
||||
hover = false;
|
||||
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));
|
||||
|
||||
resetFocus();
|
||||
|
||||
return click;
|
||||
}
|
||||
|
|
|
@ -2,32 +2,46 @@ function buttonGradient(_onApply) {
|
|||
return new buttonGradientClass(_onApply);
|
||||
}
|
||||
|
||||
function buttonGradientClass(_onApply) constructor {
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
function buttonGradientClass(_onApply) : widget() constructor {
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
current_gradient = _gradient;
|
||||
current_data = _data;
|
||||
|
||||
var click = false;
|
||||
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);
|
||||
if(mouse_press(mb_left, active)) {
|
||||
var dialog = dialogCall(o_dialog_gradient, WIN_W / 2, WIN_H / 2);
|
||||
dialog.setGradient(_gradient, _data);
|
||||
dialog.onApply = onApply;
|
||||
trigger();
|
||||
click = true;
|
||||
}
|
||||
if(mouse_click(mb_left, active))
|
||||
draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h);
|
||||
} else {
|
||||
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]);
|
||||
|
||||
hover = false;
|
||||
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));
|
||||
|
||||
resetFocus();
|
||||
|
||||
return click;
|
||||
}
|
||||
|
|
|
@ -2,12 +2,12 @@ function buttonGroup(_data, _onClick) {
|
|||
return new buttonGroupClass(_data, _onClick);
|
||||
}
|
||||
|
||||
function buttonGroupClass(_data, _onClick) constructor {
|
||||
function buttonGroupClass(_data, _onClick) : widget() constructor {
|
||||
data = _data;
|
||||
onClick = _onClick;
|
||||
display_button = false;
|
||||
|
||||
hover = false;
|
||||
active = false;
|
||||
current_selecting = 0;
|
||||
|
||||
for(var i = 0; i < array_length(data); i++) {
|
||||
buttons[i] = button(-1);
|
||||
|
@ -15,7 +15,28 @@ function buttonGroupClass(_data, _onClick) constructor {
|
|||
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
current_selecting = _selecting;
|
||||
|
||||
var amo = array_length(data);
|
||||
var ww = _w / amo;
|
||||
|
||||
|
@ -26,7 +47,9 @@ function buttonGroupClass(_data, _onClick) constructor {
|
|||
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++) {
|
||||
buttons[i].hover = hover;
|
||||
buttons[i].active = active;
|
||||
|
@ -34,11 +57,10 @@ function buttonGroupClass(_data, _onClick) constructor {
|
|||
var bx = _x + ww * i;
|
||||
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);
|
||||
} else if(buttons[i].draw(bx, _y, ww, _h, _m, spr)) {
|
||||
onClick(i);
|
||||
}
|
||||
else if(buttons[i].draw(bx, _y, ww, _h, _m, spr))
|
||||
onClick(i);
|
||||
|
||||
if(is_string(data[i])) {
|
||||
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);
|
||||
}
|
||||
|
||||
hover = false;
|
||||
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));
|
||||
|
||||
resetFocus();
|
||||
}
|
||||
}
|
|
@ -2,32 +2,43 @@ function buttonPalette(_onApply) {
|
|||
return new buttonPaletteClass(_onApply);
|
||||
}
|
||||
|
||||
function buttonPaletteClass(_onApply) constructor {
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
function buttonPaletteClass(_onApply) : widget() constructor {
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
current_palette = _color;
|
||||
|
||||
var click = false;
|
||||
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);
|
||||
if(mouse_press(mb_left, active)) {
|
||||
var dialog = dialogCall(o_dialog_palette, WIN_W / 2, WIN_H / 2);
|
||||
dialog.setPalette(_color);
|
||||
dialog.onApply = onApply;
|
||||
trigger();
|
||||
click = true;
|
||||
}
|
||||
if(mouse_click(mb_left, active))
|
||||
draw_sprite_stretched(THEME.button, 2, _x, _y, _w, _h);
|
||||
} else {
|
||||
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));
|
||||
|
||||
hover = false;
|
||||
active = false;
|
||||
resetFocus();
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -2,14 +2,135 @@ function bin_read_byte(bin) {
|
|||
return file_bin_read_byte(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) {
|
||||
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) {
|
||||
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) {
|
||||
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;
|
||||
}
|
|
@ -1,10 +1,17 @@
|
|||
function checkBox(_onClick) constructor {
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
function checkBox(_onClick) : widget() constructor {
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = ss;
|
||||
h = ss;
|
||||
|
||||
var _dx, _dy;
|
||||
switch(halign) {
|
||||
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);
|
||||
|
||||
if(mouse_press(mb_left, active))
|
||||
if(onClick) onClick();
|
||||
}
|
||||
trigger();
|
||||
} else
|
||||
if(mouse_press(mb_left)) deactivate();
|
||||
|
||||
hover = false;
|
||||
active = false;
|
||||
if(WIDGET_CURRENT == self)
|
||||
draw_sprite_stretched(THEME.widget_selecting, 0, _dx - ui(3), _dy - ui(3), ss + ui(6), ss + ui(6));
|
||||
|
||||
resetFocus();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,4 +14,16 @@ function colorBrightness(clr) {
|
|||
var g2 = color_get_green(clr) / 255;
|
||||
var b2 = color_get_blue(clr) / 255;
|
||||
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);
|
||||
}
|
|
@ -15,13 +15,10 @@ enum PUPPET_FORCE_MODE {
|
|||
wind,
|
||||
}
|
||||
|
||||
function controlPointBox(_onModify) constructor {
|
||||
function controlPointBox(_onModify) : widget() constructor {
|
||||
onModify = _onModify;
|
||||
onSurfaceSize = -1;
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
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)); });
|
||||
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)); }
|
||||
);
|
||||
|
||||
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) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
|
||||
tbCx.hover = hover; tbCx.active = active;
|
||||
tbCy.hover = hover; tbCy.active = active;
|
||||
tbFx.hover = hover; tbFx.active = active;
|
||||
|
@ -109,8 +120,7 @@ function controlPointBox(_onModify) constructor {
|
|||
break;
|
||||
}
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
resetFocus();
|
||||
|
||||
return yy - _y;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
globalvar KEYBOARD_STRING, KEYBOARD_PRESSED;
|
||||
globalvar CTRL, ALT, SHIFT;
|
||||
|
||||
WIDGET_ACTIVE = [];
|
||||
KEYBOARD_PRESSED = vk_nokey;
|
||||
CTRL = KEYBOARD_STATUS.idle;
|
||||
ALT = KEYBOARD_STATUS.idle;
|
||||
|
@ -27,4 +28,41 @@
|
|||
function key_mod_press(key) {
|
||||
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
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
function curveBox(_onModify) constructor {
|
||||
function curveBox(_onModify) : widget() constructor {
|
||||
onModify = _onModify;
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
node_dragging = -1;
|
||||
|
||||
drag_range = 0;
|
||||
|
@ -13,7 +10,14 @@ function curveBox(_onModify) constructor {
|
|||
return _y + _h * clamp((y_max - val) / y_range, 0, 1);
|
||||
}
|
||||
|
||||
static register = function() {}
|
||||
|
||||
static draw = function(_x, _y, _w, _h, _data, _m) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
|
||||
static curve_amo = 3;
|
||||
var curve_h = _h;
|
||||
|
||||
|
@ -106,7 +110,6 @@ function curveBox(_onModify) constructor {
|
|||
drag_max = y_max;
|
||||
}
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
resetFocus();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
#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]
|
||||
|
||||
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 _binRep = 5;
|
||||
|
||||
if(_bz[0] == _bz[2] && _bz[0] == _bz[4] && _bz[0] == _bz[5]) return _bz[0];
|
||||
|
||||
repeat(_binRep) {
|
||||
var _ftx = power(1 - _xt, 3) * 0
|
||||
+ 3 * power(1 - _xt, 2) * _xt * _bz[1]
|
||||
|
|
|
@ -12,10 +12,10 @@ function __log(title, str, fname = "log.txt") {
|
|||
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));
|
||||
|
||||
return noti_status(string(title) + ": " + string(str), icon);
|
||||
return noti_status(string(title) + ": " + string(str), icon, flash);
|
||||
}
|
||||
|
||||
function log_warning(title, str) {
|
||||
|
|
|
@ -1,8 +1,30 @@
|
|||
function FileObject(_name, _path) constructor {
|
||||
name = _name;
|
||||
path = _path;
|
||||
spr = -1;
|
||||
content = -1;
|
||||
spr_path = [];
|
||||
spr = -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 {
|
||||
|
@ -48,7 +70,7 @@ function DirectoryObject(name, path) constructor {
|
|||
var p = string_pos("strip", icon_path);
|
||||
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 {
|
||||
var icon_path = path + "\\" + filename_change_ext(file, ".png");
|
||||
if(!file_exists(icon_path)) continue;
|
||||
|
@ -59,8 +81,7 @@ function DirectoryObject(name, path) constructor {
|
|||
var amo = ww % hh == 0? ww / hh : 1;
|
||||
sprite_delete(_temp);
|
||||
|
||||
f.spr = sprite_add(icon_path, amo, false, false, 0, 0);
|
||||
sprite_set_offset(f.spr, sprite_get_width(f.spr) / 2, sprite_get_height(f.spr) / 2);
|
||||
f.spr_path = [icon_path, amo, true];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,14 +40,14 @@ function draw_surface_blend(background, foreground, blend, alpha, _mask = 0, til
|
|||
case BLEND_MODE.maxx : sh = sh_blend_max; break;
|
||||
case BLEND_MODE.minn : sh = sh_blend_min; break;
|
||||
}
|
||||
|
||||
|
||||
var uniform_foreground = shader_get_sampler_index(sh, "fore");
|
||||
var uniform_mask = shader_get_sampler_index(sh, "mask");
|
||||
var uniform_dim_rat = shader_get_uniform(sh, "dimension");
|
||||
var uniform_is_mask = shader_get_uniform(sh, "useMask");
|
||||
var uniform_alpha = shader_get_uniform(sh, "opacity");
|
||||
var uniform_tile = shader_get_uniform(sh, "tile_type");
|
||||
|
||||
|
||||
shader_set(sh);
|
||||
texture_set_stage(uniform_foreground, surface_get_texture(foreground));
|
||||
if(_mask) texture_set_stage(uniform_mask, surface_get_texture(_mask));
|
||||
|
|
70
scripts/fontScrollBox/fontScrollBox.gml
Normal 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();
|
||||
}
|
||||
}
|
11
scripts/fontScrollBox/fontScrollBox.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "fontScrollBox",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "widgets",
|
||||
"path": "folders/widgets.yy",
|
||||
},
|
||||
}
|
|
@ -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) {
|
||||
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 loadFonts() {
|
||||
if(FONT_LOADED) {
|
||||
if(FONT_ISLOADED) {
|
||||
font_clear(f_h3);
|
||||
font_clear(f_h5);
|
||||
|
||||
|
@ -44,7 +44,7 @@ function loadFonts() {
|
|||
f_p2 = _f_p2;
|
||||
f_p3 = _f_p3;
|
||||
f_code = _f_code;
|
||||
FONT_LOADED = false;
|
||||
FONT_ISLOADED = false;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -66,5 +66,5 @@ function loadFonts() {
|
|||
|
||||
f_code = _font_load_from_struct(fontDef.code, _f_code);
|
||||
|
||||
FONT_LOADED = true;
|
||||
FONT_ISLOADED = true;
|
||||
}
|
42
scripts/font_sprite_loader/font_sprite_loader.gml
Normal 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
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "_node_VFX",
|
||||
"name": "font_sprite_loader",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "VFX",
|
||||
"path": "folders/nodes/data/VFX.yy",
|
||||
"name": "font",
|
||||
"path": "folders/font.yy",
|
||||
},
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
#region save
|
||||
globalvar LOADING, LOADING_VERSION, APPENDING, MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
|
||||
LOADING = false;
|
||||
globalvar LOADING, LOADING_VERSION, APPENDING, CLONING;
|
||||
globalvar MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL;
|
||||
LOADING = false;
|
||||
CLONING = false;
|
||||
LOADING_VERSION = 0;
|
||||
APPENDING = false;
|
||||
READONLY = false;
|
||||
|
@ -21,9 +23,9 @@
|
|||
COLOR_KEYS = [];
|
||||
|
||||
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING;
|
||||
VERSION = 1090;
|
||||
SAVEFILE_VERSION = 1090;
|
||||
VERSION_STRING = "1.0.9";
|
||||
VERSION = 1110;
|
||||
SAVEFILE_VERSION = 1100;
|
||||
VERSION_STRING = "1.1.1.0";
|
||||
|
||||
globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT;
|
||||
|
||||
|
@ -41,14 +43,12 @@
|
|||
|
||||
#region inputs
|
||||
globalvar FOCUS, FOCUS_STR, HOVER, DOUBLE_CLICK, CURRENT_PATH, DIALOG_CLICK;
|
||||
globalvar TEXTBOX_ACTIVE;
|
||||
|
||||
CURRENT_PATH = "";
|
||||
DOUBLE_CLICK = false;
|
||||
FOCUS = noone;
|
||||
FOCUS_STR = "";
|
||||
HOVER = noone;
|
||||
TEXTBOX_ACTIVE = noone;
|
||||
DIALOG_CLICK = true;
|
||||
|
||||
globalvar ADD_NODE_PAGE, ADD_NODE_W, ADD_NODE_H;
|
||||
|
|
|
@ -47,23 +47,23 @@ function gradient_eval(_gradient, _time, _int = GRADIENT_INTER.smooth) {
|
|||
|
||||
for(var i = 0; i < ds_list_size(_gradient); i++) {
|
||||
var _key = _gradient[| i];
|
||||
if(_key.time >= _time) {
|
||||
if(i == 0)
|
||||
return _gradient[| 0].value;
|
||||
else {
|
||||
var c0 = _gradient[| i - 1].value;
|
||||
if(_int == GRADIENT_INTER.smooth) {
|
||||
var rat = (_time - _gradient[| i - 1].time) / (_gradient[| i].time - _gradient[| i - 1].time);
|
||||
var c1 = _gradient[| i].value;
|
||||
return merge_color(c0, c1, rat);
|
||||
} else if(_int == GRADIENT_INTER.none) {
|
||||
return c0;
|
||||
}
|
||||
}
|
||||
if(_key.time < _time) continue;
|
||||
if(_key.time == _time) return _gradient[| i].value;
|
||||
|
||||
if(i == 0) //before first color
|
||||
return _gradient[| 0].value;
|
||||
|
||||
var c0 = _gradient[| i - 1].value;
|
||||
if(_int == GRADIENT_INTER.smooth) {
|
||||
var rat = (_time - _gradient[| i - 1].time) / (_gradient[| i].time - _gradient[| i - 1].time);
|
||||
var c1 = _gradient[| i].value;
|
||||
return merge_color(c0, c1, rat);
|
||||
} else if(_int == GRADIENT_INTER.none) {
|
||||
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) {
|
||||
|
|
|
@ -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 {
|
||||
none = 0,
|
||||
ctrl = 1,
|
||||
|
@ -6,7 +136,7 @@ enum MOD_KEY {
|
|||
}
|
||||
|
||||
function key_press(_key, _mod) {
|
||||
if(TEXTBOX_ACTIVE) return false;
|
||||
if(WIDGET_CURRENT) return false;
|
||||
|
||||
if(keyboard_check_released(_key) && HOTKEY_MOD == _mod)
|
||||
return true;
|
||||
|
|
|
@ -131,6 +131,15 @@ function LOAD_PATH(path, readonly = false) {
|
|||
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();
|
||||
|
||||
if(!ds_queue_empty(CONNECTION_CONFLICT)) {
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
function luaArgumentRenderer() {
|
||||
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 ty = _y + ui(8);
|
||||
var hh = ui(8);
|
||||
|
@ -10,13 +14,11 @@ function luaArgumentRenderer() {
|
|||
var _typ = _jType.getValue();
|
||||
var _h = 0;
|
||||
|
||||
_jType.editWidget.hover = _hover;
|
||||
_jType.editWidget.active = _focus;
|
||||
_jType.editWidget.setFocus(_focus, _hover);
|
||||
_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];
|
||||
_jName.editWidget.hover = _hover;
|
||||
_jName.editWidget.active = _focus;
|
||||
_jName.editWidget.setFocus(_focus, _hover);
|
||||
_jName.editWidget.draw(tx + ui(128 + 8), ty, _w - ui(128 + 8), _th, _jName.showValue(), _m, _jName.display_type);
|
||||
|
||||
_h += _th + ui(6);
|
||||
|
@ -25,8 +27,7 @@ function luaArgumentRenderer() {
|
|||
draw_text_add(tx + ui(8), ty + _th + ui(6) + ui(6), "Value");
|
||||
|
||||
var _jValue = inputs[| i + 2];
|
||||
_jValue.editWidget.hover = _hover;
|
||||
_jValue.editWidget.active = _focus;
|
||||
_jValue.editWidget.setFocus(_focus, _hover);
|
||||
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);
|
||||
_h += ui(96 + 8);
|
||||
|
@ -39,6 +40,15 @@ function luaArgumentRenderer() {
|
|||
ty += _h;
|
||||
}
|
||||
|
||||
argument_renderer.h = 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +1,8 @@
|
|||
function matrixGrid(_type, _onModify, _unit = noone) constructor {
|
||||
function matrixGrid(_type, _onModify, _unit = noone) : widget() constructor {
|
||||
size = 9;
|
||||
onModify = _onModify;
|
||||
unit = _unit;
|
||||
|
||||
hover = false;
|
||||
active = false;
|
||||
linked = false;
|
||||
b_link = button(function() { linked = !linked; });
|
||||
b_link.icon = THEME.value_link;
|
||||
|
@ -33,12 +31,30 @@ function matrixGrid(_type, _onModify, _unit = noone) constructor {
|
|||
|
||||
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++) {
|
||||
tb[i] = new textBox(_type, onModifySingle[i]);
|
||||
tb[i].slidable = true;
|
||||
}
|
||||
|
||||
static draw = function(_x, _y, _w, _h, _data, _m) {
|
||||
x = _x;
|
||||
y = _y;
|
||||
w = _w;
|
||||
h = _h;
|
||||
|
||||
if(extras && instanceof(extras) == "buttonClass") {
|
||||
extras.hover = hover;
|
||||
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);
|
||||
}
|
||||
|
||||
hover = false;
|
||||
active = false;
|
||||
resetFocus();
|
||||
|
||||
return th;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
var _shape = _data[1];
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
function Node_create_3D_Obj_path(_x, _y, path) {
|
||||
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);
|
||||
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 _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++ ) {
|
||||
var ind = output_display_list[i];
|
||||
|
|
|
@ -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 ])
|
||||
.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 ])
|
||||
.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);
|
||||
|
||||
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)
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "x", "y", "z" ]);
|
||||
|
|
|
@ -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 _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.sy = part.sy + _vect[1] * _sten * str;
|
||||
part.sx = part.sx + _vect[0] * str * _sten;
|
||||
part.sy = part.sy + _vect[1] * str * _sten;
|
||||
|
||||
part.rot += _rot * str;
|
||||
|
||||
|
|
|
@ -2,12 +2,13 @@ function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _grou
|
|||
name = "Attract";
|
||||
node_draw_icon = s_node_vfx_attract;
|
||||
|
||||
inputs[| 4].setVisible(false, false);
|
||||
|
||||
function onAffect(part, str) {
|
||||
var _area = current_data[1];
|
||||
var _area_x = _area[0];
|
||||
var _area_y = _area[1];
|
||||
|
||||
var _vect = current_data[4];
|
||||
var _sten = current_data[5];
|
||||
var _rot_range = current_data[6];
|
||||
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 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(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s));
|
||||
else part.scy += sign(part.scy) * scy_s;
|
||||
|
||||
if(scx_s < 0) part.sc_sx = lerp_linear(part.sc_sx, 0, abs(scx_s));
|
||||
else part.sc_sx += sign(part.sc_sx) * scx_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;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,10 @@ function Node_VFX_Destroy(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _grou
|
|||
name = "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) {
|
||||
var _sten = current_data[5];
|
||||
|
||||
|
|
|
@ -2,12 +2,13 @@ function Node_VFX_Repel(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group)
|
|||
name = "Repel";
|
||||
node_draw_icon = s_node_vfx_repel;
|
||||
|
||||
inputs[| 4].setVisible(false, false);
|
||||
|
||||
function onAffect(part, str) {
|
||||
var _area = current_data[1];
|
||||
var _area_x = _area[0];
|
||||
var _area_y = _area[1];
|
||||
|
||||
var _vect = current_data[4];
|
||||
var _sten = current_data[5];
|
||||
var _rot_range = current_data[6];
|
||||
var _sca_range = current_data[7];
|
||||
|
|
|
@ -2,8 +2,14 @@ function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _g
|
|||
name = "Turbulence";
|
||||
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) {
|
||||
var _vect = current_data[4];
|
||||
var _sten = current_data[5];
|
||||
var _rot_range = current_data[6];
|
||||
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 t_scale = current_data[10];
|
||||
var per = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 4, part.seed) - 0.5) * 2;
|
||||
per *= str;
|
||||
|
||||
part.x = part.x + _vect[0] * per;
|
||||
part.y = part.y + _vect[1] * per;
|
||||
|
||||
part.rot += _rot * per;
|
||||
var t_scale = current_data[8];
|
||||
var perx = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 1, part.seed) - 0.5) * 2;
|
||||
var pery = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 1, part.seed + 100) - 0.5) * 2;
|
||||
|
||||
part.x += perx * str * _sten;
|
||||
part.y += pery * str * _sten;
|
||||
|
||||
part.rot += _rot * perx;
|
||||
|
||||
var scx_s = _sca[0] * 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(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s));
|
||||
else part.scy += sign(part.scy) * scy_s;
|
||||
|
||||
if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(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));
|
||||
else if(scy_s > 0) part.scy += sign(part.scy) * scy_s;
|
||||
}
|
||||
}
|
|
@ -2,24 +2,38 @@ function Node_VFX_Vortex(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group
|
|||
name = "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) {
|
||||
var _area = current_data[1];
|
||||
var _area_x = _area[0];
|
||||
var _area_y = _area[1];
|
||||
|
||||
var _vect = current_data[4];
|
||||
var _sten = current_data[5];
|
||||
var _rot_range = current_data[6];
|
||||
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 _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ];
|
||||
|
||||
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);
|
||||
part.y = part.y + lengthdir_y(_sten * str, dirr);
|
||||
|
||||
|
||||
var dirr = point_direction(_area_x, _area_y, pv[0], pv[1]) + (_clkw? 90 : -90);
|
||||
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;
|
||||
|
||||
var scx_s = _sca[0] * str;
|
||||
|
|
|
@ -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 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector_range);
|
||||
|
||||
inputs[| 8] = nodeValue(8, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
|
||||
|
||||
input_display_list = [ 0,
|
||||
["Area", false], 1, 2, 3,
|
||||
["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));
|
||||
} else if(_area_t == AREA_SHAPE.elipse) {
|
||||
var _dirr = point_direction(_area_x, _area_y, pv[0], pv[1]);
|
||||
var _epx = _area_x + lengthdir_x(_area_w / 2, _dirr);
|
||||
var _epy = _area_y + lengthdir_y(_area_h / 2, _dirr);
|
||||
var _epx = _area_x + lengthdir_x(_area_w, _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);
|
||||
_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) {
|
||||
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)
|
||||
str = 1;
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@ function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) c
|
|||
color = COLORS.node_blend_vfx;
|
||||
ungroupable = false;
|
||||
|
||||
if(!LOADING && !APPENDING) {
|
||||
if(!LOADING && !APPENDING && !CLONING) {
|
||||
var input = nodeBuild("Node_VFX_Spawner", -256, -32, self);
|
||||
var renderer = nodeBuild("Node_VFX_Renderer", 256, -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]);
|
||||
}
|
||||
}
|
|
@ -57,20 +57,25 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct
|
|||
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;
|
||||
case PARTICLE_BLEND_MODE.normal :
|
||||
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++ ) {
|
||||
var parts = inputs[| i].getValue(_time);
|
||||
if(!ds_exists(parts, ds_type_list)) continue;
|
||||
|
||||
for(var j = 0; j < ds_list_size(parts); j++) {
|
||||
if(!parts[| j].active) continue;
|
||||
parts[| j].draw(_exact);
|
||||
for(var j = 0; j < array_length(parts); j++) {
|
||||
if(!parts[j].active) continue;
|
||||
parts[j].draw(_exact, surf_w, surf_h);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
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) {
|
||||
part.step_int = inputs[| input_len + 1].getValue(_time);
|
||||
}
|
||||
|
||||
static onPartCreate = function(part) {
|
||||
var pv = part.getPivot();
|
||||
|
||||
static onPartCreate = function(part) {
|
||||
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++ ) {
|
||||
var _n = vt.value_to[| i];
|
||||
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) {
|
||||
var pv = part.getPivot();
|
||||
|
||||
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++ ) {
|
||||
var _n = vt.value_to[| i];
|
||||
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) {
|
||||
var pv = part.getPivot();
|
||||
|
||||
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++ ) {
|
||||
var _n = vt.value_to[| i];
|
||||
if(_n.value_from != vt) continue;
|
||||
|
|
|
@ -4,7 +4,7 @@ function Node_Anim_Curve(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c
|
|||
previewable = false;
|
||||
|
||||
w = 96;
|
||||
min_h = 0;
|
||||
|
||||
|
||||
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)
|
||||
|
|