-- New commands to be executed via Aseprite menus / keyboard shortcuts local sprt = require "abase-sprite" local BASE_COLOR = Color { r = 0, g = 0, b = 0, a = 0 } local IGNORE_COLOR = Color { gray = 100 } local IGNORE_SUBCOLOR = Color { gray = 150 } local MERGE_COLOR = Color { r = 200, g = 200, b = 0 } local MERGE_SUBCOLOR = Color { r = 200, g = 200, b = 128 } -- set the color of a layer and its sublayers local function setColor(layer, subColor) if (layer.properties(extKey).ignored) then layer.color = IGNORE_COLOR subColor = IGNORE_SUBCOLOR elseif subColor == IGNORE_SUBCOLOR then layer.color = subColor elseif (layer.properties(extKey).exportedAsSprite) then layer.color = MERGE_COLOR subColor = MERGE_SUBCOLOR elseif subColor == MERGE_SUBCOLOR then layer.color = subColor else layer.color = BASE_COLOR end if (layer.isGroup) then for i, sublayer in ipairs(layer.layers) do setColor(sublayer, subColor) end end end local function ExportSpritesheetAdvanced() if not app.sprite then return app.alert "Must have a sprite open to export." end local spr = Sprite(app.sprite) sprt.deleteLayers(spr, spr.layers) sprt.flattenLayers(spr.layers) sprt.revealLayers(spr.layers) app.command.ExportSpriteSheet { splitLayers = true } spr:close() end local function ToggleIgnore() local layer = app.layer if (layer.properties(extKey).ignored) then layer.properties(extKey).ignored = false else layer.properties(extKey).ignored = true end setColor(layer) end local function ToggleExportAsSprite() local layer = app.layer if (layer.properties(extKey).exportedAsSprite) then layer.properties(extKey).exportedAsSprite = false else layer.properties(extKey).exportedAsSprite = true end setColor(layer) end local export = { ExportSpritesheetAdvanced = ExportSpritesheetAdvanced, ToggleIgnore = ToggleIgnore, ToggleExportAsSprite = ToggleExportAsSprite } return export