mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 19:38:05 +01:00
outline
This commit is contained in:
parent
d1ac7ecab9
commit
988831e9b9
8 changed files with 128 additions and 69 deletions
|
@ -82,7 +82,7 @@ event_inherited();
|
|||
var _spr = is_instanceof(_val, scrollItem) && _val.spr;
|
||||
|
||||
if(horizon) {
|
||||
if(_val == -1 || i == n - 1) {
|
||||
if(_val == -1) {
|
||||
if(_emp) {
|
||||
array_push(widths, 0);
|
||||
} else {
|
||||
|
@ -107,6 +107,10 @@ event_inherited();
|
|||
lh += hght;
|
||||
}
|
||||
|
||||
array_push(widths, _emp? 0 : lw);
|
||||
ww += lw;
|
||||
hh = max(hh, lh);
|
||||
|
||||
if(horizon) {
|
||||
dialog_w = max(scrollbox.w, ww) + _tpad * 2;
|
||||
dialog_h = min(max_h, sh + hh);
|
||||
|
@ -138,7 +142,7 @@ event_inherited();
|
|||
var _val = data[i];
|
||||
|
||||
if(horizon) {
|
||||
if(_val == -1 || i == n -1) {
|
||||
if(_val == -1) {
|
||||
_lx += _dw;
|
||||
_ly = _y;
|
||||
_col++;
|
||||
|
|
|
@ -59,13 +59,15 @@ function Node_Outline(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
newInput(18, nodeValue_Enum_Scroll("Profile", self, 0, [ "Circle", "Square", "Diamond" ]));
|
||||
|
||||
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
|
||||
|
||||
newOutput(1, nodeValue_Output("Outline", self, VALUE_TYPE.surface, noone));
|
||||
|
||||
input_display_list = [ 11,
|
||||
["Surfaces", true], 0, 9, 10, 13, 14,
|
||||
["Outline", false], 1, 15, 5, 8, 17, 12,
|
||||
["Outline", false], 18, 1, 15, 5, 8, 17, 12,
|
||||
["Render", false], 2, 6,
|
||||
["Blend", true, 3], 4, 16,
|
||||
];
|
||||
|
@ -73,7 +75,7 @@ function Node_Outline(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
attribute_surface_depth();
|
||||
attribute_oversample();
|
||||
|
||||
static step = function() { #region
|
||||
static step = function() {
|
||||
var _wid = getInputData(1);
|
||||
var _side = getInputData(5);
|
||||
|
||||
|
@ -86,9 +88,9 @@ function Node_Outline(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
inputs[8].mappableStep();
|
||||
|
||||
filter_button.index = attributes.filter;
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||
var ww = surface_get_width_safe(_data[0]);
|
||||
var hh = surface_get_height_safe(_data[0]);
|
||||
var cl = _data[2];
|
||||
|
@ -105,6 +107,7 @@ function Node_Outline(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
shader_set_f_map("borderStart", _data[8], _data[17], inputs[8]);
|
||||
shader_set_color("borderColor", cl);
|
||||
|
||||
shader_set_i("profile", _data[18]);
|
||||
shader_set_i("side", side);
|
||||
shader_set_i("highRes", 0);
|
||||
shader_set_i("is_aa", aa);
|
||||
|
@ -122,5 +125,5 @@ function Node_Outline(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
_outSurf = mask_apply(_data[0], _outSurf, _data[9], _data[10]);
|
||||
|
||||
return _outSurf;
|
||||
} #endregion
|
||||
}
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
global.node_shape_keys = [
|
||||
"rectangle", "square", "diamond", "trapezoid", "parallelogram",
|
||||
"rectangle", "square", "diamond", "trapezoid", "parallelogram", "half",
|
||||
"circle", "ellipse", "arc", "donut", "crescent", "ring", "squircle",
|
||||
"regular polygon", "triangle", "pentagon", "hexagon", "star", "cross",
|
||||
"teardrop", "leaf", "heart", "arrow", "gear",
|
||||
"line", "arrow",
|
||||
"teardrop", "leaf", "heart", "gear",
|
||||
];
|
||||
|
||||
function Node_create_Shape(_x, _y, _group = noone, _param = {}) {
|
||||
|
@ -36,7 +37,7 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
newInput(1, nodeValue_Bool("Background", self, false));
|
||||
|
||||
shape_types = [
|
||||
"Rectangle", "Diamond", "Trapezoid", "Parallelogram",
|
||||
"Rectangle", "Diamond", "Trapezoid", "Parallelogram", "Half",
|
||||
-1, "Ellipse", "Arc", "Donut", "Crescent", "Disk Segment", "Pie", "Squircle",
|
||||
-1, "Regular polygon", "Star", "Cross", "Rounded Cross",
|
||||
-1, "Line", "Arrow",
|
||||
|
@ -197,6 +198,10 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
hv = inputs[32].drawOverlay(_int, active, _x, _y, _s, _mx, _my, _snx, _sny); _hov |= hv; _int &= !_hov;
|
||||
hv = inputs[33].drawOverlay(_int, active, _x, _y, _s, _mx, _my, _snx, _sny); _hov |= hv; _int &= !_hov;
|
||||
return _hov;
|
||||
|
||||
case "Half" :
|
||||
hv = inputs[32].drawOverlay(_int, active, _x, _y, _s, _mx, _my, _snx, _sny); _hov |= hv; _int &= !_hov;
|
||||
return _hov;
|
||||
}
|
||||
|
||||
if(_posMode == 0) {
|
||||
|
@ -604,6 +609,13 @@ function Node_Shape(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
shader_set_f("squircle_factor", abs(_data[31]));
|
||||
break;
|
||||
|
||||
case "Half":
|
||||
inputs[32].setVisible(true);
|
||||
|
||||
shader_set_i("shape", 21);
|
||||
shader_set_2("point1", _data[32]);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
shader_set_f("dimension", _dim);
|
||||
|
|
|
@ -5,6 +5,8 @@ varying vec4 v_vColour;
|
|||
|
||||
uniform vec2 dimension;
|
||||
|
||||
uniform int profile;
|
||||
|
||||
uniform vec2 borderStart;
|
||||
uniform int borderStartUseSurf;
|
||||
uniform sampler2D borderStartSurf;
|
||||
|
@ -81,6 +83,34 @@ bool angleFiltered(float angle) {
|
|||
return filter[_ind] == 0;
|
||||
}
|
||||
|
||||
bool isOutline = false;
|
||||
bool closetCollected = false;
|
||||
vec4 closetColor = vec4(0.);
|
||||
float closetDistance = 99999.;
|
||||
|
||||
void checkPixel(vec2 px, vec2 p) {
|
||||
vec2 txs = p / dimension;
|
||||
vec2 pxs = floor(p) + 0.5;
|
||||
if(side == 0 && crop_border == 1 && (txs.x < 0. || txs.x > 1. || txs.y < 0. || txs.y > 1.)) return;
|
||||
|
||||
vec4 sam = sampleTexture( txs );
|
||||
if(side == 0 && sam.a > 0.) return; //inside border, skip if current pixel is filled
|
||||
if(side == 1 && sam.a < 1.) return; //outside border, skip if current pixel is empty
|
||||
|
||||
isOutline = true;
|
||||
|
||||
float dist = 0.;
|
||||
|
||||
if(profile == 0) dist = distance(px, pxs);
|
||||
else if(profile == 1) dist = max(abs(px.x - pxs.x), abs(px.y - pxs.y));
|
||||
else if(profile == 2) dist = abs(px.x - pxs.x) + abs(px.y - pxs.y);
|
||||
|
||||
if(dist < closetDistance) {
|
||||
closetDistance = dist;
|
||||
closetColor = sam;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
#region params
|
||||
float bStr = borderStart.x;
|
||||
|
@ -106,11 +136,7 @@ void main() {
|
|||
vec2 pixelPosition = v_vTexcoord * dimension;
|
||||
vec4 baseColor = texture2D( gm_BaseTexture, v_vTexcoord );
|
||||
vec4 col = outline_only == 0? baseColor : vec4(0.);
|
||||
|
||||
bool isOutline = false;
|
||||
bool closetCollected = false;
|
||||
vec4 closetColor;
|
||||
float closetDistance = 9999.;
|
||||
gl_FragColor = col;
|
||||
|
||||
#region filter out filled ot empty pixel
|
||||
bool isBorder = false;
|
||||
|
@ -125,42 +151,45 @@ void main() {
|
|||
|
||||
if(bSiz + bStr > 0.) {
|
||||
float itr = bStr + bSiz + float(is_aa);
|
||||
float atr = highRes == 1? 256. : 64.;
|
||||
|
||||
for(float i = 1.; i <= itr; i++) {
|
||||
// if(i > bStr + bSiz + float(is_aa)) break;
|
||||
if(profile == 0) {
|
||||
float atr = highRes == 1? 256. : 64.;
|
||||
|
||||
float base = 1.;
|
||||
float top = 0.;
|
||||
for(float j = 0.; j <= atr; j++) {
|
||||
float ang = top / base * TAU;
|
||||
top += 2.;
|
||||
if(top >= base) {
|
||||
top = 1.;
|
||||
base *= 2.;
|
||||
for(float i = 1.; i <= itr; i++) {
|
||||
float base = 1.;
|
||||
float top = 0.;
|
||||
|
||||
for(float j = 0.; j <= atr; j++) {
|
||||
float ang = top / base * TAU;
|
||||
top += 2.;
|
||||
if(top >= base) {
|
||||
top = 1.;
|
||||
base *= 2.;
|
||||
}
|
||||
|
||||
if(angleFiltered(ang)) continue;
|
||||
|
||||
vec2 pxs = pixelPosition + vec2( cos(ang), sin(ang)) * i;
|
||||
checkPixel(pixelPosition, pxs);
|
||||
}
|
||||
|
||||
if(angleFiltered(ang)) continue;
|
||||
vec2 pxs = pixelPosition + vec2( cos(ang), sin(ang)) * i;
|
||||
vec2 txs = pxs / dimension;
|
||||
pxs = floor(pxs) + 0.5;
|
||||
|
||||
if(side == 0 && crop_border == 1 && (txs.x < 0. || txs.x > 1. || txs.y < 0. || txs.y > 1.)) continue;
|
||||
|
||||
vec4 sam = sampleTexture( txs );
|
||||
if(side == 0 && sam.a > 0.) continue; //inside border, skip if current pixel is filled
|
||||
if(side == 1 && sam.a < 1.) continue; //outside border, skip if current pixel is empty
|
||||
|
||||
isOutline = true;
|
||||
|
||||
float dist = distance(pixelPosition, pxs);
|
||||
if(dist < closetDistance) {
|
||||
closetDistance = dist;
|
||||
closetColor = sam;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else if(profile == 1) {
|
||||
for(float i = -itr; i <= itr; i++)
|
||||
for(float j = -itr; j <= itr; j++) {
|
||||
if(i == 0. && j == 0.) continue;
|
||||
checkPixel(pixelPosition, pixelPosition + vec2(j, i));
|
||||
}
|
||||
|
||||
} else if(profile == 2) {
|
||||
for(float i = 1.; i <= itr; i++) {
|
||||
for(float j = 0.; j < itr; j++) { if(j >= i) break; checkPixel(pixelPosition, pixelPosition + vec2( j, i - j)); }
|
||||
for(float j = 0.; j < itr; j++) { if(j >= i) break; checkPixel(pixelPosition, pixelPosition - vec2( j, i - j)); }
|
||||
for(float j = 0.; j < itr; j++) { if(j >= i) break; checkPixel(pixelPosition, pixelPosition + vec2(-j, i - j)); }
|
||||
for(float j = 0.; j < itr; j++) { if(j >= i) break; checkPixel(pixelPosition, pixelPosition - vec2(-j, i - j)); }
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
closetDistance = 0.;
|
||||
|
||||
|
@ -185,13 +214,13 @@ void main() {
|
|||
}
|
||||
}
|
||||
|
||||
gl_FragColor = col;
|
||||
if(!isOutline) return;
|
||||
|
||||
float _aa = 1.;
|
||||
|
||||
if(is_aa == 1) _aa = min(smoothstep(bSiz + bStr + 1., bSiz + bStr, closetDistance), smoothstep(bStr - 1., bStr, closetDistance));
|
||||
else _aa = min(step(-(bSiz + bStr + 0.5), -closetDistance), step(bStr - 0.5, closetDistance));
|
||||
|
||||
if(_aa == 0.) return;
|
||||
|
||||
if(is_blend == 0) col = blendColor(baseColor, borderColor, _aa);
|
||||
|
|
|
@ -404,6 +404,12 @@ float sdArrow( in vec2 p, vec2 a, vec2 b, float w1, float w2, float k ) { // The
|
|||
return si * sqrt(di);
|
||||
}
|
||||
|
||||
float sdHalf(vec2 p, vec2 point, float angle) {
|
||||
p -= point;
|
||||
p = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)) * p;
|
||||
return -p.y;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void main() {
|
||||
|
@ -449,6 +455,7 @@ void main() {
|
|||
else if(shape == 19) { d = pow(pow(abs(coord.x), squircle_factor) + pow(abs(coord.y), squircle_factor), 1. / squircle_factor) - 1.; }
|
||||
else if(shape == 17) { d = sdArrow( v_vTexcoord, p1, p2, thickness, arrow, arrow_head); }
|
||||
else if(shape == 20) { d = sdSegment(v_vTexcoord, p1, p2) - thickness; }
|
||||
else if(shape == 21) { d = sdHalf(v_vTexcoord, p1, -rotation); }
|
||||
|
||||
float cc, color = 0.;
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 376 B |
Binary file not shown.
After Width: | Height: | Size: 376 B |
|
@ -2,10 +2,10 @@
|
|||
"$GMSprite":"",
|
||||
"%Name":"s_node_shape_type",
|
||||
"bboxMode":0,
|
||||
"bbox_bottom":22,
|
||||
"bbox_left":1,
|
||||
"bbox_right":22,
|
||||
"bbox_top":2,
|
||||
"bbox_bottom":23,
|
||||
"bbox_left":0,
|
||||
"bbox_right":23,
|
||||
"bbox_top":0,
|
||||
"collisionKind":1,
|
||||
"collisionTolerance":0,
|
||||
"DynamicTexturePage":false,
|
||||
|
@ -16,6 +16,7 @@
|
|||
{"$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":"9feaa65f-1a89-49fa-93ac-f242274a9aa9","name":"9feaa65f-1a89-49fa-93ac-f242274a9aa9","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",},
|
||||
|
@ -69,7 +70,7 @@
|
|||
},
|
||||
"eventStubScript":null,
|
||||
"eventToFunction":{},
|
||||
"length":21.0,
|
||||
"length":22.0,
|
||||
"lockOrigin":false,
|
||||
"moments":{
|
||||
"$KeyframeStore<MomentsEventKeyframe>":"",
|
||||
|
@ -100,57 +101,60 @@
|
|||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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":"9feaa65f-1a89-49fa-93ac-f242274a9aa9","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"3b00f31e-441e-4f88-9a03-4cbfeeb7fd09","IsCreationKey":false,"Key":4.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"3a442dac-3cd2-4edb-ad51-c2c739494466","IsCreationKey":false,"Key":5.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"21287849-b4cb-4471-b37c-ab656344897d","IsCreationKey":false,"Key":6.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"842496cb-ff53-4eec-86d6-3c45d2e0a909","IsCreationKey":false,"Key":7.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"d04f8de9-a47b-43e0-b589-f03e48d4f5dd","IsCreationKey":false,"Key":8.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"794d4fe9-9547-44c3-992c-c3b9734c9cf1","IsCreationKey":false,"Key":9.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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,},
|
||||
},"Disabled":false,"id":"4c444757-09fd-40d2-a457-c3a3ff5cc662","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"89c97a04-3af5-4197-9771-499813b2fd32","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"a574c8c1-ff17-4631-b4f2-f91557514995","IsCreationKey":false,"Key":10.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"a574c8c1-ff17-4631-b4f2-f91557514995","IsCreationKey":false,"Key":11.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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":11.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"45408932-cb01-462e-9fee-4188d46331b4","IsCreationKey":false,"Key":12.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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":12.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"12a7f51a-f928-49aa-8f69-1261ddf60d83","IsCreationKey":false,"Key":13.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"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":13.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"f2a3bc4d-69bd-4b2a-95dc-b8b4095852ec","IsCreationKey":false,"Key":14.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":14.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"9b4d9126-b4d4-4c7a-82ce-cce6f63de1b1","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"6f6b7c89-ea42-4cfb-bb35-4037443cb1b2","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"f16951f5-5941-4d97-b0ee-db674a17d555","IsCreationKey":false,"Key":15.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"f16951f5-5941-4d97-b0ee-db674a17d555","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":16.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"cd22fe67-e516-45a9-96de-b624bf5c6754","IsCreationKey":false,"Key":17.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":17.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"08e182fb-9797-4ce1-b4bd-d39862c036c0","IsCreationKey":false,"Key":18.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":18.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"7b49830e-1876-4d95-99a2-c9a3f8401044","IsCreationKey":false,"Key":19.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":19.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"ebd5e057-56d6-4239-9544-690c95b076f6","IsCreationKey":false,"Key":20.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"71e478b1-ed0d-4f73-b942-57d5680a935e","path":"sprites/s_node_shape_type/s_node_shape_type.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"e6879ae7-52d0-4dfe-89fe-0ec9d4d53e26","IsCreationKey":false,"Key":20.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
},"Disabled":false,"id":"e6879ae7-52d0-4dfe-89fe-0ec9d4d53e26","IsCreationKey":false,"Key":21.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,
|
||||
|
|
Loading…
Reference in a new issue