Palette sort, decimal precision

This commit is contained in:
Tanasart 2023-02-17 10:48:54 +07:00
parent 26d4f33132
commit 92d33dc1ea
22 changed files with 170 additions and 75 deletions

View file

@ -178,6 +178,7 @@
{"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":8,}, {"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":8,},
{"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":30,}, {"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":30,},
{"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,}, {"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,},
{"id":{"name":"node_palette_sort","path":"scripts/node_palette_sort/node_palette_sort.yy",},"order":9,},
{"id":{"name":"node_path_wave","path":"scripts/node_path_wave/node_path_wave.yy",},"order":28,}, {"id":{"name":"node_path_wave","path":"scripts/node_path_wave/node_path_wave.yy",},"order":28,},
{"id":{"name":"s_node_HSV","path":"sprites/s_node_HSV/s_node_HSV.yy",},"order":44,}, {"id":{"name":"s_node_HSV","path":"sprites/s_node_HSV/s_node_HSV.yy",},"order":44,},
{"id":{"name":"s_node_3d_cone","path":"sprites/s_node_3d_cone/s_node_3d_cone.yy",},"order":9,}, {"id":{"name":"s_node_3d_cone","path":"sprites/s_node_3d_cone/s_node_3d_cone.yy",},"order":9,},
@ -213,7 +214,7 @@
{"id":{"name":"fd_draw_surface_to_collision_mask_surface","path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",},"order":2,}, {"id":{"name":"fd_draw_surface_to_collision_mask_surface","path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",},"order":2,},
{"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":3,}, {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},"order":3,},
{"id":{"name":"sh_fd_calculate_pressure_jacobi_glsl","path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",},"order":8,}, {"id":{"name":"sh_fd_calculate_pressure_jacobi_glsl","path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",},"order":8,},
{"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":5,}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},"order":7,},
{"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,}, {"id":{"name":"node_transform","path":"scripts/node_transform/node_transform.yy",},"order":0,},
{"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,}, {"id":{"name":"curveBox","path":"scripts/curveBox/curveBox.yy",},"order":8,},
{"id":{"name":"preview_overlay_vector","path":"scripts/preview_overlay_vector/preview_overlay_vector.yy",},"order":2,}, {"id":{"name":"preview_overlay_vector","path":"scripts/preview_overlay_vector/preview_overlay_vector.yy",},"order":2,},
@ -288,7 +289,7 @@
{"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,}, {"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,},
{"id":{"name":"node_string_split","path":"scripts/node_string_split/node_string_split.yy",},"order":14,}, {"id":{"name":"node_string_split","path":"scripts/node_string_split/node_string_split.yy",},"order":14,},
{"id":{"name":"meta_data","path":"scripts/meta_data/meta_data.yy",},"order":11,}, {"id":{"name":"meta_data","path":"scripts/meta_data/meta_data.yy",},"order":11,},
{"id":{"name":"node_find_pixel","path":"scripts/node_find_pixel/node_find_pixel.yy",},"order":0,}, {"id":{"name":"node_find_pixel","path":"scripts/node_find_pixel/node_find_pixel.yy",},"order":1,},
{"id":{"name":"node_scatter_points","path":"scripts/node_scatter_points/node_scatter_points.yy",},"order":24,}, {"id":{"name":"node_scatter_points","path":"scripts/node_scatter_points/node_scatter_points.yy",},"order":24,},
{"id":{"name":"o_dialog_lua_reference","path":"objects/o_dialog_lua_reference/o_dialog_lua_reference.yy",},"order":5,}, {"id":{"name":"o_dialog_lua_reference","path":"objects/o_dialog_lua_reference/o_dialog_lua_reference.yy",},"order":5,},
{"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},"order":4,}, {"id":{"name":"node_surface_data","path":"scripts/node_surface_data/node_surface_data.yy",},"order":4,},
@ -325,7 +326,7 @@
{"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":9,}, {"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":9,},
{"id":{"name":"color_function","path":"scripts/color_function/color_function.yy",},"order":9,}, {"id":{"name":"color_function","path":"scripts/color_function/color_function.yy",},"order":9,},
{"id":{"name":"fd_rectangle_set_pressure_size","path":"scripts/fd_rectangle_set_pressure_size/fd_rectangle_set_pressure_size.yy",},"order":11,}, {"id":{"name":"fd_rectangle_set_pressure_size","path":"scripts/fd_rectangle_set_pressure_size/fd_rectangle_set_pressure_size.yy",},"order":11,},
{"id":{"name":"node_color_data","path":"scripts/node_color_data/node_color_data.yy",},"order":4,}, {"id":{"name":"node_color_data","path":"scripts/node_color_data/node_color_data.yy",},"order":6,},
{"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":5,}, {"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":5,},
{"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":8,}, {"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":8,},
{"id":{"name":"node_canvas","path":"scripts/node_canvas/node_canvas.yy",},"order":5,}, {"id":{"name":"node_canvas","path":"scripts/node_canvas/node_canvas.yy",},"order":5,},
@ -383,11 +384,11 @@
{"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":27,}, {"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":27,},
{"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,}, {"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,},
{"id":{"name":"node_vector","path":"scripts/node_vector/node_vector.yy",},"order":0,}, {"id":{"name":"node_vector","path":"scripts/node_vector/node_vector.yy",},"order":0,},
{"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":2,}, {"id":{"name":"node_palette","path":"scripts/node_palette/node_palette.yy",},"order":4,},
{"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,}, {"id":{"name":"buttonColor","path":"scripts/buttonColor/buttonColor.yy",},"order":3,},
{"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,}, {"id":{"name":"notification_system","path":"scripts/notification_system/notification_system.yy",},"order":6,},
{"id":{"name":"sh_shadow_cast","path":"shaders/sh_shadow_cast/sh_shadow_cast.yy",},"order":0,}, {"id":{"name":"sh_shadow_cast","path":"shaders/sh_shadow_cast/sh_shadow_cast.yy",},"order":0,},
{"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":6,}, {"id":{"name":"node_color_from_hsv","path":"scripts/node_color_from_hsv/node_color_from_hsv.yy",},"order":8,},
{"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,}, {"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":6,},
{"id":{"name":"node_boolean","path":"scripts/node_boolean/node_boolean.yy",},"order":17,}, {"id":{"name":"node_boolean","path":"scripts/node_boolean/node_boolean.yy",},"order":17,},
{"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,}, {"id":{"name":"node_grid_tri","path":"scripts/node_grid_tri/node_grid_tri.yy",},"order":21,},
@ -526,7 +527,7 @@
{"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":18,}, {"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":18,},
{"id":{"name":"s_node_scatter_point","path":"sprites/s_node_scatter_point/s_node_scatter_point.yy",},"order":4,}, {"id":{"name":"s_node_scatter_point","path":"sprites/s_node_scatter_point/s_node_scatter_point.yy",},"order":4,},
{"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,}, {"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,},
{"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":3,}, {"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":5,},
{"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":17,}, {"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":17,},
{"id":{"name":"fd_rectangle_assure_surfaces_exist","path":"scripts/fd_rectangle_assure_surfaces_exist/fd_rectangle_assure_surfaces_exist.yy",},"order":2,}, {"id":{"name":"fd_rectangle_assure_surfaces_exist","path":"scripts/fd_rectangle_assure_surfaces_exist/fd_rectangle_assure_surfaces_exist.yy",},"order":2,},
{"id":{"name":"fd_rectangle_material_surface_was_created","path":"scripts/fd_rectangle_material_surface_was_created/fd_rectangle_material_surface_was_created.yy",},"order":13,}, {"id":{"name":"fd_rectangle_material_surface_was_created","path":"scripts/fd_rectangle_material_surface_was_created/fd_rectangle_material_surface_was_created.yy",},"order":13,},
@ -641,7 +642,7 @@
{"id":{"name":"node_convolution","path":"scripts/node_convolution/node_convolution.yy",},"order":5,}, {"id":{"name":"node_convolution","path":"scripts/node_convolution/node_convolution.yy",},"order":5,},
{"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":35,}, {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":35,},
{"id":{"name":"s_node_destray","path":"sprites/s_node_destray/s_node_destray.yy",},"order":16,}, {"id":{"name":"s_node_destray","path":"sprites/s_node_destray/s_node_destray.yy",},"order":16,},
{"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":1,}, {"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":3,},
{"id":{"name":"s_node_fluidSim_update","path":"sprites/s_node_fluidSim_update/s_node_fluidSim_update.yy",},"order":5,}, {"id":{"name":"s_node_fluidSim_update","path":"sprites/s_node_fluidSim_update/s_node_fluidSim_update.yy",},"order":5,},
{"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},"order":1,}, {"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},"order":1,},
{"id":{"name":"fd_rectangle_inherit_velocity","path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",},"order":12,}, {"id":{"name":"fd_rectangle_inherit_velocity","path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",},"order":12,},
@ -812,6 +813,7 @@
{"id":{"name":"_f_h3","path":"fonts/_f_h3/_f_h3.yy",},"order":3,}, {"id":{"name":"_f_h3","path":"fonts/_f_h3/_f_h3.yy",},"order":3,},
{"id":{"name":"s_node_math","path":"sprites/s_node_math/s_node_math.yy",},"order":1,}, {"id":{"name":"s_node_math","path":"sprites/s_node_math/s_node_math.yy",},"order":1,},
{"id":{"name":"node_iterator_index","path":"scripts/node_iterator_index/node_iterator_index.yy",},"order":2,}, {"id":{"name":"node_iterator_index","path":"scripts/node_iterator_index/node_iterator_index.yy",},"order":2,},
{"id":{"name":"s_node_palette_sort","path":"sprites/s_node_palette_sort/s_node_palette_sort.yy",},"order":14,},
{"id":{"name":"node_greyscale","path":"scripts/node_greyscale/node_greyscale.yy",},"order":5,}, {"id":{"name":"node_greyscale","path":"scripts/node_greyscale/node_greyscale.yy",},"order":5,},
{"id":{"name":"node_color_adjustment","path":"scripts/node_color_adjustment/node_color_adjustment.yy",},"order":1,}, {"id":{"name":"node_color_adjustment","path":"scripts/node_color_adjustment/node_color_adjustment.yy",},"order":1,},
{"id":{"name":"s_node_array_reverse","path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",},"order":8,}, {"id":{"name":"s_node_array_reverse","path":"sprites/s_node_array_reverse/s_node_array_reverse.yy",},"order":8,},
@ -863,7 +865,7 @@
{"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,}, {"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,},
{"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,}, {"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,},
{"id":{"name":"s_node_palette_extract","path":"sprites/s_node_palette_extract/s_node_palette_extract.yy",},"order":12,}, {"id":{"name":"s_node_palette_extract","path":"sprites/s_node_palette_extract/s_node_palette_extract.yy",},"order":12,},
{"id":{"name":"node_palette_replacement","path":"scripts/node_palette_replacement/node_palette_replacement.yy",},"order":0,}, {"id":{"name":"node_palette_replacement","path":"scripts/node_palette_replacement/node_palette_replacement.yy",},"order":2,},
{"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":19,}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":19,},
{"id":{"name":"s_node_bokeh","path":"sprites/s_node_bokeh/s_node_bokeh.yy",},"order":49,}, {"id":{"name":"s_node_bokeh","path":"sprites/s_node_bokeh/s_node_bokeh.yy",},"order":49,},
{"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},"order":6,}, {"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},"order":6,},
@ -1323,7 +1325,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_search_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_search_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_sequence_control_strip7.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_sequence_control_strip7.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_slider.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_slider.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_sort_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_bullet_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_text_bullet_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_clock.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_clock.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_graph.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_graph.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -1432,9 +1433,7 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_badge.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"workshop_badge.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_project.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_project.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_workshop_update.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_workshop_update.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_file_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_file_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"magick.exe","CopyToMask":-1,"filePath":"datafiles/ImageMagick",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"magick.exe","CopyToMask":-1,"filePath":"datafiles/ImageMagick",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"0 introduction.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"0 introduction.pxc","CopyToMask":-1,"filePath":"datafiles/Getting started",},
@ -1447,6 +1446,10 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Cards flipping.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Cards flipping.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Dice.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Dice.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Shiny gem.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Shiny gem.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
{"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_sort_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_reverse.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",},
], ],
"MetaData": { "MetaData": {
"IDEVersion": "2022.11.1.56", "IDEVersion": "2022.11.1.56",

View file

@ -9,11 +9,11 @@
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_title); draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_title);
draw_text(dialog_x + ui(16), dialog_y + ui(32), get_text("name", "Name")); draw_text(dialog_x + ui(16), dialog_y + ui(32), get_text("name", "Name"));
var is_author = !meta.steam || meta.author_steam_id == 0 || meta.author_steam_id == STEAM_USER_ID; //var is_author = !meta.steam || meta.author_steam_id == 0 || meta.author_steam_id == STEAM_USER_ID;
t_desc.interactable = !STEAM_UGC_ITEM_UPLOADING; t_desc.interactable = !STEAM_UGC_ITEM_UPLOADING;
t_auth.interactable = !STEAM_UGC_ITEM_UPLOADING && is_author; t_auth.interactable = !STEAM_UGC_ITEM_UPLOADING;
t_cont.interactable = !STEAM_UGC_ITEM_UPLOADING && is_author; t_cont.interactable = !STEAM_UGC_ITEM_UPLOADING;
t_tags.interactable = !STEAM_UGC_ITEM_UPLOADING; t_tags.interactable = !STEAM_UGC_ITEM_UPLOADING;
t_alias.interactable = !STEAM_UGC_ITEM_UPLOADING; t_alias.interactable = !STEAM_UGC_ITEM_UPLOADING;
tb_name.interactable = !STEAM_UGC_ITEM_UPLOADING; tb_name.interactable = !STEAM_UGC_ITEM_UPLOADING;

View file

@ -105,38 +105,6 @@ event_inherited();
#endregion #endregion
#region tools #region tools
function __sortBright(c1, c2) {
var r1 = color_get_red(c1);
var g1 = color_get_green(c1);
var b1 = color_get_blue(c1);
var l1 = 0.299 * r1 + 0.587 * g1 + 0.114 * b1;
var r2 = color_get_red(c2);
var g2 = color_get_green(c2);
var b2 = color_get_blue(c2);
var l2 = 0.299 * r2 + 0.587 * g2 + 0.224 * b2;
return l2 - l1;
}
function __sortDark(c1, c2) {
return -__sortBright(c1, c2);
}
function __sortHue(c1, c2) {
var h1 = color_get_hue(c1);
var s1 = color_get_saturation(c1);
var v1 = color_get_value(c1);
var l1 = 0.8 * h1 + 0.1 * s1 + 0.1 * v1;
var h2 = color_get_hue(c2);
var s2 = color_get_saturation(c2);
var v2 = color_get_value(c2);
var l2 = 0.8 * h2 + 0.1 * s2 + 0.1 * v2;
return l2 - l1;
}
function sortPalette(sortFunc) { function sortPalette(sortFunc) {
array_sort(palette, sortFunc); array_sort(palette, sortFunc);
onApply(palette); onApply(palette);

View file

@ -95,11 +95,19 @@ if palette == 0 exit;
var dia = dialogCall(o_dialog_menubox, bx + ui(32), by); var dia = dialogCall(o_dialog_menubox, bx + ui(32), by);
dia.setMenu([ dia.setMenu([
[ get_text("palette_editor_sort_brighter", "Brighter"), function() { sortPalette(__sortBright); } ], [ get_text("palette_editor_sort_brighter", "Brighter"), function() { sortPalette(__sortBright); } ],
[ get_text("palette_editor_sort_darker", "Darker"), function() { sortPalette(__sortDark); } ], [ get_text("palette_editor_sort_darker", "Darker"), function() { sortPalette(__sortDark); } ],
-1,
[ get_text("palette_editor_sort_hue", "Hue"), function() { sortPalette(__sortHue); } ], [ get_text("palette_editor_sort_hue", "Hue"), function() { sortPalette(__sortHue); } ],
[ get_text("palette_editor_sort_sat", "Saturation"), function() { sortPalette(__sortSat); } ],
[ get_text("palette_editor_sort_val", "Value"), function() { sortPalette(__sortVal); } ],
]); ]);
} }
bx -= ui(32);
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, get_text("palette_editor_reverse", "Reverse palette"), THEME.reverse) == 2) {
palette = array_reverse(palette);
onApply(palette);
}
bx -= ui(32); bx -= ui(32);
#endregion #endregion

View file

@ -12,7 +12,7 @@
case VALUE_TYPE.integer : case VALUE_TYPE.integer :
case VALUE_TYPE.text : case VALUE_TYPE.text :
case VALUE_TYPE.path : case VALUE_TYPE.path :
draw_tooltip_text(string(content)); draw_tooltip_text(string_real(content));
break; break;
case VALUE_TYPE.boolean : case VALUE_TYPE.boolean :
draw_tooltip_text(content? get_text("true", "True") : get_text("false", "False")); draw_tooltip_text(content? get_text("true", "True") : get_text("false", "False"));

View file

@ -51,4 +51,24 @@ function color_diff(c1, c2) {
var dist = sqrt(sqr(_c1_r - _c2_r) + sqr(_c1_g - _c2_g) + sqr(_c1_b - _c2_b) + sqr(_c1_a - _c2_a)); var dist = sqrt(sqr(_c1_r - _c2_r) + sqr(_c1_g - _c2_g) + sqr(_c1_b - _c2_b) + sqr(_c1_a - _c2_a));
return dist; return dist;
} }
#region sorting functions
function __valHSV(c, h, s, v) { return color_get_hue(c) * h + color_get_saturation(c) * s + color_get_value(c) * v; }
function __valRGB(c, r, g, b) { return color_get_red(c) * r + color_get_green(c) * g + color_get_blue(c) * b; }
function __sortBright(c1, c2) {
var l1 = 0.299 * color_get_red(c1) + 0.587 * color_get_green(c1) + 0.114 * color_get_blue(c1);
var l2 = 0.299 * color_get_red(c2) + 0.587 * color_get_green(c2) + 0.114 * color_get_blue(c2);
return l2 - l1;
}
function __sortDark(c1, c2) { return -__sortBright(c1, c2); }
function __sortHue(c1, c2) { return __valHSV(c2, 65536, 256, 1) - __valHSV(c1, 65536, 256, 1); }
function __sortSat(c1, c2) { return __valHSV(c2, 256, 65536, 1) - __valHSV(c1, 256, 65536, 1); }
function __sortVal(c1, c2) { return __valHSV(c2, 256, 1, 65536) - __valHSV(c1, 256, 1, 65536); }
function __sortRed(c1, c2) { return __valRGB(c2, 65536, 256, 1) - __valRGB(c1, 65536, 256, 1); }
function __sortGreen(c1, c2) { return __valRGB(c2, 1, 65536, 256) - __valRGB(c1, 1, 65536, 256); }
function __sortBlue(c1, c2) { return __valRGB(c2, 256, 1, 65536) - __valRGB(c1, 256, 1, 65536); }
#endregion

