mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-02-03 16:55:14 +01:00
auto organize
This commit is contained in:
parent
f71d86d5b4
commit
ef5c289e33
18 changed files with 521 additions and 12 deletions
|
@ -223,17 +223,17 @@
|
||||||
{"name":"profiler","order":5,"path":"folders/sprites/profiler.yy",},
|
{"name":"profiler","order":5,"path":"folders/sprites/profiler.yy",},
|
||||||
{"name":"texture","order":4,"path":"folders/sprites/texture.yy",},
|
{"name":"texture","order":4,"path":"folders/sprites/texture.yy",},
|
||||||
{"name":"theme","order":6,"path":"folders/sprites/theme.yy",},
|
{"name":"theme","order":6,"path":"folders/sprites/theme.yy",},
|
||||||
{"name":"font","order":10,"path":"folders/sprites/theme/font.yy",},
|
{"name":"font","order":9,"path":"folders/sprites/theme/font.yy",},
|
||||||
{"name":"inspector","order":1,"path":"folders/sprites/theme/inspector.yy",},
|
{"name":"inspector","order":1,"path":"folders/sprites/theme/inspector.yy",},
|
||||||
{"name":"meta","order":2,"path":"folders/sprites/theme/meta.yy",},
|
{"name":"meta","order":2,"path":"folders/sprites/theme/meta.yy",},
|
||||||
{"name":"node","order":3,"path":"folders/sprites/theme/node.yy",},
|
{"name":"node","order":3,"path":"folders/sprites/theme/node.yy",},
|
||||||
{"name":"assets","order":31,"path":"folders/sprites/theme/node/assets.yy",},
|
{"name":"assets","order":31,"path":"folders/sprites/theme/node/assets.yy",},
|
||||||
{"name":"widget","order":32,"path":"folders/sprites/theme/node/widget.yy",},
|
{"name":"widget","order":32,"path":"folders/sprites/theme/node/widget.yy",},
|
||||||
{"name":"preview","order":4,"path":"folders/sprites/theme/preview.yy",},
|
{"name":"preview","order":4,"path":"folders/sprites/theme/preview.yy",},
|
||||||
{"name":"timeline","order":6,"path":"folders/sprites/theme/timeline.yy",},
|
{"name":"timeline","order":5,"path":"folders/sprites/theme/timeline.yy",},
|
||||||
{"name":"tool","order":7,"path":"folders/sprites/theme/tool.yy",},
|
{"name":"tool","order":6,"path":"folders/sprites/theme/tool.yy",},
|
||||||
{"name":"UI","order":8,"path":"folders/sprites/theme/UI.yy",},
|
{"name":"UI","order":7,"path":"folders/sprites/theme/UI.yy",},
|
||||||
{"name":"widget","order":9,"path":"folders/sprites/theme/widget.yy",},
|
{"name":"widget","order":8,"path":"folders/sprites/theme/widget.yy",},
|
||||||
{"name":"widgets","order":334,"path":"folders/widgets.yy",},
|
{"name":"widgets","order":334,"path":"folders/widgets.yy",},
|
||||||
{"name":"object","order":18,"path":"folders/widgets/object.yy",},
|
{"name":"object","order":18,"path":"folders/widgets/object.yy",},
|
||||||
],
|
],
|
||||||
|
@ -1243,6 +1243,7 @@
|
||||||
{"name":"panel_globalvar","order":1,"path":"scripts/panel_globalvar/panel_globalvar.yy",},
|
{"name":"panel_globalvar","order":1,"path":"scripts/panel_globalvar/panel_globalvar.yy",},
|
||||||
{"name":"panel_gm_explorer","order":13,"path":"scripts/panel_gm_explorer/panel_gm_explorer.yy",},
|
{"name":"panel_gm_explorer","order":13,"path":"scripts/panel_gm_explorer/panel_gm_explorer.yy",},
|
||||||
{"name":"panel_gradient","order":2,"path":"scripts/panel_gradient/panel_gradient.yy",},
|
{"name":"panel_gradient","order":2,"path":"scripts/panel_gradient/panel_gradient.yy",},
|
||||||
|
{"name":"panel_graph_auto_organize","order":10,"path":"scripts/panel_graph_auto_organize/panel_graph_auto_organize.yy",},
|
||||||
{"name":"panel_graph_connection_settings","order":6,"path":"scripts/panel_graph_connection_settings/panel_graph_connection_settings.yy",},
|
{"name":"panel_graph_connection_settings","order":6,"path":"scripts/panel_graph_connection_settings/panel_graph_connection_settings.yy",},
|
||||||
{"name":"panel_graph_export_image_dialog","order":5,"path":"scripts/panel_graph_export_image_dialog/panel_graph_export_image_dialog.yy",},
|
{"name":"panel_graph_export_image_dialog","order":5,"path":"scripts/panel_graph_export_image_dialog/panel_graph_export_image_dialog.yy",},
|
||||||
{"name":"panel_graph_export_image","order":4,"path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},
|
{"name":"panel_graph_export_image","order":4,"path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},
|
||||||
|
@ -1903,7 +1904,7 @@
|
||||||
{"name":"s_discord","order":52,"path":"sprites/s_discord/s_discord.yy",},
|
{"name":"s_discord","order":52,"path":"sprites/s_discord/s_discord.yy",},
|
||||||
{"name":"s_display_palette","order":53,"path":"sprites/s_display_palette/s_display_palette.yy",},
|
{"name":"s_display_palette","order":53,"path":"sprites/s_display_palette/s_display_palette.yy",},
|
||||||
{"name":"s_duplicate","order":54,"path":"sprites/s_duplicate/s_duplicate.yy",},
|
{"name":"s_duplicate","order":54,"path":"sprites/s_duplicate/s_duplicate.yy",},
|
||||||
{"name":"s_empty","order":5,"path":"sprites/s_empty/s_empty.yy",},
|
{"name":"s_empty","order":10,"path":"sprites/s_empty/s_empty.yy",},
|
||||||
{"name":"s_fade_up","order":3,"path":"sprites/s_fade_up/s_fade_up.yy",},
|
{"name":"s_fade_up","order":3,"path":"sprites/s_fade_up/s_fade_up.yy",},
|
||||||
{"name":"s_feedback_16","order":55,"path":"sprites/s_feedback_16/s_feedback_16.yy",},
|
{"name":"s_feedback_16","order":55,"path":"sprites/s_feedback_16/s_feedback_16.yy",},
|
||||||
{"name":"s_feedback_24","order":56,"path":"sprites/s_feedback_24/s_feedback_24.yy",},
|
{"name":"s_feedback_24","order":56,"path":"sprites/s_feedback_24/s_feedback_24.yy",},
|
||||||
|
@ -2614,6 +2615,8 @@
|
||||||
{"name":"s_noti_icon_log","order":148,"path":"sprites/s_noti_icon_log/s_noti_icon_log.yy",},
|
{"name":"s_noti_icon_log","order":148,"path":"sprites/s_noti_icon_log/s_noti_icon_log.yy",},
|
||||||
{"name":"s_noti_icon_tick","order":149,"path":"sprites/s_noti_icon_tick/s_noti_icon_tick.yy",},
|
{"name":"s_noti_icon_tick","order":149,"path":"sprites/s_noti_icon_tick/s_noti_icon_tick.yy",},
|
||||||
{"name":"s_noti_icon_warning","order":150,"path":"sprites/s_noti_icon_warning/s_noti_icon_warning.yy",},
|
{"name":"s_noti_icon_warning","order":150,"path":"sprites/s_noti_icon_warning/s_noti_icon_warning.yy",},
|
||||||
|
{"name":"s_obj_auto_align","order":27,"path":"sprites/s_obj_auto_align/s_obj_auto_align.yy",},
|
||||||
|
{"name":"s_obj_auto_organize","order":26,"path":"sprites/s_obj_auto_organize/s_obj_auto_organize.yy",},
|
||||||
{"name":"s_obj_distribute_h","order":16,"path":"sprites/s_obj_distribute_h/s_obj_distribute_h.yy",},
|
{"name":"s_obj_distribute_h","order":16,"path":"sprites/s_obj_distribute_h/s_obj_distribute_h.yy",},
|
||||||
{"name":"s_obj_distribute_v","order":17,"path":"sprites/s_obj_distribute_v/s_obj_distribute_v.yy",},
|
{"name":"s_obj_distribute_v","order":17,"path":"sprites/s_obj_distribute_v/s_obj_distribute_v.yy",},
|
||||||
{"name":"s_onion_skin","order":151,"path":"sprites/s_onion_skin/s_onion_skin.yy",},
|
{"name":"s_onion_skin","order":151,"path":"sprites/s_onion_skin/s_onion_skin.yy",},
|
||||||
|
|
|
@ -1849,6 +1849,7 @@
|
||||||
{"id":{"name":"panel_globalvar","path":"scripts/panel_globalvar/panel_globalvar.yy",},},
|
{"id":{"name":"panel_globalvar","path":"scripts/panel_globalvar/panel_globalvar.yy",},},
|
||||||
{"id":{"name":"panel_gm_explorer","path":"scripts/panel_gm_explorer/panel_gm_explorer.yy",},},
|
{"id":{"name":"panel_gm_explorer","path":"scripts/panel_gm_explorer/panel_gm_explorer.yy",},},
|
||||||
{"id":{"name":"panel_gradient","path":"scripts/panel_gradient/panel_gradient.yy",},},
|
{"id":{"name":"panel_gradient","path":"scripts/panel_gradient/panel_gradient.yy",},},
|
||||||
|
{"id":{"name":"panel_graph_auto_organize","path":"scripts/panel_graph_auto_organize/panel_graph_auto_organize.yy",},},
|
||||||
{"id":{"name":"panel_graph_connection_settings","path":"scripts/panel_graph_connection_settings/panel_graph_connection_settings.yy",},},
|
{"id":{"name":"panel_graph_connection_settings","path":"scripts/panel_graph_connection_settings/panel_graph_connection_settings.yy",},},
|
||||||
{"id":{"name":"panel_graph_export_image_dialog","path":"scripts/panel_graph_export_image_dialog/panel_graph_export_image_dialog.yy",},},
|
{"id":{"name":"panel_graph_export_image_dialog","path":"scripts/panel_graph_export_image_dialog/panel_graph_export_image_dialog.yy",},},
|
||||||
{"id":{"name":"panel_graph_export_image","path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},},
|
{"id":{"name":"panel_graph_export_image","path":"scripts/panel_graph_export_image/panel_graph_export_image.yy",},},
|
||||||
|
@ -3350,6 +3351,8 @@
|
||||||
{"id":{"name":"s_noti_icon_log","path":"sprites/s_noti_icon_log/s_noti_icon_log.yy",},},
|
{"id":{"name":"s_noti_icon_log","path":"sprites/s_noti_icon_log/s_noti_icon_log.yy",},},
|
||||||
{"id":{"name":"s_noti_icon_tick","path":"sprites/s_noti_icon_tick/s_noti_icon_tick.yy",},},
|
{"id":{"name":"s_noti_icon_tick","path":"sprites/s_noti_icon_tick/s_noti_icon_tick.yy",},},
|
||||||
{"id":{"name":"s_noti_icon_warning","path":"sprites/s_noti_icon_warning/s_noti_icon_warning.yy",},},
|
{"id":{"name":"s_noti_icon_warning","path":"sprites/s_noti_icon_warning/s_noti_icon_warning.yy",},},
|
||||||
|
{"id":{"name":"s_obj_auto_align","path":"sprites/s_obj_auto_align/s_obj_auto_align.yy",},},
|
||||||
|
{"id":{"name":"s_obj_auto_organize","path":"sprites/s_obj_auto_organize/s_obj_auto_organize.yy",},},
|
||||||
{"id":{"name":"s_obj_distribute_h","path":"sprites/s_obj_distribute_h/s_obj_distribute_h.yy",},},
|
{"id":{"name":"s_obj_distribute_h","path":"sprites/s_obj_distribute_h/s_obj_distribute_h.yy",},},
|
||||||
{"id":{"name":"s_obj_distribute_v","path":"sprites/s_obj_distribute_v/s_obj_distribute_v.yy",},},
|
{"id":{"name":"s_obj_distribute_v","path":"sprites/s_obj_distribute_v/s_obj_distribute_v.yy",},},
|
||||||
{"id":{"name":"s_onion_skin","path":"sprites/s_onion_skin/s_onion_skin.yy",},},
|
{"id":{"name":"s_onion_skin","path":"sprites/s_onion_skin/s_onion_skin.yy",},},
|
||||||
|
|
Binary file not shown.
|
@ -173,7 +173,7 @@ function Panel_Linear_Setting() : PanelContent() constructor {
|
||||||
if(bg_y == -1) bg_y = bg_y_to;
|
if(bg_y == -1) bg_y = bg_y_to;
|
||||||
else bg_y = lerp_float(bg_y, bg_y_to, 2);
|
else bg_y = lerp_float(bg_y, bg_y_to, 2);
|
||||||
|
|
||||||
if(hk_editing != noone) {
|
if(hk_editing != noone) {
|
||||||
if(keyboard_check_pressed(vk_enter)) hk_editing = noone;
|
if(keyboard_check_pressed(vk_enter)) hk_editing = noone;
|
||||||
else hotkey_editing(hk_editing);
|
else hotkey_editing(hk_editing);
|
||||||
|
|
||||||
|
|
|
@ -265,4 +265,180 @@ function node_snap_grid(nodeList, spacing = 16) {
|
||||||
_node.x = value_snap(_node.x, spacing);
|
_node.x = value_snap(_node.x, spacing);
|
||||||
_node.y = value_snap(_node.y, spacing);
|
_node.y = value_snap(_node.y, spacing);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////- Auto organize
|
||||||
|
|
||||||
|
function node_auto_organize_parameter() constructor {
|
||||||
|
padd_w = 32;
|
||||||
|
padd_h = 16;
|
||||||
|
|
||||||
|
snap = true;
|
||||||
|
snap_size = 16;
|
||||||
|
|
||||||
|
gridmap = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
function __node_auto_organize_graph(node) {
|
||||||
|
var children = [];
|
||||||
|
var froms = node.getNodeFrom();
|
||||||
|
node.__organize_sorted = false;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(froms); i < n; i++ )
|
||||||
|
children[i] = __node_auto_organize_graph(froms[i]);
|
||||||
|
|
||||||
|
return { node, children, w: 0, h: 0, depth: 0 };
|
||||||
|
}
|
||||||
|
|
||||||
|
function __node_auto_organize_size(node, param) {
|
||||||
|
if(array_empty(node.children)) {
|
||||||
|
if(node.node == noone) return node;
|
||||||
|
|
||||||
|
node.w = node.node.w;
|
||||||
|
node.h = node.node.h;
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tw = 0;
|
||||||
|
var th = 0;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(node.children); i < n; i++ ) {
|
||||||
|
var _s = __node_auto_organize_size(node.children[i], param);
|
||||||
|
tw = max(tw, _s.node.w);
|
||||||
|
th += _s.h + param.padd_h * bool(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
node.w = tw;
|
||||||
|
node.h = th;
|
||||||
|
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
function __node_auto_organize(node, param, _x = 0, _y = 0, _cap = false) {
|
||||||
|
var ch = [];
|
||||||
|
var tw = node.w;
|
||||||
|
|
||||||
|
var _sx = _x - tw - param.padd_w;
|
||||||
|
var _sy = _y;
|
||||||
|
|
||||||
|
if(param.snap) {
|
||||||
|
_sx = value_snap(_sx, param.snap_size);
|
||||||
|
_sy = value_snap(_sy, param.snap_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
var miny = 0;
|
||||||
|
var maxy = 0;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(node.children); i < n; i++ ) {
|
||||||
|
var _n = node.children[i];
|
||||||
|
__node_auto_organize(_n, param, _sx, _sy, _cap);
|
||||||
|
|
||||||
|
if(!_n.node.__organize_sorted) {
|
||||||
|
_n.node.x = _sx;
|
||||||
|
_n.node.y = _sy;
|
||||||
|
} else {
|
||||||
|
_n.node.x = min(_n.node.x, _sx);
|
||||||
|
_n.node.y = min(_n.node.y, _sy);
|
||||||
|
}
|
||||||
|
|
||||||
|
miny = i == 0? _n.node.y : min(miny, _n.node.y);
|
||||||
|
maxy = i == 0? _n.node.y + _n.node.h : max(maxy, _n.node.y + _n.node.h);
|
||||||
|
|
||||||
|
_n.node.__organize_sorted = true;
|
||||||
|
_sy += _n.h + param.padd_h;
|
||||||
|
|
||||||
|
if(param.snap) _sy = value_snap(_sy, param.snap_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_cap && node.node) miny = max(miny, node.node.y);
|
||||||
|
if(n) node.h = maxy - miny;
|
||||||
|
if(node.node) node.h = max(node.h, node.node.h);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __node_bbox_recal(node, param) {
|
||||||
|
node.bbox = [ 0, 0, 0, 0 ];
|
||||||
|
node.h = 0;
|
||||||
|
if(node.node) node.node.__organize_sorted = false;
|
||||||
|
|
||||||
|
if(array_empty(node.children)) {
|
||||||
|
if(node.node == noone) return node;
|
||||||
|
|
||||||
|
node.bbox[0] = node.node.x;
|
||||||
|
node.bbox[1] = node.node.y;
|
||||||
|
node.bbox[2] = node.node.x + node.node.w;
|
||||||
|
node.bbox[3] = node.node.y + node.node.h;
|
||||||
|
|
||||||
|
node.h = node.bbox[3] - node.bbox[1];
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(node.children); i < n; i++ ) {
|
||||||
|
var _n = node.children[i];
|
||||||
|
__node_bbox_recal(_n, param);
|
||||||
|
|
||||||
|
node.bbox[0] = min(node.bbox[0], _n.bbox[0]);
|
||||||
|
node.bbox[1] = min(node.bbox[1], _n.bbox[1]);
|
||||||
|
node.bbox[2] = max(node.bbox[2], _n.bbox[2]);
|
||||||
|
node.bbox[3] = max(node.bbox[3], _n.bbox[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(node.node) node.bbox[1] = max(node.bbox[1], node.node.y);
|
||||||
|
node.h = node.bbox[3] - node.bbox[1];
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
function node_auto_organize(nodeList, param = new node_auto_organize_parameter()) {
|
||||||
|
if(array_empty(nodeList)) return;
|
||||||
|
|
||||||
|
var cx = 0, cy = 0;
|
||||||
|
for( var i = 0, n = array_length(nodeList); i < n; i++ ) {
|
||||||
|
var _n = nodeList[i];
|
||||||
|
cx += _n.x + _n.w / 2;
|
||||||
|
cy += _n.y + _n.h / 2;
|
||||||
|
}
|
||||||
|
cx /= n; cy /= n;
|
||||||
|
|
||||||
|
var root = { node: noone, children: [], w: 0, h: 0, depth: 0 };
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(nodeList); i < n; i++ ) {
|
||||||
|
var _n = nodeList[i];
|
||||||
|
var _nto = _n.getNodeTo();
|
||||||
|
|
||||||
|
var _isRoot = array_empty(_nto) || array_empty(array_union(_nto, nodeList));
|
||||||
|
if(_isRoot) array_push(root.children, __node_auto_organize_graph(_n));
|
||||||
|
}
|
||||||
|
|
||||||
|
array_sort(root.children, function(a, b) /*=>*/ {return a.node.y - b.node.y});
|
||||||
|
|
||||||
|
__node_auto_organize_size(root, param);
|
||||||
|
__node_auto_organize(root, param, 0, 0);
|
||||||
|
|
||||||
|
repeat(1) {
|
||||||
|
__node_bbox_recal(root, param);
|
||||||
|
__node_auto_organize(root, param, 0, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
var ncx = 0, ncy = 0;
|
||||||
|
for( var i = 0, n = array_length(nodeList); i < n; i++ ) {
|
||||||
|
var _n = nodeList[i];
|
||||||
|
ncx += _n.x + _n.w / 2;
|
||||||
|
ncy += _n.y + _n.h / 2;
|
||||||
|
}
|
||||||
|
ncx /= n; ncy /= n;
|
||||||
|
|
||||||
|
var dx = ncx - cx;
|
||||||
|
var dy = ncy - cy;
|
||||||
|
|
||||||
|
if(param.snap) {
|
||||||
|
dx = value_snap(dx, param.snap_size);
|
||||||
|
dy = value_snap(dy, param.snap_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(nodeList); i < n; i++ ) {
|
||||||
|
var _n = nodeList[i];
|
||||||
|
_n.x = _n.x - dx;
|
||||||
|
_n.y = _n.y - dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
PANEL_GRAPH.draw_refresh = true;
|
||||||
}
|
}
|
|
@ -769,7 +769,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
if(attributes.node_height) h = max(h, attributes.node_height);
|
if(attributes.node_height) h = max(h, attributes.node_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getJunctionList = function() { ////getJunctionList
|
static getJunctionList = function() {
|
||||||
inputDisplayList = [];
|
inputDisplayList = [];
|
||||||
|
|
||||||
var iamo = getInputAmount();
|
var iamo = getInputAmount();
|
||||||
|
@ -886,6 +886,35 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
return _vto;
|
return _vto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getNodeFrom = function() {
|
||||||
|
var _nodes = [];
|
||||||
|
|
||||||
|
for(var i = 0, n = array_length(inputDisplayList); i < n; i++) { //inputs
|
||||||
|
var jun = inputDisplayList[i];
|
||||||
|
var _fr = jun.value_from;
|
||||||
|
if(_fr != noone && _fr.node.active) array_push(_nodes, _fr.node);
|
||||||
|
}
|
||||||
|
|
||||||
|
// for( var i = 0, n = array_length(inputs); i < n; i++ ) {
|
||||||
|
// var _fr = inputs[i].value_from;
|
||||||
|
// }
|
||||||
|
|
||||||
|
return array_unique(_nodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
static getNodeTo = function() {
|
||||||
|
var _nodes = [];
|
||||||
|
|
||||||
|
for (var j = 0; j < array_length(outputs); j++) {
|
||||||
|
var _to = outputs[j].value_to;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_to); i < n; i++ )
|
||||||
|
if(_to[i].node.active) array_push(_nodes, _to[i].node);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_unique(_nodes);
|
||||||
|
}
|
||||||
|
|
||||||
static checkConnectGroup = function(_io) {
|
static checkConnectGroup = function(_io) {
|
||||||
|
|
||||||
var _y = y;
|
var _y = y;
|
||||||
|
@ -1881,6 +1910,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
|
|
||||||
for( var i = 0; i < __draw_inputs_len; i++ ) {
|
for( var i = 0; i < __draw_inputs_len; i++ ) {
|
||||||
_jun = __draw_inputs[i];
|
_jun = __draw_inputs[i];
|
||||||
|
_jun.drawLineIndexRaw = i;
|
||||||
_jun.drawLineIndex = 1 + (i > __draw_inputs_len / 2? (__draw_inputs_len - 1 - i) : i) * 0.5;
|
_jun.drawLineIndex = 1 + (i > __draw_inputs_len / 2? (__draw_inputs_len - 1 - i) : i) * 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
draw_line_blend = 1;
|
draw_line_blend = 1;
|
||||||
draw_line_feed = false;
|
draw_line_feed = false;
|
||||||
drawLineIndex = 1;
|
drawLineIndex = 1;
|
||||||
|
drawLineIndexRaw = 1;
|
||||||
draw_line_vb = noone;
|
draw_line_vb = noone;
|
||||||
draw_junction_index = type;
|
draw_junction_index = type;
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
function panel_graph_copy() { CALL("graph_copy"); PANEL_GRAPH.doCopy(); }
|
function panel_graph_copy() { CALL("graph_copy"); PANEL_GRAPH.doCopy(); }
|
||||||
function panel_graph_paste() { CALL("graph_paste"); PANEL_GRAPH.doPaste(); }
|
function panel_graph_paste() { CALL("graph_paste"); PANEL_GRAPH.doPaste(); }
|
||||||
|
|
||||||
|
function panel_graph_auto_organize() { CALL("graph_auto_organize"); node_auto_organize(PANEL_GRAPH.nodes_selecting); }
|
||||||
function panel_graph_auto_align() { CALL("graph_auto_align"); node_auto_align(PANEL_GRAPH.nodes_selecting); }
|
function panel_graph_auto_align() { CALL("graph_auto_align"); node_auto_align(PANEL_GRAPH.nodes_selecting); }
|
||||||
function panel_graph_snap_nodes() { CALL("graph_snap_nodes"); node_snap_grid(PANEL_GRAPH.nodes_selecting, PANEL_GRAPH.project.graphGrid.size); }
|
function panel_graph_snap_nodes() { CALL("graph_snap_nodes"); node_snap_grid(PANEL_GRAPH.nodes_selecting, PANEL_GRAPH.project.graphGrid.size); }
|
||||||
function panel_graph_search() { CALL("graph_search"); PANEL_GRAPH.toggleSearch(); }
|
function panel_graph_search() { CALL("graph_search"); PANEL_GRAPH.toggleSearch(); }
|
||||||
|
@ -109,6 +110,7 @@
|
||||||
registerFunction("Graph", "Zoom", "", MOD_KEY.alt | MOD_KEY.ctrl, panel_graph_zoom ).setMenu("graph_zoom")
|
registerFunction("Graph", "Zoom", "", MOD_KEY.alt | MOD_KEY.ctrl, panel_graph_zoom ).setMenu("graph_zoom")
|
||||||
|
|
||||||
registerFunction("Graph", "Auto Align", "L", MOD_KEY.none, panel_graph_auto_align ).setMenu("graph_auto_align")
|
registerFunction("Graph", "Auto Align", "L", MOD_KEY.none, panel_graph_auto_align ).setMenu("graph_auto_align")
|
||||||
|
registerFunction("Graph", "Auto Organize", "L", MOD_KEY.ctrl, function() /*=>*/ { dialogPanelCall(new Panel_Graph_Auto_Organize(PANEL_GRAPH.nodes_selecting)) } ).setMenu("graph_auto_organize")
|
||||||
registerFunction("Graph", "Snap Nodes", "", MOD_KEY.none, panel_graph_snap_nodes ).setMenu("graph_snap_nodes")
|
registerFunction("Graph", "Snap Nodes", "", MOD_KEY.none, panel_graph_snap_nodes ).setMenu("graph_snap_nodes")
|
||||||
registerFunction("Graph", "Search", "F", MOD_KEY.ctrl, panel_graph_search ).setMenu("graph_search")
|
registerFunction("Graph", "Search", "F", MOD_KEY.ctrl, panel_graph_search ).setMenu("graph_search")
|
||||||
registerFunction("Graph", "Toggle Minimap", "M", MOD_KEY.ctrl, panel_graph_toggle_minimap ).setMenu("graph_toggle_minimap")
|
registerFunction("Graph", "Toggle Minimap", "M", MOD_KEY.ctrl, panel_graph_toggle_minimap ).setMenu("graph_toggle_minimap")
|
||||||
|
@ -575,6 +577,11 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
[ THEME.obj_distribute_v, function() /*=>*/ {return 0}, function() /*=>*/ {return ""}, function(param) /*=>*/ { node_vdistribute(nodes_selecting); } ],
|
[ THEME.obj_distribute_v, function() /*=>*/ {return 0}, function() /*=>*/ {return ""}, function(param) /*=>*/ { node_vdistribute(nodes_selecting); } ],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
toolbars_auto_arrange = [
|
||||||
|
[ THEME.obj_auto_align, function() /*=>*/ {return 0}, function() /*=>*/ {return "Auto align"}, function(param) /*=>*/ { node_auto_align(nodes_selecting); } ],
|
||||||
|
[ THEME.obj_auto_organize, function() /*=>*/ {return 0}, function() /*=>*/ {return "Auto organize"}, function(param) /*=>*/ { dialogPanelCall(new Panel_Graph_Auto_Organize(PANEL_GRAPH.nodes_selecting), param.x, param.y, { anchor: ANCHOR.bottom | ANCHOR.left }) } ],
|
||||||
|
];
|
||||||
|
|
||||||
distribution_spacing = 0;
|
distribution_spacing = 0;
|
||||||
toolbars_distrib_space = [
|
toolbars_distrib_space = [
|
||||||
[ THEME.obj_distribute_h, function() /*=>*/ {return 0}, function() /*=>*/ {return ""}, function(param) /*=>*/ { node_hdistribute_dist(nodes_selecting, nodes_select_anchor, distribution_spacing); } ],
|
[ THEME.obj_distribute_h, function() /*=>*/ {return 0}, function() /*=>*/ {return ""}, function(param) /*=>*/ { node_hdistribute_dist(nodes_selecting, nodes_select_anchor, distribution_spacing); } ],
|
||||||
|
@ -2556,9 +2563,9 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
toolbars = [ toolbars_general ];
|
toolbars = [ toolbars_general ];
|
||||||
if(array_length(nodes_selecting) > 1) {
|
if(array_length(nodes_selecting) > 1) {
|
||||||
if(array_exists(nodes_selecting, nodes_select_anchor))
|
if(array_exists(nodes_selecting, nodes_select_anchor))
|
||||||
array_push(toolbars, toolbars_halign, toolbars_valign, toolbars_distrib_space);
|
array_push(toolbars, toolbars_halign, toolbars_valign, toolbars_distrib_space, toolbars_auto_arrange);
|
||||||
else
|
else
|
||||||
array_push(toolbars, toolbars_halign, toolbars_valign, toolbars_distrib);
|
array_push(toolbars, toolbars_halign, toolbars_valign, toolbars_distrib, toolbars_auto_arrange);
|
||||||
}
|
}
|
||||||
|
|
||||||
graph_cx = (w / 2) / graph_s - graph_x;
|
graph_cx = (w / 2) / graph_s - graph_x;
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
function Panel_Graph_Auto_Organize(_nodes) : PanelContent() constructor {
|
||||||
|
title = __txt("Auto Organize");
|
||||||
|
w = ui(400);
|
||||||
|
h = ui(320);
|
||||||
|
auto_pin = true;
|
||||||
|
nodes = _nodes;
|
||||||
|
param = new node_auto_organize_parameter();
|
||||||
|
|
||||||
|
wdgw = ui(180);
|
||||||
|
|
||||||
|
bg_y = -1;
|
||||||
|
bg_y_to = -1;
|
||||||
|
bg_a = 0;
|
||||||
|
|
||||||
|
selecting_menu = noone;
|
||||||
|
|
||||||
|
static node_organize = function() {
|
||||||
|
node_auto_organize(nodes, param);
|
||||||
|
} node_organize();
|
||||||
|
|
||||||
|
properties = [
|
||||||
|
new __Panel_Linear_Setting_Item(
|
||||||
|
__txt("Horzontal padding"),
|
||||||
|
new textBox(TEXTBOX_INPUT.number, function(v) /*=>*/ { param.padd_w = v; node_organize(); }),
|
||||||
|
function() /*=>*/ {return param.padd_w}
|
||||||
|
),
|
||||||
|
new __Panel_Linear_Setting_Item(
|
||||||
|
__txt("Vertical padding"),
|
||||||
|
new textBox(TEXTBOX_INPUT.number, function(v) /*=>*/ { param.padd_h = v; node_organize(); }),
|
||||||
|
function() /*=>*/ {return param.padd_h}
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
static setHeight = function() { h = ui(12 + 36 * array_length(properties)); }
|
||||||
|
setHeight();
|
||||||
|
|
||||||
|
function drawContent(panel) {
|
||||||
|
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
||||||
|
var yy = ui(24);
|
||||||
|
var th = ui(36);
|
||||||
|
var ww = max(wdgw, w * 0.5);
|
||||||
|
var wh = TEXTBOX_HEIGHT;
|
||||||
|
|
||||||
|
var _hov = false;
|
||||||
|
if(bg_y) draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, ui(4), bg_y, w - ui(8), th, COLORS.panel_prop_bg, 0.5 * bg_a);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(properties); i < n; i++ ) {
|
||||||
|
var _prop = properties[i];
|
||||||
|
|
||||||
|
var _text = _prop.name;
|
||||||
|
var _data = _prop.data;
|
||||||
|
var _widg = _prop.editWidget;
|
||||||
|
if(is_callable(_data)) _data = _data();
|
||||||
|
|
||||||
|
_widg.setFocusHover(pFOCUS, pHOVER);
|
||||||
|
_widg.register();
|
||||||
|
|
||||||
|
var _whover = false;
|
||||||
|
if(pHOVER && point_in_rectangle(mx, my, 0, yy - th / 2, w, yy + th / 2)) {
|
||||||
|
bg_y_to = yy - th / 2;
|
||||||
|
_hov = true;
|
||||||
|
_whover = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
|
||||||
|
draw_text_add(ui(16), yy, _text);
|
||||||
|
|
||||||
|
var _x1 = w - ui(8);
|
||||||
|
var _wdw = ww;
|
||||||
|
|
||||||
|
if(_prop.getDefault != noone)
|
||||||
|
_wdw -= ui(32 + 8);
|
||||||
|
|
||||||
|
var params = new widgetParam(_x1 - ww, yy - wh / 2, _wdw, wh, _data, {}, [ mx, my ], x, y);
|
||||||
|
if(is_instanceof(_widg, checkBox)) {
|
||||||
|
params.halign = fa_center;
|
||||||
|
params.valign = fa_center;
|
||||||
|
}
|
||||||
|
|
||||||
|
_widg.drawParam(params);
|
||||||
|
|
||||||
|
yy += th;
|
||||||
|
}
|
||||||
|
|
||||||
|
bg_a = lerp_float(bg_a, _hov, 2);
|
||||||
|
|
||||||
|
if(bg_y == -1) bg_y = bg_y_to;
|
||||||
|
else bg_y = lerp_float(bg_y, bg_y_to, 2);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"$GMScript":"v1",
|
||||||
|
"%Name":"panel_graph_auto_organize",
|
||||||
|
"isCompatibility":false,
|
||||||
|
"isDnD":false,
|
||||||
|
"name":"panel_graph_auto_organize",
|
||||||
|
"parent":{
|
||||||
|
"name":"graph",
|
||||||
|
"path":"folders/panels/graph.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMScript",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"tags":[],
|
||||||
|
}
|
|
@ -845,11 +845,14 @@ function Panel_Inspector() : PanelContent() constructor {
|
||||||
var lbh = viewMode? ui(32) : ui(26);
|
var lbh = viewMode? ui(32) : ui(26);
|
||||||
var lbw = con_w;
|
var lbw = con_w;
|
||||||
|
|
||||||
var togl = array_safe_get_fast(jun, 2, noone);
|
var togl = array_safe_get_fast(jun, 2, noone);
|
||||||
|
var toging = false;
|
||||||
|
|
||||||
if(togl != noone) {
|
if(togl != noone) {
|
||||||
lbx += ui(40);
|
lbx += ui(40);
|
||||||
lbw -= ui(40);
|
lbw -= ui(40);
|
||||||
var toging = _inspecting.getInputData(togl);
|
toging = _inspecting.getInputData(togl);
|
||||||
|
if(is_array(toging)) toging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var righ = array_safe_get_fast(jun, 3, noone);
|
var righ = array_safe_get_fast(jun, 3, noone);
|
||||||
|
|
|
@ -287,6 +287,8 @@ function Theme() constructor {
|
||||||
curve_presets = s_inspector_curve_presets;
|
curve_presets = s_inspector_curve_presets;
|
||||||
inspector_channel = s_inspector_channel;
|
inspector_channel = s_inspector_channel;
|
||||||
inspector_checkbox = s_inspector_checkbox;
|
inspector_checkbox = s_inspector_checkbox;
|
||||||
|
obj_auto_align = s_obj_auto_align;
|
||||||
|
obj_auto_organize = s_obj_auto_organize;
|
||||||
obj_angle = s_inspector_obj_angle;
|
obj_angle = s_inspector_obj_angle;
|
||||||
obj_direction = s_inspector_direction;
|
obj_direction = s_inspector_direction;
|
||||||
obj_distribute_h = s_obj_distribute_h;
|
obj_distribute_h = s_obj_distribute_h;
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 656 B |
Binary file not shown.
After Width: | Height: | Size: 656 B |
90
sprites/s_obj_auto_align/s_obj_auto_align.yy
Normal file
90
sprites/s_obj_auto_align/s_obj_auto_align.yy
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"$GMSprite":"",
|
||||||
|
"%Name":"s_obj_auto_align",
|
||||||
|
"bboxMode":0,
|
||||||
|
"bbox_bottom":20,
|
||||||
|
"bbox_left":1,
|
||||||
|
"bbox_right":23,
|
||||||
|
"bbox_top":1,
|
||||||
|
"collisionKind":1,
|
||||||
|
"collisionTolerance":0,
|
||||||
|
"DynamicTexturePage":false,
|
||||||
|
"edgeFiltering":false,
|
||||||
|
"For3D":false,
|
||||||
|
"frames":[
|
||||||
|
{"$GMSpriteFrame":"","%Name":"3b47b91b-6de1-4c08-9960-297ecf43e59c","name":"3b47b91b-6de1-4c08-9960-297ecf43e59c","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
|
],
|
||||||
|
"gridX":0,
|
||||||
|
"gridY":0,
|
||||||
|
"height":24,
|
||||||
|
"HTile":false,
|
||||||
|
"layers":[
|
||||||
|
{"$GMImageLayer":"","%Name":"56c7a534-51f6-43ea-8f49-f60e650a7573","blendMode":0,"displayName":"default","isLocked":false,"name":"56c7a534-51f6-43ea-8f49-f60e650a7573","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
|
],
|
||||||
|
"name":"s_obj_auto_align",
|
||||||
|
"nineSlice":null,
|
||||||
|
"origin":4,
|
||||||
|
"parent":{
|
||||||
|
"name":"inspector",
|
||||||
|
"path":"folders/sprites/theme/inspector.yy",
|
||||||
|
},
|
||||||
|
"preMultiplyAlpha":false,
|
||||||
|
"resourceType":"GMSprite",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"sequence":{
|
||||||
|
"$GMSequence":"",
|
||||||
|
"%Name":"s_obj_auto_align",
|
||||||
|
"autoRecord":true,
|
||||||
|
"backdropHeight":768,
|
||||||
|
"backdropImageOpacity":0.5,
|
||||||
|
"backdropImagePath":"",
|
||||||
|
"backdropWidth":1366,
|
||||||
|
"backdropXOffset":0.0,
|
||||||
|
"backdropYOffset":0.0,
|
||||||
|
"events":{
|
||||||
|
"$KeyframeStore<MessageEventKeyframe>":"",
|
||||||
|
"Keyframes":[],
|
||||||
|
"resourceType":"KeyframeStore<MessageEventKeyframe>",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
},
|
||||||
|
"eventStubScript":null,
|
||||||
|
"eventToFunction":{},
|
||||||
|
"length":1.0,
|
||||||
|
"lockOrigin":false,
|
||||||
|
"moments":{
|
||||||
|
"$KeyframeStore<MomentsEventKeyframe>":"",
|
||||||
|
"Keyframes":[],
|
||||||
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
},
|
||||||
|
"name":"s_obj_auto_align",
|
||||||
|
"playback":1,
|
||||||
|
"playbackSpeed":30.0,
|
||||||
|
"playbackSpeedType":0,
|
||||||
|
"resourceType":"GMSequence",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"showBackdrop":true,
|
||||||
|
"showBackdropImage":false,
|
||||||
|
"timeUnits":1,
|
||||||
|
"tracks":[
|
||||||
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"3b47b91b-6de1-4c08-9960-297ecf43e59c","path":"sprites/s_obj_auto_align/s_obj_auto_align.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
|
},"Disabled":false,"id":"0e721c84-e757-4279-8e0d-8953b7ac212e","IsCreationKey":false,"Key":0.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,
|
||||||
|
"volume":1.0,
|
||||||
|
"xorigin":12,
|
||||||
|
"yorigin":12,
|
||||||
|
},
|
||||||
|
"swatchColours":null,
|
||||||
|
"swfPrecision":0.5,
|
||||||
|
"textureGroupId":{
|
||||||
|
"name":"Default",
|
||||||
|
"path":"texturegroups/Default",
|
||||||
|
},
|
||||||
|
"type":0,
|
||||||
|
"VTile":false,
|
||||||
|
"width":24,
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 677 B |
Binary file not shown.
After Width: | Height: | Size: 677 B |
90
sprites/s_obj_auto_organize/s_obj_auto_organize.yy
Normal file
90
sprites/s_obj_auto_organize/s_obj_auto_organize.yy
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"$GMSprite":"",
|
||||||
|
"%Name":"s_obj_auto_organize",
|
||||||
|
"bboxMode":0,
|
||||||
|
"bbox_bottom":21,
|
||||||
|
"bbox_left":3,
|
||||||
|
"bbox_right":23,
|
||||||
|
"bbox_top":1,
|
||||||
|
"collisionKind":1,
|
||||||
|
"collisionTolerance":0,
|
||||||
|
"DynamicTexturePage":false,
|
||||||
|
"edgeFiltering":false,
|
||||||
|
"For3D":false,
|
||||||
|
"frames":[
|
||||||
|
{"$GMSpriteFrame":"","%Name":"b2b673fd-48ed-4e46-b7cb-a1cdbe95ef05","name":"b2b673fd-48ed-4e46-b7cb-a1cdbe95ef05","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||||
|
],
|
||||||
|
"gridX":0,
|
||||||
|
"gridY":0,
|
||||||
|
"height":24,
|
||||||
|
"HTile":false,
|
||||||
|
"layers":[
|
||||||
|
{"$GMImageLayer":"","%Name":"63454752-bcb3-44c6-910a-3e6bd248c585","blendMode":0,"displayName":"default","isLocked":false,"name":"63454752-bcb3-44c6-910a-3e6bd248c585","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||||
|
],
|
||||||
|
"name":"s_obj_auto_organize",
|
||||||
|
"nineSlice":null,
|
||||||
|
"origin":4,
|
||||||
|
"parent":{
|
||||||
|
"name":"inspector",
|
||||||
|
"path":"folders/sprites/theme/inspector.yy",
|
||||||
|
},
|
||||||
|
"preMultiplyAlpha":false,
|
||||||
|
"resourceType":"GMSprite",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"sequence":{
|
||||||
|
"$GMSequence":"",
|
||||||
|
"%Name":"s_obj_auto_organize",
|
||||||
|
"autoRecord":true,
|
||||||
|
"backdropHeight":768,
|
||||||
|
"backdropImageOpacity":0.5,
|
||||||
|
"backdropImagePath":"",
|
||||||
|
"backdropWidth":1366,
|
||||||
|
"backdropXOffset":0.0,
|
||||||
|
"backdropYOffset":0.0,
|
||||||
|
"events":{
|
||||||
|
"$KeyframeStore<MessageEventKeyframe>":"",
|
||||||
|
"Keyframes":[],
|
||||||
|
"resourceType":"KeyframeStore<MessageEventKeyframe>",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
},
|
||||||
|
"eventStubScript":null,
|
||||||
|
"eventToFunction":{},
|
||||||
|
"length":1.0,
|
||||||
|
"lockOrigin":false,
|
||||||
|
"moments":{
|
||||||
|
"$KeyframeStore<MomentsEventKeyframe>":"",
|
||||||
|
"Keyframes":[],
|
||||||
|
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
},
|
||||||
|
"name":"s_obj_auto_organize",
|
||||||
|
"playback":1,
|
||||||
|
"playbackSpeed":30.0,
|
||||||
|
"playbackSpeedType":0,
|
||||||
|
"resourceType":"GMSequence",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
"showBackdrop":true,
|
||||||
|
"showBackdropImage":false,
|
||||||
|
"timeUnits":1,
|
||||||
|
"tracks":[
|
||||||
|
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||||
|
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||||
|
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"b2b673fd-48ed-4e46-b7cb-a1cdbe95ef05","path":"sprites/s_obj_auto_organize/s_obj_auto_organize.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||||
|
},"Disabled":false,"id":"ad163094-5415-4ef6-8b51-7f9e5d1f2000","IsCreationKey":false,"Key":0.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,
|
||||||
|
"volume":1.0,
|
||||||
|
"xorigin":12,
|
||||||
|
"yorigin":12,
|
||||||
|
},
|
||||||
|
"swatchColours":null,
|
||||||
|
"swfPrecision":0.5,
|
||||||
|
"textureGroupId":{
|
||||||
|
"name":"Default",
|
||||||
|
"path":"texturegroups/Default",
|
||||||
|
},
|
||||||
|
"type":0,
|
||||||
|
"VTile":false,
|
||||||
|
"width":24,
|
||||||
|
}
|
Loading…
Reference in a new issue