From 67c49ed8c2f01e26d7eff2fd8e0ec3981d4827a4 Mon Sep 17 00:00:00 2001 From: Matt Jennings Date: Tue, 9 Apr 2024 20:13:14 -0500 Subject: [PATCH 1/2] parse images on each layer individually for native parser add toggleLayer(name, visible) function to resource --- src/AsepriteNativeParser.ts | 91 +++++++++++++++++++++++++++---------- src/AsepriteResource.ts | 14 ++++++ 2 files changed, 80 insertions(+), 25 deletions(-) diff --git a/src/AsepriteNativeParser.ts b/src/AsepriteNativeParser.ts index 10a1d61..2466df7 100644 --- a/src/AsepriteNativeParser.ts +++ b/src/AsepriteNativeParser.ts @@ -1,4 +1,4 @@ -import { Animation, AnimationStrategy, Color, Frame, ImageSource, Sprite, SpriteSheet } from "excalibur"; +import { Animation, AnimationStrategy, Color, Frame, Graphic, GraphicsGroup, ImageSource, Sprite, SpriteSheet } from "excalibur"; import { inflate } from 'pako'; import { AsepriteSpriteSheet } from "./AsepriteSpriteSheet"; @@ -34,8 +34,9 @@ export class AsepriteNativeParser { private _dataView: DataView; private _exFrames: Frame[] = []; private _sprites: Sprite[] = []; + private _spritesByLayer: Map = new Map(); private _tags: Map = new Map(); - private _canvasFrames: CanvasRenderingContext2D[] = []; + private _canvasFramesByLayer: Map = new Map(); private _indexedColors = new Map(); private _currentLayer = 0; private _layerData = new Map(); @@ -50,13 +51,7 @@ export class AsepriteNativeParser { // After parsing the header we know the dimension and the number of frames for (let i = 0; i < this._frames; i++) { - const canvas = document.createElement('canvas'); - canvas.width = this.width; - canvas.height = this.height; - const ctx = canvas.getContext('2d'); - ctx!.imageSmoothingEnabled = false; - this._canvasFrames.push(ctx!); - await this._parseFrame(ctx!); + await this._parseFrame(); } } @@ -67,6 +62,18 @@ export class AsepriteNativeParser { ); } + public getSpritesBylayer(name: string) { + return this._spritesByLayer.get(name) ?? []; + } + + public getLayer(name: string) { + for (const value of this._layerData.values()) { + if (value.name === name) { + return value; + } + } + } + public getFrames(): Frame[] { return this._exFrames; } @@ -111,7 +118,7 @@ export class AsepriteNativeParser { return animation; } - private async _parseFrame(ctx: CanvasRenderingContext2D) { + private async _parseFrame() { const frameSize = this._readDWORD(); const magicNumber = this._readWORD(); const oldChunks = this._readWORD(); @@ -122,24 +129,41 @@ export class AsepriteNativeParser { const numChunks = newChunks === 0 ? oldChunks : newChunks; - for (let i = 0; i < numChunks; i++) { - await this._parseChunk(ctx); + + let sprites: Sprite[] = [] + + for (let i = 0; i < numChunks; i++) { + const chunkResult = await this._parseChunk(); + + if (chunkResult?.chunk === 'image') { + // After parsing the chunks we have the image information for the frame + // TODO update excalibur so that we can make an ImageSource from a canvas + const rawImage = chunkResult.ctx.canvas.toDataURL("image/png"); + const imageSource = new ImageSource(rawImage); + await imageSource.load(); + const sprite = imageSource.toSprite() + sprites.push(sprite) + + if (chunkResult.layerData?.name) { + const sprites = this._spritesByLayer.get(chunkResult.layerData.name) ?? [] + sprites.push(sprite) + this._spritesByLayer.set(chunkResult.layerData.name, sprites); + } + } } - // After parsing the chunks we have the image information for the frame - // TODO update excalibur so that we can make an ImageSource from a canvas - const rawImage = ctx.canvas.toDataURL("image/png"); - const imageSource = new ImageSource(rawImage); - await imageSource.load(); - const sprite = imageSource.toSprite(); - this._sprites.push(sprite); - this._exFrames.push({ - duration: frameDurationMs, - graphic: sprite + + this._sprites.push(...sprites); + + this._exFrames.push({ + graphic: new GraphicsGroup({ + members: sprites + }), + duration: frameDurationMs }) } - private async _parseChunk(ctx: CanvasRenderingContext2D) { + private async _parseChunk() { const startCursor = this._cursor; const size = this._readDWORD(); const type = this._readWORD(); @@ -162,8 +186,8 @@ export class AsepriteNativeParser { } else if (cellType === 1) { const framePosition = this._readWORD(); // Copy the linked frame into this context - const linkedFrame = this._canvasFrames[framePosition]; - ctx.drawImage(linkedFrame.canvas, 0, 0); + const ctx = this._canvasFramesByLayer.get(layerData!.name)![framePosition]; + ctx.drawImage(ctx.canvas, 0, 0); // Compressed image data } else if (cellType === 2) { const width = this._readWORD(); @@ -174,13 +198,30 @@ export class AsepriteNativeParser { const compressed = this._readBytes(sizeToRead); const decompressed = inflate(compressed); const transformed = this._transformImageDataToRGBA(decompressed); + const data = new Uint8ClampedArray(transformed); const imageData = new ImageData(data, width, height); const imageBitmap = await createImageBitmap(imageData); + const canvas = document.createElement('canvas'); + canvas.width = this.width; + canvas.height = this.height; + const ctx = canvas.getContext('2d')!; + ctx.imageSmoothingEnabled = false; + + const canvasFramesByLayer = this._canvasFramesByLayer.get(layerData!.name) ?? []; + canvasFramesByLayer.push(ctx); + this._canvasFramesByLayer.set(layerData!.name, canvasFramesByLayer); + ctx.save(); ctx.globalAlpha = (opacity/255) * (layerData?.opacity ?? 255)/255; ctx.drawImage(imageBitmap, xPos, yPos); ctx.restore(); + + return { + chunk: 'image', + layerData, + ctx, + } // Compressed tilemap } else if (cellType === 3) { // TODO tilemap support diff --git a/src/AsepriteResource.ts b/src/AsepriteResource.ts index 3fc7779..d66812d 100644 --- a/src/AsepriteResource.ts +++ b/src/AsepriteResource.ts @@ -110,4 +110,18 @@ export class AsepriteResource implements Loadable { isLoaded(): boolean { return !!this.data; } + + toggleLayer(name: string, visible: boolean) { + if (!this.data) { + throw new Error('Cannot toggle layer visibility on an unloaded aseprite resource'); + } + + if (!this._nativeParser) { + throw new Error('Cannot toggle layer visibility on a json aseprite resource'); + } + + this._nativeParser?.getSpritesBylayer(name).forEach(sprite => { + sprite.opacity = visible ? 1 : 0; + }) + } } \ No newline at end of file From 93d9471ba39e05d6cb7ca8dcdba685f23246c7c8 Mon Sep 17 00:00:00 2001 From: Matt Jennings Date: Sun, 28 Apr 2024 18:45:25 -0500 Subject: [PATCH 2/2] add darwin snapshots --- ...eprite-parsed-resource-1-chromium-darwin.png | Bin 0 -> 24980 bytes ...seprite-parsed-resource-1-firefox-darwin.png | Bin 0 -> 23107 bytes ...Aseprite-parsed-resource-1-webkit-darwin.png | Bin 0 -> 17730 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-chromium-darwin.png create mode 100644 test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-firefox-darwin.png create mode 100644 test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-webkit-darwin.png diff --git a/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-chromium-darwin.png b/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..85da8b273bf79fe0b84895e98435953148cc38a3 GIT binary patch literal 24980 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 KMg7_D-hTkmzpYFF literal 0 HcmV?d00001 diff --git a/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-firefox-darwin.png b/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-firefox-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..a47be2b78991ac1d28dc79834f625a6bf8c64c63 GIT binary patch literal 23107 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 E05W3Fa{vGU literal 0 HcmV?d00001 diff --git a/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-webkit-darwin.png b/test/integration/aseprite-resource.spec.ts-snapshots/Aseprite-parsed-resource-1-webkit-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3aab1f9c1bdbfa20d390c856167b1a2000a01b GIT binary patch literal 17730 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 literal 0 HcmV?d00001