diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 82fa7d813..203544bc9 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -2404,27 +2404,47 @@ } }, "node_modules/pixi.js": { - "version": "8.9.1", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.12.0.tgz", + "integrity": "sha512-or7vrH7WajLevu/JnGMdD80JaSpTlXfjwCLtzhg2BL60LWPf1pF0w08Qleiqr1Saj012gevguM//+6HzzVlnfA==", "license": "MIT", "peer": true, "dependencies": { "@pixi/colord": "^2.9.6", "@types/css-font-loading-module": "^0.0.12", - "@types/earcut": "^2.1.4", + "@types/earcut": "^3.0.0", "@webgpu/types": "^0.1.40", "@xmldom/xmldom": "^0.8.10", - "earcut": "^2.2.4", + "earcut": "^3.0.2", "eventemitter3": "^5.0.1", "gifuct-js": "^2.1.2", "ismobilejs": "^1.1.1", "parse-svg-path": "^0.1.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" } }, + "node_modules/pixi.js/node_modules/@types/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-k/9fOUGO39yd2sCjrbAJvGDEQvRwRnQIZlBz43roGwUZo5SHAmyVvSFyaVVZkicRVCaDXPKlbxrUcBuJoSWunQ==", + "license": "MIT", + "peer": true + }, "node_modules/pixi.js/node_modules/@webgpu/types": { "version": "0.1.60", "license": "BSD-3-Clause", "peer": true }, + "node_modules/pixi.js/node_modules/earcut": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==", + "license": "ISC", + "peer": true + }, "node_modules/pixi.js/node_modules/eventemitter3": { "version": "5.0.1", "license": "MIT", @@ -3264,7 +3284,7 @@ "@esotericsoftware/spine-core": "4.2.82" }, "peerDependencies": { - "pixi.js": "^8.4.0" + "pixi.js": "^8.12.0" } }, "spine-player": { diff --git a/spine-ts/spine-pixi-v7/example/inline-loading.html b/spine-ts/spine-pixi-v7/example/inline-loading.html index 60cedfba0..1d7fd6554 100644 --- a/spine-ts/spine-pixi-v7/example/inline-loading.html +++ b/spine-ts/spine-pixi-v7/example/inline-loading.html @@ -24,11 +24,11 @@ // BASE64 DATA const base64Data = { - atlas: "data:text/plain;base64,aW5saW5lLnBuZwpzaXplOjE2LDE2CmZpbHRlcjpMaW5lYXIsTGluZWFyCnBtYTp0cnVlCmRvdApib3VuZHM6MCwwLDEsMQo=", - skel: "data:application/octet-stream;base64,/B8S/IqaXgYHNC4yLjM5wkgAAMJIAABCyAAAQsgAAELIAAAAAQRkb3QCBXJvb3QAAAAAAAAAAAAAAAA/gAAAP4AAAAAAAAAAAAAAAAAAAAAABGRvdAAAAAAAAAAAAAAAAABCyAAAQsgAAAAAAAAAAAAAAAAAAAAAAQRkb3QB//////////8BAAAAAAABAAEBACWwfdcAAAAAP4AAAD+AAAA/gAAAP4AAAAAAAQphbmltYXRpb24BAQABAQMAAAAAAP////8/gAAA/wAA/wBAAAAA/////wAAAAAAAAAAAA==", - json: "data:application/json;base64,ew0KInNrZWxldG9uIjogeyAiaGFzaCI6ICJkZnFNKy9hYStzNCIsICJzcGluZSI6ICI0LjIuNDMiLCAiaW1hZ2VzIjogIi9Vc2Vycy9kYXZpZGV0YW50aWxsby9Eb3dubG9hZHMvaW1hZ2VzIiwgImF1ZGlvIjogIi4vYXVkaW8iIH0sDQoiYm9uZXMiOiBbDQoJeyAibmFtZSI6ICJyb290IiB9LA0KCXsgIm5hbWUiOiAiZG90IiwgInBhcmVudCI6ICJyb290IiwgInNjYWxlWCI6IDEwMCwgInNjYWxlWSI6IDEwMCB9DQpdLA0KInNsb3RzIjogWw0KCXsgIm5hbWUiOiAiZG90IiwgImJvbmUiOiAiZG90IiwgImF0dGFjaG1lbnQiOiAiZG90IiB9DQpdLA0KInNraW5zIjogWw0KCXsNCgkJIm5hbWUiOiAiZGVmYXVsdCIsDQoJCSJhdHRhY2htZW50cyI6IHsNCgkJCSJkb3QiOiB7DQoJCQkJImRvdCI6IHsgIndpZHRoIjogMSwgImhlaWdodCI6IDEgfQ0KCQkJfQ0KCQl9DQoJfQ0KXSwNCiJhbmltYXRpb25zIjogew0KCSJhbmltYXRpb24iOiB7DQoJCSJzbG90cyI6IHsNCgkJCSJkb3QiOiB7DQoJCQkJInJnYmEiOiBbDQoJCQkJCXsgImNvbG9yIjogImZmZmZmZmZmIiB9LA0KCQkJCQl7ICJ0aW1lIjogMSwgImNvbG9yIjogImZmMDAwMGZmIiB9LA0KCQkJCQl7ICJ0aW1lIjogMiwgImNvbG9yIjogImZmZmZmZmZmIiB9DQoJCQkJXQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KfQ==", - png: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAANQTFRF////p8QbyAAAAApJREFUeJxjZAAAAAQAAiFkrWoAAAAASUVORK5CYII=" - } + atlas: "data:text/plain;base64,aW5saW5lLnBuZwpzaXplOjE2LDE2CmZpbHRlcjpMaW5lYXIsTGluZWFyCnBtYTp0cnVlCmRvdApib3VuZHM6MCwwLDEsMQo=", + skel: "data:application/octet-stream;base64,EWfte0PrUB4MNC4zLjM5LWJldGEAAAAAAAAAAAAAAAAAAAAAQsgAAAFB8AAAJy9Vc2Vycy9kYXZpZGV0YW50aWxsby9Eb3dubG9hZHMvaW1hZ2VzCC4vYXVkaW8BBGRvdAIFcm9vdAAAAAAAAAAAAAAAAD+AAAA/gAAAAAAAAAAAAAAAAAAAAACcnJz/AAEEZG90AAAAAAAAAAAAAAAAAELIAABCyAAAAAAAAAAAAAAAAAAAAACcnJz/AAEBBGRvdAH//////////wEAAQABAAEBAAAAAAAAAAAAP4AAAD+AAAA/gAAAP4AAAAAAAQphbmltYXRpb24BAQABAQMAAAAAAP////8/gAAA/wAA/wBAAAAA/////wAAAAAAAAAAAAA=", + json: "data:application/json;base64,eyJza2VsZXRvbiI6eyJoYXNoIjoiRVdmdGUwUHJVQjQiLCJzcGluZSI6IjQuMy4zOS1iZXRhIiwiaW1hZ2VzIjoiL1VzZXJzL2RhdmlkZXRhbnRpbGxvL0Rvd25sb2Fkcy9pbWFnZXMiLCJhdWRpbyI6Ii4vYXVkaW8ifSwiYm9uZXMiOlt7Im5hbWUiOiJyb290In0seyJuYW1lIjoiZG90IiwicGFyZW50Ijoicm9vdCIsInNjYWxlWCI6MTAwLCJzY2FsZVkiOjEwMH1dLCJzbG90cyI6W3sibmFtZSI6ImRvdCIsImJvbmUiOiJkb3QiLCJhdHRhY2htZW50IjoiZG90In1dLCJza2lucyI6W3sibmFtZSI6ImRlZmF1bHQiLCJhdHRhY2htZW50cyI6eyJkb3QiOnsiZG90Ijp7IndpZHRoIjoxLCJoZWlnaHQiOjF9fX19XSwiYW5pbWF0aW9ucyI6eyJhbmltYXRpb24iOnsic2xvdHMiOnsiZG90Ijp7InJnYmEiOlt7ImNvbG9yIjoiZmZmZmZmZmYifSx7InRpbWUiOjEsImNvbG9yIjoiZmYwMDAwZmYifSx7InRpbWUiOjIsImNvbG9yIjoiZmZmZmZmZmYifV19fX19fQ==", + png: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAANQTFRF////p8QbyAAAAApJREFUeJxjZAAAAAQAAiFkrWoAAAAASUVORK5CYII=" + } const textureBase64 = await PIXI.Assets.load({ alias: 'textureBase64', diff --git a/spine-ts/spine-pixi-v8/example/inline-loading.html b/spine-ts/spine-pixi-v8/example/inline-loading.html index 65cd7d987..0319f80aa 100644 --- a/spine-ts/spine-pixi-v8/example/inline-loading.html +++ b/spine-ts/spine-pixi-v8/example/inline-loading.html @@ -2,7 +2,7 @@ spine-pixi-v8 - + @@ -25,27 +25,27 @@ // BASE64 DATA const base64Data = { atlas: "data:text/plain;base64,aW5saW5lLnBuZwpzaXplOjE2LDE2CmZpbHRlcjpMaW5lYXIsTGluZWFyCnBtYTp0cnVlCmRvdApib3VuZHM6MCwwLDEsMQo=", - skel: "data:application/octet-stream;base64,/B8S/IqaXgYHNC4yLjM5wkgAAMJIAABCyAAAQsgAAELIAAAAAQRkb3QCBXJvb3QAAAAAAAAAAAAAAAA/gAAAP4AAAAAAAAAAAAAAAAAAAAAABGRvdAAAAAAAAAAAAAAAAABCyAAAQsgAAAAAAAAAAAAAAAAAAAAAAQRkb3QB//////////8BAAAAAAABAAEBACWwfdcAAAAAP4AAAD+AAAA/gAAAP4AAAAAAAQphbmltYXRpb24BAQABAQMAAAAAAP////8/gAAA/wAA/wBAAAAA/////wAAAAAAAAAAAA==", - json: "data:application/json;base64,ew0KInNrZWxldG9uIjogeyAiaGFzaCI6ICJkZnFNKy9hYStzNCIsICJzcGluZSI6ICI0LjIuNDMiLCAiaW1hZ2VzIjogIi9Vc2Vycy9kYXZpZGV0YW50aWxsby9Eb3dubG9hZHMvaW1hZ2VzIiwgImF1ZGlvIjogIi4vYXVkaW8iIH0sDQoiYm9uZXMiOiBbDQoJeyAibmFtZSI6ICJyb290IiB9LA0KCXsgIm5hbWUiOiAiZG90IiwgInBhcmVudCI6ICJyb290IiwgInNjYWxlWCI6IDEwMCwgInNjYWxlWSI6IDEwMCB9DQpdLA0KInNsb3RzIjogWw0KCXsgIm5hbWUiOiAiZG90IiwgImJvbmUiOiAiZG90IiwgImF0dGFjaG1lbnQiOiAiZG90IiB9DQpdLA0KInNraW5zIjogWw0KCXsNCgkJIm5hbWUiOiAiZGVmYXVsdCIsDQoJCSJhdHRhY2htZW50cyI6IHsNCgkJCSJkb3QiOiB7DQoJCQkJImRvdCI6IHsgIndpZHRoIjogMSwgImhlaWdodCI6IDEgfQ0KCQkJfQ0KCQl9DQoJfQ0KXSwNCiJhbmltYXRpb25zIjogew0KCSJhbmltYXRpb24iOiB7DQoJCSJzbG90cyI6IHsNCgkJCSJkb3QiOiB7DQoJCQkJInJnYmEiOiBbDQoJCQkJCXsgImNvbG9yIjogImZmZmZmZmZmIiB9LA0KCQkJCQl7ICJ0aW1lIjogMSwgImNvbG9yIjogImZmMDAwMGZmIiB9LA0KCQkJCQl7ICJ0aW1lIjogMiwgImNvbG9yIjogImZmZmZmZmZmIiB9DQoJCQkJXQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KfQ==", + skel: "data:application/octet-stream;base64,EWfte0PrUB4MNC4zLjM5LWJldGEAAAAAAAAAAAAAAAAAAAAAQsgAAAFB8AAAJy9Vc2Vycy9kYXZpZGV0YW50aWxsby9Eb3dubG9hZHMvaW1hZ2VzCC4vYXVkaW8BBGRvdAIFcm9vdAAAAAAAAAAAAAAAAD+AAAA/gAAAAAAAAAAAAAAAAAAAAACcnJz/AAEEZG90AAAAAAAAAAAAAAAAAELIAABCyAAAAAAAAAAAAAAAAAAAAACcnJz/AAEBBGRvdAH//////////wEAAQABAAEBAAAAAAAAAAAAP4AAAD+AAAA/gAAAP4AAAAAAAQphbmltYXRpb24BAQABAQMAAAAAAP////8/gAAA/wAA/wBAAAAA/////wAAAAAAAAAAAAA=", + json: "data:application/json;base64,eyJza2VsZXRvbiI6eyJoYXNoIjoiRVdmdGUwUHJVQjQiLCJzcGluZSI6IjQuMy4zOS1iZXRhIiwiaW1hZ2VzIjoiL1VzZXJzL2RhdmlkZXRhbnRpbGxvL0Rvd25sb2Fkcy9pbWFnZXMiLCJhdWRpbyI6Ii4vYXVkaW8ifSwiYm9uZXMiOlt7Im5hbWUiOiJyb290In0seyJuYW1lIjoiZG90IiwicGFyZW50Ijoicm9vdCIsInNjYWxlWCI6MTAwLCJzY2FsZVkiOjEwMH1dLCJzbG90cyI6W3sibmFtZSI6ImRvdCIsImJvbmUiOiJkb3QiLCJhdHRhY2htZW50IjoiZG90In1dLCJza2lucyI6W3sibmFtZSI6ImRlZmF1bHQiLCJhdHRhY2htZW50cyI6eyJkb3QiOnsiZG90Ijp7IndpZHRoIjoxLCJoZWlnaHQiOjF9fX19XSwiYW5pbWF0aW9ucyI6eyJhbmltYXRpb24iOnsic2xvdHMiOnsiZG90Ijp7InJnYmEiOlt7ImNvbG9yIjoiZmZmZmZmZmYifSx7InRpbWUiOjEsImNvbG9yIjoiZmYwMDAwZmYifSx7InRpbWUiOjIsImNvbG9yIjoiZmZmZmZmZmYifV19fX19fQ==", png: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAANQTFRF////p8QbyAAAAApJREFUeJxjZAAAAAQAAiFkrWoAAAAASUVORK5CYII=" } const textureBase64 = await PIXI.Assets.load({ alias: 'textureBase64', - loadParser: 'loadTextures', + parser: 'texture', src: base64Data.png, }) PIXI.Assets.add({ alias: "atlasBase64", - loadParser: "spineTextureAtlasLoader", + parser: "spineTextureAtlasLoader", src: base64Data.atlas, data: { images: { "inline.png": textureBase64.source } } }) PIXI.Assets.add({ alias: "skelBase64", - loadParser: "spineSkeletonLoader", + parser: "spineSkeletonLoader", // loadParser: "loadJson", // use "loadJson", if asset is json src: base64Data.skel, }) @@ -69,14 +69,14 @@ const textureBlob = await PIXI.Assets.load({ alias: 'textureBlob', - loadParser: 'loadTextures', + parser: 'texture', src: URL.createObjectURL(blobData.png), // data: { alphaMode: PIXI.ALPHA_MODES.PMA } // if texture is pma uncomment this and set as pixi preference (preferCreateImageBitmap: false) }) PIXI.Assets.add({ alias: "atlasBlob", - loadParser: "spineTextureAtlasLoader", + parser: "spineTextureAtlasLoader", src: URL.createObjectURL(blobData.atlas), data: { images: { "inline.png": textureBlob.source } } }) @@ -84,7 +84,7 @@ PIXI.Assets.add({ alias: "skelBlob", // loadParser: "spineSkeletonLoader", // use "spineSkeletonLoader", if asset is skel - loadParser: "loadJson", + parser: "loadJson", src: URL.createObjectURL(blobData.json), }) await PIXI.Assets.load(["skelBlob", "atlasBlob"]); diff --git a/spine-ts/spine-pixi-v8/package.json b/spine-ts/spine-pixi-v8/package.json index 3b8e7da35..12e8a614e 100644 --- a/spine-ts/spine-pixi-v8/package.json +++ b/spine-ts/spine-pixi-v8/package.json @@ -34,6 +34,6 @@ "@esotericsoftware/spine-core": "4.2.82" }, "peerDependencies": { - "pixi.js": "^8.4.0" + "pixi.js": "^8.12.0" } } diff --git a/spine-ts/spine-pixi-v8/src/assets/AtlasLoader.ts b/spine-ts/spine-pixi-v8/src/assets/AtlasLoader.ts index 825468b46..148e8d281 100644 --- a/spine-ts/spine-pixi-v8/src/assets/AtlasLoader.ts +++ b/spine-ts/spine-pixi-v8/src/assets/AtlasLoader.ts @@ -27,21 +27,25 @@ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +import { TextureAtlas } from '@esotericsoftware/spine-core'; import { + type AssetExtension, checkExtension, copySearchParams, DOMAdapter, - extensions, ExtensionType, + extensions, + type Loader, LoaderParserPriority, path, + type ResolvedAsset, Resolver, - TextureSource + type Texture, + TextureSource, + type UnresolvedAsset, } from 'pixi.js'; import { SpineTexture } from '../SpineTexture.js'; -import { TextureAtlas } from '@esotericsoftware/spine-core'; -import type { AssetExtension, Loader, ResolvedAsset, Texture, UnresolvedAsset } from 'pixi.js'; type RawAtlas = string; @@ -64,6 +68,7 @@ const spineTextureAtlasLoader: AssetExtension { const isExtensionRight = checkExtension(options.src as string, '.atlas'); const isString = typeof asset === 'string'; - const isExplicitLoadParserSet = options.loadParser === loaderName; + const isExplicitLoadParserSet = options.parser === loaderName || options.loadParser === loaderName; return Promise.resolve((isExtensionRight || isExplicitLoadParserSet) && isString); }, diff --git a/spine-ts/spine-pixi-v8/src/assets/SkeletonLoader.ts b/spine-ts/spine-pixi-v8/src/assets/SkeletonLoader.ts index 85c4cdce7..b6a74cc44 100644 --- a/spine-ts/spine-pixi-v8/src/assets/SkeletonLoader.ts +++ b/spine-ts/spine-pixi-v8/src/assets/SkeletonLoader.ts @@ -31,10 +31,10 @@ import { type AssetExtension, checkExtension, DOMAdapter, - extensions, ExtensionType, + extensions, LoaderParserPriority, - ResolvedAsset + type ResolvedAsset } from 'pixi.js'; type SkeletonJsonAsset = any; @@ -54,6 +54,7 @@ const spineLoaderExtension: AssetExtension { const isJsonSpineModel = checkExtension(options.src!, '.json') && isJson(asset); const isBinarySpineModel = checkExtension(options.src!, '.skel') && isBuffer(asset); - const isExplicitLoadParserSet = options.loadParser === loaderName; + const isExplicitLoadParserSet = options.parser === loaderName || options.loadParser === loaderName; return Promise.resolve(isJsonSpineModel || isBinarySpineModel || isExplicitLoadParserSet); },