View file

@ -30,7 +30,7 @@
globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING;
VERSION = 1130; VERSION = 1130;
SAVEFILE_VERSION = 1300; SAVEFILE_VERSION = 1300;
VERSION_STRING = "1.13"; VERSION_STRING = "1.13.pr5";
globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT; globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT;
@ -125,8 +125,8 @@
#macro RETURN_ON_REST if(!ANIMATOR.is_playing || !ANIMATOR.frame_progress) return; #macro RETURN_ON_REST if(!ANIMATOR.is_playing || !ANIMATOR.frame_progress) return;
function print(str) { function print(str) {
show_debug_message(str); show_debug_message(string_real(str));
noti_status(str); noti_status(string_real(str));
} }
function printIf(cond, log) { function printIf(cond, log) {

View file

@ -11,7 +11,7 @@ function Node_Array_Sort(_x, _y, _group = -1) : Node(_x, _y, _group) constructor
.setDisplay(VALUE_DISPLAY.enum_button, [ "Ascending", "Descending" ]) .setDisplay(VALUE_DISPLAY.enum_button, [ "Ascending", "Descending" ])
.rejectArray(); .rejectArray();
outputs[| 0] = nodeValue("Shuffled array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []); outputs[| 0] = nodeValue("Sorted array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
static update = function(frame = ANIMATOR.current_frame) { static update = function(frame = ANIMATOR.current_frame) {
var arr = inputs[| 0].getValue(); var arr = inputs[| 0].getValue();

View file

@ -42,7 +42,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co
layer_remove = -1; layer_remove = -1;
layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
var amo = (ds_list_size(inputs) - input_fix_len) / data_length - 1; var amo = (ds_list_size(inputs) - input_fix_len) / data_length - 1;
if(array_length(current_data) != ds_list_size(inputs)) return; if(array_length(current_data) != ds_list_size(inputs)) return 0;
var lh = 32; var lh = 32;
var _h = 8 + max(1, amo) * (lh + 4) + 8; var _h = 8 + max(1, amo) * (lh + 4) + 8;

View file

@ -879,11 +879,11 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
var _type = instanceof(self); var _type = instanceof(self);
var _node = nodeBuild(_type, x, y, target); var _node = nodeBuild(_type, x, y, target);
CLONING = false; CLONING = false;
LOADING_VERSION = SAVEFILE_VERSION;
if(!_node) return; if(!_node) return;
var _nid = _node.node_id; var _nid = _node.node_id;
_node.deserialize(serialize()); _node.deserialize(serialize());
_node.postDeserialize(); _node.postDeserialize();
_node.applyDeserialize(); _node.applyDeserialize();
@ -915,10 +915,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor {
ds_map_add_map(_map, "attri", attributeSerialize()); ds_map_add_map(_map, "attri", attributeSerialize());
var _inputs = ds_list_create(); var _inputs = ds_list_create();
for(var i = 0; i < ds_list_size(inputs); i++) { for(var i = 0; i < ds_list_size(inputs); i++)
ds_list_add(_inputs, inputs[| i].serialize(scale, preset)); ds_list_add_map(_inputs, inputs[| i].serialize(scale, preset));
ds_list_mark_as_map(_inputs, i);
}
ds_map_add_list(_map, "inputs", _inputs); ds_map_add_list(_map, "inputs", _inputs);
doSerialize(_map); doSerialize(_map);

View file

@ -185,7 +185,7 @@ function valueAnimator(_val, _prop) constructor {
switch(prop.type) { switch(prop.type) {
case VALUE_TYPE.integer : case VALUE_TYPE.integer :
case VALUE_TYPE.float : return toNumber(_val); case VALUE_TYPE.float : return toNumber(_val);
case VALUE_TYPE.text : return string(_val); case VALUE_TYPE.text : return string_real(_val);
case VALUE_TYPE.surface : case VALUE_TYPE.surface :
if(is_string(_val)) if(is_string(_val))
return get_asset(_val); return get_asset(_val);

View file

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

View file

@ -0,0 +1,54 @@
function Node_Palette_Sort(_x, _y, _group = -1) : Node(_x, _y, _group) constructor {
name = "Sort Palette";
previewable = false;
w = 96;
inputs[| 0] = nodeValue("Palette in", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [])
.setDisplay(VALUE_DISPLAY.palette)
.setVisible(true, true);
inputs[| 1] = nodeValue("Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Brightness", "Hue (HSV)", "Saturation (SHV)", "Value (VHS)", "Red (RGB)", "Green (GBR)", "Blue (BRG)" ])
.rejectArray();
inputs[| 2] = nodeValue("Reverse", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
outputs[| 0] = nodeValue("Sorted palette", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, [])
.setDisplay(VALUE_DISPLAY.palette);
static update = function(frame = ANIMATOR.current_frame) {
var _arr = inputs[| 0].getValue();
var _ord = inputs[| 1].getValue();
var _rev = inputs[| 2].getValue();
if(!is_array(_arr)) return;
var _pal = array_clone(_arr);
switch(_ord) {
case 0 : array_sort(_pal, __sortBright); break;
case 1 : array_sort(_pal, __sortHue); break;
case 2 : array_sort(_pal, __sortSat); break;
case 3 : array_sort(_pal, __sortVal); break;
case 4 : array_sort(_pal, __sortRed); break;
case 5 : array_sort(_pal, __sortGreen); break;
case 6 : array_sort(_pal, __sortBlue); break;
}
if(_rev) _pal = array_reverse(_pal);
outputs[| 0].setValue(_pal);
}
static onDrawNode = function(xx, yy, _mx, _my, _s) {
var bbox = drawGetBbox(xx, yy, _s);
if(bbox.h < 1) return;
var pal = outputs[| 0].getValue();
if(array_length(pal) && is_array(pal[0])) return;
drawPalette(pal, bbox.x0, bbox.y0, bbox.w, bbox.h);
}
}

View file

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

View file

@ -413,6 +413,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
ds_list_add(color, "Palettes"); ds_list_add(color, "Palettes");
addNodeObject(color, "Palette", s_node_palette, "Node_Palette", [1, Node_Palette]); addNodeObject(color, "Palette", s_node_palette, "Node_Palette", [1, Node_Palette]);
addNodeObject(color, "Sort Palette", s_node_palette_sort, "Node_Palette_Sort", [1, Node_Palette_Sort]).set_version(1130);
addNodeObject(color, "Palette Extract", s_node_palette_extract, "Node_Palette_Extract", [1, Node_Palette_Extract]).set_version(1100); addNodeObject(color, "Palette Extract", s_node_palette_extract, "Node_Palette_Extract", [1, Node_Palette_Extract]).set_version(1100);
addNodeObject(color, "Palette Replace", s_node_palette_replace, "Node_Palette_Replace", [1, Node_Palette_Replace]).set_version(1120); addNodeObject(color, "Palette Replace", s_node_palette_replace, "Node_Palette_Replace", [1, Node_Palette_Replace]).set_version(1120);

View file

@ -63,7 +63,7 @@ function Node_Shadow_Cast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group)
inputs[| 9] = nodeValue("Render solid", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true); inputs[| 9] = nodeValue("Render solid", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 10] = nodeValue("Use BG color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "If checked, BG color will be used as shadow caster."); inputs[| 10] = nodeValue("Use BG color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "If checked, background color will be used as shadow caster.");
inputs[| 11] = nodeValue("BG threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) inputs[| 11] = nodeValue("BG threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]); .setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
@ -99,6 +99,7 @@ function Node_Shadow_Cast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group)
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
if(array_length(current_data) != ds_list_size(inputs)) return;
var _type = current_data[5]; var _type = current_data[5];
if(_type == 0) { if(_type == 0) {

View file

@ -770,7 +770,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
} }
if(type == VALUE_TYPE.text) if(type == VALUE_TYPE.text)
return string(value); return string_real(value);
if(typeFrom == VALUE_TYPE.integer && type == VALUE_TYPE.color) if(typeFrom == VALUE_TYPE.integer && type == VALUE_TYPE.color)
return make_color_hsv(0, 0, value); return make_color_hsv(0, 0, value);
@ -1057,7 +1057,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
static getShowString = function() { static getShowString = function() {
var val = showValue(); var val = showValue();
return string(val); return string_real(val);
} }
static setString = function(str) { static setString = function(str) {

View file

@ -123,9 +123,9 @@ function Panel_Inspector() : PanelContent() constructor {
} }
if(i == 0) { if(i == 0) {
var is_author = meta.author_steam_id == 0 || meta.author_steam_id == STEAM_USER_ID; //var is_author = !meta.steam || (meta.author_steam_id == 0 || meta.author_steam_id == STEAM_USER_ID);
meta.displays[1][1].interactable = is_author; //meta.displays[1][1].interactable = is_author;
meta.displays[2][1].interactable = is_author; //meta.displays[2][1].interactable = is_author;
current_meta = meta; current_meta = meta;
for( var j = 0; j < array_length(meta.displays); j++ ) { for( var j = 0; j < array_length(meta.displays); j++ ) {

View file

@ -29,4 +29,22 @@ function string_partial_match(str, key) {
} }
return -9999; return -9999;
}
function string_real(val) {
if(is_string(val)) return val;
if(is_array(val)) {
var s = "[";
for( var i = 0; i < array_length(val); i++ )
s += (i? ", " : "") + string_real(val[i]);
return s + "]";
}
var pres;
for( pres = 0; pres < 5; pres++ ) {
if(frac(val * power(10, pres)) == 0)
break;
}
return string_format(val, -1, pres);
} }

View file

@ -252,6 +252,7 @@ function textArea(_input, _onModify, _extras = noone) : textInput(_input, _onMod
} }
static display_text = function(_x, _y, _text, _w, _mx = -1, _my = -1) { static display_text = function(_x, _y, _text, _w, _mx = -1, _my = -1) {
_text = string_real(_text);
if(_w != _prev_width) { if(_w != _prev_width) {
_prev_width = _w; _prev_width = _w;
cut_line(); cut_line();
@ -341,6 +342,7 @@ function textArea(_input, _onModify, _extras = noone) : textInput(_input, _onMod
y = _y; y = _y;
w = _w; w = _w;
h = _h; h = _h;
_text = string_real(_text);
_current_text = _text; _current_text = _text;
if(extras && instanceof(extras) == "buttonClass") { if(extras && instanceof(extras) == "buttonClass") {
@ -575,7 +577,7 @@ function textArea(_input, _onModify, _extras = noone) : textInput(_input, _onMod
draw_sprite_stretched(THEME.textbox, 0, _x, _y, _w, hh); draw_sprite_stretched(THEME.textbox, 0, _x, _y, _w, hh);
} }
display_text(tx, _y + ui(7), string(_text), _w - ui(4)); display_text(tx, _y + ui(7), _text, _w - ui(4));
} }
resetFocus(); resetFocus();

View file

@ -38,7 +38,7 @@ function textArrayBox(arraySet, data) : widget() constructor {
draw_sprite_stretched(THEME.textbox, 2, _x, _y, _w, th); draw_sprite_stretched(THEME.textbox, 2, _x, _y, _w, th);
} else { } else {
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + th)) { if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + th)) {
draw_sprite_stretched(THEME.textbox, 1, _x, _y, _w, th); draw_sprite_stretched_ext(THEME.textbox, 1, _x, _y, _w, th, c_white, 0.5 + !hide * 0.5);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
with(dialogCall(o_dialog_arrayBox, _rx + _x, _ry + _y + th)) { with(dialogCall(o_dialog_arrayBox, _rx + _x, _ry + _y + th)) {
arrayBox = other; arrayBox = other;

View file

@ -86,7 +86,7 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
static getDisplayText = function(val) { static getDisplayText = function(val) {
if(input == TEXTBOX_INPUT.text) return val; if(input == TEXTBOX_INPUT.text) return val;
return string(val); return string_real(val);
} }
static editText = function() { static editText = function() {
@ -193,6 +193,7 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
} }
static display_text = function(_x, _y, _text, _w, _format, _m = -1) { static display_text = function(_x, _y, _text, _w, _format, _m = -1) {
_text = string_real(_text);
BLEND_OVERRIDE; BLEND_OVERRIDE;
if(!interactable) draw_set_alpha(0.5); if(!interactable) draw_set_alpha(0.5);
@ -306,6 +307,7 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
y = _y; y = _y;
w = _w; w = _w;
h = _h; h = _h;
_text = string_real(_text);
_current_text = _text; _current_text = _text;
if(extras && instanceof(extras) == "buttonClass") { if(extras && instanceof(extras) == "buttonClass") {
@ -340,7 +342,7 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
if(key_mod_press(CTRL)) if(key_mod_press(CTRL))
spd *= 10; spd *= 10;
_input_text = _input_text + spd; _input_text = string_real(toNumber(_input_text) + spd);
if(apply()) if(apply())
UNDO_HOLDING = true; UNDO_HOLDING = true;
@ -424,9 +426,8 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
draw_set_alpha(1); draw_set_alpha(1);
if(mouse_press(mb_left, active)) { if(mouse_press(mb_left, active)) {
var ktxt = _input_text; if(key_mod_press(ALT)) _input_text = string_real(toNumber(_input_text) / 2);
if(key_mod_press(ALT)) _input_text = string(toNumber(ktxt) / 2); else _input_text = string_real(toNumber(_input_text) * 2);
else _input_text = string(toNumber(ktxt) * 2);
apply(); apply();
} }
} }
@ -472,8 +473,6 @@ function textBox(_input, _onModify, _extras = noone) : textInput(_input, _onModi
disp_x_to += _w - ui(16); disp_x_to += _w - ui(16);
if(cursor_pos_to > _x + _w - ui(16)) if(cursor_pos_to > _x + _w - ui(16))
disp_x_to -= _w - ui(16); disp_x_to -= _w - ui(16);
//print("Cursor x : " + string(cursor_pos_to) + ", Display x : " + string(_x) + ", to x : " + string(disp_x_to) + ", max x : " + string(disp_x_max));
cursor_pos = cursor_pos == 0? cursor_pos_to : lerp_float(cursor_pos, cursor_pos_to, 4); cursor_pos = cursor_pos == 0? cursor_pos_to : lerp_float(cursor_pos, cursor_pos_to, 4);