[Group Input] Now copy some value type on first connection.

This commit is contained in:
Tanasart 2025-02-12 16:35:48 +07:00
parent 744a524069
commit 8d388a164f
85 changed files with 743 additions and 433 deletions

Binary file not shown.

Binary file not shown.

View file

@ -160,14 +160,16 @@ event_inherited();
array_push(node_list, "Favourites");
var _favs = struct_get_names(global.FAV_NODES);
var _fvnd = [];
for( var i = 0, n = array_length(_favs); i < n; i++ ) {
var _nodeIndex = _favs[i];
if(!struct_has(ALL_NODES, _nodeIndex)) continue;
var _node = ALL_NODES[$ _nodeIndex];
if(_node.show_in_recent)
array_push(node_list, _node);
if(_node.show_in_recent) array_push(_fvnd, _node);
}
array_sort(_fvnd, function(v1, v2) /*=>*/ {return string_compare(v1.name, v2.name)});
for( var i = 0, n = array_length(_fvnd); i < n; i++ ) array_push(node_list, _fvnd[i]);
array_push(node_list, "Recents");
if(is_array(global.RECENT_NODES))
@ -304,7 +306,7 @@ event_inherited();
if(junction_called == noone) return;
//connect to called junction
// connect to called junction
var _call_input = junction_called.connect_type == CONNECT_TYPE.input;
var _from = junction_called.value_from;
var _junc_list = _call_input? _outputs : _inputs;

View file

