@pixi-spine/loader-base
Version:
Pixi loader middleware base
13 lines (12 loc) • 3.25 kB
JavaScript
/*!
* @pixi-spine/loader-base - v4.0.6
* Compiled Mon, 24 Mar 2025 11:44:59 UTC
*
* @pixi-spine/loader-base is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*
* Copyright 2025, Ivan Igorevich Popelyshev <ivan.popelyshev@gmail.com>, All Rights Reserved
*/this.PIXI=this.PIXI||{},this.PIXI.spine=function(m,h,c,a){"use strict";const R={extension:a.ExtensionType.Asset,loader:{extension:{type:a.ExtensionType.LoadParser,priority:c.LoaderParserPriority.Normal},test(n){return c.checkExtension(n,".atlas")},async load(n){return await(await a.settings.ADAPTER.fetch(n)).text()},testParse(n,r){const d=c.checkExtension(r.src,".atlas"),t=typeof n=="string";return Promise.resolve(d&&t)},async parse(n,r,d){const t=r.data;let e=a.utils.path.dirname(r.src);e&&e.lastIndexOf("/")!==e.length-1&&(e+="/");let i=null,o=null;const P=new Promise((p,l)=>{i=p,o=l});let x;const u=p=>{p||o(`Something went terribly wrong loading a spine .atlas file
Most likely your texture failed to load.`),i(x)};if(t.image||t.images){const p=Object.assign(t.image?{default:t.image}:{},t.images);x=new h.TextureAtlas(n,(l,y)=>{const s=p[l]||p.default;s&&s.baseTexture?y(s.baseTexture):y(s)},u)}else x=new h.TextureAtlas(n,f(d,e,t.imageMetadata),u);return await P},unload(n){n.dispose()}}},f=(n,r,d)=>async(t,e)=>{try{const i=a.utils.path.normalize([...r.split(a.utils.path.sep),t].join(a.utils.path.sep)),o=await n.load({src:i,data:d});e(o.baseTexture)}catch(i){h.settings.REPORT_TEXTURE_LOADER_ERROR&&console.error("Spine: error in texture loader",i),e(null)}};a.extensions.add(R);function T(n){return n.hasOwnProperty("bones")}function O(n){return n instanceof ArrayBuffer}class S{constructor(){}installLoader(){const r=this,d={extension:a.ExtensionType.Asset,loader:{extension:{type:a.ExtensionType.LoadParser,priority:c.LoaderParserPriority.Normal},test(t){return c.checkExtension(t,".skel")},async load(t){return await(await a.settings.ADAPTER.fetch(t)).arrayBuffer()},testParse(t,e){var i;const o=c.checkExtension(e.src,".json")&&T(t),P=c.checkExtension(e.src,".skel")&&O(t),x=((i=e.data)==null?void 0:i.spineAtlas)===!1;return Promise.resolve(o&&!x||P)},async parse(t,e,i){var o;const P=a.utils.path.extname(e.src).toLowerCase(),x=a.utils.path.basename(e.src,P);let u=a.utils.path.dirname(e.src);u&&u.lastIndexOf("/")!==u.length-1&&(u+="/");const p=c.checkExtension(e.src,".json")&&T(t);let l=null,y=t;p?l=r.createJsonParser():(l=r.createBinaryParser(),y=new Uint8Array(t));const s=e.data||{},E=(o=s==null?void 0:s.spineSkeletonScale)!=null?o:null;E&&(l.scale=E);const g=s.spineAtlas;if(g&&g.pages)return r.parseData(l,g,y);const I=s.atlasRawData;if(I){let k=null,L=null;const D=new Promise((A,v)=>{k=A,L=v}),X=new h.TextureAtlas(I,f(i,u,s.imageMetadata),A=>{A||L(`Something went terribly wrong loading a spine .atlas file
Most likely your texture failed to load.`),k(X)}),j=await D;return r.parseData(l,j,y)}let w=s.spineAtlasFile;w||(w=`${u+x}.atlas`);const b=await i.load({src:w,data:s,alias:s.spineAtlasAlias});return r.parseData(l,b,y)}}};return a.extensions.add(d),d}}return m.SpineLoaderAbstract=S,m.makeSpineTextureAtlasLoaderFunctionFromPixiLoaderObject=f,m}({},PIXI.spine,PIXI,PIXI);
//# sourceMappingURL=loader-base.js.map