repeat animatora

This commit is contained in:
Tanasart 2024-10-03 13:09:27 +07:00
parent d6a15520e2
commit 4e0d0a552f
14 changed files with 110 additions and 121 deletions

View File

@ -136,7 +136,7 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
return [ 0, true, cHov ];
}
draw_text_over(lb_x, lb_y, _name);
draw_text_add(lb_x, lb_y, _name);
#region tooltip
if(jun.tooltip != "") {

View File

@ -11,8 +11,6 @@ enum LIGHT_SHAPE_2D {
function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "2D Light";
light_inspecting = 0;
newInput(0, nodeValue_Surface("Surface in", self));
typeList = [
@ -28,7 +26,7 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
static createNewInput = function() {
var _index = array_length(inputs);
light_inspecting = getInputAmount();
dynamic_input_inspecting = getInputAmount();
var _val = nodeValue_Enum_Scroll("Light shape", self, 0, typeList);
_val.options_histories = [ typeListStr,
@ -91,7 +89,7 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
newInput(_index + 21, nodeValue_Float("Thickness", self, 2));
resetDisplay();
refreshDynamicDisplay();
return inputs[_index];
}
@ -111,7 +109,7 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
var amo = getInputAmount();
var lh = ui(28);
var _h = ui(8) + lh * amo;
var _h = ui(12) + lh * amo;
var yy = _y + bs + ui(4);
var del_light = -1;
@ -120,20 +118,20 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
for(var i = 0; i < amo; i++) {
var _x0 = _x + ui(24);
var _x1 = _x + _w - ui(16);
var _yy = ui(4) + yy + i * lh + lh / 2;
var _yy = ui(6) + yy + i * lh + lh / 2;
var _ind = input_fix_len + i * data_length;
var _typ = current_data[_ind + 0];
var cc = i == light_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var tc = i == light_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var cc = i == dynamic_input_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var tc = i == dynamic_input_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var hov = _hover && point_in_rectangle(_m[0], _m[1], _x0, _yy - lh / 2, _x1, _yy + lh / 2 - 1);
if(hov && _m[0] < _x1 - ui(32)) {
tc = COLORS._main_text;
if(mouse_press(mb_left, _focus)) {
light_inspecting = i;
resetDisplay();
dynamic_input_inspecting = i;
refreshDynamicDisplay();
}
}
@ -152,12 +150,12 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
}
if(del_light > -1)
deleteLight(del_light);
deleteDynamicInput(del_light);
return ui(32) + _h;
});
input_display_light = [ // 14,
input_display_dynamic = [ // 14,
["Shape", false], 0, 1, 5, 6, 7, 8, 15, 16, 17, 20, 21,
["Light", false], 2, 3, 4, 11, 12, 13,
["Render", false], 10, 9, 18, 19,
@ -168,40 +166,16 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
attribute_surface_depth();
temp_surface = [ 0, 0, 0 ];
static resetDisplay = function() {
input_display_list = array_clone(input_display_list_raw);
if(getInputAmount()) light_inspecting = clamp(light_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + light_inspecting * data_length;
for( var i = 0, n = array_length(input_display_light); i < n; i++ ) {
var v = input_display_light[i];
if(is_real(v)) v += _ind;
array_push(input_display_list, v);
}
}
setDynamicInput(22, false);
if(!LOADING && !APPENDING) createNewInput();
static deleteLight = function(index) {
var _ind = input_fix_len + index * data_length;
array_delete(inputs, _ind, data_length);
light_inspecting = clamp(light_inspecting, 0, getInputAmount() - 1);
resetDisplay();
triggerRender();
}
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
PROCESSOR_OVERLAY_CHECK
if(getInputAmount() == 0) return;
light_inspecting = clamp(light_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + light_inspecting * data_length;
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + dynamic_input_inspecting * data_length;
var _shape = current_data[_ind + 0];
var _hov = false;
@ -515,8 +489,8 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
if(getInputAmount() == 0) return;
#region visibility
light_inspecting = clamp(light_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + light_inspecting * data_length;
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + dynamic_input_inspecting * data_length;
var _shape = _data[_ind + 0];
var _attn = _data[_ind + 10];

View File

@ -375,8 +375,10 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
dummy_input = noone;
auto_input = false;
dyna_input_check_shift = 0;
static createNewInput = -1;
dyna_input_check_shift = 0;
input_display_dynamic = [];
dynamic_input_inspecting = 0;
static createNewInput = -1;
static setDynamicInput = function(_data_length = 1, _auto_input = true, _dummy_type = VALUE_TYPE.any, _dynamic_input_cond = DYNA_INPUT_COND.connection) {
is_dynamic_input = true;
@ -449,6 +451,27 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
}
static refreshDynamicDisplay = function() {
array_resize(input_display_list, array_length(input_display_list_raw));
var _amo = getInputAmount();
if(_amo == 0) {
dynamic_input_inspecting = 0;
return;
}
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + dynamic_input_inspecting * data_length;
for( var i = 0, n = array_length(input_display_dynamic); i < n; i++ ) {
var v = input_display_dynamic[i];
if(is_real(v)) v += _ind;
array_push(input_display_list, v);
}
}
static getInputAmount = function() { return (array_length(inputs) - input_fix_len) / data_length; }
function onInputResize() { refreshDynamicInput(); triggerRender(); }
@ -499,6 +522,15 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
return _targ;
}
static deleteDynamicInput = function(index) {
var _ind = input_fix_len + index * data_length;
array_delete(inputs, _ind, data_length);
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
refreshDynamicDisplay();
triggerRender();
}
/////========== INSPECTOR ===========
static onInspector1Update = noone;

View File

@ -20,8 +20,6 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
name = "Repeat";
dimension_index = 1;
animator_inspecting = 0;
newInput(0, nodeValue_Surface("Surface in", self));
newInput(1, nodeValue_Dimension(self));
@ -124,13 +122,13 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone));
typeList = [ "Transform", "Blending" ]
typeList = [ "Transform", "Blending" ];
static createNewInput = function() {
var _index = array_length(inputs);
animator_inspecting = getInputAmount();
dynamic_input_inspecting = getInputAmount();
newInput(_index + 0, nodeValue_Enum_Scroll("Animated property", self, 0, typeList));
newInput(_index + 0, nodeValue_Enum_Scroll("Animator type", self, 0, typeList));
newInput(_index + 1, nodeValue_Enum_Scroll("Select mode", self, 0, [ new scrollItem("Index", s_node_repeat_selection_types, 0),
new scrollItem("Area", s_node_repeat_selection_types, 1),
@ -165,7 +163,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
newInput(_index + 14, nodeValue_Surface("Selection surface", self, noone));
resetDisplay();
refreshDynamicDisplay();
return inputs[_index];
}
@ -181,10 +179,10 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text_sub);
draw_text_add(bx + bx + ui(8), by + bs / 2, "Animators");
var amo = getInputAmount();
var lh = ui(28);
var _h = ui(8) + lh * amo;
var _h = ui(12) + lh * amo;
var yy = _y + bs + ui(4);
var del_animator = -1;
@ -193,21 +191,21 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
for(var i = 0; i < amo; i++) {
var _x0 = _x + ui(24);
var _x1 = _x + _w - ui(16);
var _yy = ui(4) + yy + i * lh + lh / 2;
var _yy = ui(6) + yy + i * lh + lh / 2;
var _ind = input_fix_len + i * data_length;
var _dtyp = current_data[_ind + 0];
var _styp = current_data[_ind + 1];
var cc = i == animator_inspecting? COLORS._main_icon : COLORS._main_icon;
var tc = i == animator_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var cc = i == dynamic_input_inspecting? COLORS._main_icon : COLORS._main_icon;
var tc = i == dynamic_input_inspecting? COLORS._main_text_accent : COLORS._main_icon;
var hov = _hover && point_in_rectangle(_m[0], _m[1], _x0, _yy - lh / 2, _x1, _yy + lh / 2 - 1);
if(hov && _m[0] < _x1 - ui(32)) {
tc = COLORS._main_text;
if(mouse_press(mb_left, _focus)) {
animator_inspecting = i;
resetDisplay();
dynamic_input_inspecting = i;
refreshDynamicDisplay();
}
}
@ -216,22 +214,20 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
draw_set_text(f_p2, fa_left, fa_center, tc);
draw_text_add(_x0 + ui(28), _yy, typeList[_dtyp]);
if(amo > 1) {
var bs = ui(24);
var bx = _x1 - bs;
var by = _yy - bs / 2;
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, "", THEME.minus_16, 0, hov? COLORS._main_value_negative : COLORS._main_icon) == 2)
del_animator = i;
}
var bs = ui(24);
var bx = _x1 - bs;
var by = _yy - bs / 2;
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, _m, _focus, _hover, "", THEME.minus_16, 0, hov? COLORS._main_value_negative : COLORS._main_icon) == 2)
del_animator = i;
}
if(del_animator > -1)
deleteAnimator(del_animator);
deleteDynamicInput(del_animator);
return ui(32) + _h;
});
input_display_animator = [
input_display_dynamic = [
["Selection", false], 1, 9, 10, 11, 12, 13, 14,
["Effects", false], 0, 2, 3, 4, 5, 6, 7, 8,
];
@ -251,30 +247,6 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
setDynamicInput(15, false);
static resetDisplay = function() {
array_resize(input_display_list, array_length(input_display_list_raw));
if(getInputAmount()) animator_inspecting = clamp(animator_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + animator_inspecting * data_length;
for( var i = 0, n = array_length(input_display_animator); i < n; i++ ) {
var v = input_display_animator[i];
if(is_real(v)) v += _ind;
array_push(input_display_list, v);
}
}
static deleteAnimator = function(index) {
var _ind = input_fix_len + index * data_length;
array_delete(inputs, _ind, data_length);
animator_inspecting = clamp(animator_inspecting, 0, getInputAmount() - 1);
resetDisplay();
triggerRender();
}
attribute_surface_depth();
attribute_interpolation();
@ -298,8 +270,8 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
var _ani_amo = getInputAmount();
if(_ani_amo == 0) return _hov;
animator_inspecting = clamp(animator_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + animator_inspecting * data_length;
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + dynamic_input_inspecting * data_length;
var _prop = current_data[_ind + 0];
var _selc = current_data[_ind + 1];
@ -375,8 +347,8 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
var _ani_amo = getInputAmount();
if(_ani_amo > 0) { // animator visibility
animator_inspecting = clamp(animator_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + animator_inspecting * data_length;
dynamic_input_inspecting = clamp(dynamic_input_inspecting, 0, getInputAmount() - 1);
var _ind = input_fix_len + dynamic_input_inspecting * data_length;
var _prop = _data[_ind + 0];
var _selc = _data[_ind + 1];
@ -511,6 +483,9 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
var _x = _a.x;
var _y = _a.y;
var _sw = surface_get_width_safe(_surf);
var _sh = surface_get_height_safe(_surf);
for( var j = 0; j < _ani_amo; j++ ) {
var _ii = input_fix_len + j * data_length;
@ -557,16 +532,6 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
if(_inf == 0) continue;
if(_an_prop == 0) { // transform
if(_an_anct == 0) { // global
_ax = _an_ancp[0];
_ay = _an_ancp[1];
} else if(_an_anct == 1) { // local
var _surf_dim = surface_get_dimension(_surf);
_ax = _x + (_an_ancp[0] - .5) * _surf_dim[0];
_ay = _y + (_an_ancp[1] - .5) * _surf_dim[1];
}
_x += _inf * _an_posi[0];
_y += _inf * _an_posi[1];
@ -575,6 +540,16 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
if(_dr != 0) {
_a.rot += _dr;
if(_an_anct == 0) { // global
_ax = _an_ancp[0];
_ay = _an_ancp[1];
} else if(_an_anct == 1) { // local
_ax = _x + _an_ancp[0] * _sw;
_ay = _y + _an_ancp[1] * _sh;
}
__temp_p = point_rotate(_x, _y, _ax, _ay, _dr, __temp_p);
_x = __temp_p[0];
_y = __temp_p[1];
@ -583,6 +558,16 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
var _dsx = _inf * _an_scal[0];
var _dsy = _inf * _an_scal[1];
if(_dsx != 0 || _dsy != 0) {
if(_an_anct == 0) { // global
_ax = _an_ancp[0];
_ay = _an_ancp[1];
} else if(_an_anct == 1) { // local
_ax = _x + (_an_ancp[0] - .5) * _sw;
_ay = _y + (_an_ancp[1] - .5) * _sh;
}
_a.sx += _inf * _an_scal[0];
_a.sy += _inf * _an_scal[1];
@ -598,8 +583,6 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
}
var _sw = surface_get_width_safe(_surf);
var _sh = surface_get_height_safe(_surf);
var sw = _sw * _a.sx;
var sh = _sh * _a.sy;
var pos = point_rotate(-sw / 2, -sh / 2, 0, 0, rot);

View File

@ -892,17 +892,17 @@ function Panel_Inspector() : PanelContent() constructor {
var _selY = yy;
var lbHov = point_in_rectangle(_m[0], _m[1], lb_x, _selY + ui(2), lb_x + lb_w, _selY + lb_h - ui(4));
if(lbHov) {
contentPane.hover_content = true;
draw_sprite_stretched_ext(THEME.s_box_r2_clr, 0, lb_x, _selY + ui(2), lb_w, lb_h - ui(4), c_white, 1);
}
var widg = drawWidget(ui(16), yy, contentPane.surface_w - ui(24), _m, jun, false, pHOVER && contentPane.hover, pFOCUS, contentPane, ui(16) + x, top_bar_h + y);
var widH = widg[0];
var mbRight = widg[1];
var widHov = widg[2];
var lbHov = point_in_rectangle(_m[0], _m[1], lb_x, _selY + ui(2), lb_x + lb_w, _selY + lb_h - ui(4));
if(lbHov) {
contentPane.hover_content = true;
draw_sprite_stretched_ext(THEME.s_box_r2_clr, 1, lb_x, _selY + ui(2), lb_w, lb_h - ui(4), c_white, 1);
}
if(widHov) contentPane.hover_content = true;
hh += lb_h + widH + padd;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

View File

@ -12,16 +12,16 @@
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"71a60998-4c2f-4f5f-b5af-63b69dce2512","name":"71a60998-4c2f-4f5f-b5af-63b69dce2512","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"000dc648-1068-48f1-be2a-6428a509db2e","name":"000dc648-1068-48f1-be2a-6428a509db2e","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"9a395831-399b-45d2-bebd-6fb20d8d6b79","name":"9a395831-399b-45d2-bebd-6fb20d8d6b79","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"47f9ede3-ec59-4449-a298-5e94c1f2ec31","name":"47f9ede3-ec59-4449-a298-5e94c1f2ec31","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"78e1dedb-e43a-4977-8f58-ee8dd834ef7b","name":"78e1dedb-e43a-4977-8f58-ee8dd834ef7b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
{"$GMSpriteFrame":"","%Name":"afa287d8-5ea4-41ba-a1c1-13a162d6863f","name":"afa287d8-5ea4-41ba-a1c1-13a162d6863f","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":24,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"9c737327-1000-4655-9cc5-d32fb498c866","blendMode":0,"displayName":"default","isLocked":false,"name":"9c737327-1000-4655-9cc5-d32fb498c866","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
{"$GMImageLayer":"","%Name":"258bb6cc-74f5-4558-b6c9-a5ae9b7adf83","blendMode":0,"displayName":"default","isLocked":false,"name":"258bb6cc-74f5-4558-b6c9-a5ae9b7adf83","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_repeat_selection_types",
"nineSlice":null,
@ -71,14 +71,14 @@
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"71a60998-4c2f-4f5f-b5af-63b69dce2512","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"54099991-8e8a-4c97-b0f3-c4c3457fcd4c","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"47f9ede3-ec59-4449-a298-5e94c1f2ec31","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"6a212757-146e-4ae7-a0ae-61b8bbd48074","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"000dc648-1068-48f1-be2a-6428a509db2e","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"ca68b041-6bdb-4460-9e52-5de9768d1186","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"78e1dedb-e43a-4977-8f58-ee8dd834ef7b","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"c5e852b7-6879-47d8-bf8c-0085054447b0","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"9a395831-399b-45d2-bebd-6fb20d8d6b79","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"514189bf-c26d-4bca-9d69-3fe5b164ef0a","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"afa287d8-5ea4-41ba-a1c1-13a162d6863f","path":"sprites/s_node_repeat_selection_types/s_node_repeat_selection_types.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"595b8046-3e01-4803-a359-2f8e680bfc3b","IsCreationKey":false,"Key":2.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,