From fad39bf057ad95a4cf14c945064d6cc7a1c2ed14 Mon Sep 17 00:00:00 2001 From: Sylvain Pollet-Villard Date: Sat, 20 Jul 2024 20:23:25 +0200 Subject: [PATCH 1/2] support Phaser 3 exporter --- .../src/texture-packer/packer/createJsons.ts | 123 ++++++++++++------ .../src/texture-packer/packer/packTextures.ts | 1 + 2 files changed, 85 insertions(+), 39 deletions(-) diff --git a/packages/assetpack/src/texture-packer/packer/createJsons.ts b/packages/assetpack/src/texture-packer/packer/createJsons.ts index 8c8144c..c61ec4c 100644 --- a/packages/assetpack/src/texture-packer/packer/createJsons.ts +++ b/packages/assetpack/src/texture-packer/packer/createJsons.ts @@ -20,6 +20,7 @@ export function createJsons( textureFormat: 'png' | 'jpg'; nameStyle: 'short' | 'relative'; removeFileExtension: boolean; + exporter?: 'Phaser3' | 'Pixi'; }, ) { @@ -31,48 +32,92 @@ export function createJsons( { const bin = bins[i]; - const json: any = { - frames: {}, - }; - - for (let j = 0; j < bin.rects.length; j++) - { - const rect = bin.rects[j] as any; - - json.frames[convertName(rect.path, options.nameStyle, options.removeFileExtension)] = { - frame: { - x: rect.x, - y: rect.y, - w: rect.width, - h: rect.height, - }, - rotated: rect.rot, - trimmed: rect.textureData.trimmed, - spriteSourceSize: { - x: rect.textureData.trimOffsetLeft, - y: rect.textureData.trimOffsetTop, - w: rect.width, - h: rect.height, - }, - sourceSize: { - w: rect.textureData.originalWidth, - h: rect.textureData.originalHeight, + const json: any = {}; + + if (options.exporter === "Pixi") { + json.meta = { + app: 'http://github.com/pixijs/assetpack', + version: '1.0', + image: createName(options.textureName, i, bins.length !== 1, options.resolution, options.textureFormat), + format: 'RGBA8888', + size: { + w: width, + h: height, }, + scale: options.resolution, + related_multi_packs: null, + }; + json.frames = {}; + + for (let j = 0; j < bin.rects.length; j++) + { + const rect = bin.rects[j] as any; + + json.frames[convertName(rect.path, options.nameStyle, options.removeFileExtension)] = { + filename: convertName(rect.path, options.nameStyle, options.removeFileExtension), + rotated: rect.rot, + trimmed: rect.textureData.trimmed, + sourceSize: { + w: rect.textureData.originalWidth, + h: rect.textureData.originalHeight, + }, + spriteSourceSize: { + x: rect.textureData.trimOffsetLeft, + y: rect.textureData.trimOffsetTop, + w: rect.width, + h: rect.height, + }, + frame: { + x: rect.x, + y: rect.y, + w: rect.width, + h: rect.height, + }, + }; + } + } else if (options.exporter === "Phaser3") { + json.meta = { + app: 'http://github.com/pixijs/assetpack', + version: '1.0' }; - } - json.meta = { - app: 'http://github.com/pixijs/assetpack', - version: '1.0', - image: createName(options.textureName, i, bins.length !== 1, options.resolution, options.textureFormat), - format: 'RGBA8888', - size: { - w: width, - h: height, - }, - scale: options.resolution, - related_multi_packs: null, - }; + json.textures = [ + { + image: createName(options.textureName, i, bins.length !== 1, options.resolution, options.textureFormat), + format: 'RGBA8888', + size: { + w: width, + h: height, + }, + scale: options.resolution, + frames: [], + } + ]; + + for (let j = 0; j < bin.rects.length; j++) { + const rect = bin.rects[j]; + json.textures[0].frames.push( { + frame: { + x: rect.x, + y: rect.y, + w: rect.width, + h: rect.height, + }, + rotated: rect.rot, + trimmed: rect.textureData.trimmed, + spriteSourceSize: { + x: rect.textureData.trimOffsetLeft, + y: rect.textureData.trimOffsetTop, + w: rect.width, + h: rect.height, + }, + sourceSize: { + w: rect.textureData.originalWidth, + h: rect.textureData.originalHeight, + }, + }); + } + } jsons.push({ name: createName(options.textureName, i, bins.length !== 1, options.resolution, 'json'), diff --git a/packages/assetpack/src/texture-packer/packer/packTextures.ts b/packages/assetpack/src/texture-packer/packer/packTextures.ts index 9cdda8e..1091b27 100644 --- a/packages/assetpack/src/texture-packer/packer/packTextures.ts +++ b/packages/assetpack/src/texture-packer/packer/packTextures.ts @@ -45,6 +45,7 @@ export interface PackTexturesOptions resolution?: number; nameStyle?: 'short' | 'relative'; removeFileExtension?: boolean; + exporter?: "Phaser3" | "Pixi"; // prependFolderName } From 264485d42636bfe663883ed71b44f83fc2fb19ac Mon Sep 17 00:00:00 2001 From: Sylvain Pollet-Villard Date: Sat, 20 Jul 2024 20:27:51 +0200 Subject: [PATCH 2/2] pass default value for exporter option --- packages/assetpack/src/texture-packer/packer/packTextures.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/assetpack/src/texture-packer/packer/packTextures.ts b/packages/assetpack/src/texture-packer/packer/packTextures.ts index 1091b27..0f125f6 100644 --- a/packages/assetpack/src/texture-packer/packer/packTextures.ts +++ b/packages/assetpack/src/texture-packer/packer/packTextures.ts @@ -73,6 +73,7 @@ export async function packTextures( resolution: 1, nameStyle: 'relative', removeFileExtension: false, + exporter: 'Pixi', ..._options, };