@ -37,7 +37,7 @@ event_inherited();
#region content
sc_group = new scrollPane(dialog_w - ui(padding + padding), dialog_h - ui(title_height + padding), function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
draw_clear_alpha(COLORS.panel_bg_clear_inner, 1);
if(node == noone) return 0;
var _h = 0;

View file

@ -22,7 +22,7 @@ event_inherited();
#region content
sc_group = new scrollPane(dialog_w - ui(padding + padding), dialog_h - ui(title_height + padding), function(_y, _m) {
draw_clear_alpha(COLORS.panel_bg_clear, 0);
draw_clear_alpha(COLORS.panel_bg_clear_inner, 1);
if(node == noone) return 0;
var _h = 0;

View file

@ -138,8 +138,7 @@ function __part(_node) : __particleObject() constructor {
static reset = function() {
INLINE
surf = noone;
surf = noone;
prevx = undefined;
prevy = undefined;
}
@ -152,8 +151,8 @@ function __part(_node) : __particleObject() constructor {
x = _x;
y = _y;
drawx = undefined;
drawy = undefined;
drawx = undefined;
drawy = undefined;
anim_len = is_array(surf)? array_length(surf) : 1;
@ -247,13 +246,13 @@ function __part(_node) : __particleObject() constructor {
node.onPartDestroy(self);
}
static step = function(frame = 0) {
static step = function(_frame = 0) {
INLINE
trailLife++;
if(!active) return;
x += speedx;
self.frame = frame;
frame = _frame;
random_set_seed(seed + life);
@ -361,10 +360,12 @@ function __part(_node) : __particleObject() constructor {
case ANIM_END_ACTION.loop:
ss = surf[safe_mod(ind, anim_len)];
break;
case ANIM_END_ACTION.pingpong:
var ping = safe_mod(ind, (anim_len - 1) * 2 + 1);
ss = surf[ping >= anim_len? (anim_len - 1) * 2 - ping : ping];
break;
case ANIM_END_ACTION.destroy:
if(ind >= anim_len) {
kill();
@ -435,9 +436,8 @@ function __part(_node) : __particleObject() constructor {
var _s = shader_current();
shader_reset();
draw_set_color(cc);
draw_set_alpha(alp_draw);
dynaSurf_circle_fill(_xx, _yy, exact? round(ss) : ss);
draw_set_color_alpha(cc, alp_draw);
dynaSurf_circle_fill(round(_xx), round(_yy), exact? round(ss) : ss);
draw_set_alpha(1);
shader_set(_s);

View file

@ -6,21 +6,65 @@ enum SHAPE_TYPE {
rectangle
}
function SHAPE_rectangle(_sca) {
var triangles = [
[ new __vec2(-_sca[0], -_sca[1]), new __vec2(-_sca[0], _sca[1]), new __vec2( _sca[0], -_sca[1]), c_white ],
[ new __vec2( _sca[0], -_sca[1]), new __vec2(-_sca[0], _sca[1]), new __vec2( _sca[0], _sca[1]), c_white ],
];
var segment = [ new __vec2(-_sca[0], -_sca[1]), new __vec2( _sca[0], -_sca[1]),
new __vec2( _sca[0], _sca[1]), new __vec2(-_sca[0], _sca[1]),
new __vec2(-_sca[0], -_sca[1]) ];
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SHAPE_rectangle(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
return [
[ { type: SHAPE_TYPE.rectangle, triangles: triangles } ],
segment
];
var triangles = [ [ new __vec2(-w, -h), new __vec2(-w, h), new __vec2( w, -h), c_white ],
[ new __vec2( w, -h), new __vec2(-w, h), new __vec2( w, h), c_white ], ];
var segment = [ new __vec2(-w, -h), new __vec2(w, -h), new __vec2(w, h), new __vec2(-w, h), new __vec2(-w, -h) ];
return [ [ { type: SHAPE_TYPE.rectangle, triangles: triangles } ], segment ];
}
function SHAPE_diamond(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var triangles = [ [ new __vec2( 0, 0), new __vec2( w, 0), new __vec2( 0, -h), c_white ],
[ new __vec2( 0, 0), new __vec2( 0, -h), new __vec2(-w, 0), c_white ],
[ new __vec2( 0, 0), new __vec2(-w, 0), new __vec2( 0, h), c_white ],
[ new __vec2( 0, 0), new __vec2( 0, h), new __vec2( w, 0), c_white ], ];
var segment = [ new __vec2(w, 0), new __vec2(0, -h), new __vec2(-w, 0), new __vec2(0, h), new __vec2(w, 0) ];
return [ [ { type: SHAPE_TYPE.rectangle, triangles: triangles } ], segment ];
}
function SHAPE_trapezoid(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var v = w * data.trep;
var triangles = [ [ new __vec2(-v, -h), new __vec2(-w, h), new __vec2( v, -h), c_white ],
[ new __vec2( v, -h), new __vec2(-w, h), new __vec2( w, h), c_white ], ];
var segment = [ new __vec2(-v, -h), new __vec2(v, -h), new __vec2(w, h), new __vec2(-w, h), new __vec2(-v, -h) ];
return [ [ { type: SHAPE_TYPE.rectangle, triangles: triangles } ], segment ];
}
function SHAPE_parallelogram(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var a = data.palAng;
var x0 = -w, x1 = w;
var x2 = -w, x3 = w;
if(a > 0) {
x0 = lerp(w, -w, 1 - abs(a));
x3 = lerp(-w, w, 1 - abs(a));
} else {
x2 = lerp(w, -w, 1 - abs(a));
x1 = lerp(-w, w, 1 - abs(a));
}
var triangles = [ [ new __vec2(x0, -h), new __vec2(x2, h), new __vec2(x1, -h), c_white ],
[ new __vec2(x1, -h), new __vec2(x2, h), new __vec2(x3, h), c_white ], ];
var segment = [ new __vec2(x0, -h), new __vec2(x1, -h), new __vec2(x3, h), new __vec2(x2, h), new __vec2(x0, -h) ];
return [ [ { type: SHAPE_TYPE.rectangle, triangles: triangles } ], segment ];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SHAPE_circle(_sca, data = {}) {
var prec = max(3, data.side);
var ang = 360 / prec;
@ -47,238 +91,43 @@ function SHAPE_circle(_sca, data = {}) {
segment[i + 1] = new __vec2(x1, y1);
}
return [
[{ type: SHAPE_TYPE.triangles, triangles: triangles }],
segment
];
}
function SHAPE_star(_sca, data = {}) {
var prec = max(3, data.side);
var inner = data.inner;
var triangles = [];
var segment = [];
for( var i = 0; i < prec; i++ ) {
var otx = lengthdir_x(0.5, i / prec * 360) * _sca[0] * 2;
var oty = lengthdir_y(0.5, i / prec * 360) * _sca[1] * 2;
var inx = lengthdir_x(inner / 2, (i + 0.5) / prec * 360) * _sca[0] * 2;
var iny = lengthdir_y(inner / 2, (i + 0.5) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(0, 0), new __vec2(otx, oty), new __vec2(inx, iny), c_white ]);
var pi0 = new __vec2(inx, iny);
var inx = lengthdir_x(inner / 2, (i - 0.5) / prec * 360) * _sca[0] * 2;
var iny = lengthdir_y(inner / 2, (i - 0.5) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(0, 0), new __vec2(inx, iny), new __vec2(otx, oty), c_white ]);
array_push(segment, new __vec2(inx, iny));
array_push(segment, new __vec2(otx, oty));
array_push(segment, pi0);
}
return [
[{ type: SHAPE_TYPE.triangles, triangles: triangles }],
segment
];
}
function SHAPE_capsule(_sca, data = {}) {
var rad = data.radius;
var prec = max(2, data.side);
var hh = _sca[1] * rad;
var shapes = [];
var segment = [];
array_push(segment, new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2( _sca[0] - hh, hh));
var triangles = [
[ new __vec2(-_sca[0] + _sca[1], -_sca[1]), new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2(_sca[0] - hh, -hh), c_white ],
[ new __vec2(_sca[0] - hh, -hh), new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2(_sca[0] - hh, hh), c_white ],
];
shapes[0] = { type: SHAPE_TYPE.rectangle, triangles: triangles };
var triangles = [];
var cx = -_sca[0] + _sca[1];
var cy = 0;
var ox, oy, nx, ny, oa, na;
for( var i = 0; i <= prec; i++ ) {
na = lerp(270, 90, i / prec);
nx = cx + lengthdir_x(_sca[1], na);
ny = cy + lengthdir_y(_sca[1], na);
if(i) {
array_push(triangles, [ new __vec2(cx, cy), new __vec2(nx, ny), new __vec2(ox, oy), c_white ]);
array_push(segment, new __vec2(ox, oy));
}
array_push(segment, new __vec2(nx, ny));
oa = na;
ox = nx;
oy = ny;
}
array_push(segment, new __vec2(-_sca[0] + _sca[1], -_sca[1]), new __vec2( _sca[0] - hh, -hh));
shapes[1] = { type: SHAPE_TYPE.triangles, triangles: triangles };
var triangles = [];
var cx = _sca[0] - hh;
var cy = 0;
var ox, oy, nx, ny, oa, na;
var _seg = [];
for( var i = 0; i <= prec; i++ ) {
na = lerp(-90, 90, i / prec);
nx = cx + lengthdir_x(hh, na);
ny = cy + lengthdir_y(hh, na);
if(i) {
array_push(triangles, [ new __vec2(cx, cy), new __vec2(ox, oy), new __vec2(nx, ny), c_white ]);
array_push(_seg, new __vec2(ox, oy));
}
array_push(_seg, new __vec2(nx, ny));
oa = na;
ox = nx;
oy = ny;
}
for( var i = 0, n = array_length(_seg); i < n; i++ )
array_push(segment, _seg[array_length(_seg) - i - 1]);
shapes[2] = { type: SHAPE_TYPE.triangles, triangles: triangles };
return [
shapes,
segment
];
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
function SHAPE_ring(_sca, data = {}) {
var prec = max(3, data.side);
var inner = data.inner;
var w = _sca[0], h = _sca[1];
var s = max(3, data.side);
var ow = w;
var oh = h;
var iw = w * data.inner;
var ih = h * data.inner;
var an = 360 / s;
var triangles = [];
var segment = [];
for( var i = 0; i < prec; i++ ) {
var ix0 = lengthdir_x(0.5 * inner, i / prec * 360) * _sca[0] * 2;
var iy0 = lengthdir_y(0.5 * inner, i / prec * 360) * _sca[1] * 2;
for( var i = 0; i < s; i++ ) {
var a0 = i * an;
var a1 = a0 + an;
var nx0 = lengthdir_x(0.5, i / prec * 360) * _sca[0] * 2;
var ny0 = lengthdir_y(0.5, i / prec * 360) * _sca[1] * 2;
var ix0 = lengthdir_x(iw, a0);
var iy0 = lengthdir_y(ih, a0);
var ix1 = lengthdir_x(iw, a1);
var iy1 = lengthdir_y(ih, a1);
var ix1 = lengthdir_x(0.5 * inner, (i + 1) / prec * 360) * _sca[0] * 2;
var iy1 = lengthdir_y(0.5 * inner, (i + 1) / prec * 360) * _sca[1] * 2;
var ox0 = lengthdir_x(ow, a0);
var oy0 = lengthdir_y(oh, a0);
var ox1 = lengthdir_x(ow, a1);
var oy1 = lengthdir_y(oh, a1);
var nx1 = lengthdir_x(0.5, (i + 1) / prec * 360) * _sca[0] * 2;
var ny1 = lengthdir_y(0.5, (i + 1) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(ox0, oy0), new __vec2(ox1, oy1), c_white ]);
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(ox1, oy1), new __vec2(ix1, iy1), c_white ]);
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx0, ny0), new __vec2(nx1, ny1), c_white ]);
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx1, ny1), new __vec2(ix1, iy1), c_white ]);
if(i == 0)
array_push(segment, new __vec2(nx0, ny0));
array_push(segment, new __vec2(nx1, ny1));
if(i == 0) array_push(segment, new __vec2(ox0, oy0));
array_push(segment, new __vec2(ox1, oy1));
}
return [
[{ type: SHAPE_TYPE.rectangle, triangles: triangles }],
segment
];
}
function SHAPE_gear(_sca, data = {}) {
var teeth = max(3, data.teeth);
var teethH = data.teethH;
var teethT = data.teethT;
var prec = teeth * 2;
var inner = data.inner;
var body = 0.5 * (1 - teethH);
var teth = 0.5 * teethH;
var triangles = [];
var segment = [];
for( var i = 0; i < prec; i++ ) {
var ix0 = lengthdir_x(body * inner, i / prec * 360) * _sca[0] * 2;
var iy0 = lengthdir_y(body * inner, i / prec * 360) * _sca[1] * 2;
var nx0 = lengthdir_x(body, i / prec * 360) * _sca[0] * 2;
var ny0 = lengthdir_y(body, i / prec * 360) * _sca[1] * 2;
var ix1 = lengthdir_x(body * inner, (i + 1) / prec * 360) * _sca[0] * 2;
var iy1 = lengthdir_y(body * inner, (i + 1) / prec * 360) * _sca[1] * 2;
var nx1 = lengthdir_x(body, (i + 1) / prec * 360) * _sca[0] * 2;
var ny1 = lengthdir_y(body, (i + 1) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx0, ny0), new __vec2(nx1, ny1), c_white ]);
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx1, ny1), new __vec2(ix1, iy1), c_white ]);
if(i == 0)
array_push(segment, new __vec2(nx0, ny0));
if(i % 2) {
var tx0 = nx0 + lengthdir_x(teth, (i + 0.5 - teethT) / prec * 360) * _sca[0] * 2;
var ty0 = ny0 + lengthdir_y(teth, (i + 0.5 - teethT) / prec * 360) * _sca[1] * 2;
var tx1 = nx1 + lengthdir_x(teth, (i + 0.5 + teethT) / prec * 360) * _sca[0] * 2;
var ty1 = ny1 + lengthdir_y(teth, (i + 0.5 + teethT) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(tx0, ty0), new __vec2(nx1, ny1), new __vec2(nx0, ny0), c_white ]);
array_push(triangles, [ new __vec2(tx0, ty0), new __vec2(tx1, ty1), new __vec2(nx1, ny1), c_white ]);
array_push(segment, new __vec2(tx0, ty0));
array_push(segment, new __vec2(tx1, ty1));
}
array_push(segment, new __vec2(nx1, ny1));
}
return [
[{ type: SHAPE_TYPE.rectangle, triangles: triangles }],
segment
];
}
function SHAPE_cross(_sca, data = {}) {
var inner = data.inner;
var triangles = [];
var segment = [];
var side = min(_sca[0], _sca[1]) * inner;
array_push(triangles,
[ new __vec2(-side, -side), new __vec2(-side, side), new __vec2( side, -side), c_white ],
[ new __vec2( side, -side), new __vec2(-side, side), new __vec2( side, side), c_white ],
);
array_push(triangles, //top
[ new __vec2(-side, -side), new __vec2( side, -side), new __vec2(-side, -_sca[1]), c_white ],
[ new __vec2( side, -side), new __vec2( side, -_sca[1]), new __vec2(-side, -_sca[1]), c_white ],
);
array_push(triangles, //bottom
[ new __vec2(-side, _sca[1]), new __vec2( side, _sca[1]), new __vec2(-side, side), c_white ],
[ new __vec2( side, _sca[1]), new __vec2( side, side), new __vec2(-side, side), c_white ],
);
array_push(triangles, //left
[ new __vec2( -side, -side), new __vec2(-_sca[0], -side), new __vec2(-side, side), c_white ],
[ new __vec2(-_sca[0], -side), new __vec2(-_sca[0], side), new __vec2(-side, side), c_white ],
);
array_push(triangles, //right
[ new __vec2(_sca[0], -side), new __vec2( side, -side), new __vec2(_sca[0], side), c_white ],
[ new __vec2( side, -side), new __vec2( side, side), new __vec2(_sca[0], side), c_white ],
);
array_push(segment, new __vec2(-side, -side), new __vec2(-side, -_sca[1]), new __vec2( side, -_sca[1]), new __vec2(side, -side) );
array_push(segment, new __vec2( _sca[0], -side), new __vec2( _sca[0], side), new __vec2( side, side));
array_push(segment, new __vec2( side, _sca[1]), new __vec2(-side, _sca[1]), new __vec2(-side, side));
array_push(segment, new __vec2(-_sca[0], side), new __vec2(-_sca[0], -side), new __vec2(-side, -side));
return [
[{ type: SHAPE_TYPE.rectangle, triangles: triangles }],
segment
];
return [ [{ type: SHAPE_TYPE.rectangle, triangles: triangles }], segment ];
}
function SHAPE_arc(_sca, data = {}) {
@ -368,8 +217,351 @@ function SHAPE_arc(_sca, data = {}) {
array_push(segment, sgArcI[0].clone());
}
return [
[{ type: SHAPE_TYPE.rectangle, triangles: triangles }],
segment
];
return [ [{ type: SHAPE_TYPE.rectangle, triangles: triangles }], segment ];
}
function SHAPE_crescent(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var s = max(3, data.side);
var ow = w;
var oh = h;
var iw = w * data.inner;
var ih = h * data.inner;
var an = 360 / s;
var cx = w - w * data.inner;
var cy = 0;
var triangles = [];
var segment = [];
for( var i = 0; i < s; i++ ) {
var a0 = i * an;
var a1 = a0 + an;
var ox0 = lengthdir_x(ow, a0);
var oy0 = lengthdir_y(oh, a0);
var ox1 = lengthdir_x(ow, a1);
var oy1 = lengthdir_y(oh, a1);
var ix0 = cx + lengthdir_x(iw, a0);
var iy0 = cy + lengthdir_y(ih, a0);
var ix1 = cx + lengthdir_x(iw, a1);
var iy1 = cy + lengthdir_y(ih, a1);
if(triangle_area_points(ix0, iy0, ox0, oy0, ox1, oy1) > 0.1) array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(ox0, oy0), new __vec2(ox1, oy1), c_white ]);
if(triangle_area_points(ix0, iy0, ox1, oy1, ix1, iy1) > 0.1) array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(ox1, oy1), new __vec2(ix1, iy1), c_white ]);
if(array_empty(segment)) array_push(segment, new __vec2(ox0, oy0)); array_push(segment, new __vec2(ox1, oy1));
}
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
function SHAPE_pie(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var p = max(3, data.side);
var a = 1 / p;
var r = data.radRan;
var triangles = array_create(p);
var segment = array_create(p + 1);
for( var i = 0; i < p; i++ ) {
var d0 = lerp(r[0], r[1], i * a);
var d1 = lerp(r[0], r[1], i * a + a);
var x0 = lengthdir_x(w, d0);
var y0 = lengthdir_y(h, d0);
var x1 = lengthdir_x(w, d1);
var y1 = lengthdir_y(h, d1);
triangles[i] = [ new __vec2(0, 0), new __vec2(x0, y0), new __vec2(x1, y1), c_white ];
if(i == 0) segment[0] = new __vec2(x0, y0);
segment[i+1] = new __vec2(x1, y1);
}
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
function SHAPE_squircle(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var s = max(3, data.side);
var a = 360 / s;
var f = max(.001, data.factor);
var triangles = [];
var segment = [];
var ox, oy, nx, ny;
var s2 = sqrt(2);
for( var i = 0; i <= s; i++ ) {
var d = i * a;
var r = 1 / power(power(abs(dcos(d)), f) + power(abs(dsin(d)), f), 1 / f);
var nx = lengthdir_x(r * w, d);
var ny = lengthdir_y(r * h, d);
if(i) array_push(triangles, [ new __vec2(0, 0), new __vec2(ox, oy), new __vec2(nx, ny), c_white ]);
array_push(segment, new __vec2(nx, ny));
ox = nx;
oy = ny;
}
segment[s] = segment[0].clone();
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SHAPE_reg_poly(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var p = max(3, data.side);
var a = 360 / p;
var triangles = array_create(p);
var segment = array_create(p + 1);
for( var i = 0; i < p; i++ ) {
var d0 = i * a;
var d1 = d0 + a;
var x0 = lengthdir_x(w, d0);
var y0 = lengthdir_y(h, d0);
var x1 = lengthdir_x(w, d1);
var y1 = lengthdir_y(h, d1);
triangles[i] = [ new __vec2(0, 0), new __vec2(x0, y0), new __vec2(x1, y1), c_white ];
if(i == 0) segment[0] = new __vec2(x0, y0);
segment[i+1] = new __vec2(x1, y1);
}
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
function SHAPE_star(_sca, data = {}) {
var prec = max(3, data.side);
var inner = data.inner;
var triangles = [];
var segment = [];
for( var i = 0; i < prec; i++ ) {
var otx = lengthdir_x(0.5, i / prec * 360) * _sca[0] * 2;
var oty = lengthdir_y(0.5, i / prec * 360) * _sca[1] * 2;
var inx = lengthdir_x(inner / 2, (i + 0.5) / prec * 360) * _sca[0] * 2;
var iny = lengthdir_y(inner / 2, (i + 0.5) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(0, 0), new __vec2(otx, oty), new __vec2(inx, iny), c_white ]);
var pi0 = new __vec2(inx, iny);
var inx = lengthdir_x(inner / 2, (i - 0.5) / prec * 360) * _sca[0] * 2;
var iny = lengthdir_y(inner / 2, (i - 0.5) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(0, 0), new __vec2(inx, iny), new __vec2(otx, oty), c_white ]);
array_push(segment, new __vec2(inx, iny));
array_push(segment, new __vec2(otx, oty));
array_push(segment, pi0);
}
return [ [{ type: SHAPE_TYPE.triangles, triangles: triangles }], segment ];
}
function SHAPE_cross(_sca, data = {}) {
var inner = data.inner;
var triangles = [];
var segment = [];
var side = min(_sca[0], _sca[1]) * inner;
array_push(triangles,
[ new __vec2(-side, -side), new __vec2(-side, side), new __vec2( side, -side), c_white ],
[ new __vec2( side, -side), new __vec2(-side, side), new __vec2( side, side), c_white ],
);
array_push(triangles, //top
[ new __vec2(-side, -side), new __vec2( side, -side), new __vec2(-side, -_sca[1]), c_white ],
[ new __vec2( side, -side), new __vec2( side, -_sca[1]), new __vec2(-side, -_sca[1]), c_white ],
);
array_push(triangles, //bottom
[ new __vec2(-side, _sca[1]), new __vec2( side, _sca[1]), new __vec2(-side, side), c_white ],
[ new __vec2( side, _sca[1]), new __vec2( side, side), new __vec2(-side, side), c_white ],
);
array_push(triangles, //left
[ new __vec2( -side, -side), new __vec2(-_sca[0], -side), new __vec2(-side, side), c_white ],
[ new __vec2(-_sca[0], -side), new __vec2(-_sca[0], side), new __vec2(-side, side), c_white ],
);
array_push(triangles, //right
[ new __vec2(_sca[0], -side), new __vec2( side, -side), new __vec2(_sca[0], side), c_white ],
[ new __vec2( side, -side), new __vec2( side, side), new __vec2(_sca[0], side), c_white ],
);
array_push(segment, new __vec2(-side, -side), new __vec2(-side, -_sca[1]), new __vec2( side, -_sca[1]), new __vec2(side, -side) );
array_push(segment, new __vec2( _sca[0], -side), new __vec2( _sca[0], side), new __vec2( side, side));
array_push(segment, new __vec2( side, _sca[1]), new __vec2(-side, _sca[1]), new __vec2(-side, side));
array_push(segment, new __vec2(-_sca[0], side), new __vec2(-_sca[0], -side), new __vec2(-side, -side));
return [ [{ type: SHAPE_TYPE.rectangle, triangles: triangles }], segment ];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SHAPE_capsule(_sca, data = {}) {
var rad = data.radius;
var prec = max(2, data.side);
var hh = _sca[1] * rad;
var shapes = [];
var segment = [];
array_push(segment, new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2( _sca[0] - hh, hh));
var triangles = [
[ new __vec2(-_sca[0] + _sca[1], -_sca[1]), new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2(_sca[0] - hh, -hh), c_white ],
[ new __vec2(_sca[0] - hh, -hh), new __vec2(-_sca[0] + _sca[1], _sca[1]), new __vec2(_sca[0] - hh, hh), c_white ],
];
shapes[0] = { type: SHAPE_TYPE.rectangle, triangles: triangles };
var triangles = [];
var cx = -_sca[0] + _sca[1];
var cy = 0;
var ox, oy, nx, ny, oa, na;
for( var i = 0; i <= prec; i++ ) {
na = lerp(270, 90, i / prec);
nx = cx + lengthdir_x(_sca[1], na);
ny = cy + lengthdir_y(_sca[1], na);
if(i) {
array_push(triangles, [ new __vec2(cx, cy), new __vec2(nx, ny), new __vec2(ox, oy), c_white ]);
array_push(segment, new __vec2(ox, oy));
}
array_push(segment, new __vec2(nx, ny));
oa = na;
ox = nx;
oy = ny;
}
array_push(segment, new __vec2(-_sca[0] + _sca[1], -_sca[1]), new __vec2( _sca[0] - hh, -hh));
shapes[1] = { type: SHAPE_TYPE.triangles, triangles: triangles };
var triangles = [];
var cx = _sca[0] - hh;
var cy = 0;
var _seg = [];
var ox, oy, nx, ny, oa, na;
for( var i = 0; i <= prec; i++ ) {
na = lerp(-90, 90, i / prec);
nx = cx + lengthdir_x(hh, na);
ny = cy + lengthdir_y(hh, na);
if(i) {
array_push(triangles, [ new __vec2(cx, cy), new __vec2(ox, oy), new __vec2(nx, ny), c_white ]);
array_push(_seg, new __vec2(ox, oy));
}
array_push(_seg, new __vec2(nx, ny));
oa = na;
ox = nx;
oy = ny;
}
for( var i = 0, n = array_length(_seg); i < n; i++ )
array_push(segment, _seg[array_length(_seg) - i - 1]);
shapes[2] = { type: SHAPE_TYPE.triangles, triangles: triangles };
return [ shapes, segment ];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SHAPE_leaf(_sca, data = {}) {
var w = _sca[0], h = _sca[1];
var p = max(3, data.side);
var a = 180 / (p - 1);
var triangles = [];
var s0 = [], s1 = [];
var _oy, _ox0, _ox1;
for( var i = 0; i < p; i++ ) {
var d = lerp(-60, 60, i / (p - 1));
var _ny = lengthdir_y(h, d) / dsin(60);
var _nx0 = -w + lengthdir_x(w * 2, d);
var _nx1 = w - lengthdir_x(w * 2, d);
if(i) {
array_push(triangles, [ new __vec2(_nx0, _ny), new __vec2(_nx1, _ny), new __vec2(_ox0, _oy), c_white ]);
array_push(triangles, [ new __vec2(_ox0, _oy), new __vec2(_nx1, _ny), new __vec2(_ox1, _oy), c_white ]);
if(array_empty(s0)) array_push(s0, new __vec2(_ox0, _oy)); array_push(s0, new __vec2(_nx0, _ny));
if(array_empty(s1)) array_push(s1, new __vec2(_ox1, _oy)); array_push(s1, new __vec2(_nx1, _ny));
}
_oy = _ny;
_ox0 = _nx0;
_ox1 = _nx1;
}
array_reverse_ext(s1);
var segment = array_merge(s0, s1);
return [ [{ type: SHAPE_TYPE.rectangle, triangles: triangles }], segment ];
}
function SHAPE_gear(_sca, data = {}) {
var teeth = max(3, data.teeth);
var teethH = data.teethH;
var teethT = data.teethT;
var prec = teeth * 2;
var inner = data.inner;
var body = 0.5 * (1 - teethH);
var teth = 0.5 * teethH;
var triangles = [];
var segment = [];
for( var i = 0; i < prec; i++ ) {
var ix0 = lengthdir_x(body * inner, i / prec * 360) * _sca[0] * 2;
var iy0 = lengthdir_y(body * inner, i / prec * 360) * _sca[1] * 2;
var nx0 = lengthdir_x(body, i / prec * 360) * _sca[0] * 2;
var ny0 = lengthdir_y(body, i / prec * 360) * _sca[1] * 2;
var ix1 = lengthdir_x(body * inner, (i + 1) / prec * 360) * _sca[0] * 2;
var iy1 = lengthdir_y(body * inner, (i + 1) / prec * 360) * _sca[1] * 2;
var nx1 = lengthdir_x(body, (i + 1) / prec * 360) * _sca[0] * 2;
var ny1 = lengthdir_y(body, (i + 1) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx0, ny0), new __vec2(nx1, ny1), c_white ]);
array_push(triangles, [ new __vec2(ix0, iy0), new __vec2(nx1, ny1), new __vec2(ix1, iy1), c_white ]);
if(i == 0)
array_push(segment, new __vec2(nx0, ny0));
if(i % 2) {
var tx0 = nx0 + lengthdir_x(teth, (i + 0.5 - teethT) / prec * 360) * _sca[0] * 2;
var ty0 = ny0 + lengthdir_y(teth, (i + 0.5 - teethT) / prec * 360) * _sca[1] * 2;
var tx1 = nx1 + lengthdir_x(teth, (i + 0.5 + teethT) / prec * 360) * _sca[0] * 2;
var ty1 = ny1 + lengthdir_y(teth, (i + 0.5 + teethT) / prec * 360) * _sca[1] * 2;
array_push(triangles, [ new __vec2(tx0, ty0), new __vec2(nx1, ny1), new __vec2(nx0, ny0), c_white ]);
array_push(triangles, [ new __vec2(tx0, ty0), new __vec2(tx1, ty1), new __vec2(nx1, ny1), c_white ]);
array_push(segment, new __vec2(tx0, ty0));
array_push(segment, new __vec2(tx1, ty1));
}
array_push(segment, new __vec2(nx1, ny1));
}
return [ [{ type: SHAPE_TYPE.rectangle, triangles: triangles }], segment ];
}

View file

@ -135,19 +135,18 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
];
attributes.part_amount = 512;
array_push(attributeEditors, ["Maximum particles", function() { return attributes.part_amount; },
new textBox(TEXTBOX_INPUT.number, function(val) { attributes.part_amount = val; }) ]);
array_push(attributeEditors, [ "Maximum particles", function() /*=>*/ {return attributes.part_amount}, new textBox(TEXTBOX_INPUT.number, function(v) /*=>*/ { attributes.part_amount = v; }) ]);
parts = array_create(attributes.part_amount);
parts_runner = 0;
parts = array_create(attributes.part_amount);
for( var i = 0; i < attributes.part_amount; i++ ) parts[i] = new __part(self);
parts_runner = 0;
seed = 0;
spawn_index_raw = 0;
spawn_index = 0;
scatter_index = 0;
def_surface = -1;
surface_cache = {};
surface_cache = {};
wiggle_maps = {
wig_psx: new wiggleMap(seed, 1, 1000),
@ -158,12 +157,9 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
wig_dir: new wiggleMap(seed, 1, 1000),
};
curve_scale = noone;
curve_alpha = noone;
curve_scale = noone;
curve_alpha = noone;
curve_path_div = noone;
for( var i = 0; i < attributes.part_amount; i++ )
parts[i] = new __part(self);
static spawn = function(_time = CURRENT_FRAME, _pos = -1) {
var _inSurf = getInputData( 0);

View file

@ -7,8 +7,7 @@ function __initCollection() {
var root = DIRECTORY + "Collections"; directory_verify(root);
var rootz = DIRECTORY + "Collections_cache"; directory_verify(rootz);
if(check_version($"{root}/version"))
zip_unzip("data/Collections.zip", root);
// if(check_version($"{root}/version")) zip_unzip("data/Collections.zip", root);
COLLECTIONS = new DirectoryObject(DIRECTORY + "Collections");
refreshCollections();
@ -34,8 +33,7 @@ function searchCollection(_list, _search_str, _toList = true) {
while(!ds_stack_empty(st)) {
var _st = ds_stack_pop(st);
for( var i = 0; i < ds_list_size(_st.content); i++ ) {
var _nd = _st.content[| i];
var _nd = _st.content[| i];
var match = string_partial_match(string_lower(_nd.name), search_lower);
if(match == -9999) continue;

View file

@ -2,21 +2,24 @@ function dynaSurf_circle_fill(_x, _y, ss) {
switch(round(ss)) {
case 0 :
case 1 :
draw_point(_x, _y);
draw_point( _x, _y );
break;
case 2 :
draw_point(_x + 0, _y + 0);
draw_point(_x + 1, _y + 0);
draw_point(_x + 0, _y + 1);
draw_point(_x + 1, _y + 1);
draw_point( _x + 0, _y + 0 );
draw_point( _x + 1, _y + 0 );
draw_point( _x + 0, _y + 1 );
draw_point( _x + 1, _y + 1 );
break;
case 3 :
draw_point(_x, _y);
draw_point(_x - 1, _y);
draw_point(_x + 1, _y);
draw_point(_x, _y + 1);
draw_point(_x, _y - 1);
draw_point( _x, _y );
draw_point( _x - 1, _y );
draw_point( _x + 1, _y );
draw_point( _x, _y + 1 );
draw_point( _x, _y - 1 );
break;
default :
draw_circle(_x, _y, ss - 2, false);
break;

View file

@ -42,8 +42,8 @@
LATEST_VERSION = 1_18_00_0;
VERSION = 1_18_08_0;
SAVE_VERSION = 1_18_05_0;
VERSION_STRING = MAC? "1.18.003m" : "1.18.8.1.002";
SAVE_VERSION = 1_18_09_0;
VERSION_STRING = MAC? "1.18.003m" : "1.18.9.001";
BUILD_NUMBER = 118080.002;
PREF_VERSION = 1_17_1;

View file

@ -1,5 +1,6 @@
function value_map(_val, _omin, _omax, _nmin, _nmax) {
if(_omax == _omin) return _nmin;
return _nmin + (_val - _omin) / (_omax - _omin) * (_nmax - _nmin);
}
}
function triangle_area_points(x0, y0, x1, y1, x2, y2) { return abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) / 2; }

View file

@ -24,7 +24,7 @@ function Node_3D_Mesh_Extrude_Mesh(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y
__d3d_input_list_mesh,
__d3d_input_list_transform,
["Mesh", false], in_mesh + 0, in_mesh + 1, in_mesh + 2,
["Render", false], in_mesh + 3, in_mesh + 4, in_mesh + 5, in_mesh + 6,
["Render", false], in_mesh + 4, in_mesh + 5, in_mesh + 6,
]
temp_surface = [ noone, noone ];

View file

@ -64,7 +64,7 @@ function Node_Array_Pin(_x, _y, _group = noone) : Node(_x, _y, _group) construct
}
static drawBadge = function(_x, _y, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s, _panel = noone) {}
static drawJunctions = function(_draw, _x, _y, _mx, _my, _s) {
var _dval = PANEL_GRAPH.value_dragging;

View file

@ -709,7 +709,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
var _input = getInputJunctionIndex(i);
if(_input == noone) continue;
var _inp = inputs[_input];
var _inp = array_safe_get(inputs, _input);
if(!is_struct(_inp) || !is_instanceof(_inp, NodeValue)) continue;
_inp.visible_in_list = true;
@ -1670,7 +1670,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
draw_set_alpha(1);
}
static drawJunctionWidget = function(_x, _y, _mx, _my, _s, _hover, _focus) {
static drawJunctionWidget = function(_x, _y, _mx, _my, _s, _hover, _focus, display_parameter = noone, _panel = noone) {
var hover = noone;
@ -1685,8 +1685,8 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
var jy = _y + con_h * _s + wh / 2;
var rx = PANEL_GRAPH.x;
var ry = PANEL_GRAPH.y;
var rx = _panel.x;
var ry = _panel.y;
var extY = 0;
var drwT = _s > 0.5;
@ -1843,14 +1843,14 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
static onDrawJunctions = function(_x, _y, _mx, _my, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {
static drawJunctionNames = function(_x, _y, _mx, _my, _s, _panel = noone) {
var amo = input_display_list == -1? array_length(inputs) : array_length(input_display_list);
var jun;
var xx = x * _s + _x;
var yy = y * _s + _y;
var _hov = PANEL_GRAPH.pHOVER && (PANEL_GRAPH.node_hovering == noone || PANEL_GRAPH.node_hovering == self);
var _hov = _panel.pHOVER && (_panel.node_hovering == noone || _panel.node_hovering == self);
show_input_name = _hov;
show_output_name = _hov;
@ -1861,9 +1861,9 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
show_input_name &= point_in_rectangle(_mx, _my, xx - ( 12) * _s, _y0, xx + ( 12) * _s, _y1);
show_output_name &= point_in_rectangle(_mx, _my, xx + (w - 12) * _s, _y0, xx + (w + 12) * _s, _y1);
if(PANEL_GRAPH.value_dragging && PANEL_GRAPH.node_hovering == self) {
if(PANEL_GRAPH.value_dragging.connect_type == CONNECT_TYPE.input) show_output_name = true;
if(PANEL_GRAPH.value_dragging.connect_type == CONNECT_TYPE.output) show_input_name = true;
if(_panel.value_dragging && _panel.node_hovering == self) {
if(_panel.value_dragging.connect_type == CONNECT_TYPE.input) show_output_name = true;
if(_panel.value_dragging.connect_type == CONNECT_TYPE.output) show_input_name = true;
}
if(show_input_name) {
@ -1909,12 +1909,12 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
}
if(hasInspector1Update() && PANEL_GRAPH.pHOVER && point_in_circle(_mx, _my, inspectInput1.x, inspectInput1.y, 10)) {
if(hasInspector1Update() && _panel.pHOVER && point_in_circle(_mx, _my, inspectInput1.x, inspectInput1.y, 10)) {
inspectInput1.drawNameBG(_s);
inspectInput1.drawName(_s, _mx, _my);
}
if(hasInspector2Update() && PANEL_GRAPH.pHOVER && point_in_circle(_mx, _my, inspectInput2.x, inspectInput2.y, 10)) {
if(hasInspector2Update() && _panel.pHOVER && point_in_circle(_mx, _my, inspectInput2.x, inspectInput2.y, 10)) {
inspectInput2.drawNameBG(_s);
inspectInput2.drawName(_s, _mx, _my);
}
@ -2149,15 +2149,15 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
if(preview_draw) drawPreview(xx, yy, _s);
try {
var _hover = PANEL_GRAPH.node_hovering == self;
var _focus = PANEL_GRAPH.getFocusingNode() == self;
var _hover = _panel.node_hovering == self;
var _focus = _panel.getFocusingNode() == self;
onDrawNode(xx, yy, _mx, _my, _s, _hover, _focus);
}
catch(e) { log_warning("NODE onDrawNode", exception_print(e)); }
}
if(SHOW_PARAM) drawJunctionWidget(xx, yy, _mx, _my, _s, _hover, _focus);
if(SHOW_PARAM) drawJunctionWidget(xx, yy, _mx, _my, _s, _hover, _focus, display_parameter, _panel);
draw_name = false;
if((previewable && _s >= 0.5) || (!previewable && h * _s >= name_height * .5)) drawNodeName(xx, yy, _s, _panel);

View file

@ -67,7 +67,7 @@ function Node_Grid(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
newInput(24, nodeValue_Slider_Range("Level", self, [ 0, 1 ]));
newInput(25, nodeValue_Bool("Use Texture Dimension", self, true));
newInput(25, nodeValue_Bool("Use Texture Dimension", self, false));
newInput(26, nodeValue_Float("Gap Width", self, 1));

View file

@ -64,7 +64,7 @@ function Node_Grid_Hex(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
newInput(20, nodeValue_Slider_Range("Level", self, [ 0, 1 ]));
newInput(21, nodeValue_Bool("Use Texture Dimension", self, true));
newInput(21, nodeValue_Bool("Use Texture Dimension", self, false));
input_display_list = [
["Output", false], 0,

View file

@ -51,7 +51,7 @@ function Node_Grid_Pentagonal(_x, _y, _group = noone) : Node_Processor(_x, _y, _
newInput(16, nodeValue_Slider_Range("Level", self, [ 0, 1 ]));
newInput(17, nodeValue_Bool("Use Texture Dimension", self, true));
newInput(17, nodeValue_Bool("Use Texture Dimension", self, false));
input_display_list = [
["Output", false], 0,

View file

@ -64,7 +64,7 @@ function Node_Grid_Tri(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
newInput(20, nodeValue_Slider_Range("Level", self, [ 0, 1 ]));
newInput(21, nodeValue_Bool("Use Texture Dimension", self, true));
newInput(21, nodeValue_Bool("Use Texture Dimension", self, false));
input_display_list = [
["Output", false], 0,

View file

@ -136,7 +136,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
dtype = -1;
range = 0;
onSetDisplayName = function() { attributes.inherit_name = false; }
onSetDisplayName = function() /*=>*/ { attributes.inherit_name = false; }
outputs[0].onSetTo = function(juncTo) {
if(attributes.inherit_name && !LOADING && !APPENDING)
@ -148,10 +148,46 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
var ind = array_find(GROUP_IO_TYPE_MAP, juncTo.type);
if(ind == -1) return;
if(ind == inputs[2].getValue()) return;
outputs[0].setType(juncTo.type);
inputs[2].setValue(ind);
switch(instanceof(juncTo)) {
case "__NodeValue_Vec2" :
case "__NodeValue_Dimension" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
inputs[4].setValue(0);
break;
case "__NodeValue_Vec2_Range" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range"));
inputs[4].setValue(0);
break;
case "__NodeValue_Vec3" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
inputs[4].setValue(1);
break;
case "__NodeValue_Vec3_Range" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range"));
inputs[4].setValue(1);
break;
case "__NodeValue_Vec4" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
inputs[4].setValue(2);
break;
case "__NodeValue_Rotation" :
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Rotation"));
inputs[4].setValue(2);
break;
}
juncTo.value_from = noone;
inParent.setValue(juncTo.getValue());
juncTo.value_from = outputs[0];
}
static createInput = function() {

View file

@ -116,7 +116,7 @@ function Node_Mirror_Polar(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
shader_set_2("scale", _sca);
shader_set_i("rscale", _rsca);
draw_surface_stretched(_suf, 0, 0, _dim[0], _dim[1]);
draw_surface_stretched_safe(_suf, 0, 0, _dim[0], _dim[1]);
surface_reset_shader();
return _outSurf;

View file

@ -66,7 +66,7 @@ function Node_Pin(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
}
static drawBadge = function(_x, _y, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s, _panel = noone) {}
static drawJunctions = function(_draw, _x, _y, _mx, _my, _s) {
var _dval = PANEL_GRAPH.value_dragging;

View file

@ -53,21 +53,17 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
newInput(1, nodeValue_Bool("Background", self, false));
shape_types = [
shape_types = [
"Rectangle", "Diamond", "Trapezoid", "Parallelogram", "Half",
-1, "Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie", "Squircle",
-1, "Regular polygon", "Star", "Cross", "Rounded Cross",
-1, "Line", "Arrow",
-1, "Teardrop", "Leaf", "Heart", "Gear",
];
shape_types_str = [];
__ind = 0; shape_types_str = array_map(shape_types, function(v, i) /*=>*/ {return v == -1? -1 : new scrollItem(v, s_node_shape_type, __ind++)});
var _ind = 0;
for( var i = 0, n = array_length(shape_types); i < n; i++ )
shape_types_str[i] = shape_types[i] == -1? -1 : new scrollItem(shape_types[i], s_node_shape_type, _ind++);
newInput(2, nodeValue_Enum_Scroll("Shape", self, 0, { data: shape_types_str, horizontal: true, text_pad: ui(16) }));
inputs[2].options_histories = [ shape_types, { cond: function() /*=>*/ {return LOADING_VERSION < 1_18_00_0}, list: global.node_shape_keys_18 } ];
newInput(2, nodeValue_Enum_Scroll("Shape", self, 0, { data: shape_types_str, horizontal: true, text_pad: ui(16) }))
.setHistory([ shape_types, { cond: function() /*=>*/ {return LOADING_VERSION < 1_18_00_0}, list: global.node_shape_keys_18 } ]);
newInput(3, nodeValue_Area("Position", self, DEF_AREA_REF, { onSurfaceSize, useShape : false }))
.setUnitRef(onSurfaceSize, VALUE_UNIT.reference);
@ -612,4 +608,4 @@ global.node_shape_keys_18 = [
-1, "Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie", "Squircle",
-1, "Regular polygon", "Star", "Cross", "Rounded Cross",
-1, "Teardrop", "Leaf", "Heart", "Arrow", "Gear",
];
];

View file

@ -8,10 +8,6 @@
function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Draw Shape Polygon";
shapesArray = [ "Rectangle", "Ellipse", "Star", "Capsule", "Ring", "Arc", "Gear", "Cross" ];
for( var i = 0, n = array_length(shapesArray); i < n; i++ )
shapesArray[i] = new scrollItem(shapesArray[i], s_node_shape_poly_type, i);
newInput(0, nodeValue_Dimension(self));
newInput(1, nodeValue_Bool("Background", self, false));
@ -20,15 +16,25 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
newInput(3, nodeValue_Color("Shape color", self, cola(c_white)));
newInput(4, nodeValue_Enum_Scroll("Shape", self, 0, shapesArray));
shapesArray = [
"Rectangle", "Diamond", "Trapezoid", "Parallelogram",
-1, "Ellipse", "Arc", "Ring", "Crescent", "Pie", "Squircle",
-1, "Regular Polygon", "Star", "Cross",
-1, "Capsule",
-1, "Leaf", "Gear",
];
__ind = 0; array_map_ext(shapesArray, function(v, i) /*=>*/ {return v == -1? -1 : new scrollItem(v, s_node_shape_poly_type, __ind++)});
newInput(4, nodeValue_Enum_Scroll("Shape", self, 0, { data: shapesArray, horizontal: true, text_pad: ui(16) }))
.setHistory([ shapesArray, { cond: function() /*=>*/ {return LOADING_VERSION < 1_18_09_0}, list: global.node_shape_polygon_keys_1809 } ]);
newInput(5, nodeValue_Vec2("Position", self, [ 0.5, 0.5 ]))
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
.setUnitRef(function(i) /*=>*/ {return getDimension(i)}, VALUE_UNIT.reference);
newInput(6, nodeValue_Rotation("Rotation", self, 0));
newInput(7, nodeValue_Vec2("Scale", self, [ 0.5, 0.5 ]))
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
.setUnitRef(function(i) /*=>*/ {return getDimension(i)}, VALUE_UNIT.reference);
newInput(8, nodeValue_Int("Sides", self, 16))
.setDisplay(VALUE_DISPLAY.slider, { range: [2, 64, 0.1] });
@ -78,6 +84,14 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
newInput(25, nodeValue_Float("Trapezoid sides", self, 0.5))
.setDisplay(VALUE_DISPLAY.slider);
newInput(26, nodeValue_Float("Skew", self, 0.5))
.setDisplay(VALUE_DISPLAY.slider, { range: [ -1, 1, 0.01 ] });
newInput(27, nodeValue_Float("Factor", self, 3));
newOutput(0, nodeValue_Output("Surface Out", self, VALUE_TYPE.surface, noone));
newOutput(1, nodeValue_Output("Mesh", self, VALUE_TYPE.mesh, noone));
@ -87,7 +101,7 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
input_display_list = [ 16,
["Output", false], 0,
["Transform", false], 5, 6, 7,
["Shape", false], 4, 8, 9, 10, 11, 12, 13, 14, 15, 17,
["Shape", false], 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 25, 26, 27,
["Piecewise", false], 18, 22,
["Render", true], 3, 23, 19, 20, 21, 24,
["Background", true, 1], 2,
@ -99,6 +113,9 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
temp_surface = [ noone ];
mesh = new Mesh();
path = new PathSegment();
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
if(array_length(current_data) != array_length(inputs)) return;
if(process_amount > 1) return;
@ -119,9 +136,6 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
draw_vertex_color(_p.x * _aa, _p.y * _aa, _color, _alpha);
}
mesh = new Mesh();
path = new PathSegment();
static processData = function(_outData, _data, _output_index, _array_index) {
var _dim = _data[0];
var _bg = _data[1];
@ -131,21 +145,27 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
var _pos = _data[5];
var _rot = _data[6];
var _sca = _data[7];
var _side = _data[8];
var _inner = _data[9];
var _rad = _data[10];
var _teeth = _data[11];
var _thHei = _data[12];
var _thTap = _data[13];
var _aRan = _data[14];
var _cap = _data[15];
var _mesh = _data[16];
var _expld = _data[17];
var _prot = _data[18];
var _psca = _data[22];
var _pall = _data[23];
var _aa = power(2, _data[24]);
var data = {
side: _data[ 8],
inner: _data[ 9],
radius: _data[10],
radRan: _data[14],
teeth: _data[11],
teethH: _data[12],
teethT: _data[13],
cap: _data[15],
explode: _data[17],
trep: _data[25],
palAng: _data[26],
factor: _data[27],
};
inputs[ 8].setVisible(false);
inputs[ 9].setVisible(false);
inputs[10].setVisible(false);
@ -155,69 +175,99 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
inputs[14].setVisible(false);
inputs[15].setVisible(false);
inputs[17].setVisible(false);
inputs[25].setVisible(false);
inputs[26].setVisible(false);
inputs[27].setVisible(false);
var _shapeName = array_safe_get_fast(shapesArray, _shp).name;
var _shapeFn = noone;
switch(_shapeName) {
case "Rectangle" : // 0
case "Rectangle" : _shapeFn = SHAPE_rectangle; break;
case "Diamond" : _shapeFn = SHAPE_diamond; break;
case "Trapezoid" : _shapeFn = SHAPE_trapezoid;
inputs[25].setVisible(true);
break;
case "Ellipse" : // 1
case "Parallelogram" : _shapeFn = SHAPE_parallelogram;
inputs[26].setVisible(true);
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case "Ellipse" : _shapeFn = SHAPE_circle;
inputs[ 8].setVisible(true);
inputs[17].setVisible(true);
break;
case "Star" : // 2
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
break;
case "Capsule" : // 3
inputs[ 8].setVisible(true);
inputs[10].setVisible(true);
break;
case "Ring" : // 4
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
break;
case "Arc" : // 5
case "Arc" : _shapeFn = SHAPE_arc;
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
inputs[14].setVisible(true);
inputs[15].setVisible(true);
break;
case "Gear" : // 6
case "Ring" : _shapeFn = SHAPE_ring;
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
break;
case "Crescent" : _shapeFn = SHAPE_crescent;
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
break;
case "Pie" : _shapeFn = SHAPE_pie;
inputs[ 8].setVisible(true);
inputs[14].setVisible(true);
break;
case "Squircle" : _shapeFn = SHAPE_squircle;
inputs[ 8].setVisible(true);
inputs[27].setVisible(true);
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case "Regular Polygon" : _shapeFn = SHAPE_reg_poly;
inputs[ 8].setVisible(true);
break;
case "Star" : _shapeFn = SHAPE_star;
inputs[ 8].setVisible(true);
inputs[ 9].setVisible(true);
break;
case "Cross" : _shapeFn = SHAPE_cross;
inputs[ 9].setVisible(true);
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case "Capsule" : _shapeFn = SHAPE_capsule;
inputs[ 8].setVisible(true);
inputs[10].setVisible(true);
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case "Leaf" : _shapeFn = SHAPE_leaf;
inputs[ 8].setVisible(true);
break;
case "Gear" : _shapeFn = SHAPE_gear;
inputs[ 9].setVisible(true);
inputs[11].setVisible(true);
inputs[12].setVisible(true);
inputs[13].setVisible(true);
break;
case "Cross" : // 7
inputs[ 9].setVisible(true);
break;
}
var _outSurf = surface_verify(_outData[0], _dim[0], _dim[1], attrDepth());
temp_surface[0] = surface_verify(temp_surface[0], _dim[0] * _aa, _dim[1] * _aa, attrDepth());
var _cPassAA = temp_surface[0];
var data = {
side: _side,
inner: _inner,
radius: _rad,
radRan: _aRan,
teeth: _teeth,
teethH: _thHei,
teethT: _thTap,
cap: _cap,
explode: _expld,
};
var _outSurf = surface_verify(_outData[0], _dim[0], _dim[1], attrDepth());
var _cPassAA = temp_surface[0];
var tri0 = colorMultiply(_shc, _data[19]);
var tri1 = colorMultiply(_shc, _data[20]);
@ -245,28 +295,17 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
} else {
var shapeData = [];
switch(_shapeName) {
case "Rectangle" : shapeData = SHAPE_rectangle( _sca ); break;
case "Ellipse" : shapeData = SHAPE_circle( _sca, data); break;
case "Star" : shapeData = SHAPE_star( _sca, data); break;
case "Capsule" : shapeData = SHAPE_capsule( _sca, data); break;
case "Ring" : shapeData = SHAPE_ring( _sca, data); break;
case "Arc" : shapeData = SHAPE_arc( _sca, data); break;
case "Gear" : shapeData = SHAPE_gear( _sca, data); break;
case "Cross" : shapeData = SHAPE_cross( _sca, data); break;
if(_shapeFn == noone) {
draw_primitive_end();
draw_set_alpha(1);
default:
draw_primitive_end();
draw_set_alpha(1);
surface_reset_target();
return [ _outSurf, mesh, path ];
surface_reset_target();
return [ _outSurf, mesh, path ];
}
var points = shapeData[0];
var segment = shapeData[1];
var shapeData = _shapeFn(_sca, data);
var points = shapeData[0];
var segment = shapeData[1];
if(_prot != 0 || _psca != 1)
for( var i = 0, n = array_length(points); i < n; i++ ) {
@ -306,12 +345,8 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
path.setSegment(segment);
var shapes = [];
for( var i = 0, n = array_length(points); i < n; i++ ) {
if(points[i].type == SHAPE_TYPE.points)
shapes[i] = polygon_triangulate(points[i].points)[0];
else
shapes[i] = points[i].triangles;
}
for( var i = 0, n = array_length(points); i < n; i++ )
shapes[i] = points[i].type == SHAPE_TYPE.points? polygon_triangulate(points[i].points)[0] : points[i].triangles;
var _plen = array_length(_pall);
mesh.triangles = [];
@ -348,4 +383,6 @@ function Node_Shape_Polygon(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
return [ _outSurf, mesh, path ];
}
}
}
global.node_shape_polygon_keys_1809 = [ "Rectangle", "Ellipse", "Star", "Capsule", "Ring", "Arc", "Gear", "Cross" ];

View file

@ -165,7 +165,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
}
static drawBadge = function(_x, _y, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s, _panel = noone) {}
static onDrawNodeBehind = function(_x, _y, _mx, _my, _s) {
var xx = x * _s + _x;

View file

@ -89,7 +89,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
}
static drawBadge = function(_x, _y, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s) {}
static drawJunctionNames = function(_x, _y, _mx, _my, _s, _panel = noone) {}
static onDrawNodeBehind = function(_x, _y, _mx, _my, _s) {
var xx = x * _s + _x;

View file

@ -3,6 +3,10 @@ function nodeValue_Enum_Scroll(_name, _node, _value, _data) { return new __NodeV
function __NodeValue_Enum_Scroll(_name, _node, _value, _data) : NodeValue(_name, _node, CONNECT_TYPE.input, VALUE_TYPE.integer, _value, "") constructor {
setDisplay(VALUE_DISPLAY.enum_scroll, _data);
/////============== SET =============
static setHistory = function(h) /*=>*/ { options_histories = h; return self; }
/////============== GET =============
static getValue = function(_time = CURRENT_FRAME, applyUnit = true, arrIndex = 0, useCache = false, log = false) { //// Get value
@ -33,10 +37,7 @@ function __NodeValue_Enum_Scroll(_name, _node, _value, _data) : NodeValue(_name,
for( var i = 1, n = array_length(options_histories); i < n; i++ ) {
var _oph = options_histories[i];
if(!_oph.cond()) continue;
_load = _oph;
break;
if(_oph.cond()) { _load = _oph; break; }
}
if(_load == noone) return;

View file

@ -2179,7 +2179,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
var _node = nodes_list[i];
if(!display_parameter.show_control && _node.is_controller) continue;
_node.drawJunctionNames(gr_x, gr_y, mx, my, graph_s);
_node.drawJunctionNames(gr_x, gr_y, mx, my, graph_s, self);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

View file

@ -3,30 +3,42 @@
"%Name":"s_node_shape_poly_type",
"bboxMode":0,
"bbox_bottom":21,
"bbox_left":2,
"bbox_right":21,
"bbox_top":2,
"bbox_left":0,
"bbox_right":22,
"bbox_top":0,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"e2d585d6-df00-47e6-99eb-075f6ae750b3","name":"e2d585d6-df00-47e6-99eb-075f6ae750b3","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"ee3b6b78-cb81-405c-a667-feb55d72af92","name":"ee3b6b78-cb81-405c-a667-feb55d72af92","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"562c7df2-7190-49c6-8c49-381f8ddfe586","name":"562c7df2-7190-49c6-8c49-381f8ddfe586","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"1ad21eb3-2957-4d4d-926e-740ae1d19b0f","name":"1ad21eb3-2957-4d4d-926e-740ae1d19b0f","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"3ed05dc1-67c7-4a63-b070-35ea04b1932a","name":"3ed05dc1-67c7-4a63-b070-35ea04b1932a","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"423b0a1b-c4b4-45f0-bcfa-56109d4cf548","name":"423b0a1b-c4b4-45f0-bcfa-56109d4cf548","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"a82a8f00-ddd0-4cf9-aecd-a1aa158d9a38","name":"a82a8f00-ddd0-4cf9-aecd-a1aa158d9a38","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"42782bd5-2dd4-444f-b5e4-2c12fc7bed1c","name":"42782bd5-2dd4-444f-b5e4-2c12fc7bed1c","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"eb1a66c2-82b6-4784-9b4e-65d844adddf4","name":"eb1a66c2-82b6-4784-9b4e-65d844adddf4","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"02a2a0d3-3291-4c11-9632-1746a7532fc7","name":"02a2a0d3-3291-4c11-9632-1746a7532fc7","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"4fb534c1-6beb-4e49-ba04-82a5758bd1a1","name":"4fb534c1-6beb-4e49-ba04-82a5758bd1a1","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"5e248cad-eddf-4c5c-b68b-e62ed03e6125","name":"5e248cad-eddf-4c5c-b68b-e62ed03e6125","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"31d077ee-faea-4273-add1-b6fae9778ce2","name":"31d077ee-faea-4273-add1-b6fae9778ce2","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"b98159f6-4d53-421b-ba7d-ba3250d80187","name":"b98159f6-4d53-421b-ba7d-ba3250d80187","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"ef64a417-ae22-4c2d-a22a-363f98fadc9d","name":"ef64a417-ae22-4c2d-a22a-363f98fadc9d","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"30159276-e075-41ea-a218-83d883c97e22","name":"30159276-e075-41ea-a218-83d883c97e22","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"21c30ddc-01c0-457b-b4c4-3b7a4d7d3f7b","name":"21c30ddc-01c0-457b-b4c4-3b7a4d7d3f7b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"e157170d-c5c2-4511-9b17-829b24b451b0","name":"e157170d-c5c2-4511-9b17-829b24b451b0","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"2f0bc8fb-dd23-4d74-ac0a-4ec10077859a","name":"2f0bc8fb-dd23-4d74-ac0a-4ec10077859a","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"1db8a64c-bca5-4538-91a8-73a616951623","name":"1db8a64c-bca5-4538-91a8-73a616951623","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"3bd54037-8259-41e1-8c43-7e6c8353a5ba","name":"3bd54037-8259-41e1-8c43-7e6c8353a5ba","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"4ea45f48-7be7-428b-b6d4-d7ae0268f52b","name":"4ea45f48-7be7-428b-b6d4-d7ae0268f52b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"0f886809-387b-4bc8-abd4-387fa813ceab","name":"0f886809-387b-4bc8-abd4-387fa813ceab","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"59e777c7-dc4a-4538-b767-32cb28b19b58","name":"59e777c7-dc4a-4538-b767-32cb28b19b58","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"48474e77-9f5c-4af6-9f7a-a161c3e17279","name":"48474e77-9f5c-4af6-9f7a-a161c3e17279","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"77986572-6597-4906-8c03-54f459fa48aa","name":"77986572-6597-4906-8c03-54f459fa48aa","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"7b8695ca-f0c7-4400-8a0e-5308592be2b5","name":"7b8695ca-f0c7-4400-8a0e-5308592be2b5","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"35aaf398-7487-4e64-a934-b4dd188269d0","name":"35aaf398-7487-4e64-a934-b4dd188269d0","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":24,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"35823b21-ff1a-4246-bb05-7d6f0ef9d118","blendMode":0,"displayName":"default","isLocked":false,"name":"35823b21-ff1a-4246-bb05-7d6f0ef9d118","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
{"$GMImageLayer":"","%Name":"76176505-d4c8-4e24-bdbc-5b19b83fbcc1","blendMode":0,"displayName":"default","isLocked":false,"name":"76176505-d4c8-4e24-bdbc-5b19b83fbcc1","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_shape_poly_type",
"nineSlice":null,
@ -56,7 +68,7 @@
},
"eventStubScript":null,
"eventToFunction":{},
"length":8.0,
"length":20.0,
"lockOrigin":false,
"moments":{
"$KeyframeStore<MomentsEventKeyframe>":"",
@ -76,29 +88,65 @@
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"e2d585d6-df00-47e6-99eb-075f6ae750b3","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"9ef851f0-6902-4d24-9bfe-265eb3acfd03","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"eb1a66c2-82b6-4784-9b4e-65d844adddf4","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"d999d736-5bf3-46ca-b27b-9fb89ad510af","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"ee3b6b78-cb81-405c-a667-feb55d72af92","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"436e524f-51d7-45d4-883d-60f2a12074eb","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"02a2a0d3-3291-4c11-9632-1746a7532fc7","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"9a049ce1-3918-4957-9265-680946b16c11","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"562c7df2-7190-49c6-8c49-381f8ddfe586","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"aa0b06fe-23a4-428f-bd81-9b2795ea6a94","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"4fb534c1-6beb-4e49-ba04-82a5758bd1a1","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"25aca6cf-d94e-4d6f-811a-2442d4738c3f","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"1ad21eb3-2957-4d4d-926e-740ae1d19b0f","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"23162782-5342-425e-b8c6-25ea9d2d967a","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"5e248cad-eddf-4c5c-b68b-e62ed03e6125","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"bd2296a3-ce47-4e69-8b0c-7ebeb98b485e","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"3ed05dc1-67c7-4a63-b070-35ea04b1932a","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"b44e1bc3-662e-40d2-af20-29c554ed2fa2","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"31d077ee-faea-4273-add1-b6fae9778ce2","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"9977db6f-854f-438c-9983-e62c78a0e3a8","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"423b0a1b-c4b4-45f0-bcfa-56109d4cf548","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"54efa6bb-8740-4590-9b07-0e81a70c1701","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b98159f6-4d53-421b-ba7d-ba3250d80187","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"4c5a91e4-3a19-4728-bb27-825cd19a1801","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"a82a8f00-ddd0-4cf9-aecd-a1aa158d9a38","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"eb4429ba-e2cc-4dfe-95fa-c703fdf49969","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"ef64a417-ae22-4c2d-a22a-363f98fadc9d","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"b698112a-1090-43fc-97a3-ec03f1a86521","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"42782bd5-2dd4-444f-b5e4-2c12fc7bed1c","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"23165818-4a4d-42f6-9b70-596187996c9a","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"30159276-e075-41ea-a218-83d883c97e22","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"0d305ab9-0305-41ff-b5e9-8b204095b856","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"21c30ddc-01c0-457b-b4c4-3b7a4d7d3f7b","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"853cecfa-b5e0-4402-ba2b-7e479564260c","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"e157170d-c5c2-4511-9b17-829b24b451b0","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"da9d447b-a308-46aa-979c-26722d012645","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"2f0bc8fb-dd23-4d74-ac0a-4ec10077859a","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"12709f8a-7d50-46ac-be2f-579f8b884828","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"1db8a64c-bca5-4538-91a8-73a616951623","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"47d51700-8936-4e1f-88ec-6cd4ed2253f8","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"3bd54037-8259-41e1-8c43-7e6c8353a5ba","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"55ca2dea-9755-4c6d-9cf0-31c76cb1b215","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"4ea45f48-7be7-428b-b6d4-d7ae0268f52b","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"19f94ab1-a6fe-481c-b96a-0a8b0fcd9c9c","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"0f886809-387b-4bc8-abd4-387fa813ceab","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"91646157-4019-4e40-b1c3-38f4cdc46fe8","IsCreationKey":false,"Key":14.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"59e777c7-dc4a-4538-b767-32cb28b19b58","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"d1ec1839-434b-4585-9ffb-9399c528ab60","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"48474e77-9f5c-4af6-9f7a-a161c3e17279","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"fde7359f-6b0c-4282-a3d0-8e64f0de73ec","IsCreationKey":false,"Key":16.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"77986572-6597-4906-8c03-54f459fa48aa","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"1973058e-eb19-4392-a6a6-34ae158dde79","IsCreationKey":false,"Key":17.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"7b8695ca-f0c7-4400-8a0e-5308592be2b5","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"36f0c724-edac-4b34-99a9-c0b6d2cb3142","IsCreationKey":false,"Key":18.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"35aaf398-7487-4e64-a934-b4dd188269d0","path":"sprites/s_node_shape_poly_type/s_node_shape_poly_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"764bbc87-456e-4a77-beb9-1c3dfe506597","IsCreationKey":false,"Key":19.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,