diff --git a/src/app/commands/cmd_export_sprite_sheet.cpp b/src/app/commands/cmd_export_sprite_sheet.cpp index e4f3bb64c..2006a2097 100644 --- a/src/app/commands/cmd_export_sprite_sheet.cpp +++ b/src/app/commands/cmd_export_sprite_sheet.cpp @@ -153,17 +153,15 @@ void destroy_doc(Context* ctx, Doc* doc) } } -void insertLayersToSelectedLayers(Layer* layer, SelectedLayers* selectedLayers) +void insert_layers_to_selected_layers(Layer* layer, SelectedLayers& selectedLayers) { if (layer->isGroup()) { - auto childs = static_cast(layer)->layers(); - if (childs.size() == 0) - return; - for (auto child : childs) - insertLayersToSelectedLayers(child, selectedLayers); + auto children = static_cast(layer)->layers(); + for (auto child : children) + insert_layers_to_selected_layers(child, selectedLayers); } else - selectedLayers->insert(const_cast(layer)); + selectedLayers.insert(layer); } Doc* generate_sprite_sheet_from_params( @@ -222,12 +220,16 @@ Doc* generate_sprite_sheet_from_params( SelectedLayers selLayers; if (layerName != kSelectedLayers) { + // TODO add a getLayerByName + int i = sprite->allLayersCount(); for (Layer* layer : sprite->allLayers()) { - if (get_layer_path(layer) == layerName ) { + i--; + if (get_layer_path(layer) == layerName && + (layerIndex == -1 || layerIndex == i)) { if (layer->isGroup()) - insertLayersToSelectedLayers(layer, &selLayers); + insert_layers_to_selected_layers(layer, selLayers); else - selLayers.insert(const_cast(layer)); + selLayers.insert(layer); break; } } diff --git a/tests/scripts/app_command.lua b/tests/scripts/app_command.lua index d09b68a12..4f70e5d1e 100644 --- a/tests/scripts/app_command.lua +++ b/tests/scripts/app_command.lua @@ -100,12 +100,12 @@ do -- ExportSpriteSheet 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0, }) - local s = Sprite{ fromFile="sprites/groups4.aseprite" } + local s = Sprite{ fromFile="sprites/groups3abc.aseprite" } local c = app.pixelColor.rgba(75, 105, 47) app.command.ExportSpriteSheet { type=SpriteSheetType.ROWS, textureFilename="_test_export_spritesheet4.png", - layer="G1/G2/G3/b", + layer="b/b", trim=true, } local i = Image{ fromFile="_test_export_spritesheet4.png" } diff --git a/tests/sprites/groups4.aseprite b/tests/sprites/groups4.aseprite deleted file mode 100644 index 8255e674d..000000000 Binary files a/tests/sprites/groups4.aseprite and /dev/null differ