Delay machine, line cap, preview lock
|
@ -155,6 +155,7 @@
|
|||
{"name":"render","order":3,"path":"folders/nodes/data/render.yy",},
|
||||
{"name":"simulation","order":16,"path":"folders/nodes/data/simulation.yy",},
|
||||
{"name":"FLIP","order":4,"path":"folders/nodes/data/simulation/FLIP.yy",},
|
||||
{"name":"sprs","order":13,"path":"folders/nodes/data/simulation/rigidSim/sprs.yy",},
|
||||
{"name":"smokeSim","order":1,"path":"folders/nodes/data/simulation/smokeSim.yy",},
|
||||
{"name":"strandSim","order":3,"path":"folders/nodes/data/simulation/strandSim.yy",},
|
||||
{"name":"VFX","order":2,"path":"folders/nodes/data/simulation/VFX.yy",},
|
||||
|
@ -405,6 +406,7 @@
|
|||
{"name":"complex_function","order":15,"path":"scripts/complex_function/complex_function.yy",},
|
||||
{"name":"draw_set_blend_mode_ext","order":2,"path":"scripts/draw_set_blend_mode_ext/draw_set_blend_mode_ext.yy",},
|
||||
{"name":"s_node_shape_misc","order":6,"path":"sprites/s_node_shape_misc/s_node_shape_misc.yy",},
|
||||
{"name":"node_rigid_wall","order":12,"path":"scripts/node_rigid_wall/node_rigid_wall.yy",},
|
||||
{"name":"s_node_json_parse","order":2,"path":"sprites/s_node_json_parse/s_node_json_parse.yy",},
|
||||
{"name":"s_node_noise_simplex","order":20,"path":"sprites/s_node_noise_simplex/s_node_noise_simplex.yy",},
|
||||
{"name":"s_node_armature_sample","order":18,"path":"sprites/s_node_armature_sample/s_node_armature_sample.yy",},
|
||||
|
@ -1452,6 +1454,8 @@
|
|||
{"name":"struct_functions","order":4,"path":"scripts/struct_functions/struct_functions.yy",},
|
||||
{"name":"sh_content_sampler","order":1,"path":"shaders/sh_content_sampler/sh_content_sampler.yy",},
|
||||
{"name":"s_node_trigger","order":3,"path":"sprites/s_node_trigger/s_node_trigger.yy",},
|
||||
{"name":"s_node_mk_delay_machine","order":12,"path":"sprites/s_node_mk_delay_machine/s_node_mk_delay_machine.yy",},
|
||||
{"name":"s_node_rigidSim_wall","order":11,"path":"sprites/s_node_rigidSim_wall/s_node_rigidSim_wall.yy",},
|
||||
{"name":"fd_rectangle_get_repeat","order":19,"path":"scripts/fd_rectangle_get_repeat/fd_rectangle_get_repeat.yy",},
|
||||
{"name":"s_menu_white","order":1,"path":"sprites/s_menu_white/s_menu_white.yy",},
|
||||
{"name":"s_node_path_smooth","order":18,"path":"sprites/s_node_path_smooth/s_node_path_smooth.yy",},
|
||||
|
@ -1651,6 +1655,7 @@
|
|||
{"name":"node_tunnel_in","order":6,"path":"scripts/node_tunnel_in/node_tunnel_in.yy",},
|
||||
{"name":"node_anim_priority","order":2,"path":"scripts/node_anim_priority/node_anim_priority.yy",},
|
||||
{"name":"sh_mk_flag_shade","order":1,"path":"shaders/sh_mk_flag_shade/sh_mk_flag_shade.yy",},
|
||||
{"name":"nodd_mk_delay_machine","order":14,"path":"scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy",},
|
||||
{"name":"s_node_fluidSim_render","order":4,"path":"sprites/s_node_fluidSim_render/s_node_fluidSim_render.yy",},
|
||||
{"name":"o_dialog_crashed","order":3,"path":"objects/o_dialog_crashed/o_dialog_crashed.yy",},
|
||||
{"name":"fd_rectangle_enums","order":3,"path":"scripts/fd_rectangle_enums/fd_rectangle_enums.yy",},
|
||||
|
|
|
@ -184,6 +184,7 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"simulation","folderPath":"folders/nodes/data/simulation.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"FLIP","folderPath":"folders/nodes/data/simulation/FLIP.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"rigidSim","folderPath":"folders/nodes/data/simulation/rigidSim.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprs","folderPath":"folders/nodes/data/simulation/rigidSim/sprs.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"smokeSim","folderPath":"folders/nodes/data/simulation/smokeSim.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"strandSim","folderPath":"folders/nodes/data/simulation/strandSim.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/data/simulation/VFX.yy",},
|
||||
|
@ -612,6 +613,7 @@
|
|||
{"id":{"name":"draw_set_blend_mode_ext","path":"scripts/draw_set_blend_mode_ext/draw_set_blend_mode_ext.yy",},},
|
||||
{"id":{"name":"s_node_shape_misc","path":"sprites/s_node_shape_misc/s_node_shape_misc.yy",},},
|
||||
{"id":{"name":"s_flare_type","path":"sprites/s_flare_type/s_flare_type.yy",},},
|
||||
{"id":{"name":"node_rigid_wall","path":"scripts/node_rigid_wall/node_rigid_wall.yy",},},
|
||||
{"id":{"name":"s_node_json_parse","path":"sprites/s_node_json_parse/s_node_json_parse.yy",},},
|
||||
{"id":{"name":"s_node_noise_simplex","path":"sprites/s_node_noise_simplex/s_node_noise_simplex.yy",},},
|
||||
{"id":{"name":"s_node_armature_sample","path":"sprites/s_node_armature_sample/s_node_armature_sample.yy",},},
|
||||
|
@ -1797,6 +1799,8 @@
|
|||
{"id":{"name":"struct_functions","path":"scripts/struct_functions/struct_functions.yy",},},
|
||||
{"id":{"name":"sh_content_sampler","path":"shaders/sh_content_sampler/sh_content_sampler.yy",},},
|
||||
{"id":{"name":"s_node_trigger","path":"sprites/s_node_trigger/s_node_trigger.yy",},},
|
||||
{"id":{"name":"s_node_mk_delay_machine","path":"sprites/s_node_mk_delay_machine/s_node_mk_delay_machine.yy",},},
|
||||
{"id":{"name":"s_node_rigidSim_wall","path":"sprites/s_node_rigidSim_wall/s_node_rigidSim_wall.yy",},},
|
||||
{"id":{"name":"fd_rectangle_get_repeat","path":"scripts/fd_rectangle_get_repeat/fd_rectangle_get_repeat.yy",},},
|
||||
{"id":{"name":"s_menu_white","path":"sprites/s_menu_white/s_menu_white.yy",},},
|
||||
{"id":{"name":"s_node_path_smooth","path":"sprites/s_node_path_smooth/s_node_path_smooth.yy",},},
|
||||
|
@ -2028,6 +2032,7 @@
|
|||
{"id":{"name":"node_tunnel_in","path":"scripts/node_tunnel_in/node_tunnel_in.yy",},},
|
||||
{"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},},
|
||||
{"id":{"name":"sh_mk_flag_shade","path":"shaders/sh_mk_flag_shade/sh_mk_flag_shade.yy",},},
|
||||
{"id":{"name":"nodd_mk_delay_machine","path":"scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy",},},
|
||||
{"id":{"name":"s_node_fluidSim_render","path":"sprites/s_node_fluidSim_render/s_node_fluidSim_render.yy",},},
|
||||
{"id":{"name":"o_dialog_crashed","path":"objects/o_dialog_crashed/o_dialog_crashed.yy",},},
|
||||
{"id":{"name":"fd_rectangle_enums","path":"scripts/fd_rectangle_enums/fd_rectangle_enums.yy",},},
|
||||
|
@ -2423,6 +2428,7 @@
|
|||
{"id":{"name":"node_vector3","path":"scripts/node_vector3/node_vector3.yy",},},
|
||||
{"id":{"name":"FirebasePathsUserFunctions","path":"scripts/FirebasePathsUserFunctions/FirebasePathsUserFunctions.yy",},},
|
||||
{"id":{"name":"node_mk_gridflip","path":"scripts/node_mk_gridflip/node_mk_gridflip.yy",},},
|
||||
{"id":{"name":"s_rigid_walls","path":"sprites/s_rigid_walls/s_rigid_walls.yy",},},
|
||||
{"id":{"name":"node_pack_sprites","path":"scripts/node_pack_sprites/node_pack_sprites.yy",},},
|
||||
{"id":{"name":"font_data","path":"scripts/font_data/font_data.yy",},},
|
||||
{"id":{"name":"animation_curve","path":"scripts/animation_curve/animation_curve.yy",},},
|
||||
|
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
@ -4,19 +4,20 @@ event_inherited();
|
|||
#region data
|
||||
menu_id = "";
|
||||
|
||||
draggable = false;
|
||||
destroy_on_click_out = false;
|
||||
selecting = -1;
|
||||
draggable = false;
|
||||
mouse_inside = false;
|
||||
selecting = -1;
|
||||
|
||||
alarm[0] = -1;
|
||||
menu = 1;
|
||||
hght = ui(36);
|
||||
menu = 1;
|
||||
hght = ui(36);
|
||||
children = ds_list_create();
|
||||
ds_list_add(children, self);
|
||||
|
||||
tooltips = [];
|
||||
tooltips = [];
|
||||
show_icon = false;
|
||||
context = noone;
|
||||
context = noone;
|
||||
|
||||
function setMenu(_menu, align = fa_left) {
|
||||
menu = _menu;
|
||||
|
@ -81,6 +82,7 @@ event_inherited();
|
|||
case fa_right: dialog_x = round(max(dialog_x - dialog_w, 2)); break;
|
||||
}
|
||||
|
||||
mouse_inside = point_in_rectangle(mouse_mx, mouse_my, dialog_x, dialog_y, dialog_x + dialog_w, dialog_y + dialog_h);
|
||||
ready = true;
|
||||
}
|
||||
#endregion
|
|
@ -46,7 +46,7 @@ if(!ready) exit;
|
|||
draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, yy, dialog_w, _h, cc, 0.8);
|
||||
|
||||
if(instanceof(_menuItem) == "MenuItem" && _menuItem.active && sFOCUS &&
|
||||
(mouse_release(mb_left) || keyboard_check_released(vk_enter))) {
|
||||
((!mouse_inside && mouse_release(mb_left)) || keyboard_check_released(vk_enter))) {
|
||||
|
||||
var _dat = {
|
||||
_x: dialog_x,
|
||||
|
@ -173,6 +173,8 @@ if(!ready) exit;
|
|||
}
|
||||
|
||||
draw_sprite_stretched(THEME.menu_bg, 1, dialog_x, dialog_y, dialog_w, dialog_h);
|
||||
|
||||
if(mouse_inside && mouse_release(mb_left)) mouse_inside = false;
|
||||
#endregion
|
||||
|
||||
#region debug
|
||||
|
|
|
@ -8,6 +8,8 @@ event_inherited();
|
|||
page_width = 160;
|
||||
destroy_on_click_out = true;
|
||||
destroy_on_escape = false;
|
||||
|
||||
should_restart = false;
|
||||
#endregion
|
||||
|
||||
#region resize
|
||||
|
@ -277,12 +279,19 @@ event_inherited();
|
|||
__txtx("pref_gui_scaling", "GUI scaling*"),
|
||||
new slider(0.5, 2, 0.01, function(val) {
|
||||
PREFERENCES._display_scaling = val;
|
||||
should_restart = true;
|
||||
}, function() {
|
||||
PREFERENCES._display_scaling = clamp(PREFERENCES._display_scaling, 0.5, 2);
|
||||
resetScale(PREFERENCES._display_scaling);
|
||||
resetScale(PREFERENCES._display_scaling, true);
|
||||
should_restart = true;
|
||||
}),
|
||||
|
||||
function() { return PREFERENCES._display_scaling; },
|
||||
function(val) { PREFERENCES.display_scaling = val; PREFERENCES._display_scaling = val; },
|
||||
function(val) {
|
||||
PREFERENCES._display_scaling = val;
|
||||
resetScale(PREFERENCES._display_scaling, true);
|
||||
should_restart = true;
|
||||
},
|
||||
1,
|
||||
));
|
||||
|
||||
|
|
|
@ -14,6 +14,20 @@ if !ready exit;
|
|||
if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, destroy_on_click_out? __txt("Pin") : __txt("Unpin"),
|
||||
THEME.pin, !destroy_on_click_out, destroy_on_click_out? COLORS._main_icon : COLORS._main_icon_light) == 2)
|
||||
destroy_on_click_out = !destroy_on_click_out;
|
||||
|
||||
if(should_restart) {
|
||||
var _txt = "Restart recommended";
|
||||
var _rx = dialog_x + ui(168);
|
||||
var _ry = dialog_y + ui(20);
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_top, COLORS._main_text_accent);
|
||||
|
||||
var _rw = string_width(_txt);
|
||||
var _rh = string_height(_txt);
|
||||
|
||||
draw_sprite_stretched_ext(THEME.group_label, 0, _rx - ui(8), _ry - ui(4), _rw + ui(16), _rh + ui(8), COLORS._main_accent, 1);
|
||||
draw_text(_rx, _ry, _txt);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region page
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
function Script1053(){
|
||||
|
||||
}
|
|
@ -29,14 +29,14 @@ function line_get_width(txt, font = noone, offset = 0) {
|
|||
return round(val * UI_SCALE);
|
||||
}
|
||||
|
||||
function resetScale(scale) {
|
||||
function resetScale(scale, willResize = false) {
|
||||
if(scale == PREFERENCES.display_scaling) return;
|
||||
|
||||
PREFERENCES.display_scaling = scale;
|
||||
resetPanel();
|
||||
loadFonts();
|
||||
|
||||
time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, onResize));
|
||||
if(willResize) time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, onResize));
|
||||
PREF_SAVE();
|
||||
}
|
||||
#endregion
|
57
scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.gml
Normal file
|
@ -0,0 +1,57 @@
|
|||
function Node_MK_Delay_Machine(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "MK Delay Machine";
|
||||
use_cache = CACHE_USE.manual;
|
||||
|
||||
is_simulation = true;
|
||||
|
||||
inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
inputs[| 1] = nodeValue("Delay Amounts", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
|
||||
|
||||
inputs[| 2] = nodeValue("Delay Frames", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
|
||||
|
||||
inputs[| 3] = nodeValue("Blend over Delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ])
|
||||
.setDisplay(VALUE_DISPLAY.palette);
|
||||
|
||||
inputs[| 4] = nodeValue("Alpha over Delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
|
||||
|
||||
outputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
input_display_list = [ 0,
|
||||
["Delay", false], 1, 2,
|
||||
["Render", false], 3, 4,
|
||||
];
|
||||
|
||||
static update = function() {
|
||||
var _surf = getInputData(0);
|
||||
var _amo = getInputData(1);
|
||||
var _frm = getInputData(2);
|
||||
var _pal = getInputData(3);
|
||||
var _alpC = getInputData(4);
|
||||
|
||||
cacheCurrentFrame(_surf);
|
||||
|
||||
var _sw = surface_get_width_safe(_surf);
|
||||
var _sh = surface_get_height_safe(_surf);
|
||||
|
||||
var _outSurf = outputs[| 0].getValue();
|
||||
_outSurf = surface_verify(_outSurf, _sw, _sh);
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
DRAW_CLEAR
|
||||
|
||||
for( var i = _amo - 1; i >= 0; i-- ) {
|
||||
var _ff = CURRENT_FRAME - i * _frm;
|
||||
var _s = array_safe_get(cached_output, _ff);
|
||||
if(!is_surface(_s)) continue;
|
||||
|
||||
var cc = array_safe_get(_pal, i, c_white, ARRAY_OVERFLOW.loop);
|
||||
var aa = eval_curve_x(_alpC, 1 - i / _amo);
|
||||
|
||||
draw_surface_ext(_s, 0, 0, 1, 1, 0, cc, aa);
|
||||
}
|
||||
surface_reset_target();
|
||||
|
||||
outputs[| 0].setValue(_outSurf);
|
||||
}
|
||||
}
|
11
scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "nodd_mk_delay_machine",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "MK effects",
|
||||
"path": "folders/nodes/data/MK effects.yy",
|
||||
},
|
||||
}
|
|
@ -87,7 +87,7 @@ function Node_Cellular(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||
|
||||
surface_set_shader(_outSurf, shader);
|
||||
shader_set_f("dimension", _dim);
|
||||
shader_set_f("time", _tim);
|
||||
shader_set_f("seed", _tim);
|
||||
shader_set_f("position", _pos);
|
||||
shader_set_f_map("scale", _data[2], _data[11], inputs[| 2]);
|
||||
shader_set_f("contrast", _con);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
function Node_Delay(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Delay";
|
||||
|
||||
is_simulation = true;
|
||||
|
||||
inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
inputs[| 1] = nodeValue("Frames", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
|
||||
|
|
|
@ -388,8 +388,6 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
|
||||
#region draw
|
||||
|
||||
//print($"==== Drawing frame {CURRENT_FRAME} ====")
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
if(_bg) draw_clear_alpha(0, 1);
|
||||
else DRAW_CLEAR
|
||||
|
@ -409,6 +407,8 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
var points = lines[i];
|
||||
if(array_length(points) < 2) continue;
|
||||
|
||||
var _caps = [];
|
||||
|
||||
if(_useTex) draw_primitive_begin_texture(pr_trianglestrip, tex);
|
||||
else draw_primitive_begin(pr_trianglestrip);
|
||||
|
||||
|
@ -438,19 +438,15 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
|
||||
if(_cap) { #region
|
||||
if(j == 1) {
|
||||
draw_set_color(_oc);
|
||||
|
||||
_d = _dir + 180;
|
||||
draw_circle_angle(_ox, _oy, _ow / 2, _d - 90, _d, _capP);
|
||||
draw_circle_angle(_ox, _oy, _ow / 2, _d, _d + 90, _capP);
|
||||
_caps[0] = [ _oc, _ox, _oy, _ow / 2, _d - 90, _d ];
|
||||
_caps[1] = [ _oc, _ox, _oy, _ow / 2, _d, _d + 90 ];
|
||||
}
|
||||
|
||||
if(j == array_length(points) - 1) {
|
||||
draw_set_color(_nc);
|
||||
|
||||
_d = _dir;
|
||||
draw_circle_angle(_nx, _ny, _nw / 2, _d - 90, _d, _capP);
|
||||
draw_circle_angle(_nx, _ny, _nw / 2, _d, _d + 90, _capP);
|
||||
_caps[2] = [ _nc, _nx, _ny, _nw / 2, _d - 90, _d ];
|
||||
_caps[3] = [ _nc, _nx, _ny, _nw / 2, _d, _d + 90 ];
|
||||
}
|
||||
} #endregion
|
||||
|
||||
|
@ -516,6 +512,12 @@ function Node_Line(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
|
|||
}
|
||||
|
||||
draw_primitive_end();
|
||||
|
||||
for( var j = 0, m = array_length(_caps); j < m; j++ ) {
|
||||
var _cps = _caps[j];
|
||||
draw_set_color(_cps[0]);
|
||||
draw_circle_angle(_cps[1], _cps[2], _cps[3], _cps[4], _cps[5], _capP);
|
||||
}
|
||||
}
|
||||
|
||||
if(_useTex) shader_reset();
|
||||
|
|
|
@ -403,6 +403,7 @@ function __initNodes() {
|
|||
ds_list_add(rigidSim, "RigidSim");
|
||||
addNodeObject(rigidSim, "Object", s_node_rigidSim_object, "Node_Rigid_Object", [1, Node_Rigid_Object],, "Spawn a rigidbody object.").hideRecent().setVersion(1110);
|
||||
addNodeObject(rigidSim, "Object Spawner", s_node_rigidSim_object_spawner, "Node_Rigid_Object_Spawner", [1, Node_Rigid_Object_Spawner],, "Spawn multiple rigidbody objects.").hideRecent().setVersion(1110);
|
||||
addNodeObject(rigidSim, "Wall", s_node_rigidSim_wall, "Node_Rigid_Wall", [1, Node_Rigid_Wall]).hideRecent().setVersion(11680);
|
||||
addNodeObject(rigidSim, "Render", s_node_rigidSim_renderer, "Node_Rigid_Render", [1, Node_Rigid_Render],, "Render rigidbody object to surface.").hideRecent().setVersion(1110);
|
||||
addNodeObject(rigidSim, "Apply Force", s_node_rigidSim_force, "Node_Rigid_Force_Apply", [1, Node_Rigid_Force_Apply],, "Apply force to objects.").hideRecent().setVersion(1110);
|
||||
|
||||
|
@ -749,6 +750,7 @@ function __initNodes() {
|
|||
addNodeObject(generator, "MK Fall", s_node_mk_fall, "Node_MK_Fall", [1, Node_MK_Fall], ["Leaf", "Leaves"]).setVersion(11630);
|
||||
addNodeObject(generator, "MK Blinker", s_node_mk_blinker, "Node_MK_Blinker", [1, Node_MK_Blinker]).setVersion(11630);
|
||||
addNodeObject(generator, "MK Lens Flare", s_node_mk_flare, "Node_MK_Flare", [1, Node_MK_Flare]).setVersion(11630);
|
||||
addNodeObject(generator, "MK Delay Machine", s_node_mk_delay_machine, "Node_MK_Delay_Machine", [1, Node_MK_Delay_Machine]).setVersion(11680);
|
||||
//addNodeObject(generator, "MK Sparkle", s_node_mk_sparkle, "Node_MK_Sparkle", [1, Node_MK_Sparkle]).patreonExtra();
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@ function Node_Rigid_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inlin
|
|||
is_simulation = true;
|
||||
manual_ungroupable = false;
|
||||
|
||||
inputs[| 0] = nodeValue("Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 10 ])
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
if(!LOADING && !APPENDING && !CLONING) {
|
||||
var _object = nodeBuild("Node_Rigid_Object", x, y);
|
||||
var _output = nodeBuild("Node_Rigid_Render", x + 160, y);
|
||||
|
@ -15,4 +18,10 @@ function Node_Rigid_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inlin
|
|||
addNode(_object);
|
||||
addNode(_output);
|
||||
}
|
||||
|
||||
static update = function(frame = CURRENT_FRAME) {
|
||||
var _gra = getInputData(0);
|
||||
|
||||
physics_world_gravity(_gra[0], _gra[1]);
|
||||
}
|
||||
}
|
|
@ -70,9 +70,9 @@ function Node_Rigid_Object(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
outputs[| 0] = nodeValue("Object", self, JUNCTION_CONNECT.output, VALUE_TYPE.rigid, object);
|
||||
|
||||
input_display_list = [ 8, 12,
|
||||
["Texture", false], 6,
|
||||
["Physical", false], 0, 1, 2, 3, 4,
|
||||
["Shape", false], 7, 5, 9, 10, 11,
|
||||
["Texture", false], 6,
|
||||
["Physics", false], 0, 1, 2, 3, 4,
|
||||
["Shape", false], 7, 5, 9, 10, 11,
|
||||
];
|
||||
|
||||
static newMesh = function(index) {
|
||||
|
@ -289,6 +289,8 @@ function Node_Rigid_Object(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
}
|
||||
}
|
||||
|
||||
var a = inputs[| 7].drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); active &= !a;
|
||||
|
||||
return active;
|
||||
} #endregion
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ function Node_Rigid_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
|
||||
manual_ungroupable = false;
|
||||
|
||||
use_cache = CACHE_USE.auto;
|
||||
//use_cache = CACHE_USE.auto;
|
||||
update_on_frame = true;
|
||||
|
||||
inputs[| 0] = nodeValue("Render dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_SURF)
|
||||
|
@ -83,8 +83,8 @@ function Node_Rigid_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
|||
var _dim = getInputData(0);
|
||||
preview_surface = surface_verify(preview_surface, _dim[0], _dim[1], attrDepth());
|
||||
|
||||
if(!(TESTING && keyboard_check(ord("D"))) && (recoverCache() || !PROJECT.animator.is_playing))
|
||||
return;
|
||||
//if(!(TESTING && keyboard_check(ord("D"))) )
|
||||
// return;
|
||||
|
||||
var _rnd = getInputData(1);
|
||||
var _outSurf = outputs[| 0].getValue();
|
||||
|
|
|
@ -2,7 +2,7 @@ function Node_Rigid_Render_Output(_x, _y, _group = noone) : Node_Group_Output(_x
|
|||
name = "Render";
|
||||
color = COLORS.node_blend_simulation;
|
||||
icon = THEME.rigidSim;
|
||||
use_cache = CACHE_USE.auto;
|
||||
//use_cache = CACHE_USE.auto;
|
||||
|
||||
manual_ungroupable = false;
|
||||
|
||||
|
|
128
scripts/node_rigid_wall/node_rigid_wall.gml
Normal file
|
@ -0,0 +1,128 @@
|
|||
function Node_Rigid_Wall(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Wall";
|
||||
color = COLORS.node_blend_simulation;
|
||||
icon = THEME.rigidSim;
|
||||
w = 96;
|
||||
min_h = 96;
|
||||
|
||||
manual_ungroupable = false;
|
||||
|
||||
object = [];
|
||||
|
||||
inputs[| 0] = nodeValue("Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0b0010)
|
||||
.setDisplay(VALUE_DISPLAY.toggle, { data : [ "T", "B", "L", "R" ] });
|
||||
|
||||
inputs[| 1] = nodeValue("Contact Friction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2);
|
||||
|
||||
inputs[| 2] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
inputs[| 3] = nodeValue("Collision Group", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
|
||||
|
||||
input_display_list = [ 3, 0, 2,
|
||||
["Physics", false], 1
|
||||
];
|
||||
|
||||
static drawOverlayPreview = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||
return drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||
}
|
||||
|
||||
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
||||
var _dim = getInputData(2);
|
||||
|
||||
var _x0 = _x;
|
||||
var _y0 = _y;
|
||||
var _x1 = _x0 + _dim[0] * _s;
|
||||
var _y1 = _y0 + _dim[1] * _s;
|
||||
|
||||
draw_set_color(COLORS._main_accent);
|
||||
draw_rectangle(_x0, _y0, _x1, _y1, true);
|
||||
|
||||
return inputs[| 2].drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||
} #endregion
|
||||
|
||||
static spawn = function(side = 0) { #region
|
||||
var _frc = getInputData(1);
|
||||
var _dim = getInputData(2);
|
||||
var _col = getInputData(3);
|
||||
|
||||
var _dw = _dim[0] / 2;
|
||||
var _dh = _dim[1] / 2;
|
||||
var _x = 0, _y = 0, _w = 1, _h = 1;
|
||||
|
||||
switch(side) {
|
||||
case 0 : //Top
|
||||
_x = _dw;
|
||||
_y = -50;
|
||||
_w = _dw;
|
||||
_h = 50;
|
||||
break;
|
||||
|
||||
case 1 : //Bottom
|
||||
_x = _dw;
|
||||
_y = _dim[1] + 50;
|
||||
_w = _dw;
|
||||
_h = 50;
|
||||
break;
|
||||
|
||||
case 2 : //Left
|
||||
_x = -50;
|
||||
_y = _dh;
|
||||
_w = 50;
|
||||
_h = _dh;
|
||||
break;
|
||||
|
||||
case 3 : //Rgiht
|
||||
_x = _dim[0] + 50;
|
||||
_y = _dh;
|
||||
_w = 50;
|
||||
_h = _dh;
|
||||
break;
|
||||
}
|
||||
|
||||
var obj = instance_create(_x, _y, oRigidbody);
|
||||
|
||||
var _fix = physics_fixture_create();
|
||||
physics_fixture_set_box_shape(_fix, _w, _h);
|
||||
physics_fixture_set_kinematic(_fix);
|
||||
physics_fixture_set_friction(_fix, _frc);
|
||||
physics_fixture_set_collision_group(_fix, _col);
|
||||
|
||||
array_push(obj.fixture, physics_fixture_bind(_fix, obj));
|
||||
|
||||
return obj;
|
||||
} #endregion
|
||||
|
||||
static update = function() { #region
|
||||
if(IS_FIRST_FRAME) reset();
|
||||
} #endregion
|
||||
|
||||
static reset = function() { #region
|
||||
for( var i = 0, n = array_length(object); i < n; i++ ) {
|
||||
if(instance_exists(object[i]))
|
||||
instance_destroy(object[i]);
|
||||
}
|
||||
|
||||
object = [];
|
||||
|
||||
var _sids = getInputData(0);
|
||||
|
||||
for( var i = 0; i < 4; i++ )
|
||||
if(_sids & (1 << i)) array_push(object, spawn(i));
|
||||
} #endregion
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
var _sids = getInputData(0);
|
||||
var spr = s_rigid_walls;
|
||||
|
||||
var ss = min(bbox.w / sprite_get_width(spr), bbox.h / sprite_get_height(spr));
|
||||
|
||||
draw_sprite_ext(spr, 0, bbox.xc, bbox.yc, ss, ss, 0, c_white, 1);
|
||||
|
||||
if(_sids & (1 << 0)) draw_sprite_ext(spr, 1, bbox.xc, bbox.yc, ss, ss, 180, c_white, 1);
|
||||
if(_sids & (1 << 1)) draw_sprite_ext(spr, 1, bbox.xc, bbox.yc, ss, ss, 0, c_white, 1);
|
||||
if(_sids & (1 << 2)) draw_sprite_ext(spr, 1, bbox.xc, bbox.yc, ss, ss, 270, c_white, 1);
|
||||
if(_sids & (1 << 3)) draw_sprite_ext(spr, 1, bbox.xc, bbox.yc, ss, ss, 90, c_white, 1);
|
||||
}
|
||||
}
|
11
scripts/node_rigid_wall/node_rigid_wall.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_rigid_wall",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "rigidSim",
|
||||
"path": "folders/nodes/data/simulation/rigidSim.yy",
|
||||
},
|
||||
}
|
|
@ -50,7 +50,7 @@ function Node_Time_Remap(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
|||
else
|
||||
_frame = clamp(_frame, 0, TOTAL_FRAMES - 1);
|
||||
|
||||
var s = array_safe_get(cached_output, _frame)
|
||||
var s = array_safe_get(cached_output, _frame);
|
||||
if(!is_surface(s)) continue;
|
||||
|
||||
shader_set_uniform_f(uniform_min, i * ste);
|
||||
|
|
|
@ -279,22 +279,18 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||
|
||||
for( var i = 0; i <= echo_amo; i++ ) {
|
||||
var rat = i / echo_amo;
|
||||
var _px = lerp(_pre[0][0], pos[0], rat);
|
||||
var _py = lerp(_pre[0][1], pos[1], rat);
|
||||
var _px = lerp(_pre[0][0], draw_x, rat);
|
||||
var _py = lerp(_pre[0][1], draw_y, rat);
|
||||
var _rt = lerp(_pre[1], rot, rat);
|
||||
var _sx = lerp(_pre[2][0], sca[0], rat);
|
||||
var _sy = lerp(_pre[2][1], sca[1], rat);
|
||||
|
||||
var _ps = point_rotate(_px, _py, _px + anc[0], _py + anc[1], rot);
|
||||
var _dx = _ps[0];
|
||||
var _dy = _ps[1];
|
||||
|
||||
if(pos_exact) {
|
||||
_dx = round(_dx);
|
||||
_dy = round(_dy);
|
||||
_px = round(_px);
|
||||
_py = round(_py);
|
||||
}
|
||||
|
||||
draw_surface_ext_safe(ins, _dx, _dy, _sx, _sy, _rt, c_white, alp);
|
||||
draw_surface_ext_safe(ins, _px, _py, _sx, _sy, _rt, c_white, alp);
|
||||
}
|
||||
} else
|
||||
draw_surface_ext_safe(ins, draw_x, draw_y, sca[0], sca[1], rot, c_white, alp);
|
||||
|
@ -316,7 +312,7 @@ function Node_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
|||
}
|
||||
|
||||
prev_data[_array_index] = [
|
||||
[ pos[0], pos[1] ],
|
||||
[ draw_x, draw_y ],
|
||||
rot,
|
||||
[ sca[0], sca[1] ],
|
||||
];
|
||||
|
|
|
@ -128,7 +128,12 @@ function Panel(_parent, _x, _y, _w, _h) constructor { #region
|
|||
return res;
|
||||
}
|
||||
|
||||
var ind = hori? childs[| 1].w > childs[| 0].w : childs[| 1].h > childs[| 0].h;
|
||||
var _c0 = ds_list_get(childs, 0, noone);
|
||||
var _c1 = ds_list_get(childs, 1, noone);
|
||||
|
||||
if(_c0 == noone || _c1 == noone) return false;
|
||||
|
||||
var ind = hori? _c1.w > _c0.w : _c1.h > _c0.h;
|
||||
return childs[| ind].resizable(dw, dh, oppose);
|
||||
} #endregion
|
||||
|
||||
|
|
|
@ -99,6 +99,24 @@
|
|||
loadPanelStruct(panel, CURRENT_PANEL.panel);
|
||||
} #endregion
|
||||
|
||||
function checkPanelValid() { #region
|
||||
var val = true;
|
||||
if(!is_instanceof(PANEL_GRAPH.panel, Panel)) val = false;
|
||||
if(!is_instanceof(PANEL_PREVIEW.panel, Panel)) val = false;
|
||||
if(!is_instanceof(PANEL_INSPECTOR.panel, Panel)) val = false;
|
||||
|
||||
if(!val) {
|
||||
noti_warning("Invalid Panel Layout, layout and UI scale will be reset to the default value.\n\nRestart recommended.");
|
||||
|
||||
PREFERENCES.panel_layout_file = "Vertical";
|
||||
PREFERENCES._display_scaling = 1;
|
||||
PREFERENCES.display_scaling = 0;
|
||||
resetScale(1);
|
||||
}
|
||||
|
||||
return val;
|
||||
} #endregion
|
||||
|
||||
function panelAdd(panel, create = false) { #region
|
||||
var pan = getPanelFromName(panel, create);
|
||||
if(pan == noone) return noone;
|
||||
|
@ -121,6 +139,8 @@
|
|||
panelObjectInit();
|
||||
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
||||
PANEL_MAIN.refresh();
|
||||
|
||||
checkPanelValid();
|
||||
} #endregion
|
||||
|
||||
function __initPanel() { #region
|
||||
|
@ -131,6 +151,8 @@
|
|||
|
||||
setPanel();
|
||||
panelDisplayInit();
|
||||
|
||||
checkPanelValid();
|
||||
} #endregion
|
||||
|
||||
function setPanel() { #region
|
||||
|
|
|
@ -911,7 +911,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
#endregion
|
||||
printIf(log, $"Hover time: {get_timer() - t}"); t = get_timer();
|
||||
|
||||
#region interaction
|
||||
#region ++++++++++++ interaction ++++++++++++
|
||||
if(mouse_on_graph && pHOVER) {
|
||||
#region select
|
||||
if(NODE_DROPPER_TARGET != noone && node_hovering) {
|
||||
|
@ -946,7 +946,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
if(!key_mod_press(CTRL))
|
||||
for(var i = 0; i < ds_list_size(nodes_list); i++) { //select content
|
||||
var _node = nodes_list[| i];
|
||||
if(is_instanceof(_node, Node_Frame)) continue;
|
||||
if(_node == node_hovering) continue;
|
||||
|
||||
if(!_node.selectable) continue;
|
||||
|
||||
var _x = (_node.x + graph_x) * graph_s;
|
||||
|
@ -955,7 +956,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
|||
var _h = _node.h * graph_s;
|
||||
|
||||
if(_w && _h && rectangle_inside_rectangle(fx0, fy0, fx1, fy1, _x, _y, _x + _w, _y + _h))
|
||||
array_push(nodes_selecting, _node);
|
||||
array_push_unique(nodes_selecting, _node);
|
||||
}
|
||||
} else if(DOUBLE_CLICK) {
|
||||
PANEL_PREVIEW.setNodePreview(node_hovering);
|
||||
|
|
|
@ -68,6 +68,7 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
#endregion
|
||||
|
||||
#region ---- preview ----
|
||||
locked = false;
|
||||
preview_node = [ noone, noone ];
|
||||
preview_surfaces = [ 0, 0 ];
|
||||
preview_surface = [ 0, 0 ];
|
||||
|
@ -281,15 +282,23 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
];
|
||||
|
||||
actions = [
|
||||
[
|
||||
THEME.lock,
|
||||
__txtx("panel_preview_lock_preview", "Lock previewing node"),
|
||||
function() { locked = !locked; },
|
||||
function() { return !locked; },
|
||||
],
|
||||
[
|
||||
THEME.icon_preview_export,
|
||||
__txtx("panel_preview_export_canvas", "Export canvas"),
|
||||
function() { saveCurrentFrame(); }
|
||||
function() { saveCurrentFrame(); },
|
||||
function() { return 0; },
|
||||
],
|
||||
[
|
||||
THEME.icon_center_canvas,
|
||||
__txtx("panel_preview_center_canvas", "Center canvas"),
|
||||
function() { fullView(); }
|
||||
function() { fullView(); },
|
||||
function() { return 0; },
|
||||
],
|
||||
|
||||
]
|
||||
|
@ -307,6 +316,8 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
#endregion
|
||||
|
||||
function setNodePreview(node) { #region
|
||||
if(locked) return;
|
||||
|
||||
if(resetViewOnDoubleClick)
|
||||
do_fullView = true;
|
||||
|
||||
|
@ -317,11 +328,16 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
} #endregion
|
||||
|
||||
function removeNodePreview(node) { #region
|
||||
if(locked) return;
|
||||
|
||||
if(preview_node[0] == node) preview_node[0] = noone;
|
||||
if(preview_node[1] == node) preview_node[1] = noone;
|
||||
} #endregion
|
||||
|
||||
function resetNodePreview() { preview_node = [ noone, noone ]; }
|
||||
function resetNodePreview() { #region
|
||||
preview_node = [ noone, noone ];
|
||||
locked = false;
|
||||
} #endregion
|
||||
|
||||
function getNodePreview() { return preview_node[splitView? splitSelection : 0]; }
|
||||
function getNodePreviewSurface() { return preview_surfaces[splitView? splitSelection : 0]; }
|
||||
|
@ -1407,11 +1423,12 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
|
||||
tbx = w - toolbar_height / 2;
|
||||
for( var i = 0, n = array_length(actions); i < n; i++ ) {
|
||||
var tb = actions[i];
|
||||
var tbSpr = tb[0];
|
||||
var tb = actions[i];
|
||||
var tbSpr = tb[0];
|
||||
var tbTooltip = tb[1];
|
||||
var tbIndex = tb[3]();
|
||||
|
||||
var b = buttonInstant(THEME.button_hide, tbx - ui(14), tby - ui(14), ui(28), ui(28), [mx, my], pFOCUS, pHOVER, tbTooltip, tbSpr, 0);
|
||||
var b = buttonInstant(THEME.button_hide, tbx - ui(14), tby - ui(14), ui(28), ui(28), [mx, my], pFOCUS, pHOVER, tbTooltip, tbSpr, tbIndex);
|
||||
if(b == 2) tb[2]();
|
||||
|
||||
tbx -= ui(32);
|
||||
|
|
|
@ -7,7 +7,7 @@ varying vec4 v_vColour;
|
|||
uniform vec2 dimension;
|
||||
uniform vec2 position;
|
||||
uniform int pattern;
|
||||
uniform float time;
|
||||
uniform float seed;
|
||||
|
||||
uniform vec2 scale;
|
||||
uniform int scaleUseSurf;
|
||||
|
@ -50,7 +50,7 @@ void main() {
|
|||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x),float(y));
|
||||
vec2 point = random2(mod(i_st + neighbor, scaMax));
|
||||
point = 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
point = 0.5 + 0.5 * sin(seed + 6.2831 * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
float dist = length(_diff);
|
||||
|
@ -61,7 +61,7 @@ void main() {
|
|||
for (int j = 0; j <= int(sca / 2.); j++) {
|
||||
int _amo = int(sca) + int(float(j) * radiusShatter);
|
||||
for (int i = 0; i <= _amo; i++) {
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + time;
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + seed;
|
||||
float rad = pow(float(j) / sca, radiusScale) * sca * .5 + random(vec2(ang)) * 0.1;
|
||||
vec2 point = vec2(cos(ang) * rad, sin(ang) * rad) + pos;
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ varying vec4 v_vColour;
|
|||
|
||||
uniform vec2 dimension;
|
||||
uniform vec2 position;
|
||||
uniform float time;
|
||||
uniform float seed;
|
||||
uniform float contrast;
|
||||
uniform float middle;
|
||||
|
||||
|
@ -58,7 +58,7 @@ void main() {
|
|||
#endregion
|
||||
|
||||
vec2 p = ((v_vTexcoord - position / dimension) * sca * 2.0 - 1.0);
|
||||
float n = voronoi3d(vec3(p, time), sca);
|
||||
float n = voronoi3d(vec3(p, seed), sca);
|
||||
n = middle + (n - middle) * contrast;
|
||||
|
||||
gl_FragColor = vec4(vec3(n), 1.);
|
||||
|
|
|
@ -5,7 +5,7 @@ varying vec4 v_vColour;
|
|||
|
||||
uniform vec2 dimension;
|
||||
uniform vec2 position;
|
||||
uniform float time;
|
||||
uniform float seed;
|
||||
uniform float contrast;
|
||||
uniform float middle;
|
||||
uniform float radiusScale;
|
||||
|
@ -47,7 +47,7 @@ void main() {
|
|||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x), float(y));
|
||||
vec2 point = random2(mod(i_st + neighbor, scaMax));
|
||||
point = 0.5 + 0.5 * sin(time + TAU * point);
|
||||
point = 0.5 + 0.5 * sin(seed + TAU * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
float dist = length(_diff);
|
||||
|
@ -64,7 +64,7 @@ void main() {
|
|||
for(int x = -2; x <= 2; x++) {
|
||||
vec2 g = mg + vec2(float(x), float(y));
|
||||
vec2 point = random2(mod(i_st + g, scaMax));
|
||||
point = 0.5 + 0.5 * sin(time + TAU * point);
|
||||
point = 0.5 + 0.5 * sin(seed + TAU * point);
|
||||
|
||||
vec2 r = g + point - f_st;
|
||||
if(dot(mr - r, mr - r) > .000001)
|
||||
|
@ -74,7 +74,7 @@ void main() {
|
|||
for (int j = 0; j <= int(sca / 2.); j++) {
|
||||
int _amo = int(sca) + int(float(j) * radiusShatter);
|
||||
for (int i = 0; i <= _amo; i++) {
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + time;
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + seed;
|
||||
float rad = pow(float(j) / sca, radiusScale) * sca * .5 + random(vec2(ang)) * 0.1;
|
||||
vec2 neighbor = vec2(cos(ang) * rad, sin(ang) * rad);
|
||||
vec2 point = neighbor + pos;
|
||||
|
@ -94,7 +94,7 @@ void main() {
|
|||
for (int j = 0; j <= int(sca / 2.); j++) {
|
||||
int _amo = int(sca) + int(float(j) * radiusShatter);
|
||||
for (int i = 0; i <= _amo; i++) {
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + time;
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + seed;
|
||||
float rad = pow(float(j) / sca, radiusScale) * sca * .5 + random(vec2(ang)) * 0.1;
|
||||
vec2 neighbor = vec2(cos(ang) * rad, sin(ang) * rad);
|
||||
vec2 point = neighbor + pos;
|
||||
|
|
|
@ -6,7 +6,7 @@ varying vec4 v_vColour;
|
|||
|
||||
uniform vec2 dimension;
|
||||
uniform vec2 position;
|
||||
uniform float time;
|
||||
uniform float seed;
|
||||
uniform float contrast;
|
||||
uniform float middle;
|
||||
uniform float radiusScale;
|
||||
|
@ -55,16 +55,16 @@ void main() {
|
|||
if(pattern == 0) {
|
||||
for (int y = -1; y <= 1; y++) {
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
vec2 neighbor = vec2(float(x),float(y));
|
||||
vec2 point = random2(mod(i_st + neighbor, scaMax));
|
||||
point = 0.5 + 0.5 * sin(time + 6.2831 * point);
|
||||
vec2 neighbor = vec2(float(x), float(y));
|
||||
vec2 point = random2(mod(i_st + neighbor, scaMax));
|
||||
vec2 pointSam = 0.5 + 0.5 * sin(seed + TAU * point);
|
||||
|
||||
vec2 _diff = neighbor + point - f_st;
|
||||
vec2 _diff = neighbor + pointSam - f_st;
|
||||
float dist = length(_diff);
|
||||
|
||||
if(dist < m_dist) {
|
||||
m_dist = dist;
|
||||
mp = point;
|
||||
mp = point;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,8 +72,8 @@ void main() {
|
|||
for (int j = 0; j <= int(sca / 2.); j++) {
|
||||
int _amo = int(sca) + int(float(j) * radiusShatter);
|
||||
for (int i = 0; i <= _amo; i++) {
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + time;
|
||||
float rad = pow(float(j) / sca, radiusScale) * sca * .5 + random(vec2(ang)) * 0.1;
|
||||
float ang = TAU / float(_amo) * float(i) + float(j) + random(vec2(0.684, 1.387)) + seed;
|
||||
float rad = pow(float(j) / sca, radiusScale) * sca * .5 + random(vec2(ang)) * 0.1;
|
||||
vec2 point = vec2(cos(ang) * rad, sin(ang) * rad) + pos;
|
||||
|
||||
vec2 _diff = point - v_vTexcoord;
|
||||
|
|
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
74
sprites/s_node_mk_delay_machine/s_node_mk_delay_machine.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_mk_delay_machine",
|
||||
"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":"69ad2eb8-5b0a-4607-af51-7906601b18bf",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"fbc6fffd-44cb-40d8-96ef-9432fae45ea6","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_delay_machine",
|
||||
"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":"69ad2eb8-5b0a-4607-af51-7906601b18bf","path":"sprites/s_node_mk_delay_machine/s_node_mk_delay_machine.yy",},},},"Disabled":false,"id":"f59d1576-91f8-4dba-9be9-99b6fc5bbba7","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,
|
||||
}
|
After Width: | Height: | Size: 957 B |
After Width: | Height: | Size: 957 B |
74
sprites/s_node_rigidSim_wall/s_node_rigidSim_wall.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_rigidSim_wall",
|
||||
"bbox_bottom": 59,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 62,
|
||||
"bbox_top": 9,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0d7140ec-f111-4457-a292-051e279e0994",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"0a340f5b-fef2-4090-b8ef-048ec288af78","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "rigidSim",
|
||||
"path": "folders/nodes/icons/rigidSim.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_node_rigidSim_wall",
|
||||
"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":"0d7140ec-f111-4457-a292-051e279e0994","path":"sprites/s_node_rigidSim_wall/s_node_rigidSim_wall.yy",},},},"Disabled":false,"id":"82499b23-8e4c-4ee7-bda5-a97c4e96d683","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,
|
||||
}
|
BIN
sprites/s_rigid_walls/7fde6321-6cbb-4790-8a31-f3b9227760f2.png
Normal file
After Width: | Height: | Size: 626 B |
BIN
sprites/s_rigid_walls/a1f386bb-eba7-4504-ae95-41b616be7586.png
Normal file
After Width: | Height: | Size: 651 B |
After Width: | Height: | Size: 626 B |
After Width: | Height: | Size: 651 B |
76
sprites/s_rigid_walls/s_rigid_walls.yy
Normal file
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_rigid_walls",
|
||||
"bbox_bottom": 59,
|
||||
"bbox_left": 10,
|
||||
"bbox_right": 53,
|
||||
"bbox_top": 11,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a1f386bb-eba7-4504-ae95-41b616be7586",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7fde6321-6cbb-4790-8a31-f3b9227760f2",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "sprs",
|
||||
"path": "folders/nodes/data/simulation/rigidSim/sprs.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_rigid_walls",
|
||||
"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": 2.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":"a1f386bb-eba7-4504-ae95-41b616be7586","path":"sprites/s_rigid_walls/s_rigid_walls.yy",},},},"Disabled":false,"id":"8e1537d5-116e-4415-91c5-91bd4443d70f","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":"7fde6321-6cbb-4790-8a31-f3b9227760f2","path":"sprites/s_rigid_walls/s_rigid_walls.yy",},},},"Disabled":false,"id":"5be1fcac-b770-4fd8-8624-8e32186523a6","IsCreationKey":false,"Key":1.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,
|
||||
}
|