Created
June 20, 2021 12:30
-
-
Save blopa/9374729f151c8e13cd1b98a45c728cdd to your computer and use it in GitHub Desktop.
Generate Atlas Sprites for Phaser using Node script
This file contains 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
/* eslint-disable import/no-extraneous-dependencies */ | |
const { packAsync } = require('free-tex-packer-core'); | |
const path = require('path'); | |
const { readFileSync, readdirSync, writeFileSync } = require('fs'); | |
const SOURCE_SPRITES_PATH = path.resolve(__dirname, 'original-files', 'sprites'); | |
const SPRITES_PATH = path.resolve(__dirname, 'assets', 'sprites'); | |
// TODO make it possible to generate only one new asset with `node generate-atlas-files.js assetName` | |
async function generateAtlasFiles(assetName = null) { | |
const spritesFolders = await readdirSync(SOURCE_SPRITES_PATH); | |
// eslint-disable-next-line no-restricted-syntax | |
for (const spritesFolder of spritesFolders) { | |
// eslint-disable-next-line no-await-in-loop | |
const spritesFiles = await readdirSync(path.resolve(__dirname, SOURCE_SPRITES_PATH, spritesFolder)); | |
const images = []; | |
spritesFiles.forEach((spritesFile) => { | |
images.push({ | |
path: spritesFile, | |
contents: readFileSync( | |
path.resolve(__dirname, SOURCE_SPRITES_PATH, spritesFolder, spritesFile) | |
), | |
}); | |
}); | |
// eslint-disable-next-line no-await-in-loop | |
await packImages(images, spritesFolder); | |
} | |
} | |
async function packImages(images, spriteName) { | |
try { | |
const files = await packAsync(images, { allowRotation: false }); | |
// eslint-disable-next-line no-restricted-syntax | |
for (const item of files) { | |
const fileExt = item.name.split('.').pop(); | |
// eslint-disable-next-line no-await-in-loop | |
await writeFileSync( | |
path.resolve(__dirname, SPRITES_PATH, `${spriteName}.${fileExt}`), | |
item.buffer | |
); | |
} | |
} catch (error) { | |
console.log(error); | |
} | |
} | |
generateAtlasFiles(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment