From 31dca9d4030f6146fba4730a9b45d59e38522da8 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Sat, 23 Mar 2024 13:26:11 +0700 Subject: [PATCH] Delay machine, line cap, preview lock --- PixelComposer.resource_order | 5 + PixelComposer.yyp | 6 + fonts/_f_sdf/_f_sdf.old.png | Bin 82361 -> 82361 bytes fonts/_f_sdf/_f_sdf.png | Bin 82361 -> 82361 bytes fonts/_f_sdf_medium/_f_sdf_medium.old.png | Bin 59906 -> 59906 bytes fonts/_f_sdf_medium/_f_sdf_medium.png | Bin 59906 -> 59906 bytes objects/o_dialog_menubox/Create_0.gml | 14 +- objects/o_dialog_menubox/Draw_64.gml | 4 +- objects/o_dialog_preference/Create_0.gml | 13 +- objects/o_dialog_preference/Draw_64.gml | 14 ++ scripts/Script1053/Script1053.gml | 3 - scripts/draw_UI_scale/draw_UI_scale.gml | 4 +- .../nodd_mk_delay_machine.gml | 57 ++++++++ .../nodd_mk_delay_machine.yy | 11 ++ scripts/node_cellular/node_cellular.gml | 2 +- scripts/node_delay/node_delay.gml | 2 + scripts/node_line/node_line.gml | 22 +-- scripts/node_registry/node_registry.gml | 2 + .../node_rigid_group_inline.gml | 9 ++ .../node_rigid_object/node_rigid_object.gml | 8 +- .../node_rigid_render/node_rigid_render.gml | 6 +- .../node_rigid_render_output.gml | 2 +- scripts/node_rigid_wall/node_rigid_wall.gml | 128 ++++++++++++++++++ scripts/node_rigid_wall/node_rigid_wall.yy | 11 ++ scripts/node_time_remap/node_time_remap.gml | 2 +- scripts/node_transform/node_transform.gml | 16 +-- scripts/panel_data/panel_data.gml | 7 +- scripts/panel_function/panel_function.gml | 22 +++ scripts/panel_graph/panel_graph.gml | 7 +- scripts/panel_preview/panel_preview.gml | 29 +++- shaders/sh_cell_noise/sh_cell_noise.fsh | 6 +- .../sh_cell_noise_crystal.fsh | 4 +- .../sh_cell_noise_edge/sh_cell_noise_edge.fsh | 10 +- .../sh_cell_noise_random.fsh | 18 +-- .../69ad2eb8-5b0a-4607-af51-7906601b18bf.png | Bin 0 -> 2326 bytes .../fbc6fffd-44cb-40d8-96ef-9432fae45ea6.png | Bin 0 -> 2326 bytes .../s_node_mk_delay_machine.yy | 74 ++++++++++ .../0d7140ec-f111-4457-a292-051e279e0994.png | Bin 0 -> 957 bytes .../0a340f5b-fef2-4090-b8ef-048ec288af78.png | Bin 0 -> 957 bytes .../s_node_rigidSim_wall.yy | 74 ++++++++++ .../7fde6321-6cbb-4790-8a31-f3b9227760f2.png | Bin 0 -> 626 bytes .../a1f386bb-eba7-4504-ae95-41b616be7586.png | Bin 0 -> 651 bytes .../83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png | Bin 0 -> 626 bytes .../83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png | Bin 0 -> 651 bytes sprites/s_rigid_walls/s_rigid_walls.yy | 76 +++++++++++ 45 files changed, 596 insertions(+), 72 deletions(-) delete mode 100644 scripts/Script1053/Script1053.gml create mode 100644 scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.gml create mode 100644 scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy create mode 100644 scripts/node_rigid_wall/node_rigid_wall.gml create mode 100644 scripts/node_rigid_wall/node_rigid_wall.yy create mode 100644 sprites/s_node_mk_delay_machine/69ad2eb8-5b0a-4607-af51-7906601b18bf.png create mode 100644 sprites/s_node_mk_delay_machine/layers/69ad2eb8-5b0a-4607-af51-7906601b18bf/fbc6fffd-44cb-40d8-96ef-9432fae45ea6.png create mode 100644 sprites/s_node_mk_delay_machine/s_node_mk_delay_machine.yy create mode 100644 sprites/s_node_rigidSim_wall/0d7140ec-f111-4457-a292-051e279e0994.png create mode 100644 sprites/s_node_rigidSim_wall/layers/0d7140ec-f111-4457-a292-051e279e0994/0a340f5b-fef2-4090-b8ef-048ec288af78.png create mode 100644 sprites/s_node_rigidSim_wall/s_node_rigidSim_wall.yy create mode 100644 sprites/s_rigid_walls/7fde6321-6cbb-4790-8a31-f3b9227760f2.png create mode 100644 sprites/s_rigid_walls/a1f386bb-eba7-4504-ae95-41b616be7586.png create mode 100644 sprites/s_rigid_walls/layers/7fde6321-6cbb-4790-8a31-f3b9227760f2/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png create mode 100644 sprites/s_rigid_walls/layers/a1f386bb-eba7-4504-ae95-41b616be7586/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png create mode 100644 sprites/s_rigid_walls/s_rigid_walls.yy diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 5cd59cc86..e6e2a1c2f 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -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",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 0dc12950f..5e4052b6d 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -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",},}, diff --git a/fonts/_f_sdf/_f_sdf.old.png b/fonts/_f_sdf/_f_sdf.old.png index dc5a9bbb1393e4ff0b87a9dd673d97485c473d0f..db462bc02378fad3aef65967a20188da929c7e91 100644 GIT binary patch delta 96 zcmdnl%(}CgwP6dRiKB>dh=GZfp}Cc*rM7{Am4Sf)&!%tFJscTjF=QMAxxA)VIx;FK Vpz9HH(Vofx1fH&bF6*2UngGr97zqFX delta 96 zcmdnl%(}CgwP6dRiKB>7h=G}viMf@bxwe6Um4QLDl>f=;9*&H%7&2P!-%F=gIx;FK WpzEm(y0(e|2s~Z=T-G@yGywqa^%>Xz diff --git a/fonts/_f_sdf/_f_sdf.png b/fonts/_f_sdf/_f_sdf.png index 0379c35bf3acb2b19407e32f49364c8a11731b80..7c312e5cef86a89e20a40fed8f8f05d2f83ebf4c 100644 GIT binary patch delta 96 zcmdnl%(}CgwP6dRiKB>dh=G}vp@EgDp|*j6m4QKHa?s-G9*&H%7&0I1Udd0dbYxUe WK-aTe`}6?@An7h=HY*fw7f=skVWEm4U&$+=$K7JscTjF=XBwJm8;R>By*{ WfUakU>cI;PK;Y@>=d#Wzp$PyP;u@I% diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.old.png b/fonts/_f_sdf_medium/_f_sdf_medium.old.png index b3de9bff23e0b1f44539af63617e758cceae78e8..c05e658f870f941e75fcc3029d80fc8435db56cb 100644 GIT binary patch delta 119 zcmZp=!rXL)c|+|>5#ta86Dvb=D^p8t0|P4q0|TB--zHCdDI0<=;TXu}#lXOzQQ{g= ul9E`GYE_b%n_66wm|MVLWME{XYhbKvgsw--MSChx4}+(xpUXO@geCxO^dV0G delta 119 zcmZp=!rXL)c|+|>5u*?TGb!LlanXDlnp_b&~pD?%D}*&QQ{g= ul9E`GYE_b%n_66wm|MVLWME{XYhbKvgs!JH=-Miv9tKZWKbLh*2~7Z>B_kdH diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.png b/fonts/_f_sdf_medium/_f_sdf_medium.png index 8ff77615e4052df7899c6fc1fbed415f36f73483..6810a29a6249d05cadf8ea443512dc9399fd5721 100644 GIT binary patch delta 119 zcmZp=!rXL)c|+|>5#ta8Gb=*_D^o*l0|P4qgT~~b#giw#lnp_b_+a-+o`Hcuqr^3$ vBqgyV)v6>jH?_DVF}Hxh$iT=%*T7iU2wl%|?b8Q5 delta 119 zcmZp=!rXL)c|+|>5u*?TODh9oD+5z)0|P4qgL%0Tn= 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); + } +} \ No newline at end of file diff --git a/scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy b/scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy new file mode 100644 index 000000000..d15572526 --- /dev/null +++ b/scripts/nodd_mk_delay_machine/nodd_mk_delay_machine.yy @@ -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", + }, +} \ No newline at end of file diff --git a/scripts/node_cellular/node_cellular.gml b/scripts/node_cellular/node_cellular.gml index a448e6bca..ad9c8cbe2 100644 --- a/scripts/node_cellular/node_cellular.gml +++ b/scripts/node_cellular/node_cellular.gml @@ -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); diff --git a/scripts/node_delay/node_delay.gml b/scripts/node_delay/node_delay.gml index bb14669a5..0dd30678f 100644 --- a/scripts/node_delay/node_delay.gml +++ b/scripts/node_delay/node_delay.gml @@ -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); diff --git a/scripts/node_line/node_line.gml b/scripts/node_line/node_line.gml index 89da5ebec..052f268fe 100644 --- a/scripts/node_line/node_line.gml +++ b/scripts/node_line/node_line.gml @@ -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(); diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index 4db722cba..c24017d00 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -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 diff --git a/scripts/node_rigid_group_inline/node_rigid_group_inline.gml b/scripts/node_rigid_group_inline/node_rigid_group_inline.gml index 6e75f3148..cd9ffcc0d 100644 --- a/scripts/node_rigid_group_inline/node_rigid_group_inline.gml +++ b/scripts/node_rigid_group_inline/node_rigid_group_inline.gml @@ -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]); + } } \ No newline at end of file diff --git a/scripts/node_rigid_object/node_rigid_object.gml b/scripts/node_rigid_object/node_rigid_object.gml index fbed233c0..0cbb4093c 100644 --- a/scripts/node_rigid_object/node_rigid_object.gml +++ b/scripts/node_rigid_object/node_rigid_object.gml @@ -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 diff --git a/scripts/node_rigid_render/node_rigid_render.gml b/scripts/node_rigid_render/node_rigid_render.gml index 5440c3f38..5d69b9e15 100644 --- a/scripts/node_rigid_render/node_rigid_render.gml +++ b/scripts/node_rigid_render/node_rigid_render.gml @@ -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(); diff --git a/scripts/node_rigid_render_output/node_rigid_render_output.gml b/scripts/node_rigid_render_output/node_rigid_render_output.gml index 973dcd399..c12e7dd0b 100644 --- a/scripts/node_rigid_render_output/node_rigid_render_output.gml +++ b/scripts/node_rigid_render_output/node_rigid_render_output.gml @@ -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; diff --git a/scripts/node_rigid_wall/node_rigid_wall.gml b/scripts/node_rigid_wall/node_rigid_wall.gml new file mode 100644 index 000000000..b65fd0a90 --- /dev/null +++ b/scripts/node_rigid_wall/node_rigid_wall.gml @@ -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); + } +} \ No newline at end of file diff --git a/scripts/node_rigid_wall/node_rigid_wall.yy b/scripts/node_rigid_wall/node_rigid_wall.yy new file mode 100644 index 000000000..37c2cc3a2 --- /dev/null +++ b/scripts/node_rigid_wall/node_rigid_wall.yy @@ -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", + }, +} \ No newline at end of file diff --git a/scripts/node_time_remap/node_time_remap.gml b/scripts/node_time_remap/node_time_remap.gml index e31461a93..33d69cd37 100644 --- a/scripts/node_time_remap/node_time_remap.gml +++ b/scripts/node_time_remap/node_time_remap.gml @@ -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); diff --git a/scripts/node_transform/node_transform.gml b/scripts/node_transform/node_transform.gml index b63d60f24..81b671381 100644 --- a/scripts/node_transform/node_transform.gml +++ b/scripts/node_transform/node_transform.gml @@ -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] ], ]; diff --git a/scripts/panel_data/panel_data.gml b/scripts/panel_data/panel_data.gml index aa0645d7f..b53ca5ac4 100644 --- a/scripts/panel_data/panel_data.gml +++ b/scripts/panel_data/panel_data.gml @@ -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 diff --git a/scripts/panel_function/panel_function.gml b/scripts/panel_function/panel_function.gml index 9460d58c4..03133165c 100644 --- a/scripts/panel_function/panel_function.gml +++ b/scripts/panel_function/panel_function.gml @@ -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 diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 248f41112..d784bd4a3 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -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); diff --git a/scripts/panel_preview/panel_preview.gml b/scripts/panel_preview/panel_preview.gml index 5a880d5e4..26d911b6d 100644 --- a/scripts/panel_preview/panel_preview.gml +++ b/scripts/panel_preview/panel_preview.gml @@ -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); diff --git a/shaders/sh_cell_noise/sh_cell_noise.fsh b/shaders/sh_cell_noise/sh_cell_noise.fsh index 9bff0fbc6..b0b2e4d2a 100644 --- a/shaders/sh_cell_noise/sh_cell_noise.fsh +++ b/shaders/sh_cell_noise/sh_cell_noise.fsh @@ -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; diff --git a/shaders/sh_cell_noise_crystal/sh_cell_noise_crystal.fsh b/shaders/sh_cell_noise_crystal/sh_cell_noise_crystal.fsh index 68369a7c6..a547cf978 100644 --- a/shaders/sh_cell_noise_crystal/sh_cell_noise_crystal.fsh +++ b/shaders/sh_cell_noise_crystal/sh_cell_noise_crystal.fsh @@ -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.); diff --git a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh index c9cdda32f..c13324a7d 100644 --- a/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh +++ b/shaders/sh_cell_noise_edge/sh_cell_noise_edge.fsh @@ -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; diff --git a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh index e1e35092e..8493f3dc6 100644 --- a/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh +++ b/shaders/sh_cell_noise_random/sh_cell_noise_random.fsh @@ -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; diff --git a/sprites/s_node_mk_delay_machine/69ad2eb8-5b0a-4607-af51-7906601b18bf.png b/sprites/s_node_mk_delay_machine/69ad2eb8-5b0a-4607-af51-7906601b18bf.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e73208b02891c480abbec32edeca3645fd3168 GIT binary patch literal 2326 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","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"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, +} \ No newline at end of file diff --git a/sprites/s_node_rigidSim_wall/0d7140ec-f111-4457-a292-051e279e0994.png b/sprites/s_node_rigidSim_wall/0d7140ec-f111-4457-a292-051e279e0994.png new file mode 100644 index 0000000000000000000000000000000000000000..ffdcf1424af357f14fbce1b0cca27ba7870a3a60 GIT binary patch literal 957 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=3dtTpz6=aiY77hwEes65fI|H*Yfq`j*r;B4q#jUrqHWpnr zkZIrl&1zb<+Tm+C8@BRaP~4lG@a8~YWphqlTh0fT8RiK&=HD52a4Sc<=^cM?uQZ{7 zyZPyn6`NG8%S!${y)UBOwf22?s`s`&v)R0g&u^47*QAR)*v+`lnCrt`hWnDNKk^#h zv*|;YBtYj1FvbR-ZS1aO|o3q+JIppME~`)qN66Nb$3%z##Dr zX$PzLe6FO;5?I?LxFKOK(|avf$qkckvF3cZ-60;p{GVaX5$=qJ`Km6PSR)=xPi>4~ z)cbIWHR567{=x$-NjogxZd~Zybvw9@<3}yakpt{eJv(lhMVyonk=s?;=>6cb!-o}r z)84q{G#_-{Zk%8zutQIAnZ@Z{&p7`yeO0yIc)CU7y;4FI1LKD0k_ip{n&<8qU3U;W z5_^DQe{TgN?}wcr;{9norLYE8J6-c5Tm_BO^$u{!PhwE6(O}AY=qzx7LqE1bRF1`7 z?E1s2HVVn+oxA-ynk2bigWP|CML*7g`Ootf4Po5_O!CvElUR2g@D@*K1sQTb)ZyLi zW%@tXG3}FC@$lU7K=D1-KE$#vIq>(u2l>Jp{eYdfwzsictkRnvuDy1d9(&!{&D+yu z;=lU-n{2=RyUjhTu=xRh6o0Y4*Hf%|ys3F@!!lQv|B?Fw_XwYe)e7J3Q1D?_1N;58 z_9ixetY!OF*1s)fieXqD^;7x7)qww^A7ZqBuYL9J(y4d`ecsga7R4p39p=*eimo+SxxRf1GnSMV&o~yQVbBWcz{e{ocAC zR-f88o%7lWeJ;GB$^=Z!swJ)wB`Jv|saDBFsX&Us z$iT=%*T7iU$T-Bn)XK!f%Gglbz`)ADpsC9G5{ic0{FKbJO57Sgt2gHXHE6(XD9OxC bEiOsSEx@g3iP55sKs^keu6{1-oD!M|H*Yfq`j*r;B4q#jUrqHWpnr zkZIrl&1zb<+Tm+C8@BRaP~4lG@a8~YWphqlTh0fT8RiK&=HD52a4Sc<=^cM?uQZ{7 zyZPyn6`NG8%S!${y)UBOwf22?s`s`&v)R0g&u^47*QAR)*v+`lnCrt`hWnDNKk^#h zv*|;YBtYj1FvbR-ZS1aO|o3q+JIppME~`)qN66Nb$3%z##Dr zX$PzLe6FO;5?I?LxFKOK(|avf$qkckvF3cZ-60;p{GVaX5$=qJ`Km6PSR)=xPi>4~ z)cbIWHR567{=x$-NjogxZd~Zybvw9@<3}yakpt{eJv(lhMVyonk=s?;=>6cb!-o}r z)84q{G#_-{Zk%8zutQIAnZ@Z{&p7`yeO0yIc)CU7y;4FI1LKD0k_ip{n&<8qU3U;W z5_^DQe{TgN?}wcr;{9norLYE8J6-c5Tm_BO^$u{!PhwE6(O}AY=qzx7LqE1bRF1`7 z?E1s2HVVn+oxA-ynk2bigWP|CML*7g`Ootf4Po5_O!CvElUR2g@D@*K1sQTb)ZyLi zW%@tXG3}FC@$lU7K=D1-KE$#vIq>(u2l>Jp{eYdfwzsictkRnvuDy1d9(&!{&D+yu z;=lU-n{2=RyUjhTu=xRh6o0Y4*Hf%|ys3F@!!lQv|B?Fw_XwYe)e7J3Q1D?_1N;58 z_9ixetY!OF*1s)fieXqD^;7x7)qww^A7ZqBuYL9J(y4d`ecsga7R4p39p=*eimo+SxxRf1GnSMV&o~yQVbBWcz{e{ocAC zR-f88o%7lWeJ;GB$^=Z!swJ)wB`Jv|saDBFsX&Us z$iT=%*T7iU$T-Bn)XK!f%Gglbz`)ADpsC9G5{ic0{FKbJO57Sgt2gHXHE6(XD9OxC bEiOsSEx@g3iP55sKs^keu6{1-oD!M","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"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, +} \ No newline at end of file diff --git a/sprites/s_rigid_walls/7fde6321-6cbb-4790-8a31-f3b9227760f2.png b/sprites/s_rigid_walls/7fde6321-6cbb-4790-8a31-f3b9227760f2.png new file mode 100644 index 0000000000000000000000000000000000000000..04202d117c5297c3558ed44b969d7c080e9ae6ff GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=3dtTpz6=aiY77hwEes65fI|H*Yfq^mA)5S5Q;?~>Q8+{K4 zh%lV*n0KLqZ?mJ@3AO`lCF?X}C-OFMp5VCIuz_)_wo#*|K~PK6&v>(48kOO$Rra6u zPL|#2d9hS>`I(uz3BrsyjI%isxNo>HL?2LNy1`^7ctC7JC&RV|UzQE5IZ6%GQd0bh z@mw*V`4-U)Y@xO4wA?gyy}ag6IFKVLlUd{5Tkx36AdT<@QM?`kGJReW!ou=jK2 z&gboEZ~n;c@Sn4OS%jRCTx0UnC-JSyKwp36e4Ez!nRnCgP+%0OmbgZgq$HN4S|t~y z0x1R~10xe%17lqy;}8QQD`OKYLnCbi11kfArTPnaO-K_zNQPPhr!d;&t;ucLK6Tn?&QD# literal 0 HcmV?d00001 diff --git a/sprites/s_rigid_walls/a1f386bb-eba7-4504-ae95-41b616be7586.png b/sprites/s_rigid_walls/a1f386bb-eba7-4504-ae95-41b616be7586.png new file mode 100644 index 0000000000000000000000000000000000000000..8f793e81b3022fe54acd6603dcc5ee562fb06c1b GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=3dtTpz6=aiY77hwEes65fI|H*Yfq}8k)5S5Q;?~<)hJJ?~ z1YF|s%^zLq0401hjj%yEW5Q&*QfqhUn}H(@5j&TB|b}T zeyu$}ZD%m|ib94gMpHfq-37-OSFm2OVA$F)>nwZ0{K|iF8Hayse^|D!Q84$zZl?DS zOTRHhJ+QF)$F%FD<@1w;?0f!viY=a3&fqus{3N+^dY{i4c@_eCau2j)F( zU-fs23Y=cGZFc&T%M&90O^9bSm=ZmGcc$Z}KVD1`qO<=?mVoS5Wt_wPO~-TEd~L8J zMBc32$$9EqvGNkJfX571n6hLX4$74`Wgh}LZ-;P+`i?@GhA4+#W{n$<{R(_R4wfo! zddFhk#~i@DLX-2sf@%MnKZ-;PsRk#hKWO}w*0LymPLlU0?U}+YiBj4>mAD1w|9O0* z_#4BcFQLL=y2VZB@0`<*3(D8n&VQr5`)KExC@qFMHCKI}q9i4;B-JXpC>2OC7#SFu=o%R78X1Qe7+D#cSQ#2=8yHv_ z7%cs7`VvJ$ZhlH;S|x4`R~Ge#0ySvBZ79jiO)V}-%q_sJr+NFDE}$L;Pgg&ebxsLQ E08>8k!~g&Q literal 0 HcmV?d00001 diff --git a/sprites/s_rigid_walls/layers/7fde6321-6cbb-4790-8a31-f3b9227760f2/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png b/sprites/s_rigid_walls/layers/7fde6321-6cbb-4790-8a31-f3b9227760f2/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png new file mode 100644 index 0000000000000000000000000000000000000000..04202d117c5297c3558ed44b969d7c080e9ae6ff GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=3dtTpz6=aiY77hwEes65fI|H*Yfq^mA)5S5Q;?~>Q8+{K4 zh%lV*n0KLqZ?mJ@3AO`lCF?X}C-OFMp5VCIuz_)_wo#*|K~PK6&v>(48kOO$Rra6u zPL|#2d9hS>`I(uz3BrsyjI%isxNo>HL?2LNy1`^7ctC7JC&RV|UzQE5IZ6%GQd0bh z@mw*V`4-U)Y@xO4wA?gyy}ag6IFKVLlUd{5Tkx36AdT<@QM?`kGJReW!ou=jK2 z&gboEZ~n;c@Sn4OS%jRCTx0UnC-JSyKwp36e4Ez!nRnCgP+%0OmbgZgq$HN4S|t~y z0x1R~10xe%17lqy;}8QQD`OKYLnCbi11kfArTPnaO-K_zNQPPhr!d;&t;ucLK6Tn?&QD# literal 0 HcmV?d00001 diff --git a/sprites/s_rigid_walls/layers/a1f386bb-eba7-4504-ae95-41b616be7586/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png b/sprites/s_rigid_walls/layers/a1f386bb-eba7-4504-ae95-41b616be7586/83e92ba6-f0f5-4cca-9d29-fc9bd5dbc0ea.png new file mode 100644 index 0000000000000000000000000000000000000000..8f793e81b3022fe54acd6603dcc5ee562fb06c1b GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=3dtTpz6=aiY77hwEes65fI|H*Yfq}8k)5S5Q;?~<)hJJ?~ z1YF|s%^zLq0401hjj%yEW5Q&*QfqhUn}H(@5j&TB|b}T zeyu$}ZD%m|ib94gMpHfq-37-OSFm2OVA$F)>nwZ0{K|iF8Hayse^|D!Q84$zZl?DS zOTRHhJ+QF)$F%FD<@1w;?0f!viY=a3&fqus{3N+^dY{i4c@_eCau2j)F( zU-fs23Y=cGZFc&T%M&90O^9bSm=ZmGcc$Z}KVD1`qO<=?mVoS5Wt_wPO~-TEd~L8J zMBc32$$9EqvGNkJfX571n6hLX4$74`Wgh}LZ-;P+`i?@GhA4+#W{n$<{R(_R4wfo! zddFhk#~i@DLX-2sf@%MnKZ-;PsRk#hKWO}w*0LymPLlU0?U}+YiBj4>mAD1w|9O0* z_#4BcFQLL=y2VZB@0`<*3(D8n&VQr5`)KExC@qFMHCKI}q9i4;B-JXpC>2OC7#SFu=o%R78X1Qe7+D#cSQ#2=8yHv_ z7%cs7`VvJ$ZhlH;S|x4`R~Ge#0ySvBZ79jiO)V}-%q_sJr+NFDE}$L;Pgg&ebxsLQ E08>8k!~g&Q literal 0 HcmV?d00001 diff --git a/sprites/s_rigid_walls/s_rigid_walls.yy b/sprites/s_rigid_walls/s_rigid_walls.yy new file mode 100644 index 000000000..6f02e1330 --- /dev/null +++ b/sprites/s_rigid_walls/s_rigid_walls.yy @@ -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","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 2.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"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","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, +} \ No newline at end of file