Skip to content

Instantly share code, notes, and snippets.

@Ellpeck
Created November 11, 2021 01:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ellpeck/e597c1412465c10f41a42050ec117ea2 to your computer and use it in GitHub Desktop.
Save Ellpeck/e597c1412465c10f41a42050ec117ea2 to your computer and use it in GitHub Desktop.
This is a lua script for Aseprite that allows automatically populating a MLEM.Data Data Texture Atlas.
-- This is a lua script for Aseprite that allows automatically populating a MLEM.Data Data Texture Atlas.
-- To use this script, you need to select a rectangular area that should be your texture region.
-- If you want a custom pivot point, you also need to un-select exactly one pixel, the pivot point.
-- When you then execute the script and input the name of the texture region, it gets appended to the "SpriteName.atlas" file.
-- get the currently selected sprite
local selection = app.activeSprite.selection
if selection == nil then return end
local bounds = selection.bounds
local loc = "loc "..bounds.x.." "..bounds.y.." "..bounds.width.." "..bounds.height.."\n"
local piv = ""
-- find the pivot point, which should be the only de-selected pixel in the selection
for x = bounds.x, bounds.x + bounds.width - 1 do
for y = bounds.y, bounds.y + bounds.height - 1 do
if not selection:contains(x, y) then
piv = "piv "..x.." "..y.."\n"
goto foundPivot
end
end
end
::foundPivot::
-- open the name dialog
local dialog = Dialog("Populate Data Texture Atlas")
:entry{ id = "name", label = "Region Name", focus = true }
:button{ id = "ok", text="&OK" }
:button{ text = "&Cancel" }
dialog:show()
local data = dialog.data
if not data.ok then return end
local name = data.name
-- get the atlas file and write the data to it
local spriteFile = app.activeSprite.filename
local atlas = spriteFile:match("(.+)%..+")..".atlas"
local file = io.open(atlas, "a")
file:write("\n"..name.."\n"..loc..piv)
file:close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment