Frame selections

This commit is contained in:
Tanasart 2023-11-16 08:49:52 +07:00
parent e8418a809c
commit 37d6676dbc
15 changed files with 253 additions and 19 deletions

View file

@ -240,6 +240,7 @@
{"name":"button","order":34,"path":"folders/widgets/button.yy",}, {"name":"button","order":34,"path":"folders/widgets/button.yy",},
{"name":"rotator","order":35,"path":"folders/widgets/rotator.yy",}, {"name":"rotator","order":35,"path":"folders/widgets/rotator.yy",},
{"name":"text","order":36,"path":"folders/widgets/text.yy",}, {"name":"text","order":36,"path":"folders/widgets/text.yy",},
{"name":"PC effects","order":24,"path":"folders/nodes/data/PC effects.yy",},
], ],
"ResourceOrderSettings": [ "ResourceOrderSettings": [
{"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",}, {"name":"s_node_corner","order":16,"path":"sprites/s_node_corner/s_node_corner.yy",},
@ -1116,6 +1117,7 @@
{"name":"sh_pb_shade_half","order":5,"path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",}, {"name":"sh_pb_shade_half","order":5,"path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",},
{"name":"node_polar","order":4,"path":"scripts/node_polar/node_polar.yy",}, {"name":"node_polar","order":4,"path":"scripts/node_polar/node_polar.yy",},
{"name":"s_node_twirl","order":41,"path":"sprites/s_node_twirl/s_node_twirl.yy",}, {"name":"s_node_twirl","order":41,"path":"sprites/s_node_twirl/s_node_twirl.yy",},
{"name":"s_node_perlin_extra","order":31,"path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",},
{"name":"sh_2d_light","order":28,"path":"shaders/sh_2d_light/sh_2d_light.yy",}, {"name":"sh_2d_light","order":28,"path":"shaders/sh_2d_light/sh_2d_light.yy",},
{"name":"node_image_animated","order":2,"path":"scripts/node_image_animated/node_image_animated.yy",}, {"name":"node_image_animated","order":2,"path":"scripts/node_image_animated/node_image_animated.yy",},
{"name":"s_node_transform_array","order":17,"path":"sprites/s_node_transform_array/s_node_transform_array.yy",}, {"name":"s_node_transform_array","order":17,"path":"sprites/s_node_transform_array/s_node_transform_array.yy",},

View file

@ -275,6 +275,7 @@
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"button","folderPath":"folders/widgets/button.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"button","folderPath":"folders/widgets/button.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"rotator","folderPath":"folders/widgets/rotator.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"rotator","folderPath":"folders/widgets/rotator.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"text","folderPath":"folders/widgets/text.yy",}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"text","folderPath":"folders/widgets/text.yy",},
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"PC effects","folderPath":"folders/nodes/data/PC effects.yy",},
], ],
"IncludedFiles": [ "IncludedFiles": [
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
@ -1799,6 +1800,7 @@
{"id":{"name":"sh_pb_shade_half","path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",},}, {"id":{"name":"sh_pb_shade_half","path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",},},
{"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},}, {"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},},
{"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},}, {"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},},
{"id":{"name":"s_node_perlin_extra","path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",},},
{"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},}, {"id":{"name":"sh_2d_light","path":"shaders/sh_2d_light/sh_2d_light.yy",},},
{"id":{"name":"instance_variable_set","path":"scripts/instance_variable_set/instance_variable_set.yy",},}, {"id":{"name":"instance_variable_set","path":"scripts/instance_variable_set/instance_variable_set.yy",},},
{"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},}, {"id":{"name":"node_image_animated","path":"scripts/node_image_animated/node_image_animated.yy",},},
@ -1878,6 +1880,7 @@
{"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},}, {"id":{"name":"_f_p0b","path":"fonts/_f_p0b/_f_p0b.yy",},},
{"id":{"name":"s_node_armature_pose","path":"sprites/s_node_armature_pose/s_node_armature_pose.yy",},}, {"id":{"name":"s_node_armature_pose","path":"sprites/s_node_armature_pose/s_node_armature_pose.yy",},},
{"id":{"name":"sh_fd_visualize_pressure_glsl","path":"shaders/sh_fd_visualize_pressure_glsl/sh_fd_visualize_pressure_glsl.yy",},}, {"id":{"name":"sh_fd_visualize_pressure_glsl","path":"shaders/sh_fd_visualize_pressure_glsl/sh_fd_visualize_pressure_glsl.yy",},},
{"id":{"name":"node_pc_balls","path":"scripts/node_pc_balls/node_pc_balls.yy",},},
{"id":{"name":"s_node_rigidSim_force","path":"sprites/s_node_rigidSim_force/s_node_rigidSim_force.yy",},}, {"id":{"name":"s_node_rigidSim_force","path":"sprites/s_node_rigidSim_force/s_node_rigidSim_force.yy",},},
{"id":{"name":"fd_rectangle_set_acceleration","path":"scripts/fd_rectangle_set_acceleration/fd_rectangle_set_acceleration.yy",},}, {"id":{"name":"fd_rectangle_set_acceleration","path":"scripts/fd_rectangle_set_acceleration/fd_rectangle_set_acceleration.yy",},},
{"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},}, {"id":{"name":"s_node_vec2","path":"sprites/s_node_vec2/s_node_vec2.yy",},},

View file

@ -265,13 +265,11 @@ event_inherited();
var name = ""; var name = "";
if(i == -1) { if(i == -1) {
//draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent);
name = "All"; name = "All";
} else { } else {
var cat = category[| i]; var cat = category[| i];
name = cat.name; name = cat.name;
//draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
if(array_length(cat.filter)) { if(array_length(cat.filter)) {
if(!array_exists(cat.filter, context)) { if(!array_exists(cat.filter, context)) {
if(ADD_NODE_PAGE == i) if(ADD_NODE_PAGE == i)
@ -282,9 +280,12 @@ event_inherited();
} }
} }
BLEND_OVERRIDE; var _hov = false;
BLEND_OVERRIDE
if(sHOVER && catagory_pane.hover && point_in_rectangle(_m[0], _m[1], 0, _y + hh, category_width - ui(32), _y + hh + hg - 1)) { if(sHOVER && catagory_pane.hover && point_in_rectangle(_m[0], _m[1], 0, _y + hh, category_width - ui(32), _y + hh + hg - 1)) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, category_width - ui(32), hg, CDEF.main_white, 1); draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, _y + hh, category_width - ui(32), hg, CDEF.main_white, 1);
_hov = true;
if(i != ADD_NODE_PAGE && mouse_click(mb_left, sFOCUS)) { if(i != ADD_NODE_PAGE && mouse_click(mb_left, sFOCUS)) {
setPage(i); setPage(i);
content_pane.scroll_y = 0; content_pane.scroll_y = 0;
@ -292,13 +293,29 @@ event_inherited();
content_pane.scroll_y_to = 0; content_pane.scroll_y_to = 0;
} }
} }
BLEND_NORMAL; BLEND_NORMAL
if(i == ADD_NODE_PAGE) draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent); if(i == ADD_NODE_PAGE) draw_set_text(f_p0b, fa_left, fa_center, COLORS._main_text_accent);
else draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_inner); else draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_inner);
var _is_extra = name == "Extra";
name = __txt(name); name = __txt(name);
draw_text(ui(8), _y + hh + hg / 2, name);
var _tx = ui(8);
var _ty = _y + hh + hg / 2;
draw_text(_tx, _ty, name);
if(_is_extra) {
var _cx = _tx + string_width(name) + ui(4);
var _cy = _ty - string_height(name) / 2 + ui(6);
gpu_set_colorwriteenable(1, 1, 1, 0);
draw_sprite_ext(s_patreon_supporter, 0, _cx, _cy, 1, 1, 0, _hov? COLORS._main_icon_dark : COLORS.panel_bg_clear, 1);
gpu_set_colorwriteenable(1, 1, 1, 1);
draw_sprite_ext(s_patreon_supporter, 1, _cx, _cy, 1, 1, 0, i == ADD_NODE_PAGE? COLORS._main_text_accent : COLORS._main_text_inner, 1);
}
hh += hg; hh += hg;
} }

