mirror of
https://github.com/space-wizards/space-station-14.git
synced 2026-06-09 10:06:43 +02:00
[Aseprite Tool] Add Copy Displaced To New Canvas Button (#41614)
Add Copy Displaced To New Canvas button Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
This commit is contained in:
@@ -266,4 +266,42 @@ dialog:color{
|
||||
end
|
||||
}
|
||||
|
||||
dialog:button{
|
||||
id = "save-displaced",
|
||||
text = "Copy Displaced Sprite To New Canvas",
|
||||
onclick = function(ev)
|
||||
local layerDisplacement = findLayer(sprite, dialog.data["displacement-select"])
|
||||
local layerTarget = findLayer(sprite, dialog.data["reference-select"])
|
||||
if not layerDisplacement or not layerTarget then
|
||||
app.alert("Select both displacement and reference layers!")
|
||||
return
|
||||
end
|
||||
|
||||
local celDisplacement = layerDisplacement:cel(1)
|
||||
local celTarget = layerTarget:cel(1)
|
||||
if not celDisplacement or not celTarget then
|
||||
app.alert("Selected layers must have a cel in the first frame!")
|
||||
return
|
||||
end
|
||||
|
||||
local displacedImage = applyDisplacementMap(
|
||||
sprite.width, sprite.height,
|
||||
celDisplacement,
|
||||
celTarget
|
||||
)
|
||||
|
||||
local newSprite = Sprite(sprite.width, sprite.height, sprite.colorMode)
|
||||
if sprite.colorMode == ColorMode.INDEXED then
|
||||
for i=0,sprite.palettes[1].size-1 do
|
||||
newSprite.palettes[1]:setColor(i, sprite.palettes[1]:getColor(i))
|
||||
end
|
||||
end
|
||||
|
||||
local newLayer = newSprite.layers[1]
|
||||
local newCel = newLayer:cel(1)
|
||||
newCel.image:drawImage(displacedImage, 0, 0)
|
||||
app.activeSprite = newSprite
|
||||
end
|
||||
}
|
||||
|
||||
dialog:show{wait = false}
|
||||
|
||||
Reference in New Issue
Block a user