headless option

This commit is contained in:
Tanasart 2024-02-12 16:25:23 +07:00
parent fa630da244
commit fcb50a51d8
69 changed files with 1745 additions and 653 deletions

View file

@ -268,6 +268,8 @@
{"name":"button","order":34,"path":"folders/widgets/button.yy",}, {"name":"button","order":34,"path":"folders/widgets/button.yy",},
{"name":"rotator","order":35,"path":"folders/widgets/rotator.yy",}, {"name":"rotator","order":35,"path":"folders/widgets/rotator.yy",},
{"name":"text","order":36,"path":"folders/widgets/text.yy",}, {"name":"text","order":36,"path":"folders/widgets/text.yy",},
{"name":"lovify","order":26,"path":"folders/nodes/data/misc/lovify.yy",},
{"name":"spr","order":6,"path":"folders/nodes/data/misc/lovify/spr.yy",},
], ],
"ResourceOrderSettings": [ "ResourceOrderSettings": [
{"name":"s_node_corner","order":13,"path":"sprites/s_node_corner/s_node_corner.yy",}, {"name":"s_node_corner","order":13,"path":"sprites/s_node_corner/s_node_corner.yy",},
@ -385,6 +387,7 @@
{"name":"node_3d_mesh_terrain","order":9,"path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",}, {"name":"node_3d_mesh_terrain","order":9,"path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},
{"name":"s_node_condition_type","order":9,"path":"sprites/s_node_condition_type/s_node_condition_type.yy",}, {"name":"s_node_condition_type","order":9,"path":"sprites/s_node_condition_type/s_node_condition_type.yy",},
{"name":"fd_rectangle_set_material_time_step","order":8,"path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",}, {"name":"fd_rectangle_set_material_time_step","order":8,"path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},
{"name":"s_lovify_heart_16","order":4,"path":"sprites/s_lovify_heart_16/s_lovify_heart_16.yy",},
{"name":"Obj_FirebaseREST_Listener_On_Firestore","order":1,"path":"objects/Obj_FirebaseREST_Listener_On_Firestore/Obj_FirebaseREST_Listener_On_Firestore.yy",}, {"name":"Obj_FirebaseREST_Listener_On_Firestore","order":1,"path":"objects/Obj_FirebaseREST_Listener_On_Firestore/Obj_FirebaseREST_Listener_On_Firestore.yy",},
{"name":"credit_badge_popular","order":2,"path":"sprites/credit_badge_popular/credit_badge_popular.yy",}, {"name":"credit_badge_popular","order":2,"path":"sprites/credit_badge_popular/credit_badge_popular.yy",},
{"name":"s_node_path_sample","order":3,"path":"sprites/s_node_path_sample/s_node_path_sample.yy",}, {"name":"s_node_path_sample","order":3,"path":"sprites/s_node_path_sample/s_node_path_sample.yy",},
@ -484,6 +487,7 @@
{"name":"fd_rectangle_get_acceleration_y","order":3,"path":"scripts/fd_rectangle_get_acceleration_y/fd_rectangle_get_acceleration_y.yy",}, {"name":"fd_rectangle_get_acceleration_y","order":3,"path":"scripts/fd_rectangle_get_acceleration_y/fd_rectangle_get_acceleration_y.yy",},
{"name":"sh_simplex","order":7,"path":"shaders/sh_simplex/sh_simplex.yy",}, {"name":"sh_simplex","order":7,"path":"shaders/sh_simplex/sh_simplex.yy",},
{"name":"node_noise_grid_tri","order":6,"path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",}, {"name":"node_noise_grid_tri","order":6,"path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",},
{"name":"s_lovify_heart_12","order":1,"path":"sprites/s_lovify_heart_12/s_lovify_heart_12.yy",},
{"name":"node_threshold","order":9,"path":"scripts/node_threshold/node_threshold.yy",}, {"name":"node_threshold","order":9,"path":"scripts/node_threshold/node_threshold.yy",},
{"name":"sh_cell_noise_edge","order":2,"path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",}, {"name":"sh_cell_noise_edge","order":2,"path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},
{"name":"node_pb_fx_strip","order":11,"path":"scripts/node_pb_fx_strip/node_pb_fx_strip.yy",}, {"name":"node_pb_fx_strip","order":11,"path":"scripts/node_pb_fx_strip/node_pb_fx_strip.yy",},
@ -618,6 +622,7 @@
{"name":"s_node_rigidSim_global","order":4,"path":"sprites/s_node_rigidSim_global/s_node_rigidSim_global.yy",}, {"name":"s_node_rigidSim_global","order":4,"path":"sprites/s_node_rigidSim_global/s_node_rigidSim_global.yy",},
{"name":"sh_channel_G_grey","order":8,"path":"shaders/sh_channel_G_grey/sh_channel_G_grey.yy",}, {"name":"sh_channel_G_grey","order":8,"path":"shaders/sh_channel_G_grey/sh_channel_G_grey.yy",},
{"name":"sh_corner_iterate","order":2,"path":"shaders/sh_corner_iterate/sh_corner_iterate.yy",}, {"name":"sh_corner_iterate","order":2,"path":"shaders/sh_corner_iterate/sh_corner_iterate.yy",},
{"name":"s_lovify_heart_6","order":2,"path":"sprites/s_lovify_heart_6/s_lovify_heart_6.yy",},
{"name":"display_screenshot","order":4,"path":"extensions/display_screenshot/display_screenshot.yy",}, {"name":"display_screenshot","order":4,"path":"extensions/display_screenshot/display_screenshot.yy",},
{"name":"node_strand_sim_inline","order":12,"path":"scripts/node_strand_sim_inline/node_strand_sim_inline.yy",}, {"name":"node_strand_sim_inline","order":12,"path":"scripts/node_strand_sim_inline/node_strand_sim_inline.yy",},
{"name":"node_path_map","order":17,"path":"scripts/node_path_map/node_path_map.yy",}, {"name":"node_path_map","order":17,"path":"scripts/node_path_map/node_path_map.yy",},
@ -957,6 +962,7 @@
{"name":"sh_find_boundary_stretch_y","order":2,"path":"shaders/sh_find_boundary_stretch_y/sh_find_boundary_stretch_y.yy",}, {"name":"sh_find_boundary_stretch_y","order":2,"path":"shaders/sh_find_boundary_stretch_y/sh_find_boundary_stretch_y.yy",},
{"name":"BBMOD_Vec2","order":4,"path":"scripts/BBMOD_Vec2/BBMOD_Vec2.yy",}, {"name":"BBMOD_Vec2","order":4,"path":"scripts/BBMOD_Vec2/BBMOD_Vec2.yy",},
{"name":"sh_grid_hex","order":1,"path":"shaders/sh_grid_hex/sh_grid_hex.yy",}, {"name":"sh_grid_hex","order":1,"path":"shaders/sh_grid_hex/sh_grid_hex.yy",},
{"name":"s_node_lovify","order":6,"path":"sprites/s_node_lovify/s_node_lovify.yy",},
{"name":"s_node_lua_surface","order":18,"path":"sprites/s_node_lua_surface/s_node_lua_surface.yy",}, {"name":"s_node_lua_surface","order":18,"path":"sprites/s_node_lua_surface/s_node_lua_surface.yy",},
{"name":"node_data","order":1,"path":"scripts/node_data/node_data.yy",}, {"name":"node_data","order":1,"path":"scripts/node_data/node_data.yy",},
{"name":"node_wiggler","order":2,"path":"scripts/node_wiggler/node_wiggler.yy",}, {"name":"node_wiggler","order":2,"path":"scripts/node_wiggler/node_wiggler.yy",},
@ -1038,6 +1044,7 @@
{"name":"s_node_array_remove","order":7,"path":"sprites/s_node_array_remove/s_node_array_remove.yy",}, {"name":"s_node_array_remove","order":7,"path":"sprites/s_node_array_remove/s_node_array_remove.yy",},
{"name":"s_node_zigzag","order":18,"path":"sprites/s_node_zigzag/s_node_zigzag.yy",}, {"name":"s_node_zigzag","order":18,"path":"sprites/s_node_zigzag/s_node_zigzag.yy",},
{"name":"node_FLIP_render","order":3,"path":"scripts/node_FLIP_render/node_FLIP_render.yy",}, {"name":"node_FLIP_render","order":3,"path":"scripts/node_FLIP_render/node_FLIP_render.yy",},
{"name":"s_lovify_heart_8","order":3,"path":"sprites/s_lovify_heart_8/s_lovify_heart_8.yy",},
{"name":"s_key_display_mouse","order":1,"path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",}, {"name":"s_key_display_mouse","order":1,"path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",},
{"name":"dynaSurf_square_outline","order":3,"path":"scripts/dynaSurf_square_outline/dynaSurf_square_outline.yy",}, {"name":"dynaSurf_square_outline","order":3,"path":"scripts/dynaSurf_square_outline/dynaSurf_square_outline.yy",},
{"name":"node_3d_repeat","order":1,"path":"scripts/node_3d_repeat/node_3d_repeat.yy",}, {"name":"node_3d_repeat","order":1,"path":"scripts/node_3d_repeat/node_3d_repeat.yy",},
@ -1071,6 +1078,7 @@
{"name":"node_atlas_get","order":1,"path":"scripts/node_atlas_get/node_atlas_get.yy",}, {"name":"node_atlas_get","order":1,"path":"scripts/node_atlas_get/node_atlas_get.yy",},
{"name":"fontScrollBox","order":14,"path":"scripts/fontScrollBox/fontScrollBox.yy",}, {"name":"fontScrollBox","order":14,"path":"scripts/fontScrollBox/fontScrollBox.yy",},
{"name":"node_grid_hex","order":2,"path":"scripts/node_grid_hex/node_grid_hex.yy",}, {"name":"node_grid_hex","order":2,"path":"scripts/node_grid_hex/node_grid_hex.yy",},
{"name":"sh_lovify","order":1,"path":"shaders/sh_lovify/sh_lovify.yy",},
{"name":"FirebaseREST_Firestore_collection_compare","order":5,"path":"scripts/FirebaseREST_Firestore_collection_compare/FirebaseREST_Firestore_collection_compare.yy",}, {"name":"FirebaseREST_Firestore_collection_compare","order":5,"path":"scripts/FirebaseREST_Firestore_collection_compare/FirebaseREST_Firestore_collection_compare.yy",},
{"name":"node_pb_draw_blob","order":5,"path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",}, {"name":"node_pb_draw_blob","order":5,"path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",},
{"name":"credit_badge_value","order":1,"path":"sprites/credit_badge_value/credit_badge_value.yy",}, {"name":"credit_badge_value","order":1,"path":"sprites/credit_badge_value/credit_badge_value.yy",},
@ -1765,6 +1773,7 @@
{"name":"path_function","order":4,"path":"scripts/path_function/path_function.yy",}, {"name":"path_function","order":4,"path":"scripts/path_function/path_function.yy",},
{"name":"s_node_shell_excecute","order":33,"path":"sprites/s_node_shell_excecute/s_node_shell_excecute.yy",}, {"name":"s_node_shell_excecute","order":33,"path":"sprites/s_node_shell_excecute/s_node_shell_excecute.yy",},
{"name":"fd_rectangle_set_velocity_dissipation_value","order":14,"path":"scripts/fd_rectangle_set_velocity_dissipation_value/fd_rectangle_set_velocity_dissipation_value.yy",}, {"name":"fd_rectangle_set_velocity_dissipation_value","order":14,"path":"scripts/fd_rectangle_set_velocity_dissipation_value/fd_rectangle_set_velocity_dissipation_value.yy",},
{"name":"s_lovify_icon","order":5,"path":"sprites/s_lovify_icon/s_lovify_icon.yy",},
{"name":"panel_history","order":7,"path":"scripts/panel_history/panel_history.yy",}, {"name":"panel_history","order":7,"path":"scripts/panel_history/panel_history.yy",},
{"name":"sh_channel_H","order":3,"path":"shaders/sh_channel_H/sh_channel_H.yy",}, {"name":"sh_channel_H","order":3,"path":"shaders/sh_channel_H/sh_channel_H.yy",},
{"name":"rotatorRandom","order":1,"path":"scripts/rotatorRandom/rotatorRandom.yy",}, {"name":"rotatorRandom","order":1,"path":"scripts/rotatorRandom/rotatorRandom.yy",},

View file

@ -304,6 +304,8 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"button","folderPath":"folders/widgets/button.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"button","folderPath":"folders/widgets/button.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"rotator","folderPath":"folders/widgets/rotator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"rotator","folderPath":"folders/widgets/rotator.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"text","folderPath":"folders/widgets/text.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"text","folderPath":"folders/widgets/text.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"lovify","folderPath":"folders/nodes/data/misc/lovify.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"spr","folderPath":"folders/nodes/data/misc/lovify/spr.yy",},
], ],
"IncludedFiles": [ "IncludedFiles": [
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
@ -590,6 +592,7 @@
{"id":{"name":"node_3d_mesh_terrain","path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},}, {"id":{"name":"node_3d_mesh_terrain","path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},},
{"id":{"name":"s_node_condition_type","path":"sprites/s_node_condition_type/s_node_condition_type.yy",},}, {"id":{"name":"s_node_condition_type","path":"sprites/s_node_condition_type/s_node_condition_type.yy",},},
{"id":{"name":"fd_rectangle_set_material_time_step","path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},}, {"id":{"name":"fd_rectangle_set_material_time_step","path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},},
{"id":{"name":"s_lovify_heart_16","path":"sprites/s_lovify_heart_16/s_lovify_heart_16.yy",},},
{"id":{"name":"Obj_FirebaseREST_Listener_On_Firestore","path":"objects/Obj_FirebaseREST_Listener_On_Firestore/Obj_FirebaseREST_Listener_On_Firestore.yy",},}, {"id":{"name":"Obj_FirebaseREST_Listener_On_Firestore","path":"objects/Obj_FirebaseREST_Listener_On_Firestore/Obj_FirebaseREST_Listener_On_Firestore.yy",},},
{"id":{"name":"credit_badge_popular","path":"sprites/credit_badge_popular/credit_badge_popular.yy",},}, {"id":{"name":"credit_badge_popular","path":"sprites/credit_badge_popular/credit_badge_popular.yy",},},
{"id":{"name":"s_node_path_sample","path":"sprites/s_node_path_sample/s_node_path_sample.yy",},}, {"id":{"name":"s_node_path_sample","path":"sprites/s_node_path_sample/s_node_path_sample.yy",},},
@ -706,6 +709,7 @@
{"id":{"name":"sh_simplex","path":"shaders/sh_simplex/sh_simplex.yy",},}, {"id":{"name":"sh_simplex","path":"shaders/sh_simplex/sh_simplex.yy",},},
{"id":{"name":"node_noise_grid_tri","path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",},}, {"id":{"name":"node_noise_grid_tri","path":"scripts/node_noise_grid_tri/node_noise_grid_tri.yy",},},
{"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},},
{"id":{"name":"s_lovify_heart_12","path":"sprites/s_lovify_heart_12/s_lovify_heart_12.yy",},},
{"id":{"name":"node_threshold","path":"scripts/node_threshold/node_threshold.yy",},}, {"id":{"name":"node_threshold","path":"scripts/node_threshold/node_threshold.yy",},},
{"id":{"name":"sh_cell_noise_edge","path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},}, {"id":{"name":"sh_cell_noise_edge","path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},},
{"id":{"name":"node_pb_fx_strip","path":"scripts/node_pb_fx_strip/node_pb_fx_strip.yy",},}, {"id":{"name":"node_pb_fx_strip","path":"scripts/node_pb_fx_strip/node_pb_fx_strip.yy",},},
@ -855,6 +859,7 @@
{"id":{"name":"s_node_rigidSim_global","path":"sprites/s_node_rigidSim_global/s_node_rigidSim_global.yy",},}, {"id":{"name":"s_node_rigidSim_global","path":"sprites/s_node_rigidSim_global/s_node_rigidSim_global.yy",},},
{"id":{"name":"sh_channel_G_grey","path":"shaders/sh_channel_G_grey/sh_channel_G_grey.yy",},}, {"id":{"name":"sh_channel_G_grey","path":"shaders/sh_channel_G_grey/sh_channel_G_grey.yy",},},
{"id":{"name":"sh_corner_iterate","path":"shaders/sh_corner_iterate/sh_corner_iterate.yy",},}, {"id":{"name":"sh_corner_iterate","path":"shaders/sh_corner_iterate/sh_corner_iterate.yy",},},
{"id":{"name":"s_lovify_heart_6","path":"sprites/s_lovify_heart_6/s_lovify_heart_6.yy",},},
{"id":{"name":"display_screenshot","path":"extensions/display_screenshot/display_screenshot.yy",},}, {"id":{"name":"display_screenshot","path":"extensions/display_screenshot/display_screenshot.yy",},},
{"id":{"name":"node_strand_sim_inline","path":"scripts/node_strand_sim_inline/node_strand_sim_inline.yy",},}, {"id":{"name":"node_strand_sim_inline","path":"scripts/node_strand_sim_inline/node_strand_sim_inline.yy",},},
{"id":{"name":"node_path_map","path":"scripts/node_path_map/node_path_map.yy",},}, {"id":{"name":"node_path_map","path":"scripts/node_path_map/node_path_map.yy",},},
@ -1240,6 +1245,7 @@
{"id":{"name":"sprite_add_functions","path":"scripts/sprite_add_functions/sprite_add_functions.yy",},}, {"id":{"name":"sprite_add_functions","path":"scripts/sprite_add_functions/sprite_add_functions.yy",},},
{"id":{"name":"BBMOD_Vec2","path":"scripts/BBMOD_Vec2/BBMOD_Vec2.yy",},}, {"id":{"name":"BBMOD_Vec2","path":"scripts/BBMOD_Vec2/BBMOD_Vec2.yy",},},
{"id":{"name":"sh_grid_hex","path":"shaders/sh_grid_hex/sh_grid_hex.yy",},}, {"id":{"name":"sh_grid_hex","path":"shaders/sh_grid_hex/sh_grid_hex.yy",},},
{"id":{"name":"s_node_lovify","path":"sprites/s_node_lovify/s_node_lovify.yy",},},
{"id":{"name":"s_node_lua_surface","path":"sprites/s_node_lua_surface/s_node_lua_surface.yy",},}, {"id":{"name":"s_node_lua_surface","path":"sprites/s_node_lua_surface/s_node_lua_surface.yy",},},
{"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},}, {"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},},
{"id":{"name":"node_wiggler","path":"scripts/node_wiggler/node_wiggler.yy",},}, {"id":{"name":"node_wiggler","path":"scripts/node_wiggler/node_wiggler.yy",},},
@ -1334,6 +1340,7 @@
{"id":{"name":"s_node_array_remove","path":"sprites/s_node_array_remove/s_node_array_remove.yy",},}, {"id":{"name":"s_node_array_remove","path":"sprites/s_node_array_remove/s_node_array_remove.yy",},},
{"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},},
{"id":{"name":"node_FLIP_render","path":"scripts/node_FLIP_render/node_FLIP_render.yy",},}, {"id":{"name":"node_FLIP_render","path":"scripts/node_FLIP_render/node_FLIP_render.yy",},},
{"id":{"name":"s_lovify_heart_8","path":"sprites/s_lovify_heart_8/s_lovify_heart_8.yy",},},
{"id":{"name":"s_key_display_mouse","path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",},}, {"id":{"name":"s_key_display_mouse","path":"sprites/s_key_display_mouse/s_key_display_mouse.yy",},},
{"id":{"name":"dynaSurf_square_outline","path":"scripts/dynaSurf_square_outline/dynaSurf_square_outline.yy",},}, {"id":{"name":"dynaSurf_square_outline","path":"scripts/dynaSurf_square_outline/dynaSurf_square_outline.yy",},},
{"id":{"name":"node_3d_repeat","path":"scripts/node_3d_repeat/node_3d_repeat.yy",},}, {"id":{"name":"node_3d_repeat","path":"scripts/node_3d_repeat/node_3d_repeat.yy",},},
@ -1373,6 +1380,7 @@
{"id":{"name":"node_atlas_get","path":"scripts/node_atlas_get/node_atlas_get.yy",},}, {"id":{"name":"node_atlas_get","path":"scripts/node_atlas_get/node_atlas_get.yy",},},
{"id":{"name":"fontScrollBox","path":"scripts/fontScrollBox/fontScrollBox.yy",},}, {"id":{"name":"fontScrollBox","path":"scripts/fontScrollBox/fontScrollBox.yy",},},
{"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},}, {"id":{"name":"node_grid_hex","path":"scripts/node_grid_hex/node_grid_hex.yy",},},
{"id":{"name":"sh_lovify","path":"shaders/sh_lovify/sh_lovify.yy",},},
{"id":{"name":"FirebaseREST_Firestore_collection_compare","path":"scripts/FirebaseREST_Firestore_collection_compare/FirebaseREST_Firestore_collection_compare.yy",},}, {"id":{"name":"FirebaseREST_Firestore_collection_compare","path":"scripts/FirebaseREST_Firestore_collection_compare/FirebaseREST_Firestore_collection_compare.yy",},},
{"id":{"name":"node_pb_draw_blob","path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",},}, {"id":{"name":"node_pb_draw_blob","path":"scripts/node_pb_draw_blob/node_pb_draw_blob.yy",},},
{"id":{"name":"draw_overlay","path":"scripts/draw_overlay/draw_overlay.yy",},}, {"id":{"name":"draw_overlay","path":"scripts/draw_overlay/draw_overlay.yy",},},
@ -1449,6 +1457,7 @@
{"id":{"name":"file_functions","path":"scripts/file_functions/file_functions.yy",},}, {"id":{"name":"file_functions","path":"scripts/file_functions/file_functions.yy",},},
{"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},}, {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},},
{"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},}, {"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},},
{"id":{"name":"node_lovify","path":"scripts/node_lovify/node_lovify.yy",},},
{"id":{"name":"pack_best_fit","path":"scripts/pack_best_fit/pack_best_fit.yy",},}, {"id":{"name":"pack_best_fit","path":"scripts/pack_best_fit/pack_best_fit.yy",},},
{"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},}, {"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},},
{"id":{"name":"draw_circle_functions","path":"scripts/draw_circle_functions/draw_circle_functions.yy",},}, {"id":{"name":"draw_circle_functions","path":"scripts/draw_circle_functions/draw_circle_functions.yy",},},
@ -2128,6 +2137,7 @@
{"id":{"name":"s_node_dot_product","path":"sprites/s_node_dot_product/s_node_dot_product.yy",},}, {"id":{"name":"s_node_dot_product","path":"sprites/s_node_dot_product/s_node_dot_product.yy",},},
{"id":{"name":"s_node_canvas","path":"sprites/s_node_canvas/s_node_canvas.yy",},}, {"id":{"name":"s_node_canvas","path":"sprites/s_node_canvas/s_node_canvas.yy",},},
{"id":{"name":"d3d_light","path":"scripts/d3d_light/d3d_light.yy",},}, {"id":{"name":"d3d_light","path":"scripts/d3d_light/d3d_light.yy",},},
{"id":{"name":"s_lovify_heart_10","path":"sprites/s_lovify_heart_10/s_lovify_heart_10.yy",},},
{"id":{"name":"sh_downsample","path":"shaders/sh_downsample/sh_downsample.yy",},}, {"id":{"name":"sh_downsample","path":"shaders/sh_downsample/sh_downsample.yy",},},
{"id":{"name":"Obj_FirebaseFirestore_Collection_Query_Greater","path":"objects/Obj_FirebaseFirestore_Collection_Query_Greater/Obj_FirebaseFirestore_Collection_Query_Greater.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Collection_Query_Greater","path":"objects/Obj_FirebaseFirestore_Collection_Query_Greater/Obj_FirebaseFirestore_Collection_Query_Greater.yy",},},
{"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},}, {"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},},
@ -2164,6 +2174,7 @@
{"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},}, {"id":{"name":"path_function","path":"scripts/path_function/path_function.yy",},},
{"id":{"name":"s_node_shell_excecute","path":"sprites/s_node_shell_excecute/s_node_shell_excecute.yy",},}, {"id":{"name":"s_node_shell_excecute","path":"sprites/s_node_shell_excecute/s_node_shell_excecute.yy",},},
{"id":{"name":"fd_rectangle_set_velocity_dissipation_value","path":"scripts/fd_rectangle_set_velocity_dissipation_value/fd_rectangle_set_velocity_dissipation_value.yy",},}, {"id":{"name":"fd_rectangle_set_velocity_dissipation_value","path":"scripts/fd_rectangle_set_velocity_dissipation_value/fd_rectangle_set_velocity_dissipation_value.yy",},},
{"id":{"name":"s_lovify_icon","path":"sprites/s_lovify_icon/s_lovify_icon.yy",},},
{"id":{"name":"panel_history","path":"scripts/panel_history/panel_history.yy",},}, {"id":{"name":"panel_history","path":"scripts/panel_history/panel_history.yy",},},
{"id":{"name":"sh_channel_H","path":"shaders/sh_channel_H/sh_channel_H.yy",},}, {"id":{"name":"sh_channel_H","path":"shaders/sh_channel_H/sh_channel_H.yy",},},
{"id":{"name":"rotatorRandom","path":"scripts/rotatorRandom/rotatorRandom.yy",},}, {"id":{"name":"rotatorRandom","path":"scripts/rotatorRandom/rotatorRandom.yy",},},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -104,10 +104,11 @@ if !ready exit;
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, interactable && sFOCUS, sHOVER, __txtx("gradient_editor_key_blend", "Key blending"), THEME.grad_blend) == 2) { if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, interactable && sFOCUS, sHOVER, __txtx("gradient_editor_key_blend", "Key blending"), THEME.grad_blend) == 2) {
menuCall("gradient_window_blend_menu", bx + ui(32), by, [ menuCall("gradient_window_blend_menu", bx + ui(32), by, [
menuItem(__txtx("gradient_editor_blend_hard", "Hard blend"), function() { gradient.type = 1; onApply(gradient); }), menuItem(__txtx("gradient_editor_blend_hard", "Solid"), function() { gradient.type = 1; onApply(gradient); }),
menuItem(__txtx("gradient_editor_blend_RGB", "RGB blend"), function() { gradient.type = 0; onApply(gradient); }), menuItem(__txtx("gradient_editor_blend_RGB", "RGB"), function() { gradient.type = 0; onApply(gradient); }),
menuItem(__txtx("gradient_editor_blend_HSV", "HSV blend"), function() { gradient.type = 2; onApply(gradient); }), menuItem(__txtx("gradient_editor_blend_sRGB", "sRGB"), function() { gradient.type = 4; onApply(gradient); }),
menuItem(__txtx("gradient_editor_blend_OKLAB", "OKLAB blend"), function() { gradient.type = 3; onApply(gradient); }), menuItem(__txtx("gradient_editor_blend_HSV", "HSV"), function() { gradient.type = 2; onApply(gradient); }),
menuItem(__txtx("gradient_editor_blend_OKLAB", "OKLAB"), function() { gradient.type = 3; onApply(gradient); }),
],, gradient); ],, gradient);
} }
bx -= ui(32); bx -= ui(32);

View file

@ -149,7 +149,7 @@
with(dialogCall(o_dialog_add_multiple_images, WIN_W / 2, WIN_H / 2)) with(dialogCall(o_dialog_add_multiple_images, WIN_W / 2, WIN_H / 2))
setPath(path); setPath(path);
} else { } else {
PANEL_GRAPH.onStepBegin(); if(!IS_CMD) PANEL_GRAPH.onStepBegin();
var node = noone; var node = noone;
for( var i = 0, n = array_length(path); i < n; i++ ) { for( var i = 0, n = array_length(path); i < n; i++ ) {
@ -192,10 +192,10 @@
break; break;
} }
PANEL_GRAPH.mouse_grid_y += 160; if(!IS_CMD)PANEL_GRAPH.mouse_grid_y += 160;
} }
if(node) if(node && !IS_CMD)
PANEL_GRAPH.toCenterNode(); PANEL_GRAPH.toCenterNode();
} }
} }
@ -313,22 +313,21 @@
#endregion #endregion
#region arguments #region arguments
#macro IS_CMD PROGRAM_ARGUMENTS._cmd
alarm[1] = 2; alarm[1] = 2;
globalvar PROGRAM_ARGUMENTS; globalvar PROGRAM_ARGUMENTS;
PROGRAM_ARGUMENTS = { PROGRAM_ARGUMENTS = {
run : false, _cmd : false,
_run : false,
_persist : false,
}; };
//PROGRAM_ARGUMENTS = { //.\PixelComposer.exe "D:/Project/MakhamDev/LTS-PixelComposer/TEST/terminal/outline.pxc" --h -image "D:/Project/MakhamDev/LTS-PixelComposer/TEST/terminal/05.png"
// path: "D:/Project/MakhamDev/LTS-PixelComposer/TEST/terminal/outline.pxc",
// image: "D:/Project/MakhamDev/LTS-PixelComposer/TEST/terminal/05.png",
// run : true,
// persist : false,
//};
var paramCount = parameter_count(); var paramCount = parameter_count();
var paramType = "path"; var paramType = "_path";
for( var i = 0; i < paramCount; i++ ) { for( var i = 0; i < paramCount; i++ ) {
var param = parameter_string(i); var param = parameter_string(i);
@ -341,28 +340,33 @@
run_in(1, function() { dialogCall(o_dialog_crashed); }); run_in(1, function() { dialogCall(o_dialog_crashed); });
break; break;
case "--h" : PROGRAM_ARGUMENTS.run = true; break; case "--h" :
case "--p" : PROGRAM_ARGUMENTS.persist = true; break; debug_event("OutputDebugOn");
PROGRAM_ARGUMENTS._cmd = true;
PROGRAM_ARGUMENTS._run = true;
break;
case "--p" : PROGRAM_ARGUMENTS._persist = true; break;
} }
} else if(string_starts_with(param, "-")) { } else if(string_starts_with(param, "-")) {
paramType = string_trim(param, ["-"]); paramType = string_trim(param, ["-"]);
} else if(paramType == "path") { } else if(paramType == "_path") {
var path = param; var path = param;
path = string_replace_all(path, "\n", ""); path = string_replace_all(path, "\n", "");
path = string_replace_all(path, "\"", ""); path = string_replace_all(path, "\"", "");
if(file_exists_empty(path) && filename_ext(path) == ".pxc") if(file_exists_empty(path) && filename_ext(path) == ".pxc")
PROGRAM_ARGUMENTS.path = path; PROGRAM_ARGUMENTS._path = path;
} else { } else {
PROGRAM_ARGUMENTS[$ paramType] = param; PROGRAM_ARGUMENTS[$ paramType] = param;
} }
} }
if(struct_exists(PROGRAM_ARGUMENTS, "path")) { if(struct_exists(PROGRAM_ARGUMENTS, "_path")) {
var path = PROGRAM_ARGUMENTS.path; var path = PROGRAM_ARGUMENTS._path;
if(PROJECT == noone || PROJECT.path != path) { if(PROJECT == noone || PROJECT.path != path) {
file_open_parameter = path; file_open_parameter = path;
@ -370,6 +374,6 @@
} }
} }
if(PROGRAM_ARGUMENTS.run) if(PROGRAM_ARGUMENTS._cmd)
draw_enable_drawevent(false); draw_enable_drawevent(false);
#endregion #endregion

View file

@ -68,44 +68,46 @@
var t0 = get_timer(); var t0 = get_timer();
var t = get_timer(); var t = get_timer();
__initPatreon(); log_message("SESSION", $"> init Patreon | complete in {get_timer() - t}"); t = get_timer(); __initPatreon(); log_message("SESSION", $"> init Patreon | complete in {get_timer() - t}"); t = get_timer();
__initTheme(); log_message("SESSION", $"> init Theme | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initTheme(); log_message("SESSION", $"> init Theme | complete in {get_timer() - t}"); t = get_timer(); }
__initLocale(); log_message("SESSION", $"> init Locale | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initLocale(); log_message("SESSION", $"> init Locale | complete in {get_timer() - t}"); t = get_timer(); }
loadFonts(); log_message("SESSION", $"> init Font | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { loadFonts(); log_message("SESSION", $"> init Font | complete in {get_timer() - t}"); t = get_timer(); }
__initProject(); log_message("SESSION", $"> init Project | complete in {get_timer() - t}"); t = get_timer(); __initProject(); log_message("SESSION", $"> init Project | complete in {get_timer() - t}"); t = get_timer();
__initAction(); log_message("SESSION", $"> init Action | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initAction(); log_message("SESSION", $"> init Action | complete in {get_timer() - t}"); t = get_timer(); }
__initSurfaceFormat(); log_message("SESSION", $"> init SurfaceFormat | complete in {get_timer() - t}"); t = get_timer(); __initSurfaceFormat(); log_message("SESSION", $"> init SurfaceFormat | complete in {get_timer() - t}"); t = get_timer();
__initCollection(); log_message("SESSION", $"> init Collection | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initCollection(); log_message("SESSION", $"> init Collection | complete in {get_timer() - t}"); t = get_timer(); }
__initAssets(); log_message("SESSION", $"> init Assets | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initAssets(); log_message("SESSION", $"> init Assets | complete in {get_timer() - t}"); t = get_timer(); }
__initPresets(); log_message("SESSION", $"> init Presets | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initPresets(); log_message("SESSION", $"> init Presets | complete in {get_timer() - t}"); t = get_timer(); }
__initFontFolder(); log_message("SESSION", $"> init FontFolder | complete in {get_timer() - t}"); t = get_timer(); __initFontFolder(); log_message("SESSION", $"> init FontFolder | complete in {get_timer() - t}"); t = get_timer();
__initLua(); log_message("SESSION", $"> init Lua | complete in {get_timer() - t}"); t = get_timer(); __initLua(); log_message("SESSION", $"> init Lua | complete in {get_timer() - t}"); t = get_timer();
__initNodeData(); log_message("SESSION", $"> init NodeData | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initNodeData(); log_message("SESSION", $"> init NodeData | complete in {get_timer() - t}"); t = get_timer(); }
__initNodes(); log_message("SESSION", $"> init Nodes | complete in {get_timer() - t}"); t = get_timer(); __initNodes(); log_message("SESSION", $"> init Nodes | complete in {get_timer() - t}"); t = get_timer();
__initSteamUGC(); log_message("SESSION", $"> init SteamUGC | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initSteamUGC(); log_message("SESSION", $"> init SteamUGC | complete in {get_timer() - t}"); t = get_timer(); }
__initAddon(); log_message("SESSION", $"> init Addon | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initAddon(); log_message("SESSION", $"> init Addon | complete in {get_timer() - t}"); t = get_timer(); }
__initPalette(); log_message("SESSION", $"> init Palette | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initPalette(); log_message("SESSION", $"> init Palette | complete in {get_timer() - t}"); t = get_timer(); }
__initGradient(); log_message("SESSION", $"> init Gradient | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { __initGradient(); log_message("SESSION", $"> init Gradient | complete in {get_timer() - t}"); t = get_timer(); }
loadAddon(); log_message("SESSION", $"> init Addons | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { loadAddon(); log_message("SESSION", $"> init Addons | complete in {get_timer() - t}"); t = get_timer(); }
LOAD_SAMPLE(); log_message("SESSION", $"> init sample | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { LOAD_SAMPLE(); log_message("SESSION", $"> init sample | complete in {get_timer() - t}"); t = get_timer(); }
INIT_FOLDERS(); log_message("SESSION", $"> init folders | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { INIT_FOLDERS(); log_message("SESSION", $"> init folders | complete in {get_timer() - t}"); t = get_timer(); }
RECENT_LOAD(); log_message("SESSION", $"> init recents | complete in {get_timer() - t}"); t = get_timer(); if(!IS_CMD) { RECENT_LOAD(); log_message("SESSION", $"> init recents | complete in {get_timer() - t}"); t = get_timer(); }
log_message("SESSION", $">> Initialization complete in {get_timer() - t0}"); log_message("SESSION", $">> Initialization complete in {get_timer() - t0}");
__initPanel(); if(!IS_CMD) {
__initPanel();
if(file_exists_empty("icon.png")) if(file_exists_empty("icon.png"))
file_copy("icon.png", DIRECTORY + "icon.png"); file_copy("icon.png", DIRECTORY + "icon.png");
var cmd = ".pxc=\"" + string(program_directory) + "PixelComposer.exe\""; var cmd = ".pxc=\"" + string(program_directory) + "PixelComposer.exe\"";
shell_execute_async("assoc", cmd); shell_execute_async("assoc", cmd);
var cmd = ".pxcc=\"" + string(program_directory) + "PixelComposer.exe\""; var cmd = ".pxcc=\"" + string(program_directory) + "PixelComposer.exe\"";
shell_execute_async("assoc", cmd); shell_execute_async("assoc", cmd);
}
directory_set_current_working(DIRECTORY); directory_set_current_working(DIRECTORY);
#endregion #endregion

View file

@ -101,11 +101,11 @@ _HOVERING_ELEMENT = noone;
PROJECT.animator.frame_progress = false; PROJECT.animator.frame_progress = false;
} else { } else {
if(UPDATE & RENDER_TYPE.full) { if(UPDATE & RENDER_TYPE.full) {
if(PROGRAM_ARGUMENTS.run) { if(PROGRAM_ARGUMENTS._run) {
exportAll(); exportAll();
PROGRAM_ARGUMENTS.run = false; PROGRAM_ARGUMENTS._run = false;
if(!IS_RENDERING && !struct_try_get(PROGRAM_ARGUMENTS, "persist", true)) game_end(); if(!IS_RENDERING && !PROGRAM_ARGUMENTS._persist) game_end();
} else } else
Render(); Render();

View file

@ -82,10 +82,12 @@ function __Node_3D_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constru
file_text_close(fObj); file_text_close(fObj);
file_text_close(fMtl); file_text_close(fMtl);
var noti = log_message("EXPORT", "Export obj as " + oPath, THEME.noti_icon_tick, COLORS._main_value_positive, false); if(!IS_CMD) {
noti.path = filename_dir(oPath); var noti = log_message("EXPORT", "Export obj as " + oPath, THEME.noti_icon_tick, COLORS._main_value_positive, false);
noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); noti.path = filename_dir(oPath);
noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer);
}
} }
static update = function() { static update = function() {

View file

@ -167,7 +167,7 @@
is_rendering = false; is_rendering = false;
time_since_last_frame = 0; time_since_last_frame = 0;
if(struct_try_get(PROGRAM_ARGUMENTS, "persist", true)) game_end(); if(PROGRAM_ARGUMENTS._cmd && !PROGRAM_ARGUMENTS._persist) game_end();
} }
} }

View file

@ -35,6 +35,15 @@
return make_color_rgba(rg.x, rg.y, rg.z, a); return make_color_rgba(rg.x, rg.y, rg.z, a);
} #endregion } #endregion
function make_color_srgba(r, g, b, a) { #region
INLINE
r = power(r, 1 / 2.2) * 255;
g = power(g, 1 / 2.2) * 255;
b = power(b, 1 / 2.2) * 255;
return int64(round(r) + (round(g) << 8) + (round(b) << 16) + (round(a) << 24));
} #endregion
function colorFromRGBArray(arr) { #region function colorFromRGBArray(arr) { #region
var r = round(real(arr[0]) * 255); var r = round(real(arr[0]) * 255);
var g = round(real(arr[1]) * 255); var g = round(real(arr[1]) * 255);
@ -66,6 +75,11 @@
return [ color_get_red(col) / 255, color_get_green(col) / 255, color_get_blue(col) / 255 ]; return [ color_get_red(col) / 255, color_get_green(col) / 255, color_get_blue(col) / 255 ];
} #endregion } #endregion
function color_srgb(col) { #region
INLINE
return [ power(color_get_red(col) / 255, 2.2), power(color_get_green(col) / 255, 2.2), power(color_get_blue(col) / 255, 2.2) ];
} #endregion
function color_hsv(col) { #region function color_hsv(col) { #region
INLINE INLINE
return [ color_get_hue(col) / 255, color_get_saturation(col) / 255, color_get_value(col) / 255 ]; return [ color_get_hue(col) / 255, color_get_saturation(col) / 255, color_get_value(col) / 255 ];
@ -212,6 +226,23 @@ function color_diff(c1, c2, fast = false, alpha = false) { #region
return make_color_oklab(ok, a); return make_color_oklab(ok, a);
} #endregion } #endregion
function merge_color_srgb(c0, c1, t) { #region
INLINE
var sr0 = color_srgb(c0);
var sr1 = color_srgb(c1);
var sr = [
lerp(sr0[0], sr1[0], t),
lerp(sr0[1], sr1[1], t),
lerp(sr0[2], sr1[2], t),
];
var a = is_real(c0)? 255 : clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255);
return make_color_srgba(sr, a);
} #endregion
#endregion #endregion
#region sorting functions #region sorting functions

View file

@ -1,13 +1,13 @@
#region colors #region colors
globalvar CDEF, COLORS, THEME_VALUE; globalvar CDEF, COLORS, THEME_VALUE;
CDEF = {}; CDEF = new ThemeColorDef();
COLORS = new ThemeColor(); COLORS = new ThemeColor();
THEME_VALUE = new ThemeValue(); THEME_VALUE = new ThemeValue();
#endregion #endregion
function loadColor(theme = "default") { #region function loadColor(theme = "default") { #region
CDEF = {}; CDEF = new ThemeColorDef();
COLORS = new ThemeColor(); COLORS = new ThemeColor();
THEME_VALUE = new ThemeValue(); THEME_VALUE = new ThemeValue();

View file

@ -26,6 +26,8 @@ function __log(title, str, fname = "log/log.txt") { #region
function log_message(title, str, icon = noone, flash = false, write = true) { #region function log_message(title, str, icon = noone, flash = false, write = true) { #region
if(TEST_ERROR) return; if(TEST_ERROR) return;
if(IS_CMD) return;
if(write) __log("[MESSAGE] ", string(title) + ": " + string(str)); if(write) __log("[MESSAGE] ", string(title) + ": " + string(str));
return noti_status(string(title) + ": " + string(str), icon, flash); return noti_status(string(title) + ": " + string(str), icon, flash);
@ -33,6 +35,8 @@ function log_message(title, str, icon = noone, flash = false, write = true) { #r
function log_warning(title, str, ref = noone) { #region function log_warning(title, str, ref = noone) { #region
if(TEST_ERROR) return; if(TEST_ERROR) return;
if(IS_CMD) return;
__log("[WARNING] ", string(title) + ": " + string(str)); __log("[WARNING] ", string(title) + ": " + string(str));
return noti_warning(string(title) + ": " + string(str),, ref); return noti_warning(string(title) + ": " + string(str),, ref);
@ -40,6 +44,8 @@ function log_warning(title, str, ref = noone) { #region
function log_crash(str) { #region function log_crash(str) { #region
if(TEST_ERROR) return; if(TEST_ERROR) return;
if(IS_CMD) return;
__log("[ERROR] ", string(str)); __log("[ERROR] ", string(str));
return noti_error(string(str)); return noti_error(string(str));

View file

@ -1,11 +1,27 @@
globalvar FONT_DEF, FONT_ISLOADED, FONT_CACHE, FONT_CUST_CACHE, GLYPH_MAP; globalvar FONT_DEF, FONT_ISLOADED, FONT_CACHE, FONT_CUST_CACHE, GLYPH_MAP;
globalvar f_h1, f_h2, f_h3, f_h5, f_p0, f_p0b, f_p1, f_p2, f_p3, f_code, f_sdf, f_sdf_medium; globalvar f_h1, f_h2, f_h3, f_h5, f_p0, f_p0b, f_p1, f_p2, f_p3, f_code, f_sdf, f_sdf_medium;
FONT_DEF = true; #region default
FONT_CACHE = {}; FONT_DEF = true;
FONT_CUST_CACHE = {}; FONT_CACHE = {};
FONT_ISLOADED = false; FONT_CUST_CACHE = {};
GLYPH_MAP = {}; FONT_ISLOADED = false;
GLYPH_MAP = {};
f_h1 = _f_h1;
f_h2 = _f_h2;
f_h3 = _f_h3;
f_h5 = _f_h5;
f_p0 = _f_p0;
f_p0b = _f_p0b;
f_p1 = _f_p1;
f_p2 = _f_p2;
f_p3 = _f_p3;
f_code = _f_code;
f_sdf = _f_sdf;
f_sdf_medium = _f_sdf_medium;
FONT_ISLOADED = false;
#endregion
function _font_add(path, size, sdf = false, custom = false) { #region function _font_add(path, size, sdf = false, custom = false) { #region
var _cache = custom? FONT_CUST_CACHE : FONT_CACHE; var _cache = custom? FONT_CUST_CACHE : FONT_CACHE;

View file

@ -2,7 +2,8 @@ enum GRADIENT_INTER {
smooth, smooth,
none, none,
hue, hue,
oklab oklab,
srgb
} }
function gradientKey(time, value) constructor { #region function gradientKey(time, value) constructor { #region
@ -79,6 +80,7 @@ function gradientObject(color = c_black) constructor { #region
case GRADIENT_INTER.smooth : return merge_color (_pkey.value, _key.value, rat); case GRADIENT_INTER.smooth : return merge_color (_pkey.value, _key.value, rat);
case GRADIENT_INTER.hue : return merge_color_hsv (_pkey.value, _key.value, rat); case GRADIENT_INTER.hue : return merge_color_hsv (_pkey.value, _key.value, rat);
case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat); case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat);
case GRADIENT_INTER.srgb : return merge_color_srgb (_pkey.value, _key.value, rat);
case GRADIENT_INTER.none : return _pkey.value; case GRADIENT_INTER.none : return _pkey.value;
} }
} }

View file

@ -27,16 +27,19 @@ function LOAD_PATH(path, readonly = false, safe_mode = false) { #region
var _PROJECT = PROJECT; var _PROJECT = PROJECT;
PROJECT = new Project(); PROJECT = new Project();
if(PANEL_GRAPH.project.path == "" && !PANEL_GRAPH.project.modified) {
var ind = array_find(PROJECTS, PANEL_GRAPH.project); if(_PROJECT.path == "" && !_PROJECT.modified) {
var ind = array_find(PROJECTS, _PROJECT);
if(ind == -1) ind = 0; if(ind == -1) ind = 0;
PROJECTS[ind] = PROJECT; PROJECTS[ind] = PROJECT;
PANEL_GRAPH.setProject(PROJECT); if(!IS_CMD) PANEL_GRAPH.setProject(PROJECT);
} else { } else {
var graph = new Panel_Graph(PROJECT); if(!IS_CMD) {
PANEL_GRAPH.panel.setContent(graph, true); var graph = new Panel_Graph(PROJECT);
PANEL_GRAPH = graph; PANEL_GRAPH.panel.setContent(graph, true);
PANEL_GRAPH = graph;
}
array_push(PROJECTS, PROJECT); array_push(PROJECTS, PROJECT);
} }
@ -44,7 +47,8 @@ function LOAD_PATH(path, readonly = false, safe_mode = false) { #region
if(!res) return false; if(!res) return false;
PROJECT.safeMode = safe_mode; PROJECT.safeMode = safe_mode;
setFocus(PANEL_GRAPH.panel); if(!IS_CMD)
setFocus(PANEL_GRAPH.panel);
return PROJECT; return PROJECT;
} #endregion } #endregion
@ -246,14 +250,14 @@ function LOAD_AT(path, readonly = false, override = false) { #region
PROJECT.modified = false; PROJECT.modified = false;
log_message("FILE", "load " + path, THEME.noti_icon_file_load); log_message("FILE", "load " + path, THEME.noti_icon_file_load);
PANEL_MENU.setNotiIcon(THEME.noti_icon_file_load); if(!IS_CMD) PANEL_MENU.setNotiIcon(THEME.noti_icon_file_load);
refreshNodeMap(); refreshNodeMap();
if(struct_has(_load_content, "timelines") && !array_empty(_load_content.timelines.contents)) if(struct_has(_load_content, "timelines") && !array_empty(_load_content.timelines.contents))
PROJECT.timelines.deserialize(_load_content.timelines); PROJECT.timelines.deserialize(_load_content.timelines);
run_in(1, PANEL_GRAPH.toCenterNode); if(!IS_CMD) run_in(1, PANEL_GRAPH.toCenterNode);
//print($"========== Load completed in {(get_timer() - t) / 1000} ms =========="); //print($"========== Load completed in {(get_timer() - t) / 1000} ms ==========");

View file

@ -13,7 +13,7 @@ enum DYNA_INPUT_COND {
zero = 1 << 1, zero = 1 << 1,
} }
function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x, _y) constructor { function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
#region ---- main & active ---- #region ---- main & active ----
active = true; active = true;
renderActive = true; renderActive = true;
@ -23,7 +23,9 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
manual_deletable = true; manual_deletable = true;
manual_ungroupable = true; manual_ungroupable = true;
destroy_when_upgroup = false; destroy_when_upgroup = false;
ds_list_add(PANEL_GRAPH.getNodeList(_group), self);
var l = _group == noone? PROJECT.nodes : _group.getNodeList();
ds_list_add(l, self);
active_index = -1; active_index = -1;
active_range = [ 0, TOTAL_FRAMES - 1 ]; active_range = [ 0, TOTAL_FRAMES - 1 ];
@ -1956,7 +1958,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
static doApplyDeserialize = function() {} static doApplyDeserialize = function() {}
static loadGroup = function(context = PANEL_GRAPH.getCurrentContext()) { #region static loadGroup = function(context = noone) { #region
if(_group == noone) { if(_group == noone) {
if(context != noone) context.add(self); if(context != noone) context.add(self);
} else { } else {

View file

@ -586,8 +586,8 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
p = save_surface(_surf, p); p = save_surface(_surf, p);
} }
if(form != NODE_EXPORT_FORMAT.animation) { if(form != NODE_EXPORT_FORMAT.animation && !IS_CMD) {
var noti = log_message("EXPORT", "Export " + string(array_length(surf)) + " images complete.", THEME.noti_icon_tick, COLORS._main_value_positive, false); var noti = log_message("EXPORT", $"Export {array_length(surf)} images complete.", THEME.noti_icon_tick, COLORS._main_value_positive, false);
noti.path = filename_dir(p); noti.path = filename_dir(p);
noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer);
@ -604,8 +604,8 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
p = save_surface(surf, p); p = save_surface(surf, p);
if(form != NODE_EXPORT_FORMAT.animation) { if(form != NODE_EXPORT_FORMAT.animation && !IS_CMD) {
var noti = log_message("EXPORT", "Export image as " + p, THEME.noti_icon_tick, COLORS._main_value_positive, false); var noti = log_message("EXPORT", $"Export image as {p}", THEME.noti_icon_tick, COLORS._main_value_positive, false);
noti.path = filename_dir(p); noti.path = filename_dir(p);
noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer);
@ -693,7 +693,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
} #endregion } #endregion
static doInspectorAction = function() { #region static doInspectorAction = function() { #region
if(!PROGRAM_ARGUMENTS.run && (LOADING || APPENDING)) return; if(!PROGRAM_ARGUMENTS._cmd && (LOADING || APPENDING)) return;
var path = getInputData(1); var path = getInputData(1);
if(path == "") return; if(path == "") return;
@ -799,10 +799,13 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var res = ProcIdExists(render_process_id); var res = ProcIdExists(render_process_id);
if(res == 0 || OS == os_macosx) { if(res == 0 || OS == os_macosx) {
var noti = log_message("EXPORT", $"Export {render_type} as {render_target}", THEME.noti_icon_tick, COLORS._main_value_positive, false); if(!IS_CMD) {
noti.path = filename_dir(render_target); var noti = log_message("EXPORT", $"Export {render_type} as {render_target}", THEME.noti_icon_tick, COLORS._main_value_positive, false);
noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); noti.path = filename_dir(render_target);
PANEL_MENU.setNotiIcon(THEME.noti_icon_tick); noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer);
PANEL_MENU.setNotiIcon(THEME.noti_icon_tick);
}
render_process_id = 0; render_process_id = 0;
} }
} }

View file

@ -140,7 +140,7 @@
#endregion #endregion
#region node function #region node function
function nodeLoad(_data, scale = false, _group = PANEL_GRAPH.getCurrentContext()) { function nodeLoad(_data, scale = false, _group = noone) {
if(!is_struct(_data)) return; if(!is_struct(_data)) return;
var _x = _data.x; var _x = _data.x;

View file

@ -192,9 +192,7 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
input_display_list = -1; input_display_list = -1;
anim_priority = -999; anim_priority = -999;
static valueUpdate = function(index) { static valueUpdate = function(index) { RENDER_ALL }
RENDER_ALL
}
static createValue = function() { #region static createValue = function() { #region
var _in = nodeValue("NewValue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); var _in = nodeValue("NewValue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
@ -262,13 +260,14 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
var _inputs = _map.inputs; var _inputs = _map.inputs;
for(var i = 0; i < array_length(_inputs); i++) { for(var i = 0; i < array_length(_inputs); i++) {
var _des = _inputs[i]; var _des = _inputs[i];
var _in = createValue(); var _in = createValue();
var _name = struct_try_get(_des, "global_name", "");
_in.editor.type_index = struct_try_get(_des, "global_type", 0); _in.editor.type_index = struct_try_get(_des, "global_type", 0);
_in.editor.disp_index = struct_try_get(_des, "global_disp", 0); _in.editor.disp_index = struct_try_get(_des, "global_disp", 0);
_in.editor.disp_index = struct_try_get(_des, "global_disp", 0); _in.editor.disp_index = struct_try_get(_des, "global_disp", 0);
_in.editor.value_name = struct_try_get(_des, "global_name", ""); _in.editor.value_name = _name;
_in.editor.slider_range = _des.global_s_range; _in.editor.slider_range = _des.global_s_range;
_in.editor.slider_step = struct_try_get(_des, "global_s_step", 0.01); _in.editor.slider_step = struct_try_get(_des, "global_s_step", 0.01);
@ -276,6 +275,8 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor {
_in.editor.refreshInput(); _in.editor.refreshInput();
_in.applyDeserialize(_des); _in.applyDeserialize(_des);
if(struct_has(PROGRAM_ARGUMENTS, _name)) _in.setValue(PROGRAM_ARGUMENTS[$ _name]);
} }
if(struct_has(_map, "attr")) struct_override(attributes, _map.attr); if(struct_has(_map, "attr")) struct_override(attributes, _map.attr);

View file

@ -13,7 +13,7 @@ function Node_Gradient_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y,
inputs[| 2].array_depth = 1; inputs[| 2].array_depth = 1;
inputs[| 3] = nodeValue("Blending", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) inputs[| 3] = nodeValue("Blending", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Hard", "RGB", "HSV", "OKLAB" ]); .setDisplay(VALUE_DISPLAY.enum_button, [ "Hard", "RGB", "HSV", "OKLAB", "sRGB" ]);
outputs[| 0] = nodeValue("Gradient", self, JUNCTION_CONNECT.output, VALUE_TYPE.gradient, new gradientObject(c_white) ) outputs[| 0] = nodeValue("Gradient", self, JUNCTION_CONNECT.output, VALUE_TYPE.gradient, new gradientObject(c_white) )
@ -46,6 +46,7 @@ function Node_Gradient_Palette(_x, _y, _group = noone) : Node_Processor(_x, _y,
case 1 : grad.type = GRADIENT_INTER.smooth; break; case 1 : grad.type = GRADIENT_INTER.smooth; break;
case 2 : grad.type = GRADIENT_INTER.hue; break; case 2 : grad.type = GRADIENT_INTER.hue; break;
case 3 : grad.type = GRADIENT_INTER.oklab; break; case 3 : grad.type = GRADIENT_INTER.oklab; break;
case 4 : grad.type = GRADIENT_INTER.srgb; break;
} }
return grad; return grad;

View file

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

View file

@ -0,0 +1,71 @@
function Node_Lovify(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Lovify";
color = CDEF.red;
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone );
inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random(6) );
inputs[| 2] = nodeValue("Density", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 3] = nodeValue("Distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1 )
.setDisplay(VALUE_DISPLAY.slider);
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
input_display_list = [ 1,
["Surfaces", false], 0,
["Love", false], 2, 3,
];
attribute_surface_depth();
static processData = function(_outSurf, _data, _output_index, _array_index) {
var _surf = _data[0];
var _seed = _data[1];
var _dens = _data[2];
var _dist = _data[3];
var _dim = surface_get_dimension(_surf);
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth());
random_set_seed(_seed);
var amo = (_dim[0] * _dim[1]) / 8 * _dens;
var sprs = [ s_lovify_heart_6 ];
var sde = max(_dim[0], _dim[1]);
var hmax = 12;
if(sde > 16) { sprs[1] = s_lovify_heart_8; hmax = 16; }
if(sde > 20) { sprs[2] = s_lovify_heart_10; hmax = 20; }
if(sde > 24) { sprs[3] = s_lovify_heart_12; hmax = 24; }
if(sde > 32) { sprs[4] = s_lovify_heart_16; hmax = 32; }
var maxS = min(4, ceil(sde / hmax / 4));
surface_set_target(_outSurf);
DRAW_CLEAR
shader_set(sh_lovify);
draw_surface(_surf, 0, 0);
shader_reset();
repeat(amo) {
var _r = power(random_seed(1, _seed++), _dist) * 0.75;
var _a = random_seed(360, _seed++);
var _x = lengthdir_x(_r, _a) + 0.5;
var _y = lengthdir_y(_r, _a) + 0.5;
_x *= _dim[0];
_y *= _dim[1];
var ss = irandom_range_seed(1, maxS, _seed++);
draw_sprite_ext(sprs[irandom(array_length(sprs) - 1)], 0, _x, _y, ss, ss, 0, c_white, 1);
}
surface_reset_target();
return _outSurf;
}
}

View file

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

View file

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

View file

@ -2,8 +2,11 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
name = _name; name = _name;
spr = _spr; spr = _spr;
node = _node; node = _node;
icon = noone;
createNode = _create; createNode = _create;
self.tags = tags; self.tags = tags;
new_node = false;
tooltip = ""; tooltip = "";
tooltip_spr = noone; tooltip_spr = noone;
@ -14,12 +17,12 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
is_patreon_extra = false; is_patreon_extra = false;
var pth = DIRECTORY + "Nodes/tooltip/" + node + ".png"; if(!IS_CMD) {
if(file_exists_empty(pth)) var pth = DIRECTORY + "Nodes/tooltip/" + node + ".png";
tooltip_spr = sprite_add(pth, 0, false, false, 0, 0); if(file_exists_empty(pth)) tooltip_spr = sprite_add(pth, 0, false, false, 0, 0);
new_node = false; }
if(struct_has(global.NODE_GUIDE, node)) { #region if(!IS_CMD && struct_has(global.NODE_GUIDE, node)) { #region
var _n = global.NODE_GUIDEarn[$ node]; var _n = global.NODE_GUIDEarn[$ node];
name = _n.name; name = _n.name;
if(_n.tooltip != "") if(_n.tooltip != "")
@ -41,6 +44,12 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
return self; return self;
} #endregion } #endregion
static setIcon = function(icon) { #region
INLINE
self.icon = icon;
return self;
} #endregion
static isDeprecated = function() { #region static isDeprecated = function() { #region
INLINE INLINE
deprecated = true; deprecated = true;
@ -105,11 +114,11 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
var fav = array_exists(global.FAV_NODES, node); var fav = array_exists(global.FAV_NODES, node);
if(fav) draw_sprite_ui_uniform(THEME.star, 0, _x + grid_size - ui(10), _y + grid_size - ui(10), 0.7, COLORS._main_accent, 1.); if(fav) draw_sprite_ui_uniform(THEME.star, 0, _x + grid_size - ui(10), _y + grid_size - ui(10), 0.7, COLORS._main_accent, 1.);
var spr_x = _x + grid_size - 4;
var spr_y = _y + 4;
if(IS_PATREON && is_patreon_extra) { if(IS_PATREON && is_patreon_extra) {
var spr_x = _x + grid_size - 4;
var spr_y = _y + 4;
BLEND_SUBTRACT BLEND_SUBTRACT
gpu_set_colorwriteenable(0, 0, 0, 1); gpu_set_colorwriteenable(0, 0, 0, 1);
draw_sprite_ext(s_patreon_supporter, 0, spr_x, spr_y, 1, 1, 0, c_white, 1); draw_sprite_ext(s_patreon_supporter, 0, spr_x, spr_y, 1, 1, 0, c_white, 1);
@ -120,6 +129,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
if(point_in_circle(_mx, _my, spr_x, spr_y, 10)) TOOLTIP = __txt("Supporter exclusive"); if(point_in_circle(_mx, _my, spr_x, spr_y, 10)) TOOLTIP = __txt("Supporter exclusive");
} }
if(icon) draw_sprite_ext(icon, 0, spr_x, spr_y, 1, 1, 0, c_white, 1);
} #endregion } #endregion
static drawList = function(_x, _y, _mx, _my, list_height) { #region static drawList = function(_x, _y, _mx, _my, list_height) { #region
@ -234,13 +245,15 @@ function addNodePCXCatagory(name, list, filter = []) { #region
function __initNodes() { function __initNodes() {
global.__currPage = ""; global.__currPage = "";
var favPath = DIRECTORY + "Nodes/fav.json"; if(!IS_CMD) {
global.FAV_NODES = file_exists_empty(favPath)? json_load_struct(favPath) : []; var favPath = DIRECTORY + "Nodes/fav.json";
if(!is_array(global.FAV_NODES)) global.FAV_NODES = []; global.FAV_NODES = file_exists_empty(favPath)? json_load_struct(favPath) : [];
if(!is_array(global.FAV_NODES)) global.FAV_NODES = [];
var recPath = DIRECTORY + "Nodes/recent.json"; var recPath = DIRECTORY + "Nodes/recent.json";
global.RECENT_NODES = file_exists_empty(recPath)? json_load_struct(recPath) : []; global.RECENT_NODES = file_exists_empty(recPath)? json_load_struct(recPath) : [];
if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = []; if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = [];
}
NODE_PAGE_DEFAULT = ds_list_size(NODE_CATEGORY); NODE_PAGE_DEFAULT = ds_list_size(NODE_CATEGORY);
ADD_NODE_PAGE = NODE_PAGE_DEFAULT; ADD_NODE_PAGE = NODE_PAGE_DEFAULT;
@ -488,6 +501,8 @@ function __initNodes() {
var filter = ds_list_create(); #region var filter = ds_list_create(); #region
addNodeCatagory("Filter", filter); addNodeCatagory("Filter", filter);
addNodeObject(filter, "Lovify", s_node_lovify, "Node_Lovify", [1, Node_Lovify]).setIcon(s_lovify_icon);
ds_list_add(filter, "Combines"); ds_list_add(filter, "Combines");
addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", [0, Node_create_Blend], ["normal", "add", "subtract", "multiply", "screen", "maxx", "minn"], "Blend 2 images using different blendmodes."); addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", [0, Node_create_Blend], ["normal", "add", "subtract", "multiply", "screen", "maxx", "minn"], "Blend 2 images using different blendmodes.");
addNodeObject(filter, "RGBA Combine", s_node_RGB_combine, "Node_Combine_RGB", [1, Node_Combine_RGB],, "Combine 4 image in to one. Each image use to control RGBA channel.").setVersion(1070); addNodeObject(filter, "RGBA Combine", s_node_RGB_combine, "Node_Combine_RGB", [1, Node_Combine_RGB],, "Combine 4 image in to one. Each image use to control RGBA channel.").setVersion(1070);

View file

@ -160,6 +160,7 @@
#region save load #region save load
function PREF_SAVE() { #region function PREF_SAVE() { #region
if(IS_CMD) return;
var map = {}; var map = {};
var save_l = []; var save_l = [];

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,11 @@
function timelineItem() constructor { function timelineItem() constructor {
show = true; show = true;
active = true; active = true;
color = -1; color = -1;
color_cur = CDEF.main_grey; color_cur = CDEF.main_grey;
color_dsp = -1; color_dsp = -1;
parent = noone; parent = noone;
static setColor = function(color) { self.color = color; } static setColor = function(color) { self.color = color; }
static getColor = function() { return color; } static getColor = function() { return color; }

View file

@ -18,6 +18,16 @@ uniform sampler2D gradient_shiftSurf;
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -99,17 +109,25 @@ uniform sampler2D gradient_shiftSurf;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -14,6 +14,16 @@ uniform vec2 dimension;
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -95,17 +105,25 @@ uniform vec2 dimension;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -40,6 +40,16 @@ uniform int uniAsp;
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -121,17 +131,25 @@ uniform int uniAsp;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -11,6 +11,16 @@ varying vec4 v_vColour;
uniform float gradient_time[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT];
uniform int gradient_keys; uniform int gradient_keys;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -87,17 +97,25 @@ varying vec4 v_vColour;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -11,6 +11,16 @@ varying vec4 v_vColour;
uniform float gradient_time[GRADIENT_LIMIT]; uniform float gradient_time[GRADIENT_LIMIT];
uniform int gradient_keys; uniform int gradient_keys;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -87,17 +97,25 @@ varying vec4 v_vColour;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -46,6 +46,16 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -127,17 +137,25 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -44,6 +44,16 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -125,17 +135,25 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -43,6 +43,16 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -124,17 +134,25 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -45,6 +45,16 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -126,17 +136,25 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -19,6 +19,16 @@ uniform float number[BATCH_SIZE];
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -100,17 +110,25 @@ uniform float number[BATCH_SIZE];
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -0,0 +1,26 @@
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
#define SRGB_TO_LINEAR(c) pow((c), vec3(2.2))
#define LINEAR_TO_SRGB(c) pow((c), vec3(1.0 / 2.2))
#define SRGB(r, g, b) SRGB_TO_LINEAR(vec3(r, g, b) / 255.0)
void main() {
vec4 c = texture2D( gm_BaseTexture, v_vTexcoord );
vec3 COLOR0 = SRGB(252., 3., 111.);
vec3 COLOR1 = SRGB(190., 3., 252.);
float t = length(v_vTexcoord) / sqrt(2.);
t = smoothstep(0.0, 1.0, clamp(t, 0.0, 1.0));
vec3 color = mix(COLOR0, COLOR1, t);
color = LINEAR_TO_SRGB(color);
vec4 b = vec4(color, 1.);
float lum = dot(c.rgb, vec3(0.2126, 0.7152, 0.0722));
vec4 blend = lum > 0.5? (1. - (1. - 2. * (b - 0.5)) * (1. - c)) : ((2. * b) * c);
blend = 0.5 + (blend * 1.75 - 0.5) * 0.66;
gl_FragColor = blend;
}

View file

@ -0,0 +1,19 @@
//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_lovify",
"parent": {
"name": "lovify",
"path": "folders/nodes/data/misc/lovify.yy",
},
"type": 1,
}

View file

@ -105,6 +105,16 @@ float curveEval(in float _x) { #region
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -186,17 +196,25 @@ float curveEval(in float _x) { #region
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -43,6 +43,16 @@ uniform int gradient_use;
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -124,17 +134,25 @@ uniform int gradient_use;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -43,6 +43,16 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -124,17 +134,25 @@ float random (in vec2 st) { return fract(sin(dot(st.xy + vec2(85.456034, 64.5406
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

View file

@ -38,6 +38,16 @@ uniform int gradient_use;
uniform vec4 gradient_map_range; uniform vec4 gradient_map_range;
uniform sampler2D gradient_map; uniform sampler2D gradient_map;
vec3 linearToGamma(vec3 c) { return pow(c, vec3( 2.2)); }
vec3 gammaToLinear(vec3 c) { return pow(c, vec3(1. / 2.2)); }
vec3 rgbMix(vec3 c1, vec3 c2, float t) { #region
vec3 k1 = linearToGamma(c1);
vec3 k2 = linearToGamma(c2);
return gammaToLinear(mix(k1, k2, t));
} #endregion
vec3 rgb2oklab(vec3 c) { #region vec3 rgb2oklab(vec3 c) { #region
const mat3 kCONEtoLMS = mat3( const mat3 kCONEtoLMS = mat3(
0.4121656120, 0.2118591070, 0.0883097947, 0.4121656120, 0.2118591070, 0.0883097947,
@ -119,17 +129,25 @@ uniform int gradient_use;
if(i == 0) if(i == 0)
col = gradient_color[i]; col = gradient_color[i];
else { else {
float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]); float t = (prog - gradient_time[i - 1]) / (gradient_time[i] - gradient_time[i - 1]);
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t); vec3 c0 = gradient_color[i - 1].rgb;
vec3 c1 = gradient_color[i].rgb;
float a = mix(gradient_color[i - 1].a, gradient_color[i].a, t);
if(gradient_blend == 0) if(gradient_blend == 0)
col = mix(gradient_color[i - 1], gradient_color[i], t); col = vec4(mix(c0, c1, t), a);
else if(gradient_blend == 1) else if(gradient_blend == 1)
col = gradient_color[i - 1]; col = gradient_color[i - 1];
else if(gradient_blend == 2) else if(gradient_blend == 2)
col = vec4(hsvMix(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(hsvMix(c0, c1, t), a);
else if(gradient_blend == 3) else if(gradient_blend == 3)
col = vec4(oklabMax(gradient_color[i - 1].rgb, gradient_color[i].rgb, t), a); col = vec4(oklabMax(c0, c1, t), a);
else if(gradient_blend == 4)
col = vec4(rgbMix(c0, c1, t), a);
} }
break; break;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_heart_10",
"bbox_bottom": 9,
"bbox_left": 0,
"bbox_right": 9,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ec6c05a3-1afa-4535-b626-fa89043e5a1c",},
],
"gridX": 0,
"gridY": 0,
"height": 10,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"6f5e1bcb-933f-42d4-a7a1-b5c607647da8","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_heart_10",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"ec6c05a3-1afa-4535-b626-fa89043e5a1c","path":"sprites/s_lovify_heart_10/s_lovify_heart_10.yy",},},},"Disabled":false,"id":"ef9df84f-0a91-468a-a3c4-162bf1903f41","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 5,
"yorigin": 5,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 10,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_heart_12",
"bbox_bottom": 11,
"bbox_left": 0,
"bbox_right": 11,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"78d0172b-5ac2-402f-ae37-a33213b71322",},
],
"gridX": 0,
"gridY": 0,
"height": 12,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d3ebb107-5682-4bc9-9413-6e57ae73bfe6","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_heart_12",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"78d0172b-5ac2-402f-ae37-a33213b71322","path":"sprites/s_lovify_heart_12/s_lovify_heart_12.yy",},},},"Disabled":false,"id":"a2efd4f7-d254-40c9-b407-4dce81ff915e","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 6,
"yorigin": 6,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 12,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_heart_16",
"bbox_bottom": 15,
"bbox_left": 0,
"bbox_right": 15,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b5210b91-bcb4-4b9a-aa23-ff9770518890",},
],
"gridX": 0,
"gridY": 0,
"height": 16,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c7d7e132-563b-47ef-8109-cd86fed3f0c9","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_heart_16",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"b5210b91-bcb4-4b9a-aa23-ff9770518890","path":"sprites/s_lovify_heart_16/s_lovify_heart_16.yy",},},},"Disabled":false,"id":"58ff330e-e611-4bdf-bae5-cf52361a093c","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 8,
"yorigin": 8,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 16,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_heart_6",
"bbox_bottom": 5,
"bbox_left": 0,
"bbox_right": 5,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f0e29127-ada5-42d6-872b-7579721152f2",},
],
"gridX": 0,
"gridY": 0,
"height": 6,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ccd92203-1fe7-4598-b979-e3f6bcbe8125","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_heart_6",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"f0e29127-ada5-42d6-872b-7579721152f2","path":"sprites/s_lovify_heart_6/s_lovify_heart_6.yy",},},},"Disabled":false,"id":"0f7674fb-1b08-4f74-8dc2-72c5a65d1481","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 3,
"yorigin": 3,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 6,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_heart_8",
"bbox_bottom": 7,
"bbox_left": 0,
"bbox_right": 7,
"bbox_top": 0,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0187099f-c05b-4480-8ad8-8cdab99fad72",},
],
"gridX": 0,
"gridY": 0,
"height": 8,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"66525455-64e5-4891-957b-f2d6d0295ff1","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_heart_8",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"0187099f-c05b-4480-8ad8-8cdab99fad72","path":"sprites/s_lovify_heart_8/s_lovify_heart_8.yy",},},},"Disabled":false,"id":"2b6d942b-c191-4453-8ea4-229ba23640e6","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 4,
"yorigin": 4,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 8,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_lovify_icon",
"bbox_bottom": 25,
"bbox_left": 6,
"bbox_right": 25,
"bbox_top": 6,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"35d16322-4261-423a-ae41-08c0f4200eee",},
],
"gridX": 0,
"gridY": 0,
"height": 32,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"5771e4ab-ce7f-420f-86ef-dc37f109428f","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 9,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_lovify_icon",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"35d16322-4261-423a-ae41-08c0f4200eee","path":"sprites/s_lovify_icon/s_lovify_icon.yy",},},},"Disabled":false,"id":"1d9ca0c3-630e-4dfc-ab19-a9a39fb5d740","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 20,
"yorigin": 12,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 32,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_node_lovify",
"bbox_bottom": 59,
"bbox_left": 4,
"bbox_right": 59,
"bbox_top": 4,
"bboxMode": 0,
"collisionKind": 1,
"collisionTolerance": 0,
"DynamicTexturePage": false,
"edgeFiltering": false,
"For3D": false,
"frames": [
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0a0aeef0-0788-41b2-9d02-7cfe1a0653f9",},
],
"gridX": 0,
"gridY": 0,
"height": 64,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"0e840a20-06fd-4423-90ac-10db684cea2d","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "spr",
"path": "folders/nodes/data/misc/lovify/spr.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_node_lovify",
"autoRecord": true,
"backdropHeight": 768,
"backdropImageOpacity": 0.5,
"backdropImagePath": "",
"backdropWidth": 1366,
"backdropXOffset": 0.0,
"backdropYOffset": 0.0,
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"0a0aeef0-0788-41b2-9d02-7cfe1a0653f9","path":"sprites/s_node_lovify/s_node_lovify.yy",},},},"Disabled":false,"id":"1a8b337a-13c6-43af-ac2f-16ce34d65ea6","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange": null,
"volume": 1.0,
"xorigin": 32,
"yorigin": 32,
},
"swatchColours": null,
"swfPrecision": 2.525,
"textureGroupId": {
"name": "Default",
"path": "texturegroups/Default",
},
"type": 0,
"VTile": false,
"width": 64,
}