@esotericsoftware/spine-phaser-v3 4.2.94 → 4.2.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -81,4 +81,4 @@ varying LOWP vec4 v_color;
81
81
  void main () {
82
82
  gl_FragColor = v_color;
83
83
  }
84
- `;return new ue(e,s,i)}},Ns=class{constructor(t,e,s,i){this.attributes=e,this.context=t instanceof xe?t:new xe(t),this.elementsPerVertex=0;for(let r=0;r<e.length;r++)this.elementsPerVertex+=e[r].numElements;this.vertices=new Float32Array(s*this.elementsPerVertex),this.indices=new Uint16Array(i),this.context.addRestorable(this)}context;vertices;verticesBuffer=null;verticesLength=0;dirtyVertices=!1;indices;indicesBuffer=null;indicesLength=0;dirtyIndices=!1;elementsPerVertex=0;getAttributes(){return this.attributes}maxVertices(){return this.vertices.length/this.elementsPerVertex}numVertices(){return this.verticesLength/this.elementsPerVertex}setVerticesLength(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++){let s=this.attributes[e];t+=s.numElements}return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,s,i){let r=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?r.drawElements(e,i,r.UNSIGNED_SHORT,s*2):r.drawArrays(e,s,i),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let s=0;for(let i=0;i<this.attributes.length;i++){let r=this.attributes[i],h=t.getAttributeLocation(r.name);e.enableVertexAttribArray(h),e.vertexAttribPointer(h,r.numElements,e.FLOAT,!1,this.elementsPerVertex*4,s*4),s+=r.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let s=0;s<this.attributes.length;s++){let i=this.attributes[s],r=t.getAttributeLocation(i.name);e.disableVertexAttribArray(r)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},Ke=class{constructor(t,e,s){this.name=t,this.type=e,this.numElements=s}},yt=class extends Ke{constructor(){super(Me.POSITION,0,2)}},Tn=class extends Ke{constructor(){super(Me.POSITION,0,3)}},Us=class extends Ke{constructor(t=0){super(Me.TEXCOORDS+(t==0?"":t),0,2)}},At=class extends Ke{constructor(){super(Me.COLOR,0,4)}},Oi=class extends Ke{constructor(){super(Me.COLOR2,0,4)}},Vi=(t=>(t[t.Float=0]="Float",t))(Vi||{}),Xe=1,In=769,Di=770,Ni=771,Ui=774,Ws=class He{static disableCulling=!1;context;drawCalls=0;static globalDrawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,s=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof xe?e:new xe(e);let r=s?[new yt,new At,new Us,new Oi]:[new yt,new At,new Us];this.mesh=new Ns(e,r,i,i*3);let h=this.context.gl;this.srcColorBlend=h.SRC_ALPHA,this.srcAlphaBlend=h.ONE,this.dstBlend=h.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=e,this.lastTexture=null,this.isDrawing=!0;let s=this.context.gl;s.enable(s.BLEND),s.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),He.disableCulling&&(this.cullWasEnabled=s.isEnabled(s.CULL_FACE),this.cullWasEnabled&&s.disable(s.CULL_FACE))}static blendModesGL=[{srcRgb:Di,srcRgbPma:Xe,dstRgb:Ni,srcAlpha:Xe},{srcRgb:Di,srcRgbPma:Xe,dstRgb:Xe,srcAlpha:Xe},{srcRgb:Ui,srcRgbPma:Ui,dstRgb:Ni,srcAlpha:Xe},{srcRgb:Xe,srcRgbPma:Xe,dstRgb:In,srcAlpha:Xe}];setBlendMode(e,s){const i=He.blendModesGL[e],r=s?i.srcRgbPma:i.srcRgb,h=i.srcAlpha,l=i.dstRgb;if(this.srcColorBlend==r&&this.srcAlphaBlend==h&&this.dstBlend==l)return;this.srcColorBlend=r,this.srcAlphaBlend=h,this.dstBlend=l,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(r,l,h,l)}draw(e,s,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+s.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let r=this.mesh.numVertices();this.mesh.getVertices().set(s,this.verticesLength),this.verticesLength+=s.length,this.mesh.setVerticesLength(this.verticesLength);let h=this.mesh.getIndices();for(let l=this.indicesLength,n=0;n<i.length;l++,n++)h[l]=i[n]+r;this.indicesLength+=i.length,this.mesh.setIndicesLength(this.indicesLength)}flush(){if(this.verticesLength!=0){if(!this.lastTexture)throw new Error("No texture set.");if(!this.shader)throw new Error("No shader set.");this.lastTexture.bind(),this.mesh.draw(this.shader,this.context.gl.TRIANGLES),this.verticesLength=0,this.indicesLength=0,this.mesh.setVerticesLength(0),this.mesh.setIndicesLength(0),this.drawCalls++,He.globalDrawCalls++}}end(){if(!this.isDrawing)throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()");(this.verticesLength>0||this.indicesLength>0)&&this.flush(),this.shader=null,this.lastTexture=null,this.isDrawing=!1;let e=this.context.gl;e.disable(e.BLEND),He.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=He.globalDrawCalls;return He.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},Gs=class{context;isDrawing=!1;mesh;shapeType=4;color=new K(1,1,1,1);shader=null;vertexIndex=0;tmp=new Ue;srcColorBlend;srcAlphaBlend;dstBlend;constructor(t,e=10920){if(e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof xe?t:new xe(t),this.mesh=new Ns(t,[new yt,new At],e,0);let s=this.context.gl;this.srcColorBlend=s.SRC_ALPHA,this.srcAlphaBlend=s.ONE,this.dstBlend=s.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,s){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=s,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,s,e,s))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,s,i){this.color.set(t,e,s,i)}point(t,e,s){this.check(0,1),s||(s=this.color),this.vertex(t,e,s)}line(t,e,s,i,r){this.check(1,2);let h=this.mesh.getVertices(),l=this.vertexIndex;r||(r=this.color),this.vertex(t,e,r),this.vertex(s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.check(t?4:1,3);let c=this.mesh.getVertices(),d=this.vertexIndex;n||(n=this.color),a||(a=this.color),o||(o=this.color),t?(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(h,l,o)):(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(i,r,n),this.vertex(h,l,a),this.vertex(h,l,n),this.vertex(e,s,a))}quad(t,e,s,i,r,h,l,n,a,o,c,d,u){this.check(t?4:1,3);let m=this.mesh.getVertices(),f=this.vertexIndex;o||(o=this.color),c||(c=this.color),d||(d=this.color),u||(u=this.color),t?(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,u),this.vertex(e,s,o)):(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,u),this.vertex(n,a,u),this.vertex(e,s,o))}rect(t,e,s,i,r,h){this.quad(t,e,s,e+i,s,e+i,s+r,e,s+r,h,h,h,h)}rectLine(t,e,s,i,r,h,l){this.check(t?4:1,8),l||(l=this.color);let n=this.tmp.set(r-s,e-i);n.normalize(),h*=.5;let a=n.x*h,o=n.y*h;t?(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e-a,s-o,l)):(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e+a,s+o,l),this.vertex(i-a,r-o,l),this.vertex(e-a,s-o,l))}x(t,e,s){this.line(t-s,e-s,t+s,e+s),this.line(t-s,e+s,t+s,e-s)}polygon(t,e,s,i){if(s<3)throw new Error("Polygon must contain at least 3 vertices");this.check(1,s*2),i||(i=this.color);let r=this.mesh.getVertices(),h=this.vertexIndex;e<<=1,s<<=1;let l=t[e],n=t[e+1],a=e+s;for(let o=e,c=e+s-2;o<c;o+=2){let d=t[o],u=t[o+1],m=0,f=0;o+2>=a?(m=l,f=n):(m=t[o+2],f=t[o+3]),this.vertex(d,u,i),this.vertex(m,f,i)}}circle(t,e,s,i,r,h=0){if(h==0&&(h=Math.max(1,6*L.cbrt(i)|0)),h<=0)throw new Error("segments must be > 0.");r||(r=this.color);let l=2*L.PI/h,n=Math.cos(l),a=Math.sin(l),o=i,c=0;if(t){this.check(4,h*3+3),h--;for(let u=0;u<h;u++){this.vertex(e,s,r),this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e,s,r),this.vertex(e+o,s+c,r)}else{this.check(1,h*2+2);for(let u=0;u<h;u++){this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e+o,s+c,r)}let d=o;o=i,c=0,this.vertex(e+o,s+c,r)}curve(t,e,s,i,r,h,l,n,a,o){this.check(1,a*2+2),o||(o=this.color);let c=1/a,d=c*c,u=c*c*c,m=3*c,f=3*d,g=6*d,x=6*u,b=t-s*2+r,p=e-i*2+h,w=(s-r)*3-t+l,v=(i-h)*3-e+n,y=t,A=e,C=(s-t)*m+b*f+w*u,S=(i-e)*m+p*f+v*u,I=b*g+w*x,k=p*g+v*x,Y=w*x,F=v*x;for(;a-- >0;)this.vertex(y,A,o),y+=C,A+=S,C+=I,S+=k,I+=Y,k+=F,this.vertex(y,A,o);this.vertex(y,A,o),this.vertex(l,n,o)}vertex(t,e,s){let i=this.vertexIndex,r=this.mesh.getVertices();r[i++]=t,r[i++]=e,r[i++]=s.r,r[i++]=s.g,r[i++]=s.b,r[i++]=s.a,this.vertexIndex=i}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){if(this.vertexIndex!=0){if(!this.shader)throw new Error("No shader set.");this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0}}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},Wi=(t=>(t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled",t))(Wi||{}),Gi=class ti{boneLineColor=new K(1,0,0,1);boneOriginColor=new K(0,1,0,1);attachmentLineColor=new K(0,0,1,.5);triangleLineColor=new K(1,.64,0,.5);pathColor=new K().setFromString("FF7F00");clipColor=new K(.8,0,0,2);aabbColor=new K(0,1,0,.5);drawBones=!0;drawRegionAttachments=!0;drawBoundingBoxes=!0;drawMeshHull=!0;drawMeshTriangles=!0;drawPaths=!0;drawSkeletonXY=!1;drawClipping=!0;premultipliedAlpha=!1;scale=1;boneWidth=2;context;bounds=new Yi;temp=new Array;vertices=X.newFloatArray(2*1024);static LIGHT_GRAY=new K(192/255,192/255,192/255,1);static GREEN=new K(0,1,0,1);constructor(e){this.context=e instanceof xe?e:new xe(e)}draw(e,s,i){let r=s.x,h=s.y,l=this.context.gl,n=this.premultipliedAlpha?l.ONE:l.SRC_ALPHA;e.setBlendMode(n,l.ONE,l.ONE_MINUS_SRC_ALPHA);let a=s.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];if(i&&i.indexOf(d.data.name)>-1||!d.parent)continue;let u=d.data.length*d.a+d.worldX,m=d.data.length*d.c+d.worldY;e.rectLine(!0,d.worldX,d.worldY,u,m,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(r,h,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c],m=u.getAttachment();if(m instanceof ce){let f=m,g=this.vertices;f.computeWorldVertices(u,g,0,2),e.line(g[0],g[1],g[2],g[3]),e.line(g[2],g[3],g[4],g[5]),e.line(g[4],g[5],g[6],g[7]),e.line(g[6],g[7],g[0],g[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof Ge))continue;let f=m,g=this.vertices;f.computeWorldVertices(u,0,f.worldVerticesLength,g,0,2);let x=f.triangles,b=f.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let p=0,w=x.length;p<w;p+=3){let v=x[p]*2,y=x[p+1]*2,A=x[p+2]*2;e.triangle(!1,g[v],g[v+1],g[y],g[y+1],g[A],g[A+1])}}if(this.drawMeshHull&&b>0){e.setColor(this.attachmentLineColor),b=(b>>1)*2;let p=g[b-2],w=g[b-1];for(let v=0,y=b;v<y;v+=2){let A=g[v],C=g[v+1];e.line(A,C,p,w),p=A,w=C}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(s,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let c=o.polygons,d=o.boundingBoxes;for(let u=0,m=c.length;u<m;u++){let f=c[u];e.setColor(d[u].color),e.polygon(f,0,f.length)}}if(this.drawPaths){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof Ze))continue;let f=m,g=f.worldVerticesLength,x=this.temp=X.setArraySize(this.temp,g,0);f.computeWorldVertices(u,0,g,x,0,2);let b=this.pathColor,p=x[2],w=x[3],v=0,y=0;if(f.closed){e.setColor(b);let A=x[0],C=x[1],S=x[g-2],I=x[g-1];v=x[g-4],y=x[g-3],e.curve(p,w,A,C,S,I,v,y,32),e.setColor(ti.LIGHT_GRAY),e.line(p,w,A,C),e.line(v,y,S,I)}g-=4;for(let A=4;A<g;A+=6){let C=x[A],S=x[A+1],I=x[A+2],k=x[A+3];v=x[A+4],y=x[A+5],e.setColor(b),e.curve(p,w,C,S,I,k,v,y,32),e.setColor(ti.LIGHT_GRAY),e.line(p,w,C,S),e.line(v,y,I,k),p=v,w=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];i&&i.indexOf(d.data.name)>-1||e.circle(!0,d.worldX,d.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=s.slots;e.setColor(this.clipColor);for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof rt))continue;let f=m,g=f.worldVerticesLength,x=this.temp=X.setArraySize(this.temp,g,0);f.computeWorldVertices(u,0,g,x,0,2);for(let b=0,p=x.length;b<p;b+=2){let w=x[b],v=x[b+1],y=x[(b+2)%x.length],A=x[(b+3)%x.length];e.line(w,v,y,A)}}}}dispose(){}},Mn=class{constructor(t,e,s){this.vertices=t,this.numVertices=e,this.numFloats=s}},zi=class Cr{static QUAD_TRIANGLES=[0,1,2,2,3,0];premultipliedAlpha=!1;tempColor=new K;tempColor2=new K;vertices;vertexSize=8;twoColorTint=!1;renderable=new Mn([],0,0);clipper=new vt;temp=new Ue;temp2=new Ue;temp3=new K;temp4=new K;constructor(e,s=!0){this.twoColorTint=s,s&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,s,i=-1,r=-1,h=null){let l=this.clipper,n=this.premultipliedAlpha,a=this.twoColorTint,o=null,c=this.renderable,d,u,m=s.drawOrder,f,g=s.color,x=a?12:8,b=!1;i==-1&&(b=!0);for(let p=0,w=m.length;p<w;p++){let v=l.isClipping()?2:x,y=m[p];if(!y.bone.active){l.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(b=!0),!b){l.clipEndWithSlot(y);continue}r>=0&&r==y.data.index&&(b=!1);let A=y.getAttachment(),C;if(A instanceof ce){let S=A;c.vertices=this.vertices,c.numVertices=4,c.numFloats=v<<2,S.computeWorldVertices(y,c.vertices,0,v),u=Cr.QUAD_TRIANGLES,d=S.uvs,C=S.region.texture,f=S.color}else if(A instanceof Ge){let S=A;c.vertices=this.vertices,c.numVertices=S.worldVerticesLength>>1,c.numFloats=c.numVertices*v,c.numFloats>c.vertices.length&&(c.vertices=this.vertices=X.newFloatArray(c.numFloats)),S.computeWorldVertices(y,0,S.worldVerticesLength,c.vertices,0,v),u=S.triangles,C=S.region.texture,d=S.uvs,f=S.color}else if(A instanceof rt){let S=A;l.clipStart(y,S);continue}else{l.clipEndWithSlot(y);continue}if(C){let S=y.color,I=this.tempColor;I.r=g.r*S.r*f.r,I.g=g.g*S.g*f.g,I.b=g.b*S.b*f.b,I.a=g.a*S.a*f.a,n&&(I.r*=I.a,I.g*=I.a,I.b*=I.a);let k=this.tempColor2;y.darkColor?(n?(k.r=y.darkColor.r*I.a,k.g=y.darkColor.g*I.a,k.b=y.darkColor.b*I.a):k.setFromColor(y.darkColor),k.a=n?1:0):k.set(0,0,0,1);let Y=y.data.blendMode;if(Y!=o&&(o=Y,e.setBlendMode(o,n)),l.isClipping()){l.clipTriangles(c.vertices,u,u.length,d,I,k,a);let F=new Float32Array(l.clippedVertices),P=l.clippedTriangles;h&&h(F,F.length,x),e.draw(C,F,P)}else{let F=c.vertices;if(a)for(let M=2,R=0,B=c.numFloats;M<B;M+=x,R+=2)F[M]=I.r,F[M+1]=I.g,F[M+2]=I.b,F[M+3]=I.a,F[M+4]=d[R],F[M+5]=d[R+1],F[M+6]=k.r,F[M+7]=k.g,F[M+8]=k.b,F[M+9]=k.a;else for(let M=2,R=0,B=c.numFloats;M<B;M+=x,R+=2)F[M]=I.r,F[M+1]=I.g,F[M+2]=I.b,F[M+3]=I.a,F[M+4]=d[R],F[M+5]=d[R+1];let P=c.vertices.subarray(0,c.numFloats);h&&h(c.vertices,c.numFloats,x),e.draw(C,P,u)}}l.clipEndWithSlot(y)}l.clipEnd()}getSkeletonClipping(){return this.clipper}},T=[0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0],Ct=[0,1,2,2,3,0],St=new K(1,1,1,1),zs=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(t,e,s=!0){this.canvas=t,this.context=e instanceof xe?e:new xe(e),this.twoColorTint=s,this.camera=new Xi(t.width,t.height),this.batcherShader=s?Me.newTwoColoredTextured(this.context):Me.newColoredTextured(this.context),this.batcher=new Ws(this.context,s),this.shapesShader=Me.newColored(this.context),this.shapes=new Gs(this.context),this.skeletonRenderer=new zi(this.context,s),this.skeletonDebugRenderer=new Gi(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,s=-1,i=-1,r=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,s,i,r)}drawSkeletonDebug(t,e=!1,s){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,s)}drawTexture(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=St);var l=0;T[l++]=e,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=0,T[l++]=1,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=1,T[l++]=1,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=1,T[l++]=0,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=0,T[l++]=0,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l]=0),this.batcher.draw(t,T,Ct)}drawTextureUV(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.batcher),o||(o=St);var c=0;T[c++]=e,T[c++]=s,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=h,T[c++]=l,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e+i,T[c++]=s,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=n,T[c++]=l,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e+i,T[c++]=s+r,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=n,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e,T[c++]=s+r,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=h,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c]=0),this.batcher.draw(t,T,Ct)}drawTextureRotated(t,e,s,i,r,h,l,n,a){this.enableRenderer(this.batcher),a||(a=St);let o=e+h,c=s+l,d=-h,u=-l,m=i-h,f=r-l,g=d,x=u,b=d,p=f,w=m,v=f,y=m,A=u,C=0,S=0,I=0,k=0,Y=0,F=0,P=0,M=0;if(n!=0){let B=L.cosDeg(n),se=L.sinDeg(n);C=B*g-se*x,S=se*g+B*x,P=B*b-se*p,M=se*b+B*p,Y=B*w-se*v,F=se*w+B*v,I=Y+(C-P),k=F+(S-M)}else C=g,S=x,P=b,M=p,Y=w,F=v,I=y,k=A;C+=o,S+=c,I+=o,k+=c,Y+=o,F+=c,P+=o,M+=c;var R=0;T[R++]=C,T[R++]=S,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=0,T[R++]=1,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=I,T[R++]=k,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=1,T[R++]=1,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=Y,T[R++]=F,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=1,T[R++]=0,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=P,T[R++]=M,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=0,T[R++]=0,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R]=0),this.batcher.draw(t,T,Ct)}drawRegion(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=St);var l=0;T[l++]=e,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u,T[l++]=t.v2,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u2,T[l++]=t.v2,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u2,T[l++]=t.v,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u,T[l++]=t.v,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l]=0),this.batcher.draw(t.page.texture,T,Ct)}line(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.line(t,e,s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,s,i,r,h,l,n,a,o)}quad(t,e,s,i,r,h,l,n,a,o,c,d,u){this.enableRenderer(this.shapes),this.shapes.quad(t,e,s,i,r,h,l,n,a,o,c,d,u)}rect(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.rect(t,e,s,i,r,h)}rectLine(t,e,s,i,r,h,l){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,s,i,r,h,l)}polygon(t,e,s,i){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,s,i)}circle(t,e,s,i,r,h=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,s,i,r,h)}curve(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.curve(t,e,s,i,r,h,l,n,a,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var s=window.devicePixelRatio||1,i=Math.round(e.clientWidth*s),r=Math.round(e.clientHeight*s);if((e.width!=i||e.height!=r)&&(e.width=i,e.height=r),this.context.gl.viewport(0,0,e.width,e.height),t===1)this.camera.setViewport(i,r);else if(t===2){let h=e.width,l=e.height,n=this.camera.viewportWidth,a=this.camera.viewportHeight,o=a/n,c=l/h,d=o<c?n/h:a/l;this.camera.setViewport(h*d,l*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof Ws?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Gs?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},qi=(t=>(t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit",t))(qi||{}),Qe,qe,qs=0,En=1,_s=1,Tt=165,It=108,Ee=163,Rn=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Ot;backgroundColor=new K(.135,.135,.135,1);tempColor=new K;constructor(t){if(this.renderer=t,this.timeKeeper.maxDelta=9,!qe){let e=navigator.userAgent.indexOf("Safari")>-1,s=()=>qs++;qe=new Image,qe.src=Yn,e||(qe.crossOrigin="anonymous"),qe.onload=s,Qe=new Image,Qe.src=kn,e||(Qe.crossOrigin="anonymous"),Qe.onload=s}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(t=!1){if(qs<2||t&&this.fadeOut>_s)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let s=this.tempColor,i=this.renderer,r=i.canvas,h=i.context.gl;if(i.resize(1),i.camera.position.set(r.width/2,r.height/2,0),i.batcher.setBlendMode(0,!0),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>_s)return;s.setFromColor(this.backgroundColor),e=1-this.fadeOut/_s,e=1-(e-1)*(e-1),s.a*=e,s.a>0&&(i.camera.zoom=1,i.begin(),i.quad(!0,0,0,r.width,0,r.width,r.height,0,r.height,s,s,s,s),i.end())}else this.fadeIn+=this.timeKeeper.delta,this.backgroundColor.a>0&&(h.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),h.clear(h.COLOR_BUFFER_BIT)),e=1;e*=Math.min(this.fadeIn/En,1),s.set(e,e,e,e),this.logo||(this.logo=new ze(i.context,qe),this.spinner=new ze(i.context,Qe)),i.camera.zoom=Math.max(1,Ee/r.height),i.begin(),i.drawTexture(this.logo,(r.width-Tt)/2,(r.height-It)/2,Tt,It,s),this.spinner&&i.drawTextureRotated(this.spinner,(r.width-Ee)/2,(r.height-Ee)/2,Ee,Ee,Ee/2,Ee/2,this.angle,s),i.end()}drawInCoordinates(t,e){if(qs<2)return;this.timeKeeper.update();let s=this.renderer;s.batcher.setBlendMode(0,!0),this.logo||(this.logo=new ze(s.context,qe),this.spinner=new ze(s.context,Qe));const i=t-Tt/2,r=e-It/2;s.drawTexture(this.logo,i,r,Tt,It),this.angle-=this.timeKeeper.delta*500,this.spinner&&s.drawTextureRotated(this.spinner,i,r-25,Ee,Ee,Ee/2,Ee/2,this.angle)}},kn="data:image/png;base64,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",Yn="data:image/png;base64,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",Fn=class{constructor(t,e){this.config=e,e.pathPrefix||(e.pathPrefix=""),e.app||(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),e.webglConfig||(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new xe(t,e.webglConfig),this.renderer=new zs(t,this.context),this.gl=this.context.gl,this.assetManager=new Li(this.context,e.pathPrefix),this.input=new Ds(t),e.app.loadAssets&&e.app.loadAssets(this);let s=()=>{this.disposed||(requestAnimationFrame(s),this.time.update(),e.app.update&&e.app.update(this,this.time.delta),e.app.render&&e.app.render(this))},i=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error&&e.app.error(this,this.assetManager.getErrors()):(e.app.initialize&&e.app.initialize(this),s());return}requestAnimationFrame(i)}};requestAnimationFrame(i)}context;time=new Ot;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(t,e,s,i){this.gl.clearColor(t,e,s,i),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}},ye=Yr(Rr("Phaser"),1),Pn="esotericsoftware.spine.skeletonFile.cache",Ln="esotericsoftware.spine.atlas.cache",Xn="spineSkeletonData",Bn="spineAtlasData",Hs="spine",Ve=Phaser.GameObjects.Components,_i=Ve.ComputedSize,Hi=Ve.Depth,ji=Ve.Flip,Zi=Ve.ScrollFactor,Ji=Ve.Transform,Ki=Ve.Visible,Qi=Ve.Origin,$i=Ve.Alpha;function Be(...t){return e=>(Phaser.Class.mixin(e,t),e)}var er=Be(_i),tr=Be(Hi),sr=Be(ji),ir=Be(Zi),rr=Be(Ji),nr=Be(Ki),ar=Be(Qi),lr=Be($i),On=class extends Phaser.GameObjects.GameObject{constructor(t,e){super(t,e)}},Vn=class{constructor(t,e,s,i){this.x=t,this.y=e,this.width=s,this.height=i}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},or=class{constructor(t=!1){this.clipping=t}calculateBounds(t){if(!t.skeleton)return{x:0,y:0,width:0,height:0};const e=new Je(t.skeleton.data);e.setToSetupPose(),e.updateWorldTransform(2);const s=e.getBoundsRect(this.clipping?new vt:void 0);return s.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:s}},Dn=class{constructor(t,e=[],s=.05,i=!1){this.animation=t,this.skins=e,this.timeStep=s,this.clipping=i}calculateBounds(t){if(!t.skeleton||!t.animationState)return{x:0,y:0,width:0,height:0};const e=new gs(t.animationState.data),s=new Je(t.skeleton.data),i=this.clipping?new vt:void 0,r=s.data;if(this.skins.length>0){let l=new at("custom-skin");for(const n of this.skins){const a=r.findSkin(n);a!=null&&l.addSkin(a)}s.setSkin(l)}s.setToSetupPose();const h=this.animation!=null?r.findAnimation(this.animation):null;if(h==null){s.updateWorldTransform(2);const l=s.getBoundsRect(i);return l.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:l}else{let l=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;e.clearTracks(),e.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let u=0;u<c;u++){const m=u>0?this.timeStep:0;e.update(m),e.apply(s),s.update(m),s.updateWorldTransform(2);const f=s.getBoundsRect(i);l=Math.min(l,f.x),n=Math.min(n,f.y),a=Math.max(a,f.x+f.width),o=Math.max(o,f.y+f.height)}const d={x:l,y:n,width:a-l,height:o-n};return d.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:d}}},js=class extends tr(ar(er(sr(ir(rr(nr(lr(On)))))))){constructor(t,e,s,i,r,h,l=new or){super(t,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs),this.plugin=e,this.boundsProvider=l,this.setPosition(s,i),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(r,h),this.animationStateData=new pi(this.skeleton.data),this.animationState=new gs(this.animationStateData),this.skeleton.updateWorldTransform(2),this.updateSize()}blendMode=-1;skeleton;animationStateData;animationState;beforeUpdateWorldTransforms=()=>{};afterUpdateWorldTransforms=()=>{};premultipliedAlpha=!1;offsetX=0;offsetY=0;updateSize(){if(!this.skeleton)return;let t=this.boundsProvider.calculateBounds(this);this.width=t.width,this.height=t.height,this.setDisplayOrigin(-t.x,-t.y),this.offsetX=-t.x,this.offsetY=-t.y}skeletonToPhaserWorldCoordinates(t){let e=this.getWorldTransformMatrix(),s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToSkeleton(t){let e=this.getWorldTransformMatrix();e=e.invert();let s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToBone(t,e){this.phaserWorldCoordinatesToSkeleton(t),e.parent?e.parent.worldToLocal(t):e.worldToLocal(t)}updatePose(t){this.animationState.update(t/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(t/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(t,e){!this.skeleton||!this.animationState||this.updatePose(e)}preDestroy(){}willRender(t){var e=15,s=!this.skeleton||!(e!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&t.id);if(this.visible||(s=!1),!s&&this.parentContainer&&this.plugin.webGLRenderer){var i=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&i.batcher.isDrawing&&(i.end(),this.plugin.phaserRenderer.pipelines.rebind())}return s}renderWebGL(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let r=this.plugin.webGLRenderer;t.newType&&(t.pipelines.clear(),r.begin()),s.addToRenderList(e);let h=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,l=h.a,n=h.b,a=h.c,o=h.d,c=h.tx,d=h.ty,u=e.offsetX-e.displayOriginX,m=e.offsetY-e.displayOriginY;r.drawSkeleton(e.skeleton,e.premultipliedAlpha,-1,-1,(f,g,x)=>{for(let b=0;b<g;b+=x){let p=f[b]+u,w=f[b+1]+m;f[b]=p*l+w*a+c,f[b+1]=p*n+w*o+d}}),t.nextTypeMatch||(r.end(),t.pipelines.rebind())}renderCanvas(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let r=t.currentContext,h=this.plugin.canvasRenderer;h.ctx=r,s.addToRenderList(e);let l=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,n=this.skeleton;n.x=l.tx,n.y=l.ty,n.scaleX=l.scaleX,n.scaleY=l.scaleY;let a=n.getRootBone();a.rotation=-L.radiansToDegrees*l.rotationNormalized,this.skeleton.updateWorldTransform(2),r.save(),h.draw(n),r.restore()}};Je.yDown=!0;var Zs=class Xt extends ye.Plugins.ScenePlugin{game;isWebGL;gl;static gameWebGLRenderer=null;get webGLRenderer(){return Xt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,s,i){super(e,s,i),this.game=s.game,this.isWebGL=this.game.config.renderType===2,this.gl=this.isWebGL?this.game.renderer.gl:null,this.phaserRenderer=this.game.renderer,this.canvasRenderer=null,this.skeletonDataCache=this.game.cache.addCustom(Pn),this.atlasCache=this.game.cache.addCustom(Ln);let r=function(o,c,d){let u=new hr(this,o,c,0,d);return this.addFile(u.files),this};s.registerFileType("spineJson",r,e);let h=function(o,c,d){let u=new hr(this,o,c,1,d);return this.addFile(u.files),this};s.registerFileType("spineBinary",h,e);let l=function(o,c,d,u){let m=new Nn(this,o,c,d,u);return this.addFile(m.files),this};s.registerFileType("spineAtlas",l,e);let n=function(o,c,d,u,m){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const f=this.scene.sys[i];let g=new js(this.scene,f,o,c,d,u,m);return this.displayList.add(g),this.updateList.add(g),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),g},a=function(o,c=!1){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let d=o.x?o.x:0,u=o.y?o.y:0,m=o.boundsProvider?o.boundsProvider:void 0;const f=this.scene.sys[i];let g=new js(this.scene,f,d,u,o.dataKey,o.atlasKey,m);return c!==void 0&&(o.add=c),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),ye.GameObjects.BuildGameObject(this.scene,g,o)};s.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs,n,a)}static rendererId=0;boot(){this.isWebGL&&this.gl?Xt.gameWebGLRenderer||=new zs(this.game.renderer.canvas,this.gl,!0):this.scene&&(this.canvasRenderer||=new Cn(this.scene.sys.context)),this.onResize(),this.systems&&(this.systems.events.once("destroy",this.destroy,this),this.systems.events.on("start",this.onStart,this),this.systems.events.on("shutdown",this.shutdown,this)),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){const e=this.game.renderer,s=this.webGLRenderer;if(e&&s){const i=e.width,r=e.height;s.camera.position.x=i/2,s.camera.position.y=r/2,s.camera.up.y=-1,s.camera.direction.z=1,s.camera.setViewport(i,r)}}onStart(){this.game.scale.on(ye.Scale.Events.RESIZE,this.onResize,this)}shutdown(){this.isWebGL&&this.game.scale.off(ye.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown(),this.systems?.events.off("start",this.onStart,this),this.systems?.events.off("shutdown",this.shutdown,this)}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),Xt.gameWebGLRenderer=null}getAtlas(e){let s;if(this.atlasCache.exists(e))s=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(s=new wt(i.data),this.isWebGL){let r=this.gl;const h=r.getParameter(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL);h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let l of s.pages)l.setTexture(new ze(r,this.game.textures.get(e+"!"+l.name).getSourceImage(),!1));h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let r of s.pages)r.setTexture(new yn(this.game.textures.get(e+"!"+r.name).getSourceImage()));this.atlasCache.add(e,s)}return s}isAtlasPremultiplied(e){let s=this.game.cache.text.get(e);return s?s.premultipliedAlpha:!1}getSkeletonData(e,s){const i=this.getAtlas(s),r=e+s;let h;if(this.skeletonDataCache.exists(r))h=this.skeletonDataCache.get(r);else{if(this.game.cache.json.exists(e)){let l=this.game.cache.json.get(e);h=new Pi(new ys(i)).readSkeletonData(l)}else{let l=this.game.cache.binary.get(e);h=new Ri(new ys(i)).readSkeletonData(new Uint8Array(l))}this.skeletonDataCache.add(r,h)}return h}createSkeleton(e,s){return new Je(this.getSkeletonData(e,s))}},hr=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const n=e;e=n.key,s=n.url,i=n.type==="spineJson"?0:1,r=n.xhrSettings}let h=null;i==0?h=new ye.Loader.FileTypes.JSONFile(t,{key:e,url:s,extension:"json",xhrSettings:r}):h=new ye.Loader.FileTypes.BinaryFile(t,{key:e,url:s,extension:"skel",xhrSettings:r}),super(t,Xn,e,[h]),this.fileType=i}onFileComplete(t){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Nn=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const h=e;e=h.key,s=h.url,i=h.premultipliedAlpha,r=h.xhrSettings}super(t,Bn,e,[new ye.Loader.FileTypes.TextFile(t,{key:e,url:s,xhrSettings:r,extension:"atlas"})]),this.premultipliedAlpha=i}onFileComplete(t){if(this.files.indexOf(t)!=-1&&(this.pending--,t.type=="text")){var e=t.data.split(/\r\n|\r|\n/);let a=[];a.push(e[0]);for(var s=1;s<e.length;s++){var i=e[s];i.trim()===""&&s<e.length-1&&(i=e[s+1],a.push(i))}let o=(t.src.match(/^.*\//)??"").toString();this.loader.path&&this.loader.path.length>0&&o.startsWith(this.loader.path)&&(o=o.slice(this.loader.path.length));for(var r=0;r<a.length;r++){var h=o+a[r],l=t.key+"!"+a[r],n=new ye.Loader.FileTypes.ImageFile(this.loader,l,h);this.loader.keyExists(n)||(this.addToMultiFile(n),this.loader.addFile(n))}}}addToCache(){if(this.isReadyToProcess()){let t=this.loader.textureManager;for(let e of this.files)e.type=="image"?t.exists(e.key)||t.addImage(e.key,e.data):(this.premultipliedAlpha=this.premultipliedAlpha??(e.data.indexOf("pma: true")>=0||e.data.indexOf("pma:true")>=0),e.data={data:e.data,premultipliedAlpha:this.premultipliedAlpha},e.addToCache())}}};return window.spine={SpinePlugin:Zs},window["spine.SpinePlugin"]=Zs,Fr(ii)})();
84
+ `;return new ue(e,s,i)}},Ns=class{constructor(t,e,s,i){this.attributes=e,this.context=t instanceof xe?t:new xe(t),this.elementsPerVertex=0;for(let r=0;r<e.length;r++)this.elementsPerVertex+=e[r].numElements;this.vertices=new Float32Array(s*this.elementsPerVertex),this.indices=new Uint16Array(i),this.context.addRestorable(this)}context;vertices;verticesBuffer=null;verticesLength=0;dirtyVertices=!1;indices;indicesBuffer=null;indicesLength=0;dirtyIndices=!1;elementsPerVertex=0;getAttributes(){return this.attributes}maxVertices(){return this.vertices.length/this.elementsPerVertex}numVertices(){return this.verticesLength/this.elementsPerVertex}setVerticesLength(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++){let s=this.attributes[e];t+=s.numElements}return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,s,i){let r=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?r.drawElements(e,i,r.UNSIGNED_SHORT,s*2):r.drawArrays(e,s,i),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let s=0;for(let i=0;i<this.attributes.length;i++){let r=this.attributes[i],h=t.getAttributeLocation(r.name);e.enableVertexAttribArray(h),e.vertexAttribPointer(h,r.numElements,e.FLOAT,!1,this.elementsPerVertex*4,s*4),s+=r.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let s=0;s<this.attributes.length;s++){let i=this.attributes[s],r=t.getAttributeLocation(i.name);e.disableVertexAttribArray(r)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},Ke=class{constructor(t,e,s){this.name=t,this.type=e,this.numElements=s}},yt=class extends Ke{constructor(){super(Me.POSITION,0,2)}},Tn=class extends Ke{constructor(){super(Me.POSITION,0,3)}},Us=class extends Ke{constructor(t=0){super(Me.TEXCOORDS+(t==0?"":t),0,2)}},At=class extends Ke{constructor(){super(Me.COLOR,0,4)}},Oi=class extends Ke{constructor(){super(Me.COLOR2,0,4)}},Vi=(t=>(t[t.Float=0]="Float",t))(Vi||{}),Xe=1,In=769,Di=770,Ni=771,Ui=774,Ws=class He{static disableCulling=!1;context;drawCalls=0;static globalDrawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,s=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof xe?e:new xe(e);let r=s?[new yt,new At,new Us,new Oi]:[new yt,new At,new Us];this.mesh=new Ns(e,r,i,i*3);let h=this.context.gl;this.srcColorBlend=h.SRC_ALPHA,this.srcAlphaBlend=h.ONE,this.dstBlend=h.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=e,this.lastTexture=null,this.isDrawing=!0;let s=this.context.gl;s.enable(s.BLEND),s.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),He.disableCulling&&(this.cullWasEnabled=s.isEnabled(s.CULL_FACE),this.cullWasEnabled&&s.disable(s.CULL_FACE))}static blendModesGL=[{srcRgb:Di,srcRgbPma:Xe,dstRgb:Ni,srcAlpha:Xe},{srcRgb:Di,srcRgbPma:Xe,dstRgb:Xe,srcAlpha:Xe},{srcRgb:Ui,srcRgbPma:Ui,dstRgb:Ni,srcAlpha:Xe},{srcRgb:Xe,srcRgbPma:Xe,dstRgb:In,srcAlpha:Xe}];setBlendMode(e,s){const i=He.blendModesGL[e],r=s?i.srcRgbPma:i.srcRgb,h=i.srcAlpha,l=i.dstRgb;if(this.srcColorBlend==r&&this.srcAlphaBlend==h&&this.dstBlend==l)return;this.srcColorBlend=r,this.srcAlphaBlend=h,this.dstBlend=l,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(r,l,h,l)}draw(e,s,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+s.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let r=this.mesh.numVertices();this.mesh.getVertices().set(s,this.verticesLength),this.verticesLength+=s.length,this.mesh.setVerticesLength(this.verticesLength);let h=this.mesh.getIndices();for(let l=this.indicesLength,n=0;n<i.length;l++,n++)h[l]=i[n]+r;this.indicesLength+=i.length,this.mesh.setIndicesLength(this.indicesLength)}flush(){if(this.verticesLength!=0){if(!this.lastTexture)throw new Error("No texture set.");if(!this.shader)throw new Error("No shader set.");this.lastTexture.bind(),this.mesh.draw(this.shader,this.context.gl.TRIANGLES),this.verticesLength=0,this.indicesLength=0,this.mesh.setVerticesLength(0),this.mesh.setIndicesLength(0),this.drawCalls++,He.globalDrawCalls++}}end(){if(!this.isDrawing)throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()");(this.verticesLength>0||this.indicesLength>0)&&this.flush(),this.shader=null,this.lastTexture=null,this.isDrawing=!1;let e=this.context.gl;e.disable(e.BLEND),He.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=He.globalDrawCalls;return He.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},Gs=class{context;isDrawing=!1;mesh;shapeType=4;color=new K(1,1,1,1);shader=null;vertexIndex=0;tmp=new Ue;srcColorBlend;srcAlphaBlend;dstBlend;constructor(t,e=10920){if(e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof xe?t:new xe(t),this.mesh=new Ns(t,[new yt,new At],e,0);let s=this.context.gl;this.srcColorBlend=s.SRC_ALPHA,this.srcAlphaBlend=s.ONE,this.dstBlend=s.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,s){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=s,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,s,e,s))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,s,i){this.color.set(t,e,s,i)}point(t,e,s){this.check(0,1),s||(s=this.color),this.vertex(t,e,s)}line(t,e,s,i,r){this.check(1,2);let h=this.mesh.getVertices(),l=this.vertexIndex;r||(r=this.color),this.vertex(t,e,r),this.vertex(s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.check(t?4:1,3);let c=this.mesh.getVertices(),d=this.vertexIndex;n||(n=this.color),a||(a=this.color),o||(o=this.color),t?(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(h,l,o)):(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(i,r,n),this.vertex(h,l,a),this.vertex(h,l,n),this.vertex(e,s,a))}quad(t,e,s,i,r,h,l,n,a,o,c,d,u){this.check(t?4:1,3);let m=this.mesh.getVertices(),f=this.vertexIndex;o||(o=this.color),c||(c=this.color),d||(d=this.color),u||(u=this.color),t?(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,u),this.vertex(e,s,o)):(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,u),this.vertex(n,a,u),this.vertex(e,s,o))}rect(t,e,s,i,r,h){this.quad(t,e,s,e+i,s,e+i,s+r,e,s+r,h,h,h,h)}rectLine(t,e,s,i,r,h,l){this.check(t?4:1,8),l||(l=this.color);let n=this.tmp.set(r-s,e-i);n.normalize(),h*=.5;let a=n.x*h,o=n.y*h;t?(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e-a,s-o,l)):(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e+a,s+o,l),this.vertex(i-a,r-o,l),this.vertex(e-a,s-o,l))}x(t,e,s){this.line(t-s,e-s,t+s,e+s),this.line(t-s,e+s,t+s,e-s)}polygon(t,e,s,i){if(s<3)throw new Error("Polygon must contain at least 3 vertices");this.check(1,s*2),i||(i=this.color);let r=this.mesh.getVertices(),h=this.vertexIndex;e<<=1,s<<=1;let l=t[e],n=t[e+1],a=e+s;for(let o=e,c=e+s-2;o<c;o+=2){let d=t[o],u=t[o+1],m=0,f=0;o+2>=a?(m=l,f=n):(m=t[o+2],f=t[o+3]),this.vertex(d,u,i),this.vertex(m,f,i)}}circle(t,e,s,i,r,h=0){if(h==0&&(h=Math.max(1,6*L.cbrt(i)|0)),h<=0)throw new Error("segments must be > 0.");r||(r=this.color);let l=2*L.PI/h,n=Math.cos(l),a=Math.sin(l),o=i,c=0;if(t){this.check(4,h*3+3),h--;for(let u=0;u<h;u++){this.vertex(e,s,r),this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e,s,r),this.vertex(e+o,s+c,r)}else{this.check(1,h*2+2);for(let u=0;u<h;u++){this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e+o,s+c,r)}let d=o;o=i,c=0,this.vertex(e+o,s+c,r)}curve(t,e,s,i,r,h,l,n,a,o){this.check(1,a*2+2),o||(o=this.color);let c=1/a,d=c*c,u=c*c*c,m=3*c,f=3*d,g=6*d,x=6*u,b=t-s*2+r,p=e-i*2+h,w=(s-r)*3-t+l,v=(i-h)*3-e+n,y=t,A=e,C=(s-t)*m+b*f+w*u,S=(i-e)*m+p*f+v*u,I=b*g+w*x,k=p*g+v*x,Y=w*x,F=v*x;for(;a-- >0;)this.vertex(y,A,o),y+=C,A+=S,C+=I,S+=k,I+=Y,k+=F,this.vertex(y,A,o);this.vertex(y,A,o),this.vertex(l,n,o)}vertex(t,e,s){let i=this.vertexIndex,r=this.mesh.getVertices();r[i++]=t,r[i++]=e,r[i++]=s.r,r[i++]=s.g,r[i++]=s.b,r[i++]=s.a,this.vertexIndex=i}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){if(this.vertexIndex!=0){if(!this.shader)throw new Error("No shader set.");this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0}}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},Wi=(t=>(t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled",t))(Wi||{}),Gi=class ti{boneLineColor=new K(1,0,0,1);boneOriginColor=new K(0,1,0,1);attachmentLineColor=new K(0,0,1,.5);triangleLineColor=new K(1,.64,0,.5);pathColor=new K().setFromString("FF7F00");clipColor=new K(.8,0,0,2);aabbColor=new K(0,1,0,.5);drawBones=!0;drawRegionAttachments=!0;drawBoundingBoxes=!0;drawMeshHull=!0;drawMeshTriangles=!0;drawPaths=!0;drawSkeletonXY=!1;drawClipping=!0;premultipliedAlpha=!1;scale=1;boneWidth=2;context;bounds=new Yi;temp=new Array;vertices=X.newFloatArray(2*1024);static LIGHT_GRAY=new K(192/255,192/255,192/255,1);static GREEN=new K(0,1,0,1);constructor(e){this.context=e instanceof xe?e:new xe(e)}draw(e,s,i){let r=s.x,h=s.y,l=this.context.gl,n=this.premultipliedAlpha?l.ONE:l.SRC_ALPHA;e.setBlendMode(n,l.ONE,l.ONE_MINUS_SRC_ALPHA);let a=s.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];if(i&&i.indexOf(d.data.name)>-1||!d.parent)continue;let u=d.data.length*d.a+d.worldX,m=d.data.length*d.c+d.worldY;e.rectLine(!0,d.worldX,d.worldY,u,m,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(r,h,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c],m=u.getAttachment();if(m instanceof ce){let f=m,g=this.vertices;f.computeWorldVertices(u,g,0,2),e.line(g[0],g[1],g[2],g[3]),e.line(g[2],g[3],g[4],g[5]),e.line(g[4],g[5],g[6],g[7]),e.line(g[6],g[7],g[0],g[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof Ge))continue;let f=m,g=this.vertices;f.computeWorldVertices(u,0,f.worldVerticesLength,g,0,2);let x=f.triangles,b=f.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let p=0,w=x.length;p<w;p+=3){let v=x[p]*2,y=x[p+1]*2,A=x[p+2]*2;e.triangle(!1,g[v],g[v+1],g[y],g[y+1],g[A],g[A+1])}}if(this.drawMeshHull&&b>0){e.setColor(this.attachmentLineColor),b=(b>>1)*2;let p=g[b-2],w=g[b-1];for(let v=0,y=b;v<y;v+=2){let A=g[v],C=g[v+1];e.line(A,C,p,w),p=A,w=C}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(s,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let c=o.polygons,d=o.boundingBoxes;for(let u=0,m=c.length;u<m;u++){let f=c[u];e.setColor(d[u].color),e.polygon(f,0,f.length)}}if(this.drawPaths){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof Ze))continue;let f=m,g=f.worldVerticesLength,x=this.temp=X.setArraySize(this.temp,g,0);f.computeWorldVertices(u,0,g,x,0,2);let b=this.pathColor,p=x[2],w=x[3],v=0,y=0;if(f.closed){e.setColor(b);let A=x[0],C=x[1],S=x[g-2],I=x[g-1];v=x[g-4],y=x[g-3],e.curve(p,w,A,C,S,I,v,y,32),e.setColor(ti.LIGHT_GRAY),e.line(p,w,A,C),e.line(v,y,S,I)}g-=4;for(let A=4;A<g;A+=6){let C=x[A],S=x[A+1],I=x[A+2],k=x[A+3];v=x[A+4],y=x[A+5],e.setColor(b),e.curve(p,w,C,S,I,k,v,y,32),e.setColor(ti.LIGHT_GRAY),e.line(p,w,C,S),e.line(v,y,I,k),p=v,w=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];i&&i.indexOf(d.data.name)>-1||e.circle(!0,d.worldX,d.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=s.slots;e.setColor(this.clipColor);for(let c=0,d=o.length;c<d;c++){let u=o[c];if(!u.bone.active)continue;let m=u.getAttachment();if(!(m instanceof rt))continue;let f=m,g=f.worldVerticesLength,x=this.temp=X.setArraySize(this.temp,g,0);f.computeWorldVertices(u,0,g,x,0,2);for(let b=0,p=x.length;b<p;b+=2){let w=x[b],v=x[b+1],y=x[(b+2)%x.length],A=x[(b+3)%x.length];e.line(w,v,y,A)}}}}dispose(){}},Mn=class{constructor(t,e,s){this.vertices=t,this.numVertices=e,this.numFloats=s}},zi=class Cr{static QUAD_TRIANGLES=[0,1,2,2,3,0];premultipliedAlpha=!1;tempColor=new K;tempColor2=new K;vertices;vertexSize=8;twoColorTint=!1;renderable=new Mn([],0,0);clipper=new vt;temp=new Ue;temp2=new Ue;temp3=new K;temp4=new K;constructor(e,s=!0){this.twoColorTint=s,s&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,s,i=-1,r=-1,h=null){let l=this.clipper,n=this.premultipliedAlpha,a=this.twoColorTint,o=null,c=this.renderable,d,u,m=s.drawOrder,f,g=s.color,x=a?12:8,b=!1;i==-1&&(b=!0);for(let p=0,w=m.length;p<w;p++){let v=l.isClipping()?2:x,y=m[p];if(!y.bone.active){l.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(b=!0),!b){l.clipEndWithSlot(y);continue}r>=0&&r==y.data.index&&(b=!1);let A=y.getAttachment(),C;if(A instanceof ce){let S=A;c.vertices=this.vertices,c.numVertices=4,c.numFloats=v<<2,S.computeWorldVertices(y,c.vertices,0,v),u=Cr.QUAD_TRIANGLES,d=S.uvs,C=S.region.texture,f=S.color}else if(A instanceof Ge){let S=A;c.vertices=this.vertices,c.numVertices=S.worldVerticesLength>>1,c.numFloats=c.numVertices*v,c.numFloats>c.vertices.length&&(c.vertices=this.vertices=X.newFloatArray(c.numFloats)),S.computeWorldVertices(y,0,S.worldVerticesLength,c.vertices,0,v),u=S.triangles,C=S.region.texture,d=S.uvs,f=S.color}else if(A instanceof rt){let S=A;l.clipStart(y,S);continue}else{l.clipEndWithSlot(y);continue}if(C){let S=y.color,I=this.tempColor;I.r=g.r*S.r*f.r,I.g=g.g*S.g*f.g,I.b=g.b*S.b*f.b,I.a=g.a*S.a*f.a,n&&(I.r*=I.a,I.g*=I.a,I.b*=I.a);let k=this.tempColor2;y.darkColor?(n?(k.r=y.darkColor.r*I.a,k.g=y.darkColor.g*I.a,k.b=y.darkColor.b*I.a):k.setFromColor(y.darkColor),k.a=n?1:0):k.set(0,0,0,1);let Y=y.data.blendMode;if(Y!=o&&(o=Y,e.setBlendMode(o,n)),l.isClipping()){l.clipTriangles(c.vertices,u,u.length,d,I,k,a);let F=new Float32Array(l.clippedVertices),P=l.clippedTriangles;h&&h(F,F.length,x),e.draw(C,F,P)}else{let F=c.vertices;if(a)for(let M=2,R=0,B=c.numFloats;M<B;M+=x,R+=2)F[M]=I.r,F[M+1]=I.g,F[M+2]=I.b,F[M+3]=I.a,F[M+4]=d[R],F[M+5]=d[R+1],F[M+6]=k.r,F[M+7]=k.g,F[M+8]=k.b,F[M+9]=k.a;else for(let M=2,R=0,B=c.numFloats;M<B;M+=x,R+=2)F[M]=I.r,F[M+1]=I.g,F[M+2]=I.b,F[M+3]=I.a,F[M+4]=d[R],F[M+5]=d[R+1];let P=c.vertices.subarray(0,c.numFloats);h&&h(c.vertices,c.numFloats,x),e.draw(C,P,u)}}l.clipEndWithSlot(y)}l.clipEnd()}getSkeletonClipping(){return this.clipper}},T=[0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0],Ct=[0,1,2,2,3,0],St=new K(1,1,1,1),zs=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(t,e,s=!0){this.canvas=t,this.context=e instanceof xe?e:new xe(e),this.twoColorTint=s,this.camera=new Xi(t.width,t.height),this.batcherShader=s?Me.newTwoColoredTextured(this.context):Me.newColoredTextured(this.context),this.batcher=new Ws(this.context,s),this.shapesShader=Me.newColored(this.context),this.shapes=new Gs(this.context),this.skeletonRenderer=new zi(this.context,s),this.skeletonDebugRenderer=new Gi(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,s=-1,i=-1,r=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,s,i,r)}drawSkeletonDebug(t,e=!1,s){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,s)}drawTexture(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=St);var l=0;T[l++]=e,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=0,T[l++]=1,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=1,T[l++]=1,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=1,T[l++]=0,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=0,T[l++]=0,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l]=0),this.batcher.draw(t,T,Ct)}drawTextureUV(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.batcher),o||(o=St);var c=0;T[c++]=e,T[c++]=s,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=h,T[c++]=l,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e+i,T[c++]=s,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=n,T[c++]=l,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e+i,T[c++]=s+r,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=n,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=e,T[c++]=s+r,T[c++]=o.r,T[c++]=o.g,T[c++]=o.b,T[c++]=o.a,T[c++]=h,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c]=0),this.batcher.draw(t,T,Ct)}drawTextureRotated(t,e,s,i,r,h,l,n,a){this.enableRenderer(this.batcher),a||(a=St);let o=e+h,c=s+l,d=-h,u=-l,m=i-h,f=r-l,g=d,x=u,b=d,p=f,w=m,v=f,y=m,A=u,C=0,S=0,I=0,k=0,Y=0,F=0,P=0,M=0;if(n!=0){let B=L.cosDeg(n),se=L.sinDeg(n);C=B*g-se*x,S=se*g+B*x,P=B*b-se*p,M=se*b+B*p,Y=B*w-se*v,F=se*w+B*v,I=Y+(C-P),k=F+(S-M)}else C=g,S=x,P=b,M=p,Y=w,F=v,I=y,k=A;C+=o,S+=c,I+=o,k+=c,Y+=o,F+=c,P+=o,M+=c;var R=0;T[R++]=C,T[R++]=S,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=0,T[R++]=1,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=I,T[R++]=k,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=1,T[R++]=1,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=Y,T[R++]=F,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=1,T[R++]=0,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R++]=0),T[R++]=P,T[R++]=M,T[R++]=a.r,T[R++]=a.g,T[R++]=a.b,T[R++]=a.a,T[R++]=0,T[R++]=0,this.twoColorTint&&(T[R++]=0,T[R++]=0,T[R++]=0,T[R]=0),this.batcher.draw(t,T,Ct)}drawRegion(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=St);var l=0;T[l++]=e,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u,T[l++]=t.v2,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u2,T[l++]=t.v2,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e+i,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u2,T[l++]=t.v,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l++]=0),T[l++]=e,T[l++]=s+r,T[l++]=h.r,T[l++]=h.g,T[l++]=h.b,T[l++]=h.a,T[l++]=t.u,T[l++]=t.v,this.twoColorTint&&(T[l++]=0,T[l++]=0,T[l++]=0,T[l]=0),this.batcher.draw(t.page.texture,T,Ct)}line(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.line(t,e,s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,s,i,r,h,l,n,a,o)}quad(t,e,s,i,r,h,l,n,a,o,c,d,u){this.enableRenderer(this.shapes),this.shapes.quad(t,e,s,i,r,h,l,n,a,o,c,d,u)}rect(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.rect(t,e,s,i,r,h)}rectLine(t,e,s,i,r,h,l){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,s,i,r,h,l)}polygon(t,e,s,i){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,s,i)}circle(t,e,s,i,r,h=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,s,i,r,h)}curve(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.curve(t,e,s,i,r,h,l,n,a,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var s=window.devicePixelRatio||1,i=Math.round(e.clientWidth*s),r=Math.round(e.clientHeight*s);if((e.width!=i||e.height!=r)&&(e.width=i,e.height=r),this.context.gl.viewport(0,0,e.width,e.height),t===1)this.camera.setViewport(i,r);else if(t===2){let h=e.width,l=e.height,n=this.camera.viewportWidth,a=this.camera.viewportHeight,o=a/n,c=l/h,d=o<c?n/h:a/l;this.camera.setViewport(h*d,l*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof Ws?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Gs?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},qi=(t=>(t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit",t))(qi||{}),Qe,qe,qs=0,En=1,_s=1,Tt=165,It=108,Ee=163,Rn=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Ot;backgroundColor=new K(.135,.135,.135,1);tempColor=new K;constructor(t){if(this.renderer=t,this.timeKeeper.maxDelta=9,!qe){let e=navigator.userAgent.indexOf("Safari")>-1,s=()=>qs++;qe=new Image,qe.src=Yn,e||(qe.crossOrigin="anonymous"),qe.onload=s,Qe=new Image,Qe.src=kn,e||(Qe.crossOrigin="anonymous"),Qe.onload=s}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(t=!1){if(qs<2||t&&this.fadeOut>_s)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let s=this.tempColor,i=this.renderer,r=i.canvas,h=i.context.gl;if(i.resize(1),i.camera.position.set(r.width/2,r.height/2,0),i.batcher.setBlendMode(0,!0),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>_s)return;s.setFromColor(this.backgroundColor),e=1-this.fadeOut/_s,e=1-(e-1)*(e-1),s.a*=e,s.a>0&&(i.camera.zoom=1,i.begin(),i.quad(!0,0,0,r.width,0,r.width,r.height,0,r.height,s,s,s,s),i.end())}else this.fadeIn+=this.timeKeeper.delta,this.backgroundColor.a>0&&(h.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),h.clear(h.COLOR_BUFFER_BIT)),e=1;e*=Math.min(this.fadeIn/En,1),s.set(e,e,e,e),this.logo||(this.logo=new ze(i.context,qe),this.spinner=new ze(i.context,Qe)),i.camera.zoom=Math.max(1,Ee/r.height),i.begin(),i.drawTexture(this.logo,(r.width-Tt)/2,(r.height-It)/2,Tt,It,s),this.spinner&&i.drawTextureRotated(this.spinner,(r.width-Ee)/2,(r.height-Ee)/2,Ee,Ee,Ee/2,Ee/2,this.angle,s),i.end()}drawInCoordinates(t,e){if(qs<2)return;this.timeKeeper.update();let s=this.renderer;s.batcher.setBlendMode(0,!0),this.logo||(this.logo=new ze(s.context,qe),this.spinner=new ze(s.context,Qe));const i=t-Tt/2,r=e-It/2;s.drawTexture(this.logo,i,r,Tt,It),this.angle-=this.timeKeeper.delta*500,this.spinner&&s.drawTextureRotated(this.spinner,i,r-25,Ee,Ee,Ee/2,Ee/2,this.angle)}},kn="data:image/png;base64,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",Yn="data:image/png;base64,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",Fn=class{constructor(t,e){this.config=e,e.pathPrefix||(e.pathPrefix=""),e.app||(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),e.webglConfig||(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new xe(t,e.webglConfig),this.renderer=new zs(t,this.context),this.gl=this.context.gl,this.assetManager=new Li(this.context,e.pathPrefix),this.input=new Ds(t),e.app.loadAssets&&e.app.loadAssets(this);let s=()=>{this.disposed||(requestAnimationFrame(s),this.time.update(),e.app.update&&e.app.update(this,this.time.delta),e.app.render&&e.app.render(this))},i=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error&&e.app.error(this,this.assetManager.getErrors()):(e.app.initialize&&e.app.initialize(this),s());return}requestAnimationFrame(i)}};requestAnimationFrame(i)}context;time=new Ot;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(t,e,s,i){this.gl.clearColor(t,e,s,i),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}},ye=Yr(Rr("Phaser"),1),Pn="esotericsoftware.spine.skeletonFile.cache",Ln="esotericsoftware.spine.atlas.cache",Xn="spineSkeletonData",Bn="spineAtlasData",Hs="spine",Ve=Phaser.GameObjects.Components,_i=Ve.ComputedSize,Hi=Ve.Depth,ji=Ve.Flip,Zi=Ve.ScrollFactor,Ji=Ve.Transform,Ki=Ve.Visible,Qi=Ve.Origin,$i=Ve.Alpha;function Be(...t){return e=>(Phaser.Class.mixin(e,t),e)}var er=Be(_i),tr=Be(Hi),sr=Be(ji),ir=Be(Zi),rr=Be(Ji),nr=Be(Ki),ar=Be(Qi),lr=Be($i),On=class extends Phaser.GameObjects.GameObject{constructor(t,e){super(t,e)}},Vn=class{constructor(t,e,s,i){this.x=t,this.y=e,this.width=s,this.height=i}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},or=class{constructor(t=!1){this.clipping=t}calculateBounds(t){if(!t.skeleton)return{x:0,y:0,width:0,height:0};const e=new Je(t.skeleton.data);e.setToSetupPose(),e.updateWorldTransform(2);const s=e.getBoundsRect(this.clipping?new vt:void 0);return s.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:s}},Dn=class{constructor(t,e=[],s=.05,i=!1){this.animation=t,this.skins=e,this.timeStep=s,this.clipping=i}calculateBounds(t){if(!t.skeleton||!t.animationState)return{x:0,y:0,width:0,height:0};const e=new gs(t.animationState.data),s=new Je(t.skeleton.data),i=this.clipping?new vt:void 0,r=s.data;if(this.skins.length>0){let l=new at("custom-skin");for(const n of this.skins){const a=r.findSkin(n);a!=null&&l.addSkin(a)}s.setSkin(l)}s.setToSetupPose();const h=this.animation!=null?r.findAnimation(this.animation):null;if(h==null){s.updateWorldTransform(2);const l=s.getBoundsRect(i);return l.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:l}else{let l=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;e.clearTracks(),e.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let u=0;u<c;u++){const m=u>0?this.timeStep:0;e.update(m),e.apply(s),s.update(m),s.updateWorldTransform(2);const f=s.getBoundsRect(i);l=Math.min(l,f.x),n=Math.min(n,f.y),a=Math.max(a,f.x+f.width),o=Math.max(o,f.y+f.height)}const d={x:l,y:n,width:a-l,height:o-n};return d.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:d}}},js=class extends tr(ar(er(sr(ir(rr(nr(lr(On)))))))){constructor(t,e,s,i,r,h,l=new or){super(t,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs),this.plugin=e,this.boundsProvider=l,this.setPosition(s,i),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(r,h),this.animationStateData=new pi(this.skeleton.data),this.animationState=new gs(this.animationStateData),this.skeleton.updateWorldTransform(2),this.updateSize()}blendMode=-1;skeleton;animationStateData;animationState;beforeUpdateWorldTransforms=()=>{};afterUpdateWorldTransforms=()=>{};premultipliedAlpha=!1;offsetX=0;offsetY=0;updateSize(){if(!this.skeleton)return;let t=this.boundsProvider.calculateBounds(this);this.width=t.width,this.height=t.height,this.setDisplayOrigin(-t.x,-t.y),this.offsetX=-t.x,this.offsetY=-t.y}skeletonToPhaserWorldCoordinates(t){let e=this.getWorldTransformMatrix(),s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToSkeleton(t){let e=this.getWorldTransformMatrix();e=e.invert();let s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToBone(t,e){this.phaserWorldCoordinatesToSkeleton(t),e.parent?e.parent.worldToLocal(t):e.worldToLocal(t)}updatePose(t){this.animationState.update(t/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(t/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(t,e){!this.skeleton||!this.animationState||this.updatePose(e)}preDestroy(){}willRender(t){var e=15,s=!this.skeleton||!(e!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&t.id);if(this.visible||(s=!1),!s&&this.parentContainer&&this.plugin.webGLRenderer){var i=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&i.batcher.isDrawing&&(i.end(),this.plugin.phaserRenderer.pipelines.rebind())}return s}renderWebGL(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let r=this.plugin.webGLRenderer;t.newType&&(t.pipelines.clear(),r.begin()),s.addToRenderList(e);let h=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,l=h.a,n=h.b,a=h.c,o=h.d,c=h.tx,d=h.ty,u=e.offsetX-e.displayOriginX,m=e.offsetY-e.displayOriginY;r.drawSkeleton(e.skeleton,e.premultipliedAlpha,-1,-1,(f,g,x)=>{for(let b=0;b<g;b+=x){let p=f[b]+u,w=f[b+1]+m;f[b]=p*l+w*a+c,f[b+1]=p*n+w*o+d}}),t.nextTypeMatch||(r.end(),t.pipelines.rebind())}renderCanvas(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let r=t.currentContext,h=this.plugin.canvasRenderer;h.ctx=r,s.addToRenderList(e);let l=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,n=this.skeleton;n.x=l.tx,n.y=l.ty,n.scaleX=l.scaleX,n.scaleY=l.scaleY;let a=n.getRootBone();a.rotation=-L.radiansToDegrees*l.rotationNormalized,this.skeleton.updateWorldTransform(2),r.save(),h.draw(n),r.restore()}};Je.yDown=!0;var Zs=class Xt extends ye.Plugins.ScenePlugin{game;isWebGL;gl;static gameWebGLRenderer=null;get webGLRenderer(){return Xt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,s,i){super(e,s,i),this.game=s.game,this.isWebGL=this.game.config.renderType===2,this.gl=this.isWebGL?this.game.renderer.gl:null,this.phaserRenderer=this.game.renderer,this.canvasRenderer=null,this.skeletonDataCache=this.game.cache.addCustom(Pn),this.atlasCache=this.game.cache.addCustom(Ln);let r=function(o,c,d){let u=new hr(this,o,c,0,d);return this.addFile(u.files),this};s.registerFileType("spineJson",r,e);let h=function(o,c,d){let u=new hr(this,o,c,1,d);return this.addFile(u.files),this};s.registerFileType("spineBinary",h,e);let l=function(o,c,d,u){let m=new Nn(this,o,c,d,u);return this.addFile(m.files),this};s.registerFileType("spineAtlas",l,e);let n=function(o,c,d,u,m){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const f=this.scene.sys[i];let g=new js(this.scene,f,o,c,d,u,m);return this.displayList.add(g),this.updateList.add(g),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),g},a=function(o,c=!1){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let d=o.x?o.x:0,u=o.y?o.y:0,m=o.boundsProvider?o.boundsProvider:void 0;const f=this.scene.sys[i];let g=new js(this.scene,f,d,u,o.dataKey,o.atlasKey,m);return c!==void 0&&(o.add=c),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),ye.GameObjects.BuildGameObject(this.scene,g,o)};s.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs,n,a)}static rendererId=0;boot(){this.isWebGL&&this.gl?Xt.gameWebGLRenderer||=new zs(this.game.renderer.canvas,this.gl,!0):this.scene&&(this.canvasRenderer||=new Cn(this.scene.sys.context)),this.onResize(),this.systems&&(this.systems.events.once("destroy",this.destroy,this),this.systems.events.on("start",this.onStart,this),this.systems.events.on("shutdown",this.shutdown,this)),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){const e=this.game.renderer,s=this.webGLRenderer;if(e&&s){const i=e.width,r=e.height;s.camera.position.x=i/2,s.camera.position.y=r/2,s.camera.up.y=-1,s.camera.direction.z=1,s.camera.setViewport(i,r)}}onStart(){this.game.scale.on(ye.Scale.Events.RESIZE,this.onResize,this)}shutdown(){this.isWebGL&&this.game.scale.off(ye.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown(),this.systems?.events.off("start",this.onStart,this),this.systems?.events.off("shutdown",this.shutdown,this)}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Hs,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),Xt.gameWebGLRenderer=null}getAtlas(e){let s;if(this.atlasCache.exists(e))s=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(s=new wt(i.data),this.isWebGL){let r=this.gl;const h=r.getParameter(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL);h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let l of s.pages)l.setTexture(new ze(r,this.game.textures.get(e+"!"+l.name).getSourceImage(),!1));h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let r of s.pages)r.setTexture(new yn(this.game.textures.get(e+"!"+r.name).getSourceImage()));this.atlasCache.add(e,s)}return s}isAtlasPremultiplied(e){let s=this.game.cache.text.get(e);return s?s.premultipliedAlpha:!1}getSkeletonData(e,s){const i=this.getAtlas(s),r=e+s;let h;if(this.skeletonDataCache.exists(r))h=this.skeletonDataCache.get(r);else{if(this.game.cache.json.exists(e)){let l=this.game.cache.json.get(e);h=new Pi(new ys(i)).readSkeletonData(l)}else{let l=this.game.cache.binary.get(e);h=new Ri(new ys(i)).readSkeletonData(new Uint8Array(l))}this.skeletonDataCache.add(r,h)}return h}createSkeleton(e,s){return new Je(this.getSkeletonData(e,s))}},hr=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const n=e;e=n.key,s=n.url,i=n.type==="spineJson"?0:1,r=n.xhrSettings}let h=null;i==0?h=new ye.Loader.FileTypes.JSONFile(t,{key:e,url:s,extension:"json",xhrSettings:r}):h=new ye.Loader.FileTypes.BinaryFile(t,{key:e,url:s,extension:"skel",xhrSettings:r}),super(t,Xn,e,[h]),this.fileType=i}onFileComplete(t){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Nn=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const h=e;e=h.key,s=h.url,i=h.premultipliedAlpha,r=h.xhrSettings}super(t,Bn,e,[new ye.Loader.FileTypes.TextFile(t,{key:e,url:s,xhrSettings:r,extension:"atlas"})]),this.premultipliedAlpha=i}onFileComplete(t){if(this.files.indexOf(t)!=-1&&(this.pending--,t.type=="text")){var e=t.data.split(/\r\n|\r|\n/);let a=[];a.push(e[0]);for(var s=1;s<e.length;s++){var i=e[s];i.trim()===""&&s<e.length-1&&(i=e[s+1],a.push(i))}let o=t.url;typeof o=="object"&&(o=t.src);let c=(o.match(/^.*\//)??"").toString();this.loader.path&&this.loader.path.length>0&&c.startsWith(this.loader.path)&&(c=c.slice(this.loader.path.length));for(var r=0;r<a.length;r++){var h=c+a[r],l=t.key+"!"+a[r],n=new ye.Loader.FileTypes.ImageFile(this.loader,l,h);this.loader.keyExists(n)||(this.addToMultiFile(n),this.loader.addFile(n))}}}addToCache(){if(this.isReadyToProcess()){let t=this.loader.textureManager;for(let e of this.files)e.type=="image"?t.exists(e.key)||t.addImage(e.key,e.data):(this.premultipliedAlpha=this.premultipliedAlpha??(e.data.indexOf("pma: true")>=0||e.data.indexOf("pma:true")>=0),e.data={data:e.data,premultipliedAlpha:this.premultipliedAlpha},e.addToCache())}}};return window.spine={SpinePlugin:Zs},window["spine.SpinePlugin"]=Zs,Fr(ii)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esotericsoftware/spine-phaser-v3",
3
- "version": "4.2.94",
3
+ "version": "4.2.96",
4
4
  "description": "The official Spine Runtimes for the Phaser v3.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,9 +31,9 @@
31
31
  },
32
32
  "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
33
33
  "dependencies": {
34
- "@esotericsoftware/spine-canvas": "4.2.94",
35
- "@esotericsoftware/spine-core": "4.2.94",
36
- "@esotericsoftware/spine-webgl": "4.2.94"
34
+ "@esotericsoftware/spine-canvas": "4.2.96",
35
+ "@esotericsoftware/spine-core": "4.2.96",
36
+ "@esotericsoftware/spine-webgl": "4.2.96"
37
37
  },
38
38
  "devDependencies": {
39
39
  "phaser": "^3.60.0"