@esotericsoftware/spine-webgl 4.1.20 → 4.1.21

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 @@ var spine=(()=>{var Vi=Object.defineProperty,Ss=e=>Vi(e,"__esModule",{value:!0})
81
81
  void main () {
82
82
  gl_FragColor = v_color;
83
83
  }
84
- `;return new fe(e,t,i)}},we=fe;we.MVP_MATRIX="u_projTrans",we.POSITION="a_position",we.COLOR="a_color",we.COLOR2="a_color2",we.TEXCOORDS="a_texCoords",we.SAMPLER="u_texture";var Ri=class{constructor(e,t,i,s){this.attributes=t,this.verticesBuffer=null,this.verticesLength=0,this.dirtyVertices=!1,this.indicesBuffer=null,this.indicesLength=0,this.dirtyIndices=!1,this.elementsPerVertex=0,this.context=e instanceof pe?e:new pe(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)}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++)e+=this.attributes[t].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],c=e.getAttributeLocation(n.name);t.enableVertexAttribArray(c),t.vertexAttribPointer(c,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}},Ft=class extends lt{constructor(){super(we.POSITION,je.Float,2)}},cr=class extends lt{constructor(){super(we.POSITION,je.Float,3)}},Fi=class extends lt{constructor(e=0){super(we.TEXCOORDS+(e==0?"":e),je.Float,2)}},Xt=class extends lt{constructor(){super(we.COLOR,je.Float,4)}},fs=class extends lt{constructor(){super(we.COLOR2,je.Float,4)}},je;(function(e){e[e.Float=0]="Float"})(je||(je={}));var Xi=class{constructor(e,t=!0,i=10920){if(this.drawCalls=0,this.isDrawing=!1,this.shader=null,this.lastTexture=null,this.verticesLength=0,this.indicesLength=0,this.cullWasEnabled=!1,i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof pe?e:new pe(e);let s=t?[new Ft,new Xt,new Fi,new fs]:[new Ft,new Xt,new Fi];this.mesh=new Ri(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),this.cullWasEnabled=t.isEnabled(t.CULL_FACE),this.cullWasEnabled&&t.disable(t.CULL_FACE)}setBlendMode(e,t,i){this.srcColorBlend==e&&this.srcAlphaBlend==t&&this.dstBlend==i||(this.srcColorBlend=e,this.srcAlphaBlend=t,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(e,i,t,i)))}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 c=this.indicesLength,a=0;a<i.length;c++,a++)n[c]=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++}}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),this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}dispose(){this.mesh.dispose()}},Li=class{constructor(e,t=10920){if(this.isDrawing=!1,this.shapeType=ve.Filled,this.color=new O(1,1,1,1),this.shader=null,this.vertexIndex=0,this.tmp=new Je,t>10920)throw new Error("Can't have more than 10920 triangles per batch: "+t);this.context=e instanceof pe?e:new pe(e),this.mesh=new Ri(e,[new Ft,new Xt],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(ve.Point,1),i||(i=this.color),this.vertex(e,t,i)}line(e,t,i,s,n){this.check(ve.Line,2);let c=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,c,a,r,o,l){this.check(e?ve.Filled:ve.Line,3);let h=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(c,a,l)):(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(s,n,r),this.vertex(c,a,o),this.vertex(c,a,r),this.vertex(t,i,o))}quad(e,t,i,s,n,c,a,r,o,l,h,f,d){this.check(e?ve.Filled:ve.Line,3);let u=this.mesh.getVertices(),m=this.vertexIndex;l||(l=this.color),h||(h=this.color),f||(f=this.color),d||(d=this.color),e?(this.vertex(t,i,l),this.vertex(s,n,h),this.vertex(c,a,f),this.vertex(c,a,f),this.vertex(r,o,d),this.vertex(t,i,l)):(this.vertex(t,i,l),this.vertex(s,n,h),this.vertex(s,n,h),this.vertex(c,a,f),this.vertex(c,a,f),this.vertex(r,o,d),this.vertex(r,o,d),this.vertex(t,i,l))}rect(e,t,i,s,n,c){this.quad(e,t,i,t+s,i,t+s,i+n,t,i+n,c,c,c,c)}rectLine(e,t,i,s,n,c,a){this.check(e?ve.Filled:ve.Line,8),a||(a=this.color);let r=this.tmp.set(n-i,t-s);r.normalize(),c*=.5;let o=r.x*c,l=r.y*c;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(ve.Line,i*2),s&&(s=this.color);let n=this.mesh.getVertices(),c=this.vertexIndex;t<<=1,i<<=1;let a=e[t],r=e[t+1],o=t+i;for(let l=t,h=t+i-2;l<h;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,c=0){if(c==0&&(c=Math.max(1,6*F.cbrt(s)|0)),c<=0)throw new Error("segments must be > 0.");n||(n=this.color);let a=2*F.PI/c,r=Math.cos(a),o=Math.sin(a),l=s,h=0;if(e){this.check(ve.Filled,c*3+3),c--;for(let d=0;d<c;d++){this.vertex(t,i,n),this.vertex(t+l,i+h,n);let u=l;l=r*l-o*h,h=o*u+r*h,this.vertex(t+l,i+h,n)}this.vertex(t,i,n),this.vertex(t+l,i+h,n)}else{this.check(ve.Line,c*2+2);for(let d=0;d<c;d++){this.vertex(t+l,i+h,n);let u=l;l=r*l-o*h,h=o*u+r*h,this.vertex(t+l,i+h,n)}this.vertex(t+l,i+h,n)}let f=l;l=s,h=0,this.vertex(t+l,i+h,n)}curve(e,t,i,s,n,c,a,r,o,l){this.check(ve.Line,o*2+2),l&&(l=this.color);let h=1/o,f=h*h,d=h*h*h,u=3*h,m=3*f,x=6*f,p=6*d,v=e-i*2+n,g=t-s*2+c,w=(i-n)*3-e+a,b=(s-c)*3-t+r,y=e,S=t,A=(i-e)*u+v*m+w*d,I=(s-t)*u+g*m+b*d,Y=v*x+w*p,k=g*x+b*p,X=w*p,R=b*p;for(;o-- >0;)this.vertex(y,S,l),y+=A,S+=I,A+=Y,I+=k,Y+=X,k+=R,this.vertex(y,S,l);this.vertex(y,S,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()}},ve;(function(e){e[e.Point=0]="Point",e[e.Line=1]="Line",e[e.Filled=4]="Filled"})(ve||(ve={}));var Lt=class{constructor(e){this.boneLineColor=new O(1,0,0,1),this.boneOriginColor=new O(0,1,0,1),this.attachmentLineColor=new O(0,0,1,.5),this.triangleLineColor=new O(1,.64,0,.5),this.pathColor=new O().setFromString("FF7F00"),this.clipColor=new O(.8,0,0,2),this.aabbColor=new O(0,1,0,.5),this.drawBones=!0,this.drawRegionAttachments=!0,this.drawBoundingBoxes=!0,this.drawMeshHull=!0,this.drawMeshTriangles=!0,this.drawPaths=!0,this.drawSkeletonXY=!1,this.drawClipping=!0,this.premultipliedAlpha=!1,this.scale=1,this.boneWidth=2,this.bounds=new ls,this.temp=new Array,this.vertices=P.newFloatArray(2*1024),this.context=e instanceof pe?e:new pe(e)}draw(e,t,i){let s=t.x,n=t.y,c=this.context.gl,a=this.premultipliedAlpha?c.ONE:c.SRC_ALPHA;e.setBlendMode(a,c.ONE,c.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 h=r[o];if(i&&i.indexOf(h.data.name)>-1||!h.parent)continue;let f=h.data.length*h.a+h.worldX,d=h.data.length*h.c+h.worldY;e.rectLine(!0,h.worldX,h.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,h=o.length;l<h;l++){let f=o[l],d=f.getAttachment();if(d instanceof ne){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,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Ge))continue;let u=d,m=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,m,0,2);let x=u.triangles,p=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let v=0,g=x.length;v<g;v+=3){let w=x[v]*2,b=x[v+1]*2,y=x[v+2]*2;e.triangle(!1,m[w],m[w+1],m[b],m[b+1],m[y],m[y+1])}}if(this.drawMeshHull&&p>0){e.setColor(this.attachmentLineColor),p=(p>>1)*2;let v=m[p-2],g=m[p-1];for(let w=0,b=p;w<b;w+=2){let y=m[w],S=m[w+1];e.line(y,S,v,g),v=y,g=S}}}}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,h=o.boundingBoxes;for(let f=0,d=l.length;f<d;f++){let u=l[f];e.setColor(h[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=t.slots;for(let l=0,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof tt))continue;let u=d,m=u.worldVerticesLength,x=this.temp=P.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,x,0,2);let p=this.pathColor,v=x[2],g=x[3],w=0,b=0;if(u.closed){e.setColor(p);let y=x[0],S=x[1],A=x[m-2],I=x[m-1];w=x[m-4],b=x[m-3],e.curve(v,g,y,S,A,I,w,b,32),e.setColor(Lt.LIGHT_GRAY),e.line(v,g,y,S),e.line(w,b,A,I)}m-=4;for(let y=4;y<m;y+=6){let S=x[y],A=x[y+1],I=x[y+2],Y=x[y+3];w=x[y+4],b=x[y+5],e.setColor(p),e.curve(v,g,S,A,I,Y,w,b,32),e.setColor(Lt.LIGHT_GRAY),e.line(v,g,S,A),e.line(w,b,I,Y),v=w,g=b}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,l=r.length;o<l;o++){let h=r[o];i&&i.indexOf(h.data.name)>-1||e.circle(!0,h.worldX,h.worldY,3*this.scale,Lt.GREEN,8)}}if(this.drawClipping){let o=t.slots;e.setColor(this.clipColor);for(let l=0,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof xt))continue;let u=d,m=u.worldVerticesLength,x=this.temp=P.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,x,0,2);for(let p=0,v=x.length;p<v;p+=2){let g=x[p],w=x[p+1],b=x[(p+2)%x.length],y=x[(p+3)%x.length];e.line(g,w,b,y)}}}}dispose(){}},Bt=Lt;Bt.LIGHT_GRAY=new O(192/255,192/255,192/255,1),Bt.GREEN=new O(0,1,0,1);var dr=class{constructor(e,t,i){this.vertices=e,this.numVertices=t,this.numFloats=i}},us=class{constructor(e,t=!0){this.premultipliedAlpha=!1,this.tempColor=new O,this.tempColor2=new O,this.vertexSize=2+2+4,this.twoColorTint=!1,this.renderable=new dr([],0,0),this.clipper=new Yt,this.temp=new Je,this.temp2=new Je,this.temp3=new O,this.temp4=new O,this.twoColorTint=t,t&&(this.vertexSize+=4),this.vertices=P.newFloatArray(this.vertexSize*1024)}draw(e,t,i=-1,s=-1){let n=this.clipper,c=this.premultipliedAlpha,a=this.twoColorTint,r=null,o=this.temp,l=this.temp2,h=this.temp3,f=this.temp4,d=this.renderable,u,m,x=t.drawOrder,p,v=t.color,g=a?12:8,w=!1;i==-1&&(w=!0);for(let b=0,y=x.length;b<y;b++){let S=n.isClipping()?2:g,A=x[b];if(!A.bone.active){n.clipEndWithSlot(A);continue}if(i>=0&&i==A.data.index&&(w=!0),!w){n.clipEndWithSlot(A);continue}s>=0&&s==A.data.index&&(w=!1);let I=A.getAttachment(),Y;if(I instanceof ne){let k=I;d.vertices=this.vertices,d.numVertices=4,d.numFloats=S<<2,k.computeWorldVertices(A,d.vertices,0,S),m=us.QUAD_TRIANGLES,u=k.uvs,Y=k.region.renderObject.page.texture,p=k.color}else if(I instanceof Ge){let k=I;d.vertices=this.vertices,d.numVertices=k.worldVerticesLength>>1,d.numFloats=d.numVertices*S,d.numFloats>d.vertices.length&&(d.vertices=this.vertices=P.newFloatArray(d.numFloats)),k.computeWorldVertices(A,0,k.worldVerticesLength,d.vertices,0,S),m=k.triangles,Y=k.region.renderObject.page.texture,u=k.uvs,p=k.color}else if(I instanceof xt){let k=I;n.clipStart(A,k);continue}else{n.clipEndWithSlot(A);continue}if(Y){let k=A.color,X=this.tempColor;X.r=v.r*k.r*p.r,X.g=v.g*k.g*p.g,X.b=v.b*k.b*p.b,X.a=v.a*k.a*p.a,c&&(X.r*=X.a,X.g*=X.a,X.b*=X.a);let R=this.tempColor2;A.darkColor?(c?(R.r=A.darkColor.r*X.a,R.g=A.darkColor.g*X.a,R.b=A.darkColor.b*X.a):R.setFromColor(A.darkColor),R.a=c?1:0):R.set(0,0,0,1);let L=A.data.blendMode;if(L!=r&&(r=L,e.setBlendMode(Rt.getSourceColorGLBlendMode(r,c),Rt.getSourceAlphaGLBlendMode(r),Rt.getDestGLBlendMode(r))),n.isClipping()){n.clipTriangles(d.vertices,d.numFloats,m,m.length,u,X,R,a);let T=new Float32Array(n.clippedVertices),M=n.clippedTriangles;e.draw(Y,T,M)}else{let T=d.vertices;if(a)for(let B=2,ee=0,te=d.numFloats;B<te;B+=g,ee+=2)T[B]=X.r,T[B+1]=X.g,T[B+2]=X.b,T[B+3]=X.a,T[B+4]=u[ee],T[B+5]=u[ee+1],T[B+6]=R.r,T[B+7]=R.g,T[B+8]=R.b,T[B+9]=R.a;else for(let B=2,ee=0,te=d.numFloats;B<te;B+=g,ee+=2)T[B]=X.r,T[B+1]=X.g,T[B+2]=X.b,T[B+3]=X.a,T[B+4]=u[ee],T[B+5]=u[ee+1];let M=d.vertices.subarray(0,d.numFloats);e.draw(Y,M,m)}}n.clipEndWithSlot(A)}n.clipEnd()}},Bi=us;Bi.QUAD_TRIANGLES=[0,1,2,2,3,0];var C=[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],Pt=[0,1,2,2,3,0],Ot=new O(1,1,1,1),ms=class{constructor(e,t,i=!0){this.twoColorTint=!1,this.activeRenderer=null,this.canvas=e,this.context=t instanceof pe?t:new pe(t),this.twoColorTint=i,this.camera=new cs(e.width,e.height),this.batcherShader=i?we.newTwoColoredTextured(this.context):we.newColoredTextured(this.context),this.batcher=new Xi(this.context,i),this.shapesShader=we.newColored(this.context),this.shapes=new Li(this.context),this.skeletonRenderer=new Bi(this.context,i),this.skeletonDebugRenderer=new Bt(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){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=t,this.skeletonRenderer.draw(this.batcher,e,i,s)}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,c){this.enableRenderer(this.batcher),c||(c=Ot);var a=0;C[a++]=t,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=0,C[a++]=1,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=1,C[a++]=1,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=1,C[a++]=0,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=0,C[a++]=0,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a]=0),this.batcher.draw(e,C,Pt)}drawTextureUV(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.batcher),l||(l=Ot);var h=0;C[h++]=t,C[h++]=i,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=c,C[h++]=a,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t+s,C[h++]=i,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=r,C[h++]=a,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t+s,C[h++]=i+n,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=r,C[h++]=o,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t,C[h++]=i+n,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=c,C[h++]=o,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h]=0),this.batcher.draw(e,C,Pt)}drawTextureRotated(e,t,i,s,n,c,a,r,o){this.enableRenderer(this.batcher),o||(o=Ot);let l=t+c,h=i+a,f=-c,d=-a,u=s-c,m=n-a,x=f,p=d,v=f,g=m,w=u,b=m,y=u,S=d,A=0,I=0,Y=0,k=0,X=0,R=0,L=0,T=0;if(r!=0){let B=F.cosDeg(r),ee=F.sinDeg(r);A=B*x-ee*p,I=ee*x+B*p,L=B*v-ee*g,T=ee*v+B*g,X=B*w-ee*b,R=ee*w+B*b,Y=X+(A-L),k=R+(I-T)}else A=x,I=p,L=v,T=g,X=w,R=b,Y=y,k=S;A+=l,I+=h,Y+=l,k+=h,X+=l,R+=h,L+=l,T+=h;var M=0;C[M++]=A,C[M++]=I,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=0,C[M++]=1,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=Y,C[M++]=k,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=1,C[M++]=1,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=X,C[M++]=R,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=1,C[M++]=0,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=L,C[M++]=T,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=0,C[M++]=0,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M]=0),this.batcher.draw(e,C,Pt)}drawRegion(e,t,i,s,n,c){this.enableRenderer(this.batcher),c||(c=Ot);var a=0;C[a++]=t,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u,C[a++]=e.v2,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u2,C[a++]=e.v2,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u2,C[a++]=e.v,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u,C[a++]=e.v,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a]=0),this.batcher.draw(e.page.texture,C,Pt)}line(e,t,i,s,n,c){this.enableRenderer(this.shapes),this.shapes.line(e,t,i,s,n)}triangle(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.triangle(e,t,i,s,n,c,a,r,o,l)}quad(e,t,i,s,n,c,a,r,o,l,h,f,d){this.enableRenderer(this.shapes),this.shapes.quad(e,t,i,s,n,c,a,r,o,l,h,f,d)}rect(e,t,i,s,n,c){this.enableRenderer(this.shapes),this.shapes.rect(e,t,i,s,n,c)}rectLine(e,t,i,s,n,c,a){this.enableRenderer(this.shapes),this.shapes.rectLine(e,t,i,s,n,c,a)}polygon(e,t,i,s){this.enableRenderer(this.shapes),this.shapes.polygon(e,t,i,s)}circle(e,t,i,s,n,c=0){this.enableRenderer(this.shapes),this.shapes.circle(e,t,i,s,n,c)}curve(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.curve(e,t,i,s,n,c,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===ot.Expand)this.camera.setViewport(s,n);else if(e===ot.Fit){let c=t.width,a=t.height,r=this.camera.viewportWidth,o=this.camera.viewportHeight,l=o/r,h=a/c,f=l<h?r/c:o/a;this.camera.setViewport(c*f,a*f)}this.camera.update()}enableRenderer(e){this.activeRenderer!==e&&(this.end(),e instanceof Xi?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(we.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):e instanceof Li?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(we.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},ot;(function(e){e[e.Stretch=0]="Stretch",e[e.Expand=1]="Expand",e[e.Fit=2]="Fit"})(ot||(ot={}));var bt,ht,gs=0,fr=1,Pi=1,xs=165,ws=108,it=163,ur=class{constructor(e){if(this.logo=null,this.spinner=null,this.angle=0,this.fadeOut=0,this.fadeIn=0,this.timeKeeper=new Ut,this.backgroundColor=new O(.135,.135,.135,1),this.tempColor=new O,this.renderer=e,this.timeKeeper.maxDelta=9,!ht){let t=navigator.userAgent.indexOf("Safari")>-1,i=()=>gs++;ht=new Image,ht.src=gr,t||(ht.crossOrigin="anonymous"),ht.onload=i,bt=new Image,bt.src=mr,t||(bt.crossOrigin="anonymous"),bt.onload=i}}dispose(){var e,t;(e=this.logo)==null||e.dispose(),(t=this.spinner)==null||t.dispose()}draw(e=!1){if(gs<2||e&&this.fadeOut>Pi)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,c=s.context.gl;if(s.resize(ot.Expand),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(c.ONE,c.ONE,c.ONE_MINUS_SRC_ALPHA),e){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Pi)return;i.setFromColor(this.backgroundColor),t=1-this.fadeOut/Pi,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&&(c.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),c.clear(c.COLOR_BUFFER_BIT)),t=1;t*=Math.min(this.fadeIn/fr,1),i.set(t,t,t,t),this.logo||(this.logo=new wt(s.context,ht),this.spinner=new wt(s.context,bt)),s.camera.zoom=Math.max(1,it/n.height),s.begin(),s.drawTexture(this.logo,(n.width-xs)/2,(n.height-ws)/2,xs,ws,i),this.spinner&&s.drawTextureRotated(this.spinner,(n.width-it)/2,(n.height-it)/2,it,it,it/2,it/2,this.angle,i),s.end()}},mr="data:image/png;base64,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",gr="data:image/png;base64,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",xr=class{constructor(e,t){this.time=new Ut,t.pathPrefix||(t.pathPrefix=""),t.app||(t.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{}}),t.webglConfig&&(t.webglConfig={alpha:!0}),this.htmlCanvas=e,this.context=new pe(e,t.webglConfig),this.renderer=new ms(e,this.context),this.gl=this.context.gl,this.assetManager=new hs(this.context,t.pathPrefix),this.input=new ki(e),t.app.loadAssets&&t.app.loadAssets(this);let i=()=>{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.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)}clear(e,t,i,s){this.gl.clearColor(e,t,i,s),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}};return Ni})();
84
+ `;return new fe(e,t,i)}},we=fe;we.MVP_MATRIX="u_projTrans",we.POSITION="a_position",we.COLOR="a_color",we.COLOR2="a_color2",we.TEXCOORDS="a_texCoords",we.SAMPLER="u_texture";var Ri=class{constructor(e,t,i,s){this.attributes=t,this.verticesBuffer=null,this.verticesLength=0,this.dirtyVertices=!1,this.indicesBuffer=null,this.indicesLength=0,this.dirtyIndices=!1,this.elementsPerVertex=0,this.context=e instanceof pe?e:new pe(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)}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++)e+=this.attributes[t].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],c=e.getAttributeLocation(n.name);t.enableVertexAttribArray(c),t.vertexAttribPointer(c,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}},Ft=class extends lt{constructor(){super(we.POSITION,je.Float,2)}},cr=class extends lt{constructor(){super(we.POSITION,je.Float,3)}},Fi=class extends lt{constructor(e=0){super(we.TEXCOORDS+(e==0?"":e),je.Float,2)}},Xt=class extends lt{constructor(){super(we.COLOR,je.Float,4)}},fs=class extends lt{constructor(){super(we.COLOR2,je.Float,4)}},je;(function(e){e[e.Float=0]="Float"})(je||(je={}));var Xi=class{constructor(e,t=!0,i=10920){if(this.drawCalls=0,this.isDrawing=!1,this.shader=null,this.lastTexture=null,this.verticesLength=0,this.indicesLength=0,this.cullWasEnabled=!1,i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof pe?e:new pe(e);let s=t?[new Ft,new Xt,new Fi,new fs]:[new Ft,new Xt,new Fi];this.mesh=new Ri(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),this.cullWasEnabled=t.isEnabled(t.CULL_FACE),this.cullWasEnabled&&t.disable(t.CULL_FACE)}setBlendMode(e,t,i){this.srcColorBlend==e&&this.srcAlphaBlend==t&&this.dstBlend==i||(this.srcColorBlend=e,this.srcAlphaBlend=t,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(e,i,t,i)))}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 c=this.indicesLength,a=0;a<i.length;c++,a++)n[c]=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++}}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),this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}dispose(){this.mesh.dispose()}},Li=class{constructor(e,t=10920){if(this.isDrawing=!1,this.shapeType=ve.Filled,this.color=new O(1,1,1,1),this.shader=null,this.vertexIndex=0,this.tmp=new Je,t>10920)throw new Error("Can't have more than 10920 triangles per batch: "+t);this.context=e instanceof pe?e:new pe(e),this.mesh=new Ri(e,[new Ft,new Xt],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(ve.Point,1),i||(i=this.color),this.vertex(e,t,i)}line(e,t,i,s,n){this.check(ve.Line,2);let c=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,c,a,r,o,l){this.check(e?ve.Filled:ve.Line,3);let h=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(c,a,l)):(this.vertex(t,i,r),this.vertex(s,n,o),this.vertex(s,n,r),this.vertex(c,a,o),this.vertex(c,a,r),this.vertex(t,i,o))}quad(e,t,i,s,n,c,a,r,o,l,h,f,d){this.check(e?ve.Filled:ve.Line,3);let u=this.mesh.getVertices(),m=this.vertexIndex;l||(l=this.color),h||(h=this.color),f||(f=this.color),d||(d=this.color),e?(this.vertex(t,i,l),this.vertex(s,n,h),this.vertex(c,a,f),this.vertex(c,a,f),this.vertex(r,o,d),this.vertex(t,i,l)):(this.vertex(t,i,l),this.vertex(s,n,h),this.vertex(s,n,h),this.vertex(c,a,f),this.vertex(c,a,f),this.vertex(r,o,d),this.vertex(r,o,d),this.vertex(t,i,l))}rect(e,t,i,s,n,c){this.quad(e,t,i,t+s,i,t+s,i+n,t,i+n,c,c,c,c)}rectLine(e,t,i,s,n,c,a){this.check(e?ve.Filled:ve.Line,8),a||(a=this.color);let r=this.tmp.set(n-i,t-s);r.normalize(),c*=.5;let o=r.x*c,l=r.y*c;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(ve.Line,i*2),s||(s=this.color);let n=this.mesh.getVertices(),c=this.vertexIndex;t<<=1,i<<=1;let a=e[t],r=e[t+1],o=t+i;for(let l=t,h=t+i-2;l<h;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,c=0){if(c==0&&(c=Math.max(1,6*F.cbrt(s)|0)),c<=0)throw new Error("segments must be > 0.");n||(n=this.color);let a=2*F.PI/c,r=Math.cos(a),o=Math.sin(a),l=s,h=0;if(e){this.check(ve.Filled,c*3+3),c--;for(let d=0;d<c;d++){this.vertex(t,i,n),this.vertex(t+l,i+h,n);let u=l;l=r*l-o*h,h=o*u+r*h,this.vertex(t+l,i+h,n)}this.vertex(t,i,n),this.vertex(t+l,i+h,n)}else{this.check(ve.Line,c*2+2);for(let d=0;d<c;d++){this.vertex(t+l,i+h,n);let u=l;l=r*l-o*h,h=o*u+r*h,this.vertex(t+l,i+h,n)}this.vertex(t+l,i+h,n)}let f=l;l=s,h=0,this.vertex(t+l,i+h,n)}curve(e,t,i,s,n,c,a,r,o,l){this.check(ve.Line,o*2+2),l||(l=this.color);let h=1/o,f=h*h,d=h*h*h,u=3*h,m=3*f,x=6*f,p=6*d,v=e-i*2+n,g=t-s*2+c,w=(i-n)*3-e+a,b=(s-c)*3-t+r,y=e,S=t,A=(i-e)*u+v*m+w*d,I=(s-t)*u+g*m+b*d,Y=v*x+w*p,k=g*x+b*p,X=w*p,R=b*p;for(;o-- >0;)this.vertex(y,S,l),y+=A,S+=I,A+=Y,I+=k,Y+=X,k+=R,this.vertex(y,S,l);this.vertex(y,S,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()}},ve;(function(e){e[e.Point=0]="Point",e[e.Line=1]="Line",e[e.Filled=4]="Filled"})(ve||(ve={}));var Lt=class{constructor(e){this.boneLineColor=new O(1,0,0,1),this.boneOriginColor=new O(0,1,0,1),this.attachmentLineColor=new O(0,0,1,.5),this.triangleLineColor=new O(1,.64,0,.5),this.pathColor=new O().setFromString("FF7F00"),this.clipColor=new O(.8,0,0,2),this.aabbColor=new O(0,1,0,.5),this.drawBones=!0,this.drawRegionAttachments=!0,this.drawBoundingBoxes=!0,this.drawMeshHull=!0,this.drawMeshTriangles=!0,this.drawPaths=!0,this.drawSkeletonXY=!1,this.drawClipping=!0,this.premultipliedAlpha=!1,this.scale=1,this.boneWidth=2,this.bounds=new ls,this.temp=new Array,this.vertices=P.newFloatArray(2*1024),this.context=e instanceof pe?e:new pe(e)}draw(e,t,i){let s=t.x,n=t.y,c=this.context.gl,a=this.premultipliedAlpha?c.ONE:c.SRC_ALPHA;e.setBlendMode(a,c.ONE,c.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 h=r[o];if(i&&i.indexOf(h.data.name)>-1||!h.parent)continue;let f=h.data.length*h.a+h.worldX,d=h.data.length*h.c+h.worldY;e.rectLine(!0,h.worldX,h.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,h=o.length;l<h;l++){let f=o[l],d=f.getAttachment();if(d instanceof ne){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,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof Ge))continue;let u=d,m=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,m,0,2);let x=u.triangles,p=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let v=0,g=x.length;v<g;v+=3){let w=x[v]*2,b=x[v+1]*2,y=x[v+2]*2;e.triangle(!1,m[w],m[w+1],m[b],m[b+1],m[y],m[y+1])}}if(this.drawMeshHull&&p>0){e.setColor(this.attachmentLineColor),p=(p>>1)*2;let v=m[p-2],g=m[p-1];for(let w=0,b=p;w<b;w+=2){let y=m[w],S=m[w+1];e.line(y,S,v,g),v=y,g=S}}}}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,h=o.boundingBoxes;for(let f=0,d=l.length;f<d;f++){let u=l[f];e.setColor(h[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=t.slots;for(let l=0,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof tt))continue;let u=d,m=u.worldVerticesLength,x=this.temp=P.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,x,0,2);let p=this.pathColor,v=x[2],g=x[3],w=0,b=0;if(u.closed){e.setColor(p);let y=x[0],S=x[1],A=x[m-2],I=x[m-1];w=x[m-4],b=x[m-3],e.curve(v,g,y,S,A,I,w,b,32),e.setColor(Lt.LIGHT_GRAY),e.line(v,g,y,S),e.line(w,b,A,I)}m-=4;for(let y=4;y<m;y+=6){let S=x[y],A=x[y+1],I=x[y+2],Y=x[y+3];w=x[y+4],b=x[y+5],e.setColor(p),e.curve(v,g,S,A,I,Y,w,b,32),e.setColor(Lt.LIGHT_GRAY),e.line(v,g,S,A),e.line(w,b,I,Y),v=w,g=b}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,l=r.length;o<l;o++){let h=r[o];i&&i.indexOf(h.data.name)>-1||e.circle(!0,h.worldX,h.worldY,3*this.scale,Lt.GREEN,8)}}if(this.drawClipping){let o=t.slots;e.setColor(this.clipColor);for(let l=0,h=o.length;l<h;l++){let f=o[l];if(!f.bone.active)continue;let d=f.getAttachment();if(!(d instanceof xt))continue;let u=d,m=u.worldVerticesLength,x=this.temp=P.setArraySize(this.temp,m,0);u.computeWorldVertices(f,0,m,x,0,2);for(let p=0,v=x.length;p<v;p+=2){let g=x[p],w=x[p+1],b=x[(p+2)%x.length],y=x[(p+3)%x.length];e.line(g,w,b,y)}}}}dispose(){}},Bt=Lt;Bt.LIGHT_GRAY=new O(192/255,192/255,192/255,1),Bt.GREEN=new O(0,1,0,1);var dr=class{constructor(e,t,i){this.vertices=e,this.numVertices=t,this.numFloats=i}},us=class{constructor(e,t=!0){this.premultipliedAlpha=!1,this.tempColor=new O,this.tempColor2=new O,this.vertexSize=2+2+4,this.twoColorTint=!1,this.renderable=new dr([],0,0),this.clipper=new Yt,this.temp=new Je,this.temp2=new Je,this.temp3=new O,this.temp4=new O,this.twoColorTint=t,t&&(this.vertexSize+=4),this.vertices=P.newFloatArray(this.vertexSize*1024)}draw(e,t,i=-1,s=-1){let n=this.clipper,c=this.premultipliedAlpha,a=this.twoColorTint,r=null,o=this.temp,l=this.temp2,h=this.temp3,f=this.temp4,d=this.renderable,u,m,x=t.drawOrder,p,v=t.color,g=a?12:8,w=!1;i==-1&&(w=!0);for(let b=0,y=x.length;b<y;b++){let S=n.isClipping()?2:g,A=x[b];if(!A.bone.active){n.clipEndWithSlot(A);continue}if(i>=0&&i==A.data.index&&(w=!0),!w){n.clipEndWithSlot(A);continue}s>=0&&s==A.data.index&&(w=!1);let I=A.getAttachment(),Y;if(I instanceof ne){let k=I;d.vertices=this.vertices,d.numVertices=4,d.numFloats=S<<2,k.computeWorldVertices(A,d.vertices,0,S),m=us.QUAD_TRIANGLES,u=k.uvs,Y=k.region.renderObject.page.texture,p=k.color}else if(I instanceof Ge){let k=I;d.vertices=this.vertices,d.numVertices=k.worldVerticesLength>>1,d.numFloats=d.numVertices*S,d.numFloats>d.vertices.length&&(d.vertices=this.vertices=P.newFloatArray(d.numFloats)),k.computeWorldVertices(A,0,k.worldVerticesLength,d.vertices,0,S),m=k.triangles,Y=k.region.renderObject.page.texture,u=k.uvs,p=k.color}else if(I instanceof xt){let k=I;n.clipStart(A,k);continue}else{n.clipEndWithSlot(A);continue}if(Y){let k=A.color,X=this.tempColor;X.r=v.r*k.r*p.r,X.g=v.g*k.g*p.g,X.b=v.b*k.b*p.b,X.a=v.a*k.a*p.a,c&&(X.r*=X.a,X.g*=X.a,X.b*=X.a);let R=this.tempColor2;A.darkColor?(c?(R.r=A.darkColor.r*X.a,R.g=A.darkColor.g*X.a,R.b=A.darkColor.b*X.a):R.setFromColor(A.darkColor),R.a=c?1:0):R.set(0,0,0,1);let L=A.data.blendMode;if(L!=r&&(r=L,e.setBlendMode(Rt.getSourceColorGLBlendMode(r,c),Rt.getSourceAlphaGLBlendMode(r),Rt.getDestGLBlendMode(r))),n.isClipping()){n.clipTriangles(d.vertices,d.numFloats,m,m.length,u,X,R,a);let T=new Float32Array(n.clippedVertices),M=n.clippedTriangles;e.draw(Y,T,M)}else{let T=d.vertices;if(a)for(let B=2,ee=0,te=d.numFloats;B<te;B+=g,ee+=2)T[B]=X.r,T[B+1]=X.g,T[B+2]=X.b,T[B+3]=X.a,T[B+4]=u[ee],T[B+5]=u[ee+1],T[B+6]=R.r,T[B+7]=R.g,T[B+8]=R.b,T[B+9]=R.a;else for(let B=2,ee=0,te=d.numFloats;B<te;B+=g,ee+=2)T[B]=X.r,T[B+1]=X.g,T[B+2]=X.b,T[B+3]=X.a,T[B+4]=u[ee],T[B+5]=u[ee+1];let M=d.vertices.subarray(0,d.numFloats);e.draw(Y,M,m)}}n.clipEndWithSlot(A)}n.clipEnd()}},Bi=us;Bi.QUAD_TRIANGLES=[0,1,2,2,3,0];var C=[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],Pt=[0,1,2,2,3,0],Ot=new O(1,1,1,1),ms=class{constructor(e,t,i=!0){this.twoColorTint=!1,this.activeRenderer=null,this.canvas=e,this.context=t instanceof pe?t:new pe(t),this.twoColorTint=i,this.camera=new cs(e.width,e.height),this.batcherShader=i?we.newTwoColoredTextured(this.context):we.newColoredTextured(this.context),this.batcher=new Xi(this.context,i),this.shapesShader=we.newColored(this.context),this.shapes=new Li(this.context),this.skeletonRenderer=new Bi(this.context,i),this.skeletonDebugRenderer=new Bt(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){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=t,this.skeletonRenderer.draw(this.batcher,e,i,s)}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,c){this.enableRenderer(this.batcher),c||(c=Ot);var a=0;C[a++]=t,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=0,C[a++]=1,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=1,C[a++]=1,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=1,C[a++]=0,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=0,C[a++]=0,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a]=0),this.batcher.draw(e,C,Pt)}drawTextureUV(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.batcher),l||(l=Ot);var h=0;C[h++]=t,C[h++]=i,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=c,C[h++]=a,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t+s,C[h++]=i,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=r,C[h++]=a,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t+s,C[h++]=i+n,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=r,C[h++]=o,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h++]=0),C[h++]=t,C[h++]=i+n,C[h++]=l.r,C[h++]=l.g,C[h++]=l.b,C[h++]=l.a,C[h++]=c,C[h++]=o,this.twoColorTint&&(C[h++]=0,C[h++]=0,C[h++]=0,C[h]=0),this.batcher.draw(e,C,Pt)}drawTextureRotated(e,t,i,s,n,c,a,r,o){this.enableRenderer(this.batcher),o||(o=Ot);let l=t+c,h=i+a,f=-c,d=-a,u=s-c,m=n-a,x=f,p=d,v=f,g=m,w=u,b=m,y=u,S=d,A=0,I=0,Y=0,k=0,X=0,R=0,L=0,T=0;if(r!=0){let B=F.cosDeg(r),ee=F.sinDeg(r);A=B*x-ee*p,I=ee*x+B*p,L=B*v-ee*g,T=ee*v+B*g,X=B*w-ee*b,R=ee*w+B*b,Y=X+(A-L),k=R+(I-T)}else A=x,I=p,L=v,T=g,X=w,R=b,Y=y,k=S;A+=l,I+=h,Y+=l,k+=h,X+=l,R+=h,L+=l,T+=h;var M=0;C[M++]=A,C[M++]=I,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=0,C[M++]=1,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=Y,C[M++]=k,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=1,C[M++]=1,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=X,C[M++]=R,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=1,C[M++]=0,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M++]=0),C[M++]=L,C[M++]=T,C[M++]=o.r,C[M++]=o.g,C[M++]=o.b,C[M++]=o.a,C[M++]=0,C[M++]=0,this.twoColorTint&&(C[M++]=0,C[M++]=0,C[M++]=0,C[M]=0),this.batcher.draw(e,C,Pt)}drawRegion(e,t,i,s,n,c){this.enableRenderer(this.batcher),c||(c=Ot);var a=0;C[a++]=t,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u,C[a++]=e.v2,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u2,C[a++]=e.v2,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t+s,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u2,C[a++]=e.v,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a++]=0),C[a++]=t,C[a++]=i+n,C[a++]=c.r,C[a++]=c.g,C[a++]=c.b,C[a++]=c.a,C[a++]=e.u,C[a++]=e.v,this.twoColorTint&&(C[a++]=0,C[a++]=0,C[a++]=0,C[a]=0),this.batcher.draw(e.page.texture,C,Pt)}line(e,t,i,s,n,c){this.enableRenderer(this.shapes),this.shapes.line(e,t,i,s,n)}triangle(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.triangle(e,t,i,s,n,c,a,r,o,l)}quad(e,t,i,s,n,c,a,r,o,l,h,f,d){this.enableRenderer(this.shapes),this.shapes.quad(e,t,i,s,n,c,a,r,o,l,h,f,d)}rect(e,t,i,s,n,c){this.enableRenderer(this.shapes),this.shapes.rect(e,t,i,s,n,c)}rectLine(e,t,i,s,n,c,a){this.enableRenderer(this.shapes),this.shapes.rectLine(e,t,i,s,n,c,a)}polygon(e,t,i,s){this.enableRenderer(this.shapes),this.shapes.polygon(e,t,i,s)}circle(e,t,i,s,n,c=0){this.enableRenderer(this.shapes),this.shapes.circle(e,t,i,s,n,c)}curve(e,t,i,s,n,c,a,r,o,l){this.enableRenderer(this.shapes),this.shapes.curve(e,t,i,s,n,c,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===ot.Expand)this.camera.setViewport(s,n);else if(e===ot.Fit){let c=t.width,a=t.height,r=this.camera.viewportWidth,o=this.camera.viewportHeight,l=o/r,h=a/c,f=l<h?r/c:o/a;this.camera.setViewport(c*f,a*f)}this.camera.update()}enableRenderer(e){this.activeRenderer!==e&&(this.end(),e instanceof Xi?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(we.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):e instanceof Li?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(we.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},ot;(function(e){e[e.Stretch=0]="Stretch",e[e.Expand=1]="Expand",e[e.Fit=2]="Fit"})(ot||(ot={}));var bt,ht,gs=0,fr=1,Pi=1,xs=165,ws=108,it=163,ur=class{constructor(e){if(this.logo=null,this.spinner=null,this.angle=0,this.fadeOut=0,this.fadeIn=0,this.timeKeeper=new Ut,this.backgroundColor=new O(.135,.135,.135,1),this.tempColor=new O,this.renderer=e,this.timeKeeper.maxDelta=9,!ht){let t=navigator.userAgent.indexOf("Safari")>-1,i=()=>gs++;ht=new Image,ht.src=gr,t||(ht.crossOrigin="anonymous"),ht.onload=i,bt=new Image,bt.src=mr,t||(bt.crossOrigin="anonymous"),bt.onload=i}}dispose(){var e,t;(e=this.logo)==null||e.dispose(),(t=this.spinner)==null||t.dispose()}draw(e=!1){if(gs<2||e&&this.fadeOut>Pi)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,c=s.context.gl;if(s.resize(ot.Expand),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(c.ONE,c.ONE,c.ONE_MINUS_SRC_ALPHA),e){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Pi)return;i.setFromColor(this.backgroundColor),t=1-this.fadeOut/Pi,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&&(c.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),c.clear(c.COLOR_BUFFER_BIT)),t=1;t*=Math.min(this.fadeIn/fr,1),i.set(t,t,t,t),this.logo||(this.logo=new wt(s.context,ht),this.spinner=new wt(s.context,bt)),s.camera.zoom=Math.max(1,it/n.height),s.begin(),s.drawTexture(this.logo,(n.width-xs)/2,(n.height-ws)/2,xs,ws,i),this.spinner&&s.drawTextureRotated(this.spinner,(n.width-it)/2,(n.height-it)/2,it,it,it/2,it/2,this.angle,i),s.end()}},mr="data:image/png;base64,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",gr="data:image/png;base64,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",xr=class{constructor(e,t){this.time=new Ut,t.pathPrefix||(t.pathPrefix=""),t.app||(t.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{}}),t.webglConfig&&(t.webglConfig={alpha:!0}),this.htmlCanvas=e,this.context=new pe(e,t.webglConfig),this.renderer=new ms(e,this.context),this.gl=this.context.gl,this.assetManager=new hs(this.context,t.pathPrefix),this.input=new ki(e),t.app.loadAssets&&t.app.loadAssets(this);let i=()=>{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.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)}clear(e,t,i,s){this.gl.clearColor(e,t,i,s),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}};return Ni})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esotericsoftware/spine-webgl",
3
- "version": "4.1.20",
3
+ "version": "4.1.21",
4
4
  "description": "The official Spine Runtimes for the web.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,6 +30,6 @@
30
30
  },
31
31
  "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
32
32
  "dependencies": {
33
- "@esotericsoftware/spine-core": "^4.1.20"
33
+ "@esotericsoftware/spine-core": "^4.1.21"
34
34
  }
35
35
  }