From 4892bceb66f77db71198aa60a2452de16bc7a7c4 Mon Sep 17 00:00:00 2001 From: Phaser Editor 2D Date: Mon, 4 Sep 2023 04:43:00 -0400 Subject: [PATCH] [Phaser] Adds Asset Pack support (#2337) * [Phaser] Adds Asset Pack support. In Phaser you can use an Asset Pack manifest json file for loading the assets. This PR adds Asset Pack support to the SpinePlugin. * [Phaser] Update SpinePlugin.ts. Fixes code indentation. Fixes code indentation of the previous commit. * [Phaser] Uses typescript interface for loader file configurations. --- spine-ts/spine-phaser/src/SpinePlugin.ts | 38 ++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/spine-ts/spine-phaser/src/SpinePlugin.ts b/spine-ts/spine-phaser/src/SpinePlugin.ts index 389786289..50a037b79 100644 --- a/spine-ts/spine-phaser/src/SpinePlugin.ts +++ b/spine-ts/spine-phaser/src/SpinePlugin.ts @@ -255,8 +255,24 @@ enum SpineSkeletonDataFileType { binary } +interface SpineSkeletonDataFileConfig { + key: string; + url: string; + type: "spineJson" | "spineBinary"; + xhrSettings?: Phaser.Types.Loader.XHRSettingsObject +} + class SpineSkeletonDataFile extends Phaser.Loader.MultiFile { - constructor (loader: Phaser.Loader.LoaderPlugin, key: string, url: string, public fileType: SpineSkeletonDataFileType, xhrSettings: Phaser.Types.Loader.XHRSettingsObject) { + constructor (loader: Phaser.Loader.LoaderPlugin, key: string | SpineSkeletonDataFileConfig, url?: string, public fileType?: SpineSkeletonDataFileType, xhrSettings?: Phaser.Types.Loader.XHRSettingsObject) { + + if (typeof key !== "string") { + const config = key; + key = config.key; + url = config.url; + fileType = config.type === "spineJson" ? SpineSkeletonDataFileType.json : SpineSkeletonDataFileType.binary; + xhrSettings = config.xhrSettings; + } + let file = null; let isJson = fileType == SpineSkeletonDataFileType.json; if (isJson) { @@ -286,8 +302,24 @@ class SpineSkeletonDataFile extends Phaser.Loader.MultiFile { } } +interface SpineAtlasFileConfig { + key: string; + url: string; + premultipliedAlpha?: boolean; + xhrSettings?: Phaser.Types.Loader.XHRSettingsObject; +} + class SpineAtlasFile extends Phaser.Loader.MultiFile { - constructor (loader: Phaser.Loader.LoaderPlugin, key: string, url: string, public premultipliedAlpha: boolean = true, xhrSettings: Phaser.Types.Loader.XHRSettingsObject) { + constructor (loader: Phaser.Loader.LoaderPlugin, key: string | SpineAtlasFileConfig, url?: string, public premultipliedAlpha: boolean = true, xhrSettings?: Phaser.Types.Loader.XHRSettingsObject) { + + if (typeof key !== "string") { + const config = key; + key = config.key; + url = config.url; + premultipliedAlpha = config.premultipliedAlpha ?? true; + xhrSettings = config.xhrSettings; + } + super(loader, SPINE_ATLAS_FILE_TYPE, key, [ new Phaser.Loader.FileTypes.TextFile(loader, { key: key, @@ -296,6 +328,8 @@ class SpineAtlasFile extends Phaser.Loader.MultiFile { extension: "atlas" }) ]); + + this.premultipliedAlpha = premultipliedAlpha; } onFileComplete (file: Phaser.Loader.File) {