- [Curve] Add alpha curve.
|
@ -115,6 +115,8 @@ function __part(_node) : __particleObject() constructor {
|
|||
|
||||
anim_speed = 1;
|
||||
anim_end = ANIM_END_ACTION.loop;
|
||||
anim_stre = false;
|
||||
anim_len = 1;
|
||||
|
||||
line_draw = 1;
|
||||
|
||||
|
@ -149,6 +151,8 @@ function __part(_node) : __particleObject() constructor {
|
|||
drawx = x;
|
||||
drawy = y;
|
||||
|
||||
anim_len = is_array(surf)? array_length(surf) : 1;
|
||||
|
||||
life_incr = 0;
|
||||
life = _life;
|
||||
life_total = life;
|
||||
|
@ -329,19 +333,21 @@ function __part(_node) : __particleObject() constructor {
|
|||
scy = drawsy * scCurve;
|
||||
|
||||
if(arr_type == 2 && surf != noone && is_array(surf)) {
|
||||
var ind = abs(round((life_total - life) * anim_speed));
|
||||
var len = array_length(surf);
|
||||
var _life_prog = life_total - life;
|
||||
var ind = anim_stre? _life_prog / life_total * anim_speed * (anim_len - 1) :
|
||||
_life_prog * anim_speed;
|
||||
ind = abs(round(ind));
|
||||
|
||||
switch(anim_end) {
|
||||
case ANIM_END_ACTION.loop:
|
||||
ss = surf[safe_mod(ind, len)];
|
||||
ss = surf[safe_mod(ind, anim_len)];
|
||||
break;
|
||||
case ANIM_END_ACTION.pingpong:
|
||||
var ping = safe_mod(ind, (len - 1) * 2 + 1);
|
||||
ss = surf[ping >= len? (len - 1) * 2 - ping : ping];
|
||||
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 >= len) {
|
||||
if(ind >= anim_len) {
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -47,7 +47,6 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
inputs[| 15] = nodeValue("Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make the particle rotates to follow its movement.");
|
||||
|
||||
inputs[| 16] = nodeValue("Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst", "Trigger" ]);
|
||||
|
||||
inputs[| 17] = nodeValue("Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
|
||||
|
@ -57,15 +56,12 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
.setDisplay(VALUE_DISPLAY.range);
|
||||
|
||||
inputs[| 19] = nodeValue("Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.range, { linked : true })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.range, { linked : true });
|
||||
|
||||
inputs[| 20] = nodeValue("Direction wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
|
||||
|
||||
inputs[| 21] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
|
||||
.rejectArray();
|
||||
inputs[| 21] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
|
||||
|
||||
inputs[| 22] = nodeValue("Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0, "Whether to select image from an array in order, at random, or treat array as animation." )
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation", "Scale" ])
|
||||
|
@ -73,98 +69,81 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
|
||||
inputs[| 23] = nodeValue("Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
|
||||
.setDisplay(VALUE_DISPLAY.range, { linked : true })
|
||||
.rejectArray()
|
||||
.setVisible(false);
|
||||
|
||||
inputs[| 24] = nodeValue("Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random" ]);
|
||||
|
||||
inputs[| 25] = nodeValue("Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
|
||||
.setVisible(false, true);
|
||||
|
||||
inputs[| 26] = nodeValue("On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop)
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ])
|
||||
.setVisible(false);
|
||||
|
||||
inputs[| 27] = nodeValue("Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
|
||||
.rejectArray();
|
||||
inputs[| 27] = nodeValue("Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
|
||||
|
||||
inputs[| 28] = nodeValue("Random blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(c_white) );
|
||||
|
||||
inputs[| 29] = nodeValue("Directed from center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make particle move away from the spawn center.")
|
||||
.rejectArray();
|
||||
inputs[| 29] = nodeValue("Directed from center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make particle move away from the spawn center.");
|
||||
|
||||
inputs[| 30] = nodeValue("Distribution map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone)
|
||||
.rejectArray()
|
||||
|
||||
inputs[| 31] = nodeValue("Atlas", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, [] );
|
||||
|
||||
inputs[| 32] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, seed_random(6))
|
||||
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { inputs[| 32].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { inputs[| 32].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) });
|
||||
|
||||
inputs[| 33] = nodeValue("Gravity direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, -90 )
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.rotation);
|
||||
|
||||
inputs[| 34] = nodeValue("Turning", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.range, { linked : true });
|
||||
|
||||
inputs[| 35] = nodeValue("Turn both directions", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Apply randomized 1, -1 multiplier to the turning speed." )
|
||||
.rejectArray();
|
||||
inputs[| 35] = nodeValue("Turn both directions", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Apply randomized 1, -1 multiplier to the turning speed." );
|
||||
|
||||
inputs[| 36] = nodeValue("Turn scale with speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, false )
|
||||
.rejectArray();
|
||||
inputs[| 36] = nodeValue("Turn scale with speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, false );
|
||||
|
||||
inputs[| 37] = nodeValue("Collide ground", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
|
||||
.rejectArray();
|
||||
inputs[| 37] = nodeValue("Collide ground", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
|
||||
|
||||
inputs[| 38] = nodeValue("Ground offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
|
||||
.rejectArray();
|
||||
inputs[| 38] = nodeValue("Ground offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
|
||||
|
||||
inputs[| 39] = nodeValue("Bounce amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.slider);
|
||||
|
||||
inputs[| 40] = nodeValue("Bounce friction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1, "Apply horizontal friction once particle stop bouncing." )
|
||||
.rejectArray()
|
||||
.setDisplay(VALUE_DISPLAY.slider);
|
||||
|
||||
inputs[| 41] = nodeValue("Position wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
|
||||
|
||||
inputs[| 42] = nodeValue("Rotation wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
|
||||
|
||||
inputs[| 43] = nodeValue("Scale wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
|
||||
|
||||
inputs[| 44] = nodeValue("Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
|
||||
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger" })
|
||||
.rejectArray();
|
||||
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger" });
|
||||
|
||||
inputs[| 45] = nodeValue("Follow Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
|
||||
.rejectArray();
|
||||
inputs[| 45] = nodeValue("Follow Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
|
||||
|
||||
inputs[| 46] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone )
|
||||
.rejectArray();
|
||||
inputs[| 46] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone );
|
||||
|
||||
inputs[| 47] = nodeValue("Path Deviation", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 )
|
||||
.rejectArray();
|
||||
inputs[| 47] = nodeValue("Path Deviation", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
|
||||
|
||||
inputs[| 48] = nodeValue("Reset Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
|
||||
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger" })
|
||||
.rejectArray();
|
||||
|
||||
inputs[| 49] = nodeValue("Stretch Animation", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
|
||||
|
||||
for (var i = 16, n = ds_list_size(inputs); i < n; i++)
|
||||
inputs[| i].rejectArray();
|
||||
|
||||
input_len = ds_list_size(inputs);
|
||||
|
||||
input_display_list = [ 32, 48,
|
||||
["Sprite", false], 0, 22, 23, 26,
|
||||
["Sprite", false], 0, 22, 23, 49, 26,
|
||||
["Spawn", true], 27, 16, 44, 1, 2, 3, 4, 30, 24, 5,
|
||||
["Movement", true], 29, 6, 18,
|
||||
["Follow path", true, 45], 46, 47,
|
||||
|
@ -241,6 +220,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
|
||||
var _arr_type = getInputData(22);
|
||||
var _anim_speed = getInputData(23);
|
||||
var _anim_stre = getInputData(49);
|
||||
var _anim_end = getInputData(26);
|
||||
|
||||
var _ground = getInputData(37);
|
||||
|
@ -325,6 +305,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
part.seed = irandom_range(100000, 999999);
|
||||
part.create(_spr, xx, yy, _lif);
|
||||
part.anim_speed = random_range(_anim_speed[0], _anim_speed[1]);
|
||||
part.anim_stre = _anim_stre;
|
||||
part.anim_end = _anim_end;
|
||||
part.arr_type = _arr_type;
|
||||
|
||||
|
@ -490,6 +471,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
inputs[| 22].setVisible(false);
|
||||
inputs[| 23].setVisible(false);
|
||||
inputs[| 26].setVisible(false);
|
||||
inputs[| 49].setVisible(false);
|
||||
|
||||
inputs[| 46].setVisible(true, _usePth);
|
||||
|
||||
|
@ -505,6 +487,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
|
|||
if(_type == 2) {
|
||||
inputs[| 23].setVisible(true);
|
||||
inputs[| 26].setVisible(true);
|
||||
inputs[| 49].setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,11 +24,13 @@ function Node_Curve(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
|
||||
__init_mask_modifier(5); // inputs 9, 10
|
||||
|
||||
inputs[| 11] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_01);
|
||||
|
||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
input_display_list = [ 7, 8,
|
||||
["Surfaces", true], 0, 5, 6, 9, 10,
|
||||
["Curve", false], 1, 2, 3, 4,
|
||||
["Curve", false], 1, 2, 3, 4, 11,
|
||||
];
|
||||
|
||||
attribute_surface_depth();
|
||||
|
@ -42,6 +44,7 @@ function Node_Curve(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
var _rcur = _data[2];
|
||||
var _gcur = _data[3];
|
||||
var _bcur = _data[4];
|
||||
var _acur = _data[11];
|
||||
|
||||
surface_set_shader(_outSurf, sh_curve);
|
||||
shader_set_f("w_curve", _wcur);
|
||||
|
@ -56,6 +59,9 @@ function Node_Curve(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
shader_set_f("b_curve", _bcur);
|
||||
shader_set_i("b_amount", array_length(_bcur));
|
||||
|
||||
shader_set_f("a_curve", _acur);
|
||||
shader_set_i("a_amount", array_length(_acur));
|
||||
|
||||
draw_surface_safe(_data[0]);
|
||||
surface_reset_shader();
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#region create
|
||||
global.node_shape_keys = [
|
||||
"rectangle", "ellipse", "regular polygon", "star", "arc", "teardrop", "cross", "leaf", "crescent", "donut",
|
||||
"square", "circle", "triangle", "pentagon", "hexagon", "ring", "diamond", "trapezoid", "parallelogram",
|
||||
"square", "circle", "triangle", "pentagon", "hexagon", "ring", "diamond", "trapezoid", "parallelogram", "heart",
|
||||
"arrow",
|
||||
];
|
||||
|
||||
function Node_create_Shape(_x, _y, _group = noone, _param = {}) { #region
|
||||
|
@ -37,11 +38,23 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
|
||||
inputs[| 1] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
shape_types = [ "Rectangle", "Diamond", "Trapezoid", "Parallelogram", "Ellipse", "Regular polygon", "Star", "Arc", "Teardrop", "Cross", "Leaf", "Crescent", "Donut", ];
|
||||
shape_types = [ "Rectangle", "Diamond", "Trapezoid", "Parallelogram",
|
||||
-1,
|
||||
"Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie",
|
||||
-1,
|
||||
"Regular polygon", "Star", "Cross", "Rounded Cross",
|
||||
-1,
|
||||
"Teardrop", "Leaf", "Heart", "Arrow",
|
||||
];
|
||||
shape_types_str = [];
|
||||
|
||||
for( var i = 0, n = array_length(shape_types); i < n; i++ )
|
||||
shape_types_str[i] = new scrollItem(shape_types[i], s_node_shape_type, i);
|
||||
var _ind = 0;
|
||||
for( var i = 0, n = array_length(shape_types); i < n; i++ ) {
|
||||
if(shape_types[i] == -1)
|
||||
shape_types_str[i] = -1;
|
||||
else
|
||||
shape_types_str[i] = new scrollItem(shape_types[i], s_node_shape_type, _ind++);
|
||||
}
|
||||
|
||||
inputs[| 2] = nodeValue("Shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, shape_types_str);
|
||||
|
@ -106,12 +119,17 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
inputs[| 22] = nodeValue("Skew", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
|
||||
.setDisplay(VALUE_DISPLAY.slider);
|
||||
|
||||
inputs[| 23] = nodeValue("Arrow Sizes", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.2, 0.3 ] )
|
||||
.setDisplay(VALUE_DISPLAY.slider_range);
|
||||
|
||||
inputs[| 24] = nodeValue("Arrow Head", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 3 );
|
||||
|
||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||
|
||||
input_display_list = [
|
||||
["Output", false], 0, 6,
|
||||
["Transform", false], 15, 3, 16, 17, 19,
|
||||
["Shape", false], 14, 2, 9, 4, 13, 5, 7, 8, 21, 22,
|
||||
["Shape", false], 14, 2, 9, 4, 13, 5, 7, 8, 21, 22, 23, 24,
|
||||
["Render", true], 10, 12, 20, 18,
|
||||
["Background", true, 1], 11,
|
||||
];
|
||||
|
@ -277,6 +295,8 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
inputs[| 18].setVisible( true);
|
||||
inputs[| 21].setVisible(false);
|
||||
inputs[| 22].setVisible(false);
|
||||
inputs[| 23].setVisible(false);
|
||||
inputs[| 24].setVisible(false);
|
||||
|
||||
var _shp = array_safe_get(shape_types, _shape, "");
|
||||
if(is_struct(_shp)) _shp = _shp.data;
|
||||
|
@ -291,14 +311,12 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
|
||||
case "Diamond" :
|
||||
inputs[| 9].setVisible( true);
|
||||
inputs[| 18].setVisible(false);
|
||||
|
||||
shader_set_i("shape", 10);
|
||||
break;
|
||||
|
||||
case "Trapezoid" :
|
||||
inputs[| 9].setVisible( true);
|
||||
inputs[| 18].setVisible(false);
|
||||
inputs[| 21].setVisible( true);
|
||||
|
||||
shader_set_i("shape", 11);
|
||||
|
@ -307,7 +325,6 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
|
||||
case "Parallelogram" :
|
||||
inputs[| 9].setVisible( true);
|
||||
inputs[| 18].setVisible(false);
|
||||
inputs[| 22].setVisible( true);
|
||||
|
||||
shader_set_i("shape", 12);
|
||||
|
@ -415,6 +432,42 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
shader_set_f("inner", _data[13]);
|
||||
break;
|
||||
|
||||
case "Heart":
|
||||
|
||||
shader_set_i("shape", 13);
|
||||
break;
|
||||
|
||||
case "Disk Segment":
|
||||
inputs[| 13].setVisible(true);
|
||||
|
||||
inputs[| 13].name = "Segment Size";
|
||||
|
||||
shader_set_i("shape", 14);
|
||||
shader_set_f("inner", -1 + _data[13] * 2.);
|
||||
break;
|
||||
|
||||
case "Pie":
|
||||
inputs[| 7].setVisible(true);
|
||||
|
||||
shader_set_i("shape", 15);
|
||||
shader_set_f("angle", degtorad(_data[7]));
|
||||
break;
|
||||
|
||||
case "Rounded Cross":
|
||||
inputs[| 9].setVisible(true);
|
||||
|
||||
shader_set_i("shape", 16);
|
||||
break;
|
||||
|
||||
case "Arrow":
|
||||
inputs[| 23].setVisible(true);
|
||||
inputs[| 24].setVisible(true);
|
||||
|
||||
shader_set_i("shape", 17);
|
||||
shader_set_f("arrow", _data[23]);
|
||||
shader_set_f("arrow_head", _data[24]);
|
||||
break;
|
||||
|
||||
} #endregion
|
||||
|
||||
shader_set_f("dimension", _dim);
|
||||
|
|
|
@ -16,6 +16,9 @@ uniform int g_amount;
|
|||
uniform float b_curve[64];
|
||||
uniform int b_amount;
|
||||
|
||||
uniform float a_curve[64];
|
||||
uniform int a_amount;
|
||||
|
||||
float eval_curve_segment_t(in float _y0, in float ax0, in float ay0, in float bx1, in float by1, in float _y1, in float prog) {
|
||||
return _y0 * pow(1. - prog, 3.) +
|
||||
ay0 * 3. * pow(1. - prog, 2.) * prog +
|
||||
|
@ -105,13 +108,12 @@ void main() {
|
|||
col.r = curveEval(r_curve, r_amount, col.r);
|
||||
col.g = curveEval(g_curve, g_amount, col.g);
|
||||
col.b = curveEval(b_curve, b_amount, col.b);
|
||||
col.a = curveEval(a_curve, b_amount, col.a);
|
||||
|
||||
float w = (col.r + col.g + col.b) / 3.;
|
||||
float wtarget = curveEval(w_curve, w_amount, w);
|
||||
|
||||
col.r *= wtarget / w;
|
||||
col.g *= wtarget / w;
|
||||
col.b *= wtarget / w;
|
||||
col.rgb *= wtarget / w;
|
||||
|
||||
gl_FragColor = col;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,9 @@ uniform vec2 center;
|
|||
uniform vec2 scale;
|
||||
uniform vec2 trep;
|
||||
|
||||
uniform vec2 arrow;
|
||||
uniform float arrow_head;
|
||||
|
||||
uniform vec4 bgColor;
|
||||
|
||||
#define PI 3.14159265359
|
||||
|
@ -170,6 +173,95 @@ float sdParallelogram( in vec2 p, float wi, float he, float sk ) {
|
|||
return sqrt(d.x) * sign(-d.y);
|
||||
}
|
||||
|
||||
float sdHeart( in vec2 p ) {
|
||||
p.x = abs(p.x);
|
||||
p.y = -p.y + 0.9;
|
||||
p /= 1.65;
|
||||
|
||||
if( p.y+p.x>1.0 )
|
||||
return sqrt(dot2(p-vec2(0.25,0.75))) - sqrt(2.0)/4.0;
|
||||
return sqrt(min(dot2(p-vec2(0.00,1.00)),
|
||||
dot2(p-0.5*max(p.x+p.y,0.0)))) * sign(p.x-p.y);
|
||||
}
|
||||
|
||||
float sdCutDisk( in vec2 p, in float r, in float h ) {
|
||||
float w = sqrt(r*r-h*h); // constant for any given shape
|
||||
p.x = abs(p.x);
|
||||
float s = max( (h-r)*p.x*p.x+w*w*(h+r-2.0*p.y), h*p.x-w*p.y );
|
||||
return (s<0.0) ? length(p)-r :
|
||||
(p.x<w) ? h - p.y :
|
||||
length(p-vec2(w,h));
|
||||
}
|
||||
|
||||
float sdPie( in vec2 p, in vec2 c, in float r ) {
|
||||
p.x = abs(p.x);
|
||||
float l = length(p) - r;
|
||||
float m = length(p-c*clamp(dot(p,c),0.0,r)); // c=sin/cos of aperture
|
||||
return max(l,m*sign(c.y*p.x-c.x*p.y));
|
||||
}
|
||||
|
||||
float sdRoundedCross( in vec2 p, in float h ) {
|
||||
float k = 0.5*(h+1.0/h); // k should be const/precomputed at modeling time
|
||||
|
||||
p = abs(p);
|
||||
return ( p.x<1.0 && p.y<p.x*(k-h)+h ) ?
|
||||
k-sqrt(dot2(p-vec2(1,k))) : // circular arc
|
||||
sqrt(min(dot2(p-vec2(0,h)), // top corner
|
||||
dot2(p-vec2(1,0)))); // right corner
|
||||
}
|
||||
|
||||
float sdArrow( in vec2 p, float w1, float w2, float k ) { // The arrow goes from a to b. It's thickness is w1. The arrow head's thickness is w2.
|
||||
// constant setup
|
||||
vec2 a = vec2(-1., 0.);
|
||||
vec2 b = vec2(1., 0.);
|
||||
|
||||
vec2 ba = b - a;
|
||||
float l2 = dot(ba,ba);
|
||||
float l = sqrt(l2);
|
||||
|
||||
// pixel setup
|
||||
p = p-a;
|
||||
p = mat2(ba.x,-ba.y,ba.y,ba.x)*p/l;
|
||||
p.y = abs(p.y);
|
||||
vec2 pz = p-vec2(l-w2*k,w2);
|
||||
|
||||
// === distance (four segments) ===
|
||||
|
||||
vec2 q = p;
|
||||
q.x -= clamp( q.x, 0.0, l-w2*k );
|
||||
q.y -= w1;
|
||||
float di = dot(q,q);
|
||||
//----
|
||||
q = pz;
|
||||
q.y -= clamp( q.y, w1-w2, 0.0 );
|
||||
di = min( di, dot(q,q) );
|
||||
//----
|
||||
if( p.x<w1 ) // conditional is optional
|
||||
{
|
||||
q = p;
|
||||
q.y -= clamp( q.y, 0.0, w1 );
|
||||
di = min( di, dot(q,q) );
|
||||
}
|
||||
//----
|
||||
if( pz.x>0.0 ) // conditional is optional
|
||||
{
|
||||
q = pz;
|
||||
q -= vec2(k,-1.0)*clamp( (q.x*k-q.y)/(k*k+1.0), 0.0, w2 );
|
||||
di = min( di, dot(q,q) );
|
||||
}
|
||||
|
||||
// === sign ===
|
||||
|
||||
float si = 1.0;
|
||||
float z = l - p.x;
|
||||
if( min(p.x,z)>0.0 ) //if( p.x>0.0 && z>0.0 )
|
||||
{
|
||||
float h = (pz.x<0.0) ? w1 : z/k;
|
||||
if( p.y<h ) si = -1.0;
|
||||
}
|
||||
return si*sqrt(di);
|
||||
}
|
||||
|
||||
void main() {
|
||||
float color = 0.;
|
||||
vec2 coord = (v_vTexcoord - center) * mat2(cos(rotation), -sin(rotation), sin(rotation), cos(rotation)) / scale;
|
||||
|
@ -202,14 +294,21 @@ void main() {
|
|||
else if(shape == 10) d = sdRhombus( coord, vec2(1. - corner) ) - corner;
|
||||
else if(shape == 11) d = sdTrapezoid( coord, trep.x - corner, trep.y - corner, 1. - corner ) - corner;
|
||||
else if(shape == 12) d = sdParallelogram( coord, 1. - corner - parall, 1. - corner, parall) - corner;
|
||||
else if(shape == 13) d = sdHeart( coord );
|
||||
else if(shape == 14) d = sdCutDisk( coord, 1., inner );
|
||||
else if(shape == 15) d = sdPie( coord, vec2(sin(angle), cos(angle)), 1. );
|
||||
else if(shape == 16) d = sdRoundedCross( coord, 1. - corner ) - corner;
|
||||
else if(shape == 17) d = sdArrow( coord, arrow.x, arrow.y, arrow_head);
|
||||
|
||||
if(drawDF == 1) {
|
||||
color = -d;
|
||||
color = (color - dfLevel.x) / (dfLevel.y - dfLevel.x);
|
||||
} else if(aa == 0)
|
||||
color = step(d, 0.0);
|
||||
else
|
||||
color = smoothstep(0.02, -0.02, d);
|
||||
else {
|
||||
float _aa = 1. / max(dimension.x, dimension.y);
|
||||
color = smoothstep(_aa, -_aa, d);
|
||||
}
|
||||
|
||||
gl_FragColor = mix(bgColor, v_vColour, color);
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 381 B |
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 455 B |
After Width: | Height: | Size: 479 B |
After Width: | Height: | Size: 515 B |
Before Width: | Height: | Size: 439 B After Width: | Height: | Size: 439 B |
After Width: | Height: | Size: 493 B |
After Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
Before Width: | Height: | Size: 474 B After Width: | Height: | Size: 474 B |
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B |
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
Before Width: | Height: | Size: 377 B After Width: | Height: | Size: 377 B |
After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 448 B After Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 426 B |
Before Width: | Height: | Size: 525 B After Width: | Height: | Size: 525 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 381 B |
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 455 B |
After Width: | Height: | Size: 479 B |
After Width: | Height: | Size: 515 B |
Before Width: | Height: | Size: 439 B After Width: | Height: | Size: 439 B |
After Width: | Height: | Size: 493 B |
After Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
Before Width: | Height: | Size: 474 B After Width: | Height: | Size: 474 B |
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B |
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
Before Width: | Height: | Size: 377 B After Width: | Height: | Size: 377 B |
After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 448 B After Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 426 B |
Before Width: | Height: | Size: 525 B After Width: | Height: | Size: 525 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 467 B |
|
@ -2,7 +2,7 @@
|
|||
"$GMSprite":"",
|
||||
"%Name":"s_node_shape_type",
|
||||
"bboxMode":0,
|
||||
"bbox_bottom":21,
|
||||
"bbox_bottom":22,
|
||||
"bbox_left":1,
|
||||
"bbox_right":22,
|
||||
"bbox_top":2,
|
||||
|
@ -12,26 +12,31 @@
|
|||
"edgeFiltering":false,
|
||||
"For3D":false,
|
||||
"frames":[
|
||||
{"$GMSpriteFrame":"","%Name":"6c545309-6ffe-4c08-bed2-9c82065ad8d4","name":"6c545309-6ffe-4c08-bed2-9c82065ad8d4","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"d3111831-695a-4461-9130-3228744761bb","name":"d3111831-695a-4461-9130-3228744761bb","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"5526c2ef-3545-4dca-bec6-85357e76b6b1","name":"5526c2ef-3545-4dca-bec6-85357e76b6b1","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"7a237ffa-be4c-4d8e-bd2f-ae809eb3b319","name":"7a237ffa-be4c-4d8e-bd2f-ae809eb3b319","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"83508ab4-faeb-411c-8b6e-d29be9cddea9","name":"83508ab4-faeb-411c-8b6e-d29be9cddea9","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"71d205ee-df82-4582-bf38-39392d51dd23","name":"71d205ee-df82-4582-bf38-39392d51dd23","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"bab10856-f499-4364-8bdb-230f241dcf0d","name":"bab10856-f499-4364-8bdb-230f241dcf0d","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"d3655d0c-9269-4162-9ae7-82c547edf674","name":"d3655d0c-9269-4162-9ae7-82c547edf674","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"84e23289-8dc8-4aeb-b056-57889a5a04a9","name":"84e23289-8dc8-4aeb-b056-57889a5a04a9","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"2893727a-1872-4e51-b211-59df36bbc651","name":"2893727a-1872-4e51-b211-59df36bbc651","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"3b6185db-9a13-4cdc-a4e6-a483cf4d6281","name":"3b6185db-9a13-4cdc-a4e6-a483cf4d6281","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"8973bafa-9ba5-4018-82fe-49369c528c77","name":"8973bafa-9ba5-4018-82fe-49369c528c77","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"651de5b3-7033-4983-aa29-7308549c5997","name":"651de5b3-7033-4983-aa29-7308549c5997","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"ac2c058e-dd94-4d88-9958-fac479f23660","name":"ac2c058e-dd94-4d88-9958-fac479f23660","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"14bfe2b8-bba9-422d-9309-159a2068a2b8","name":"14bfe2b8-bba9-422d-9309-159a2068a2b8","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"6d6db666-0f53-414f-8e2e-75217cbcd027","name":"6d6db666-0f53-414f-8e2e-75217cbcd027","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"b1ec2af5-bef8-4227-95ad-3e2460e6e676","name":"b1ec2af5-bef8-4227-95ad-3e2460e6e676","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"b0761a58-4f3d-4174-8a91-3d14246ac152","name":"b0761a58-4f3d-4174-8a91-3d14246ac152","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"8ea8d1e8-6255-4f98-9112-0092f61f32d0","name":"8ea8d1e8-6255-4f98-9112-0092f61f32d0","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"9619ab69-4168-4599-a598-8c722310ef03","name":"9619ab69-4168-4599-a598-8c722310ef03","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"83cbb736-e130-438e-b366-d4834ff26292","name":"83cbb736-e130-438e-b366-d4834ff26292","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"c993ff0d-daf9-4950-9c17-252474cc9195","name":"c993ff0d-daf9-4950-9c17-252474cc9195","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"41c086f9-4334-4833-a514-0a6c3194841b","name":"41c086f9-4334-4833-a514-0a6c3194841b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"68cedd47-7826-45d0-936a-09d3f0b2514e","name":"68cedd47-7826-45d0-936a-09d3f0b2514e","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"d327df90-02a8-4278-a2f0-bad7924956ff","name":"d327df90-02a8-4278-a2f0-bad7924956ff","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"4dd803df-0824-47d6-a1d9-a4c0b94aa30f","name":"4dd803df-0824-47d6-a1d9-a4c0b94aa30f","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"60deee41-cb26-435b-b3dd-7f03e79b3f50","name":"60deee41-cb26-435b-b3dd-7f03e79b3f50","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
{"$GMSpriteFrame":"","%Name":"49f66653-48bb-46ca-adb5-39604325a9d1","name":"49f66653-48bb-46ca-adb5-39604325a9d1","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
],
|
||||
"gridX":0,
|
||||
"gridY":0,
|
||||
"height":24,
|
||||
"HTile":false,
|
||||
"layers":[
|
||||
{"$GMImageLayer":"","%Name":"4d0fb2c0-7da4-4a71-a1ca-6e964555e7d4","blendMode":0,"displayName":"default","isLocked":false,"name":"4d0fb2c0-7da4-4a71-a1ca-6e964555e7d4","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||
{"$GMImageLayer":"","%Name":"e8dfb98d-070d-4cc7-8d95-66066132cc72","blendMode":0,"displayName":"default","isLocked":false,"name":"e8dfb98d-070d-4cc7-8d95-66066132cc72","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||
],
|
||||
"name":"s_node_shape_type",
|
||||
"nineSlice":null,
|
||||
|
@ -61,7 +66,7 @@
|
|||
},
|
||||
"eventStubScript":null,
|
||||
"eventToFunction":{},
|
||||
"length":13.0,
|
||||
"length":18.0,
|
||||
"lockOrigin":false,
|
||||
"moments":{
|
||||
"$KeyframeStore<MomentsEventKeyframe>":"",
|
||||
|
@ -81,44 +86,59 @@
|
|||
"tracks":[
|
||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"6c545309-6ffe-4c08-bed2-9c82065ad8d4","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"ee006fd1-e9eb-4d05-b46f-eae5fa8612b0","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"ac2c058e-dd94-4d88-9958-fac479f23660","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"2f766208-44fc-4bbb-ac0c-a6bbdf6aa948","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d3111831-695a-4461-9130-3228744761bb","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"46c3d423-c7ec-4994-af09-809ef518a079","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"14bfe2b8-bba9-422d-9309-159a2068a2b8","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"e82eca16-b46d-4b08-adc4-3d700284a9e3","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"5526c2ef-3545-4dca-bec6-85357e76b6b1","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"31c2191f-90a4-40a8-89d2-1ff98308a5e7","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"6d6db666-0f53-414f-8e2e-75217cbcd027","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"455e0678-04b4-42e4-8b55-50c80b9f2fb5","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"7a237ffa-be4c-4d8e-bd2f-ae809eb3b319","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"67b85fa1-1715-453b-a9e3-c936d250dc7d","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b1ec2af5-bef8-4227-95ad-3e2460e6e676","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"06a0723a-12ad-4b68-be76-0f7211427afe","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"83508ab4-faeb-411c-8b6e-d29be9cddea9","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"21957fda-cd5a-4e10-a5a8-ca944c8ccc65","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b0761a58-4f3d-4174-8a91-3d14246ac152","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"3a442dac-3cd2-4edb-ad51-c2c739494466","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"71d205ee-df82-4582-bf38-39392d51dd23","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"766e25dd-8b26-47a2-996a-ca9f7b58f9ae","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"8ea8d1e8-6255-4f98-9112-0092f61f32d0","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"21287849-b4cb-4471-b37c-ab656344897d","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"bab10856-f499-4364-8bdb-230f241dcf0d","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"75551b21-9282-41fa-8c8a-855d0b527fbb","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9619ab69-4168-4599-a598-8c722310ef03","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"842496cb-ff53-4eec-86d6-3c45d2e0a909","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d3655d0c-9269-4162-9ae7-82c547edf674","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"f8425249-5e88-4123-a018-c3eb02073c4a","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"83cbb736-e130-438e-b366-d4834ff26292","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"d04f8de9-a47b-43e0-b589-f03e48d4f5dd","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"84e23289-8dc8-4aeb-b056-57889a5a04a9","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"8e68a1ba-fa7b-4a85-b48d-cdf67b539901","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"c993ff0d-daf9-4950-9c17-252474cc9195","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"794d4fe9-9547-44c3-992c-c3b9734c9cf1","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"2893727a-1872-4e51-b211-59df36bbc651","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"7c381e7f-8d22-4f8b-a9a8-00df7fe13c2e","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"41c086f9-4334-4833-a514-0a6c3194841b","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"4c444757-09fd-40d2-a457-c3a3ff5cc662","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"3b6185db-9a13-4cdc-a4e6-a483cf4d6281","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"60c28ee2-65e2-4896-923e-2ed609102398","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"1b712b1b-6360-41cb-8ff2-e1251fd32421","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"45408932-cb01-462e-9fee-4188d46331b4","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"8973bafa-9ba5-4018-82fe-49369c528c77","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"4c0e2a8c-e36a-43d2-a462-b1f386b96940","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d2df5faf-acdc-4267-9fc3-e2587ea46ffb","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"12a7f51a-f928-49aa-8f69-1261ddf60d83","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"651de5b3-7033-4983-aa29-7308549c5997","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"faf1f5e1-c375-4707-bb11-4ecc614a5126","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9fbc0143-c73b-4d43-9ab1-2b54fdf9dfa0","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"f2a3bc4d-69bd-4b2a-95dc-b8b4095852ec","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"68cedd47-7826-45d0-936a-09d3f0b2514e","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"9b4d9126-b4d4-4c7a-82ce-cce6f63de1b1","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"d327df90-02a8-4278-a2f0-bad7924956ff","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"08e182fb-9797-4ce1-b4bd-d39862c036c0","IsCreationKey":false,"Key":14.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"4dd803df-0824-47d6-a1d9-a4c0b94aa30f","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"7b49830e-1876-4d95-99a2-c9a3f8401044","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"60deee41-cb26-435b-b3dd-7f03e79b3f50","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"ebd5e057-56d6-4239-9544-690c95b076f6","IsCreationKey":false,"Key":16.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"49f66653-48bb-46ca-adb5-39604325a9d1","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"cd22fe67-e516-45a9-96de-b624bf5c6754","IsCreationKey":false,"Key":17.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,
|
||||
|
|