[ASE File In] Add layernames, tagnames and raw data outputs.

This commit is contained in:
Tanasart 2025-01-12 08:21:42 +07:00
parent df54b2f492
commit e0e9e08c94
2 changed files with 21 additions and 3 deletions

View file

@ -1,6 +1,5 @@
/* /*
* ASE file reader * ASE file reader
* Author: MakhamDev
* File spec from: https://github.com/aseprite/aseprite/blob/main/docs/ase-file-specs.md * File spec from: https://github.com/aseprite/aseprite/blob/main/docs/ase-file-specs.md
*/ */

View file

@ -43,10 +43,21 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
newOutput(1, nodeValue_Output("Content", self, VALUE_TYPE.object, self)) newOutput(1, nodeValue_Output("Content", self, VALUE_TYPE.object, self))
.setIcon(s_junc_aseprite, c_white); .setIcon(s_junc_aseprite, c_white);
newOutput(2, nodeValue_Output("Path", self, VALUE_TYPE.path, "")); newOutput(2, nodeValue_Output("Path", self, VALUE_TYPE.path, ""))
.setVisible(false);
newOutput(3, nodeValue_Output("Palette", self, VALUE_TYPE.color, [])) newOutput(3, nodeValue_Output("Palette", self, VALUE_TYPE.color, []))
.setDisplay(VALUE_DISPLAY.palette); .setDisplay(VALUE_DISPLAY.palette)
.setVisible(false);
newOutput(4, nodeValue_Output("Layers", self, VALUE_TYPE.text, []))
.setVisible(false);
newOutput(5, nodeValue_Output("Tags", self, VALUE_TYPE.text, []))
.setVisible(false);
newOutput(6, nodeValue_Output("Raw data", self, VALUE_TYPE.struct, {}))
.setVisible(false);
hold_visibility = true; hold_visibility = true;
layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
@ -324,17 +335,21 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
var current_tag = getInputData(2); var current_tag = getInputData(2);
outputs[2].setValue(path); outputs[2].setValue(path);
outputs[6].setValue(content);
if(path_current != path) updatePaths(path); if(path_current != path) updatePaths(path);
if(content == noone) return; if(content == noone) return;
var tag = noone; var tag = noone;
var tagNames = array_create(array_length(tags));
for( var i = 0, n = array_length(tags); i < n; i++ ) { for( var i = 0, n = array_length(tags); i < n; i++ ) {
tagNames[i] = tags[i][$ "Name"];
if(tags[i][$ "Name"] == current_tag) { if(tags[i][$ "Name"] == current_tag) {
tag = tags[i]; tag = tags[i];
break; break;
} }
} }
outputs[5].setValue(tagNames);
_tag_delay = 0; _tag_delay = 0;
for( var i = 0; i < array_length(inputs[2].animator.values); i++ ) { for( var i = 0; i < array_length(inputs[2].animator.values); i++ ) {
@ -357,9 +372,12 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
} }
var _bg = 0; var _bg = 0;
var _layerNames = array_create(array_length(layers));
blend_temp_surface = temp_surface[2]; blend_temp_surface = temp_surface[2];
for( var i = 0, n = array_length(layers); i < n; i++ ) { for( var i = 0, n = array_length(layers); i < n; i++ ) {
_layerNames[i] = layers[i].name;
layers[i].tag = tag; layers[i].tag = tag;
var cel = layers[i].getCel(CURRENT_FRAME - _tag_delay); var cel = layers[i].getCel(CURRENT_FRAME - _tag_delay);
if(!cel) continue; if(!cel) continue;
@ -378,6 +396,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
_bg = !_bg; _bg = !_bg;
} }
outputs[4].setValue(_layerNames);
surface_set_shader(surf); surface_set_shader(surf);
DRAW_CLEAR DRAW_CLEAR
draw_surface_safe(temp_surface[!_bg]); draw_surface_safe(temp_surface[!_bg]);