View file

@ -1166,7 +1166,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x
static groupCheck = function(_x, _y, _s, _mx, _my) {} static groupCheck = function(_x, _y, _s, _mx, _my) {}
static drawNodeBG = function(_x, _y, _mx, _my, _s, display_parameter = noone) {} static drawNodeBG = function(_x, _y, _mx, _my, _s, display_parameter = noone) { return false; }
static drawNode = function(_x, _y, _mx, _my, _s, display_parameter = noone) { #region static drawNode = function(_x, _y, _mx, _my, _s, display_parameter = noone) { #region
if(draw_graph_culled) return; if(draw_graph_culled) return;

View file

@ -118,7 +118,8 @@ function Node_Frame(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
size_dragging_my = mouse_my; size_dragging_my = mouse_my;
} }
} }
return noone;
return point_in_rectangle(_mx, _my, xx, yy, x1, y1);
} #endregion } #endregion
static pointIn = function(_x, _y, _mx, _my, _s) { #region static pointIn = function(_x, _y, _mx, _my, _s) { #region

View file

@ -0,0 +1,97 @@
function Node_PC_Balls(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Pixel Cloud";
shader = sh_pixel_cloud;
uniform_sed = shader_get_uniform(shader, "seed");
uniform_str = shader_get_uniform(shader, "strength");
uniform_dis = shader_get_uniform(shader, "dist");
uniform_map_use = shader_get_uniform(shader, "useMap");
uniform_map = shader_get_sampler_index(shader, "strengthMap");
uniform_grad_blend = shader_get_uniform(shader, "gradient_blend");
uniform_grad = shader_get_uniform(shader, "gradient_color");
uniform_grad_time = shader_get_uniform(shader, "gradient_time");
uniform_grad_key = shader_get_uniform(shader, "gradient_keys");
uniform_alpha = shader_get_uniform(shader, "alpha_curve");
uniform_alamo = shader_get_uniform(shader, "curve_amount");
uniform_rnd = shader_get_uniform(shader, "randomAmount");
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(100000));
inputs[| 2] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01] });
inputs[| 3] = nodeValue("Strength map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 4] = nodeValue("Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) );
inputs[| 5] = nodeValue("Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 6] = nodeValue("Alpha over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
inputs[| 7] = nodeValue("Random blending", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 8] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
active_index = 8;
input_display_list = [ 8,
["Input", true], 0, 1,
["Movement", false], 5, 2, 3,
["Color", true], 4, 6, 7
]
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
attribute_surface_depth();
static processData = function(_outSurf, _data, _output_index, _array_index) {
var _sed = _data[1];
var _str = _data[2];
var _map = _data[3];
var _gra = _data[4];
var _dis = _data[5];
var _alp = _data[6];
var _rnd = _data[7];
var _grad = _gra.toArray();
var _grad_color = _grad[0];
var _grad_time = _grad[1];
surface_set_target(_outSurf);
DRAW_CLEAR
BLEND_OVERRIDE;
shader_set(shader);
shader_set_uniform_f(uniform_sed, _sed);
shader_set_uniform_f(uniform_str, _str);
shader_set_uniform_f(uniform_dis, _dis);
if(is_surface(_map)) {
shader_set_uniform_i(uniform_map_use, 1);
texture_set_stage(uniform_map, surface_get_texture(_map));
} else {
shader_set_uniform_i(uniform_map_use, 0);
}
shader_set_uniform_i(uniform_grad_blend, _gra.type);
shader_set_uniform_f_array_safe(uniform_grad, _grad_color);
shader_set_uniform_f_array_safe(uniform_grad_time, _grad_time);
shader_set_uniform_i(uniform_grad_key, array_length(_gra.keys));
shader_set_uniform_f_array_safe(uniform_alpha, _alp);
shader_set_uniform_i(uniform_alamo, array_length(_alp));
shader_set_uniform_f(uniform_rnd, _rnd);
draw_surface_safe(_data[0], 0, 0);
shader_reset();
BLEND_NORMAL;
surface_reset_target();
return _outSurf;
}
}

