@esotericsoftware/spine-phaser-v3 4.2.78 → 4.2.79
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.
- package/dist/SpineGameObject.js +7 -7
- package/dist/esm/spine-phaser-v3.min.mjs +1 -1
- package/dist/esm/spine-phaser-v3.mjs +6 -6
- package/dist/esm/spine-phaser-v3.mjs.map +2 -2
- package/dist/iife/spine-phaser-v3.js +6 -6
- package/dist/iife/spine-phaser-v3.js.map +2 -2
- package/dist/iife/spine-phaser-v3.min.js +1 -1
- package/package.json +4 -4
|
@@ -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,t,i)}},pe=ue;B(pe,"MVP_MATRIX","u_projTrans"),B(pe,"POSITION","a_position"),B(pe,"COLOR","a_color"),B(pe,"COLOR2","a_color2"),B(pe,"TEXCOORDS","a_texCoords"),B(pe,"SAMPLER","u_texture");var Ji=class{constructor(e,t,i,s){this.attributes=t,this.context=e instanceof be?e:new be(e),this.elementsPerVertex=0;for(let n=0;n<t.length;n++)this.elementsPerVertex+=t[n].numElements;this.vertices=new Float32Array(i*this.elementsPerVertex),this.indices=new Uint16Array(s),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(e){this.dirtyVertices=!0,this.verticesLength=e}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(e){this.dirtyIndices=!0,this.indicesLength=e}getIndices(){return this.indices}getVertexSizeInFloats(){let e=0;for(var t=0;t<this.attributes.length;t++){let i=this.attributes[t];e+=i.numElements}return e}setVertices(e){if(this.dirtyVertices=!0,e.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(e,0),this.verticesLength=e.length}setIndices(e){if(this.dirtyIndices=!0,e.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(e,0),this.indicesLength=e.length}draw(e,t){this.drawWithOffset(e,t,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(e,t,i,s){let n=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(e),this.indicesLength>0?n.drawElements(t,s,n.UNSIGNED_SHORT,i*2):n.drawArrays(t,i,s),this.unbind(e)}bind(e){let t=this.context.gl;t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer);let i=0;for(let s=0;s<this.attributes.length;s++){let n=this.attributes[s],h=e.getAttributeLocation(n.name);t.enableVertexAttribArray(h),t.vertexAttribPointer(h,n.numElements,t.FLOAT,!1,this.elementsPerVertex*4,i*4),i+=n.numElements}this.indicesLength>0&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(e){let t=this.context.gl;for(let i=0;i<this.attributes.length;i++){let s=this.attributes[i],n=e.getAttributeLocation(s.name);t.disableVertexAttribArray(n)}t.bindBuffer(t.ARRAY_BUFFER,null),this.indicesLength>0&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}update(){let e=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=e.createBuffer()),e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer),e.bufferData(e.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),e.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=e.createBuffer()),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),e.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let e=this.context.gl;e.deleteBuffer(this.verticesBuffer),e.deleteBuffer(this.indicesBuffer)}},lt=class{constructor(e,t,i){this.name=e,this.type=t,this.numElements=i}},Dt=class extends lt{constructor(){super(pe.POSITION,Qe.Float,2)}},An=class extends lt{constructor(){super(pe.POSITION,Qe.Float,3)}},Ki=class extends lt{constructor(e=0){super(pe.TEXCOORDS+(e==0?"":e),Qe.Float,2)}},Nt=class extends lt{constructor(){super(pe.COLOR,Qe.Float,4)}},Us=class extends lt{constructor(){super(pe.COLOR2,Qe.Float,4)}},Qe=(e=>(e[e.Float=0]="Float",e))(Qe||{}),Ve=1,Cn=769,Ws=770,Gs=771,zs=774,$e=class{context;drawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,t=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof be?e:new be(e);let s=t?[new Dt,new Nt,new Ki,new Us]:[new Dt,new Nt,new Ki];this.mesh=new Ji(e,s,i,i*3);let n=this.context.gl;this.srcColorBlend=n.SRC_ALPHA,this.srcAlphaBlend=n.ONE,this.dstBlend=n.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 t=this.context.gl;t.enable(t.BLEND),t.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),$e.disableCulling&&(this.cullWasEnabled=t.isEnabled(t.CULL_FACE),this.cullWasEnabled&&t.disable(t.CULL_FACE))}setBlendMode(e,t){const i=$e.blendModesGL[e],s=t?i.srcRgbPma:i.srcRgb,n=i.srcAlpha,h=i.dstRgb;if(this.srcColorBlend==s&&this.srcAlphaBlend==n&&this.dstBlend==h)return;this.srcColorBlend=s,this.srcAlphaBlend=n,this.dstBlend=h,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(s,h,n,h)}draw(e,t,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+t.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let s=this.mesh.numVertices();this.mesh.getVertices().set(t,this.verticesLength),this.verticesLength+=t.length,this.mesh.setVerticesLength(this.verticesLength);let n=this.mesh.getIndices();for(let h=this.indicesLength,a=0;a<i.length;h++,a++)n[h]=i[a]+s;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++,$e.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),$e.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=$e.globalDrawCalls;return $e.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},ot=$e;B(ot,"disableCulling",!1),B(ot,"globalDrawCalls",0),B(ot,"blendModesGL",[{srcRgb:Ws,srcRgbPma:Ve,dstRgb:Gs,srcAlpha:Ve},{srcRgb:Ws,srcRgbPma:Ve,dstRgb:Ve,srcAlpha:Ve},{srcRgb:zs,srcRgbPma:zs,dstRgb:Gs,srcAlpha:Ve},{srcRgb:Ve,srcRgbPma:Ve,dstRgb:Cn,srcAlpha:Ve}]);var Qi=class{context;isDrawing=!1;mesh;shapeType=ye.Filled;color=new O(1,1,1,1);shader=null;vertexIndex=0;tmp=new je;srcColorBlend;srcAlphaBlend;dstBlend;constructor(e,t=10920){if(t>10920)throw new Error("Can't have more than 10920 triangles per batch: "+t);this.context=e instanceof be?e:new be(e),this.mesh=new Ji(e,[new Dt,new Nt],t,0);let i=this.context.gl;this.srcColorBlend=i.SRC_ALPHA,this.srcAlphaBlend=i.ONE,this.dstBlend=i.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=e,this.vertexIndex=0,this.isDrawing=!0;let t=this.context.gl;t.enable(t.BLEND),t.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(e,t,i){this.srcColorBlend=e,this.srcAlphaBlend=t,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(e,i,t,i))}setColor(e){this.color.setFromColor(e)}setColorWith(e,t,i,s){this.color.set(e,t,i,s)}point(e,t,i){this.check(ye.Point,1),i||(i=this.color),this.vertex(e,t,i)}line(e,t,i,s,n){this.check(ye.Line,2);let h=this.mesh.getVertices(),a=this.vertexIndex;n||(n=this.color),this.vertex(e,t,n),this.vertex(i,s,n)}triangle(e,t,i,s,n,h,a,r,o,l){this.check(e?ye.Filled:ye.Line,3);let c=this.mesh.getVertices(),f=this.vertexIndex;r||(r=this.color),o||(o=this.color),l||(l=this.color),e?(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(h,a,l)):(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(s,n,r),this.vertex(h,a,o),this.vertex(h,a,r),this.vertex(t,i,o))}quad(e,t,i,s,n,h,a,r,o,l,c,f,d){this.check(e?ye.Filled:ye.Line,3);let u=this.mesh.getVertices(),m=this.vertexIndex;l||(l=this.color),c||(c=this.color),f||(f=this.color),d||(d=this.color),e?(this.vertex(t,i,l),this.vertex(s,n,c),this.vertex(h,a,f),this.vertex(h,a,f),this.vertex(r,o,d),this.vertex(t,i,l)):(this.vertex(t,i,l),this.vertex(s,n,c),this.vertex(s,n,c),this.vertex(h,a,f),this.vertex(h,a,f),this.vertex(r,o,d),this.vertex(r,o,d),this.vertex(t,i,l))}rect(e,t,i,s,n,h){this.quad(e,t,i,t+s,i,t+s,i+n,t,i+n,h,h,h,h)}rectLine(e,t,i,s,n,h,a){this.check(e?ye.Filled:ye.Line,8),a||(a=this.color);let r=this.tmp.set(n-i,t-s);r.normalize(),h*=.5;let o=r.x*h,l=r.y*h;e?(this.vertex(t+o,i+l,a),this.vertex(t-o,i-l,a),this.vertex(s+o,n+l,a),this.vertex(s-o,n-l,a),this.vertex(s+o,n+l,a),this.vertex(t-o,i-l,a)):(this.vertex(t+o,i+l,a),this.vertex(t-o,i-l,a),this.vertex(s+o,n+l,a),this.vertex(s-o,n-l,a),this.vertex(s+o,n+l,a),this.vertex(t+o,i+l,a),this.vertex(s-o,n-l,a),this.vertex(t-o,i-l,a))}x(e,t,i){this.line(e-i,t-i,e+i,t+i),this.line(e-i,t+i,e+i,t-i)}polygon(e,t,i,s){if(i<3)throw new Error("Polygon must contain at least 3 vertices");this.check(ye.Line,i*2),s||(s=this.color);let n=this.mesh.getVertices(),h=this.vertexIndex;t<<=1,i<<=1;let a=e[t],r=e[t+1],o=t+i;for(let l=t,c=t+i-2;l<c;l+=2){let f=e[l],d=e[l+1],u=0,m=0;l+2>=o?(u=a,m=r):(u=e[l+2],m=e[l+3]),this.vertex(f,d,s),this.vertex(u,m,s)}}circle(e,t,i,s,n,h=0){if(h==0&&(h=Math.max(1,6*L.cbrt(s)|0)),h<=0)throw new Error("segments must be > 0.");n||(n=this.color);let a=2*L.PI/h,r=Math.cos(a),o=Math.sin(a),l=s,c=0;if(e){this.check(ye.Filled,h*3+3),h--;for(let d=0;d<h;d++){this.vertex(t,i,n),this.vertex(t+l,i+c,n);let u=l;l=r*l-o*c,c=o*u+r*c,this.vertex(t+l,i+c,n)}this.vertex(t,i,n),this.vertex(t+l,i+c,n)}else{this.check(ye.Line,h*2+2);for(let d=0;d<h;d++){this.vertex(t+l,i+c,n);let u=l;l=r*l-o*c,c=o*u+r*c,this.vertex(t+l,i+c,n)}this.vertex(t+l,i+c,n)}let f=l;l=s,c=0,this.vertex(t+l,i+c,n)}curve(e,t,i,s,n,h,a,r,o,l){this.check(ye.Line,o*2+2),l||(l=this.color);let c=1/o,f=c*c,d=c*c*c,u=3*c,m=3*f,g=6*f,w=6*d,b=e-i*2+n,p=t-s*2+h,x=(i-n)*3-e+a,y=(s-h)*3-t+r,v=e,A=t,C=(i-e)*u+b*m+x*d,S=(s-t)*u+p*m+y*d,E=b*g+x*w,R=p*g+y*w,Y=x*w,P=y*w;for(;o-- >0;)this.vertex(v,A,l),v+=C,A+=S,C+=E,S+=R,E+=Y,R+=P,this.vertex(v,A,l);this.vertex(v,A,l),this.vertex(a,r,l)}vertex(e,t,i){let s=this.vertexIndex,n=this.mesh.getVertices();n[s++]=e,n[s++]=t,n[s++]=i.r,n[s++]=i.g,n[s++]=i.b,n[s++]=i.a,this.vertexIndex=s}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let e=this.context.gl;e.disable(e.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(e,t){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==e)if(this.mesh.maxVertices()-this.mesh.numVertices()<t)this.flush();else return;else this.flush(),this.shapeType=e}dispose(){this.mesh.dispose()}},ye=(e=>(e[e.Point=0]="Point",e[e.Line=1]="Line",e[e.Filled=4]="Filled",e))(ye||{}),$i=class{boneLineColor=new O(1,0,0,1);boneOriginColor=new O(0,1,0,1);attachmentLineColor=new O(0,0,1,.5);triangleLineColor=new O(1,.64,0,.5);pathColor=new O().setFromString("FF7F00");clipColor=new O(.8,0,0,2);aabbColor=new O(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 Os;temp=new Array;vertices=X.newFloatArray(2*1024);constructor(e){this.context=e instanceof be?e:new be(e)}draw(e,t,i){let s=t.x,n=t.y,h=this.context.gl,a=this.premultipliedAlpha?h.ONE:h.SRC_ALPHA;e.setBlendMode(a,h.ONE,h.ONE_MINUS_SRC_ALPHA);let r=t.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,l=r.length;o<l;o++){let c=r[o];if(i&&i.indexOf(c.data.name)>-1||!c.parent)continue;let f=c.data.length*c.a+c.worldX,d=c.data.length*c.c+c.worldY;e.rectLine(!0,c.worldX,c.worldY,f,d,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(s,n,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l],d=f.getAttachment();if(d instanceof V){let u=d,m=this.vertices;u.computeWorldVertices(f,m,0,2),e.line(m[0],m[1],m[2],m[3]),e.line(m[2],m[3],m[4],m[5]),e.line(m[4],m[5],m[6],m[7]),e.line(m[6],m[7],m[0],m[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Be))continue;let u=d,m=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,m,0,2);let g=u.triangles,w=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let b=0,p=g.length;b<p;b+=3){let x=g[b]*2,y=g[b+1]*2,v=g[b+2]*2;e.triangle(!1,m[x],m[x+1],m[y],m[y+1],m[v],m[v+1])}}if(this.drawMeshHull&&w>0){e.setColor(this.attachmentLineColor),w=(w>>1)*2;let b=m[w-2],p=m[w-1];for(let x=0,y=w;x<y;x+=2){let v=m[x],A=m[x+1];e.line(v,A,b,p),b=v,p=A}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(t,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let l=o.polygons,c=o.boundingBoxes;for(let f=0,d=l.length;f<d;f++){let u=l[f];e.setColor(c[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Ke))continue;let u=d,m=u.worldVerticesLength,g=this.temp=X.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,g,0,2);let w=this.pathColor,b=g[2],p=g[3],x=0,y=0;if(u.closed){e.setColor(w);let v=g[0],A=g[1],C=g[m-2],S=g[m-1];x=g[m-4],y=g[m-3],e.curve(b,p,v,A,C,S,x,y,32),e.setColor($i.LIGHT_GRAY),e.line(b,p,v,A),e.line(x,y,C,S)}m-=4;for(let v=4;v<m;v+=6){let A=g[v],C=g[v+1],S=g[v+2],E=g[v+3];x=g[v+4],y=g[v+5],e.setColor(w),e.curve(b,p,A,C,S,E,x,y,32),e.setColor($i.LIGHT_GRAY),e.line(b,p,A,C),e.line(x,y,S,E),b=x,p=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,l=r.length;o<l;o++){let c=r[o];i&&i.indexOf(c.data.name)>-1||e.circle(!0,c.worldX,c.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=t.slots;e.setColor(this.clipColor);for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof st))continue;let u=d,m=u.worldVerticesLength,g=this.temp=X.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,g,0,2);for(let w=0,b=g.length;w<b;w+=2){let p=g[w],x=g[w+1],y=g[(w+2)%g.length],v=g[(w+3)%g.length];e.line(p,x,y,v)}}}}dispose(){}},_t=$i;B(_t,"LIGHT_GRAY",new O(.7529411764705882,.7529411764705882,.7529411764705882,1)),B(_t,"GREEN",new O(0,1,0,1));var Sn=class{constructor(e,t,i){this.vertices=e,this.numVertices=t,this.numFloats=i}},qs=class{premultipliedAlpha=!1;tempColor=new O;tempColor2=new O;vertices;vertexSize=2+2+4;twoColorTint=!1;renderable=new Sn([],0,0);clipper=new nt;temp=new je;temp2=new je;temp3=new O;temp4=new O;constructor(e,t=!0){this.twoColorTint=t,t&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,t,i=-1,s=-1,n=null){let h=this.clipper,a=this.premultipliedAlpha,r=this.twoColorTint,o=null,l=this.renderable,c,f,d=t.drawOrder,u,m=t.color,g=r?12:8,w=!1;i==-1&&(w=!0);for(let b=0,p=d.length;b<p;b++){let x=h.isClipping()?2:g,y=d[b];if(!y.bone.active){h.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(w=!0),!w){h.clipEndWithSlot(y);continue}s>=0&&s==y.data.index&&(w=!1);let v=y.getAttachment(),A;if(v instanceof V){let C=v;l.vertices=this.vertices,l.numVertices=4,l.numFloats=x<<2,C.computeWorldVertices(y,l.vertices,0,x),f=qs.QUAD_TRIANGLES,c=C.uvs,A=C.region.texture,u=C.color}else if(v instanceof Be){let C=v;l.vertices=this.vertices,l.numVertices=C.worldVerticesLength>>1,l.numFloats=l.numVertices*x,l.numFloats>l.vertices.length&&(l.vertices=this.vertices=X.newFloatArray(l.numFloats)),C.computeWorldVertices(y,0,C.worldVerticesLength,l.vertices,0,x),f=C.triangles,A=C.region.texture,c=C.uvs,u=C.color}else if(v instanceof st){let C=v;h.clipStart(y,C);continue}else{h.clipEndWithSlot(y);continue}if(A){let C=y.color,S=this.tempColor;S.r=m.r*C.r*u.r,S.g=m.g*C.g*u.g,S.b=m.b*C.b*u.b,S.a=m.a*C.a*u.a,a&&(S.r*=S.a,S.g*=S.a,S.b*=S.a);let E=this.tempColor2;y.darkColor?(a?(E.r=y.darkColor.r*S.a,E.g=y.darkColor.g*S.a,E.b=y.darkColor.b*S.a):E.setFromColor(y.darkColor),E.a=a?1:0):E.set(0,0,0,1);let R=y.data.blendMode;if(R!=o&&(o=R,e.setBlendMode(o,a)),h.isClipping()){h.clipTriangles(l.vertices,f,f.length,c,S,E,r);let Y=new Float32Array(h.clippedVertices),P=h.clippedTriangles;n&&n(Y,Y.length,g),e.draw(A,Y,P)}else{let Y=l.vertices;if(r)for(let I=2,k=0,F=l.numFloats;I<F;I+=g,k+=2)Y[I]=S.r,Y[I+1]=S.g,Y[I+2]=S.b,Y[I+3]=S.a,Y[I+4]=c[k],Y[I+5]=c[k+1],Y[I+6]=E.r,Y[I+7]=E.g,Y[I+8]=E.b,Y[I+9]=E.a;else for(let I=2,k=0,F=l.numFloats;I<F;I+=g,k+=2)Y[I]=S.r,Y[I+1]=S.g,Y[I+2]=S.b,Y[I+3]=S.a,Y[I+4]=c[k],Y[I+5]=c[k+1];let P=l.vertices.subarray(0,l.numFloats);n&&n(l.vertices,l.numFloats,g),e.draw(A,P,f)}}h.clipEndWithSlot(y)}h.clipEnd()}getSkeletonClipping(){return this.clipper}},es=qs;B(es,"QUAD_TRIANGLES",[0,1,2,2,3,0]);var 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],Ut=[0,1,2,2,3,0],Wt=new O(1,1,1,1),ts=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(e,t,i=!0){this.canvas=e,this.context=t instanceof be?t:new be(t),this.twoColorTint=i,this.camera=new Ns(e.width,e.height),this.batcherShader=i?pe.newTwoColoredTextured(this.context):pe.newColoredTextured(this.context),this.batcher=new ot(this.context,i),this.shapesShader=pe.newColored(this.context),this.shapes=new Qi(this.context),this.skeletonRenderer=new es(this.context,i),this.skeletonDebugRenderer=new _t(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(e,t=!1,i=-1,s=-1,n=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=t,this.skeletonRenderer.draw(this.batcher,e,i,s,n)}drawSkeletonDebug(e,t=!1,i){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=t,this.skeletonDebugRenderer.draw(this.shapes,e,i)}drawTexture(e,t,i,s,n,h){this.enableRenderer(this.batcher),h||(h=Wt);var a=0;T[a++]=t,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=0,T[a++]=1,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=1,T[a++]=1,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=1,T[a++]=0,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=0,T[a++]=0,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a]=0),this.batcher.draw(e,T,Ut)}drawTextureUV(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.batcher),l||(l=Wt);var c=0;T[c++]=t,T[c++]=i,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=h,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t+s,T[c++]=i,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=r,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t+s,T[c++]=i+n,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=r,T[c++]=o,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t,T[c++]=i+n,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=h,T[c++]=o,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c]=0),this.batcher.draw(e,T,Ut)}drawTextureRotated(e,t,i,s,n,h,a,r,o){this.enableRenderer(this.batcher),o||(o=Wt);let l=t+h,c=i+a,f=-h,d=-a,u=s-h,m=n-a,g=f,w=d,b=f,p=m,x=u,y=m,v=u,A=d,C=0,S=0,E=0,R=0,Y=0,P=0,I=0,k=0;if(r!=0){let se=L.cosDeg(r),re=L.sinDeg(r);C=se*g-re*w,S=re*g+se*w,I=se*b-re*p,k=re*b+se*p,Y=se*x-re*y,P=re*x+se*y,E=Y+(C-I),R=P+(S-k)}else C=g,S=w,I=b,k=p,Y=x,P=y,E=v,R=A;C+=l,S+=c,E+=l,R+=c,Y+=l,P+=c,I+=l,k+=c;var F=0;T[F++]=C,T[F++]=S,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=0,T[F++]=1,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=E,T[F++]=R,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=1,T[F++]=1,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=Y,T[F++]=P,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=1,T[F++]=0,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=I,T[F++]=k,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=0,T[F++]=0,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F]=0),this.batcher.draw(e,T,Ut)}drawRegion(e,t,i,s,n,h){this.enableRenderer(this.batcher),h||(h=Wt);var a=0;T[a++]=t,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u,T[a++]=e.v2,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u2,T[a++]=e.v2,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u2,T[a++]=e.v,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u,T[a++]=e.v,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a]=0),this.batcher.draw(e.page.texture,T,Ut)}line(e,t,i,s,n,h){this.enableRenderer(this.shapes),this.shapes.line(e,t,i,s,n)}triangle(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.triangle(e,t,i,s,n,h,a,r,o,l)}quad(e,t,i,s,n,h,a,r,o,l,c,f,d){this.enableRenderer(this.shapes),this.shapes.quad(e,t,i,s,n,h,a,r,o,l,c,f,d)}rect(e,t,i,s,n,h){this.enableRenderer(this.shapes),this.shapes.rect(e,t,i,s,n,h)}rectLine(e,t,i,s,n,h,a){this.enableRenderer(this.shapes),this.shapes.rectLine(e,t,i,s,n,h,a)}polygon(e,t,i,s){this.enableRenderer(this.shapes),this.shapes.polygon(e,t,i,s)}circle(e,t,i,s,n,h=0){this.enableRenderer(this.shapes),this.shapes.circle(e,t,i,s,n,h)}curve(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.curve(e,t,i,s,n,h,a,r,o,l)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(e){let t=this.canvas;var i=window.devicePixelRatio||1,s=Math.round(t.clientWidth*i),n=Math.round(t.clientHeight*i);if((t.width!=s||t.height!=n)&&(t.width=s,t.height=n),this.context.gl.viewport(0,0,t.width,t.height),e===Gt.Expand)this.camera.setViewport(s,n);else if(e===Gt.Fit){let h=t.width,a=t.height,r=this.camera.viewportWidth,o=this.camera.viewportHeight,l=o/r,c=a/h,f=l<c?r/h:o/a;this.camera.setViewport(h*f,a*f)}this.camera.update()}enableRenderer(e){this.activeRenderer!==e&&(this.end(),e instanceof ot?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(pe.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):e instanceof Qi?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(pe.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},Gt=(e=>(e[e.Stretch=0]="Stretch",e[e.Expand=1]="Expand",e[e.Fit=2]="Fit",e))(Gt||{}),bt,ht,Hs=0,Tn=1,is=1,js=165,Zs=108,et=163,In=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Kt;backgroundColor=new O(.135,.135,.135,1);tempColor=new O;constructor(e){if(this.renderer=e,this.timeKeeper.maxDelta=9,!ht){let t=navigator.userAgent.indexOf("Safari")>-1,i=()=>Hs++;ht=new Image,ht.src=En,t||(ht.crossOrigin="anonymous"),ht.onload=i,bt=new Image,bt.src=Mn,t||(bt.crossOrigin="anonymous"),bt.onload=i}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(e=!1){if(Hs<2||e&&this.fadeOut>is)return;this.timeKeeper.update();let t=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(t,5));let i=this.tempColor,s=this.renderer,n=s.canvas,h=s.context.gl;if(s.resize(1),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(0,!0),e){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>is)return;i.setFromColor(this.backgroundColor),t=1-this.fadeOut/is,t=1-(t-1)*(t-1),i.a*=t,i.a>0&&(s.camera.zoom=1,s.begin(),s.quad(!0,0,0,n.width,0,n.width,n.height,0,n.height,i,i,i,i),s.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)),t=1;t*=Math.min(this.fadeIn/Tn,1),i.set(t,t,t,t),this.logo||(this.logo=new at(s.context,ht),this.spinner=new at(s.context,bt)),s.camera.zoom=Math.max(1,et/n.height),s.begin(),s.drawTexture(this.logo,(n.width-js)/2,(n.height-Zs)/2,js,Zs,i),this.spinner&&s.drawTextureRotated(this.spinner,(n.width-et)/2,(n.height-et)/2,et,et,et/2,et/2,this.angle,i),s.end()}},Mn="data:image/png;base64,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",En="data:image/png;base64,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",Rn=class{constructor(e,t){this.config=t,t.pathPrefix||(t.pathPrefix=""),t.app||(t.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),t.webglConfig||(t.webglConfig={alpha:!0}),this.htmlCanvas=e,this.context=new be(e,t.webglConfig),this.renderer=new ts(e,this.context),this.gl=this.context.gl,this.assetManager=new Ds(this.context,t.pathPrefix),this.input=new Zi(e),t.app.loadAssets&&t.app.loadAssets(this);let i=()=>{this.disposed||(requestAnimationFrame(i),this.time.update(),t.app.update&&t.app.update(this,this.time.delta),t.app.render&&t.app.render(this))},s=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?t.app.error&&t.app.error(this,this.assetManager.getErrors()):(t.app.initialize&&t.app.initialize(this),i());return}requestAnimationFrame(s)}};requestAnimationFrame(s)}context;time=new Kt;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(e,t,i,s){this.gl.clearColor(e,t,i,s),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}},ze=Phaser.GameObjects.Components,Js=ze.ComputedSize,Ks=ze.Depth,Qs=ze.Flip,$s=ze.ScrollFactor,er=ze.Transform,tr=ze.Visible,ir=ze.Origin,sr=ze.Alpha;function De(...e){return t=>(Phaser.Class.mixin(t,e),t)}var rr=De(Js),nr=De(Ks),ar=De(Qs),lr=De($s),or=De(er),hr=De(tr),cr=De(ir),dr=De(sr),kn=class extends Phaser.GameObjects.GameObject{constructor(e,t){super(e,t)}},Yn=class{constructor(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},fr=class{constructor(e=!1){this.clipping=e}calculateBounds(e){if(!e.skeleton)return{x:0,y:0,width:0,height:0};const t=new We(e.skeleton.data);t.setToSetupPose(),t.updateWorldTransform(2);const i=t.getBoundsRect(this.clipping?new nt:void 0);return i.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:i}},Fn=class{constructor(e,t=[],i=.05,s=!1){this.animation=e,this.skins=t,this.timeStep=i,this.clipping=s}calculateBounds(e){if(!e.skeleton||!e.animationState)return{x:0,y:0,width:0,height:0};const t=new Et(e.animationState.data),i=new We(e.skeleton.data),s=this.clipping?new nt:void 0,n=i.data;if(this.skins.length>0){let a=new xt("custom-skin");for(const r of this.skins){const o=n.findSkin(r);o!=null&&a.addSkin(o)}i.setSkin(a)}i.setToSetupPose();const h=this.animation!=null?n.findAnimation(this.animation):null;if(h==null){i.updateWorldTransform(2);const a=i.getBoundsRect(s);return a.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:a}else{let a=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;t.clearTracks(),t.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let d=0;d<c;d++){const u=d>0?this.timeStep:0;t.update(u),t.apply(i),i.update(u),i.updateWorldTransform(2);const m=i.getBoundsRect(s);a=Math.min(a,m.x),r=Math.min(r,m.y),o=Math.max(o,m.x+m.width),l=Math.max(l,m.y+m.height)}const f={x:a,y:r,width:o-a,height:l-r};return f.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:f}}},ss=class extends nr(cr(rr(ar(lr(or(hr(dr(kn)))))))){constructor(e,t,i,s,n,h,a=new fr){super(e,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt),this.plugin=t,this.boundsProvider=a,this.setPosition(i,s),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(n,h),this.animationStateData=new Ss(this.skeleton.data),this.animationState=new Et(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 e=this.boundsProvider.calculateBounds(this);this.width=e.width,this.height=e.height,this.setDisplayOrigin(-e.x,-e.y),this.offsetX=-e.x,this.offsetY=-e.y}skeletonToPhaserWorldCoordinates(e){let t=this.getWorldTransformMatrix(),i=t.a,s=t.b,n=t.c,h=t.d,a=t.tx,r=t.ty,o=e.x,l=e.y;e.x=o*i+l*n+a,e.y=o*s+l*h+r}phaserWorldCoordinatesToSkeleton(e){let t=this.getWorldTransformMatrix();t=t.invert();let i=t.a,s=t.b,n=t.c,h=t.d,a=t.tx,r=t.ty,o=e.x,l=e.y;e.x=o*i+l*n+a,e.y=o*s+l*h+r}phaserWorldCoordinatesToBone(e,t){this.phaserWorldCoordinatesToSkeleton(e),t.parent?t.parent.worldToLocal(e):t.worldToLocal(e)}updatePose(e){this.animationState.update(e/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(e/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(e,t){!this.skeleton||!this.animationState||this.updatePose(t)}preDestroy(){}willRender(e){var t=15,i=!this.skeleton||!(t!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&e.id);if(this.visible||(i=!1),!i&&this.parentContainer&&this.plugin.webGLRenderer){var s=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&s.batcher.isDrawing&&(s.end(),this.plugin.phaserRenderer.pipelines.rebind())}return i}renderWebGL(e,t,i,s){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let n=this.plugin.webGLRenderer;e.newType&&(e.pipelines.clear(),n.begin()),i.addToRenderList(t);let h=Phaser.GameObjects.GetCalcMatrix(t,i,s).calc,a=h.a,r=h.b,o=h.c,l=h.d,c=h.tx,f=h.ty,d=(t.offsetX-t.displayOriginX)*t.scaleX,u=(t.offsetY-t.displayOriginY)*t.scaleY;n.drawSkeleton(t.skeleton,t.premultipliedAlpha,-1,-1,(m,g,w)=>{for(let b=0;b<g;b+=w){let p=m[b],x=m[b+1];m[b]=p*a+x*o+c+d,m[b+1]=p*r+x*l+f+u}}),e.nextTypeMatch||(n.end(),e.pipelines.rebind())}renderCanvas(e,t,i,s){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let n=e.currentContext,h=this.plugin.canvasRenderer;h.ctx=n,i.addToRenderList(t);let a=Phaser.GameObjects.GetCalcMatrix(t,i,s).calc,r=this.skeleton;r.x=a.tx,r.y=a.ty,r.scaleX=a.scaleX,r.scaleY=a.scaleY;let o=r.getRootBone();o.rotation=-L.radiansToDegrees*a.rotationNormalized,this.skeleton.updateWorldTransform(2),n.save(),h.draw(r),n.restore()}},Pn=class extends Ft{constructor(e){super(e)}setFilters(e,t){}setWraps(e,t){}dispose(){}},Ln=X.newFloatArray(8),zt=class{ctx;triangleRendering=!1;debugRendering=!1;vertices=X.newFloatArray(8*1024);tempColor=new O;constructor(e){this.ctx=e}draw(e){this.triangleRendering?this.drawTriangles(e):this.drawImages(e)}drawImages(e){let t=this.ctx,i=this.tempColor,s=e.color,n=e.drawOrder;this.debugRendering&&(t.strokeStyle="green");for(let h=0,a=n.length;h<a;h++){let r=n[h],o=r.bone;if(!o.active)continue;let l=r.getAttachment();if(!(l instanceof V))continue;l.computeWorldVertices(r,Ln,0,2);let c=l.region,f=c.texture.getImage(),d=r.color,u=l.color;i.set(s.r*d.r*u.r,s.g*d.g*u.g,s.b*d.b*u.b,s.a*d.a*u.a),t.save(),t.transform(o.a,o.c,o.b,o.d,o.worldX,o.worldY),t.translate(l.offset[0],l.offset[1]),t.rotate(l.rotation*Math.PI/180);let m=l.width/c.originalWidth;t.scale(m*l.scaleX,m*l.scaleY);let g=c.width,w=c.height;if(t.translate(g/2,w/2),l.region.degrees==90){let b=g;g=w,w=b,t.rotate(-Math.PI/2)}t.scale(1,-1),t.translate(-g/2,-w/2),t.globalAlpha=i.a,t.drawImage(f,f.width*c.u,f.height*c.v,g,w,0,0,g,w),this.debugRendering&&t.strokeRect(0,0,g,w),t.restore()}}drawTriangles(e){let t=this.ctx,i=this.tempColor,s=e.color,n=e.drawOrder,h=null,a=this.vertices,r=null;for(let l=0,c=n.length;l<c;l++){let f=n[l],d=f.getAttachment(),u,m;if(d instanceof V){let g=d;a=this.computeRegionVertices(f,g,!1),r=zt.QUAD_TRIANGLES,u=g.region.texture.getImage()}else if(d instanceof Be){let g=d;a=this.computeMeshVertices(f,g,!1),r=g.triangles,u=g.region.texture.getImage()}else continue;if(u){f.data.blendMode!=h&&(h=f.data.blendMode);let g=f.color,w=d.color;i.set(s.r*g.r*w.r,s.g*g.g*w.g,s.b*g.b*w.b,s.a*g.a*w.a),t.globalAlpha=i.a;for(var o=0;o<r.length;o+=3){let b=r[o]*8,p=r[o+1]*8,x=r[o+2]*8,y=a[b],v=a[b+1],A=a[b+6],C=a[b+7],S=a[p],E=a[p+1],R=a[p+6],Y=a[p+7],P=a[x],I=a[x+1],k=a[x+6],F=a[x+7];this.drawTriangle(u,y,v,A,C,S,E,R,Y,P,I,k,F),this.debugRendering&&(t.strokeStyle="green",t.beginPath(),t.moveTo(y,v),t.lineTo(S,E),t.lineTo(P,I),t.lineTo(y,v),t.stroke())}}}this.ctx.globalAlpha=1}drawTriangle(e,t,i,s,n,h,a,r,o,l,c,f,d){let u=this.ctx;const m=e.width-1,g=e.height-1;s*=m,n*=g,r*=m,o*=g,f*=m,d*=g,u.beginPath(),u.moveTo(t,i),u.lineTo(h,a),u.lineTo(l,c),u.closePath(),h-=t,a-=i,l-=t,c-=i,r-=s,o-=n,f-=s,d-=n;let w=r*d-f*o;if(w==0)return;w=1/w;const b=(d*h-o*l)*w,p=(d*a-o*c)*w,x=(r*l-f*h)*w,y=(r*c-f*a)*w,v=t-b*s-x*n,A=i-p*s-y*n;u.save(),u.transform(b,p,x,y,v,A),u.clip(),u.drawImage(e,0,0),u.restore()}computeRegionVertices(e,t,i){let s=e.bone.skeleton.color,n=e.color,h=t.color,a=s.a*n.a*h.a,r=i?a:1,o=this.tempColor;o.set(s.r*n.r*h.r*r,s.g*n.g*h.g*r,s.b*n.b*h.b*r,a),t.computeWorldVertices(e,this.vertices,0,zt.VERTEX_SIZE);let l=this.vertices,c=t.uvs;return l[V.C1R]=o.r,l[V.C1G]=o.g,l[V.C1B]=o.b,l[V.C1A]=o.a,l[V.U1]=c[0],l[V.V1]=c[1],l[V.C2R]=o.r,l[V.C2G]=o.g,l[V.C2B]=o.b,l[V.C2A]=o.a,l[V.U2]=c[2],l[V.V2]=c[3],l[V.C3R]=o.r,l[V.C3G]=o.g,l[V.C3B]=o.b,l[V.C3A]=o.a,l[V.U3]=c[4],l[V.V3]=c[5],l[V.C4R]=o.r,l[V.C4G]=o.g,l[V.C4B]=o.b,l[V.C4A]=o.a,l[V.U4]=c[6],l[V.V4]=c[7],l}computeMeshVertices(e,t,i){let s=e.bone.skeleton.color,n=e.color,h=t.color,a=s.a*n.a*h.a,r=i?a:1,o=this.tempColor;o.set(s.r*n.r*h.r*r,s.g*n.g*h.g*r,s.b*n.b*h.b*r,a);let l=t.worldVerticesLength/2,c=this.vertices;c.length<t.worldVerticesLength&&(this.vertices=c=X.newFloatArray(t.worldVerticesLength)),t.computeWorldVertices(e,0,t.worldVerticesLength,c,0,zt.VERTEX_SIZE);let f=t.uvs;for(let d=0,u=0,m=2;d<l;d++)c[m++]=o.r,c[m++]=o.g,c[m++]=o.b,c[m++]=o.a,c[m++]=f[u++],c[m++]=f[u++],m+=2;return c}},rs=zt;B(rs,"QUAD_TRIANGLES",[0,1,2,2,3,0]),B(rs,"VERTEX_SIZE",8);var wt=class extends Ae.Plugins.ScenePlugin{game;isWebGL;gl;get webGLRenderer(){return wt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,t,i){super(e,t,i),this.game=t.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(Rr),this.atlasCache=this.game.cache.addCustom(kr);let s=function(o,l,c){let f=new ur(this,o,l,ns.json,c);return this.addFile(f.files),this};t.registerFileType("spineJson",s,e);let n=function(o,l,c){let f=new ur(this,o,l,ns.binary,c);return this.addFile(f.files),this};t.registerFileType("spineBinary",n,e);let h=function(o,l,c,f){let d=new Xn(this,o,l,c,f);return this.addFile(d.files),this};t.registerFileType("spineAtlas",h,e);let a=function(o,l,c,f,d){this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const u=this.scene.sys[i];let m=new ss(this.scene,u,o,l,c,f,d);return this.displayList.add(m),this.updateList.add(m),this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),m},r=function(o,l=!1){this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let c=o.x?o.x:0,f=o.y?o.y:0,d=o.boundsProvider?o.boundsProvider:void 0;const u=this.scene.sys[i];let m=new ss(this.scene,u,c,f,o.dataKey,o.atlasKey,d);return l!==void 0&&(o.add=l),this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),Ae.GameObjects.BuildGameObject(this.scene,m,o)};t.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt,a,r)}boot(){We.yDown=!0,this.isWebGL?(wt.gameWebGLRenderer||(wt.gameWebGLRenderer=new ts(this.game.renderer.canvas,this.gl,!0)),this.onResize(),this.game.scale.on(Ae.Scale.Events.RESIZE,this.onResize,this)):this.canvasRenderer||(this.canvasRenderer=new rs(this.scene.sys.context));var e=this.systems.events;e.once("shutdown",this.shutdown,this),e.once("destroy",this.destroy,this),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){var e=this.game.renderer,t=this.webGLRenderer;if(e&&t){var i=e.width,s=e.height;t.camera.position.x=i/2,t.camera.position.y=s/2,t.camera.up.y=-1,t.camera.direction.z=1,t.camera.setViewport(i,s)}}shutdown(){this.systems.events.off("shutdown",this.shutdown,this),this.isWebGL&&this.game.scale.off(Ae.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown()}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),wt.gameWebGLRenderer=null}getAtlas(e){let t;if(this.atlasCache.exists(e))t=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(t=new Yi(i.data),this.isWebGL){let s=this.gl;const n=s.getParameter(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL);n&&s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let h of t.pages)h.setTexture(new at(s,this.game.textures.get(e+"!"+h.name).getSourceImage(),!1));n&&s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let s of t.pages)s.setTexture(new Pn(this.game.textures.get(e+"!"+s.name).getSourceImage()));this.atlasCache.add(e,t)}return t}isAtlasPremultiplied(e){let t=this.game.cache.text.get(e);return t?t.premultipliedAlpha:!1}getSkeletonData(e,t){const i=this.getAtlas(t),s=e+t;let n;if(this.skeletonDataCache.exists(s))n=this.skeletonDataCache.get(s);else{if(this.game.cache.json.exists(e)){let h=this.game.cache.json.get(e);n=new Vs(new Li(i)).readSkeletonData(h)}else{let h=this.game.cache.binary.get(e);n=new Xs(new Li(i)).readSkeletonData(new Uint8Array(h))}this.skeletonDataCache.add(s,n)}return n}createSkeleton(e,t){return new We(this.getSkeletonData(e,t))}},vt=wt;B(vt,"gameWebGLRenderer",null),B(vt,"rendererId",0);var ns=(e=>(e[e.json=0]="json",e[e.binary=1]="binary",e))(ns||{}),ur=class extends Ae.Loader.MultiFile{constructor(e,t,i,s,n){if(typeof t!="string"){const r=t;t=r.key,i=r.url,s=r.type==="spineJson"?0:1,n=r.xhrSettings}let h=null;s==0?h=new Ae.Loader.FileTypes.JSONFile(e,{key:t,url:i,extension:"json",xhrSettings:n}):h=new Ae.Loader.FileTypes.BinaryFile(e,{key:t,url:i,extension:"skel",xhrSettings:n}),super(e,Yr,t,[h]),this.fileType=s}onFileComplete(e){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Xn=class extends Ae.Loader.MultiFile{constructor(e,t,i,s,n){if(typeof t!="string"){const h=t;t=h.key,i=h.url,s=h.premultipliedAlpha,n=h.xhrSettings}super(e,Fr,t,[new Ae.Loader.FileTypes.TextFile(e,{key:t,url:i,xhrSettings:n,extension:"atlas"})]),this.premultipliedAlpha=s}onFileComplete(e){if(this.files.indexOf(e)!=-1&&(this.pending--,e.type=="text")){var t=e.data.split(/\r\n|\r|\n/);let o=[];o.push(t[0]);for(var i=1;i<t.length;i++){var s=t[i];s.trim()===""&&i<t.length-1&&(s=t[i+1],o.push(s))}let l=e.src.match(/^.*\//)??"";for(var n=0;n<o.length;n++){var h=l+o[n],a=e.key+"!"+o[n],r=new Ae.Loader.FileTypes.ImageFile(this.loader,a,h);this.loader.keyExists(r)||(this.addToMultiFile(r),this.loader.addFile(r))}}}addToCache(){if(this.isReadyToProcess()){let e=this.loader.textureManager;for(let t of this.files)t.type=="image"?e.exists(t.key)||e.addImage(t.key,t.data):(this.premultipliedAlpha=this.premultipliedAlpha??(t.data.indexOf("pma: true")>=0||t.data.indexOf("pma:true")>=0),t.data={data:t.data,premultipliedAlpha:this.premultipliedAlpha},t.addToCache())}}};return window.spine={SpinePlugin:vt},window["spine.SpinePlugin"]=vt,Er(hs)})();
|
|
84
|
+
`;return new ue(e,t,i)}},pe=ue;B(pe,"MVP_MATRIX","u_projTrans"),B(pe,"POSITION","a_position"),B(pe,"COLOR","a_color"),B(pe,"COLOR2","a_color2"),B(pe,"TEXCOORDS","a_texCoords"),B(pe,"SAMPLER","u_texture");var Ji=class{constructor(e,t,i,s){this.attributes=t,this.context=e instanceof be?e:new be(e),this.elementsPerVertex=0;for(let n=0;n<t.length;n++)this.elementsPerVertex+=t[n].numElements;this.vertices=new Float32Array(i*this.elementsPerVertex),this.indices=new Uint16Array(s),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(e){this.dirtyVertices=!0,this.verticesLength=e}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(e){this.dirtyIndices=!0,this.indicesLength=e}getIndices(){return this.indices}getVertexSizeInFloats(){let e=0;for(var t=0;t<this.attributes.length;t++){let i=this.attributes[t];e+=i.numElements}return e}setVertices(e){if(this.dirtyVertices=!0,e.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(e,0),this.verticesLength=e.length}setIndices(e){if(this.dirtyIndices=!0,e.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(e,0),this.indicesLength=e.length}draw(e,t){this.drawWithOffset(e,t,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(e,t,i,s){let n=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(e),this.indicesLength>0?n.drawElements(t,s,n.UNSIGNED_SHORT,i*2):n.drawArrays(t,i,s),this.unbind(e)}bind(e){let t=this.context.gl;t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer);let i=0;for(let s=0;s<this.attributes.length;s++){let n=this.attributes[s],h=e.getAttributeLocation(n.name);t.enableVertexAttribArray(h),t.vertexAttribPointer(h,n.numElements,t.FLOAT,!1,this.elementsPerVertex*4,i*4),i+=n.numElements}this.indicesLength>0&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(e){let t=this.context.gl;for(let i=0;i<this.attributes.length;i++){let s=this.attributes[i],n=e.getAttributeLocation(s.name);t.disableVertexAttribArray(n)}t.bindBuffer(t.ARRAY_BUFFER,null),this.indicesLength>0&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}update(){let e=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=e.createBuffer()),e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer),e.bufferData(e.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),e.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=e.createBuffer()),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),e.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let e=this.context.gl;e.deleteBuffer(this.verticesBuffer),e.deleteBuffer(this.indicesBuffer)}},lt=class{constructor(e,t,i){this.name=e,this.type=t,this.numElements=i}},Dt=class extends lt{constructor(){super(pe.POSITION,Qe.Float,2)}},An=class extends lt{constructor(){super(pe.POSITION,Qe.Float,3)}},Ki=class extends lt{constructor(e=0){super(pe.TEXCOORDS+(e==0?"":e),Qe.Float,2)}},Nt=class extends lt{constructor(){super(pe.COLOR,Qe.Float,4)}},Us=class extends lt{constructor(){super(pe.COLOR2,Qe.Float,4)}},Qe=(e=>(e[e.Float=0]="Float",e))(Qe||{}),Ve=1,Cn=769,Ws=770,Gs=771,zs=774,$e=class{context;drawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,t=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof be?e:new be(e);let s=t?[new Dt,new Nt,new Ki,new Us]:[new Dt,new Nt,new Ki];this.mesh=new Ji(e,s,i,i*3);let n=this.context.gl;this.srcColorBlend=n.SRC_ALPHA,this.srcAlphaBlend=n.ONE,this.dstBlend=n.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 t=this.context.gl;t.enable(t.BLEND),t.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),$e.disableCulling&&(this.cullWasEnabled=t.isEnabled(t.CULL_FACE),this.cullWasEnabled&&t.disable(t.CULL_FACE))}setBlendMode(e,t){const i=$e.blendModesGL[e],s=t?i.srcRgbPma:i.srcRgb,n=i.srcAlpha,h=i.dstRgb;if(this.srcColorBlend==s&&this.srcAlphaBlend==n&&this.dstBlend==h)return;this.srcColorBlend=s,this.srcAlphaBlend=n,this.dstBlend=h,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(s,h,n,h)}draw(e,t,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+t.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let s=this.mesh.numVertices();this.mesh.getVertices().set(t,this.verticesLength),this.verticesLength+=t.length,this.mesh.setVerticesLength(this.verticesLength);let n=this.mesh.getIndices();for(let h=this.indicesLength,a=0;a<i.length;h++,a++)n[h]=i[a]+s;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++,$e.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),$e.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=$e.globalDrawCalls;return $e.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},ot=$e;B(ot,"disableCulling",!1),B(ot,"globalDrawCalls",0),B(ot,"blendModesGL",[{srcRgb:Ws,srcRgbPma:Ve,dstRgb:Gs,srcAlpha:Ve},{srcRgb:Ws,srcRgbPma:Ve,dstRgb:Ve,srcAlpha:Ve},{srcRgb:zs,srcRgbPma:zs,dstRgb:Gs,srcAlpha:Ve},{srcRgb:Ve,srcRgbPma:Ve,dstRgb:Cn,srcAlpha:Ve}]);var Qi=class{context;isDrawing=!1;mesh;shapeType=ye.Filled;color=new O(1,1,1,1);shader=null;vertexIndex=0;tmp=new je;srcColorBlend;srcAlphaBlend;dstBlend;constructor(e,t=10920){if(t>10920)throw new Error("Can't have more than 10920 triangles per batch: "+t);this.context=e instanceof be?e:new be(e),this.mesh=new Ji(e,[new Dt,new Nt],t,0);let i=this.context.gl;this.srcColorBlend=i.SRC_ALPHA,this.srcAlphaBlend=i.ONE,this.dstBlend=i.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=e,this.vertexIndex=0,this.isDrawing=!0;let t=this.context.gl;t.enable(t.BLEND),t.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(e,t,i){this.srcColorBlend=e,this.srcAlphaBlend=t,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(e,i,t,i))}setColor(e){this.color.setFromColor(e)}setColorWith(e,t,i,s){this.color.set(e,t,i,s)}point(e,t,i){this.check(ye.Point,1),i||(i=this.color),this.vertex(e,t,i)}line(e,t,i,s,n){this.check(ye.Line,2);let h=this.mesh.getVertices(),a=this.vertexIndex;n||(n=this.color),this.vertex(e,t,n),this.vertex(i,s,n)}triangle(e,t,i,s,n,h,a,r,o,l){this.check(e?ye.Filled:ye.Line,3);let c=this.mesh.getVertices(),f=this.vertexIndex;r||(r=this.color),o||(o=this.color),l||(l=this.color),e?(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(h,a,l)):(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(s,n,r),this.vertex(h,a,o),this.vertex(h,a,r),this.vertex(t,i,o))}quad(e,t,i,s,n,h,a,r,o,l,c,f,d){this.check(e?ye.Filled:ye.Line,3);let u=this.mesh.getVertices(),m=this.vertexIndex;l||(l=this.color),c||(c=this.color),f||(f=this.color),d||(d=this.color),e?(this.vertex(t,i,l),this.vertex(s,n,c),this.vertex(h,a,f),this.vertex(h,a,f),this.vertex(r,o,d),this.vertex(t,i,l)):(this.vertex(t,i,l),this.vertex(s,n,c),this.vertex(s,n,c),this.vertex(h,a,f),this.vertex(h,a,f),this.vertex(r,o,d),this.vertex(r,o,d),this.vertex(t,i,l))}rect(e,t,i,s,n,h){this.quad(e,t,i,t+s,i,t+s,i+n,t,i+n,h,h,h,h)}rectLine(e,t,i,s,n,h,a){this.check(e?ye.Filled:ye.Line,8),a||(a=this.color);let r=this.tmp.set(n-i,t-s);r.normalize(),h*=.5;let o=r.x*h,l=r.y*h;e?(this.vertex(t+o,i+l,a),this.vertex(t-o,i-l,a),this.vertex(s+o,n+l,a),this.vertex(s-o,n-l,a),this.vertex(s+o,n+l,a),this.vertex(t-o,i-l,a)):(this.vertex(t+o,i+l,a),this.vertex(t-o,i-l,a),this.vertex(s+o,n+l,a),this.vertex(s-o,n-l,a),this.vertex(s+o,n+l,a),this.vertex(t+o,i+l,a),this.vertex(s-o,n-l,a),this.vertex(t-o,i-l,a))}x(e,t,i){this.line(e-i,t-i,e+i,t+i),this.line(e-i,t+i,e+i,t-i)}polygon(e,t,i,s){if(i<3)throw new Error("Polygon must contain at least 3 vertices");this.check(ye.Line,i*2),s||(s=this.color);let n=this.mesh.getVertices(),h=this.vertexIndex;t<<=1,i<<=1;let a=e[t],r=e[t+1],o=t+i;for(let l=t,c=t+i-2;l<c;l+=2){let f=e[l],d=e[l+1],u=0,m=0;l+2>=o?(u=a,m=r):(u=e[l+2],m=e[l+3]),this.vertex(f,d,s),this.vertex(u,m,s)}}circle(e,t,i,s,n,h=0){if(h==0&&(h=Math.max(1,6*L.cbrt(s)|0)),h<=0)throw new Error("segments must be > 0.");n||(n=this.color);let a=2*L.PI/h,r=Math.cos(a),o=Math.sin(a),l=s,c=0;if(e){this.check(ye.Filled,h*3+3),h--;for(let d=0;d<h;d++){this.vertex(t,i,n),this.vertex(t+l,i+c,n);let u=l;l=r*l-o*c,c=o*u+r*c,this.vertex(t+l,i+c,n)}this.vertex(t,i,n),this.vertex(t+l,i+c,n)}else{this.check(ye.Line,h*2+2);for(let d=0;d<h;d++){this.vertex(t+l,i+c,n);let u=l;l=r*l-o*c,c=o*u+r*c,this.vertex(t+l,i+c,n)}this.vertex(t+l,i+c,n)}let f=l;l=s,c=0,this.vertex(t+l,i+c,n)}curve(e,t,i,s,n,h,a,r,o,l){this.check(ye.Line,o*2+2),l||(l=this.color);let c=1/o,f=c*c,d=c*c*c,u=3*c,m=3*f,g=6*f,w=6*d,b=e-i*2+n,p=t-s*2+h,x=(i-n)*3-e+a,y=(s-h)*3-t+r,v=e,A=t,C=(i-e)*u+b*m+x*d,S=(s-t)*u+p*m+y*d,E=b*g+x*w,R=p*g+y*w,Y=x*w,P=y*w;for(;o-- >0;)this.vertex(v,A,l),v+=C,A+=S,C+=E,S+=R,E+=Y,R+=P,this.vertex(v,A,l);this.vertex(v,A,l),this.vertex(a,r,l)}vertex(e,t,i){let s=this.vertexIndex,n=this.mesh.getVertices();n[s++]=e,n[s++]=t,n[s++]=i.r,n[s++]=i.g,n[s++]=i.b,n[s++]=i.a,this.vertexIndex=s}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let e=this.context.gl;e.disable(e.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(e,t){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==e)if(this.mesh.maxVertices()-this.mesh.numVertices()<t)this.flush();else return;else this.flush(),this.shapeType=e}dispose(){this.mesh.dispose()}},ye=(e=>(e[e.Point=0]="Point",e[e.Line=1]="Line",e[e.Filled=4]="Filled",e))(ye||{}),$i=class{boneLineColor=new O(1,0,0,1);boneOriginColor=new O(0,1,0,1);attachmentLineColor=new O(0,0,1,.5);triangleLineColor=new O(1,.64,0,.5);pathColor=new O().setFromString("FF7F00");clipColor=new O(.8,0,0,2);aabbColor=new O(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 Os;temp=new Array;vertices=X.newFloatArray(2*1024);constructor(e){this.context=e instanceof be?e:new be(e)}draw(e,t,i){let s=t.x,n=t.y,h=this.context.gl,a=this.premultipliedAlpha?h.ONE:h.SRC_ALPHA;e.setBlendMode(a,h.ONE,h.ONE_MINUS_SRC_ALPHA);let r=t.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,l=r.length;o<l;o++){let c=r[o];if(i&&i.indexOf(c.data.name)>-1||!c.parent)continue;let f=c.data.length*c.a+c.worldX,d=c.data.length*c.c+c.worldY;e.rectLine(!0,c.worldX,c.worldY,f,d,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(s,n,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l],d=f.getAttachment();if(d instanceof V){let u=d,m=this.vertices;u.computeWorldVertices(f,m,0,2),e.line(m[0],m[1],m[2],m[3]),e.line(m[2],m[3],m[4],m[5]),e.line(m[4],m[5],m[6],m[7]),e.line(m[6],m[7],m[0],m[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Be))continue;let u=d,m=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,m,0,2);let g=u.triangles,w=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let b=0,p=g.length;b<p;b+=3){let x=g[b]*2,y=g[b+1]*2,v=g[b+2]*2;e.triangle(!1,m[x],m[x+1],m[y],m[y+1],m[v],m[v+1])}}if(this.drawMeshHull&&w>0){e.setColor(this.attachmentLineColor),w=(w>>1)*2;let b=m[w-2],p=m[w-1];for(let x=0,y=w;x<y;x+=2){let v=m[x],A=m[x+1];e.line(v,A,b,p),b=v,p=A}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(t,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let l=o.polygons,c=o.boundingBoxes;for(let f=0,d=l.length;f<d;f++){let u=l[f];e.setColor(c[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=t.slots;for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Ke))continue;let u=d,m=u.worldVerticesLength,g=this.temp=X.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,g,0,2);let w=this.pathColor,b=g[2],p=g[3],x=0,y=0;if(u.closed){e.setColor(w);let v=g[0],A=g[1],C=g[m-2],S=g[m-1];x=g[m-4],y=g[m-3],e.curve(b,p,v,A,C,S,x,y,32),e.setColor($i.LIGHT_GRAY),e.line(b,p,v,A),e.line(x,y,C,S)}m-=4;for(let v=4;v<m;v+=6){let A=g[v],C=g[v+1],S=g[v+2],E=g[v+3];x=g[v+4],y=g[v+5],e.setColor(w),e.curve(b,p,A,C,S,E,x,y,32),e.setColor($i.LIGHT_GRAY),e.line(b,p,A,C),e.line(x,y,S,E),b=x,p=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,l=r.length;o<l;o++){let c=r[o];i&&i.indexOf(c.data.name)>-1||e.circle(!0,c.worldX,c.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=t.slots;e.setColor(this.clipColor);for(let l=0,c=o.length;l<c;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof st))continue;let u=d,m=u.worldVerticesLength,g=this.temp=X.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,g,0,2);for(let w=0,b=g.length;w<b;w+=2){let p=g[w],x=g[w+1],y=g[(w+2)%g.length],v=g[(w+3)%g.length];e.line(p,x,y,v)}}}}dispose(){}},_t=$i;B(_t,"LIGHT_GRAY",new O(.7529411764705882,.7529411764705882,.7529411764705882,1)),B(_t,"GREEN",new O(0,1,0,1));var Sn=class{constructor(e,t,i){this.vertices=e,this.numVertices=t,this.numFloats=i}},qs=class{premultipliedAlpha=!1;tempColor=new O;tempColor2=new O;vertices;vertexSize=2+2+4;twoColorTint=!1;renderable=new Sn([],0,0);clipper=new nt;temp=new je;temp2=new je;temp3=new O;temp4=new O;constructor(e,t=!0){this.twoColorTint=t,t&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,t,i=-1,s=-1,n=null){let h=this.clipper,a=this.premultipliedAlpha,r=this.twoColorTint,o=null,l=this.renderable,c,f,d=t.drawOrder,u,m=t.color,g=r?12:8,w=!1;i==-1&&(w=!0);for(let b=0,p=d.length;b<p;b++){let x=h.isClipping()?2:g,y=d[b];if(!y.bone.active){h.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(w=!0),!w){h.clipEndWithSlot(y);continue}s>=0&&s==y.data.index&&(w=!1);let v=y.getAttachment(),A;if(v instanceof V){let C=v;l.vertices=this.vertices,l.numVertices=4,l.numFloats=x<<2,C.computeWorldVertices(y,l.vertices,0,x),f=qs.QUAD_TRIANGLES,c=C.uvs,A=C.region.texture,u=C.color}else if(v instanceof Be){let C=v;l.vertices=this.vertices,l.numVertices=C.worldVerticesLength>>1,l.numFloats=l.numVertices*x,l.numFloats>l.vertices.length&&(l.vertices=this.vertices=X.newFloatArray(l.numFloats)),C.computeWorldVertices(y,0,C.worldVerticesLength,l.vertices,0,x),f=C.triangles,A=C.region.texture,c=C.uvs,u=C.color}else if(v instanceof st){let C=v;h.clipStart(y,C);continue}else{h.clipEndWithSlot(y);continue}if(A){let C=y.color,S=this.tempColor;S.r=m.r*C.r*u.r,S.g=m.g*C.g*u.g,S.b=m.b*C.b*u.b,S.a=m.a*C.a*u.a,a&&(S.r*=S.a,S.g*=S.a,S.b*=S.a);let E=this.tempColor2;y.darkColor?(a?(E.r=y.darkColor.r*S.a,E.g=y.darkColor.g*S.a,E.b=y.darkColor.b*S.a):E.setFromColor(y.darkColor),E.a=a?1:0):E.set(0,0,0,1);let R=y.data.blendMode;if(R!=o&&(o=R,e.setBlendMode(o,a)),h.isClipping()){h.clipTriangles(l.vertices,f,f.length,c,S,E,r);let Y=new Float32Array(h.clippedVertices),P=h.clippedTriangles;n&&n(Y,Y.length,g),e.draw(A,Y,P)}else{let Y=l.vertices;if(r)for(let I=2,k=0,F=l.numFloats;I<F;I+=g,k+=2)Y[I]=S.r,Y[I+1]=S.g,Y[I+2]=S.b,Y[I+3]=S.a,Y[I+4]=c[k],Y[I+5]=c[k+1],Y[I+6]=E.r,Y[I+7]=E.g,Y[I+8]=E.b,Y[I+9]=E.a;else for(let I=2,k=0,F=l.numFloats;I<F;I+=g,k+=2)Y[I]=S.r,Y[I+1]=S.g,Y[I+2]=S.b,Y[I+3]=S.a,Y[I+4]=c[k],Y[I+5]=c[k+1];let P=l.vertices.subarray(0,l.numFloats);n&&n(l.vertices,l.numFloats,g),e.draw(A,P,f)}}h.clipEndWithSlot(y)}h.clipEnd()}getSkeletonClipping(){return this.clipper}},es=qs;B(es,"QUAD_TRIANGLES",[0,1,2,2,3,0]);var 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],Ut=[0,1,2,2,3,0],Wt=new O(1,1,1,1),ts=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(e,t,i=!0){this.canvas=e,this.context=t instanceof be?t:new be(t),this.twoColorTint=i,this.camera=new Ns(e.width,e.height),this.batcherShader=i?pe.newTwoColoredTextured(this.context):pe.newColoredTextured(this.context),this.batcher=new ot(this.context,i),this.shapesShader=pe.newColored(this.context),this.shapes=new Qi(this.context),this.skeletonRenderer=new es(this.context,i),this.skeletonDebugRenderer=new _t(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(e,t=!1,i=-1,s=-1,n=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=t,this.skeletonRenderer.draw(this.batcher,e,i,s,n)}drawSkeletonDebug(e,t=!1,i){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=t,this.skeletonDebugRenderer.draw(this.shapes,e,i)}drawTexture(e,t,i,s,n,h){this.enableRenderer(this.batcher),h||(h=Wt);var a=0;T[a++]=t,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=0,T[a++]=1,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=1,T[a++]=1,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=1,T[a++]=0,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=0,T[a++]=0,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a]=0),this.batcher.draw(e,T,Ut)}drawTextureUV(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.batcher),l||(l=Wt);var c=0;T[c++]=t,T[c++]=i,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=h,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t+s,T[c++]=i,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=r,T[c++]=a,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t+s,T[c++]=i+n,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=r,T[c++]=o,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c++]=0),T[c++]=t,T[c++]=i+n,T[c++]=l.r,T[c++]=l.g,T[c++]=l.b,T[c++]=l.a,T[c++]=h,T[c++]=o,this.twoColorTint&&(T[c++]=0,T[c++]=0,T[c++]=0,T[c]=0),this.batcher.draw(e,T,Ut)}drawTextureRotated(e,t,i,s,n,h,a,r,o){this.enableRenderer(this.batcher),o||(o=Wt);let l=t+h,c=i+a,f=-h,d=-a,u=s-h,m=n-a,g=f,w=d,b=f,p=m,x=u,y=m,v=u,A=d,C=0,S=0,E=0,R=0,Y=0,P=0,I=0,k=0;if(r!=0){let se=L.cosDeg(r),re=L.sinDeg(r);C=se*g-re*w,S=re*g+se*w,I=se*b-re*p,k=re*b+se*p,Y=se*x-re*y,P=re*x+se*y,E=Y+(C-I),R=P+(S-k)}else C=g,S=w,I=b,k=p,Y=x,P=y,E=v,R=A;C+=l,S+=c,E+=l,R+=c,Y+=l,P+=c,I+=l,k+=c;var F=0;T[F++]=C,T[F++]=S,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=0,T[F++]=1,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=E,T[F++]=R,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=1,T[F++]=1,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=Y,T[F++]=P,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=1,T[F++]=0,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F++]=0),T[F++]=I,T[F++]=k,T[F++]=o.r,T[F++]=o.g,T[F++]=o.b,T[F++]=o.a,T[F++]=0,T[F++]=0,this.twoColorTint&&(T[F++]=0,T[F++]=0,T[F++]=0,T[F]=0),this.batcher.draw(e,T,Ut)}drawRegion(e,t,i,s,n,h){this.enableRenderer(this.batcher),h||(h=Wt);var a=0;T[a++]=t,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u,T[a++]=e.v2,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u2,T[a++]=e.v2,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t+s,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u2,T[a++]=e.v,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a++]=0),T[a++]=t,T[a++]=i+n,T[a++]=h.r,T[a++]=h.g,T[a++]=h.b,T[a++]=h.a,T[a++]=e.u,T[a++]=e.v,this.twoColorTint&&(T[a++]=0,T[a++]=0,T[a++]=0,T[a]=0),this.batcher.draw(e.page.texture,T,Ut)}line(e,t,i,s,n,h){this.enableRenderer(this.shapes),this.shapes.line(e,t,i,s,n)}triangle(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.triangle(e,t,i,s,n,h,a,r,o,l)}quad(e,t,i,s,n,h,a,r,o,l,c,f,d){this.enableRenderer(this.shapes),this.shapes.quad(e,t,i,s,n,h,a,r,o,l,c,f,d)}rect(e,t,i,s,n,h){this.enableRenderer(this.shapes),this.shapes.rect(e,t,i,s,n,h)}rectLine(e,t,i,s,n,h,a){this.enableRenderer(this.shapes),this.shapes.rectLine(e,t,i,s,n,h,a)}polygon(e,t,i,s){this.enableRenderer(this.shapes),this.shapes.polygon(e,t,i,s)}circle(e,t,i,s,n,h=0){this.enableRenderer(this.shapes),this.shapes.circle(e,t,i,s,n,h)}curve(e,t,i,s,n,h,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.curve(e,t,i,s,n,h,a,r,o,l)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(e){let t=this.canvas;var i=window.devicePixelRatio||1,s=Math.round(t.clientWidth*i),n=Math.round(t.clientHeight*i);if((t.width!=s||t.height!=n)&&(t.width=s,t.height=n),this.context.gl.viewport(0,0,t.width,t.height),e===Gt.Expand)this.camera.setViewport(s,n);else if(e===Gt.Fit){let h=t.width,a=t.height,r=this.camera.viewportWidth,o=this.camera.viewportHeight,l=o/r,c=a/h,f=l<c?r/h:o/a;this.camera.setViewport(h*f,a*f)}this.camera.update()}enableRenderer(e){this.activeRenderer!==e&&(this.end(),e instanceof ot?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(pe.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):e instanceof Qi?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(pe.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},Gt=(e=>(e[e.Stretch=0]="Stretch",e[e.Expand=1]="Expand",e[e.Fit=2]="Fit",e))(Gt||{}),bt,ht,Hs=0,Tn=1,is=1,js=165,Zs=108,et=163,In=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Kt;backgroundColor=new O(.135,.135,.135,1);tempColor=new O;constructor(e){if(this.renderer=e,this.timeKeeper.maxDelta=9,!ht){let t=navigator.userAgent.indexOf("Safari")>-1,i=()=>Hs++;ht=new Image,ht.src=En,t||(ht.crossOrigin="anonymous"),ht.onload=i,bt=new Image,bt.src=Mn,t||(bt.crossOrigin="anonymous"),bt.onload=i}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(e=!1){if(Hs<2||e&&this.fadeOut>is)return;this.timeKeeper.update();let t=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(t,5));let i=this.tempColor,s=this.renderer,n=s.canvas,h=s.context.gl;if(s.resize(1),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(0,!0),e){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>is)return;i.setFromColor(this.backgroundColor),t=1-this.fadeOut/is,t=1-(t-1)*(t-1),i.a*=t,i.a>0&&(s.camera.zoom=1,s.begin(),s.quad(!0,0,0,n.width,0,n.width,n.height,0,n.height,i,i,i,i),s.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)),t=1;t*=Math.min(this.fadeIn/Tn,1),i.set(t,t,t,t),this.logo||(this.logo=new at(s.context,ht),this.spinner=new at(s.context,bt)),s.camera.zoom=Math.max(1,et/n.height),s.begin(),s.drawTexture(this.logo,(n.width-js)/2,(n.height-Zs)/2,js,Zs,i),this.spinner&&s.drawTextureRotated(this.spinner,(n.width-et)/2,(n.height-et)/2,et,et,et/2,et/2,this.angle,i),s.end()}},Mn="data:image/png;base64,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",En="data:image/png;base64,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",Rn=class{constructor(e,t){this.config=t,t.pathPrefix||(t.pathPrefix=""),t.app||(t.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),t.webglConfig||(t.webglConfig={alpha:!0}),this.htmlCanvas=e,this.context=new be(e,t.webglConfig),this.renderer=new ts(e,this.context),this.gl=this.context.gl,this.assetManager=new Ds(this.context,t.pathPrefix),this.input=new Zi(e),t.app.loadAssets&&t.app.loadAssets(this);let i=()=>{this.disposed||(requestAnimationFrame(i),this.time.update(),t.app.update&&t.app.update(this,this.time.delta),t.app.render&&t.app.render(this))},s=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?t.app.error&&t.app.error(this,this.assetManager.getErrors()):(t.app.initialize&&t.app.initialize(this),i());return}requestAnimationFrame(s)}};requestAnimationFrame(s)}context;time=new Kt;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(e,t,i,s){this.gl.clearColor(e,t,i,s),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}},ze=Phaser.GameObjects.Components,Js=ze.ComputedSize,Ks=ze.Depth,Qs=ze.Flip,$s=ze.ScrollFactor,er=ze.Transform,tr=ze.Visible,ir=ze.Origin,sr=ze.Alpha;function De(...e){return t=>(Phaser.Class.mixin(t,e),t)}var rr=De(Js),nr=De(Ks),ar=De(Qs),lr=De($s),or=De(er),hr=De(tr),cr=De(ir),dr=De(sr),kn=class extends Phaser.GameObjects.GameObject{constructor(e,t){super(e,t)}},Yn=class{constructor(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},fr=class{constructor(e=!1){this.clipping=e}calculateBounds(e){if(!e.skeleton)return{x:0,y:0,width:0,height:0};const t=new We(e.skeleton.data);t.setToSetupPose(),t.updateWorldTransform(2);const i=t.getBoundsRect(this.clipping?new nt:void 0);return i.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:i}},Fn=class{constructor(e,t=[],i=.05,s=!1){this.animation=e,this.skins=t,this.timeStep=i,this.clipping=s}calculateBounds(e){if(!e.skeleton||!e.animationState)return{x:0,y:0,width:0,height:0};const t=new Et(e.animationState.data),i=new We(e.skeleton.data),s=this.clipping?new nt:void 0,n=i.data;if(this.skins.length>0){let a=new xt("custom-skin");for(const r of this.skins){const o=n.findSkin(r);o!=null&&a.addSkin(o)}i.setSkin(a)}i.setToSetupPose();const h=this.animation!=null?n.findAnimation(this.animation):null;if(h==null){i.updateWorldTransform(2);const a=i.getBoundsRect(s);return a.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:a}else{let a=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;t.clearTracks(),t.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let d=0;d<c;d++){const u=d>0?this.timeStep:0;t.update(u),t.apply(i),i.update(u),i.updateWorldTransform(2);const m=i.getBoundsRect(s);a=Math.min(a,m.x),r=Math.min(r,m.y),o=Math.max(o,m.x+m.width),l=Math.max(l,m.y+m.height)}const f={x:a,y:r,width:o-a,height:l-r};return f.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:f}}},ss=class extends nr(cr(rr(ar(lr(or(hr(dr(kn)))))))){constructor(e,t,i,s,n,h,a=new fr){super(e,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt),this.plugin=t,this.boundsProvider=a,this.setPosition(i,s),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(n,h),this.animationStateData=new Ss(this.skeleton.data),this.animationState=new Et(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 e=this.boundsProvider.calculateBounds(this);this.width=e.width,this.height=e.height,this.setDisplayOrigin(-e.x,-e.y),this.offsetX=-e.x,this.offsetY=-e.y}skeletonToPhaserWorldCoordinates(e){let t=this.getWorldTransformMatrix(),i=t.a,s=t.b,n=t.c,h=t.d,a=t.tx,r=t.ty,o=e.x,l=e.y;e.x=o*i+l*n+a,e.y=o*s+l*h+r}phaserWorldCoordinatesToSkeleton(e){let t=this.getWorldTransformMatrix();t=t.invert();let i=t.a,s=t.b,n=t.c,h=t.d,a=t.tx,r=t.ty,o=e.x,l=e.y;e.x=o*i+l*n+a,e.y=o*s+l*h+r}phaserWorldCoordinatesToBone(e,t){this.phaserWorldCoordinatesToSkeleton(e),t.parent?t.parent.worldToLocal(e):t.worldToLocal(e)}updatePose(e){this.animationState.update(e/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(e/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(e,t){!this.skeleton||!this.animationState||this.updatePose(t)}preDestroy(){}willRender(e){var t=15,i=!this.skeleton||!(t!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&e.id);if(this.visible||(i=!1),!i&&this.parentContainer&&this.plugin.webGLRenderer){var s=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&s.batcher.isDrawing&&(s.end(),this.plugin.phaserRenderer.pipelines.rebind())}return i}renderWebGL(e,t,i,s){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let n=this.plugin.webGLRenderer;e.newType&&(e.pipelines.clear(),n.begin()),i.addToRenderList(t);let h=Phaser.GameObjects.GetCalcMatrix(t,i,s).calc,a=h.a,r=h.b,o=h.c,l=h.d,c=h.tx,f=h.ty,d=t.offsetX-t.displayOriginX,u=t.offsetY-t.displayOriginY;n.drawSkeleton(t.skeleton,t.premultipliedAlpha,-1,-1,(m,g,w)=>{for(let b=0;b<g;b+=w){let p=m[b]+d,x=m[b+1]+u;m[b]=p*a+x*o+c,m[b+1]=p*r+x*l+f}}),e.nextTypeMatch||(n.end(),e.pipelines.rebind())}renderCanvas(e,t,i,s){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let n=e.currentContext,h=this.plugin.canvasRenderer;h.ctx=n,i.addToRenderList(t);let a=Phaser.GameObjects.GetCalcMatrix(t,i,s).calc,r=this.skeleton;r.x=a.tx,r.y=a.ty,r.scaleX=a.scaleX,r.scaleY=a.scaleY;let o=r.getRootBone();o.rotation=-L.radiansToDegrees*a.rotationNormalized,this.skeleton.updateWorldTransform(2),n.save(),h.draw(r),n.restore()}},Pn=class extends Ft{constructor(e){super(e)}setFilters(e,t){}setWraps(e,t){}dispose(){}},Ln=X.newFloatArray(8),zt=class{ctx;triangleRendering=!1;debugRendering=!1;vertices=X.newFloatArray(8*1024);tempColor=new O;constructor(e){this.ctx=e}draw(e){this.triangleRendering?this.drawTriangles(e):this.drawImages(e)}drawImages(e){let t=this.ctx,i=this.tempColor,s=e.color,n=e.drawOrder;this.debugRendering&&(t.strokeStyle="green");for(let h=0,a=n.length;h<a;h++){let r=n[h],o=r.bone;if(!o.active)continue;let l=r.getAttachment();if(!(l instanceof V))continue;l.computeWorldVertices(r,Ln,0,2);let c=l.region,f=c.texture.getImage(),d=r.color,u=l.color;i.set(s.r*d.r*u.r,s.g*d.g*u.g,s.b*d.b*u.b,s.a*d.a*u.a),t.save(),t.transform(o.a,o.c,o.b,o.d,o.worldX,o.worldY),t.translate(l.offset[0],l.offset[1]),t.rotate(l.rotation*Math.PI/180);let m=l.width/c.originalWidth;t.scale(m*l.scaleX,m*l.scaleY);let g=c.width,w=c.height;if(t.translate(g/2,w/2),l.region.degrees==90){let b=g;g=w,w=b,t.rotate(-Math.PI/2)}t.scale(1,-1),t.translate(-g/2,-w/2),t.globalAlpha=i.a,t.drawImage(f,f.width*c.u,f.height*c.v,g,w,0,0,g,w),this.debugRendering&&t.strokeRect(0,0,g,w),t.restore()}}drawTriangles(e){let t=this.ctx,i=this.tempColor,s=e.color,n=e.drawOrder,h=null,a=this.vertices,r=null;for(let l=0,c=n.length;l<c;l++){let f=n[l],d=f.getAttachment(),u,m;if(d instanceof V){let g=d;a=this.computeRegionVertices(f,g,!1),r=zt.QUAD_TRIANGLES,u=g.region.texture.getImage()}else if(d instanceof Be){let g=d;a=this.computeMeshVertices(f,g,!1),r=g.triangles,u=g.region.texture.getImage()}else continue;if(u){f.data.blendMode!=h&&(h=f.data.blendMode);let g=f.color,w=d.color;i.set(s.r*g.r*w.r,s.g*g.g*w.g,s.b*g.b*w.b,s.a*g.a*w.a),t.globalAlpha=i.a;for(var o=0;o<r.length;o+=3){let b=r[o]*8,p=r[o+1]*8,x=r[o+2]*8,y=a[b],v=a[b+1],A=a[b+6],C=a[b+7],S=a[p],E=a[p+1],R=a[p+6],Y=a[p+7],P=a[x],I=a[x+1],k=a[x+6],F=a[x+7];this.drawTriangle(u,y,v,A,C,S,E,R,Y,P,I,k,F),this.debugRendering&&(t.strokeStyle="green",t.beginPath(),t.moveTo(y,v),t.lineTo(S,E),t.lineTo(P,I),t.lineTo(y,v),t.stroke())}}}this.ctx.globalAlpha=1}drawTriangle(e,t,i,s,n,h,a,r,o,l,c,f,d){let u=this.ctx;const m=e.width-1,g=e.height-1;s*=m,n*=g,r*=m,o*=g,f*=m,d*=g,u.beginPath(),u.moveTo(t,i),u.lineTo(h,a),u.lineTo(l,c),u.closePath(),h-=t,a-=i,l-=t,c-=i,r-=s,o-=n,f-=s,d-=n;let w=r*d-f*o;if(w==0)return;w=1/w;const b=(d*h-o*l)*w,p=(d*a-o*c)*w,x=(r*l-f*h)*w,y=(r*c-f*a)*w,v=t-b*s-x*n,A=i-p*s-y*n;u.save(),u.transform(b,p,x,y,v,A),u.clip(),u.drawImage(e,0,0),u.restore()}computeRegionVertices(e,t,i){let s=e.bone.skeleton.color,n=e.color,h=t.color,a=s.a*n.a*h.a,r=i?a:1,o=this.tempColor;o.set(s.r*n.r*h.r*r,s.g*n.g*h.g*r,s.b*n.b*h.b*r,a),t.computeWorldVertices(e,this.vertices,0,zt.VERTEX_SIZE);let l=this.vertices,c=t.uvs;return l[V.C1R]=o.r,l[V.C1G]=o.g,l[V.C1B]=o.b,l[V.C1A]=o.a,l[V.U1]=c[0],l[V.V1]=c[1],l[V.C2R]=o.r,l[V.C2G]=o.g,l[V.C2B]=o.b,l[V.C2A]=o.a,l[V.U2]=c[2],l[V.V2]=c[3],l[V.C3R]=o.r,l[V.C3G]=o.g,l[V.C3B]=o.b,l[V.C3A]=o.a,l[V.U3]=c[4],l[V.V3]=c[5],l[V.C4R]=o.r,l[V.C4G]=o.g,l[V.C4B]=o.b,l[V.C4A]=o.a,l[V.U4]=c[6],l[V.V4]=c[7],l}computeMeshVertices(e,t,i){let s=e.bone.skeleton.color,n=e.color,h=t.color,a=s.a*n.a*h.a,r=i?a:1,o=this.tempColor;o.set(s.r*n.r*h.r*r,s.g*n.g*h.g*r,s.b*n.b*h.b*r,a);let l=t.worldVerticesLength/2,c=this.vertices;c.length<t.worldVerticesLength&&(this.vertices=c=X.newFloatArray(t.worldVerticesLength)),t.computeWorldVertices(e,0,t.worldVerticesLength,c,0,zt.VERTEX_SIZE);let f=t.uvs;for(let d=0,u=0,m=2;d<l;d++)c[m++]=o.r,c[m++]=o.g,c[m++]=o.b,c[m++]=o.a,c[m++]=f[u++],c[m++]=f[u++],m+=2;return c}},rs=zt;B(rs,"QUAD_TRIANGLES",[0,1,2,2,3,0]),B(rs,"VERTEX_SIZE",8);var wt=class extends Ae.Plugins.ScenePlugin{game;isWebGL;gl;get webGLRenderer(){return wt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,t,i){super(e,t,i),this.game=t.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(Rr),this.atlasCache=this.game.cache.addCustom(kr);let s=function(o,l,c){let f=new ur(this,o,l,ns.json,c);return this.addFile(f.files),this};t.registerFileType("spineJson",s,e);let n=function(o,l,c){let f=new ur(this,o,l,ns.binary,c);return this.addFile(f.files),this};t.registerFileType("spineBinary",n,e);let h=function(o,l,c,f){let d=new Xn(this,o,l,c,f);return this.addFile(d.files),this};t.registerFileType("spineAtlas",h,e);let a=function(o,l,c,f,d){this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const u=this.scene.sys[i];let m=new ss(this.scene,u,o,l,c,f,d);return this.displayList.add(m),this.updateList.add(m),this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),m},r=function(o,l=!1){this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let c=o.x?o.x:0,f=o.y?o.y:0,d=o.boundsProvider?o.boundsProvider:void 0;const u=this.scene.sys[i];let m=new ss(this.scene,u,c,f,o.dataKey,o.atlasKey,d);return l!==void 0&&(o.add=l),this.scene.sys.renderer instanceof Ae.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),Ae.GameObjects.BuildGameObject(this.scene,m,o)};t.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt,a,r)}boot(){We.yDown=!0,this.isWebGL?(wt.gameWebGLRenderer||(wt.gameWebGLRenderer=new ts(this.game.renderer.canvas,this.gl,!0)),this.onResize(),this.game.scale.on(Ae.Scale.Events.RESIZE,this.onResize,this)):this.canvasRenderer||(this.canvasRenderer=new rs(this.scene.sys.context));var e=this.systems.events;e.once("shutdown",this.shutdown,this),e.once("destroy",this.destroy,this),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){var e=this.game.renderer,t=this.webGLRenderer;if(e&&t){var i=e.width,s=e.height;t.camera.position.x=i/2,t.camera.position.y=s/2,t.camera.up.y=-1,t.camera.direction.z=1,t.camera.setViewport(i,s)}}shutdown(){this.systems.events.off("shutdown",this.shutdown,this),this.isWebGL&&this.game.scale.off(Ae.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown()}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:Zt,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),wt.gameWebGLRenderer=null}getAtlas(e){let t;if(this.atlasCache.exists(e))t=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(t=new Yi(i.data),this.isWebGL){let s=this.gl;const n=s.getParameter(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL);n&&s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let h of t.pages)h.setTexture(new at(s,this.game.textures.get(e+"!"+h.name).getSourceImage(),!1));n&&s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let s of t.pages)s.setTexture(new Pn(this.game.textures.get(e+"!"+s.name).getSourceImage()));this.atlasCache.add(e,t)}return t}isAtlasPremultiplied(e){let t=this.game.cache.text.get(e);return t?t.premultipliedAlpha:!1}getSkeletonData(e,t){const i=this.getAtlas(t),s=e+t;let n;if(this.skeletonDataCache.exists(s))n=this.skeletonDataCache.get(s);else{if(this.game.cache.json.exists(e)){let h=this.game.cache.json.get(e);n=new Vs(new Li(i)).readSkeletonData(h)}else{let h=this.game.cache.binary.get(e);n=new Xs(new Li(i)).readSkeletonData(new Uint8Array(h))}this.skeletonDataCache.add(s,n)}return n}createSkeleton(e,t){return new We(this.getSkeletonData(e,t))}},vt=wt;B(vt,"gameWebGLRenderer",null),B(vt,"rendererId",0);var ns=(e=>(e[e.json=0]="json",e[e.binary=1]="binary",e))(ns||{}),ur=class extends Ae.Loader.MultiFile{constructor(e,t,i,s,n){if(typeof t!="string"){const r=t;t=r.key,i=r.url,s=r.type==="spineJson"?0:1,n=r.xhrSettings}let h=null;s==0?h=new Ae.Loader.FileTypes.JSONFile(e,{key:t,url:i,extension:"json",xhrSettings:n}):h=new Ae.Loader.FileTypes.BinaryFile(e,{key:t,url:i,extension:"skel",xhrSettings:n}),super(e,Yr,t,[h]),this.fileType=s}onFileComplete(e){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Xn=class extends Ae.Loader.MultiFile{constructor(e,t,i,s,n){if(typeof t!="string"){const h=t;t=h.key,i=h.url,s=h.premultipliedAlpha,n=h.xhrSettings}super(e,Fr,t,[new Ae.Loader.FileTypes.TextFile(e,{key:t,url:i,xhrSettings:n,extension:"atlas"})]),this.premultipliedAlpha=s}onFileComplete(e){if(this.files.indexOf(e)!=-1&&(this.pending--,e.type=="text")){var t=e.data.split(/\r\n|\r|\n/);let o=[];o.push(t[0]);for(var i=1;i<t.length;i++){var s=t[i];s.trim()===""&&i<t.length-1&&(s=t[i+1],o.push(s))}let l=e.src.match(/^.*\//)??"";for(var n=0;n<o.length;n++){var h=l+o[n],a=e.key+"!"+o[n],r=new Ae.Loader.FileTypes.ImageFile(this.loader,a,h);this.loader.keyExists(r)||(this.addToMultiFile(r),this.loader.addFile(r))}}}addToCache(){if(this.isReadyToProcess()){let e=this.loader.textureManager;for(let t of this.files)t.type=="image"?e.exists(t.key)||e.addImage(t.key,t.data):(this.premultipliedAlpha=this.premultipliedAlpha??(t.data.indexOf("pma: true")>=0||t.data.indexOf("pma:true")>=0),t.data={data:t.data,premultipliedAlpha:this.premultipliedAlpha},t.addToCache())}}};return window.spine={SpinePlugin:vt},window["spine.SpinePlugin"]=vt,Er(hs)})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esotericsoftware/spine-phaser-v3",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.79",
|
|
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.
|
|
35
|
-
"@esotericsoftware/spine-core": "4.2.
|
|
36
|
-
"@esotericsoftware/spine-webgl": "4.2.
|
|
34
|
+
"@esotericsoftware/spine-canvas": "4.2.79",
|
|
35
|
+
"@esotericsoftware/spine-core": "4.2.79",
|
|
36
|
+
"@esotericsoftware/spine-webgl": "4.2.79"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"phaser": "^3.60.0"
|