@pixi-spine/loader-base
Version:
Pixi loader middleware base
13 lines (12 loc) • 3.06 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
*/import{TextureAtlas as h,settings as F}from"@pixi-spine/base";import{LoaderParserPriority as L,checkExtension as f}from"@pixi/assets";import{ExtensionType as g,settings as O,utils as m,extensions as k}from"@pixi/core";const I={extension:g.Asset,loader:{extension:{type:g.LoadParser,priority:L.Normal},test(a){return f(a,".atlas")},async load(a){return await(await O.ADAPTER.fetch(a)).text()},testParse(a,r){const c=f(r.src,".atlas"),e=typeof a=="string";return Promise.resolve(c&&e)},async parse(a,r,c){const e=r.data;let t=m.path.dirname(r.src);t&&t.lastIndexOf("/")!==t.length-1&&(t+="/");let n=null,i=null;const y=new Promise((u,o)=>{n=u,i=o});let d;const l=u=>{u||i(`Something went terribly wrong loading a spine .atlas file
Most likely your texture failed to load.`),n(d)};if(e.image||e.images){const u=Object.assign(e.image?{default:e.image}:{},e.images);d=new h(a,(o,p)=>{const s=u[o]||u.default;s&&s.baseTexture?p(s.baseTexture):p(s)},l)}else d=new h(a,A(c,t,e.imageMetadata),l);return await y},unload(a){a.dispose()}}},A=(a,r,c)=>async(e,t)=>{try{const n=m.path.normalize([...r.split(m.path.sep),e].join(m.path.sep)),i=await a.load({src:n,data:c});t(i.baseTexture)}catch(n){F.REPORT_TEXTURE_LOADER_ERROR&&console.error("Spine: error in texture loader",n),t(null)}};k.add(I);function D(a){return a.hasOwnProperty("bones")}function N(a){return a instanceof ArrayBuffer}class _{constructor(){}installLoader(){const r=this,c={extension:g.Asset,loader:{extension:{type:g.LoadParser,priority:L.Normal},test(e){return f(e,".skel")},async load(e){return await(await O.ADAPTER.fetch(e)).arrayBuffer()},testParse(e,t){var n;const i=f(t.src,".json")&&D(e),y=f(t.src,".skel")&&N(e),d=((n=t.data)==null?void 0:n.spineAtlas)===!1;return Promise.resolve(i&&!d||y)},async parse(e,t,n){var i;const y=m.path.extname(t.src).toLowerCase(),d=m.path.basename(t.src,y);let l=m.path.dirname(t.src);l&&l.lastIndexOf("/")!==l.length-1&&(l+="/");const u=f(t.src,".json")&&D(e);let o=null,p=e;u?o=r.createJsonParser():(o=r.createBinaryParser(),p=new Uint8Array(e));const s=t.data||{},T=(i=s==null?void 0:s.spineSkeletonScale)!=null?i:null;T&&(o.scale=T);const x=s.spineAtlas;if(x&&x.pages)return r.parseData(o,x,p);const R=s.atlasRawData;if(R){let b=null,E=null;const v=new Promise((P,M)=>{b=P,E=M}),j=new h(R,A(n,l,s.imageMetadata),P=>{P||E(`Something went terribly wrong loading a spine .atlas file
Most likely your texture failed to load.`),b(j)}),B=await v;return r.parseData(o,B,p)}let w=s.spineAtlasFile;w||(w=`${l+d}.atlas`);const S=await n.load({src:w,data:s,alias:s.spineAtlasAlias});return r.parseData(o,S,p)}}};return k.add(c),c}}export{_ as SpineLoaderAbstract,A as makeSpineTextureAtlasLoaderFunctionFromPixiLoaderObject};
//# sourceMappingURL=loader-base.mjs.map