@esotericsoftware/spine-webgl 4.1.10 → 4.1.13

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,Is=t=>Vi(t,"__esModule",{value:!0})
81
81
  void main () {
82
82
  gl_FragColor = v_color;
83
83
  }
84
- `;return new ut(t,e,i)}},pt=ut;pt.MVP_MATRIX="u_projTrans",pt.POSITION="a_position",pt.COLOR="a_color",pt.COLOR2="a_color2",pt.TEXCOORDS="a_texCoords",pt.SAMPLER="u_texture";var Ei=class{constructor(t,e,i,s){this.attributes=e,this.verticesLength=0,this.dirtyVertices=!1,this.indicesLength=0,this.dirtyIndices=!1,this.elementsPerVertex=0,this.context=t instanceof vt?t:new vt(t),this.elementsPerVertex=0;for(let n=0;n<e.length;n++)this.elementsPerVertex+=e[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(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++)t+=this.attributes[e].numElements;return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,i,s){let n=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?n.drawElements(e,s,n.UNSIGNED_SHORT,i*2):n.drawArrays(e,i,s),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let i=0;for(let s=0;s<this.attributes.length;s++){let n=this.attributes[s],c=t.getAttributeLocation(n.name);e.enableVertexAttribArray(c),e.vertexAttribPointer(c,n.numElements,e.FLOAT,!1,this.elementsPerVertex*4,i*4),i+=n.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let i=0;i<this.attributes.length;i++){let s=this.attributes[i],n=t.getAttributeLocation(s.name);e.disableVertexAttribArray(n)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},le=class{constructor(t,e,i){this.name=t,this.type=e,this.numElements=i}},Ee=class extends le{constructor(){super(pt.POSITION,Ht.Float,2)}},fr=class extends le{constructor(){super(pt.POSITION,Ht.Float,3)}},Fi=class extends le{constructor(t=0){super(pt.TEXCOORDS+(t==0?"":t),Ht.Float,2)}},Fe=class extends le{constructor(){super(pt.COLOR,Ht.Float,4)}},gs=class extends le{constructor(){super(pt.COLOR2,Ht.Float,4)}},Ht;(function(t){t[t.Float=0]="Float"})(Ht||(Ht={}));var Xi=class{constructor(t,e=!0,i=10920){if(this.isDrawing=!1,this.shader=null,this.lastTexture=null,this.verticesLength=0,this.indicesLength=0,i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=t instanceof vt?t:new vt(t);let s=e?[new Ee,new Fe,new Fi,new gs]:[new Ee,new Fe,new Fi];this.mesh=new Ei(t,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(t){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=t,this.lastTexture=null,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,i){this.srcColorBlend==t&&this.srcAlphaBlend==e&&this.dstBlend==i||(this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,i,e,i)))}draw(t,e,i){t!=this.lastTexture?(this.flush(),this.lastTexture=t):(this.verticesLength+e.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let s=this.mesh.numVertices();this.mesh.getVertices().set(e,this.verticesLength),this.verticesLength+=e.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(){this.verticesLength!=0&&(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 t=this.context.gl;t.disable(t.BLEND)}getDrawCalls(){return this.drawCalls}dispose(){this.mesh.dispose()}},Li=class{constructor(t,e=10920){if(this.isDrawing=!1,this.shapeType=yt.Filled,this.color=new V(1,1,1,1),this.vertexIndex=0,this.tmp=new Jt,e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof vt?t:new vt(t),this.mesh=new Ei(t,[new Ee,new Fe],e,0);let i=this.context.gl;this.srcColorBlend=i.SRC_ALPHA,this.srcAlphaBlend=i.ONE,this.dstBlend=i.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,i){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,i,e,i))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,i,s){this.color.set(t,e,i,s)}point(t,e,i=null){this.check(yt.Point,1),i===null&&(i=this.color),this.vertex(t,e,i)}line(t,e,i,s,n=null){this.check(yt.Line,2);let c=this.mesh.getVertices(),a=this.vertexIndex;n===null&&(n=this.color),this.vertex(t,e,n),this.vertex(i,s,n)}triangle(t,e,i,s,n,c,a,r=null,l=null,o=null){this.check(t?yt.Filled:yt.Line,3);let h=this.mesh.getVertices(),d=this.vertexIndex;r===null&&(r=this.color),l===null&&(l=this.color),o===null&&(o=this.color),t?(this.vertex(e,i,r),this.vertex(s,n,l),this.vertex(c,a,o)):(this.vertex(e,i,r),this.vertex(s,n,l),this.vertex(s,n,r),this.vertex(c,a,l),this.vertex(c,a,r),this.vertex(e,i,l))}quad(t,e,i,s,n,c,a,r,l,o=null,h=null,d=null,u=null){this.check(t?yt.Filled:yt.Line,3);let f=this.mesh.getVertices(),m=this.vertexIndex;o===null&&(o=this.color),h===null&&(h=this.color),d===null&&(d=this.color),u===null&&(u=this.color),t?(this.vertex(e,i,o),this.vertex(s,n,h),this.vertex(c,a,d),this.vertex(c,a,d),this.vertex(r,l,u),this.vertex(e,i,o)):(this.vertex(e,i,o),this.vertex(s,n,h),this.vertex(s,n,h),this.vertex(c,a,d),this.vertex(c,a,d),this.vertex(r,l,u),this.vertex(r,l,u),this.vertex(e,i,o))}rect(t,e,i,s,n,c=null){this.quad(t,e,i,e+s,i,e+s,i+n,e,i+n,c,c,c,c)}rectLine(t,e,i,s,n,c,a=null){this.check(t?yt.Filled:yt.Line,8),a===null&&(a=this.color);let r=this.tmp.set(n-i,e-s);r.normalize(),c*=.5;let l=r.x*c,o=r.y*c;t?(this.vertex(e+l,i+o,a),this.vertex(e-l,i-o,a),this.vertex(s+l,n+o,a),this.vertex(s-l,n-o,a),this.vertex(s+l,n+o,a),this.vertex(e-l,i-o,a)):(this.vertex(e+l,i+o,a),this.vertex(e-l,i-o,a),this.vertex(s+l,n+o,a),this.vertex(s-l,n-o,a),this.vertex(s+l,n+o,a),this.vertex(e+l,i+o,a),this.vertex(s-l,n-o,a),this.vertex(e-l,i-o,a))}x(t,e,i){this.line(t-i,e-i,t+i,e+i),this.line(t-i,e+i,t+i,e-i)}polygon(t,e,i,s=null){if(i<3)throw new Error("Polygon must contain at least 3 vertices");this.check(yt.Line,i*2),s===null&&(s=this.color);let n=this.mesh.getVertices(),c=this.vertexIndex;e<<=1,i<<=1;let a=t[e],r=t[e+1],l=e+i;for(let o=e,h=e+i-2;o<h;o+=2){let d=t[o],u=t[o+1],f=0,m=0;o+2>=l?(f=a,m=r):(f=t[o+2],m=t[o+3]),this.vertex(d,u,s),this.vertex(f,m,s)}}circle(t,e,i,s,n=null,c=0){if(c===0&&(c=Math.max(1,6*F.cbrt(s)|0)),c<=0)throw new Error("segments must be > 0.");n===null&&(n=this.color);let a=2*F.PI/c,r=Math.cos(a),l=Math.sin(a),o=s,h=0;if(t){this.check(yt.Filled,c*3+3),c--;for(let u=0;u<c;u++){this.vertex(e,i,n),this.vertex(e+o,i+h,n);let f=o;o=r*o-l*h,h=l*f+r*h,this.vertex(e+o,i+h,n)}this.vertex(e,i,n),this.vertex(e+o,i+h,n)}else{this.check(yt.Line,c*2+2);for(let u=0;u<c;u++){this.vertex(e+o,i+h,n);let f=o;o=r*o-l*h,h=l*f+r*h,this.vertex(e+o,i+h,n)}this.vertex(e+o,i+h,n)}let d=o;o=s,h=0,this.vertex(e+o,i+h,n)}curve(t,e,i,s,n,c,a,r,l,o=null){this.check(yt.Line,l*2+2),o===null&&(o=this.color);let h=1/l,d=h*h,u=h*h*h,f=3*h,m=3*d,g=6*d,w=6*u,v=t-i*2+n,x=e-s*2+c,p=(i-n)*3-t+a,b=(s-c)*3-e+r,y=t,T=e,A=(i-t)*f+v*m+p*u,Y=(s-e)*f+x*m+b*u,k=v*g+p*w,R=x*g+b*w,L=p*w,X=b*w;for(;l-- >0;)this.vertex(y,T,o),y+=A,T+=Y,A+=k,Y+=R,k+=L,R+=X,this.vertex(y,T,o);this.vertex(y,T,o),this.vertex(a,r,o)}vertex(t,e,i){let s=this.vertexIndex,n=this.mesh.getVertices();n[s++]=t,n[s++]=e,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 t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){this.vertexIndex!=0&&(this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0)}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},yt;(function(t){t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled"})(yt||(yt={}));var Xe=class{constructor(t){this.boneLineColor=new V(1,0,0,1),this.boneOriginColor=new V(0,1,0,1),this.attachmentLineColor=new V(0,0,1,.5),this.triangleLineColor=new V(1,.64,0,.5),this.pathColor=new V().setFromString("FF7F00"),this.clipColor=new V(.8,0,0,2),this.aabbColor=new V(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 os,this.temp=new Array,this.vertices=D.newFloatArray(2*1024),this.context=t instanceof vt?t:new vt(t)}draw(t,e,i=null){let s=e.x,n=e.y,c=this.context.gl,a=this.premultipliedAlpha?c.ONE:c.SRC_ALPHA;t.setBlendMode(a,c.ONE,c.ONE_MINUS_SRC_ALPHA);let r=e.bones;if(this.drawBones){t.setColor(this.boneLineColor);for(let l=0,o=r.length;l<o;l++){let h=r[l];if(i&&i.indexOf(h.data.name)>-1||!h.parent)continue;let d=h.data.length*h.a+h.worldX,u=h.data.length*h.c+h.worldY;t.rectLine(!0,h.worldX,h.worldY,d,u,this.boneWidth*this.scale)}this.drawSkeletonXY&&t.x(s,n,4*this.scale)}if(this.drawRegionAttachments){t.setColor(this.attachmentLineColor);let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o],u=d.getAttachment();if(u instanceof at){let f=u,m=this.vertices;f.computeWorldVertices(d,m,0,2),t.line(m[0],m[1],m[2],m[3]),t.line(m[2],m[3],m[4],m[5]),t.line(m[4],m[5],m[6],m[7]),t.line(m[6],m[7],m[0],m[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof Gt))continue;let f=u,m=this.vertices;f.computeWorldVertices(d,0,f.worldVerticesLength,m,0,2);let g=f.triangles,w=f.hullLength;if(this.drawMeshTriangles){t.setColor(this.triangleLineColor);for(let v=0,x=g.length;v<x;v+=3){let p=g[v]*2,b=g[v+1]*2,y=g[v+2]*2;t.triangle(!1,m[p],m[p+1],m[b],m[b+1],m[y],m[y+1])}}if(this.drawMeshHull&&w>0){t.setColor(this.attachmentLineColor),w=(w>>1)*2;let v=m[w-2],x=m[w-1];for(let p=0,b=w;p<b;p+=2){let y=m[p],T=m[p+1];t.line(y,T,v,x),v=y,x=T}}}}if(this.drawBoundingBoxes){let l=this.bounds;l.update(e,!0),t.setColor(this.aabbColor),t.rect(!1,l.minX,l.minY,l.getWidth(),l.getHeight());let o=l.polygons,h=l.boundingBoxes;for(let d=0,u=o.length;d<u;d++){let f=o[d];t.setColor(h[d].color),t.polygon(f,0,f.length)}}if(this.drawPaths){let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof te))continue;let f=u,m=f.worldVerticesLength,g=this.temp=D.setArraySize(this.temp,m,0);f.computeWorldVertices(d,0,m,g,0,2);let w=this.pathColor,v=g[2],x=g[3],p=0,b=0;if(f.closed){t.setColor(w);let y=g[0],T=g[1],A=g[m-2],Y=g[m-1];p=g[m-4],b=g[m-3],t.curve(v,x,y,T,A,Y,p,b,32),t.setColor(Xe.LIGHT_GRAY),t.line(v,x,y,T),t.line(p,b,A,Y)}m-=4;for(let y=4;y<m;y+=6){let T=g[y],A=g[y+1],Y=g[y+2],k=g[y+3];p=g[y+4],b=g[y+5],t.setColor(w),t.curve(v,x,T,A,Y,k,p,b,32),t.setColor(Xe.LIGHT_GRAY),t.line(v,x,T,A),t.line(p,b,Y,k),v=p,x=b}}}if(this.drawBones){t.setColor(this.boneOriginColor);for(let l=0,o=r.length;l<o;l++){let h=r[l];i&&i.indexOf(h.data.name)>-1||t.circle(!0,h.worldX,h.worldY,3*this.scale,Xe.GREEN,8)}}if(this.drawClipping){let l=e.slots;t.setColor(this.clipColor);for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof xe))continue;let f=u,m=f.worldVerticesLength,g=this.temp=D.setArraySize(this.temp,m,0);f.computeWorldVertices(d,0,m,g,0,2);for(let w=0,v=g.length;w<v;w+=2){let x=g[w],p=g[w+1],b=g[(w+2)%g.length],y=g[(w+3)%g.length];t.line(x,p,b,y)}}}}dispose(){}},Le=Xe;Le.LIGHT_GRAY=new V(192/255,192/255,192/255,1),Le.GREEN=new V(0,1,0,1);var mr=class{constructor(t,e,i){this.vertices=t,this.numVertices=e,this.numFloats=i}},xs=class{constructor(t,e=!0){this.premultipliedAlpha=!1,this.vertexEffect=null,this.tempColor=new V,this.tempColor2=new V,this.vertexSize=2+2+4,this.twoColorTint=!1,this.renderable=new mr(null,0,0),this.clipper=new Ye,this.temp=new Jt,this.temp2=new Jt,this.temp3=new V,this.temp4=new V,this.twoColorTint=e,e&&(this.vertexSize+=4),this.vertices=D.newFloatArray(this.vertexSize*1024)}draw(t,e,i=-1,s=-1){let n=this.clipper,c=this.premultipliedAlpha,a=this.twoColorTint,r=null,l=this.temp,o=this.temp2,h=this.temp3,d=this.temp4,u=this.renderable,f=null,m=null,g=e.drawOrder,w=null,v=e.color,x=a?12:8,p=!1;i==-1&&(p=!0);for(let b=0,y=g.length;b<y;b++){let T=n.isClipping()?2:x,A=g[b];if(!A.bone.active){n.clipEndWithSlot(A);continue}if(i>=0&&i==A.data.index&&(p=!0),!p){n.clipEndWithSlot(A);continue}s>=0&&s==A.data.index&&(p=!1);let Y=A.getAttachment(),k=null;if(Y instanceof at){let R=Y;u.vertices=this.vertices,u.numVertices=4,u.numFloats=T<<2,R.computeWorldVertices(A,u.vertices,0,T),m=xs.QUAD_TRIANGLES,f=R.uvs,k=R.region.renderObject.page.texture,w=R.color}else if(Y instanceof Gt){let R=Y;u.vertices=this.vertices,u.numVertices=R.worldVerticesLength>>1,u.numFloats=u.numVertices*T,u.numFloats>u.vertices.length&&(u.vertices=this.vertices=D.newFloatArray(u.numFloats)),R.computeWorldVertices(A,0,R.worldVerticesLength,u.vertices,0,T),m=R.triangles,k=R.region.renderObject.page.texture,f=R.uvs,w=R.color}else if(Y instanceof xe){let R=Y;n.clipStart(A,R);continue}else{n.clipEndWithSlot(A);continue}if(k){let R=A.color,L=this.tempColor;L.r=v.r*R.r*w.r,L.g=v.g*R.g*w.g,L.b=v.b*R.b*w.b,L.a=v.a*R.a*w.a,c&&(L.r*=L.a,L.g*=L.a,L.b*=L.a);let X=this.tempColor2;A.darkColor?(c?(X.r=A.darkColor.r*L.a,X.g=A.darkColor.g*L.a,X.b=A.darkColor.b*L.a):X.setFromColor(A.darkColor),X.a=c?1:0):X.set(0,0,0,1);let B=A.data.blendMode;if(B!=r&&(r=B,t.setBlendMode(Re.getSourceColorGLBlendMode(r,c),Re.getSourceAlphaGLBlendMode(r),Re.getDestGLBlendMode(r))),n.isClipping()){n.clipTriangles(u.vertices,u.numFloats,m,m.length,f,L,X,a);let C=new Float32Array(n.clippedVertices),I=n.clippedTriangles;if(this.vertexEffect){let O=this.vertexEffect,E=C;if(a)for(let P=0,st=C.length;P<st;P+=x)l.x=E[P],l.y=E[P+1],h.set(E[P+2],E[P+3],E[P+4],E[P+5]),o.x=E[P+6],o.y=E[P+7],d.set(E[P+8],E[P+9],E[P+10],E[P+11]),O.transform(l,o,h,d),E[P]=l.x,E[P+1]=l.y,E[P+2]=h.r,E[P+3]=h.g,E[P+4]=h.b,E[P+5]=h.a,E[P+6]=o.x,E[P+7]=o.y,E[P+8]=d.r,E[P+9]=d.g,E[P+10]=d.b,E[P+11]=d.a;else for(let P=0,st=C.length;P<st;P+=x)l.x=E[P],l.y=E[P+1],h.set(E[P+2],E[P+3],E[P+4],E[P+5]),o.x=E[P+6],o.y=E[P+7],d.set(0,0,0,0),O.transform(l,o,h,d),E[P]=l.x,E[P+1]=l.y,E[P+2]=h.r,E[P+3]=h.g,E[P+4]=h.b,E[P+5]=h.a,E[P+6]=o.x,E[P+7]=o.y}t.draw(k,C,I)}else{let C=u.vertices;if(this.vertexEffect){let O=this.vertexEffect;if(a)for(let E=0,P=0,st=u.numFloats;E<st;E+=x,P+=2)l.x=C[E],l.y=C[E+1],o.x=f[P],o.y=f[P+1],h.setFromColor(L),d.setFromColor(X),O.transform(l,o,h,d),C[E]=l.x,C[E+1]=l.y,C[E+2]=h.r,C[E+3]=h.g,C[E+4]=h.b,C[E+5]=h.a,C[E+6]=o.x,C[E+7]=o.y,C[E+8]=d.r,C[E+9]=d.g,C[E+10]=d.b,C[E+11]=d.a;else for(let E=0,P=0,st=u.numFloats;E<st;E+=x,P+=2)l.x=C[E],l.y=C[E+1],o.x=f[P],o.y=f[P+1],h.setFromColor(L),d.set(0,0,0,0),O.transform(l,o,h,d),C[E]=l.x,C[E+1]=l.y,C[E+2]=h.r,C[E+3]=h.g,C[E+4]=h.b,C[E+5]=h.a,C[E+6]=o.x,C[E+7]=o.y}else if(a)for(let O=2,E=0,P=u.numFloats;O<P;O+=x,E+=2)C[O]=L.r,C[O+1]=L.g,C[O+2]=L.b,C[O+3]=L.a,C[O+4]=f[E],C[O+5]=f[E+1],C[O+6]=X.r,C[O+7]=X.g,C[O+8]=X.b,C[O+9]=X.a;else for(let O=2,E=0,P=u.numFloats;O<P;O+=x,E+=2)C[O]=L.r,C[O+1]=L.g,C[O+2]=L.b,C[O+3]=L.a,C[O+4]=f[E],C[O+5]=f[E+1];let I=u.vertices.subarray(0,u.numFloats);t.draw(k,I,m)}}n.clipEndWithSlot(A)}n.clipEnd()}},Pi=xs;Pi.QUAD_TRIANGLES=[0,1,2,2,3,0];var S=[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],Pe=[0,1,2,2,3,0],Be=new V(1,1,1,1),ps=class{constructor(t,e,i=!0){this.twoColorTint=!1,this.canvas=t,this.context=e instanceof vt?e:new vt(e),this.twoColorTint=i,this.camera=new fs(t.width,t.height),this.batcherShader=i?pt.newTwoColoredTextured(this.context):pt.newColoredTextured(this.context),this.batcher=new Xi(this.context,i),this.shapesShader=pt.newColored(this.context),this.shapes=new Li(this.context),this.skeletonRenderer=new Pi(this.context,i),this.skeletonDebugRenderer=new Le(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,i=-1,s=-1){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,i,s)}drawSkeletonDebug(t,e=!1,i=null){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,i)}drawTexture(t,e,i,s,n,c=null){this.enableRenderer(this.batcher),c===null&&(c=Be);var a=0;S[a++]=e,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=0,S[a++]=1,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=1,S[a++]=1,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=1,S[a++]=0,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=0,S[a++]=0,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a]=0),this.batcher.draw(t,S,Pe)}drawTextureUV(t,e,i,s,n,c,a,r,l,o=null){this.enableRenderer(this.batcher),o===null&&(o=Be);var h=0;S[h++]=e,S[h++]=i,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=c,S[h++]=a,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e+s,S[h++]=i,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=r,S[h++]=a,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e+s,S[h++]=i+n,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=r,S[h++]=l,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e,S[h++]=i+n,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=c,S[h++]=l,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h]=0),this.batcher.draw(t,S,Pe)}drawTextureRotated(t,e,i,s,n,c,a,r,l=null){this.enableRenderer(this.batcher),l===null&&(l=Be);let o=e+c,h=i+a,d=-c,u=-a,f=s-c,m=n-a,g=d,w=u,v=d,x=m,p=f,b=m,y=f,T=u,A=0,Y=0,k=0,R=0,L=0,X=0,B=0,C=0;if(r!=0){let O=F.cosDeg(r),E=F.sinDeg(r);A=O*g-E*w,Y=E*g+O*w,B=O*v-E*x,C=E*v+O*x,L=O*p-E*b,X=E*p+O*b,k=L+(A-B),R=X+(Y-C)}else A=g,Y=w,B=v,C=x,L=p,X=b,k=y,R=T;A+=o,Y+=h,k+=o,R+=h,L+=o,X+=h,B+=o,C+=h;var I=0;S[I++]=A,S[I++]=Y,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=0,S[I++]=1,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=k,S[I++]=R,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=1,S[I++]=1,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=L,S[I++]=X,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=1,S[I++]=0,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=B,S[I++]=C,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=0,S[I++]=0,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I]=0),this.batcher.draw(t,S,Pe)}drawRegion(t,e,i,s,n,c=null){this.enableRenderer(this.batcher),c===null&&(c=Be);var a=0;S[a++]=e,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u,S[a++]=t.v2,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u2,S[a++]=t.v2,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u2,S[a++]=t.v,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u,S[a++]=t.v,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a]=0),this.batcher.draw(t.page.texture,S,Pe)}line(t,e,i,s,n=null,c=null){this.enableRenderer(this.shapes),this.shapes.line(t,e,i,s,n)}triangle(t,e,i,s,n,c,a,r=null,l=null,o=null){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,i,s,n,c,a,r,l,o)}quad(t,e,i,s,n,c,a,r,l,o=null,h=null,d=null,u=null){this.enableRenderer(this.shapes),this.shapes.quad(t,e,i,s,n,c,a,r,l,o,h,d,u)}rect(t,e,i,s,n,c=null){this.enableRenderer(this.shapes),this.shapes.rect(t,e,i,s,n,c)}rectLine(t,e,i,s,n,c,a=null){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,i,s,n,c,a)}polygon(t,e,i,s=null){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,i,s)}circle(t,e,i,s,n=null,c=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,i,s,n,c)}curve(t,e,i,s,n,c,a,r,l,o=null){this.enableRenderer(this.shapes),this.shapes.curve(t,e,i,s,n,c,a,r,l,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var i=window.devicePixelRatio||1,s=Math.round(e.clientWidth*i),n=Math.round(e.clientHeight*i);if((e.width!=s||e.height!=n)&&(e.width=s,e.height=n),this.context.gl.viewport(0,0,e.width,e.height),t===oe.Expand)this.camera.setViewport(s,n);else if(t===oe.Fit){let c=e.width,a=e.height,r=this.camera.viewportWidth,l=this.camera.viewportHeight,o=l/r,h=a/c,d=o<h?r/c:l/a;this.camera.setViewport(c*d,a*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof Xi?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(pt.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Li?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(pt.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},oe;(function(t){t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit"})(oe||(oe={}));var be,he,bs=0,gr=1,Bi=1,ws=165,vs=108,ie=163,xr=class{constructor(t){if(this.logo=null,this.spinner=null,this.angle=0,this.fadeOut=0,this.fadeIn=0,this.timeKeeper=new Ne,this.backgroundColor=new V(.135,.135,.135,1),this.tempColor=new V,this.renderer=t,this.timeKeeper.maxDelta=9,!he){let e=navigator.userAgent.indexOf("Safari")>-1,i=()=>bs++;he=new Image,he.src=br,e||(he.crossOrigin="anonymous"),he.onload=i,be=new Image,be.src=pr,e||(be.crossOrigin="anonymous"),be.onload=i}}dispose(){this.logo.dispose(),this.spinner.dispose()}draw(t=!1){if(bs<2||t&&this.fadeOut>Bi)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let i=this.tempColor,s=this.renderer,n=s.canvas,c=s.context.gl;if(s.resize(oe.Expand),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(c.ONE,c.ONE,c.ONE_MINUS_SRC_ALPHA),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Bi)return;i.setFromColor(this.backgroundColor),e=1-this.fadeOut/Bi,e=1-(e-1)*(e-1),i.a*=e,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)),e=1;e*=Math.min(this.fadeIn/gr,1),i.set(e,e,e,e),this.logo||(this.logo=new pe(s.context,he),this.spinner=new pe(s.context,be)),s.camera.zoom=Math.max(1,ie/n.height),s.begin(),s.drawTexture(this.logo,(n.width-ws)/2,(n.height-vs)/2,ws,vs,i),s.drawTextureRotated(this.spinner,(n.width-ie)/2,(n.height-ie)/2,ie,ie,ie/2,ie/2,this.angle,i),s.end()}},pr="data:image/png;base64,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",br="data:image/png;base64,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",wr=class{constructor(t,e){this.time=new Ne,e.pathPrefix===void 0&&(e.pathPrefix=""),e.app===void 0&&(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{}}),e.webglConfig===void 0&&(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new vt(t,e.webglConfig),this.renderer=new ps(t,this.context),this.gl=this.context.gl,this.assetManager=new us(this.context,e.pathPrefix),this.input=new Ri(t),e.app.loadAssets(this);let i=()=>{requestAnimationFrame(i),this.time.update(),e.app.update(this,this.time.delta),e.app.render(this)},s=()=>{if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error(this,this.assetManager.getErrors()):(e.app.initialize(this),i());return}requestAnimationFrame(s)};requestAnimationFrame(s)}clear(t,e,i,s){this.gl.clearColor(t,e,i,s),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}};return Ni})();
84
+ `;return new ut(t,e,i)}},pt=ut;pt.MVP_MATRIX="u_projTrans",pt.POSITION="a_position",pt.COLOR="a_color",pt.COLOR2="a_color2",pt.TEXCOORDS="a_texCoords",pt.SAMPLER="u_texture";var Ei=class{constructor(t,e,i,s){this.attributes=e,this.verticesLength=0,this.dirtyVertices=!1,this.indicesLength=0,this.dirtyIndices=!1,this.elementsPerVertex=0,this.context=t instanceof vt?t:new vt(t),this.elementsPerVertex=0;for(let n=0;n<e.length;n++)this.elementsPerVertex+=e[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(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++)t+=this.attributes[e].numElements;return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,i,s){let n=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?n.drawElements(e,s,n.UNSIGNED_SHORT,i*2):n.drawArrays(e,i,s),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let i=0;for(let s=0;s<this.attributes.length;s++){let n=this.attributes[s],c=t.getAttributeLocation(n.name);e.enableVertexAttribArray(c),e.vertexAttribPointer(c,n.numElements,e.FLOAT,!1,this.elementsPerVertex*4,i*4),i+=n.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let i=0;i<this.attributes.length;i++){let s=this.attributes[i],n=t.getAttributeLocation(s.name);e.disableVertexAttribArray(n)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},le=class{constructor(t,e,i){this.name=t,this.type=e,this.numElements=i}},Ee=class extends le{constructor(){super(pt.POSITION,Ht.Float,2)}},fr=class extends le{constructor(){super(pt.POSITION,Ht.Float,3)}},Fi=class extends le{constructor(t=0){super(pt.TEXCOORDS+(t==0?"":t),Ht.Float,2)}},Fe=class extends le{constructor(){super(pt.COLOR,Ht.Float,4)}},gs=class extends le{constructor(){super(pt.COLOR2,Ht.Float,4)}},Ht;(function(t){t[t.Float=0]="Float"})(Ht||(Ht={}));var Xi=class{constructor(t,e=!0,i=10920){if(this.isDrawing=!1,this.shader=null,this.lastTexture=null,this.verticesLength=0,this.indicesLength=0,i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=t instanceof vt?t:new vt(t);let s=e?[new Ee,new Fe,new Fi,new gs]:[new Ee,new Fe,new Fi];this.mesh=new Ei(t,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(t){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=t,this.lastTexture=null,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),this.cullWasEnabled=e.isEnabled(e.CULL_FACE),this.cullWasEnabled&&e.disable(e.CULL_FACE)}setBlendMode(t,e,i){this.srcColorBlend==t&&this.srcAlphaBlend==e&&this.dstBlend==i||(this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,i,e,i)))}draw(t,e,i){t!=this.lastTexture?(this.flush(),this.lastTexture=t):(this.verticesLength+e.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let s=this.mesh.numVertices();this.mesh.getVertices().set(e,this.verticesLength),this.verticesLength+=e.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(){this.verticesLength!=0&&(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 t=this.context.gl;t.disable(t.BLEND),this.cullWasEnabled&&t.enable(t.CULL_FACE)}getDrawCalls(){return this.drawCalls}dispose(){this.mesh.dispose()}},Li=class{constructor(t,e=10920){if(this.isDrawing=!1,this.shapeType=yt.Filled,this.color=new V(1,1,1,1),this.vertexIndex=0,this.tmp=new Jt,e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof vt?t:new vt(t),this.mesh=new Ei(t,[new Ee,new Fe],e,0);let i=this.context.gl;this.srcColorBlend=i.SRC_ALPHA,this.srcAlphaBlend=i.ONE,this.dstBlend=i.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,i){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=i,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,i,e,i))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,i,s){this.color.set(t,e,i,s)}point(t,e,i=null){this.check(yt.Point,1),i===null&&(i=this.color),this.vertex(t,e,i)}line(t,e,i,s,n=null){this.check(yt.Line,2);let c=this.mesh.getVertices(),a=this.vertexIndex;n===null&&(n=this.color),this.vertex(t,e,n),this.vertex(i,s,n)}triangle(t,e,i,s,n,c,a,r=null,l=null,o=null){this.check(t?yt.Filled:yt.Line,3);let h=this.mesh.getVertices(),d=this.vertexIndex;r===null&&(r=this.color),l===null&&(l=this.color),o===null&&(o=this.color),t?(this.vertex(e,i,r),this.vertex(s,n,l),this.vertex(c,a,o)):(this.vertex(e,i,r),this.vertex(s,n,l),this.vertex(s,n,r),this.vertex(c,a,l),this.vertex(c,a,r),this.vertex(e,i,l))}quad(t,e,i,s,n,c,a,r,l,o=null,h=null,d=null,u=null){this.check(t?yt.Filled:yt.Line,3);let f=this.mesh.getVertices(),m=this.vertexIndex;o===null&&(o=this.color),h===null&&(h=this.color),d===null&&(d=this.color),u===null&&(u=this.color),t?(this.vertex(e,i,o),this.vertex(s,n,h),this.vertex(c,a,d),this.vertex(c,a,d),this.vertex(r,l,u),this.vertex(e,i,o)):(this.vertex(e,i,o),this.vertex(s,n,h),this.vertex(s,n,h),this.vertex(c,a,d),this.vertex(c,a,d),this.vertex(r,l,u),this.vertex(r,l,u),this.vertex(e,i,o))}rect(t,e,i,s,n,c=null){this.quad(t,e,i,e+s,i,e+s,i+n,e,i+n,c,c,c,c)}rectLine(t,e,i,s,n,c,a=null){this.check(t?yt.Filled:yt.Line,8),a===null&&(a=this.color);let r=this.tmp.set(n-i,e-s);r.normalize(),c*=.5;let l=r.x*c,o=r.y*c;t?(this.vertex(e+l,i+o,a),this.vertex(e-l,i-o,a),this.vertex(s+l,n+o,a),this.vertex(s-l,n-o,a),this.vertex(s+l,n+o,a),this.vertex(e-l,i-o,a)):(this.vertex(e+l,i+o,a),this.vertex(e-l,i-o,a),this.vertex(s+l,n+o,a),this.vertex(s-l,n-o,a),this.vertex(s+l,n+o,a),this.vertex(e+l,i+o,a),this.vertex(s-l,n-o,a),this.vertex(e-l,i-o,a))}x(t,e,i){this.line(t-i,e-i,t+i,e+i),this.line(t-i,e+i,t+i,e-i)}polygon(t,e,i,s=null){if(i<3)throw new Error("Polygon must contain at least 3 vertices");this.check(yt.Line,i*2),s===null&&(s=this.color);let n=this.mesh.getVertices(),c=this.vertexIndex;e<<=1,i<<=1;let a=t[e],r=t[e+1],l=e+i;for(let o=e,h=e+i-2;o<h;o+=2){let d=t[o],u=t[o+1],f=0,m=0;o+2>=l?(f=a,m=r):(f=t[o+2],m=t[o+3]),this.vertex(d,u,s),this.vertex(f,m,s)}}circle(t,e,i,s,n=null,c=0){if(c===0&&(c=Math.max(1,6*F.cbrt(s)|0)),c<=0)throw new Error("segments must be > 0.");n===null&&(n=this.color);let a=2*F.PI/c,r=Math.cos(a),l=Math.sin(a),o=s,h=0;if(t){this.check(yt.Filled,c*3+3),c--;for(let u=0;u<c;u++){this.vertex(e,i,n),this.vertex(e+o,i+h,n);let f=o;o=r*o-l*h,h=l*f+r*h,this.vertex(e+o,i+h,n)}this.vertex(e,i,n),this.vertex(e+o,i+h,n)}else{this.check(yt.Line,c*2+2);for(let u=0;u<c;u++){this.vertex(e+o,i+h,n);let f=o;o=r*o-l*h,h=l*f+r*h,this.vertex(e+o,i+h,n)}this.vertex(e+o,i+h,n)}let d=o;o=s,h=0,this.vertex(e+o,i+h,n)}curve(t,e,i,s,n,c,a,r,l,o=null){this.check(yt.Line,l*2+2),o===null&&(o=this.color);let h=1/l,d=h*h,u=h*h*h,f=3*h,m=3*d,g=6*d,w=6*u,v=t-i*2+n,x=e-s*2+c,p=(i-n)*3-t+a,b=(s-c)*3-e+r,y=t,T=e,A=(i-t)*f+v*m+p*u,Y=(s-e)*f+x*m+b*u,k=v*g+p*w,R=x*g+b*w,L=p*w,X=b*w;for(;l-- >0;)this.vertex(y,T,o),y+=A,T+=Y,A+=k,Y+=R,k+=L,R+=X,this.vertex(y,T,o);this.vertex(y,T,o),this.vertex(a,r,o)}vertex(t,e,i){let s=this.vertexIndex,n=this.mesh.getVertices();n[s++]=t,n[s++]=e,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 t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){this.vertexIndex!=0&&(this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0)}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},yt;(function(t){t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled"})(yt||(yt={}));var Xe=class{constructor(t){this.boneLineColor=new V(1,0,0,1),this.boneOriginColor=new V(0,1,0,1),this.attachmentLineColor=new V(0,0,1,.5),this.triangleLineColor=new V(1,.64,0,.5),this.pathColor=new V().setFromString("FF7F00"),this.clipColor=new V(.8,0,0,2),this.aabbColor=new V(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 os,this.temp=new Array,this.vertices=D.newFloatArray(2*1024),this.context=t instanceof vt?t:new vt(t)}draw(t,e,i=null){let s=e.x,n=e.y,c=this.context.gl,a=this.premultipliedAlpha?c.ONE:c.SRC_ALPHA;t.setBlendMode(a,c.ONE,c.ONE_MINUS_SRC_ALPHA);let r=e.bones;if(this.drawBones){t.setColor(this.boneLineColor);for(let l=0,o=r.length;l<o;l++){let h=r[l];if(i&&i.indexOf(h.data.name)>-1||!h.parent)continue;let d=h.data.length*h.a+h.worldX,u=h.data.length*h.c+h.worldY;t.rectLine(!0,h.worldX,h.worldY,d,u,this.boneWidth*this.scale)}this.drawSkeletonXY&&t.x(s,n,4*this.scale)}if(this.drawRegionAttachments){t.setColor(this.attachmentLineColor);let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o],u=d.getAttachment();if(u instanceof at){let f=u,m=this.vertices;f.computeWorldVertices(d,m,0,2),t.line(m[0],m[1],m[2],m[3]),t.line(m[2],m[3],m[4],m[5]),t.line(m[4],m[5],m[6],m[7]),t.line(m[6],m[7],m[0],m[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof Gt))continue;let f=u,m=this.vertices;f.computeWorldVertices(d,0,f.worldVerticesLength,m,0,2);let g=f.triangles,w=f.hullLength;if(this.drawMeshTriangles){t.setColor(this.triangleLineColor);for(let v=0,x=g.length;v<x;v+=3){let p=g[v]*2,b=g[v+1]*2,y=g[v+2]*2;t.triangle(!1,m[p],m[p+1],m[b],m[b+1],m[y],m[y+1])}}if(this.drawMeshHull&&w>0){t.setColor(this.attachmentLineColor),w=(w>>1)*2;let v=m[w-2],x=m[w-1];for(let p=0,b=w;p<b;p+=2){let y=m[p],T=m[p+1];t.line(y,T,v,x),v=y,x=T}}}}if(this.drawBoundingBoxes){let l=this.bounds;l.update(e,!0),t.setColor(this.aabbColor),t.rect(!1,l.minX,l.minY,l.getWidth(),l.getHeight());let o=l.polygons,h=l.boundingBoxes;for(let d=0,u=o.length;d<u;d++){let f=o[d];t.setColor(h[d].color),t.polygon(f,0,f.length)}}if(this.drawPaths){let l=e.slots;for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof te))continue;let f=u,m=f.worldVerticesLength,g=this.temp=D.setArraySize(this.temp,m,0);f.computeWorldVertices(d,0,m,g,0,2);let w=this.pathColor,v=g[2],x=g[3],p=0,b=0;if(f.closed){t.setColor(w);let y=g[0],T=g[1],A=g[m-2],Y=g[m-1];p=g[m-4],b=g[m-3],t.curve(v,x,y,T,A,Y,p,b,32),t.setColor(Xe.LIGHT_GRAY),t.line(v,x,y,T),t.line(p,b,A,Y)}m-=4;for(let y=4;y<m;y+=6){let T=g[y],A=g[y+1],Y=g[y+2],k=g[y+3];p=g[y+4],b=g[y+5],t.setColor(w),t.curve(v,x,T,A,Y,k,p,b,32),t.setColor(Xe.LIGHT_GRAY),t.line(v,x,T,A),t.line(p,b,Y,k),v=p,x=b}}}if(this.drawBones){t.setColor(this.boneOriginColor);for(let l=0,o=r.length;l<o;l++){let h=r[l];i&&i.indexOf(h.data.name)>-1||t.circle(!0,h.worldX,h.worldY,3*this.scale,Xe.GREEN,8)}}if(this.drawClipping){let l=e.slots;t.setColor(this.clipColor);for(let o=0,h=l.length;o<h;o++){let d=l[o];if(!d.bone.active)continue;let u=d.getAttachment();if(!(u instanceof xe))continue;let f=u,m=f.worldVerticesLength,g=this.temp=D.setArraySize(this.temp,m,0);f.computeWorldVertices(d,0,m,g,0,2);for(let w=0,v=g.length;w<v;w+=2){let x=g[w],p=g[w+1],b=g[(w+2)%g.length],y=g[(w+3)%g.length];t.line(x,p,b,y)}}}}dispose(){}},Le=Xe;Le.LIGHT_GRAY=new V(192/255,192/255,192/255,1),Le.GREEN=new V(0,1,0,1);var mr=class{constructor(t,e,i){this.vertices=t,this.numVertices=e,this.numFloats=i}},xs=class{constructor(t,e=!0){this.premultipliedAlpha=!1,this.vertexEffect=null,this.tempColor=new V,this.tempColor2=new V,this.vertexSize=2+2+4,this.twoColorTint=!1,this.renderable=new mr(null,0,0),this.clipper=new Ye,this.temp=new Jt,this.temp2=new Jt,this.temp3=new V,this.temp4=new V,this.twoColorTint=e,e&&(this.vertexSize+=4),this.vertices=D.newFloatArray(this.vertexSize*1024)}draw(t,e,i=-1,s=-1){let n=this.clipper,c=this.premultipliedAlpha,a=this.twoColorTint,r=null,l=this.temp,o=this.temp2,h=this.temp3,d=this.temp4,u=this.renderable,f=null,m=null,g=e.drawOrder,w=null,v=e.color,x=a?12:8,p=!1;i==-1&&(p=!0);for(let b=0,y=g.length;b<y;b++){let T=n.isClipping()?2:x,A=g[b];if(!A.bone.active){n.clipEndWithSlot(A);continue}if(i>=0&&i==A.data.index&&(p=!0),!p){n.clipEndWithSlot(A);continue}s>=0&&s==A.data.index&&(p=!1);let Y=A.getAttachment(),k=null;if(Y instanceof at){let R=Y;u.vertices=this.vertices,u.numVertices=4,u.numFloats=T<<2,R.computeWorldVertices(A,u.vertices,0,T),m=xs.QUAD_TRIANGLES,f=R.uvs,k=R.region.renderObject.page.texture,w=R.color}else if(Y instanceof Gt){let R=Y;u.vertices=this.vertices,u.numVertices=R.worldVerticesLength>>1,u.numFloats=u.numVertices*T,u.numFloats>u.vertices.length&&(u.vertices=this.vertices=D.newFloatArray(u.numFloats)),R.computeWorldVertices(A,0,R.worldVerticesLength,u.vertices,0,T),m=R.triangles,k=R.region.renderObject.page.texture,f=R.uvs,w=R.color}else if(Y instanceof xe){let R=Y;n.clipStart(A,R);continue}else{n.clipEndWithSlot(A);continue}if(k){let R=A.color,L=this.tempColor;L.r=v.r*R.r*w.r,L.g=v.g*R.g*w.g,L.b=v.b*R.b*w.b,L.a=v.a*R.a*w.a,c&&(L.r*=L.a,L.g*=L.a,L.b*=L.a);let X=this.tempColor2;A.darkColor?(c?(X.r=A.darkColor.r*L.a,X.g=A.darkColor.g*L.a,X.b=A.darkColor.b*L.a):X.setFromColor(A.darkColor),X.a=c?1:0):X.set(0,0,0,1);let B=A.data.blendMode;if(B!=r&&(r=B,t.setBlendMode(Re.getSourceColorGLBlendMode(r,c),Re.getSourceAlphaGLBlendMode(r),Re.getDestGLBlendMode(r))),n.isClipping()){n.clipTriangles(u.vertices,u.numFloats,m,m.length,f,L,X,a);let C=new Float32Array(n.clippedVertices),I=n.clippedTriangles;if(this.vertexEffect){let O=this.vertexEffect,E=C;if(a)for(let P=0,st=C.length;P<st;P+=x)l.x=E[P],l.y=E[P+1],h.set(E[P+2],E[P+3],E[P+4],E[P+5]),o.x=E[P+6],o.y=E[P+7],d.set(E[P+8],E[P+9],E[P+10],E[P+11]),O.transform(l,o,h,d),E[P]=l.x,E[P+1]=l.y,E[P+2]=h.r,E[P+3]=h.g,E[P+4]=h.b,E[P+5]=h.a,E[P+6]=o.x,E[P+7]=o.y,E[P+8]=d.r,E[P+9]=d.g,E[P+10]=d.b,E[P+11]=d.a;else for(let P=0,st=C.length;P<st;P+=x)l.x=E[P],l.y=E[P+1],h.set(E[P+2],E[P+3],E[P+4],E[P+5]),o.x=E[P+6],o.y=E[P+7],d.set(0,0,0,0),O.transform(l,o,h,d),E[P]=l.x,E[P+1]=l.y,E[P+2]=h.r,E[P+3]=h.g,E[P+4]=h.b,E[P+5]=h.a,E[P+6]=o.x,E[P+7]=o.y}t.draw(k,C,I)}else{let C=u.vertices;if(this.vertexEffect){let O=this.vertexEffect;if(a)for(let E=0,P=0,st=u.numFloats;E<st;E+=x,P+=2)l.x=C[E],l.y=C[E+1],o.x=f[P],o.y=f[P+1],h.setFromColor(L),d.setFromColor(X),O.transform(l,o,h,d),C[E]=l.x,C[E+1]=l.y,C[E+2]=h.r,C[E+3]=h.g,C[E+4]=h.b,C[E+5]=h.a,C[E+6]=o.x,C[E+7]=o.y,C[E+8]=d.r,C[E+9]=d.g,C[E+10]=d.b,C[E+11]=d.a;else for(let E=0,P=0,st=u.numFloats;E<st;E+=x,P+=2)l.x=C[E],l.y=C[E+1],o.x=f[P],o.y=f[P+1],h.setFromColor(L),d.set(0,0,0,0),O.transform(l,o,h,d),C[E]=l.x,C[E+1]=l.y,C[E+2]=h.r,C[E+3]=h.g,C[E+4]=h.b,C[E+5]=h.a,C[E+6]=o.x,C[E+7]=o.y}else if(a)for(let O=2,E=0,P=u.numFloats;O<P;O+=x,E+=2)C[O]=L.r,C[O+1]=L.g,C[O+2]=L.b,C[O+3]=L.a,C[O+4]=f[E],C[O+5]=f[E+1],C[O+6]=X.r,C[O+7]=X.g,C[O+8]=X.b,C[O+9]=X.a;else for(let O=2,E=0,P=u.numFloats;O<P;O+=x,E+=2)C[O]=L.r,C[O+1]=L.g,C[O+2]=L.b,C[O+3]=L.a,C[O+4]=f[E],C[O+5]=f[E+1];let I=u.vertices.subarray(0,u.numFloats);t.draw(k,I,m)}}n.clipEndWithSlot(A)}n.clipEnd()}},Pi=xs;Pi.QUAD_TRIANGLES=[0,1,2,2,3,0];var S=[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],Pe=[0,1,2,2,3,0],Be=new V(1,1,1,1),ps=class{constructor(t,e,i=!0){this.twoColorTint=!1,this.canvas=t,this.context=e instanceof vt?e:new vt(e),this.twoColorTint=i,this.camera=new fs(t.width,t.height),this.batcherShader=i?pt.newTwoColoredTextured(this.context):pt.newColoredTextured(this.context),this.batcher=new Xi(this.context,i),this.shapesShader=pt.newColored(this.context),this.shapes=new Li(this.context),this.skeletonRenderer=new Pi(this.context,i),this.skeletonDebugRenderer=new Le(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,i=-1,s=-1){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,i,s)}drawSkeletonDebug(t,e=!1,i=null){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,i)}drawTexture(t,e,i,s,n,c=null){this.enableRenderer(this.batcher),c===null&&(c=Be);var a=0;S[a++]=e,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=0,S[a++]=1,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=1,S[a++]=1,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=1,S[a++]=0,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=0,S[a++]=0,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a]=0),this.batcher.draw(t,S,Pe)}drawTextureUV(t,e,i,s,n,c,a,r,l,o=null){this.enableRenderer(this.batcher),o===null&&(o=Be);var h=0;S[h++]=e,S[h++]=i,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=c,S[h++]=a,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e+s,S[h++]=i,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=r,S[h++]=a,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e+s,S[h++]=i+n,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=r,S[h++]=l,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h++]=0),S[h++]=e,S[h++]=i+n,S[h++]=o.r,S[h++]=o.g,S[h++]=o.b,S[h++]=o.a,S[h++]=c,S[h++]=l,this.twoColorTint&&(S[h++]=0,S[h++]=0,S[h++]=0,S[h]=0),this.batcher.draw(t,S,Pe)}drawTextureRotated(t,e,i,s,n,c,a,r,l=null){this.enableRenderer(this.batcher),l===null&&(l=Be);let o=e+c,h=i+a,d=-c,u=-a,f=s-c,m=n-a,g=d,w=u,v=d,x=m,p=f,b=m,y=f,T=u,A=0,Y=0,k=0,R=0,L=0,X=0,B=0,C=0;if(r!=0){let O=F.cosDeg(r),E=F.sinDeg(r);A=O*g-E*w,Y=E*g+O*w,B=O*v-E*x,C=E*v+O*x,L=O*p-E*b,X=E*p+O*b,k=L+(A-B),R=X+(Y-C)}else A=g,Y=w,B=v,C=x,L=p,X=b,k=y,R=T;A+=o,Y+=h,k+=o,R+=h,L+=o,X+=h,B+=o,C+=h;var I=0;S[I++]=A,S[I++]=Y,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=0,S[I++]=1,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=k,S[I++]=R,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=1,S[I++]=1,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=L,S[I++]=X,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=1,S[I++]=0,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I++]=0),S[I++]=B,S[I++]=C,S[I++]=l.r,S[I++]=l.g,S[I++]=l.b,S[I++]=l.a,S[I++]=0,S[I++]=0,this.twoColorTint&&(S[I++]=0,S[I++]=0,S[I++]=0,S[I]=0),this.batcher.draw(t,S,Pe)}drawRegion(t,e,i,s,n,c=null){this.enableRenderer(this.batcher),c===null&&(c=Be);var a=0;S[a++]=e,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u,S[a++]=t.v2,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u2,S[a++]=t.v2,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e+s,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u2,S[a++]=t.v,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a++]=0),S[a++]=e,S[a++]=i+n,S[a++]=c.r,S[a++]=c.g,S[a++]=c.b,S[a++]=c.a,S[a++]=t.u,S[a++]=t.v,this.twoColorTint&&(S[a++]=0,S[a++]=0,S[a++]=0,S[a]=0),this.batcher.draw(t.page.texture,S,Pe)}line(t,e,i,s,n=null,c=null){this.enableRenderer(this.shapes),this.shapes.line(t,e,i,s,n)}triangle(t,e,i,s,n,c,a,r=null,l=null,o=null){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,i,s,n,c,a,r,l,o)}quad(t,e,i,s,n,c,a,r,l,o=null,h=null,d=null,u=null){this.enableRenderer(this.shapes),this.shapes.quad(t,e,i,s,n,c,a,r,l,o,h,d,u)}rect(t,e,i,s,n,c=null){this.enableRenderer(this.shapes),this.shapes.rect(t,e,i,s,n,c)}rectLine(t,e,i,s,n,c,a=null){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,i,s,n,c,a)}polygon(t,e,i,s=null){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,i,s)}circle(t,e,i,s,n=null,c=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,i,s,n,c)}curve(t,e,i,s,n,c,a,r,l,o=null){this.enableRenderer(this.shapes),this.shapes.curve(t,e,i,s,n,c,a,r,l,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var i=window.devicePixelRatio||1,s=Math.round(e.clientWidth*i),n=Math.round(e.clientHeight*i);if((e.width!=s||e.height!=n)&&(e.width=s,e.height=n),this.context.gl.viewport(0,0,e.width,e.height),t===oe.Expand)this.camera.setViewport(s,n);else if(t===oe.Fit){let c=e.width,a=e.height,r=this.camera.viewportWidth,l=this.camera.viewportHeight,o=l/r,h=a/c,d=o<h?r/c:l/a;this.camera.setViewport(c*d,a*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof Xi?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(pt.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Li?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(pt.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},oe;(function(t){t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit"})(oe||(oe={}));var be,he,bs=0,gr=1,Bi=1,ws=165,vs=108,ie=163,xr=class{constructor(t){if(this.logo=null,this.spinner=null,this.angle=0,this.fadeOut=0,this.fadeIn=0,this.timeKeeper=new Ne,this.backgroundColor=new V(.135,.135,.135,1),this.tempColor=new V,this.renderer=t,this.timeKeeper.maxDelta=9,!he){let e=navigator.userAgent.indexOf("Safari")>-1,i=()=>bs++;he=new Image,he.src=br,e||(he.crossOrigin="anonymous"),he.onload=i,be=new Image,be.src=pr,e||(be.crossOrigin="anonymous"),be.onload=i}}dispose(){this.logo.dispose(),this.spinner.dispose()}draw(t=!1){if(bs<2||t&&this.fadeOut>Bi)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let i=this.tempColor,s=this.renderer,n=s.canvas,c=s.context.gl;if(s.resize(oe.Expand),s.camera.position.set(n.width/2,n.height/2,0),s.batcher.setBlendMode(c.ONE,c.ONE,c.ONE_MINUS_SRC_ALPHA),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Bi)return;i.setFromColor(this.backgroundColor),e=1-this.fadeOut/Bi,e=1-(e-1)*(e-1),i.a*=e,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)),e=1;e*=Math.min(this.fadeIn/gr,1),i.set(e,e,e,e),this.logo||(this.logo=new pe(s.context,he),this.spinner=new pe(s.context,be)),s.camera.zoom=Math.max(1,ie/n.height),s.begin(),s.drawTexture(this.logo,(n.width-ws)/2,(n.height-vs)/2,ws,vs,i),s.drawTextureRotated(this.spinner,(n.width-ie)/2,(n.height-ie)/2,ie,ie,ie/2,ie/2,this.angle,i),s.end()}},pr="data:image/png;base64,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",br="data:image/png;base64,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",wr=class{constructor(t,e){this.time=new Ne,e.pathPrefix===void 0&&(e.pathPrefix=""),e.app===void 0&&(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{}}),e.webglConfig===void 0&&(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new vt(t,e.webglConfig),this.renderer=new ps(t,this.context),this.gl=this.context.gl,this.assetManager=new us(this.context,e.pathPrefix),this.input=new Ri(t),e.app.loadAssets(this);let i=()=>{requestAnimationFrame(i),this.time.update(),e.app.update(this,this.time.delta),e.app.render(this)},s=()=>{if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error(this,this.assetManager.getErrors()):(e.app.initialize(this),i());return}requestAnimationFrame(s)};requestAnimationFrame(s)}clear(t,e,i,s){this.gl.clearColor(t,e,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.10",
3
+ "version": "4.1.13",
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.10"
33
+ "@esotericsoftware/spine-core": "^4.1.13"
34
34
  }
35
35
  }