diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 80b87ddf4..a8b03b0bd 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -565,7 +565,6 @@ {"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":"s_node_smokeSim_update","order":10,"path":"sprites/s_node_smokeSim_update/s_node_smokeSim_update.yy",}, - {"name":"s_node_mk_flip_grid","order":2,"path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",}, {"name":"node_3d_depth","order":15,"path":"scripts/node_3d_depth/node_3d_depth.yy",}, {"name":"s_node_vec4","order":9,"path":"sprites/s_node_vec4/s_node_vec4.yy",}, {"name":"vct_knob","order":2,"path":"scripts/vct_knob/vct_knob.yy",}, @@ -582,6 +581,7 @@ {"name":"node_pb_fx_radial","order":9,"path":"scripts/node_pb_fx_radial/node_pb_fx_radial.yy",}, {"name":"node_VFX_variable","order":6,"path":"scripts/node_VFX_variable/node_VFX_variable.yy",}, {"name":"node_array_sort","order":11,"path":"scripts/node_array_sort/node_array_sort.yy",}, + {"name":"s_node_mk_ball_grid","order":3,"path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",}, {"name":"sh_pb_outline","order":2,"path":"shaders/sh_pb_outline/sh_pb_outline.yy",}, {"name":"fd_draw_surface_to_collision_mask_surface","order":2,"path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",}, {"name":"sh_blur_box_contrast","order":3,"path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",}, @@ -823,6 +823,7 @@ {"name":"s_node_array_sample","order":18,"path":"sprites/s_node_array_sample/s_node_array_sample.yy",}, {"name":"s_biterator_b_labels","order":9,"path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",}, {"name":"FirebaseREST_Firestore_collection_decode","order":6,"path":"scripts/FirebaseREST_Firestore_collection_decode/FirebaseREST_Firestore_collection_decode.yy",}, + {"name":"s_node_mk_flip_grid","order":2,"path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",}, {"name":"d3d_ray","order":9,"path":"scripts/d3d_ray/d3d_ray.yy",}, {"name":"sh_combine_hsv","order":10,"path":"shaders/sh_combine_hsv/sh_combine_hsv.yy",}, {"name":"s_node_array_insert","order":4,"path":"sprites/s_node_array_insert/s_node_array_insert.yy",}, @@ -1064,6 +1065,7 @@ {"name":"s_node_pb_box_mirror","order":21,"path":"sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy",}, {"name":"__node_shader_generator","order":22,"path":"scripts/__node_shader_generator/__node_shader_generator.yy",}, {"name":"node_global","order":3,"path":"scripts/node_global/node_global.yy",}, + {"name":"s_node_mk_saber","order":1,"path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",}, {"name":"spr_gameframe_buttons","order":1,"path":"sprites/spr_gameframe_buttons/spr_gameframe_buttons.yy",}, {"name":"s_node_draw_stack","order":4,"path":"sprites/s_node_draw_stack/s_node_draw_stack.yy",}, {"name":"sh_d3d_grid_view","order":12,"path":"shaders/sh_d3d_grid_view/sh_d3d_grid_view.yy",}, @@ -1418,7 +1420,6 @@ {"name":"s_node_separate_file_path","order":14,"path":"sprites/s_node_separate_file_path/s_node_separate_file_path.yy",}, {"name":"node_scale_algo","order":12,"path":"scripts/node_scale_algo/node_scale_algo.yy",}, {"name":"s_node_image_replace","order":55,"path":"sprites/s_node_image_replace/s_node_image_replace.yy",}, - {"name":"s_node_mk_saber","order":3,"path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",}, {"name":"node_alpha_hash","order":11,"path":"scripts/node_alpha_hash/node_alpha_hash.yy",}, {"name":"sh_mask_modify","order":2,"path":"shaders/sh_mask_modify/sh_mask_modify.yy",}, {"name":"toggleGroup","order":31,"path":"scripts/toggleGroup/toggleGroup.yy",}, @@ -1437,6 +1438,7 @@ {"name":"sh_shadow_cast_light_sep","order":1,"path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",}, {"name":"node_audio_loudness","order":1,"path":"scripts/node_audio_loudness/node_audio_loudness.yy",}, {"name":"node_grid","order":1,"path":"scripts/node_grid/node_grid.yy",}, + {"name":"s_node_mk_rain","order":4,"path":"sprites/s_node_mk_rain/s_node_mk_rain.yy",}, {"name":"node_edge_detect","order":8,"path":"scripts/node_edge_detect/node_edge_detect.yy",}, {"name":"node_morph_surface","order":5,"path":"scripts/node_morph_surface/node_morph_surface.yy",}, {"name":"node_tunnel_in","order":6,"path":"scripts/node_tunnel_in/node_tunnel_in.yy",}, @@ -1502,6 +1504,7 @@ {"name":"node_base_convert","order":7,"path":"scripts/node_base_convert/node_base_convert.yy",}, {"name":"node_3d_mesh_plane","order":7,"path":"scripts/node_3d_mesh_plane/node_3d_mesh_plane.yy",}, {"name":"s_node_normal_light","order":31,"path":"sprites/s_node_normal_light/s_node_normal_light.yy",}, + {"name":"node_tile_random","order":16,"path":"scripts/node_tile_random/node_tile_random.yy",}, {"name":"Obj_FirebaseFirestore_Document_Update","order":7,"path":"objects/Obj_FirebaseFirestore_Document_Update/Obj_FirebaseFirestore_Document_Update.yy",}, {"name":"node_transform_single","order":1,"path":"scripts/node_transform_single/node_transform_single.yy",}, {"name":"node_string_length","order":7,"path":"scripts/node_string_length/node_string_length.yy",}, @@ -1544,7 +1547,6 @@ {"name":"s_node_smokeSim_update_paused","order":5,"path":"sprites/s_node_smokeSim_update_paused/s_node_smokeSim_update_paused.yy",}, {"name":"s_node_ase_file","order":15,"path":"sprites/s_node_ase_file/s_node_ase_file.yy",}, {"name":"draw_line_round","order":4,"path":"scripts/draw_line_round/draw_line_round.yy",}, - {"name":"s_node_mk_ball_grid","order":1,"path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",}, {"name":"vectorBox","order":10,"path":"scripts/vectorBox/vectorBox.yy",}, {"name":"sh_3d_extrude_corner","order":7,"path":"shaders/sh_3d_extrude_corner/sh_3d_extrude_corner.yy",}, {"name":"sh_blend_normal_dim","order":10,"path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",}, @@ -1727,6 +1729,7 @@ {"name":"sprite_loader","order":11,"path":"scripts/sprite_loader/sprite_loader.yy",}, {"name":"fd_rectangle_get_material_surface","order":12,"path":"scripts/fd_rectangle_get_material_surface/fd_rectangle_get_material_surface.yy",}, {"name":"fd_rectangle_clear","order":6,"path":"scripts/fd_rectangle_clear/fd_rectangle_clear.yy",}, + {"name":"sh_tile_random","order":56,"path":"shaders/sh_tile_random/sh_tile_random.yy",}, {"name":"d3d_cone","order":5,"path":"scripts/d3d_cone/d3d_cone.yy",}, {"name":"__rectangle","order":7,"path":"scripts/__rectangle/__rectangle.yy",}, {"name":"node_PCX_fn_random","order":1,"path":"scripts/node_PCX_fn_random/node_PCX_fn_random.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index f0f828022..4ae0afa1a 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -1310,6 +1310,7 @@ {"id":{"name":"node_array","path":"scripts/node_array/node_array.yy",},}, {"id":{"name":"discordBridge","path":"extensions/discordBridge/discordBridge.yy",},}, {"id":{"name":"pack_corner","path":"scripts/pack_corner/pack_corner.yy",},}, + {"id":{"name":"s_node_mk_tile","path":"sprites/s_node_mk_tile/s_node_mk_tile.yy",},}, {"id":{"name":"s_node_websocket","path":"sprites/s_node_websocket/s_node_websocket.yy",},}, {"id":{"name":"sh_colorize","path":"shaders/sh_colorize/sh_colorize.yy",},}, {"id":{"name":"node_string","path":"scripts/node_string/node_string.yy",},}, @@ -1582,7 +1583,6 @@ {"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":"s_node_smokeSim_update","path":"sprites/s_node_smokeSim_update/s_node_smokeSim_update.yy",},}, - {"id":{"name":"s_node_mk_flip_grid","path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",},}, {"id":{"name":"node_3d_depth","path":"scripts/node_3d_depth/node_3d_depth.yy",},}, {"id":{"name":"s_node_vec4","path":"sprites/s_node_vec4/s_node_vec4.yy",},}, {"id":{"name":"vct_knob","path":"scripts/vct_knob/vct_knob.yy",},}, @@ -1601,6 +1601,7 @@ {"id":{"name":"node_pb_fx_radial","path":"scripts/node_pb_fx_radial/node_pb_fx_radial.yy",},}, {"id":{"name":"node_VFX_variable","path":"scripts/node_VFX_variable/node_VFX_variable.yy",},}, {"id":{"name":"node_array_sort","path":"scripts/node_array_sort/node_array_sort.yy",},}, + {"id":{"name":"s_node_mk_ball_grid","path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",},}, {"id":{"name":"sh_pb_outline","path":"shaders/sh_pb_outline/sh_pb_outline.yy",},}, {"id":{"name":"fd_draw_surface_to_collision_mask_surface","path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",},}, {"id":{"name":"s_node_pixel_builder","path":"sprites/s_node_pixel_builder/s_node_pixel_builder.yy",},}, @@ -1881,6 +1882,7 @@ {"id":{"name":"s_node_array_sample","path":"sprites/s_node_array_sample/s_node_array_sample.yy",},}, {"id":{"name":"s_biterator_b_labels","path":"sprites/s_biterator_b_labels/s_biterator_b_labels.yy",},}, {"id":{"name":"FirebaseREST_Firestore_collection_decode","path":"scripts/FirebaseREST_Firestore_collection_decode/FirebaseREST_Firestore_collection_decode.yy",},}, + {"id":{"name":"s_node_mk_flip_grid","path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",},}, {"id":{"name":"d3d_ray","path":"scripts/d3d_ray/d3d_ray.yy",},}, {"id":{"name":"sh_combine_hsv","path":"shaders/sh_combine_hsv/sh_combine_hsv.yy",},}, {"id":{"name":"s_node_array_insert","path":"sprites/s_node_array_insert/s_node_array_insert.yy",},}, @@ -2154,6 +2156,7 @@ {"id":{"name":"s_node_pb_box_mirror","path":"sprites/s_node_pb_box_mirror/s_node_pb_box_mirror.yy",},}, {"id":{"name":"__node_shader_generator","path":"scripts/__node_shader_generator/__node_shader_generator.yy",},}, {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},}, + {"id":{"name":"s_node_mk_saber","path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",},}, {"id":{"name":"spr_gameframe_buttons","path":"sprites/spr_gameframe_buttons/spr_gameframe_buttons.yy",},}, {"id":{"name":"s_node_draw_stack","path":"sprites/s_node_draw_stack/s_node_draw_stack.yy",},}, {"id":{"name":"sh_d3d_grid_view","path":"shaders/sh_d3d_grid_view/sh_d3d_grid_view.yy",},}, @@ -2236,7 +2239,6 @@ {"id":{"name":"node_random","path":"scripts/node_random/node_random.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Collection_Query_LessThan","path":"objects/Obj_FirebaseFirestore_Collection_Query_LessThan/Obj_FirebaseFirestore_Collection_Query_LessThan.yy",},}, {"id":{"name":"sh_channel_A","path":"shaders/sh_channel_A/sh_channel_A.yy",},}, - {"id":{"name":"s_node_mk_rain","path":"sprites/s_node_mk_rain/s_node_mk_rain.yy",},}, {"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},}, {"id":{"name":"sh_blend_sat","path":"shaders/sh_blend_sat/sh_blend_sat.yy",},}, {"id":{"name":"s_node_feedback","path":"sprites/s_node_feedback/s_node_feedback.yy",},}, @@ -2561,7 +2563,6 @@ {"id":{"name":"s_node_separate_file_path","path":"sprites/s_node_separate_file_path/s_node_separate_file_path.yy",},}, {"id":{"name":"node_scale_algo","path":"scripts/node_scale_algo/node_scale_algo.yy",},}, {"id":{"name":"s_node_image_replace","path":"sprites/s_node_image_replace/s_node_image_replace.yy",},}, - {"id":{"name":"s_node_mk_saber","path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",},}, {"id":{"name":"node_alpha_hash","path":"scripts/node_alpha_hash/node_alpha_hash.yy",},}, {"id":{"name":"node_PCX_condition","path":"scripts/node_PCX_condition/node_PCX_condition.yy",},}, {"id":{"name":"sh_mask_modify","path":"shaders/sh_mask_modify/sh_mask_modify.yy",},}, @@ -2582,6 +2583,7 @@ {"id":{"name":"sh_shadow_cast_light_sep","path":"shaders/sh_shadow_cast_light_sep/sh_shadow_cast_light_sep.yy",},}, {"id":{"name":"node_audio_loudness","path":"scripts/node_audio_loudness/node_audio_loudness.yy",},}, {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},}, + {"id":{"name":"s_node_mk_rain","path":"sprites/s_node_mk_rain/s_node_mk_rain.yy",},}, {"id":{"name":"o_crash_handler","path":"objects/o_crash_handler/o_crash_handler.yy",},}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},}, {"id":{"name":"node_morph_surface","path":"scripts/node_morph_surface/node_morph_surface.yy",},}, @@ -2659,6 +2661,7 @@ {"id":{"name":"node_base_convert","path":"scripts/node_base_convert/node_base_convert.yy",},}, {"id":{"name":"node_3d_mesh_plane","path":"scripts/node_3d_mesh_plane/node_3d_mesh_plane.yy",},}, {"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},}, + {"id":{"name":"node_tile_random","path":"scripts/node_tile_random/node_tile_random.yy",},}, {"id":{"name":"Obj_FirebaseFirestore_Document_Update","path":"objects/Obj_FirebaseFirestore_Document_Update/Obj_FirebaseFirestore_Document_Update.yy",},}, {"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},}, {"id":{"name":"node_string_length","path":"scripts/node_string_length/node_string_length.yy",},}, @@ -2708,7 +2711,6 @@ {"id":{"name":"s_node_smokeSim_update_paused","path":"sprites/s_node_smokeSim_update_paused/s_node_smokeSim_update_paused.yy",},}, {"id":{"name":"s_node_ase_file","path":"sprites/s_node_ase_file/s_node_ase_file.yy",},}, {"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},}, - {"id":{"name":"s_node_mk_ball_grid","path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",},}, {"id":{"name":"vectorBox","path":"scripts/vectorBox/vectorBox.yy",},}, {"id":{"name":"sh_3d_extrude_corner","path":"shaders/sh_3d_extrude_corner/sh_3d_extrude_corner.yy",},}, {"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},}, @@ -2918,6 +2920,7 @@ {"id":{"name":"sprite_loader","path":"scripts/sprite_loader/sprite_loader.yy",},}, {"id":{"name":"fd_rectangle_get_material_surface","path":"scripts/fd_rectangle_get_material_surface/fd_rectangle_get_material_surface.yy",},}, {"id":{"name":"fd_rectangle_clear","path":"scripts/fd_rectangle_clear/fd_rectangle_clear.yy",},}, + {"id":{"name":"sh_tile_random","path":"shaders/sh_tile_random/sh_tile_random.yy",},}, {"id":{"name":"instance_create","path":"scripts/instance_create/instance_create.yy",},}, {"id":{"name":"d3d_cone","path":"scripts/d3d_cone/d3d_cone.yy",},}, {"id":{"name":"__rectangle","path":"scripts/__rectangle/__rectangle.yy",},}, diff --git a/scripts/node_blur_zoom/node_blur_zoom.gml b/scripts/node_blur_zoom/node_blur_zoom.gml index 014713c68..e5b5921c2 100644 --- a/scripts/node_blur_zoom/node_blur_zoom.gml +++ b/scripts/node_blur_zoom/node_blur_zoom.gml @@ -67,9 +67,9 @@ function Node_Blur_Zoom(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) _cen[1] /= surface_get_height_safe(_outSurf); surface_set_shader(_outSurf, sh_blur_zoom); - shader_set_f("strength", _str); - shader_set_f("center", _cen); - shader_set_i("blurMode", _blr); + shader_set_f("strength", _str); + shader_set_f("center", _cen); + shader_set_i("blurMode", _blr); shader_set_i("sampleMode", _sam); shader_set_i("useMask", is_surface(_msk)); diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index cf855c7a6..fb04dbcdb 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -205,6 +205,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x passiveDynamic = false; topoSorted = false; temp_surface = []; + force_requeue = false; is_group_io = false; #endregion @@ -244,6 +245,10 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x clearCacheOnChange = true; #endregion + #region ---- log ---- + messages = []; + #endregion + static createNewInput = noone; static initTooltip = function() { #region @@ -439,6 +444,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x if(update_on_frame) return true; if(!rendered) return true; + force_requeue = false; for(var i = 0; i < ds_list_size(inputs); i++) if(inputs[| i].isActiveDynamic(frame)) return true; diff --git a/scripts/node_functions/node_functions.gml b/scripts/node_functions/node_functions.gml index d4aa672dc..218d77567 100644 --- a/scripts/node_functions/node_functions.gml +++ b/scripts/node_functions/node_functions.gml @@ -247,19 +247,19 @@ str = string_trim(str); var strs = string_splice(str, "."); - if(array_length(strs) == 0) return [ 0, true ]; + if(array_length(strs) == 0) return 0; if(array_length(strs) == 1) { - return [ EXPRESS_TREE_ANIM.none, true ]; + return EXPRESS_TREE_ANIM.none; } else if(struct_has(PROJECT_VARIABLES, strs[0])) { var _str_var = PROJECT_VARIABLES[$ strs[0]]; - if(!struct_has(_str_var, strs[1])) return [ EXPRESS_TREE_ANIM.none, true ]; + if(!struct_has(_str_var, strs[1])) return EXPRESS_TREE_ANIM.none; var val = _str_var[$ strs[1]][1]; - return [ val, true ]; + return val; } else if(array_length(strs) > 2) { var key = strs[0]; - if(!ds_map_exists(PROJECT.nodeNameMap, key)) return [ EXPRESS_TREE_ANIM.none, true ]; + if(!ds_map_exists(PROJECT.nodeNameMap, key)) return EXPRESS_TREE_ANIM.none; var node = PROJECT.nodeNameMap[? key]; var map = noone; @@ -272,18 +272,18 @@ case "output" : map = node.outputMap; break; - default : return [ EXPRESS_TREE_ANIM.none, true ]; + default : return EXPRESS_TREE_ANIM.none; } var _junc_key = string_lower(strs[2]); var _junc = ds_map_try_get(map, _junc_key, noone); - if(_junc == noone) return [ EXPRESS_TREE_ANIM.none, true ]; + if(_junc == noone) return EXPRESS_TREE_ANIM.none; - return [ _junc.is_anim * 2, false ]; + return _junc.is_anim * 2; } - return [ EXPRESS_TREE_ANIM.none, true ]; + return EXPRESS_TREE_ANIM.none; } function create_preview_window(node) { diff --git a/scripts/node_mk_flag/node_mk_flag.gml b/scripts/node_mk_flag/node_mk_flag.gml index f2ec7099d..a36b22d60 100644 --- a/scripts/node_mk_flag/node_mk_flag.gml +++ b/scripts/node_mk_flag/node_mk_flag.gml @@ -1,36 +1,211 @@ function Node_MK_Flag(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "MK Flag"; + update_on_frame = true; inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF) .setDisplay(VALUE_DISPLAY.vector); - inputs[| 1] = nodeValue("Point 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + inputs[| 1] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + inputs[| 2] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) .setDisplay(VALUE_DISPLAY.vector); - inputs[| 2] = nodeValue("Point 2", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16 ]) - .setDisplay(VALUE_DISPLAY.vector); + inputs[| 3] = nodeValue("Pin side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Left", "Right", "Up", "Down" ]); + + inputs[| 4] = nodeValue("Subdivision", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8); + + inputs[| 5] = nodeValue("Wind speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2); + + inputs[| 6] = nodeValue("Wave width", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2); + + inputs[| 7] = nodeValue("Wave size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4); + + inputs[| 8] = nodeValue("Phase", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + .setDisplay(VALUE_DISPLAY.slider); input_display_list = [ 0, - ["Saber", false], 1, 2, + ["Flag", false], 4, 1, 2, 3, + ["Wave", false], 6, 7, 5, 8, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); - static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region - var _a = inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); active &= _a; - var _a = inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); active &= _a; + attributes.iteration = 4; + array_push(attributeEditors, "Verlet solver"); + array_push(attributeEditors, ["Iteration", function() { return attributes.iteration; }, + new textBox(TEXTBOX_INPUT.number, function(val) { + attributes.iteration = val; + triggerRender(); + })]); + + function fPoints(_x, _y, _u, _v) constructor { #region + x = _x; + y = _y; + sx = _x; + sy = _y; + u = _u; + v = _v; + pin = false; } #endregion - static processData = function(_outSurf, _data, _output_index, _array_index) { - var _dim = _data[0]; - var _pnt1 = _data[1]; - var _pnt2 = _data[2]; + function fLink(_p0, _p1) constructor { #region + p0 = _p0; + p1 = _p1; + dist = point_distance(_p0.x, _p0.y, _p1.x, _p1.y); + } #endregion + + function fMesh(_p0, _p1, _p2) constructor { #region + p0 = _p0; + p1 = _p1; + p2 = _p2; + } #endregion + + points = []; + links = []; + meshes = []; + + static setGeometry = function() { #region + var _surf = getSingleValue(1); if(!is_surface(_surf)) return; + var _start = getSingleValue(2); + var _pinn = getSingleValue(3); + var _subd = getSingleValue(4); + + var _sw = surface_get_width_safe(_surf); + var _sh = surface_get_height_safe(_surf); + + points = array_create((_subd + 1) * (_subd + 1)); + links = array_create(2 * _subd * (_subd + 1)); + meshes = array_create(2 * _subd * _subd); + + var _ind = 0; + for( var i = 0; i <= _subd; i++ ) + for( var j = 0; j <= _subd; j++ ) { + var _x = _start[0] + i / _subd * _sw; + var _y = _start[1] + j / _subd * _sh; + + points[_ind++] = new fPoints(_x, _y, i / _subd, j / _subd); + } + + switch(_pinn) { + case 0 : for( var i = 0; i <= _subd; i++ ) points[i].pin = true; break; + case 1 : for( var i = 0; i <= _subd; i++ ) points[_subd * (_subd + 1) + i].pin = true; break; + case 2 : for( var i = 0; i <= _subd; i++ ) points[i * (_subd + 1) + 0].pin = true; break; + case 3 : for( var i = 0; i <= _subd; i++ ) points[i * (_subd + 1) + _subd].pin = true; break; + } + + var _ind = 0; + for( var k = 0; k < 2; k++) + for( var i = 0; i < _subd; i++ ) + for( var j = 0; j <= _subd; j++ ) { + var p0x = k? i : j; + var p0y = k? j : i; + var p1x = k? i + 1 : j; + var p1y = k? j : i + 1; + + var i0 = p0y * (_subd + 1) + p0x; + var i1 = p1y * (_subd + 1) + p1x; + + links[_ind++] = new fLink(points[i0], points[i1]); + } + + var _ind = 0; + for( var i = 0; i < _subd; i++ ) + for( var j = 0; j < _subd; j++ ) { + var i0 = i * (_subd + 1) + j; + var i1 = i * (_subd + 1) + j + 1; + var i2 = (i + 1) * (_subd + 1) + j; + + meshes[_ind++] = new fMesh(points[i0], points[i1], points[i2]); + + var i0 = i * (_subd + 1) + j + 1; + var i1 = (i + 1) * (_subd + 1) + j; + var i2 = (i + 1) * (_subd + 1) + j + 1; + + meshes[_ind++] = new fMesh(points[i0], points[i1], points[i2]); + } + } #endregion + + static stepFlag = function() { #region + var _pinn = getSingleValue(3); + var _wspd = getSingleValue(5); + var _wave = getSingleValue(6); + var _wavz = getSingleValue(7); + var _wphs = getSingleValue(8); + + var _tps = CURRENT_FRAME / TOTAL_FRAMES * _wspd * pi * 2; + + for( var i = 0, n = array_length(points); i < n; i++ ) { + var p = points[i]; + + switch(_pinn) { + case 0 : + var y0 = p.sy + max(-0.2, sin(p.u * pi * _wave - _tps)) * _wavz * p.u; + var y1 = p.sy + min( 0.2, sin((p.u - _wphs) * pi * _wave - _tps)) * _wavz * p.u; + + p.y = lerp(y0, y1, p.v); + break; + } + } + } #endregion + + static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region + var _a = inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); active &= _a; + + //for( var i = 0, n = array_length(links); i < n; i++ ) { + // var _l = links[i]; + + // var p0 = _l.p0; + // var p1 = _l.p1; + + // var _p0x = _x + p0.x * _s; + // var _p0y = _y + p0.y * _s; + // var _p1x = _x + p1.x * _s; + // var _p1y = _y + p1.y * _s; + + // if(p0.pin && p1.pin) { + // draw_set_color(COLORS._main_text); + // draw_line_width(_p0x, _p0y, _p1x, _p1y, 2); + // } else { + // draw_set_color(COLORS._main_accent); + // draw_line(_p0x, _p0y, _p1x, _p1y); + // } + //} + } #endregion + + static processData_prebatch = function() { #region + if(CURRENT_FRAME == 0) setGeometry(); + stepFlag(); + } #endregion + + static processData = function(_outSurf, _data, _output_index, _array_index) { #region + var _dim = _data[0]; + var _tex = _data[1]; + + _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); + if(!is_surface(_tex)) return _outSurf; surface_set_target(_outSurf); DRAW_CLEAR + draw_set_color(c_white); + draw_primitive_begin_texture(pr_trianglelist, surface_get_texture(_tex)); + + for( var i = 0, n = array_length(meshes); i < n; i++ ) { + var m = meshes[i]; + + var p0 = m.p0; + var p1 = m.p1; + var p2 = m.p2; + + draw_vertex_texture(p0.x, p0.y, p0.u, p0.v); + draw_vertex_texture(p1.x, p1.y, p1.u, p1.v); + draw_vertex_texture(p2.x, p2.y, p2.u, p2.v); + } + + draw_primitive_end(); surface_reset_target(); return _outSurf; - } + } #endregion } \ No newline at end of file diff --git a/scripts/node_mk_tile/node_mk_tile.gml b/scripts/node_mk_tile/node_mk_tile.gml index cbf722d65..2e4e96986 100644 --- a/scripts/node_mk_tile/node_mk_tile.gml +++ b/scripts/node_mk_tile/node_mk_tile.gml @@ -4,18 +4,18 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 0] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); - inputs[| 1] = nodeValue("Background Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + inputs[| 1] = nodeValue("Background texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); inputs[| 2] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Corner (18 sprites)", "Corner + Side (55 sprites)" ] ); - inputs[| 3] = nodeValue("Output Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + inputs[| 3] = nodeValue("Output type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Sheet", "Array" ] ); inputs[| 4] = nodeValue("Crop", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 8, 8, 8, 8 ]) .setDisplay(VALUE_DISPLAY.padding); - inputs[| 5] = nodeValue("Edge Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + inputs[| 5] = nodeValue("Edge type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Individual" ] ); inputs[| 6] = nodeValue("Edge", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); @@ -29,17 +29,18 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c inputs[| 11] = nodeValue("Full edge", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.toggle, { data: [ "T", "B", "L", "R" ] }); - inputs[| 12] = nodeValue("Extend edge", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false) - - inputs[| 13] = nodeValue("Edge sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + inputs[| 12] = nodeValue("Edge sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Single", "Side + Center", "Side + Center + Side" ] ); + inputs[| 13] = nodeValue("Edge transform", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Flip", "Rotate" ] ); + input_display_list = [ - ["Surfaces", false], 0, 1, - ["Tiling", false], 2, 4, - ["Edge", false], 5, 13, 10, 11, 12, + ["Surfaces", true], 0, 1, + ["Tile set", false], 2, 4, + ["Edge", false], 5, 12, 13, 10, 11, ["Edge Textures", true], 6, 7, 8, 9, - ["Output", false], 3, + ["Output", false], 3, ]; outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -48,30 +49,31 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c for( var i = 0, n = array_length(temp_surface); i < n; i++ ) temp_surface[i] = array_create(1, 1); - __edge_surface = array_create(12); - __edge_buffer = [ surface_create(1, 1), surface_create(1, 1)]; + __edge_uniform = array_create(4); + __edge_surface = array_create(4 * 7); + __edge_buffer = [ surface_create(1, 1), surface_create(1, 1), surface_create(1, 1) ]; edge_surface = []; #region index - index_18 = [ 0, 8, 12, 4, 7, 11, - 0, 10, 15, 5, 13, 14, - 0, 2, 3, 1, 9, 6]; + index_18 = [ 0, /**/ 8, 12, 4, /**/ 7, 11, + 0, /**/ 10, 15, 5, /**/ 13, 14, + 0, /**/ 2, 3, 1, /**/ 9, 6]; - index_18_et = [ 0, 0, 1, 2, 0, 0, - 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 2]; + index_18_et = [ 0, /**/ 0, 1, 2, /**/ 0, 0, + 0, /**/ 0, 0, 0, /**/ 3, 4, + 0, /**/ 0, 0, 0, /**/ 3, 4]; - index_18_eb = [ 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 2, 0]; + index_18_eb = [ 0, /**/ 0, 0, 0, /**/ 3, 4, + 0, /**/ 0, 0, 0, /**/ 0, 0, + 0, /**/ 0, 1, 2, /**/ 4, 3]; - index_18_el = [ 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 2, - 0, 2, 0, 0, 0, 2]; + index_18_el = [ 0, /**/ 0, 0, 0, /**/ 0, 3, + 0, /**/ 1, 0, 0, /**/ 0, 4, + 0, /**/ 2, 0, 0, /**/ 3, 4]; - index_18_er = [ 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 2, 0, - 0, 0, 0, 2, 2, 0]; + index_18_er = [ 0, /**/ 0, 0, 0, /**/ 3, 0, + 0, /**/ 0, 0, 1, /**/ 4, 0, + 0, /**/ 0, 0, 2, /**/ 4, 3]; index_55 = [208, 224, 104, /**/ 64, /**/ 80, 120, 216, 72, /**/ 88, 219, -1, 148, 255, 41, /**/ 66, /**/ 86, 127, 223, 75, /**/ 95, 126, -1, @@ -79,29 +81,29 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c 16, 24, 8, /**/ 0, /**/ 18, 27, 30, 10, /**/ 26, 94, 91, -1, -1, -1, /**/ -1, /**/ 82, 123, 222, 74, /**/ 90, -1, -1]; - index_55_et = [ 0, 1, 2, /**/ 1, /**/ 0, 1, 1, 0, /**/ 1, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 2, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 2, 2, /**/ 0, 0, 0, - 0, 1, 2, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, ]; + index_55_et = [ 0, 1, 2, /**/ 5, /**/ 0, 1, 1, 2, /**/ 1, 3, 0, + 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 4, 0, + 0, 0, 0, /**/ 0, /**/ 3, 3, 4, 4, /**/ 6, 6, 6, + 0, 1, 2, /**/ 5, /**/ 3, 3, 4, 4, /**/ 6, 3, 4, + 0, 0, 0, /**/ 0, /**/ 3, 3, 4, 4, /**/ 6, 0, 0, ]; - index_55_eb = [ 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, ]; + index_55_eb = [ 0, 0, 0, /**/ 0, /**/ 3, 3, 4, 4, /**/ 6, 4, 0, + 0, 0, 0, /**/ 0, /**/ 3, 3, 4, 4, /**/ 6, 3, 0, + 0, 1, 2, /**/ 5, /**/ 0, 0, 0, 0, /**/ 0, 4, 3, + 0, 1, 2, /**/ 5, /**/ 0, 1, 1, 2, /**/ 1, 6, 6, + 0, 0, 0, /**/ 0, /**/ 3, 3, 4, 4, /**/ 6, 0, 0, ]; - index_55_el = [ 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, ]; + index_55_el = [ 0, 0, 0, /**/ 0, /**/ 0, 0, 3, 3, /**/ 4, 3, 0, + 1, 0, 0, /**/ 1, /**/ 1, 0, 3, 3, /**/ 4, 4, 0, + 2, 0, 0, /**/ 2, /**/ 1, 0, 4, 4, /**/ 4, 6, 4, + 5, 0, 0, /**/ 5, /**/ 2, 0, 4, 4, /**/ 4, 6, 3, + 0, 0, 0, /**/ 0, /**/ 1, 0, 6, 6, /**/ 6, 0, 0, ]; - index_55_er = [ 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, - 0, 0, 0, /**/ 0, /**/ 0, 0, 0, 0, /**/ 0, 0, 0, ]; + index_55_er = [ 0, 0, 0, /**/ 0, /**/ 3, 3, 0, 0, /**/ 3, 4, 0, + 0, 0, 1, /**/ 1, /**/ 3, 3, 0, 1, /**/ 3, 3, 0, + 0, 0, 2, /**/ 2, /**/ 4, 4, 0, 1, /**/ 4, 4, 6, + 0, 0, 5, /**/ 5, /**/ 4, 4, 0, 2, /**/ 4, 3, 6, + 0, 0, 0, /**/ 0, /**/ 6, 6, 0, 1, /**/ 6, 0, 0, ]; #endregion static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region @@ -112,10 +114,11 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _edgType = getSingleValue( 5); var _edgFull = getSingleValue(11); - inputs[| 6].name = _edgType == 1? "Edge top" : "Edge" - inputs[| 7].setVisible(_edgType == 1, _edgType == 1); - inputs[| 8].setVisible(_edgType == 1, _edgType == 1); - inputs[| 9].setVisible(_edgType == 1, _edgType == 1); + inputs[| 6].name = _edgType == 1? "Edge top" : "Edge" + inputs[| 7].setVisible(_edgType == 1, _edgType == 1); + inputs[| 8].setVisible(_edgType == 1, _edgType == 1); + inputs[| 9].setVisible(_edgType == 1, _edgType == 1); + inputs[| 13].setVisible(_edgType == 0); } #endregion static generate18 = function(_data, _tex0, _tex1, _edge, _crop) { #region @@ -131,7 +134,6 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _edgeShf = _data[10]; var _edgFull = _data[11]; - var _edgExtn = _data[12]; for( var i = 0; i < 18; i++ ) { var _index = index_18[i]; @@ -169,8 +171,7 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0100)); - shader_set_i("extendEdge", _edgExtn); - + draw_surface_ext(_el, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); } #endregion @@ -181,8 +182,6 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b1000)); - shader_set_i("extendEdge", _edgExtn); - draw_surface_ext(_er, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); @@ -194,7 +193,6 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0001)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_et, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); @@ -206,7 +204,6 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0010)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_eb, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); @@ -233,7 +230,6 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var b = _crop[3]; var _edgFull = _data[11]; - var _edgExtn = _data[12]; for( var i = 0; i < 55; i++ ) { var _index = index_55[i]; @@ -268,54 +264,50 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c if(_index & 0b0000_1011 >= 0b0000_1011) draw_surface_part(_tex0, 0, 0, _sw - r, _sh - b, 0, 0); if(_index & 0b0001_0110 >= 0b0001_0110) draw_surface_part(_tex0, l, 0, _sw - l, _sh - b, l, 0); - var _et = _edge[0][1]; - var _eb = _edge[1][1]; - var _el = _edge[2][1]; - var _er = _edge[3][1]; + var _et = _edge[0][index_55_et[i]]; + var _eb = _edge[1][index_55_eb[i]]; + var _el = _edge[2][index_55_el[i]]; + var _er = _edge[3][index_55_er[i]]; - if(_el == noone) { #region + if(_el != noone) { #region shader_set(sh_mk_tile55_edge_l); shader_set_f("dimension", _sw, _sh); shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0100)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_el, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); } #endregion - if(_er == noone) { #region + if(_er != noone) { #region shader_set(sh_mk_tile55_edge_r); shader_set_f("dimension", _sw, _sh); shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b1000)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_er, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); } #endregion - if(_et == noone) { #region + if(_et != noone) { #region shader_set(sh_mk_tile55_edge_t); shader_set_f("dimension", _sw, _sh); shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0001)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_et, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); } #endregion - if(_eb == noone) { #region + if(_eb != noone) { #region shader_set(sh_mk_tile55_edge_b); shader_set_f("dimension", _sw, _sh); shader_set_f("crop", _crop); shader_set_i("edge", _index); shader_set_i("fullEdge", bool(_edgFull & 0b0010)); - shader_set_i("extendEdge", _edgExtn); draw_surface_ext(_eb, 0, 0, 1, 1, 0, c_white, 1); shader_reset(); @@ -340,11 +332,11 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _edgType = _data[5]; var _edgeShf = _data[10]; var _edgFull = _data[11]; - var _edgSprt = _data[13]; + var _edgSprt = _data[12]; + var _edgTran = _data[13]; var _edges = _edgType == 0? [ _data[6], _data[6], _data[6], _data[6] ] : [ _data[6], _data[7], _data[8], _data[9] ]; var _edge; - var _rot = [ 0, 180, 90, 270 ]; var _shi = [ 1, 3, 2, 0 ]; var _sw = surface_get_width_safe(_tex0); @@ -354,11 +346,39 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c for( var i = 0, n = array_length(__edge_buffer); i < n; i++ ) __edge_buffer[i] = surface_verify(__edge_buffer[i], _sw, _sh); + if(_edgType == 0 && is_surface(_data[6])) { #region + var _esw = surface_get_width_safe(_data[6]); + var _esh = surface_get_height_safe(_data[6]); + + __edge_uniform[0] = surface_verify(__edge_uniform[0], _esw, _esh); + __edge_uniform[1] = surface_verify(__edge_uniform[1], _esw, _esh); + __edge_uniform[2] = surface_verify(__edge_uniform[2], _esh, _esw); + __edge_uniform[3] = surface_verify(__edge_uniform[3], _esh, _esw); + + surface_set_shader(__edge_uniform[0], noone); + draw_surface(_data[6], 0, 0); + surface_reset_shader(); + + surface_set_shader(__edge_uniform[1], noone); + draw_surface_ext(_data[6], 0, _esh, 1, -1, 0, c_white, 1); + surface_reset_shader(); + + surface_set_shader(__edge_uniform[2], noone); + draw_surface_ext(_data[6], 0, 0, -1, 1, 90, c_white, 1); + surface_reset_shader(); + + surface_set_shader(__edge_uniform[3], noone); + draw_surface_ext(_data[6], _esh, 0, -1, -1, 90, c_white, 1); + surface_reset_shader(); + + _edges = __edge_uniform; + } #endregion + for( var i = 0; i < 4; i++ ) { var _ed = _edges[i]; var _edShf = _edgeShf[_shi[i]]; - edge_surface[i] = [ noone, noone, noone ]; + edge_surface[i] = array_create(7, noone); if(!is_surface(_ed)) continue; var _ew = surface_get_width_safe(_ed); @@ -367,73 +387,107 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var _esw = _ew > _eh? _ew / _am : 0; var _esh = _ew > _eh? 0 : _eh / _am; - for( var j = 0; j < 3; j++ ) { - var _sIndx = i * 3 + j; + for( var j = 0; j < 7; j++ ) { + var _sIndx = i * 7 + j; var _edBuf = _ed; __edge_surface[_sIndx] = surface_verify(__edge_surface[_sIndx], _sw, _sh); - if(_edgSprt) { - surface_set_target(__edge_buffer[0]); #region - DRAW_CLEAR - BLEND_OVERRIDE + surface_set_target(__edge_buffer[0]); #region + DRAW_CLEAR + BLEND_OVERRIDE - if(_edgSprt == 1) { - switch(j) { - case 0 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; - case 1 : draw_surface(_ed, -_esw * 1, -_esh * 1); break; - case 2 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; - } - } else if(_edgSprt == 2) { - switch(j) { - case 0 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; - case 1 : draw_surface(_ed, -_esw * 1, -_esh * 1); break; - case 2 : draw_surface(_ed, -_esw * 2, -_esh * 2); break; - } + if(_edgSprt == 0) { + draw_surface(_ed, 0, 0); + } else if(_edgSprt == 1) { // flip side + switch(j) { + case 0 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; + case 1 : draw_surface(_ed, -_esw * 1, -_esh * 1); break; + case 2 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; + case 3 : + case 4 : + case 5 : + case 6 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; } + } else if(_edgSprt == 2) { // indiviual sides + switch(j) { + case 0 : draw_surface(_ed, -_esw * 0, -_esh * 0); break; + case 1 : draw_surface(_ed, -_esw * 1, -_esh * 1); break; + case 2 : draw_surface(_ed, -_esw * 2, -_esh * 2); break; + } + } + BLEND_NORMAL + surface_reset_target(); #endregion + + _edBuf = __edge_buffer[0]; + + if(_edgType == 0 && _edgTran == 1) { // rotate surface for uniform edge type + surface_set_target(__edge_buffer[1]); #region + DRAW_CLEAR + BLEND_ALPHA_MULP + + switch(i) { + //case 1 : draw_surface_ext(_edBuf, _sw, 0, -1, 1, 0, c_white, 1); break; + case 3 : draw_surface_ext(_edBuf, 0, _sh, 1, -1, 0, c_white, 1); break; + default: draw_surface_ext(_edBuf, 0, 0, 1, 1, 0, c_white, 1); break; + } + BLEND_NORMAL surface_reset_target(); #endregion - - _edBuf = __edge_buffer[0]; - - if(_edgSprt == 1 && j == 2) { - surface_set_target(__edge_buffer[1]); #region - DRAW_CLEAR - BLEND_OVERRIDE - - if(i == 0 || i == 1) draw_surface_ext(__edge_buffer[0], _sw, 0, -1, 1, 0, c_white, 1); - if(i == 2 || i == 3) draw_surface_ext(__edge_buffer[0], 0, _sh, 1, -1, 0, c_white, 1); - BLEND_NORMAL - surface_reset_target(); #endregion + _edBuf = __edge_buffer[1]; + } + + if(_edgSprt == 1 && j >= 2) { + surface_set_target(__edge_buffer[2]); #region + DRAW_CLEAR + BLEND_ALPHA_MULP + + if(j == 2) { // flip surface + if(i == 0 || i == 1) draw_surface_ext(_edBuf, _sw, 0, -1, 1, 0, c_white, 1); // flip x + if(i == 2 || i == 3) draw_surface_ext(_edBuf, 0, _sh, 1, -1, 0, c_white, 1); // flip y + } else if(j == 3) { + if(i == 0 || i == 1) draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, _sw / 2, 0, 1, 1, c_white, 1); + if(i == 2 || i == 3) draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, _sh / 2, 1, 1, c_white, 1); + } else if(j == 4) { + if(i == 0 || i == 1) draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, _sw / 2, 0, -1, 1, c_white, 1); + if(i == 2 || i == 3) draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, _sh / 2, 1, -1, c_white, 1); + } else if(j == 5) { + if(i == 0 || i == 1) { + draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, 0, 0, 1, 1, c_white, 1); + draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, _sw, 0, -1, 1, c_white, 1); + } + + if(i == 2 || i == 3) { + draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, 0, 1, 1, c_white, 1); + draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, _sh, 1, -1, c_white, 1); + } + } else if(j == 6) { + if(i == 0 || i == 1) { + draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, _sw / 2, 0, 1, 1, c_white, 1); + draw_surface_part_ext(_edBuf, 0, 0, _sw / 2, _sh, _sw / 2, 0, -1, 1, c_white, 1); + } + + if(i == 2 || i == 3) { + draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, _sh / 2, 1, 1, c_white, 1); + draw_surface_part_ext(_edBuf, 0, 0, _sw, _sh / 2, 0, _sh / 2, 1, -1, c_white, 1); + } + } + + BLEND_NORMAL + surface_reset_target(); #endregion - _edBuf = __edge_buffer[1]; - } + _edBuf = __edge_buffer[2]; } surface_set_target(__edge_surface[_sIndx]); #region DRAW_CLEAR BLEND_OVERRIDE - var _rr = 0; var _xx = 0; var _yy = 0; - if(_edgType == 0) { - _rr = _rot[i]; - - if(_edgSprt) { - if(i == 1 && j != 1) _rr += 180; - if(i == 2 && j == 0) _rr += 180; - if(i == 3 && j == 2) _rr += 180; - } - - _pp = point_rotate(0, 0, _sw / 2, _sh / 2, _rr); - _xx = _pp[0]; - _yy = _pp[1]; - } - switch(i) { case 0 : _yy += _edShf; break; case 1 : _yy -= _edShf; break; @@ -441,7 +495,7 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c case 3 : _xx -= _edShf; break; } - draw_surface_ext(_edBuf, _xx, _yy, 1, 1, _rr, c_white, 1); + draw_surface(_edBuf, _xx, _yy); BLEND_NORMAL surface_reset_target(); #endregion diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index fe00a1b4a..788a14c96 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -399,7 +399,7 @@ function __initNodes() { addNodeObject(input, "Animation", s_node_image_animation, "Node_Image_Animated", [0, Node_create_Image_Animated],, "Load multiple images from your computer as animation."); addNodeObject(input, "Array to Anim", s_node_image_sequence_to_anim, "Node_Sequence_Anim", [1, Node_Sequence_Anim],, "Convert array of images into animation."); if(!DEMO) addNodeObject(input, "Export", s_node_export, "Node_Export", [0, Node_create_Export],, "Export image, image array to file, image sequence, animation."); - + ds_list_add(input, "Files"); addNodeObject(input, "Text File In", s_node_text_file_read, "Node_Text_File_Read", [1, Node_Text_File_Read], ["txt"], "Load .txt in as text.").setVersion(1080); addNodeObject(input, "Text File Out", s_node_text_file_write, "Node_Text_File_Write", [1, Node_Text_File_Write], ["txt"], "Save text as a .txt file.").setVersion(1090); @@ -438,6 +438,7 @@ function __initNodes() { addNodeObject(transform, "Composite", s_node_compose, "Node_Composite", [1, Node_Composite], ["merge"], "Combine multiple images with controllable position, rotation, scale."); addNodeObject(transform, "Nine Slice", s_node_9patch, "Node_9Slice", [1, Node_9Slice], ["9 slice", "splice"], "Cut image into 3x3 parts, and scale/repeat only the middle part."); addNodeObject(transform, "Padding", s_node_padding, "Node_Padding", [1, Node_Padding],, "Make image bigger by adding space in 4 directions."); + //addNodeObject(transform, "Tile Random", s_node_padding, "Node_Tile_Random", [1, Node_Tile_Random]); #endregion var filter = ds_list_create(); #region @@ -620,7 +621,8 @@ function __initNodes() { addNodeObject(generator, "MK GridBalls", s_node_mk_ball_grid, "Node_MK_GridBalls", [1, Node_MK_GridBalls]).setVersion(11600); addNodeObject(generator, "MK GridFlip", s_node_mk_flip_grid, "Node_MK_GridFlip", [1, Node_MK_GridFlip]).setVersion(11600); addNodeObject(generator, "MK Saber", s_node_mk_saber, "Node_MK_Saber", [1, Node_MK_Saber]).setVersion(11600); - if(TESTING) addNodeObject(generator, "MK Tile", s_node_mk_saber, "Node_MK_Tile", [1, Node_MK_Tile]).setVersion(11600); + addNodeObject(generator, "MK Tile", s_node_mk_tile, "Node_MK_Tile", [1, Node_MK_Tile]).setVersion(11600); + if(TESTING) addNodeObject(generator, "MK Flag", s_node_mk_tile, "Node_MK_Flag", [1, Node_MK_Flag]).setVersion(11600); #endregion var compose = ds_list_create(); #region diff --git a/scripts/node_tile_random/node_tile_random.gml b/scripts/node_tile_random/node_tile_random.gml new file mode 100644 index 000000000..586445772 --- /dev/null +++ b/scripts/node_tile_random/node_tile_random.gml @@ -0,0 +1,40 @@ +function Node_Tile_Random(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { + name = "Tile Random"; + dimension_index = -1; + + inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + + inputs[| 1] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 2] = nodeValue("Randomness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5) + .setDisplay(VALUE_DISPLAY.slider); + + outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); + + input_display_list = [ 1, + ["Surfaces", true], 0, + ["Tiling", false], 2, + ]; + + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _surf = _data[0]; + var dim = _data[1]; + var rand = _data[2]; + + var _sw = surface_get_width_safe(_surf); + var _sh = surface_get_height_safe(_surf); + + _outSurf = surface_verify(_outSurf, dim[0], dim[1]); + + surface_set_shader(_outSurf, sh_tile_random); + shader_set_surface("surface", _surf); + shader_set_f("blend", rand); + shader_set_f("scale", dim[0] / _sw, dim[1] / _sh); + + draw_sprite_stretched(s_fx_pixel, 0, 0, 0, dim[0], dim[1]); + surface_reset_shader(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_tile_random/node_tile_random.yy b/scripts/node_tile_random/node_tile_random.yy new file mode 100644 index 000000000..0aa311bf2 --- /dev/null +++ b/scripts/node_tile_random/node_tile_random.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_tile_random", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "transform", + "path": "folders/nodes/data/transform.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 3e7031fa3..62e7f30bb 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -1710,8 +1710,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru switch(res) { case EXPRESS_TREE_ANIM.none : return false; - case EXPRESS_TREE_ANIM.base_value : return is_anim; - case EXPRESS_TREE_ANIM.animated : return true; + case EXPRESS_TREE_ANIM.base_value : force_requeue = true; return is_anim; + case EXPRESS_TREE_ANIM.animated : force_requeue = true; return true; } } diff --git a/scripts/node_wiggler/node_wiggler.gml b/scripts/node_wiggler/node_wiggler.gml index 7ead76539..14bbc2a14 100644 --- a/scripts/node_wiggler/node_wiggler.gml +++ b/scripts/node_wiggler/node_wiggler.gml @@ -4,16 +4,16 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c w = 96; - inputs[| 0] = nodeValue("Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, 1]) + inputs[| 0] = nodeValue("Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ]) .setDisplay(VALUE_DISPLAY.vector); inputs[| 1] = nodeValue("Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 ) .setDisplay(VALUE_DISPLAY.slider, { range: [1, 32, 1] }); - inputs[| 2] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom(9999999) ); + inputs[| 2] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, irandom_range(1000000, 9999999) ); inputs[| 3] = nodeValue("Display", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ) - .setDisplay(VALUE_DISPLAY.enum_scroll, ["Number", "Graph"]) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Number", "Graph" ]) outputs[| 0] = nodeValue("Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0); @@ -24,7 +24,7 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c random_value = array_create(64, 0); - static onValueUpdate = function(index = 0) { + static onValueUpdate = function(index = 0) { #region var ran = getSingleValue(0); var fre = getSingleValue(1); var sed = getSingleValue(2); @@ -32,18 +32,18 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var step = TOTAL_FRAMES / 64; for( var i = 0; i < 64; i++ ) random_value[i] = getWiggle(array_safe_get(ran, 0), array_safe_get(ran, 1), TOTAL_FRAMES / fre, step * i, sed, 0, TOTAL_FRAMES); - } + } run_in(1, function() { onValueUpdate(); }); #endregion - static processData = function(_output, _data, _output_index, _array_index = 0) { + static processData = function(_output, _data, _output_index, _array_index = 0) { #region var ran = _data[0]; var fre = _data[1]; var sed = _data[2]; var time = CURRENT_FRAME; return getWiggle(array_safe_get(ran, 0), array_safe_get(ran, 1), TOTAL_FRAMES / fre, time, sed, 0, TOTAL_FRAMES); - } + } #endregion - static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { + static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { #region var ran = array_safe_get(current_data, 0); var fre = array_safe_get(current_data, 1); var sed = array_safe_get(current_data, 2); @@ -53,9 +53,12 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c if(!is_array(ran)) return; + var _h = min_h; + switch(disp) { case 0 : - w = 96; + w = 96; + _h = 0; draw_set_text(f_sdf, fa_center, fa_center, COLORS._main_text); var str = getWiggle(ran[0], ran[1], TOTAL_FRAMES / fre, time, sed, 0, TOTAL_FRAMES); @@ -63,8 +66,8 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c draw_text_transformed(xx + w / 2 * _s, yy + 10 + h / 2 * _s, str, ss, ss, 0); break; case 1 : - w = 128; - min_h = 96; + w = 128; + _h = 96; var _min = ran[0]; var _max = ran[1]; @@ -80,26 +83,35 @@ function Node_Wiggler(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c var yc = (y0 + y1) / 2; draw_set_color(COLORS.node_wiggler_frame); + draw_set_alpha(0.5); draw_line(x0, yc, x1, yc); - var _fx = x0 + (time / total_time * ww); - draw_line(_fx, y0, _fx, y1); + draw_set_alpha(1); var lw = ww / (64 - 1); - draw_set_color(COLORS.node_wiggler_frame); var ox, oy; + draw_set_color(c_white); for( var i = 0; i < 64; i++ ) { var _x = x0 + i * lw; var _y = yc - (random_value[i] - val) / _ran * hh; - if(i) - draw_line(ox, oy, _x, _y); + if(i) draw_line(ox, oy, _x, _y); ox = _x; oy = _y; } + draw_set_color(COLORS._main_accent); + var _fx = x0 + (time / total_time * ww); + draw_line(_fx, y0, _fx, y1); draw_set_color(COLORS.node_wiggler_frame); draw_rectangle(x0, y0, x1, y1, true); break; } - } + + if(min_h != _h) { + min_h = _h; + will_setHeight = true; + } + } #endregion + + static doApplyDeserialize = function() { onValueUpdate(); } } \ No newline at end of file diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 193e2f01a..441926b91 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -408,7 +408,7 @@ function Panel_Inspector() : PanelContent() constructor { //draw_sprite_ui(THEME.search, 0, ui(32 + 16), _y + ui(4 + 14), 1, 1, 0, COLORS._main_icon, 1); prop_page_button.setFocusHover(pFOCUS, pHOVER); - prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(28), prop_page, _m); + prop_page_button.draw(ui(32), _y + ui(4), contentPane.w - ui(76), ui(28), prop_page, _m, x + contentPane.x, y + contentPane.y); var xc = con_w / 2; diff --git a/scripts/pcx_ast/pcx_ast.gml b/scripts/pcx_ast/pcx_ast.gml index 48f11ae3e..63c511d0c 100644 --- a/scripts/pcx_ast/pcx_ast.gml +++ b/scripts/pcx_ast/pcx_ast.gml @@ -259,7 +259,6 @@ self.r = r; dependency = []; anim_stat = undefined; - anim_cache = true; static _string = function(str) { #region return string_char_at(str, 1) == "\"" && string_char_at(str, string_length(str)) == "\""; @@ -340,15 +339,11 @@ } if(val == "value") return EXPRESS_TREE_ANIM.base_value; - var anim = nodeGetDataAnim(val); - anim_cache &= anim[1]; - - return anim[0]; + //var anim = nodeGetDataAnim(val); + return EXPRESS_TREE_ANIM.animated; } #endregion static isDynamic = function() { #region - if(anim_cache && anim_stat != undefined) return anim_stat; - anim_stat = EXPRESS_TREE_ANIM.none; anim_stat = max(anim_stat, _isAnimated(l)); if(symbol != "@") anim_stat = max(anim_stat, _isAnimated(r)); diff --git a/scripts/render_data/render_data.gml b/scripts/render_data/render_data.gml index 4851222fb..e6478d8b6 100644 --- a/scripts/render_data/render_data.gml +++ b/scripts/render_data/render_data.gml @@ -210,7 +210,8 @@ function Render(partial = false, runAction = false) { #region if(runAction && rendering.hasInspector1Update()) rendering.inspector1Update(); - } + } else if(rendering.force_requeue) + RENDER_QUEUE.enqueue(rendering); LOG_BLOCK_END(); } diff --git a/scripts/slider/slider.gml b/scripts/slider/slider.gml index 4cef91d15..8da777466 100644 --- a/scripts/slider/slider.gml +++ b/scripts/slider/slider.gml @@ -89,7 +89,7 @@ function slider(_min, _max, _step, _onModify = noone, _onRelease = noone) : widg draw_sprite_stretched_ext(spr, 0, _x - ui(4), _y + _h / 2 - ui(4), sw + ui(8), ui(8), blend, 1); - if(stepSize >= 1 && sw / ((curr_maxx - curr_minn) / stepSize) > ui(8)) { + if(stepSize >= 1 && sw / ((curr_maxx - curr_minn) / stepSize) > ui(16)) { for( var i = curr_minn; i <= curr_maxx; i += stepSize ) { var _v = round(i / stepSize) * stepSize; var _cx = _x + clamp((_v - curr_minn) / (curr_maxx - curr_minn), 0, 1) * sw; diff --git a/scripts/sliderRange/sliderRange.gml b/scripts/sliderRange/sliderRange.gml index 75bbb2290..e6de4fbde 100644 --- a/scripts/sliderRange/sliderRange.gml +++ b/scripts/sliderRange/sliderRange.gml @@ -54,7 +54,7 @@ function sliderRange(_min, _max, _step, _onModify) : widget() constructor { var _x0 = _x + tb_w + ui(16); draw_sprite_stretched(spr, 0, _x0, _y + _h / 2 - ui(4), sw, ui(8)); - if(stepSize >= 1 && sw / ((maxx - minn) / stepSize) > ui(8)) { + if(stepSize >= 1 && sw / ((maxx - minn) / stepSize) > ui(16)) { for( var i = minn; i <= maxx; i += stepSize ) { var _v = round(i / stepSize) * stepSize; var _cx = _x + clamp((_v - minn) / (maxx - minn), 0, 1) * sw; diff --git a/shaders/sh_blur_zoom/sh_blur_zoom.fsh b/shaders/sh_blur_zoom/sh_blur_zoom.fsh index 15164a09a..76c893bbb 100644 --- a/shaders/sh_blur_zoom/sh_blur_zoom.fsh +++ b/shaders/sh_blur_zoom/sh_blur_zoom.fsh @@ -5,20 +5,39 @@ varying vec2 v_vTexcoord; varying vec4 v_vColour; uniform float strength; -uniform vec2 center; -uniform int sampleMode; -uniform int blurMode; +uniform vec2 center; +uniform int sampleMode; +uniform int blurMode; uniform int useMask; uniform sampler2D mask; -float sampleMask() { +#region ==== PARAM DRIVER ==== + #define PARAM_COUNT 1 + uniform int parameter_active[PARAM_COUNT]; + uniform sampler2D parameters; + + float sampleParameter(in int index, in float def) { + if(parameter_active[index] == 0) return def; + float row = floor(float(index) / 4.); + vec2 coord = (v_vTexcoord + vec2(float(index) - row * 4., row)) * 0.25; + vec4 col = texture2D( parameters, coord ); + + float _val = col.r; + float _min = col.g * 256. - 128.; + float _max = col.b * 256. - 128.; + + return mix(_min, _max, _val); + } +#endregion + +float sampleMask() { #region if(useMask == 0) return 1.; vec4 m = texture2D( mask, v_vTexcoord ); return (m.r + m.g + m.b) / 3. * m.a; -} +} #endregion -vec4 sampleTexture(vec2 pos) { +vec4 sampleTexture(vec2 pos) { #region if(pos.x >= 0. && pos.y >= 0. && pos.x <= 1. && pos.y <= 1.) return texture2D(gm_BaseTexture, pos); @@ -30,23 +49,20 @@ vec4 sampleTexture(vec2 pos) { return texture2D(gm_BaseTexture, fract(pos)); return vec4(0.); -} +} #endregion -void main() { +void main() { #region vec2 uv = v_vTexcoord - center; - float str = strength * sampleMask(); + float str = sampleParameter(0, strength) * sampleMask(); float nsamples = 64.; float scale_factor = str * (1. / (nsamples * 2. - 1.)); - vec4 color = vec4(0.0); + vec4 color = vec4(0.0); float blrStart = 0.; - if(blurMode == 0) - blrStart = 0.; - else if(blurMode == 1) - blrStart = -nsamples; - else if(blurMode == 2) - blrStart = -nsamples * 2. - 1.; + if(blurMode == 0) blrStart = 0.; + else if(blurMode == 1) blrStart = -nsamples; + else if(blurMode == 2) blrStart = -nsamples * 2. - 1.; for(float i = 0.; i < nsamples * 2. + 1.; i++) { float scale = 1.0 + ((blrStart + i) * scale_factor); @@ -57,5 +73,4 @@ void main() { color /= nsamples * 2. + 1.; gl_FragColor = color; -} - +} #endregion \ No newline at end of file diff --git a/shaders/sh_mk_tile18_edge_b/sh_mk_tile18_edge_b.fsh b/shaders/sh_mk_tile18_edge_b/sh_mk_tile18_edge_b.fsh index fedcf5331..f7daf5ebb 100644 --- a/shaders/sh_mk_tile18_edge_b/sh_mk_tile18_edge_b.fsh +++ b/shaders/sh_mk_tile18_edge_b/sh_mk_tile18_edge_b.fsh @@ -18,29 +18,29 @@ void main() { if(edge == 2) { if(fullEdge == 0 && tx.x < w - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; } else if(edge == 3) { } else if(edge == 1) { if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 7) { if(fullEdge == 0 && tx.x + crop[2] < tx.y + crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; } else if(edge == 11) { if(fullEdge == 0 && tx.x - crop[0] > h - tx.y - crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 9) { if(fullEdge == 0 && tx.x + crop[2] > tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 6) { if(fullEdge == 0 && tx.x - crop[0] < h - tx.y - crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; } else { discard; diff --git a/shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.fsh b/shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.fsh index 884d55bc8..489881411 100644 --- a/shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.fsh +++ b/shaders/sh_mk_tile18_edge_l/sh_mk_tile18_edge_l.fsh @@ -18,29 +18,29 @@ void main() { if(edge == 8) { if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 10) { } else if(edge == 2) { if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 11) { if(fullEdge == 0 && tx.x + crop[0] < h - tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 14) { if(fullEdge == 0 && tx.x + crop[0] < tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 6) { if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 9) { if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else { discard; diff --git a/shaders/sh_mk_tile18_edge_r/sh_mk_tile18_edge_r.fsh b/shaders/sh_mk_tile18_edge_r/sh_mk_tile18_edge_r.fsh index b7bbd55a2..bbb298a5a 100644 --- a/shaders/sh_mk_tile18_edge_r/sh_mk_tile18_edge_r.fsh +++ b/shaders/sh_mk_tile18_edge_r/sh_mk_tile18_edge_r.fsh @@ -18,29 +18,29 @@ void main() { if(edge == 4) { if(fullEdge == 0 && tx.x < h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 5) { } else if(edge == 1) { if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 7) { if(fullEdge == 0 && tx.x + crop[0] > tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 13) { if(fullEdge == 0 && tx.x + crop[0] > h - tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 9) { if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 6) { if(fullEdge == 0 && tx.x < h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else { discard; diff --git a/shaders/sh_mk_tile18_edge_t/sh_mk_tile18_edge_t.fsh b/shaders/sh_mk_tile18_edge_t/sh_mk_tile18_edge_t.fsh index 80b9f19ee..d4c4d9410 100644 --- a/shaders/sh_mk_tile18_edge_t/sh_mk_tile18_edge_t.fsh +++ b/shaders/sh_mk_tile18_edge_t/sh_mk_tile18_edge_t.fsh @@ -18,29 +18,29 @@ void main() { if(edge == 8) { if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; } else if(edge == 12) { } else if(edge == 4) { if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 13) { if(fullEdge == 0 && tx.x - crop[2] < h - tx.y - crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; } else if(edge == 14) { if(fullEdge == 0 && tx.x + crop[0] > tx.y + crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 9) { if(fullEdge == 0 && tx.x - crop[2] < tx.y - crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2]) discard; } else if(edge == 6) { if(fullEdge == 0 && tx.x + crop[0] > h - tx.y + crop[3]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else { discard; diff --git a/shaders/sh_mk_tile55_edge_b/sh_mk_tile55_edge_b.fsh b/shaders/sh_mk_tile55_edge_b/sh_mk_tile55_edge_b.fsh index 0fd606922..3899bb483 100644 --- a/shaders/sh_mk_tile55_edge_b/sh_mk_tile55_edge_b.fsh +++ b/shaders/sh_mk_tile55_edge_b/sh_mk_tile55_edge_b.fsh @@ -18,19 +18,19 @@ void main() { if(edge == 22 || edge == 16 || edge == 18) { if(fullEdge == 0 && tx.x < w - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; } else if(edge == 7 || edge == 24 || edge == 27 || edge == 30 || edge == 26 ) { } else if(edge == 11 || edge == 8 || edge == 10) { if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 2 || edge == 0) { if(fullEdge == 0 && tx.x < w - tx.y) discard; if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else { bool draw = false; @@ -38,14 +38,20 @@ void main() { if(edge == 80 || edge == 120 || edge == 86 || edge == 127 || edge == 82 || edge == 123 || edge == 88 || edge == 95 || edge == 126 || edge == 122 || edge == 94 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x + crop[2] >= tx.y + crop[1]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.x > w - crop[0])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.x > w - crop[0])) + // draw = true; + if(fullEdge == 1) draw = true; } if(edge == 216 || edge == 72 || edge == 223 || edge == 75 || edge == 222 || edge == 74 || edge == 88 || edge == 219 || edge == 95 || edge == 218 || edge == 94 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x - crop[0] < h - tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.x < crop[2])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.x < crop[2])) + // draw = true; + if(fullEdge == 1) draw = true; } diff --git a/shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.fsh b/shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.fsh index 5f92fcad2..cb05d28c6 100644 --- a/shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.fsh +++ b/shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.fsh @@ -18,19 +18,19 @@ void main() { if(edge == 208 || edge == 64 || edge == 80) { if(fullEdge == 0 && tx.x > tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 148 || edge == 66 || edge == 86 || edge == 210 || edge == 82) { } else if(edge == 22 || edge == 2 || edge == 18) { if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 16 || edge == 0) { if(fullEdge == 0 && tx.x > tx.y) discard; if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else { bool draw = false; @@ -38,14 +38,20 @@ void main() { if(edge == 216 || edge == 72 || edge == 223 || edge == 75 || edge == 222 || edge == 74 || edge == 95 || edge == 88 || edge == 219 || edge == 218 || edge == 94 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x - crop[0] >= h - tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.y > h - crop[3])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.y > h - crop[3])) + // draw = true; + if(fullEdge == 1) draw = true; } if(edge == 254 || edge == 106 || edge == 30 || edge == 10 || edge == 222 || edge == 74 || edge == 126 || edge == 250 || edge == 218 || edge == 122 || edge == 26 || edge == 94 || edge == 90) { if(fullEdge == 0 && tx.x - crop[0] > tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.y < crop[1])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.y < crop[1])) + // draw = true; + if(fullEdge == 1) draw = true; } diff --git a/shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.fsh b/shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.fsh index fe4fdb11a..96d7cfda7 100644 --- a/shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.fsh +++ b/shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.fsh @@ -18,19 +18,19 @@ void main() { if(edge == 104 || edge == 64 || edge == 72) { if(fullEdge == 0 && tx.x < h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; } else if(edge == 41 || edge == 66 || edge == 75 || edge == 106 || edge == 74) { } else if(edge == 11 || edge == 2 || edge == 10) { if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else if(edge == 8 || edge == 0) { if(fullEdge == 0 && tx.x < h - tx.y) discard; if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y < crop[1]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.y > h - crop[3]) discard; } else { bool draw = false; @@ -38,14 +38,20 @@ void main() { if(edge == 80 || edge == 120 || edge == 86 || edge == 127 || edge == 82 || edge == 123 || edge == 88 || edge == 95 || edge == 126 || edge == 122 || edge == 94 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x - crop[0] <= tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.y > h - crop[3])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.y > h - crop[3])) + // draw = true; + if(fullEdge == 1) draw = true; } if(edge == 210 || edge == 251 || edge == 18 || edge == 27 || edge == 82 || edge == 123 || edge == 219 || edge == 250 || edge == 218 || edge == 122 || edge == 26 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x - crop[0] < h - tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.y < crop[1])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.y < crop[1])) + // draw = true; + if(fullEdge == 1) draw = true; } diff --git a/shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.fsh b/shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.fsh index 100ea7794..db4773889 100644 --- a/shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.fsh +++ b/shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.fsh @@ -18,19 +18,19 @@ void main() { if(edge == 208 || edge == 16 || edge == 80) { if(fullEdge == 0 && tx.x < tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; } else if(edge == 224 || edge == 24 || edge == 120 || edge == 216 || edge == 88) { } else if(edge == 104 || edge == 8 || edge == 72) { if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else if(edge == 64 || edge == 0) { if(fullEdge == 0 && tx.x < tx.y) discard; if(fullEdge == 0 && tx.x > h - tx.y) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; - if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x < crop[2] ) discard; + //if(fullEdge == 1 && extendEdge == 0 && tx.x > w - crop[0]) discard; } else { bool draw = false; @@ -38,14 +38,20 @@ void main() { if(edge == 210 || edge == 251 || edge == 18 || edge == 27 || edge == 82 || edge == 123 || edge == 219 || edge == 250 || edge == 218 || edge == 122 || edge == 26 || edge == 91 || edge == 90) { if(fullEdge == 0 && tx.x - crop[2] >= h - tx.y - crop[3]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.x < crop[2])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.x < crop[2])) + // draw = true; + if(fullEdge == 1) draw = true; } if(edge == 254 || edge == 106 || edge == 30 || edge == 10 || edge == 222 || edge == 74 || edge == 126 || edge == 250 || edge == 218 || edge == 122 || edge == 26 || edge == 94 || edge == 90) { if(fullEdge == 0 && tx.x + crop[0] <= tx.y + crop[1]) draw = true; - if(fullEdge == 1 && (extendEdge == 1 || tx.x > w - crop[0])) + + //if(fullEdge == 1 && (extendEdge == 1 || tx.x > w - crop[0])) + // draw = true; + if(fullEdge == 1) draw = true; } diff --git a/shaders/sh_tile_random/sh_tile_random.fsh b/shaders/sh_tile_random/sh_tile_random.fsh new file mode 100644 index 000000000..d177a4950 --- /dev/null +++ b/shaders/sh_tile_random/sh_tile_random.fsh @@ -0,0 +1,50 @@ +// The MIT License +// Copyright © 2015 Inigo Quilez +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// https://www.youtube.com/c/InigoQuilez +// https://iquilezles.org + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform sampler2D surface; +uniform float blend; +uniform vec2 scale; + +vec4 hash4( vec2 p ) { return fract(sin(vec4( 1.0 + dot(p, vec2(37.0, 17.0)), + 2.0 + dot(p, vec2(11.0, 47.0)), + 3.0 + dot(p, vec2(41.0, 29.0)), + 4.0 + dot(p, vec2(23.0, 31.0)))) * 103.0); } + +vec4 textureNoTile( in vec2 uv, float v ) { + vec2 p = floor( uv ); + vec2 f = fract( uv ); + + vec4 va = vec4(0.0); + float w1 = 0.0; + float w2 = 0.0; + + for( int j=-1; j<=1; j++ ) + for( int i=-1; i<=1; i++ ) { + vec2 g = vec2( float(i), float(j) ); + vec4 o = hash4( p + g ); + vec2 r = g - f + o.xy; + float d = dot(r, r); + float w = exp(-5.0 * d ); + vec4 c = texture2D( surface, fract(uv + v * o.zw) ); + + va += w * c; + w1 += w; + w2 += w * w; + } + + float mean = 0.3; + vec4 res = mean + (va - w1 * mean) / sqrt(w2); + return mix( va / w1, res, v ); +} + +void main() { + vec2 uv = v_vTexcoord * scale; + + gl_FragColor = textureNoTile( uv, blend ); +} diff --git a/shaders/sh_tile_random/sh_tile_random.vsh b/shaders/sh_tile_random/sh_tile_random.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_tile_random/sh_tile_random.vsh @@ -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; +} diff --git a/shaders/sh_tile_random/sh_tile_random.yy b/shaders/sh_tile_random/sh_tile_random.yy new file mode 100644 index 000000000..a05dd2b4c --- /dev/null +++ b/shaders/sh_tile_random/sh_tile_random.yy @@ -0,0 +1,10 @@ +{ + "resourceType": "GMShader", + "resourceVersion": "1.0", + "name": "sh_tile_random", + "parent": { + "name": "filter", + "path": "folders/shader/filter.yy", + }, + "type": 1, +} \ No newline at end of file diff --git a/sprites/s_node_mk_ball_grid/93617f8b-5294-4379-9291-8997c8659aaf.png b/sprites/s_node_mk_ball_grid/93617f8b-5294-4379-9291-8997c8659aaf.png deleted file mode 100644 index e34b029ef..000000000 Binary files a/sprites/s_node_mk_ball_grid/93617f8b-5294-4379-9291-8997c8659aaf.png and /dev/null differ diff --git a/sprites/s_node_mk_ball_grid/af86ed9d-9f7a-4ab5-9491-23d157754470.png b/sprites/s_node_mk_ball_grid/af86ed9d-9f7a-4ab5-9491-23d157754470.png new file mode 100644 index 000000000..5a48b7d0f Binary files /dev/null and b/sprites/s_node_mk_ball_grid/af86ed9d-9f7a-4ab5-9491-23d157754470.png differ diff --git a/sprites/s_node_mk_ball_grid/layers/93617f8b-5294-4379-9291-8997c8659aaf/cc424554-c7d8-4d22-ad63-84b7e506e945.png b/sprites/s_node_mk_ball_grid/layers/93617f8b-5294-4379-9291-8997c8659aaf/cc424554-c7d8-4d22-ad63-84b7e506e945.png deleted file mode 100644 index e34b029ef..000000000 Binary files a/sprites/s_node_mk_ball_grid/layers/93617f8b-5294-4379-9291-8997c8659aaf/cc424554-c7d8-4d22-ad63-84b7e506e945.png and /dev/null differ diff --git a/sprites/s_node_mk_ball_grid/layers/af86ed9d-9f7a-4ab5-9491-23d157754470/2ef71ed2-22fb-4c55-9b24-72fadd383798.png b/sprites/s_node_mk_ball_grid/layers/af86ed9d-9f7a-4ab5-9491-23d157754470/2ef71ed2-22fb-4c55-9b24-72fadd383798.png new file mode 100644 index 000000000..5a48b7d0f Binary files /dev/null and b/sprites/s_node_mk_ball_grid/layers/af86ed9d-9f7a-4ab5-9491-23d157754470/2ef71ed2-22fb-4c55-9b24-72fadd383798.png differ diff --git a/sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy b/sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy index 2430bb531..806c3ea0e 100644 --- a/sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy +++ b/sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy @@ -13,14 +13,14 @@ "edgeFiltering": false, "For3D": false, "frames": [ - {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"93617f8b-5294-4379-9291-8997c8659aaf",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"af86ed9d-9f7a-4ab5-9491-23d157754470",}, ], "gridX": 0, "gridY": 0, "height": 64, "HTile": false, "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cc424554-c7d8-4d22-ad63-84b7e506e945","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2ef71ed2-22fb-4c55-9b24-72fadd383798","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, ], "nineSlice": null, "origin": 4, @@ -54,7 +54,7 @@ "timeUnits": 1, "tracks": [ {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ - {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"93617f8b-5294-4379-9291-8997c8659aaf","path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",},},},"Disabled":false,"id":"f59f5080-75ed-44e8-9afe-39cd8e92ad39","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"af86ed9d-9f7a-4ab5-9491-23d157754470","path":"sprites/s_node_mk_ball_grid/s_node_mk_ball_grid.yy",},},},"Disabled":false,"id":"9a2d9d69-0ca2-47c8-b62b-0e3c513f338f","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, diff --git a/sprites/s_node_mk_flip_grid/7da3fa7b-19e8-4752-9b7b-c42270228ce1.png b/sprites/s_node_mk_flip_grid/7da3fa7b-19e8-4752-9b7b-c42270228ce1.png new file mode 100644 index 000000000..9b016cbeb Binary files /dev/null and b/sprites/s_node_mk_flip_grid/7da3fa7b-19e8-4752-9b7b-c42270228ce1.png differ diff --git a/sprites/s_node_mk_flip_grid/9346723f-9bfe-4d65-a80e-4ce2643a5b3f.png b/sprites/s_node_mk_flip_grid/9346723f-9bfe-4d65-a80e-4ce2643a5b3f.png deleted file mode 100644 index 775943bb8..000000000 Binary files a/sprites/s_node_mk_flip_grid/9346723f-9bfe-4d65-a80e-4ce2643a5b3f.png and /dev/null differ diff --git a/sprites/s_node_mk_flip_grid/layers/7da3fa7b-19e8-4752-9b7b-c42270228ce1/cd81bf79-7b4e-47ef-a4f6-a30761d687f9.png b/sprites/s_node_mk_flip_grid/layers/7da3fa7b-19e8-4752-9b7b-c42270228ce1/cd81bf79-7b4e-47ef-a4f6-a30761d687f9.png new file mode 100644 index 000000000..9b016cbeb Binary files /dev/null and b/sprites/s_node_mk_flip_grid/layers/7da3fa7b-19e8-4752-9b7b-c42270228ce1/cd81bf79-7b4e-47ef-a4f6-a30761d687f9.png differ diff --git a/sprites/s_node_mk_flip_grid/layers/9346723f-9bfe-4d65-a80e-4ce2643a5b3f/0abbdf26-32ca-4411-999b-57beff9ac021.png b/sprites/s_node_mk_flip_grid/layers/9346723f-9bfe-4d65-a80e-4ce2643a5b3f/0abbdf26-32ca-4411-999b-57beff9ac021.png deleted file mode 100644 index 775943bb8..000000000 Binary files a/sprites/s_node_mk_flip_grid/layers/9346723f-9bfe-4d65-a80e-4ce2643a5b3f/0abbdf26-32ca-4411-999b-57beff9ac021.png and /dev/null differ diff --git a/sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy b/sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy index d719a5b7f..cf62e5d32 100644 --- a/sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy +++ b/sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy @@ -13,14 +13,14 @@ "edgeFiltering": false, "For3D": false, "frames": [ - {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9346723f-9bfe-4d65-a80e-4ce2643a5b3f",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7da3fa7b-19e8-4752-9b7b-c42270228ce1",}, ], "gridX": 0, "gridY": 0, "height": 64, "HTile": false, "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"0abbdf26-32ca-4411-999b-57beff9ac021","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"cd81bf79-7b4e-47ef-a4f6-a30761d687f9","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, ], "nineSlice": null, "origin": 4, @@ -54,7 +54,7 @@ "timeUnits": 1, "tracks": [ {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ - {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"9346723f-9bfe-4d65-a80e-4ce2643a5b3f","path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",},},},"Disabled":false,"id":"47e778b6-b6b8-4972-9d4f-a5ae19e40300","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"7da3fa7b-19e8-4752-9b7b-c42270228ce1","path":"sprites/s_node_mk_flip_grid/s_node_mk_flip_grid.yy",},},},"Disabled":false,"id":"477ea8da-d5c2-4efe-9e3d-9dec04d206e3","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, diff --git a/sprites/s_node_mk_rain/18e0d307-8a22-4660-8d07-94154effe0c4.png b/sprites/s_node_mk_rain/18e0d307-8a22-4660-8d07-94154effe0c4.png deleted file mode 100644 index ae3e36208..000000000 Binary files a/sprites/s_node_mk_rain/18e0d307-8a22-4660-8d07-94154effe0c4.png and /dev/null differ diff --git a/sprites/s_node_mk_rain/fa0422a8-979f-423e-b910-d2c0a55be02e.png b/sprites/s_node_mk_rain/fa0422a8-979f-423e-b910-d2c0a55be02e.png new file mode 100644 index 000000000..8f46b70d8 Binary files /dev/null and b/sprites/s_node_mk_rain/fa0422a8-979f-423e-b910-d2c0a55be02e.png differ diff --git a/sprites/s_node_mk_rain/layers/18e0d307-8a22-4660-8d07-94154effe0c4/7d4701da-57f9-4127-8e80-c019bcffa559.png b/sprites/s_node_mk_rain/layers/18e0d307-8a22-4660-8d07-94154effe0c4/7d4701da-57f9-4127-8e80-c019bcffa559.png deleted file mode 100644 index ae3e36208..000000000 Binary files a/sprites/s_node_mk_rain/layers/18e0d307-8a22-4660-8d07-94154effe0c4/7d4701da-57f9-4127-8e80-c019bcffa559.png and /dev/null differ diff --git a/sprites/s_node_mk_rain/layers/fa0422a8-979f-423e-b910-d2c0a55be02e/d5781296-7570-45f0-8e69-34e87e3f5e36.png b/sprites/s_node_mk_rain/layers/fa0422a8-979f-423e-b910-d2c0a55be02e/d5781296-7570-45f0-8e69-34e87e3f5e36.png new file mode 100644 index 000000000..8f46b70d8 Binary files /dev/null and b/sprites/s_node_mk_rain/layers/fa0422a8-979f-423e-b910-d2c0a55be02e/d5781296-7570-45f0-8e69-34e87e3f5e36.png differ diff --git a/sprites/s_node_mk_rain/s_node_mk_rain.yy b/sprites/s_node_mk_rain/s_node_mk_rain.yy index ef60b4493..67aca501f 100644 --- a/sprites/s_node_mk_rain/s_node_mk_rain.yy +++ b/sprites/s_node_mk_rain/s_node_mk_rain.yy @@ -13,14 +13,14 @@ "edgeFiltering": false, "For3D": false, "frames": [ - {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"18e0d307-8a22-4660-8d07-94154effe0c4",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"fa0422a8-979f-423e-b910-d2c0a55be02e",}, ], "gridX": 0, "gridY": 0, "height": 64, "HTile": false, "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"7d4701da-57f9-4127-8e80-c019bcffa559","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"d5781296-7570-45f0-8e69-34e87e3f5e36","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, ], "nineSlice": null, "origin": 4, @@ -54,7 +54,7 @@ "timeUnits": 1, "tracks": [ {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ - {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"18e0d307-8a22-4660-8d07-94154effe0c4","path":"sprites/s_node_mk_rain/s_node_mk_rain.yy",},},},"Disabled":false,"id":"ad66282b-c136-4710-9ff3-39b80920e02a","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"fa0422a8-979f-423e-b910-d2c0a55be02e","path":"sprites/s_node_mk_rain/s_node_mk_rain.yy",},},},"Disabled":false,"id":"c3379a38-7831-4425-afa8-20d2806f70dc","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, diff --git a/sprites/s_node_mk_saber/738a7dcd-3806-4941-ad43-fb97ce09c4e8.png b/sprites/s_node_mk_saber/738a7dcd-3806-4941-ad43-fb97ce09c4e8.png deleted file mode 100644 index 9b7f98c7f..000000000 Binary files a/sprites/s_node_mk_saber/738a7dcd-3806-4941-ad43-fb97ce09c4e8.png and /dev/null differ diff --git a/sprites/s_node_mk_saber/f0cba714-735b-4358-a30c-8dedc27bd8e4.png b/sprites/s_node_mk_saber/f0cba714-735b-4358-a30c-8dedc27bd8e4.png new file mode 100644 index 000000000..e3a0653b5 Binary files /dev/null and b/sprites/s_node_mk_saber/f0cba714-735b-4358-a30c-8dedc27bd8e4.png differ diff --git a/sprites/s_node_mk_saber/layers/738a7dcd-3806-4941-ad43-fb97ce09c4e8/97534089-2439-4d31-a905-7f8ab255ac71.png b/sprites/s_node_mk_saber/layers/738a7dcd-3806-4941-ad43-fb97ce09c4e8/97534089-2439-4d31-a905-7f8ab255ac71.png deleted file mode 100644 index 9b7f98c7f..000000000 Binary files a/sprites/s_node_mk_saber/layers/738a7dcd-3806-4941-ad43-fb97ce09c4e8/97534089-2439-4d31-a905-7f8ab255ac71.png and /dev/null differ diff --git a/sprites/s_node_mk_saber/layers/f0cba714-735b-4358-a30c-8dedc27bd8e4/316c0452-4330-47c0-afd8-19d80938e3da.png b/sprites/s_node_mk_saber/layers/f0cba714-735b-4358-a30c-8dedc27bd8e4/316c0452-4330-47c0-afd8-19d80938e3da.png new file mode 100644 index 000000000..e3a0653b5 Binary files /dev/null and b/sprites/s_node_mk_saber/layers/f0cba714-735b-4358-a30c-8dedc27bd8e4/316c0452-4330-47c0-afd8-19d80938e3da.png differ diff --git a/sprites/s_node_mk_saber/s_node_mk_saber.yy b/sprites/s_node_mk_saber/s_node_mk_saber.yy index d10e17923..810759584 100644 --- a/sprites/s_node_mk_saber/s_node_mk_saber.yy +++ b/sprites/s_node_mk_saber/s_node_mk_saber.yy @@ -13,14 +13,14 @@ "edgeFiltering": false, "For3D": false, "frames": [ - {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"738a7dcd-3806-4941-ad43-fb97ce09c4e8",}, + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f0cba714-735b-4358-a30c-8dedc27bd8e4",}, ], "gridX": 0, "gridY": 0, "height": 64, "HTile": false, "layers": [ - {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"97534089-2439-4d31-a905-7f8ab255ac71","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"316c0452-4330-47c0-afd8-19d80938e3da","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, ], "nineSlice": null, "origin": 4, @@ -54,7 +54,7 @@ "timeUnits": 1, "tracks": [ {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ - {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"738a7dcd-3806-4941-ad43-fb97ce09c4e8","path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",},},},"Disabled":false,"id":"04252012-20e2-42a9-b7a7-6a71b7b9c596","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"f0cba714-735b-4358-a30c-8dedc27bd8e4","path":"sprites/s_node_mk_saber/s_node_mk_saber.yy",},},},"Disabled":false,"id":"a861369c-dd0d-4ae7-92d4-617146994538","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange": null, diff --git a/sprites/s_node_mk_tile/b4d4c641-85c8-4f01-96fd-eefedb4610b0.png b/sprites/s_node_mk_tile/b4d4c641-85c8-4f01-96fd-eefedb4610b0.png new file mode 100644 index 000000000..7864cbce6 Binary files /dev/null and b/sprites/s_node_mk_tile/b4d4c641-85c8-4f01-96fd-eefedb4610b0.png differ diff --git a/sprites/s_node_mk_tile/layers/b4d4c641-85c8-4f01-96fd-eefedb4610b0/c8c66ee6-914d-476e-81c6-c4b667d1cb24.png b/sprites/s_node_mk_tile/layers/b4d4c641-85c8-4f01-96fd-eefedb4610b0/c8c66ee6-914d-476e-81c6-c4b667d1cb24.png new file mode 100644 index 000000000..7864cbce6 Binary files /dev/null and b/sprites/s_node_mk_tile/layers/b4d4c641-85c8-4f01-96fd-eefedb4610b0/c8c66ee6-914d-476e-81c6-c4b667d1cb24.png differ diff --git a/sprites/s_node_mk_tile/s_node_mk_tile.yy b/sprites/s_node_mk_tile/s_node_mk_tile.yy new file mode 100644 index 000000000..3402286ae --- /dev/null +++ b/sprites/s_node_mk_tile/s_node_mk_tile.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_mk_tile", + "bbox_bottom": 63, + "bbox_left": 0, + "bbox_right": 63, + "bbox_top": 0, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"b4d4c641-85c8-4f01-96fd-eefedb4610b0",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c8c66ee6-914d-476e-81c6-c4b667d1cb24","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "MK effects", + "path": "folders/nodes/icons/MK effects.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_mk_tile", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","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","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"b4d4c641-85c8-4f01-96fd-eefedb4610b0","path":"sprites/s_node_mk_tile/s_node_mk_tile.yy",},},},"Disabled":false,"id":"6019620f-8e2c-412d-a208-34d0b1b203b6","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, +} \ No newline at end of file