mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-13 05:53:53 +01:00
- [Animation Panel] Add timeline preview for Canvas, Animation, GIF, and array to anim nodes.
This commit is contained in:
parent
e096f9d87a
commit
b79900fb72
@ -9,7 +9,7 @@
|
|||||||
{"name":"GMD3D11","order":2,"path":"folders/_extensions/GMD3D11.yy",},
|
{"name":"GMD3D11","order":2,"path":"folders/_extensions/GMD3D11.yy",},
|
||||||
{"name":"MAC","order":3,"path":"folders/_extensions/MAC.yy",},
|
{"name":"MAC","order":3,"path":"folders/_extensions/MAC.yy",},
|
||||||
{"name":"patreon","order":4,"path":"folders/_extensions/patreon.yy",},
|
{"name":"patreon","order":4,"path":"folders/_extensions/patreon.yy",},
|
||||||
{"name":"SNAP","order":18,"path":"folders/_extensions/SNAP.yy",},
|
{"name":"SNAP","order":17,"path":"folders/_extensions/SNAP.yy",},
|
||||||
{"name":"XML","order":1,"path":"folders/_extensions/SNAP/XML.yy",},
|
{"name":"XML","order":1,"path":"folders/_extensions/SNAP/XML.yy",},
|
||||||
{"name":"WinMan","order":5,"path":"folders/_extensions/WinMan.yy",},
|
{"name":"WinMan","order":5,"path":"folders/_extensions/WinMan.yy",},
|
||||||
{"name":"camera","order":7,"path":"folders/functions/3d/camera.yy",},
|
{"name":"camera","order":7,"path":"folders/functions/3d/camera.yy",},
|
||||||
@ -193,26 +193,26 @@
|
|||||||
"ResourceOrderSettings":[
|
"ResourceOrderSettings":[
|
||||||
{"name":"ac_disappear","order":2,"path":"animcurves/ac_disappear/ac_disappear.yy",},
|
{"name":"ac_disappear","order":2,"path":"animcurves/ac_disappear/ac_disappear.yy",},
|
||||||
{"name":"ac_ripple","order":1,"path":"animcurves/ac_ripple/ac_ripple.yy",},
|
{"name":"ac_ripple","order":1,"path":"animcurves/ac_ripple/ac_ripple.yy",},
|
||||||
{"name":"Apollo","order":8,"path":"extensions/Apollo/Apollo.yy",},
|
{"name":"Apollo","order":7,"path":"extensions/Apollo/Apollo.yy",},
|
||||||
{"name":"clipboard","order":10,"path":"extensions/clipboard/clipboard.yy",},
|
{"name":"clipboard","order":9,"path":"extensions/clipboard/clipboard.yy",},
|
||||||
{"name":"discordBridge","order":11,"path":"extensions/discordBridge/discordBridge.yy",},
|
{"name":"discordBridge","order":10,"path":"extensions/discordBridge/discordBridge.yy",},
|
||||||
{"name":"display_measure","order":1,"path":"extensions/display_measure/display_measure.yy",},
|
{"name":"display_measure","order":1,"path":"extensions/display_measure/display_measure.yy",},
|
||||||
{"name":"display_screenshot","order":4,"path":"extensions/display_screenshot/display_screenshot.yy",},
|
{"name":"display_screenshot","order":4,"path":"extensions/display_screenshot/display_screenshot.yy",},
|
||||||
{"name":"dllTest","order":19,"path":"extensions/dllTest/dllTest.yy",},
|
{"name":"dllTest","order":18,"path":"extensions/dllTest/dllTest.yy",},
|
||||||
{"name":"file_dropper","order":6,"path":"extensions/file_dropper/file_dropper.yy",},
|
{"name":"file_dropper","order":19,"path":"extensions/file_dropper/file_dropper.yy",},
|
||||||
{"name":"FLIP","order":17,"path":"extensions/FLIP/FLIP.yy",},
|
{"name":"FLIP","order":16,"path":"extensions/FLIP/FLIP.yy",},
|
||||||
{"name":"gameframe_native","order":2,"path":"extensions/gameframe_native/gameframe_native.yy",},
|
{"name":"gameframe_native","order":2,"path":"extensions/gameframe_native/gameframe_native.yy",},
|
||||||
{"name":"GMSSimpleMIDI","order":15,"path":"extensions/GMSSimpleMIDI/GMSSimpleMIDI.yy",},
|
{"name":"GMSSimpleMIDI","order":14,"path":"extensions/GMSSimpleMIDI/GMSSimpleMIDI.yy",},
|
||||||
{"name":"libborderless","order":1,"path":"extensions/libborderless/libborderless.yy",},
|
{"name":"libborderless","order":1,"path":"extensions/libborderless/libborderless.yy",},
|
||||||
{"name":"libdlgmodule","order":13,"path":"extensions/libdlgmodule/libdlgmodule.yy",},
|
{"name":"libdlgmodule","order":12,"path":"extensions/libdlgmodule/libdlgmodule.yy",},
|
||||||
{"name":"libfilesystem","order":12,"path":"extensions/libfilesystem/libfilesystem.yy",},
|
{"name":"libfilesystem","order":11,"path":"extensions/libfilesystem/libfilesystem.yy",},
|
||||||
{"name":"libxprocess","order":7,"path":"extensions/libxprocess/libxprocess.yy",},
|
{"name":"libxprocess","order":6,"path":"extensions/libxprocess/libxprocess.yy",},
|
||||||
{"name":"macMinimize","order":2,"path":"extensions/macMinimize/macMinimize.yy",},
|
{"name":"macMinimize","order":2,"path":"extensions/macMinimize/macMinimize.yy",},
|
||||||
{"name":"patreon_key","order":1,"path":"extensions/patreon_key/patreon_key.yy",},
|
{"name":"patreon_key","order":1,"path":"extensions/patreon_key/patreon_key.yy",},
|
||||||
{"name":"Regex","order":9,"path":"extensions/Regex/Regex.yy",},
|
{"name":"Regex","order":8,"path":"extensions/Regex/Regex.yy",},
|
||||||
{"name":"Spout","order":14,"path":"extensions/Spout/Spout.yy",},
|
{"name":"Spout","order":13,"path":"extensions/Spout/Spout.yy",},
|
||||||
{"name":"Steamworks","order":2,"path":"extensions/Steamworks/Steamworks.yy",},
|
{"name":"Steamworks","order":2,"path":"extensions/Steamworks/Steamworks.yy",},
|
||||||
{"name":"TabletStuff","order":16,"path":"extensions/TabletStuff/TabletStuff.yy",},
|
{"name":"TabletStuff","order":15,"path":"extensions/TabletStuff/TabletStuff.yy",},
|
||||||
{"name":"YYFirebaseFirestore","order":1,"path":"extensions/YYFirebaseFirestore/YYFirebaseFirestore.yy",},
|
{"name":"YYFirebaseFirestore","order":1,"path":"extensions/YYFirebaseFirestore/YYFirebaseFirestore.yy",},
|
||||||
{"name":"_f_code","order":9,"path":"fonts/_f_code/_f_code.yy",},
|
{"name":"_f_code","order":9,"path":"fonts/_f_code/_f_code.yy",},
|
||||||
{"name":"_f_h1","order":11,"path":"fonts/_f_h1/_f_h1.yy",},
|
{"name":"_f_h1","order":11,"path":"fonts/_f_h1/_f_h1.yy",},
|
||||||
|
Binary file not shown.
@ -191,13 +191,15 @@ event_inherited();
|
|||||||
|
|
||||||
var spr = _project.getSpr();
|
var spr = _project.getSpr();
|
||||||
if(spr) {
|
if(spr) {
|
||||||
var gw = grid_width - ui(8);
|
var gw = grid_width - ui(4);
|
||||||
var gh = grid_heigh - ui(8);
|
var gh = grid_heigh - ui(4);
|
||||||
|
// print($"{gw}, {gh}");
|
||||||
|
|
||||||
var sw = sprite_get_width(spr);
|
var sw = sprite_get_width(spr);
|
||||||
var sh = sprite_get_height(spr);
|
var sh = sprite_get_height(spr);
|
||||||
|
|
||||||
var s = min(gw / sw, gh / sh);
|
var s = min(gw / sw, gh / sh);
|
||||||
|
if(abs(s - 1) < 0.1) s = 1;
|
||||||
|
|
||||||
var ox = (sprite_get_xoffset(spr) - sw / 2) * s;
|
var ox = (sprite_get_xoffset(spr) - sw / 2) * s;
|
||||||
var oy = (sprite_get_yoffset(spr) - sh / 2) * s;
|
var oy = (sprite_get_yoffset(spr) - sh / 2) * s;
|
||||||
|
@ -24,11 +24,12 @@ function __Node_Base(x, y) constructor {
|
|||||||
#region ---- timeline ----
|
#region ---- timeline ----
|
||||||
timeline_item = new timelineItemNode(self);
|
timeline_item = new timelineItemNode(self);
|
||||||
anim_priority = 0;
|
anim_priority = 0;
|
||||||
|
anim_timeline = false;
|
||||||
is_anim_timeline = false;
|
is_anim_timeline = false;
|
||||||
|
|
||||||
static refreshTimeline = function() { #region
|
static refreshTimeline = function() {
|
||||||
var _pre_anim = is_anim_timeline;
|
var _pre_anim = is_anim_timeline;
|
||||||
var _cur_anim = false;
|
var _cur_anim = anim_timeline;
|
||||||
|
|
||||||
for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) {
|
for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) {
|
||||||
var _inp = inputs[| i];
|
var _inp = inputs[| i];
|
||||||
@ -37,15 +38,25 @@ function __Node_Base(x, y) constructor {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_pre_anim && !_cur_anim)
|
|
||||||
timeline_item.removeSelf();
|
|
||||||
else if(!_pre_anim && _cur_anim)
|
|
||||||
PROJECT.timelines.addItem(timeline_item);
|
|
||||||
|
|
||||||
is_anim_timeline = _cur_anim;
|
is_anim_timeline = _cur_anim;
|
||||||
} #endregion
|
if(_pre_anim == _cur_anim) return;
|
||||||
|
|
||||||
|
if(_cur_anim) PROJECT.timelines.addItem(timeline_item);
|
||||||
|
else timeline_item.removeSelf();
|
||||||
|
}
|
||||||
|
|
||||||
|
static setAlwaysTimeline = function(item = timeline_item) {
|
||||||
|
attributes.show_timeline = true;
|
||||||
|
array_push(attributeEditors, [ "Show In Timeline", function() { return attributes.show_timeline; }, new checkBox(function() {
|
||||||
|
attributes.show_timeline = !attributes.show_timeline;
|
||||||
|
anim_timeline = attributes.show_timeline;
|
||||||
|
refreshTimeline();
|
||||||
|
}) ]);
|
||||||
|
|
||||||
|
timeline_item = item;
|
||||||
|
anim_timeline = true;
|
||||||
|
refreshTimeline();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
static step = function() {}
|
static step = function() {}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Canvas";
|
name = "Canvas";
|
||||||
color = COLORS.node_blend_canvas;
|
color = COLORS.node_blend_canvas;
|
||||||
|
setAlwaysTimeline(new timelineItemNode_Canvas(self));
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF )
|
inputs[| 0] = nodeValue("Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF )
|
||||||
.setDisplay(VALUE_DISPLAY.vector);
|
.setDisplay(VALUE_DISPLAY.vector);
|
||||||
@ -1096,4 +1097,42 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
function timelineItemNode_Canvas(node) : timelineItemNode(node) constructor {
|
||||||
|
|
||||||
|
static drawDopesheet = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Canvas)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
var _surfs = node.output_surface;
|
||||||
|
var _surf, _rx, _ry;
|
||||||
|
|
||||||
|
for (var i = 0, n = array_length(_surfs); i < n; i++) {
|
||||||
|
_surf = _surfs[i];
|
||||||
|
if(!surface_exists(_surf)) continue;
|
||||||
|
|
||||||
|
_rx = _x + (i + 1) * _s;
|
||||||
|
_ry = h / 2 + _y;
|
||||||
|
|
||||||
|
var _sw = surface_get_width_safe(_surf);
|
||||||
|
var _sh = surface_get_height_safe(_surf);
|
||||||
|
var _ss = h / max(_sw, _sh);
|
||||||
|
|
||||||
|
draw_surface_ext(_surf, _rx - _sw * _ss / 2, _ry - _sh * _ss / 2, _ss, _ss, 0, c_white, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static drawDopesheetOver = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Canvas)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
drawDopesheetOutput(_x, _y, _s, _msx, _msy);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onSerialize = function(_map) {
|
||||||
|
_map.type = "timelineItemNode_Canvas";
|
||||||
|
}
|
||||||
}
|
}
|
@ -2047,6 +2047,8 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
|||||||
|
|
||||||
triggerRender();
|
triggerRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(anim_timeline && attributes.show_timeline) refreshTimeline();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static inputBalance = function() { #region //Cross version compatibility for dynamic input nodes
|
static inputBalance = function() { #region //Cross version compatibility for dynamic input nodes
|
||||||
|
@ -34,6 +34,7 @@ function Node_Image_Animated(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
|||||||
name = "Animation";
|
name = "Animation";
|
||||||
spr = [];
|
spr = [];
|
||||||
color = COLORS.node_blend_input;
|
color = COLORS.node_blend_input;
|
||||||
|
setAlwaysTimeline(new timelineItemNode_Image_Animated(self));
|
||||||
|
|
||||||
update_on_frame = true;
|
update_on_frame = true;
|
||||||
|
|
||||||
@ -251,4 +252,42 @@ function Node_Image_Animated(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
|||||||
if(_drw) draw_sprite(spr[_frame], 0, curr_x, curr_y);
|
if(_drw) draw_sprite(spr[_frame], 0, curr_x, curr_y);
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
function timelineItemNode_Image_Animated(node) : timelineItemNode(node) constructor {
|
||||||
|
|
||||||
|
static drawDopesheet = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Image_Animated)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
var _sprs = node.spr;
|
||||||
|
var _spr, _rx, _ry;
|
||||||
|
|
||||||
|
for (var i = 0, n = array_length(_sprs); i < n; i++) {
|
||||||
|
_spr = _sprs[i];
|
||||||
|
if(!sprite_exists(_spr)) continue;
|
||||||
|
|
||||||
|
_rx = _x + (i + 1) * _s;
|
||||||
|
_ry = h / 2 + _y;
|
||||||
|
|
||||||
|
var _sw = sprite_get_width(_spr);
|
||||||
|
var _sh = sprite_get_height(_spr);
|
||||||
|
var _ss = h / max(_sw, _sh);
|
||||||
|
|
||||||
|
draw_sprite_ext(_spr, 0, _rx - _sw * _ss / 2, _ry - _sh * _ss / 2, _ss, _ss, 0, c_white, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static drawDopesheetOver = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Image_Animated)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
drawDopesheetOutput(_x, _y, _s, _msx, _msy);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onSerialize = function(_map) {
|
||||||
|
_map.type = "timelineItemNode_Image_Animated";
|
||||||
|
}
|
||||||
}
|
}
|
@ -27,6 +27,7 @@ function Node_Image_gif(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||||||
name = "Image GIF";
|
name = "Image GIF";
|
||||||
color = COLORS.node_blend_input;
|
color = COLORS.node_blend_input;
|
||||||
update_on_frame = true;
|
update_on_frame = true;
|
||||||
|
setAlwaysTimeline(new timelineItemNode_Image_gif(self));
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
|
inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
|
||||||
.setDisplay(VALUE_DISPLAY.path_load, { filter: "Animated gif|*.gif" });
|
.setDisplay(VALUE_DISPLAY.path_load, { filter: "Animated gif|*.gif" });
|
||||||
@ -231,4 +232,40 @@ function Node_Image_gif(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
|||||||
static onDestroy = function() { #region
|
static onDestroy = function() { #region
|
||||||
if(sprite_exists(spr)) sprite_flush(spr);
|
if(sprite_exists(spr)) sprite_flush(spr);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
function timelineItemNode_Image_gif(node) : timelineItemNode(node) constructor {
|
||||||
|
|
||||||
|
static drawDopesheet = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Image_gif)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
var _spr = node.spr;
|
||||||
|
if(!sprite_exists(_spr)) return;
|
||||||
|
|
||||||
|
var _rx, _ry;
|
||||||
|
var _sw = sprite_get_width(_spr);
|
||||||
|
var _sh = sprite_get_height(_spr);
|
||||||
|
var _ss = h / max(_sw, _sh);
|
||||||
|
|
||||||
|
for (var i = 0, n = sprite_get_number(_spr); i < n; i++) {
|
||||||
|
_rx = _x + (i + 1) * _s;
|
||||||
|
_ry = h / 2 + _y;
|
||||||
|
|
||||||
|
draw_sprite_ext(_spr, i, _rx - _sw * _ss / 2, _ry - _sh * _ss / 2, _ss, _ss, 0, c_white, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static drawDopesheetOver = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Image_gif)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
drawDopesheetOutput(_x, _y, _s, _msx, _msy);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onSerialize = function(_map) {
|
||||||
|
_map.type = "timelineItemNode_Image_gif";
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
function Node_Sequence_Anim(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Sequence_Anim(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Array to Anim";
|
name = "Array to Anim";
|
||||||
update_on_frame = true;
|
update_on_frame = true;
|
||||||
|
setAlwaysTimeline(new timelineItemNode_Sequence_Anim(self));
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, [])
|
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, [])
|
||||||
.setArrayDepth(1);
|
.setArrayDepth(1);
|
||||||
@ -31,24 +32,27 @@ function Node_Sequence_Anim(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||||||
_ord[i] = i;
|
_ord[i] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, _x, _y, _w, _h, COLORS.node_composite_bg_blend, 1);
|
||||||
|
|
||||||
if(_hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h) && inputs[| 2].value_from == noone) {
|
if(_hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h) && inputs[| 2].value_from == noone) {
|
||||||
draw_sprite_stretched(THEME.button_def, mouse_click(mb_left, _focus)? 2 : 1, _x, _y, _w, _h);
|
draw_sprite_stretched_add(THEME.ui_panel_fg, 1, _x, _y, _w, _h, c_white, 0.2);
|
||||||
|
|
||||||
if(mouse_press(mb_left, _focus))
|
if(mouse_press(mb_left, _focus))
|
||||||
dialogPanelCall(new Panel_Array_Sequence(self));
|
dialogPanelCall(new Panel_Array_Sequence(self));
|
||||||
} else
|
}
|
||||||
draw_sprite_stretched(THEME.button_def, 0, _x, _y, _w, _h);
|
|
||||||
|
|
||||||
var x0 = _x + ui(4);
|
var pd = ui(2);
|
||||||
var y0 = _y + ui(4);
|
var x0 = _x + pd;
|
||||||
var x1 = _x + _w - ui(4 + 32);
|
var y0 = _y + pd;
|
||||||
var y1 = _y + _h - ui(4);
|
var x1 = _x + _w - pd - ui(32);
|
||||||
|
var y1 = _y + _h - pd;
|
||||||
var sw = x1 - x0;
|
var sw = x1 - x0;
|
||||||
var sh = y1 - y0;
|
var sh = y1 - y0;
|
||||||
var nn = sh;
|
var nn = sh;
|
||||||
|
|
||||||
draw_sprite_stretched(THEME.ui_panel_bg, 1, x0, y0, sw, sh);
|
// draw_sprite_stretched(THEME.ui_panel_bg, 1, x0, y0, sw, sh);
|
||||||
|
|
||||||
sequence_surface = surface_verify(sequence_surface, sw, sh - ui(8));
|
sequence_surface = surface_verify(sequence_surface, sw, sh - pd * 2);
|
||||||
surface_set_target(sequence_surface);
|
surface_set_target(sequence_surface);
|
||||||
DRAW_CLEAR
|
DRAW_CLEAR
|
||||||
for( var i = 0, n = array_length(_ord); i < n; i++ ) {
|
for( var i = 0, n = array_length(_ord); i < n; i++ ) {
|
||||||
@ -62,19 +66,15 @@ function Node_Sequence_Anim(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||||||
|
|
||||||
var _sw = surface_get_width_safe(s);
|
var _sw = surface_get_width_safe(s);
|
||||||
var _sh = surface_get_height_safe(s);
|
var _sh = surface_get_height_safe(s);
|
||||||
var _ss = (nn - ui(4)) / max(_sw, _sh);
|
var _ss = nn / max(_sw, _sh);
|
||||||
var _sx = xx + nn / 2 - _sw * _ss / 2;
|
var _sx = xx + nn / 2 - _sw * _ss / 2;
|
||||||
var _sy = nn / 2 - _sh * _ss / 2;
|
var _sy = nn / 2 - _sh * _ss / 2;
|
||||||
|
|
||||||
draw_surface_ext_safe(s, _sx, _sy, _ss, _ss);
|
draw_surface_ext_safe(s, _sx, _sy, _ss, _ss);
|
||||||
|
|
||||||
//draw_set_color(COLORS.panel_toolbar_outline);
|
|
||||||
//draw_rectangle(xx, 0, xx + nn, nn, true);
|
|
||||||
}
|
}
|
||||||
surface_reset_target();
|
surface_reset_target();
|
||||||
|
|
||||||
draw_surface_safe(sequence_surface, x0, y0 + ui(4));
|
draw_surface_safe(sequence_surface, x0, y0 + pd);
|
||||||
|
|
||||||
draw_sprite_ui(THEME.gear, 0, x1 + ui(16), _y + _h / 2,,,, COLORS._main_icon);
|
draw_sprite_ui(THEME.gear, 0, x1 + ui(16), _y + _h / 2,,,, COLORS._main_icon);
|
||||||
|
|
||||||
return _h;
|
return _h;
|
||||||
@ -127,4 +127,50 @@ function Node_Sequence_Anim(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||||||
|
|
||||||
outputs[| 0].setValue(array_safe_get_fast(_sur, ind));
|
outputs[| 0].setValue(array_safe_get_fast(_sur, ind));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function timelineItemNode_Sequence_Anim(node) : timelineItemNode(node) constructor {
|
||||||
|
|
||||||
|
static drawDopesheet = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Sequence_Anim)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
var _surfs = node.getInputData(0);
|
||||||
|
var _seq = node.getInputData(2);
|
||||||
|
var _useq = !array_empty(_seq);
|
||||||
|
var _arr = _useq? _seq : _surfs;
|
||||||
|
var _surf, _rx;
|
||||||
|
|
||||||
|
var _h = h - 2;
|
||||||
|
var _ry = h / 2 + _y;
|
||||||
|
|
||||||
|
for (var i = 0, n = array_length(_arr); i < n; i++) {
|
||||||
|
_surf = _arr[i];
|
||||||
|
if(_useq) {
|
||||||
|
if(_surf < 0) continue;
|
||||||
|
_surf = _surfs[_surf];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!surface_exists(_surf)) continue;
|
||||||
|
|
||||||
|
_rx = _x + (i + 1) * _s;
|
||||||
|
|
||||||
|
var _sw = surface_get_width_safe(_surf);
|
||||||
|
var _sh = surface_get_height_safe(_surf);
|
||||||
|
var _ss = _h / max(_sw, _sh);
|
||||||
|
|
||||||
|
draw_surface_ext(_surf, _rx - _sw * _ss / 2, _ry - _sh * _ss / 2, _ss, _ss, 0, c_white, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static drawDopesheetOver = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
if(!is_instanceof(node, Node_Sequence_Anim)) return;
|
||||||
|
if(!node.attributes.show_timeline) return;
|
||||||
|
|
||||||
|
drawDopesheetOutput(_x, _y, _s, _msx, _msy);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onSerialize = function(_map) {
|
||||||
|
_map.type = "timelineItemNode_Sequence_Anim";
|
||||||
|
}
|
||||||
}
|
}
|
@ -652,7 +652,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
var cc = PROJECT.animator.is_playing? COLORS._main_value_positive : COLORS._main_accent;
|
var cc = PROJECT.animator.is_playing? COLORS._main_value_positive : COLORS._main_accent;
|
||||||
draw_set_color(cc);
|
draw_set_color(cc);
|
||||||
draw_line(bar_line_x, ui(15), bar_line_x, bar_h - PANEL_PAD);
|
draw_line(bar_line_x, ui(15), bar_line_x, bar_h - PANEL_PAD);
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_center, fa_bottom, cc);
|
draw_set_text(f_p2, fa_center, fa_bottom, cc);
|
||||||
draw_text_add(bar_line_x, ui(16), string(CURRENT_FRAME + 1));
|
draw_text_add(bar_line_x, ui(16), string(CURRENT_FRAME + 1));
|
||||||
#endregion
|
#endregion
|
||||||
@ -1618,7 +1618,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
surface_set_target(dope_sheet_surface);
|
surface_set_target(dope_sheet_surface);
|
||||||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
||||||
var msx = mx - bar_x;
|
var msx = mx - bar_x;
|
||||||
var msy = my - ui(8);
|
var msy = my - ui(8);
|
||||||
|
|
||||||
@ -1630,11 +1630,13 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
|
|
||||||
dope_sheet_y_max = 0;
|
dope_sheet_y_max = 0;
|
||||||
var key_y = ui(22) + dope_sheet_y;
|
var key_y = ui(22) + dope_sheet_y;
|
||||||
|
var c0, c1;
|
||||||
|
|
||||||
for( var i = 0, n = array_length(timeline_contents); i < n; i++ ) {
|
for( var i = 0, n = array_length(timeline_contents); i < n; i++ ) {
|
||||||
var _cont = timeline_contents[i];
|
var _cont = timeline_contents[i];
|
||||||
_cont.y = key_y;
|
_cont.y = key_y;
|
||||||
_cont.h = 0;
|
_cont.h = 0;
|
||||||
|
_cont.item.drawDopesheet(timeline_shift, _cont.y, timeline_scale, msx, msy);
|
||||||
|
|
||||||
if(!_cont.show)
|
if(!_cont.show)
|
||||||
continue;
|
continue;
|
||||||
@ -1650,8 +1652,11 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(_cont.item.color_cur > -1) {
|
if(_cont.item.color_cur > -1) {
|
||||||
var c0 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
c0 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg);
|
||||||
var c1 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg_hover);
|
c1 = colorMultiply(_cont.item.color_cur, COLORS.panel_animation_dope_key_bg_hover);
|
||||||
|
} else {
|
||||||
|
c0 = COLORS.panel_animation_dope_key_bg;
|
||||||
|
c1 = COLORS.panel_animation_dope_key_bg_hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
key_y += ui(20) * show_nodes + _expand * ui(10);
|
key_y += ui(20) * show_nodes + _expand * ui(10);
|
||||||
@ -1671,8 +1676,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
draw_set_color(c0);
|
draw_set_color(c0);
|
||||||
draw_rectangle(0, key_y - ui(10), bar_show_w, key_y + ui(10), false);
|
draw_rectangle(0, key_y - ui(10), bar_show_w, key_y + ui(10), false);
|
||||||
|
|
||||||
if(_prop == value_focusing) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(8), bar_show_w, ui(16), c1, 1);
|
if(_prop == value_focusing) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(8), bar_show_w, ui(16), c1);
|
||||||
//else if(_prop == value_hovering) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(2), bar_show_w, ui( 4), c1, 1);
|
else if(_prop == value_hovering) draw_sprite_stretched_ext(THEME.menu_button_mask, 0, 0, key_y - ui(8), bar_show_w, ui(16), c1, .9);
|
||||||
}
|
}
|
||||||
|
|
||||||
key_y += ui(18);
|
key_y += ui(18);
|
||||||
@ -1842,8 +1847,6 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
if(!_cont.show) continue;
|
if(!_cont.show) continue;
|
||||||
if(_cont.type != "node") continue;
|
if(_cont.type != "node") continue;
|
||||||
|
|
||||||
var _node = _cont.node;
|
|
||||||
|
|
||||||
if(_cont.item.show)
|
if(_cont.item.show)
|
||||||
for( var j = 0, m = array_length(_cont.props); j < m; j++ ) {
|
for( var j = 0, m = array_length(_cont.props); j < m; j++ ) {
|
||||||
var prop = _cont.props[j];
|
var prop = _cont.props[j];
|
||||||
@ -1873,11 +1876,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
#region ======= draw keys =======
|
#region ======= draw keys =======
|
||||||
for( var i = 0, n = array_length(timeline_contents); i < n; i++ ) {
|
for( var i = 0, n = array_length(timeline_contents); i < n; i++ ) {
|
||||||
var _cont = timeline_contents[i];
|
var _cont = timeline_contents[i];
|
||||||
|
|
||||||
if(_cont.type != "node") continue;
|
if(_cont.type != "node") continue;
|
||||||
|
|
||||||
var _node = _cont.node;
|
|
||||||
|
|
||||||
for( var j = 0, m = array_length(_cont.animators); j < m; j++ ) {
|
for( var j = 0, m = array_length(_cont.animators); j < m; j++ ) {
|
||||||
var _anim = _cont.animators[j];
|
var _anim = _cont.animators[j];
|
||||||
|
|
||||||
@ -1950,8 +1950,8 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
draw_set_color(COLORS.panel_animation_frame_divider);
|
draw_set_color(COLORS.panel_animation_frame_divider);
|
||||||
draw_line(bar_line_x, 0, bar_line_x, hh);
|
draw_line(bar_line_x, 0, bar_line_x, hh);
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_sub);
|
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text_sub);
|
||||||
draw_text_add(bar_line_x - ui(2), PANEL_PAD, i);
|
draw_text_add(bar_line_x, PANEL_PAD, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_set_alpha(1);
|
draw_set_alpha(1);
|
||||||
@ -2027,14 +2027,19 @@ function Panel_Animation() : PanelContent() constructor {
|
|||||||
|
|
||||||
var cf = string(CURRENT_FRAME + 1);
|
var cf = string(CURRENT_FRAME + 1);
|
||||||
var tx = string_width(cf) + ui(4);
|
var tx = string_width(cf) + ui(4);
|
||||||
draw_rectangle(bar_line_x - tx, PANEL_PAD, bar_line_x, hh, false);
|
draw_rectangle(bar_line_x - tx / 2, PANEL_PAD, bar_line_x + tx / 2, hh, false);
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_right, fa_top, COLORS._main_text_on_accent);
|
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text_on_accent);
|
||||||
draw_text_add(bar_line_x - ui(2), PANEL_PAD, cf);
|
draw_text_add(bar_line_x, PANEL_PAD, cf);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(timeline_contents); i < n; i++ ) {
|
||||||
|
var _cont = timeline_contents[i];
|
||||||
|
_cont.item.drawDopesheetOver(timeline_shift, _cont.y, timeline_scale, msx, msy);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region stretch
|
#region stretch
|
||||||
var stx = timeline_shift + bar_total_w + ui(16);
|
var stx = timeline_shift + bar_total_w + ui(24);
|
||||||
var sty = ui(10);
|
var sty = ui(10);
|
||||||
|
|
||||||
if(timeline_stretch == 1) {
|
if(timeline_stretch == 1) {
|
||||||
|
@ -84,7 +84,7 @@ function Panel_Array_Sequence(node) : PanelContent() constructor {
|
|||||||
surface_set_target(sequence_surface);
|
surface_set_target(sequence_surface);
|
||||||
DRAW_CLEAR
|
DRAW_CLEAR
|
||||||
|
|
||||||
draw_sprite_stretched(THEME.ui_panel_bg, 1, sequence_x, 0, len * _ns, ph);
|
draw_sprite_stretched_ext(THEME.ui_panel_bg, 1, sequence_x, 0, len * _ns, ph, COLORS._main_icon_light);
|
||||||
|
|
||||||
var ax = sequence_x + len * _ns + ui(12);
|
var ax = sequence_x + len * _ns + ui(12);
|
||||||
var ay = ui(24) + _ns / 2;
|
var ay = ui(24) + _ns / 2;
|
||||||
@ -101,7 +101,7 @@ function Panel_Array_Sequence(node) : PanelContent() constructor {
|
|||||||
|
|
||||||
draw_set_color(COLORS._main_text_sub);
|
draw_set_color(COLORS._main_text_sub);
|
||||||
draw_set_alpha(0.5);
|
draw_set_alpha(0.5);
|
||||||
draw_line(_sx, ui(24), _sx, ph);
|
draw_line(_sx, ui(24), _sx, ph - ui(2));
|
||||||
draw_set_alpha(1);
|
draw_set_alpha(1);
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text_sub);
|
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text_sub);
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
function timelineItem() constructor {
|
function timelineItem() constructor {
|
||||||
|
h = ui(20);
|
||||||
|
|
||||||
show = true;
|
show = true;
|
||||||
active = true;
|
active = true;
|
||||||
|
|
||||||
@ -10,31 +12,39 @@ function timelineItem() constructor {
|
|||||||
static setColor = function(color) { self.color = color; }
|
static setColor = function(color) { self.color = color; }
|
||||||
static getColor = function() { return color; }
|
static getColor = function() { return color; }
|
||||||
|
|
||||||
static drawLabel = function(_x, _y, _w, _msx, _msy) {}
|
static drawLabel = function(_x, _y, _w, _msx, _msy) {}
|
||||||
|
static drawDopesheet = function(_x, _y, _s, _msx, _msy) {}
|
||||||
|
static drawDopesheetOver = function(_x, _y, _s, _msx, _msy) {}
|
||||||
|
|
||||||
static removeSelf = function() { #region
|
static removeSelf = function() {
|
||||||
if(parent == noone) return;
|
if(parent == noone) return;
|
||||||
array_remove(parent.contents, self);
|
array_remove(parent.contents, self);
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static serialize = function() {}
|
static serialize = function() {}
|
||||||
|
|
||||||
static deserialize = function(_map) { #region
|
static deserialize = function(_map) {
|
||||||
|
|
||||||
switch(_map.type) {
|
switch(_map.type) {
|
||||||
|
case "Folder" : return new timelineItemGroup().deserialize(_map);
|
||||||
case "Node" : return new timelineItemNode(noone).deserialize(_map);
|
case "Node" : return new timelineItemNode(noone).deserialize(_map);
|
||||||
case "Folder" : return new timelineItemGroup(noone).deserialize(_map);
|
|
||||||
|
case "timelineItemNode_Canvas" : return new timelineItemNode_Canvas(noone).deserialize(_map);
|
||||||
|
case "timelineItemNode_Image_Animated" : return new timelineItemNode_Image_Animated(noone).deserialize(_map);
|
||||||
|
case "timelineItemNode_Sequence_Anim" : return new timelineItemNode_Sequence_Anim(noone).deserialize(_map);
|
||||||
|
case "timelineItemNode_Image_gif" : return new timelineItemNode_Image_gif(noone).deserialize(_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function timelineItemNode(node) : timelineItem() constructor {
|
function timelineItemNode(node) : timelineItem() constructor {
|
||||||
self.node = node;
|
self.node = node;
|
||||||
|
|
||||||
static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) { #region
|
static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) {
|
||||||
var _sel = node == PANEL_INSPECTOR.getInspecting();
|
var _sel = node == PANEL_INSPECTOR.getInspecting();
|
||||||
|
|
||||||
var lx = _x + _item.depth * ui(12) + ui(2);
|
var lx = _x + _item.depth * ui(12) + ui(2);
|
||||||
@ -99,22 +109,43 @@ function timelineItemNode(node) : timelineItem() constructor {
|
|||||||
draw_text_add(txx, _y + lh / 2 - ui(2), node.display_name);
|
draw_text_add(txx, _y + lh / 2 - ui(2), node.display_name);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
|
static drawDopesheetOutput = function(_x, _y, _s, _msx, _msy) {
|
||||||
|
var _surf = node.outputs[| 0].getValue();
|
||||||
|
if(!is_surface(_surf)) return;
|
||||||
|
|
||||||
|
var _h = h - 2;
|
||||||
|
var _rx = _x + (CURRENT_FRAME + 1) * _s;
|
||||||
|
var _ry = h / 2 + _y;
|
||||||
|
|
||||||
|
var _sw = surface_get_width_safe(_surf);
|
||||||
|
var _sh = surface_get_height_safe(_surf);
|
||||||
|
var _ss = _h / max(_sw, _sh);
|
||||||
|
|
||||||
|
// draw_sprite_stretched_ext(THEME.menu_button_mask, 0, _rx - h / 2, _ry - h / 2, h, h, CDEF.main_dkblack);
|
||||||
|
draw_surface_ext(_surf, _rx - _sw * _ss / 2, _ry - _sh * _ss / 2, _ss, _ss, 0, c_white, 1);
|
||||||
|
|
||||||
|
// draw_sprite_stretched_ext(THEME.menu_button_mask, 1, _rx - h / 2, _ry - h / 2, h, h, CDEF.main_dkgrey);
|
||||||
|
}
|
||||||
|
|
||||||
static setColor = function(color) { node.attributes.color = color; }
|
static setColor = function(color) { node.attributes.color = color; }
|
||||||
static getColor = function() { return node.attributes.color; }
|
static getColor = function() { return node.attributes.color; }
|
||||||
|
|
||||||
static serialize = function() { #region
|
static onSerialize = function(_map) {}
|
||||||
|
static serialize = function() {
|
||||||
var _map = {};
|
var _map = {};
|
||||||
|
|
||||||
_map.type = "Node";
|
_map.type = "Node";
|
||||||
_map.show = show;
|
_map.show = show;
|
||||||
_map.node_id = is_struct(node)? node.node_id : -4;
|
_map.node_id = is_struct(node)? node.node_id : -4;
|
||||||
|
onSerialize(_map);
|
||||||
|
|
||||||
return _map;
|
return _map;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static deserialize = function(_map) { #region
|
static onDeserialize = function(_map) {}
|
||||||
|
static deserialize = function(_map) {
|
||||||
show = struct_try_get(_map, "show", true);
|
show = struct_try_get(_map, "show", true);
|
||||||
|
|
||||||
var _node_id = _map.node_id;
|
var _node_id = _map.node_id;
|
||||||
@ -126,8 +157,9 @@ function timelineItemNode(node) : timelineItem() constructor {
|
|||||||
node.timeline_item = self;
|
node.timeline_item = self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDeserialize(_map);
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function timelineItemGroup() : timelineItem() constructor {
|
function timelineItemGroup() : timelineItem() constructor {
|
||||||
@ -145,7 +177,7 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||||||
});
|
});
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) { #region
|
static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) {
|
||||||
var lx = _x + _item.depth * ui(12) + ui(2);
|
var lx = _x + _item.depth * ui(12) + ui(2);
|
||||||
var lw = _w - _item.depth * ui(12) - ui(4);
|
var lw = _w - _item.depth * ui(12) - ui(4);
|
||||||
|
|
||||||
@ -199,16 +231,16 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static addItem = function(_item) { #region
|
static addItem = function(_item) {
|
||||||
array_push(contents, _item);
|
array_push(contents, _item);
|
||||||
_item.parent = self;
|
_item.parent = self;
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static destroy = function() { #region
|
static destroy = function() {
|
||||||
var ind = array_find(parent.contents, self);
|
var ind = array_find(parent.contents, self);
|
||||||
array_delete(parent.contents, ind, 1);
|
array_delete(parent.contents, ind, 1);
|
||||||
|
|
||||||
@ -216,9 +248,9 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||||||
array_insert(parent.contents, ind++, contents[i]);
|
array_insert(parent.contents, ind++, contents[i]);
|
||||||
contents[i].parent = parent;
|
contents[i].parent = parent;
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static serialize = function() { #region
|
static serialize = function() {
|
||||||
var _map = {};
|
var _map = {};
|
||||||
|
|
||||||
_map.type = "Folder";
|
_map.type = "Folder";
|
||||||
@ -232,9 +264,9 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||||||
_map.contents = _content;
|
_map.contents = _content;
|
||||||
|
|
||||||
return _map;
|
return _map;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static deserialize = function(_map) { #region
|
static deserialize = function(_map) {
|
||||||
color = _map.color;
|
color = _map.color;
|
||||||
name = struct_try_get(_map, "name", "");
|
name = struct_try_get(_map, "name", "");
|
||||||
show = struct_try_get(_map, "show", true);
|
show = struct_try_get(_map, "show", true);
|
||||||
@ -246,5 +278,5 @@ function timelineItemGroup() : timelineItem() constructor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user