View file

@ -0,0 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_pc_balls",
"isCompatibility": false,
"isDnD": false,
"parent": {
"name": "PC effects",
"path": "folders/nodes/data/PC effects.yy",
},
}

View file

@ -40,9 +40,13 @@ function Node_Perlin_Extra(_x, _y, _group = noone) : Node_Shader_Generator(_x, _
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Absolute worley", "Fluid", "Noisy perlin", "Camo" ]); .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Absolute worley", "Fluid", "Noisy perlin", "Camo" ]);
addShaderProp(SHADER_UNIFORM.integer, "type"); addShaderProp(SHADER_UNIFORM.integer, "type");
inputs[| 11] = nodeValue("Parameter A", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setDisplay(VALUE_DISPLAY.slider);
addShaderProp(SHADER_UNIFORM.float, "param");
input_display_list = [ input_display_list = [
["Output", true], 0, 5, ["Output", true], 0, 5,
["Noise", false], 10, 1, 2, 3, 4, ["Noise", false], 10, 1, 2, 3, 4, 11,
["Render", false], 6, 7, 8, 9, ["Render", false], 6, 7, 8, 9,
]; ];

View file

@ -46,6 +46,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
static patreonExtra = function() { static patreonExtra = function() {
INLINE INLINE
is_patreon_extra = true; is_patreon_extra = true;
ds_list_add(global.SUPPORTER_NODES, self);
return self; return self;
} }
@ -206,6 +208,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
global.RECENT_NODES = file_exists(recPath)? json_load_struct(recPath) : []; global.RECENT_NODES = file_exists(recPath)? json_load_struct(recPath) : [];
if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = []; if(!is_array(global.RECENT_NODES)) global.RECENT_NODES = [];
global.SUPPORTER_NODES = ds_list_create();
var group = ds_list_create(); #region var group = ds_list_create(); #region
addNodeCatagory("Group", group, ["Node_Group"]); addNodeCatagory("Group", group, ["Node_Group"]);
ds_list_add(group, "Groups"); ds_list_add(group, "Groups");
@ -549,7 +553,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
addNodeObject(generator, "Simplex Noise", s_node_noise_simplex, "Node_Noise_Simplex", [1, Node_Noise_Simplex], ["perlin"], "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.").setVersion(1080); addNodeObject(generator, "Simplex Noise", s_node_noise_simplex, "Node_Noise_Simplex", [1, Node_Noise_Simplex], ["perlin"], "Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.").setVersion(1080);
addNodeObject(generator, "Cellular Noise", s_node_noise_cell, "Node_Cellular", [1, Node_Cellular], ["voronoi", "worley"], "Generate voronoi pattern."); addNodeObject(generator, "Cellular Noise", s_node_noise_cell, "Node_Cellular", [1, Node_Cellular], ["voronoi", "worley"], "Generate voronoi pattern.");
addNodeObject(generator, "Anisotropic Noise", s_node_noise_aniso, "Node_Noise_Aniso", [1, Node_Noise_Aniso],, "Generate anisotropic noise."); addNodeObject(generator, "Anisotropic Noise", s_node_noise_aniso, "Node_Noise_Aniso", [1, Node_Noise_Aniso],, "Generate anisotropic noise.");
/**/ addNodeObject(generator, "Extra Perlins", s_node_noise_aniso, "Node_Perlin_Extra", [1, Node_Perlin_Extra], ["noise"], "Random perlin noise made with different algorithms.").patreonExtra(); addNodeObject(generator, "Extra Perlins", s_node_perlin_extra, "Node_Perlin_Extra", [1, Node_Perlin_Extra], ["noise"], "Random perlin noise made with different algorithms.").patreonExtra();
ds_list_add(generator, "Patterns"); ds_list_add(generator, "Patterns");
addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern."); addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe],, "Generate stripe pattern.");
@ -814,6 +818,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
addNodeCatagory("Custom", customs); addNodeCatagory("Custom", customs);
__initNodeCustom(customs); __initNodeCustom(customs);
if(IS_PATREON) addNodeCatagory("Extra", global.SUPPORTER_NODES);
//var vct = ds_list_create(); //var vct = ds_list_create();
//addNodeCatagory("VCT", vct); //addNodeCatagory("VCT", vct);
// addNodeObject(vct, "Biterator", s_node_print, "Node_Biterator", [1, Node_Biterator]); // addNodeObject(vct, "Biterator", s_node_print, "Node_Biterator", [1, Node_Biterator]);

View file

@ -314,10 +314,21 @@ function Panel_Collection() : PanelContent() constructor {
folderPane = new scrollPane(group_w - ui(8), content_h, function(_y, _m) { #region folderPane = new scrollPane(group_w - ui(8), content_h, function(_y, _m) { #region
draw_clear_alpha(COLORS.panel_bg_clear, 1); draw_clear_alpha(COLORS.panel_bg_clear, 1);
//draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(8), 0, folderPane.surface_w - ui(8), folderPane.surface_h);
var hh = ui(8); var hh = ui(8);
_y += ui(8); _y += ui(8);
if(pHOVER && folderPane.hover && point_in_rectangle(_m[0], _m[1], ui(32), _y - ui(2), group_w - ui(32), _y + ui(24))) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, ui(32), _y - ui(2), group_w - ui(64), ui(24), CDEF.main_white, 1);
if(mouse_press(mb_left, pFOCUS))
setContext(root);
}
draw_set_alpha(0.25 + (context == root) * 0.5);
draw_set_text(f_p2, fa_center, fa_top, context == root? COLORS._main_text_accent : COLORS._main_text_inner);
draw_text(group_w / 2, _y, __txt("uncategorized"));
draw_set_alpha(1);
_y += ui(24);
for(var i = 0; i < ds_list_size(root.subDir); i++) { for(var i = 0; i < ds_list_size(root.subDir); i++) {
var hg = root.subDir[| i].draw(self, ui(8 + in_dialog * 8), _y, _m, folderPane.w - ui(20), pHOVER && folderPane.hover, pFOCUS, root); var hg = root.subDir[| i].draw(self, ui(8 + in_dialog * 8), _y, _m, folderPane.w - ui(20), pHOVER && folderPane.hover, pFOCUS, root);
hh += hg; hh += hg;

View file

@ -73,6 +73,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
selection_block = 0; selection_block = 0;
nodes_selecting = []; nodes_selecting = [];
nodes_select_drag = 0; nodes_select_drag = 0;
nodes_select_frame = 0;
nodes_select_mx = 0; nodes_select_mx = 0;
nodes_select_my = 0; nodes_select_my = 0;
@ -724,6 +725,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
var log = false; var log = false;
var t = current_time; var t = current_time;
var frame_hovering = noone;
for(var i = 0; i < ds_list_size(nodes_list); i++) { for(var i = 0; i < ds_list_size(nodes_list); i++) {
nodes_list[| i].cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64); nodes_list[| i].cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64);
nodes_list[| i].preDraw(gr_x, gr_y, graph_s, gr_x, gr_y); nodes_list[| i].preDraw(gr_x, gr_y, graph_s, gr_x, gr_y);
@ -731,8 +734,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
printIf(log, "Predraw time: " + string(current_time - t)); t = current_time; printIf(log, "Predraw time: " + string(current_time - t)); t = current_time;
#region draw frame #region draw frame
for(var i = 0; i < ds_list_size(nodes_list); i++) for(var i = 0; i < ds_list_size(nodes_list); i++) {
nodes_list[| i].drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter); if(nodes_list[| i].drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter))
frame_hovering = nodes_list[| i];
}
#endregion #endregion
printIf(log, "Frame draw time: " + string(current_time - t)); t = current_time; printIf(log, "Frame draw time: " + string(current_time - t)); t = current_time;
@ -1064,7 +1069,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
for(var i = 0; i < ds_list_size(nodes_list); i++) { for(var i = 0; i < ds_list_size(nodes_list); i++) {
var _node = nodes_list[| i]; var _node = nodes_list[| i];
if(is_instanceof(_node, Node_Frame)) continue; if(is_instanceof(_node, Node_Frame) && !nodes_select_frame) continue;
var _x = (_node.x + graph_x) * graph_s; var _x = (_node.x + graph_x) * graph_s;
var _y = (_node.y + graph_y) * graph_s; var _y = (_node.y + graph_y) * graph_s;
var _w = _node.w * graph_s; var _w = _node.w * graph_s;
@ -1096,7 +1101,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
if(mouse_release(mb_left)) if(mouse_release(mb_left))
nodes_junction_d = noone; nodes_junction_d = noone;
} }
if(mouse_on_graph && mouse_press(mb_left, pFOCUS) && !graph_dragging_key && !graph_zooming_key) { if(mouse_on_graph && mouse_press(mb_left, pFOCUS) && !graph_dragging_key && !graph_zooming_key) {
if(junction_hovering && junction_hovering.draw_line_shift_hover) { if(junction_hovering && junction_hovering.draw_line_shift_hover) {
nodes_select_mx = mx; nodes_select_mx = mx;
@ -1105,7 +1110,9 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
nodes_junction_dx = junction_hovering.draw_line_shift_x; nodes_junction_dx = junction_hovering.draw_line_shift_x;
nodes_junction_dy = junction_hovering.draw_line_shift_y; nodes_junction_dy = junction_hovering.draw_line_shift_y;
} else if(array_empty(nodes_selecting) && !value_focus && !drag_locking) { } else if(array_empty(nodes_selecting) && !value_focus && !drag_locking) {
nodes_select_drag = 1; nodes_select_drag = 1;
nodes_select_frame = frame_hovering == noone;
nodes_select_mx = mx; nodes_select_mx = mx;
nodes_select_my = my; nodes_select_my = my;
} }

View file

@ -11,6 +11,7 @@ uniform vec2 u_resolution;
uniform vec2 scale; uniform vec2 scale;
uniform int iteration; uniform int iteration;
uniform float seed; uniform float seed;
uniform float param;
uniform int tile; uniform int tile;
uniform int colored; uniform int colored;
@ -88,7 +89,7 @@ float perlin(in vec2 st) { #region
if(type == 3) { if(type == 3) {
m += _n * amp; m += _n * amp;
if(mod(i, 3.) == 2.) { if(mod(i, 3.) == 2.) {
n += smoothstep(0.4, 0.6, m) * amp; n += smoothstep(0.5 - param, 0.5 + param, m) * amp;
m = 0.; m = 0.;
sc /= 1.5; sc /= 1.5;
@ -111,12 +112,12 @@ float perlin(in vec2 st) { #region
} else if(type == 1) { } else if(type == 1) {
sc *= 2.; sc *= 2.;
amp *= .5; amp *= .5;
pos *= 1. + _n; pos *= 1. + _n + param;
} else if(type == 2) { } else if(type == 2) {
sc *= 2.; sc *= 2.;
amp *= .5; amp *= .5;
pos += random2(vec2(n), seed) / sc; pos += random2(vec2(n), seed) / sc;
pos *= 2.; pos *= (2. + param);
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,74 @@
{
"resourceType": "GMSprite",
"resourceVersion": "1.0",
"name": "s_node_perlin_extra",
"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":"5ae9f0ed-a137-4815-82ce-948069e175e0",},
],
"gridX": 0,
"gridY": 0,
"height": 64,
"HTile": false,
"layers": [
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"13a61b1b-f8ef-4199-a2cb-e3a78caa9d2a","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
],
"nineSlice": null,
"origin": 4,
"parent": {
"name": "generator",
"path": "folders/nodes/icons/generator.yy",
},
"preMultiplyAlpha": false,
"sequence": {
"resourceType": "GMSequence",
"resourceVersion": "1.4",
"name": "s_node_perlin_extra",
"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":"5ae9f0ed-a137-4815-82ce-948069e175e0","path":"sprites/s_node_perlin_extra/s_node_perlin_extra.yy",},},},"Disabled":false,"id":"f209861b-34aa-4a7b-8f3f-e4d4990f027e","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,
}