Basic functionality in place.
This commit is contained in:
parent
0c393d87cc
commit
e0ca4fef28
3 changed files with 123 additions and 83 deletions
|
@ -1,99 +1,42 @@
|
|||
local extKey = "annabunches/AtlasExporter"
|
||||
extKey = "annabunches/abase" -- this must come before we require 'abase-commands'
|
||||
|
||||
local cmd = require "abase-commands"
|
||||
|
||||
function init(plugin)
|
||||
plugin:newCommand{
|
||||
id="AnnabunchesASEExportSpritesheetAdvanced",
|
||||
title="Export Spritesheet (Advanced)",
|
||||
group="file_export",
|
||||
onclick=exportSpritesheetAdvanced
|
||||
group="file_export_1",
|
||||
onclick=function()
|
||||
cmd.ExportSpritesheetAdvanced()
|
||||
end,
|
||||
onenabled=function()
|
||||
return app.activeSprite ~= nil
|
||||
end
|
||||
}
|
||||
|
||||
plugin:newMenuSeparator{
|
||||
group="layer_popup_merge"
|
||||
}
|
||||
|
||||
plugin:newCommand{
|
||||
id="AnnabunchesASEToggleIgnoreLayer",
|
||||
title="Ignore on Export",
|
||||
group="layer_popup_menu",
|
||||
onclick=toggleIgnore
|
||||
group="layer_popup_merge",
|
||||
onclick=function()
|
||||
cmd.ToggleIgnore()
|
||||
end
|
||||
}
|
||||
|
||||
plugin:newCommand{
|
||||
id="AnnabunchesASEToggleExportAsSprite",
|
||||
title="Export as Sprite",
|
||||
group="layer_popup_menu",
|
||||
onclick=toggleExportAsSprite
|
||||
group="layer_popup_merge",
|
||||
onclick=function()
|
||||
cmd.ToggleExportAsSprite()
|
||||
end,
|
||||
onnenabled=function()
|
||||
return app.layer.isGroup
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
local function revealLayers(layers)
|
||||
for i, layer in ipairs(layers) do
|
||||
if layer.isGroup then
|
||||
revealLayers(layer.layers)
|
||||
end
|
||||
|
||||
if not layer.isVisible then
|
||||
layer.isVisible = true
|
||||
layer.properties(extKey).revealed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function restoreLayers(layers)
|
||||
for i, layer in ipairs(layers) do
|
||||
if layer.isGroup then
|
||||
restoreLayers(layer.layers)
|
||||
end
|
||||
|
||||
if layer.properties(extKey).revealed then
|
||||
layer.isVisible = false
|
||||
-- layer.properties(extKey).revealed = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function deleteLayers(sprite, layers)
|
||||
for i, layer in ipairs(layers) do
|
||||
if layer.name:find("%+i") then
|
||||
sprite:deleteLayer(layer)
|
||||
elseif layer.isGroup then
|
||||
deleteLayers(sprite, layer.layers)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function flattenLayers(layers)
|
||||
for i, layer in ipairs(layers) do
|
||||
if not layer.isGroup then
|
||||
goto continue
|
||||
end
|
||||
|
||||
-- Layers "tagged" with +f get flattened
|
||||
if layer.name:find("%+f") then
|
||||
app.range.layers = { layer }
|
||||
app.command.FlattenLayers(false)
|
||||
else
|
||||
-- recurse
|
||||
flattenLayers(layer.layers)
|
||||
end
|
||||
|
||||
::continue::
|
||||
end
|
||||
end
|
||||
|
||||
local function exportSpritesheetAdvanced()
|
||||
local sprite = app.activeSprite
|
||||
if not sprite then
|
||||
return app.alert "Must have a sprite open to export."
|
||||
end
|
||||
|
||||
app.transaction(function()
|
||||
deleteLayers(sprite, sprite.layers)
|
||||
flattenLayers(sprite.layers)
|
||||
revealLayers(sprite.layers)
|
||||
end)
|
||||
app.command.ExportSpriteSheet {
|
||||
splitLayers=true,
|
||||
}
|
||||
restoreLayers(sprite.layers)
|
||||
app.undo()
|
||||
end
|
||||
|
||||
main()
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue