This commit is contained in:
Tanasart 2023-12-10 20:55:05 +07:00
parent 40187887b4
commit ce559e7224
52 changed files with 757 additions and 263 deletions

View file

@ -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",},

View file

@ -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",},},

View file

@ -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));

View file

@ -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;

View file

@ -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) {

View file

@ -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
}

View file

@ -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

View file

@ -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

View file

@ -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;
}
}

View file

@ -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",
},
}

View file

@ -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;
}
}

View file

@ -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(); }
}

View file

@ -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;

View file

@ -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));

View file

@ -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();
}

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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 );
}

View file

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

View file

@ -0,0 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_tile_random",
"parent": {
"name": "filter",
"path": "folders/shader/filter.yy",
},
"type": 1,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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<SpriteFrameKeyframe>","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,

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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<SpriteFrameKeyframe>","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,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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<SpriteFrameKeyframe>","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,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","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<SpriteFrameKeyframe>","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,

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -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<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"eventStubScript": null,
"eventToFunction": {},
"length": 1.0,
"lockOrigin": false,
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
"playback": 1,
"playbackSpeed": 30.0,
"playbackSpeedType": 0,
"showBackdrop": true,
"showBackdropImage": false,
"timeUnits": 1,
"tracks": [
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"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,
}