Created
November 11, 2021 01:16
-
-
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 file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 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