Delay machine, line cap, preview lock

This commit is contained in:
Tanasart 2024-03-23 13:26:11 +07:00
parent 8ba86ad6cc
commit 31dca9d403
45 changed files with 596 additions and 72 deletions

View file

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

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View file

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

View file

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

View file

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

View file

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

View file

@ -1,3 +0,0 @@
function Script1053(){
}

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View 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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 B

View 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,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

View 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,
}