laya.core.js 556 KB

1
  1. window.Laya=function(exports){"use strict";class Config{}Config.animationInterval=50,Config.isAntialias=!1,Config.isAlpha=!1,Config.premultipliedAlpha=!0,Config.isStencil=!0,Config.preserveDrawingBuffer=!1,Config.webGL2D_MeshAllocMaxMem=!0,Config.is2DPixelArtGame=!1,Config.useWebGL2=!0,Config.useRetinalCanvas=!1,window.Config=Config;class ILaya{static regClass(c){ILaya.__classMap[c.name]=c}}ILaya.Laya=null,ILaya.Timer=null,ILaya.WorkerLoader=null,ILaya.Dragging=null,ILaya.GraphicsBounds=null,ILaya.Sprite=null,ILaya.TextRender=null,ILaya.TextAtlas=null,ILaya.timer=null,ILaya.systemTimer=null,ILaya.startTimer=null,ILaya.updateTimer=null,ILaya.lateTimer=null,ILaya.physicsTimer=null,ILaya.stage=null,ILaya.Loader=null,ILaya.loader=null,ILaya.TTFLoader=null,ILaya.SoundManager=null,ILaya.WebAudioSound=null,ILaya.AudioSound=null,ILaya.ShaderCompile=null,ILaya.ClassUtils=null,ILaya.SceneUtils=null,ILaya.Context=null,ILaya.Render=null,ILaya.MouseManager=null,ILaya.Text=null,ILaya.Browser=null,ILaya.WebGL=null,ILaya.Pool=null,ILaya.Utils=null,ILaya.Graphics=null,ILaya.Submit=null,ILaya.Stage=null,ILaya.Resource=null,ILaya.__classMap={};class Pool{static getPoolBySign(sign){return Pool._poolDic[sign]||(Pool._poolDic[sign]=[])}static clearBySign(sign){Pool._poolDic[sign]&&(Pool._poolDic[sign].length=0)}static recover(sign,item){item[Pool.POOLSIGN]||(item[Pool.POOLSIGN]=!0,Pool.getPoolBySign(sign).push(item))}static recoverByClass(instance){if(instance){var className=instance.__className||instance.constructor._$gid;className&&Pool.recover(className,instance)}}static _getClassSign(cla){var className=cla.__className||cla._$gid;return className||(cla._$gid=className=Pool._CLSID+"",Pool._CLSID++),className}static createByClass(cls){return Pool.getItemByClass(Pool._getClassSign(cls),cls)}static getItemByClass(sign,cls){if(!Pool._poolDic[sign])return new cls;var pool=Pool.getPoolBySign(sign);if(pool.length){var rst=pool.pop();rst[Pool.POOLSIGN]=!1}else rst=new cls;return rst}static getItemByCreateFun(sign,createFun,caller=null){var pool=Pool.getPoolBySign(sign),rst=pool.length?pool.pop():createFun.call(caller);return rst[Pool.POOLSIGN]=!1,rst}static getItem(sign){var pool=Pool.getPoolBySign(sign),rst=pool.length?pool.pop():null;return rst&&(rst[Pool.POOLSIGN]=!1),rst}}Pool._CLSID=0,Pool.POOLSIGN="__InPool",Pool._poolDic={};class AlphaCmd{static create(alpha){var cmd=Pool.getItemByClass("AlphaCmd",AlphaCmd);return cmd.alpha=alpha,cmd}recover(){Pool.recover("AlphaCmd",this)}run(context,gx,gy){context.alpha(this.alpha)}get cmdID(){return AlphaCmd.ID}}AlphaCmd.ID="Alpha";class DrawCircleCmd{static create(x,y,radius,fillColor,lineColor,lineWidth,vid){var cmd=Pool.getItemByClass("DrawCircleCmd",DrawCircleCmd);return cmd.x=x,cmd.y=y,cmd.radius=radius,cmd.fillColor=fillColor,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd.vid=vid,cmd}recover(){this.fillColor=null,this.lineColor=null,Pool.recover("DrawCircleCmd",this)}run(context,gx,gy){context._drawCircle(this.x+gx,this.y+gy,this.radius,this.fillColor,this.lineColor,this.lineWidth,this.vid)}get cmdID(){return DrawCircleCmd.ID}}DrawCircleCmd.ID="DrawCircle";class DrawCurvesCmd{static create(x,y,points,lineColor,lineWidth){var cmd=Pool.getItemByClass("DrawCurvesCmd",DrawCurvesCmd);return cmd.x=x,cmd.y=y,cmd.points=points,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd}recover(){this.points=null,this.lineColor=null,Pool.recover("DrawCurvesCmd",this)}run(context,gx,gy){context.drawCurves(this.x+gx,this.y+gy,this.points,this.lineColor,this.lineWidth)}get cmdID(){return DrawCurvesCmd.ID}}DrawCurvesCmd.ID="DrawCurves";class DrawImageCmd{static create(texture,x,y,width,height){var cmd=Pool.getItemByClass("DrawImageCmd",DrawImageCmd);return cmd.texture=texture,texture._addReference(),cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd}recover(){this.texture._removeReference(),this.texture=null,Pool.recover("DrawImageCmd",this)}run(context,gx,gy){context.drawTexture(this.texture,this.x+gx,this.y+gy,this.width,this.height)}get cmdID(){return DrawImageCmd.ID}}DrawImageCmd.ID="DrawImage";class DrawLineCmd{static create(fromX,fromY,toX,toY,lineColor,lineWidth,vid){var cmd=Pool.getItemByClass("DrawLineCmd",DrawLineCmd);return cmd.fromX=fromX,cmd.fromY=fromY,cmd.toX=toX,cmd.toY=toY,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd.vid=vid,cmd}recover(){Pool.recover("DrawLineCmd",this)}run(context,gx,gy){context._drawLine(gx,gy,this.fromX,this.fromY,this.toX,this.toY,this.lineColor,this.lineWidth,this.vid)}get cmdID(){return DrawLineCmd.ID}}DrawLineCmd.ID="DrawLine";class DrawLinesCmd{static create(x,y,points,lineColor,lineWidth,vid){var cmd=Pool.getItemByClass("DrawLinesCmd",DrawLinesCmd);return cmd.x=x,cmd.y=y,cmd.points=points,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd.vid=vid,cmd}recover(){this.points=null,this.lineColor=null,Pool.recover("DrawLinesCmd",this)}run(context,gx,gy){context._drawLines(this.x+gx,this.y+gy,this.points,this.lineColor,this.lineWidth,this.vid)}get cmdID(){return DrawLinesCmd.ID}}DrawLinesCmd.ID="DrawLines";class DrawPathCmd{static create(x,y,paths,brush,pen){var cmd=Pool.getItemByClass("DrawPathCmd",DrawPathCmd);return cmd.x=x,cmd.y=y,cmd.paths=paths,cmd.brush=brush,cmd.pen=pen,cmd}recover(){this.paths=null,this.brush=null,this.pen=null,Pool.recover("DrawPathCmd",this)}run(context,gx,gy){context._drawPath(this.x+gx,this.y+gy,this.paths,this.brush,this.pen)}get cmdID(){return DrawPathCmd.ID}}DrawPathCmd.ID="DrawPath";class DrawPieCmd{static create(x,y,radius,startAngle,endAngle,fillColor,lineColor,lineWidth,vid){var cmd=Pool.getItemByClass("DrawPieCmd",DrawPieCmd);return cmd.x=x,cmd.y=y,cmd.radius=radius,cmd._startAngle=startAngle,cmd._endAngle=endAngle,cmd.fillColor=fillColor,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd.vid=vid,cmd}recover(){this.fillColor=null,this.lineColor=null,Pool.recover("DrawPieCmd",this)}run(context,gx,gy){context._drawPie(this.x+gx,this.y+gy,this.radius,this._startAngle,this._endAngle,this.fillColor,this.lineColor,this.lineWidth,this.vid)}get cmdID(){return DrawPieCmd.ID}get startAngle(){return 180*this._startAngle/Math.PI}set startAngle(value){this._startAngle=value*Math.PI/180}get endAngle(){return 180*this._endAngle/Math.PI}set endAngle(value){this._endAngle=value*Math.PI/180}}DrawPieCmd.ID="DrawPie";class DrawPolyCmd{static create(x,y,points,fillColor,lineColor,lineWidth,isConvexPolygon,vid){var cmd=Pool.getItemByClass("DrawPolyCmd",DrawPolyCmd);return cmd.x=x,cmd.y=y,cmd.points=points,cmd.fillColor=fillColor,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd.isConvexPolygon=isConvexPolygon,cmd.vid=vid,cmd}recover(){this.points=null,this.fillColor=null,this.lineColor=null,Pool.recover("DrawPolyCmd",this)}run(context,gx,gy){context._drawPoly(this.x+gx,this.y+gy,this.points,this.fillColor,this.lineColor,this.lineWidth,this.isConvexPolygon,this.vid)}get cmdID(){return DrawPolyCmd.ID}}DrawPolyCmd.ID="DrawPoly";class DrawRectCmd{static create(x,y,width,height,fillColor,lineColor,lineWidth){var cmd=Pool.getItemByClass("DrawRectCmd",DrawRectCmd);return cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd.fillColor=fillColor,cmd.lineColor=lineColor,cmd.lineWidth=lineWidth,cmd}recover(){this.fillColor=null,this.lineColor=null,Pool.recover("DrawRectCmd",this)}run(context,gx,gy){context.drawRect(this.x+gx,this.y+gy,this.width,this.height,this.fillColor,this.lineColor,this.lineWidth)}get cmdID(){return DrawRectCmd.ID}}DrawRectCmd.ID="DrawRect";class Matrix{constructor(a=1,b=0,c=0,d=1,tx=0,ty=0,nums=0){if(this._bTransform=!1,null!=Matrix._createFun)return Matrix._createFun(a,b,c,d,tx,ty,nums);this.a=a,this.b=b,this.c=c,this.d=d,this.tx=tx,this.ty=ty,this._checkTransform()}identity(){return this.a=this.d=1,this.b=this.tx=this.ty=this.c=0,this._bTransform=!1,this}_checkTransform(){return this._bTransform=1!==this.a||0!==this.b||0!==this.c||1!==this.d}setTranslate(x,y){return this.tx=x,this.ty=y,this}translate(x,y){return this.tx+=x,this.ty+=y,this}scale(x,y){return this.a*=x,this.d*=y,this.c*=x,this.b*=y,this.tx*=x,this.ty*=y,this._bTransform=!0,this}rotate(angle){var cos=Math.cos(angle),sin=Math.sin(angle),a1=this.a,c1=this.c,tx1=this.tx;return this.a=a1*cos-this.b*sin,this.b=a1*sin+this.b*cos,this.c=c1*cos-this.d*sin,this.d=c1*sin+this.d*cos,this.tx=tx1*cos-this.ty*sin,this.ty=tx1*sin+this.ty*cos,this._bTransform=!0,this}skew(x,y){var tanX=Math.tan(x),tanY=Math.tan(y),a1=this.a,b1=this.b;return this.a+=tanY*this.c,this.b+=tanY*this.d,this.c+=tanX*a1,this.d+=tanX*b1,this}invertTransformPoint(out){var a1=this.a,b1=this.b,c1=this.c,d1=this.d,tx1=this.tx,n=a1*d1-b1*c1,a2=d1/n,b2=-b1/n,c2=-c1/n,d2=a1/n,tx2=(c1*this.ty-d1*tx1)/n,ty2=-(a1*this.ty-b1*tx1)/n;return out.setTo(a2*out.x+c2*out.y+tx2,b2*out.x+d2*out.y+ty2)}transformPoint(out){return out.setTo(this.a*out.x+this.c*out.y+this.tx,this.b*out.x+this.d*out.y+this.ty)}transformPointN(out){return out.setTo(this.a*out.x+this.c*out.y,this.b*out.x+this.d*out.y)}getScaleX(){return 0===this.b?this.a:Math.sqrt(this.a*this.a+this.b*this.b)}getScaleY(){return 0===this.c?this.d:Math.sqrt(this.c*this.c+this.d*this.d)}invert(){var a1=this.a,b1=this.b,c1=this.c,d1=this.d,tx1=this.tx,n=a1*d1-b1*c1;return this.a=d1/n,this.b=-b1/n,this.c=-c1/n,this.d=a1/n,this.tx=(c1*this.ty-d1*tx1)/n,this.ty=-(a1*this.ty-b1*tx1)/n,this}setTo(a,b,c,d,tx,ty){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=tx,this.ty=ty,this}concat(matrix){var a=this.a,c=this.c,tx=this.tx;return this.a=a*matrix.a+this.b*matrix.c,this.b=a*matrix.b+this.b*matrix.d,this.c=c*matrix.a+this.d*matrix.c,this.d=c*matrix.b+this.d*matrix.d,this.tx=tx*matrix.a+this.ty*matrix.c+matrix.tx,this.ty=tx*matrix.b+this.ty*matrix.d+matrix.ty,this}static mul(m1,m2,out){var aa=m1.a,ab=m1.b,ac=m1.c,ad=m1.d,atx=m1.tx,aty=m1.ty,ba=m2.a,bb=m2.b,bc=m2.c,bd=m2.d,btx=m2.tx,bty=m2.ty;return 0!==bb||0!==bc?(out.a=aa*ba+ab*bc,out.b=aa*bb+ab*bd,out.c=ac*ba+ad*bc,out.d=ac*bb+ad*bd,out.tx=ba*atx+bc*aty+btx,out.ty=bb*atx+bd*aty+bty):(out.a=aa*ba,out.b=ab*bd,out.c=ac*ba,out.d=ad*bd,out.tx=ba*atx+btx,out.ty=bd*aty+bty),out}static mul16(m1,m2,out){var aa=m1.a,ab=m1.b,ac=m1.c,ad=m1.d,atx=m1.tx,aty=m1.ty,ba=m2.a,bb=m2.b,bc=m2.c,bd=m2.d,btx=m2.tx,bty=m2.ty;return 0!==bb||0!==bc?(out[0]=aa*ba+ab*bc,out[1]=aa*bb+ab*bd,out[4]=ac*ba+ad*bc,out[5]=ac*bb+ad*bd,out[12]=ba*atx+bc*aty+btx,out[13]=bb*atx+bd*aty+bty):(out[0]=aa*ba,out[1]=ab*bd,out[4]=ac*ba,out[5]=ad*bd,out[12]=ba*atx+btx,out[13]=bd*aty+bty),out}scaleEx(x,y){var ba=this.a,bb=this.b,bc=this.c,bd=this.d;0!==bb||0!==bc?(this.a=x*ba,this.b=x*bb,this.c=y*bc,this.d=y*bd):(this.a=x*ba,this.b=0*bd,this.c=0*ba,this.d=y*bd),this._bTransform=!0}rotateEx(angle){var cos=Math.cos(angle),sin=Math.sin(angle),ba=this.a,bb=this.b,bc=this.c,bd=this.d;0!==bb||0!==bc?(this.a=cos*ba+sin*bc,this.b=cos*bb+sin*bd,this.c=-sin*ba+cos*bc,this.d=-sin*bb+cos*bd):(this.a=cos*ba,this.b=sin*bd,this.c=-sin*ba,this.d=cos*bd),this._bTransform=!0}clone(){var dec=Matrix.create();return dec.a=this.a,dec.b=this.b,dec.c=this.c,dec.d=this.d,dec.tx=this.tx,dec.ty=this.ty,dec._bTransform=this._bTransform,dec}copyTo(dec){return dec.a=this.a,dec.b=this.b,dec.c=this.c,dec.d=this.d,dec.tx=this.tx,dec.ty=this.ty,dec._bTransform=this._bTransform,dec}toString(){return this.a+","+this.b+","+this.c+","+this.d+","+this.tx+","+this.ty}destroy(){this.recover()}recover(){Pool.recover("Matrix",this.identity())}static create(){return Pool.getItemByClass("Matrix",Matrix)}}Matrix.EMPTY=new Matrix,Matrix.TEMP=new Matrix,Matrix._createFun=null;class Point{constructor(x=0,y=0){this.x=x,this.y=y}static create(){return Pool.getItemByClass("Point",Point)}setTo(x,y){return this.x=x,this.y=y,this}reset(){return this.x=this.y=0,this}recover(){Pool.recover("Point",this.reset())}distance(x,y){return Math.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y))}toString(){return this.x+","+this.y}normalize(){var d=Math.sqrt(this.x*this.x+this.y*this.y);if(d>0){var id=1/d;this.x*=id,this.y*=id}}copy(point){return this.setTo(point.x,point.y)}}Point.TEMP=new Point,Point.EMPTY=new Point;class Rectangle{constructor(x=0,y=0,width=0,height=0){this.x=x,this.y=y,this.width=width,this.height=height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}setTo(x,y,width,height){return this.x=x,this.y=y,this.width=width,this.height=height,this}reset(){return this.x=this.y=this.width=this.height=0,this}recover(){this!=Rectangle.TEMP&&this!=Rectangle.EMPTY?Pool.recover("Rectangle",this.reset()):console.log("recover Temp or Empty:",this)}static create(){return Pool.getItemByClass("Rectangle",Rectangle)}copyFrom(source){return this.x=source.x,this.y=source.y,this.width=source.width,this.height=source.height,this}contains(x,y){return!(this.width<=0||this.height<=0)&&(x>=this.x&&x<this.right&&y>=this.y&&y<this.bottom)}intersects(rect){return!(rect.x>this.x+this.width||rect.x+rect.width<this.x||rect.y>this.y+this.height||rect.y+rect.height<this.y)}intersection(rect,out=null){return this.intersects(rect)?(out||(out=new Rectangle),out.x=Math.max(this.x,rect.x),out.y=Math.max(this.y,rect.y),out.width=Math.min(this.right,rect.right)-out.x,out.height=Math.min(this.bottom,rect.bottom)-out.y,out):null}union(source,out=null){return out||(out=new Rectangle),this.clone(out),source.width<=0||source.height<=0?out:(out.addPoint(source.x,source.y),out.addPoint(source.right,source.bottom),this)}clone(out=null){return out||(out=new Rectangle),out.x=this.x,out.y=this.y,out.width=this.width,out.height=this.height,out}toString(){return this.x+","+this.y+","+this.width+","+this.height}equals(rect){return!(!rect||rect.x!==this.x||rect.y!==this.y||rect.width!==this.width||rect.height!==this.height)}addPoint(x,y){return this.x>x&&(this.width+=this.x-x,this.x=x),this.y>y&&(this.height+=this.y-y,this.y=y),this.width<x-this.x&&(this.width=x-this.x),this.height<y-this.y&&(this.height=y-this.y),this}_getBoundPoints(){var rst=Rectangle._temB;return rst.length=0,0==this.width||0==this.height?rst:(rst.push(this.x,this.y,this.x+this.width,this.y,this.x,this.y+this.height,this.x+this.width,this.y+this.height),rst)}static _getBoundPointS(x,y,width,height){var rst=Rectangle._temA;return rst.length=0,0==width||0==height?rst:(rst.push(x,y,x+width,y,x,y+height,x+width,y+height),rst)}static _getWrapRec(pointList,rst=null){if(!pointList||pointList.length<1)return rst?rst.setTo(0,0,0,0):Rectangle.TEMP.setTo(0,0,0,0);rst=rst||Rectangle.create();var i,minX,maxX,minY,maxY,len=pointList.length,tPoint=Point.TEMP;for(maxX=maxY=-(minX=minY=99999),i=0;i<len;i+=2)tPoint.x=pointList[i],tPoint.y=pointList[i+1],minX=minX<tPoint.x?minX:tPoint.x,minY=minY<tPoint.y?minY:tPoint.y,maxX=maxX>tPoint.x?maxX:tPoint.x,maxY=maxY>tPoint.y?maxY:tPoint.y;return rst.setTo(minX,minY,maxX-minX,maxY-minY)}isEmpty(){return this.width<=0||this.height<=0}}Rectangle.EMPTY=new Rectangle,Rectangle.TEMP=new Rectangle,Rectangle._temB=[],Rectangle._temA=[];class LayaGL{}LayaGL.ARRAY_BUFFER_TYPE_DATA=0,LayaGL.ARRAY_BUFFER_TYPE_CMD=1,LayaGL.ARRAY_BUFFER_REF_REFERENCE=0,LayaGL.ARRAY_BUFFER_REF_COPY=1,LayaGL.UPLOAD_SHADER_UNIFORM_TYPE_ID=0,LayaGL.UPLOAD_SHADER_UNIFORM_TYPE_DATA=1;class Handler{constructor(caller=null,method=null,args=null,once=!1){this.once=!1,this._id=0,this.setTo(caller,method,args,once)}setTo(caller,method,args,once){return this._id=Handler._gid++,this.caller=caller,this.method=method,this.args=args,this.once=once,this}run(){if(null==this.method)return null;var id=this._id,result=this.method.apply(this.caller,this.args);return this._id===id&&this.once&&this.recover(),result}runWith(data){if(null==this.method)return null;var id=this._id;if(null==data)var result=this.method.apply(this.caller,this.args);else result=this.args||data.unshift?this.args?this.method.apply(this.caller,this.args.concat(data)):this.method.apply(this.caller,data):this.method.call(this.caller,data);return this._id===id&&this.once&&this.recover(),result}clear(){return this.caller=null,this.method=null,this.args=null,this}recover(){this._id>0&&(this._id=0,Handler._pool.push(this.clear()))}static create(caller,method,args=null,once=!0){return Handler._pool.length?Handler._pool.pop().setTo(caller,method,args,once):new Handler(caller,method,args,once)}}Handler._pool=[],Handler._gid=1;class EventDispatcher{hasListener(type){return!!(this._events&&this._events[type])}event(type,data=null){if(!this._events||!this._events[type])return!1;var listeners=this._events[type];if(listeners.run)listeners.once&&delete this._events[type],null!=data?listeners.runWith(data):listeners.run();else{for(var i=0,n=listeners.length;i<n;i++){var listener=listeners[i];listener&&(null!=data?listener.runWith(data):listener.run()),listener&&!listener.once||(listeners.splice(i,1),i--,n--)}0===listeners.length&&this._events&&delete this._events[type]}return!0}on(type,caller,listener,args=null){return this._createListener(type,caller,listener,args,!1)}once(type,caller,listener,args=null){return this._createListener(type,caller,listener,args,!0)}_createListener(type,caller,listener,args,once,offBefore=!0){offBefore&&this.off(type,caller,listener,once);var handler=EventHandler.create(caller||this,listener,args,once);this._events||(this._events={});var events=this._events;return events[type]?events[type].run?events[type]=[events[type],handler]:events[type].push(handler):events[type]=handler,this}off(type,caller,listener,onceOnly=!1){if(!this._events||!this._events[type])return this;var listeners=this._events[type];if(null!=listeners)if(listeners.run)caller&&listeners.caller!==caller||null!=listener&&listeners.method!==listener||onceOnly&&!listeners.once||(delete this._events[type],listeners.recover());else{for(var count=0,i=0,n=listeners.length;i<n;i++){var item=listeners[i];item?!item||caller&&item.caller!==caller||null!=listener&&item.method!==listener||onceOnly&&!item.once||(count++,listeners[i]=null,item.recover()):count++}count===n&&delete this._events[type]}return this}offAll(type=null){var events=this._events;if(!events)return this;if(type)this._recoverHandlers(events[type]),delete events[type];else{for(var name in events)this._recoverHandlers(events[name]);this._events=null}return this}offAllCaller(caller){if(caller&&this._events)for(var name in this._events)this.off(name,caller,null);return this}_recoverHandlers(arr){if(arr)if(arr.run)arr.recover();else for(var i=arr.length-1;i>-1;i--)arr[i]&&(arr[i].recover(),arr[i]=null)}isMouseEvent(type){return EventDispatcher.MOUSE_EVENTS[type]||!1}}EventDispatcher.MOUSE_EVENTS={rightmousedown:!0,rightmouseup:!0,rightclick:!0,mousedown:!0,mouseup:!0,mousemove:!0,mouseover:!0,mouseout:!0,click:!0,doubleclick:!0};class EventHandler extends Handler{constructor(caller,method,args,once){super(caller,method,args,once)}recover(){this._id>0&&(this._id=0,EventHandler._pool.push(this.clear()))}static create(caller,method,args=null,once=!0){return EventHandler._pool.length?EventHandler._pool.pop().setTo(caller,method,args,once):new EventHandler(caller,method,args,once)}}EventHandler._pool=[];class URL{constructor(url){this._url=URL.formatURL(url),this._path=URL.getPath(url)}get url(){return this._url}get path(){return this._path}static set basePath(value){URL._basePath=ILaya.Laya._getUrlPath(),URL._basePath=URL.formatURL(value)}static get basePath(){return URL._basePath}static formatURL(url){if(!url)return"null path";if(url.indexOf(":")>0)return url;if(null!=URL.customFormat&&(url=URL.customFormat(url)),url.indexOf(":")>0)return url;var char1=url.charAt(0);if("."===char1)return URL._formatRelativePath(URL._basePath+url);if("~"===char1)return URL.rootPath+url.substring(1);if("d"===char1){if(0===url.indexOf("data:image"))return url}else if("/"===char1)return url;return URL._basePath+url}static _formatRelativePath(value){for(var parts=value.split("/"),i=0,len=parts.length;i<len;i++)".."==parts[i]&&(parts.splice(i-1,2),i-=2);return parts.join("/")}static getPath(url){var ofs=url.lastIndexOf("/");return ofs>0?url.substr(0,ofs+1):""}static getFileName(url){var ofs=url.lastIndexOf("/");return ofs>0?url.substr(ofs+1):url}static getAdptedFilePath(url){if(!URL.exportSceneToJson||!url)return url;var i,len,tArr;for(len=URL._adpteTypeList.length,i=0;i<len;i++)tArr=URL._adpteTypeList[i],url=url.replace(tArr[0],tArr[1]);return url}}URL.version={},URL.exportSceneToJson=!1,URL._basePath="",URL.rootPath="",URL.customFormat=function(url){var newUrl=URL.version[url];return!window.conch&&newUrl&&(url+="?v="+newUrl),url},URL._adpteTypeList=[[".scene3d",".json"],[".scene",".json"],[".taa",".json"],[".prefab",".json"]];class Resource extends EventDispatcher{constructor(){super(),this._id=0,this._url=null,this._cpuMemory=0,this._gpuMemory=0,this._destroyed=!1,this._referenceCount=0,this.lock=!1,this.name=null,this._id=++Resource._uniqueIDCounter,this._destroyed=!1,this._referenceCount=0,Resource._idResourcesMap[this.id]=this,this.lock=!1}static get cpuMemory(){return Resource._cpuMemory}static get gpuMemory(){return Resource._gpuMemory}static _addCPUMemory(size){Resource._cpuMemory+=size}static _addGPUMemory(size){Resource._gpuMemory+=size}static _addMemory(cpuSize,gpuSize){Resource._cpuMemory+=cpuSize,Resource._gpuMemory+=gpuSize}static getResourceByID(id){return Resource._idResourcesMap[id]}static getResourceByURL(url,index=0){return Resource._urlResourcesMap[url][index]}static destroyUnusedResources(){for(var k in Resource._idResourcesMap){var res=Resource._idResourcesMap[k];res.lock||0!==res._referenceCount||res.destroy()}}get id(){return this._id}get url(){return this._url}get cpuMemory(){return this._cpuMemory}get gpuMemory(){return this._gpuMemory}get destroyed(){return this._destroyed}get referenceCount(){return this._referenceCount}_setCPUMemory(value){var offsetValue=value-this._cpuMemory;this._cpuMemory=value,Resource._addCPUMemory(offsetValue)}_setGPUMemory(value){var offsetValue=value-this._gpuMemory;this._gpuMemory=value,Resource._addGPUMemory(offsetValue)}_setCreateURL(url){var resList;(url=URL.formatURL(url),this._url!==url)&&(this._url&&((resList=Resource._urlResourcesMap[this._url]).splice(resList.indexOf(this),1),0===resList.length&&delete Resource._urlResourcesMap[this._url]),url&&((resList=Resource._urlResourcesMap[url])||(Resource._urlResourcesMap[url]=resList=[]),resList.push(this)),this._url=url)}_addReference(count=1){this._referenceCount+=count}_removeReference(count=1){this._referenceCount-=count}_clearReference(){this._referenceCount=0}_recoverResource(){}_disposeResource(){}_activeResource(){}destroy(){var resList;this._destroyed||(this._destroyed=!0,this.lock=!1,this._disposeResource(),delete Resource._idResourcesMap[this.id],this._url&&((resList=Resource._urlResourcesMap[this._url])&&(resList.splice(resList.indexOf(this),1),0===resList.length&&delete Resource._urlResourcesMap[this._url]),ILaya.Loader.getRes(this._url)==this&&delete ILaya.Loader.loadedMap[this._url]))}}Resource._uniqueIDCounter=0,Resource._idResourcesMap={},Resource._urlResourcesMap={},Resource._cpuMemory=0,Resource._gpuMemory=0;class Bitmap extends Resource{get width(){return this._width}set width(width){this._width=width}get height(){return this._height}set height(height){this._height=height}constructor(){super(),this._width=-1,this._height=-1}_getSource(){throw"Bitmap: must override it."}}class WebGLContext{static __init__(){var gl=LayaGL.instance;WebGLContext._depthFunc=gl.LESS,WebGLContext._sFactor=gl.ONE,WebGLContext._dFactor=gl.ZERO,WebGLContext._srcAlpha=gl.ONE,WebGLContext._dstAlpha=gl.ZERO,WebGLContext._activedTextureID=gl.TEXTURE0,WebGLContext._glTextureIDs=[gl.TEXTURE0,gl.TEXTURE1,gl.TEXTURE2,gl.TEXTURE3,gl.TEXTURE4,gl.TEXTURE5,gl.TEXTURE6,gl.TEXTURE7]}static useProgram(gl,program){return WebGLContext._useProgram!==program&&(gl.useProgram(program),WebGLContext._useProgram=program,!0)}static setDepthTest(gl,value){value!==WebGLContext._depthTest&&(WebGLContext._depthTest=value,value?gl.enable(gl.DEPTH_TEST):gl.disable(gl.DEPTH_TEST))}static setDepthMask(gl,value){value!==WebGLContext._depthMask&&(WebGLContext._depthMask=value,gl.depthMask(value))}static setDepthFunc(gl,value){value!==WebGLContext._depthFunc&&(WebGLContext._depthFunc=value,gl.depthFunc(value))}static setBlend(gl,value){value!==WebGLContext._blend&&(WebGLContext._blend=value,value?gl.enable(gl.BLEND):gl.disable(gl.BLEND))}static setBlendFunc(gl,sFactor,dFactor){(sFactor!==WebGLContext._sFactor||dFactor!==WebGLContext._dFactor)&&(WebGLContext._sFactor=WebGLContext._srcAlpha=sFactor,WebGLContext._dFactor=WebGLContext._dstAlpha=dFactor,gl.blendFunc(sFactor,dFactor))}static setBlendFuncSeperate(gl,srcRGB,dstRGB,srcAlpha,dstAlpha){srcRGB===WebGLContext._sFactor&&dstRGB===WebGLContext._dFactor&&srcAlpha===WebGLContext._srcAlpha&&dstAlpha===WebGLContext._dstAlpha||(WebGLContext._sFactor=srcRGB,WebGLContext._dFactor=dstRGB,WebGLContext._srcAlpha=srcAlpha,WebGLContext._dstAlpha=dstAlpha,gl.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha))}static setCullFace(gl,value){value!==WebGLContext._cullFace&&(WebGLContext._cullFace=value,value?gl.enable(gl.CULL_FACE):gl.disable(gl.CULL_FACE))}static setFrontFace(gl,value){value!==WebGLContext._frontFace&&(WebGLContext._frontFace=value,gl.frontFace(value))}static activeTexture(gl,textureID){WebGLContext._activedTextureID!==textureID&&(gl.activeTexture(textureID),WebGLContext._activedTextureID=textureID)}static bindTexture(gl,target,texture){WebGLContext._activeTextures[WebGLContext._activedTextureID-gl.TEXTURE0]!==texture&&(gl.bindTexture(target,texture),WebGLContext._activeTextures[WebGLContext._activedTextureID-gl.TEXTURE0]=texture)}static __init_native(){if(ILaya.Render.supportWebGLPlusRendering){var webGLContext=WebGLContext;webGLContext.activeTexture=webGLContext.activeTextureForNative,webGLContext.bindTexture=webGLContext.bindTextureForNative}}static useProgramForNative(gl,program){return gl.useProgram(program),!0}static setDepthTestForNative(gl,value){value?gl.enable(gl.DEPTH_TEST):gl.disable(gl.DEPTH_TEST)}static setDepthMaskForNative(gl,value){gl.depthMask(value)}static setDepthFuncForNative(gl,value){gl.depthFunc(value)}static setBlendForNative(gl,value){value?gl.enable(gl.BLEND):gl.disable(gl.BLEND)}static setBlendFuncForNative(gl,sFactor,dFactor){gl.blendFunc(sFactor,dFactor)}static setCullFaceForNative(gl,value){value?gl.enable(gl.CULL_FACE):gl.disable(gl.CULL_FACE)}static setFrontFaceForNative(gl,value){gl.frontFace(value)}static activeTextureForNative(gl,textureID){gl.activeTexture(textureID)}static bindTextureForNative(gl,target,texture){gl.bindTexture(target,texture)}static bindVertexArrayForNative(gl,vertexArray){gl.bindVertexArray(vertexArray)}}WebGLContext.mainContext=null,WebGLContext._activeTextures=new Array(8),WebGLContext._useProgram=null,WebGLContext._depthTest=!0,WebGLContext._depthMask=!0,WebGLContext._blend=!1,WebGLContext._cullFace=!1;class BaseTexture extends Bitmap{constructor(format,mipMap){super(),this._wrapModeU=BaseTexture.WARPMODE_REPEAT,this._wrapModeV=BaseTexture.WARPMODE_REPEAT,this._filterMode=BaseTexture.FILTERMODE_BILINEAR,this._readyed=!1,this._width=-1,this._height=-1,this._format=format,this._mipmap=mipMap,this._anisoLevel=1,this._glTexture=LayaGL.instance.createTexture()}get mipmap(){return this._mipmap}get format(){return this._format}get wrapModeU(){return this._wrapModeU}set wrapModeU(value){this._wrapModeU!==value&&(this._wrapModeU=value,-1!==this._width&&this._setWarpMode(LayaGL.instance.TEXTURE_WRAP_S,value))}get wrapModeV(){return this._wrapModeV}set wrapModeV(value){this._wrapModeV!==value&&(this._wrapModeV=value,-1!==this._height&&this._setWarpMode(LayaGL.instance.TEXTURE_WRAP_T,value))}get filterMode(){return this._filterMode}set filterMode(value){value!==this._filterMode&&(this._filterMode=value,-1!==this._width&&-1!==this._height&&this._setFilterMode(value))}get anisoLevel(){return this._anisoLevel}set anisoLevel(value){value!==this._anisoLevel&&(this._anisoLevel=Math.max(1,Math.min(16,value)),-1!==this._width&&-1!==this._height&&this._setAnisotropy(value))}get mipmapCount(){return this._mipmapCount}get defaulteTexture(){throw"BaseTexture:must override it."}_getFormatByteCount(){switch(this._format){case BaseTexture.FORMAT_R8G8B8:return 3;case BaseTexture.FORMAT_R8G8B8A8:return 4;case BaseTexture.FORMAT_ALPHA8:return 1;default:throw"Texture2D: unknown format."}}_isPot(size){return 0==(size&size-1)}_getGLFormat(){var glFormat,gl=LayaGL.instance,gpu=LayaGL.layaGPUInstance;switch(this._format){case BaseTexture.FORMAT_R8G8B8:glFormat=gl.RGB;break;case BaseTexture.FORMAT_R8G8B8A8:glFormat=gl.RGBA;break;case BaseTexture.FORMAT_ALPHA8:glFormat=gl.ALPHA;break;case BaseTexture.FORMAT_DXT1:if(!gpu._compressedTextureS3tc)throw"BaseTexture: not support DXT1 format.";glFormat=gpu._compressedTextureS3tc.COMPRESSED_RGB_S3TC_DXT1_EXT;break;case BaseTexture.FORMAT_DXT5:if(!gpu._compressedTextureS3tc)throw"BaseTexture: not support DXT5 format.";glFormat=gpu._compressedTextureS3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT;break;case BaseTexture.FORMAT_ETC1RGB:if(!gpu._compressedTextureEtc1)throw"BaseTexture: not support ETC1RGB format.";glFormat=gpu._compressedTextureEtc1.COMPRESSED_RGB_ETC1_WEBGL;break;case BaseTexture.FORMAT_PVRTCRGB_2BPPV:if(!gpu._compressedTexturePvrtc)throw"BaseTexture: not support PVRTCRGB_2BPPV format.";glFormat=gpu._compressedTexturePvrtc.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;break;case BaseTexture.FORMAT_PVRTCRGBA_2BPPV:if(!gpu._compressedTexturePvrtc)throw"BaseTexture: not support PVRTCRGBA_2BPPV format.";glFormat=gpu._compressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;break;case BaseTexture.FORMAT_PVRTCRGB_4BPPV:if(!gpu._compressedTexturePvrtc)throw"BaseTexture: not support PVRTCRGB_4BPPV format.";glFormat=gpu._compressedTexturePvrtc.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;break;case BaseTexture.FORMAT_PVRTCRGBA_4BPPV:if(!gpu._compressedTexturePvrtc)throw"BaseTexture: not support PVRTCRGBA_4BPPV format.";glFormat=gpu._compressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;break;default:throw"BaseTexture: unknown texture format."}return glFormat}_setFilterMode(value){var gl=LayaGL.instance;switch(WebGLContext.bindTexture(gl,this._glTextureType,this._glTexture),value){case BaseTexture.FILTERMODE_POINT:this._mipmap?gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.NEAREST_MIPMAP_NEAREST):gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(this._glTextureType,gl.TEXTURE_MAG_FILTER,gl.NEAREST);break;case BaseTexture.FILTERMODE_BILINEAR:this._mipmap?gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.LINEAR_MIPMAP_NEAREST):gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(this._glTextureType,gl.TEXTURE_MAG_FILTER,gl.LINEAR);break;case BaseTexture.FILTERMODE_TRILINEAR:this._mipmap?gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.LINEAR_MIPMAP_LINEAR):gl.texParameteri(this._glTextureType,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(this._glTextureType,gl.TEXTURE_MAG_FILTER,gl.LINEAR);break;default:throw new Error("BaseTexture:unknown filterMode value.")}}_setWarpMode(orientation,mode){var gl=LayaGL.instance;if(WebGLContext.bindTexture(gl,this._glTextureType,this._glTexture),this._isPot(this._width)&&this._isPot(this._height))switch(mode){case BaseTexture.WARPMODE_REPEAT:gl.texParameteri(this._glTextureType,orientation,gl.REPEAT);break;case BaseTexture.WARPMODE_CLAMP:gl.texParameteri(this._glTextureType,orientation,gl.CLAMP_TO_EDGE)}else gl.texParameteri(this._glTextureType,orientation,gl.CLAMP_TO_EDGE)}_setAnisotropy(value){var anisotropic=LayaGL.layaGPUInstance._extTextureFilterAnisotropic;if(anisotropic){value=Math.max(value,1);var gl=LayaGL.instance;WebGLContext.bindTexture(gl,this._glTextureType,this._glTexture),value=Math.min(gl.getParameter(anisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT),value),gl.texParameterf(this._glTextureType,anisotropic.TEXTURE_MAX_ANISOTROPY_EXT,value)}}_disposeResource(){this._glTexture&&(LayaGL.instance.deleteTexture(this._glTexture),this._glTexture=null,this._setGPUMemory(0))}_getSource(){return this._readyed?this._glTexture:null}generateMipmap(){this._isPot(this.width)&&this._isPot(this.height)&&LayaGL.instance.generateMipmap(this._glTextureType)}}BaseTexture.WARPMODE_REPEAT=0,BaseTexture.WARPMODE_CLAMP=1,BaseTexture.FILTERMODE_POINT=0,BaseTexture.FILTERMODE_BILINEAR=1,BaseTexture.FILTERMODE_TRILINEAR=2,BaseTexture.FORMAT_R8G8B8=0,BaseTexture.FORMAT_R8G8B8A8=1,BaseTexture.FORMAT_ALPHA8=2,BaseTexture.FORMAT_DXT1=3,BaseTexture.FORMAT_DXT5=4,BaseTexture.FORMAT_ETC1RGB=5,BaseTexture.FORMAT_PVRTCRGB_2BPPV=9,BaseTexture.FORMAT_PVRTCRGBA_2BPPV=10,BaseTexture.FORMAT_PVRTCRGB_4BPPV=11,BaseTexture.FORMAT_PVRTCRGBA_4BPPV=12,BaseTexture.RENDERTEXTURE_FORMAT_RGBA_HALF_FLOAT=14,BaseTexture.FORMAT_DEPTH_16=0,BaseTexture.FORMAT_STENCIL_8=1,BaseTexture.FORMAT_DEPTHSTENCIL_16_8=2,BaseTexture.FORMAT_DEPTHSTENCIL_NONE=3;class Texture2D extends BaseTexture{constructor(width=0,height=0,format=BaseTexture.FORMAT_R8G8B8A8,mipmap=!0,canRead=!1){super(format,mipmap);var gl=LayaGL.instance;if(this._glTextureType=gl.TEXTURE_2D,this._width=width,this._height=height,this._canRead=canRead,this._setWarpMode(gl.TEXTURE_WRAP_S,this._wrapModeU),this._setWarpMode(gl.TEXTURE_WRAP_T,this._wrapModeV),this._setFilterMode(this._filterMode),this._setAnisotropy(this._anisoLevel),this._mipmap){this._mipmapCount=Math.max(Math.ceil(Math.log2(width))+1,Math.ceil(Math.log2(height))+1);for(var i=0;i<this._mipmapCount;i++)this._setPixels(null,i,Math.max(width>>i,1),Math.max(height>>i,1));this._setGPUMemory(width*height*4*(1+1/3))}else this._mipmapCount=1,this._setGPUMemory(width*height*4)}static __init__(){var pixels=new Uint8Array(3);pixels[0]=128,pixels[1]=128,pixels[2]=128,Texture2D.grayTexture=new Texture2D(1,1,BaseTexture.FORMAT_R8G8B8,!1,!1),Texture2D.grayTexture.setPixels(pixels),Texture2D.grayTexture.lock=!0,pixels[0]=255,pixels[1]=255,pixels[2]=255,Texture2D.whiteTexture=new Texture2D(1,1,BaseTexture.FORMAT_R8G8B8,!1,!1),Texture2D.whiteTexture.setPixels(pixels),Texture2D.whiteTexture.lock=!0,pixels[0]=0,pixels[1]=0,pixels[2]=0,Texture2D.blackTexture=new Texture2D(1,1,BaseTexture.FORMAT_R8G8B8,!1,!1),Texture2D.blackTexture.setPixels(pixels),Texture2D.blackTexture.lock=!0}static _parse(data,propertyParams=null,constructParams=null){var texture=constructParams?new Texture2D(constructParams[0],constructParams[1],constructParams[2],constructParams[3],constructParams[4]):new Texture2D(0,0);switch(propertyParams&&(texture.wrapModeU=propertyParams.wrapModeU,texture.wrapModeV=propertyParams.wrapModeV,texture.filterMode=propertyParams.filterMode,texture.anisoLevel=propertyParams.anisoLevel),texture._format){case BaseTexture.FORMAT_R8G8B8:case BaseTexture.FORMAT_R8G8B8A8:texture.loadImageSource(data);break;case BaseTexture.FORMAT_DXT1:case BaseTexture.FORMAT_DXT5:case BaseTexture.FORMAT_ETC1RGB:case BaseTexture.FORMAT_PVRTCRGB_2BPPV:case BaseTexture.FORMAT_PVRTCRGBA_2BPPV:case BaseTexture.FORMAT_PVRTCRGB_4BPPV:case BaseTexture.FORMAT_PVRTCRGBA_4BPPV:texture.setCompressData(data);break;default:throw"Texture2D:unkonwn format."}return texture}static load(url,complete){ILaya.loader.create(url,complete,null,ILaya.Loader.TEXTURE2D)}get defaulteTexture(){return Texture2D.grayTexture}_setPixels(pixels,miplevel,width,height){var gl=LayaGL.instance,textureType=this._glTextureType,glFormat=this._getGLFormat();WebGLContext.bindTexture(gl,textureType,this._glTexture),this.format===BaseTexture.FORMAT_R8G8B8?(gl.pixelStorei(gl.UNPACK_ALIGNMENT,1),gl.texImage2D(textureType,miplevel,glFormat,width,height,0,glFormat,gl.UNSIGNED_BYTE,pixels),gl.pixelStorei(gl.UNPACK_ALIGNMENT,4)):gl.texImage2D(textureType,miplevel,glFormat,width,height,0,glFormat,gl.UNSIGNED_BYTE,pixels)}_calcualatesCompressedDataSize(format,width,height){switch(format){case BaseTexture.FORMAT_DXT1:case BaseTexture.FORMAT_ETC1RGB:return(width+3>>2)*(height+3>>2)*8;case BaseTexture.FORMAT_DXT5:return(width+3>>2)*(height+3>>2)*16;case BaseTexture.FORMAT_PVRTCRGB_4BPPV:case BaseTexture.FORMAT_PVRTCRGBA_4BPPV:return Math.floor((Math.max(width,8)*Math.max(height,8)*4+7)/8);case BaseTexture.FORMAT_PVRTCRGB_2BPPV:case BaseTexture.FORMAT_PVRTCRGBA_2BPPV:return Math.floor((Math.max(width,16)*Math.max(height,8)*2+7)/8);default:return 0}}_pharseDDS(arrayBuffer){var header=new Int32Array(arrayBuffer,0,31);if(542327876!=header[0])throw"Invalid magic number in DDS header";if(!(4&header[20]))throw"Unsupported format, must contain a FourCC code";var compressedFormat=header[21];switch(this._format){case BaseTexture.FORMAT_DXT1:if(827611204!==compressedFormat)throw"the FourCC code is not same with texture format.";break;case BaseTexture.FORMAT_DXT5:if(894720068!==compressedFormat)throw"the FourCC code is not same with texture format.";break;default:throw"unknown texture format."}var mipLevels=1;if(131072&header[2]){if(mipLevels=Math.max(1,header[7]),!this._mipmap)throw"the mipmap is not same with Texture2D."}else if(this._mipmap)throw"the mipmap is not same with Texture2D.";var width=header[4],height=header[3];this._width=width,this._height=height;var dataOffset=header[1]+4;this._upLoadCompressedTexImage2D(arrayBuffer,width,height,mipLevels,dataOffset,0)}_pharseKTX(arrayBuffer){var id=new Uint8Array(arrayBuffer,0,12);if(171!=id[0]||75!=id[1]||84!=id[2]||88!=id[3]||32!=id[4]||49!=id[5]||49!=id[6]||187!=id[7]||13!=id[8]||10!=id[9]||26!=id[10]||10!=id[11])throw"Invalid fileIdentifier in KTX header";var header=new Int32Array(id.buffer,id.length,13);switch(header[4]){case LayaGL.layaGPUInstance._compressedTextureEtc1.COMPRESSED_RGB_ETC1_WEBGL:this._format=BaseTexture.FORMAT_ETC1RGB;break;default:throw"unknown texture format."}var mipLevels=header[11],width=header[6],height=header[7];this._width=width,this._height=height;var dataOffset=64+header[12];this._upLoadCompressedTexImage2D(arrayBuffer,width,height,mipLevels,dataOffset,4)}_pharsePVR(arrayBuffer){var header=new Int32Array(arrayBuffer,0,13);if(55727696!=header[0])throw"Invalid magic number in PVR header";switch(header[2]){case 0:this._format=BaseTexture.FORMAT_PVRTCRGB_2BPPV;break;case 2:this._format=BaseTexture.FORMAT_PVRTCRGB_4BPPV;break;case 1:this._format=BaseTexture.FORMAT_PVRTCRGBA_2BPPV;break;case 3:this._format=BaseTexture.FORMAT_PVRTCRGBA_4BPPV;break;default:throw"Texture2D:unknown PVR format."}var mipLevels=header[11],width=header[7],height=header[6];this._width=width,this._height=height;var dataOffset=header[12]+52;this._upLoadCompressedTexImage2D(arrayBuffer,width,height,mipLevels,dataOffset,0)}_upLoadCompressedTexImage2D(data,width,height,miplevelCount,dataOffset,imageSizeOffset){var gl=LayaGL.instance,textureType=this._glTextureType;WebGLContext.bindTexture(gl,textureType,this._glTexture);for(var glFormat=this._getGLFormat(),offset=dataOffset,i=0;i<miplevelCount;i++){offset+=imageSizeOffset;var mipDataSize=this._calcualatesCompressedDataSize(this._format,width,height),mipData=new Uint8Array(data,offset,mipDataSize);gl.compressedTexImage2D(textureType,i,glFormat,width,height,0,mipData),width=Math.max(width>>1,1),height=Math.max(height>>1,1),offset+=mipDataSize}var memory=offset;this._setGPUMemory(memory),this._readyed=!0,this._activeResource()}loadImageSource(source,premultiplyAlpha=!1){var gl=LayaGL.instance,width=source.width,height=source.height;this._width=width,this._height=height,this._isPot(width)&&this._isPot(height)||(this._mipmap=!1),this._setWarpMode(gl.TEXTURE_WRAP_S,this._wrapModeU),this._setWarpMode(gl.TEXTURE_WRAP_T,this._wrapModeV),this._setFilterMode(this._filterMode),WebGLContext.bindTexture(gl,this._glTextureType,this._glTexture);var glFormat=this._getGLFormat();ILaya.Render.isConchApp?(source.setPremultiplyAlpha&&source.setPremultiplyAlpha(premultiplyAlpha),gl.texImage2D(this._glTextureType,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,source)):(premultiplyAlpha&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),gl.texImage2D(this._glTextureType,0,glFormat,glFormat,gl.UNSIGNED_BYTE,source),premultiplyAlpha&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1)),this._mipmap?(gl.generateMipmap(this._glTextureType),this._setGPUMemory(width*height*4*(1+1/3))):this._setGPUMemory(width*height*4),this._canRead&&(ILaya.Render.isConchApp?this._pixels=new Uint8Array(source._nativeObj.getImageData(0,0,width,height)):(ILaya.Browser.canvas.size(width,height),ILaya.Browser.canvas.clear(),ILaya.Browser.context.drawImage(source,0,0,width,height),this._pixels=new Uint8Array(ILaya.Browser.context.getImageData(0,0,width,height).data.buffer))),this._readyed=!0,this._activeResource()}setPixels(pixels,miplevel=0){if(!pixels)throw"Texture2D:pixels can't be null.";var width=Math.max(this._width>>miplevel,1),height=Math.max(this._height>>miplevel,1),pixelsCount=width*height*this._getFormatByteCount();if(pixels.length<pixelsCount)throw"Texture2D:pixels length should at least "+pixelsCount+".";this._setPixels(pixels,miplevel,width,height),this._canRead&&(this._pixels=pixels),this._readyed=!0,this._activeResource()}setSubPixels(x,y,width,height,pixels,miplevel=0){if(!pixels)throw"Texture2D:pixels can't be null.";var gl=LayaGL.instance,textureType=this._glTextureType;WebGLContext.bindTexture(gl,textureType,this._glTexture);var glFormat=this._getGLFormat();this._format===BaseTexture.FORMAT_R8G8B8?(gl.pixelStorei(gl.UNPACK_ALIGNMENT,1),gl.texSubImage2D(textureType,miplevel,x,y,width,height,glFormat,gl.UNSIGNED_BYTE,pixels),gl.pixelStorei(gl.UNPACK_ALIGNMENT,4)):gl.texSubImage2D(textureType,miplevel,x,y,width,height,glFormat,gl.UNSIGNED_BYTE,pixels),this._readyed=!0,this._activeResource()}setCompressData(data){switch(this._format){case BaseTexture.FORMAT_DXT1:case BaseTexture.FORMAT_DXT5:this._pharseDDS(data);break;case BaseTexture.FORMAT_ETC1RGB:this._pharseKTX(data);break;case BaseTexture.FORMAT_PVRTCRGB_2BPPV:case BaseTexture.FORMAT_PVRTCRGBA_2BPPV:case BaseTexture.FORMAT_PVRTCRGB_4BPPV:case BaseTexture.FORMAT_PVRTCRGBA_4BPPV:this._pharsePVR(data);break;default:throw"Texture2D:unkonwn format."}}_recoverResource(){}getPixels(){if(this._canRead)return this._pixels;throw new Error("Texture2D: must set texture canRead is true.")}}Texture2D.TEXTURE2D="TEXTURE2D",Texture2D.grayTexture=null,Texture2D.whiteTexture=null,Texture2D.blackTexture=null;class BaseShader extends Resource{constructor(){super()}}class RenderState2D{static mat2MatArray(mat,matArray){var m=mat,m4=matArray;return m4[0]=m.a,m4[1]=m.b,m4[2]=RenderState2D.EMPTYMAT4_ARRAY[2],m4[3]=RenderState2D.EMPTYMAT4_ARRAY[3],m4[4]=m.c,m4[5]=m.d,m4[6]=RenderState2D.EMPTYMAT4_ARRAY[6],m4[7]=RenderState2D.EMPTYMAT4_ARRAY[7],m4[8]=RenderState2D.EMPTYMAT4_ARRAY[8],m4[9]=RenderState2D.EMPTYMAT4_ARRAY[9],m4[10]=RenderState2D.EMPTYMAT4_ARRAY[10],m4[11]=RenderState2D.EMPTYMAT4_ARRAY[11],m4[12]=m.tx,m4[13]=m.ty,m4[14]=RenderState2D.EMPTYMAT4_ARRAY[14],m4[15]=RenderState2D.EMPTYMAT4_ARRAY[15],matArray}static restoreTempArray(){RenderState2D.TEMPMAT4_ARRAY[0]=1,RenderState2D.TEMPMAT4_ARRAY[1]=0,RenderState2D.TEMPMAT4_ARRAY[4]=0,RenderState2D.TEMPMAT4_ARRAY[5]=1,RenderState2D.TEMPMAT4_ARRAY[12]=0,RenderState2D.TEMPMAT4_ARRAY[13]=0}static clear(){RenderState2D.worldScissorTest=!1,RenderState2D.worldAlpha=1}}RenderState2D._MAXSIZE=99999999,RenderState2D.EMPTYMAT4_ARRAY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],RenderState2D.TEMPMAT4_ARRAY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],RenderState2D.worldMatrix4=RenderState2D.TEMPMAT4_ARRAY,RenderState2D.worldMatrix=new Matrix,RenderState2D.matWVP=null,RenderState2D.worldAlpha=1,RenderState2D.worldScissorTest=!1,RenderState2D.width=0,RenderState2D.height=0;class RenderTexture2D extends BaseTexture{constructor(width,height,format=BaseTexture.FORMAT_R8G8B8,depthStencilFormat=BaseTexture.FORMAT_DEPTH_16){super(format,!1),this._mgrKey=0,this._glTextureType=LayaGL.instance.TEXTURE_2D,this._width=width,this._height=height,this._depthStencilFormat=depthStencilFormat,this._create(width,height),this.lock=!0}static get currentActive(){return RenderTexture2D._currentActive}get depthStencilFormat(){return this._depthStencilFormat}get defaulteTexture(){return Texture2D.grayTexture}getIsReady(){return!0}get sourceWidth(){return this._width}get sourceHeight(){return this._height}get offsetX(){return 0}get offsetY(){return 0}_create(width,height){var gl=LayaGL.instance;this._frameBuffer=gl.createFramebuffer(),WebGLContext.bindTexture(gl,this._glTextureType,this._glTexture);var glFormat=this._getGLFormat();if(gl.texImage2D(this._glTextureType,0,glFormat,width,height,0,glFormat,gl.UNSIGNED_BYTE,null),this._setGPUMemory(width*height*4),gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,this._glTexture,0),this._depthStencilFormat!==BaseTexture.FORMAT_DEPTHSTENCIL_NONE)switch(this._depthStencilBuffer=gl.createRenderbuffer(),gl.bindRenderbuffer(gl.RENDERBUFFER,this._depthStencilBuffer),this._depthStencilFormat){case BaseTexture.FORMAT_DEPTH_16:gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,width,height),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_ATTACHMENT,gl.RENDERBUFFER,this._depthStencilBuffer);break;case BaseTexture.FORMAT_STENCIL_8:gl.renderbufferStorage(gl.RENDERBUFFER,gl.STENCIL_INDEX8,width,height),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.STENCIL_ATTACHMENT,gl.RENDERBUFFER,this._depthStencilBuffer);break;case BaseTexture.FORMAT_DEPTHSTENCIL_16_8:gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_STENCIL,width,height),gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,this._depthStencilBuffer)}gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.bindRenderbuffer(gl.RENDERBUFFER,null),this._setWarpMode(gl.TEXTURE_WRAP_S,this._wrapModeU),this._setWarpMode(gl.TEXTURE_WRAP_T,this._wrapModeV),this._setFilterMode(this._filterMode),this._setAnisotropy(this._anisoLevel),this._readyed=!0,this._activeResource()}generateMipmap(){this._isPot(this.width)&&this._isPot(this.height)?(this._mipmap=!0,LayaGL.instance.generateMipmap(this._glTextureType),this._setFilterMode(this._filterMode),this._setGPUMemory(this.width*this.height*4*(1+1/3))):(this._mipmap=!1,this._setGPUMemory(this.width*this.height*4))}static pushRT(){RenderTexture2D.rtStack.push({rt:RenderTexture2D._currentActive,w:RenderState2D.width,h:RenderState2D.height})}static popRT(){var gl=LayaGL.instance,top=RenderTexture2D.rtStack.pop();top&&(RenderTexture2D._currentActive!=top.rt&&(LayaGL.instance.bindFramebuffer(gl.FRAMEBUFFER,top.rt?top.rt._frameBuffer:null),RenderTexture2D._currentActive=top.rt),gl.viewport(0,0,top.w,top.h),RenderState2D.width=top.w,RenderState2D.height=top.h)}start(){var gl=LayaGL.instance;LayaGL.instance.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer),this._lastRT=RenderTexture2D._currentActive,RenderTexture2D._currentActive=this,this._readyed=!0,gl.viewport(0,0,this._width,this._height),this._lastWidth=RenderState2D.width,this._lastHeight=RenderState2D.height,RenderState2D.width=this._width,RenderState2D.height=this._height,BaseShader.activeShader=null}end(){var gl=LayaGL.instance;gl.bindFramebuffer(gl.FRAMEBUFFER,null),RenderTexture2D._currentActive=null,this._readyed=!0}restore(){var gl=LayaGL.instance;this._lastRT!=RenderTexture2D._currentActive&&(LayaGL.instance.bindFramebuffer(gl.FRAMEBUFFER,this._lastRT?this._lastRT._frameBuffer:null),RenderTexture2D._currentActive=this._lastRT),this._readyed=!0,gl.viewport(0,0,this._lastWidth,this._lastHeight),RenderState2D.width=this._lastWidth,RenderState2D.height=this._lastHeight,BaseShader.activeShader=null}clear(r=0,g=0,b=0,a=1){var gl=LayaGL.instance;gl.clearColor(r,g,b,a);var clearFlag=gl.COLOR_BUFFER_BIT;switch(this._depthStencilFormat){case gl.DEPTH_COMPONENT16:clearFlag|=gl.DEPTH_BUFFER_BIT;break;case gl.STENCIL_INDEX8:clearFlag|=gl.STENCIL_BUFFER_BIT;break;case gl.DEPTH_STENCIL:clearFlag|=gl.DEPTH_BUFFER_BIT,clearFlag|=gl.STENCIL_BUFFER_BIT}gl.clear(clearFlag)}getData(x,y,width,height){if(ILaya.Render.isConchApp&&2==window.conchConfig.threadMode)throw"native 2 thread mode use getDataAsync";var gl=LayaGL.instance;if(gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer),!(gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE))return gl.bindFramebuffer(gl.FRAMEBUFFER,null),null;var pixels=new Uint8Array(this._width*this._height*4),glFormat=this._getGLFormat();return gl.readPixels(x,y,width,height,glFormat,gl.UNSIGNED_BYTE,pixels),gl.bindFramebuffer(gl.FRAMEBUFFER,null),pixels}getDataAsync(x,y,width,height,callBack){var gl=LayaGL.instance;gl.bindFramebuffer(gl.FRAMEBUFFER,this._frameBuffer),gl.readPixelsAsync(x,y,width,height,gl.RGBA,gl.UNSIGNED_BYTE,function(data){callBack(new Uint8Array(data))}),gl.bindFramebuffer(gl.FRAMEBUFFER,null)}recycle(){}_disposeResource(){if(this._frameBuffer){var gl=LayaGL.instance;gl.deleteTexture(this._glTexture),gl.deleteFramebuffer(this._frameBuffer),gl.deleteRenderbuffer(this._depthStencilBuffer),this._glTexture=null,this._frameBuffer=null,this._depthStencilBuffer=null,this._setGPUMemory(0)}}}RenderTexture2D.rtStack=[],RenderTexture2D.defuv=[0,0,1,0,1,1,0,1],RenderTexture2D.flipyuv=[0,1,1,1,1,0,0,0];class WebGLRTMgr{static getRT(w,h){return h|=0,(w|=0)>=1e4&&console.error("getRT error! w too big"),new RenderTexture2D(w,h,BaseTexture.FORMAT_R8G8B8A8,-1)}static releaseRT(rt){rt._disposeResource()}}WebGLRTMgr.dict={};class BlendMode{static _init_(gl){BlendMode.fns=[BlendMode.BlendNormal,BlendMode.BlendAdd,BlendMode.BlendMultiply,BlendMode.BlendScreen,BlendMode.BlendOverlay,BlendMode.BlendLight,BlendMode.BlendMask,BlendMode.BlendDestinationOut],BlendMode.targetFns=[BlendMode.BlendNormalTarget,BlendMode.BlendAddTarget,BlendMode.BlendMultiplyTarget,BlendMode.BlendScreenTarget,BlendMode.BlendOverlayTarget,BlendMode.BlendLightTarget,BlendMode.BlendMask,BlendMode.BlendDestinationOut]}static BlendNormal(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE_MINUS_SRC_ALPHA)}static BlendAdd(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.DST_ALPHA)}static BlendMultiply(gl){WebGLContext.setBlendFunc(gl,gl.DST_COLOR,gl.ONE_MINUS_SRC_ALPHA)}static BlendScreen(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE)}static BlendOverlay(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE_MINUS_SRC_COLOR)}static BlendLight(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE)}static BlendNormalTarget(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE_MINUS_SRC_ALPHA)}static BlendAddTarget(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.DST_ALPHA)}static BlendMultiplyTarget(gl){WebGLContext.setBlendFunc(gl,gl.DST_COLOR,gl.ONE_MINUS_SRC_ALPHA)}static BlendScreenTarget(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE)}static BlendOverlayTarget(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE_MINUS_SRC_COLOR)}static BlendLightTarget(gl){WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE)}static BlendMask(gl){WebGLContext.setBlendFunc(gl,gl.ZERO,gl.SRC_ALPHA)}static BlendDestinationOut(gl){WebGLContext.setBlendFunc(gl,gl.ZERO,gl.ZERO)}}BlendMode.activeBlendFunction=null,BlendMode.NAMES=["normal","add","multiply","screen","overlay","light","mask","destination-out"],BlendMode.TOINT={normal:0,add:1,multiply:2,screen:3,overlay:4,light:5,mask:6,"destination-out":7,lighter:1},BlendMode.NORMAL="normal",BlendMode.ADD="add",BlendMode.MULTIPLY="multiply",BlendMode.SCREEN="screen",BlendMode.OVERLAY="overlay",BlendMode.LIGHT="light",BlendMode.MASK="mask",BlendMode.DESTINATIONOUT="destination-out",BlendMode.LIGHTER="lighter",BlendMode.fns=[],BlendMode.targetFns=[];class ShaderDefinesBase{constructor(name2int,int2name,int2nameMap){this._value=0,this._name2int=name2int,this._int2name=int2name,this._int2nameMap=int2nameMap}add(value){return this._value|="string"==typeof value?this._name2int[value]:value,this._value}addInt(value){return this._value|=value,this._value}remove(value){return this._value&="string"==typeof value?~this._name2int[value]:~value,this._value}isDefine(def){return(this._value&def)===def}getValue(){return this._value}setValue(value){this._value=value}toNameDic(){var r=this._int2nameMap[this._value];return r||ShaderDefinesBase._toText(this._value,this._int2name,this._int2nameMap)}static _reg(name,value,_name2int,_int2name){_name2int[name]=value,_int2name[value]=name}static _toText(value,_int2name,_int2nameMap){var r=_int2nameMap[value];if(r)return r;for(var o={},d=1,i=0;i<32&&!((d=1<<i)>value);i++)if(value&d){var name=_int2name[d];name&&(o[name]="")}return _int2nameMap[value]=o,o}static _toInt(names,_name2int){for(var words=names.split("."),num=0,i=0,n=words.length;i<n;i++){var value=_name2int[words[i]];if(!value)throw new Error("Defines to int err:"+names+"/"+words[i]);num|=value}return num}}class ShaderDefines2D extends ShaderDefinesBase{constructor(){super(ShaderDefines2D.__name2int,ShaderDefines2D.__int2name,ShaderDefines2D.__int2nameMap)}static __init__(){ShaderDefines2D.reg("TEXTURE2D",ShaderDefines2D.TEXTURE2D),ShaderDefines2D.reg("PRIMITIVE",ShaderDefines2D.PRIMITIVE),ShaderDefines2D.reg("GLOW_FILTER",ShaderDefines2D.FILTERGLOW),ShaderDefines2D.reg("BLUR_FILTER",ShaderDefines2D.FILTERBLUR),ShaderDefines2D.reg("COLOR_FILTER",ShaderDefines2D.FILTERCOLOR),ShaderDefines2D.reg("COLOR_ADD",ShaderDefines2D.COLORADD),ShaderDefines2D.reg("WORLDMAT",ShaderDefines2D.WORLDMAT),ShaderDefines2D.reg("FILLTEXTURE",ShaderDefines2D.FILLTEXTURE),ShaderDefines2D.reg("FSHIGHPRECISION",ShaderDefines2D.SHADERDEFINE_FSHIGHPRECISION),ShaderDefines2D.reg("MVP3D",ShaderDefines2D.MVP3D)}static reg(name,value){this._reg(name,value,ShaderDefines2D.__name2int,ShaderDefines2D.__int2name)}static toText(value,int2name,int2nameMap){return this._toText(value,int2name,int2nameMap)}static toInt(names){return this._toInt(names,ShaderDefines2D.__name2int)}}ShaderDefines2D.TEXTURE2D=1,ShaderDefines2D.PRIMITIVE=4,ShaderDefines2D.FILTERGLOW=8,ShaderDefines2D.FILTERBLUR=16,ShaderDefines2D.FILTERCOLOR=32,ShaderDefines2D.COLORADD=64,ShaderDefines2D.WORLDMAT=128,ShaderDefines2D.FILLTEXTURE=256,ShaderDefines2D.SKINMESH=512,ShaderDefines2D.SHADERDEFINE_FSHIGHPRECISION=1024,ShaderDefines2D.MVP3D=2048,ShaderDefines2D.NOOPTMASK=ShaderDefines2D.FILTERGLOW|ShaderDefines2D.FILTERBLUR|ShaderDefines2D.FILTERCOLOR|ShaderDefines2D.FILLTEXTURE,ShaderDefines2D.__name2int={},ShaderDefines2D.__int2name=[],ShaderDefines2D.__int2nameMap=[];class Stat{static show(x=0,y=0){Stat._StatRender.show(x,y)}static enable(){Stat._StatRender.enable()}static hide(){Stat._StatRender.hide()}static clear(){Stat.trianglesFaces=Stat.renderBatches=Stat.savedRenderBatches=Stat.shaderCall=Stat.spriteRenderUseCacheCount=Stat.frustumCulling=Stat.octreeNodeCulling=Stat.canvasNormal=Stat.canvasBitmap=Stat.canvasReCache=0}static set onclick(fn){Stat._StatRender.set_onclick(fn)}}Stat.FPS=0,Stat.loopCount=0,Stat.shaderCall=0,Stat.renderBatches=0,Stat.savedRenderBatches=0,Stat.trianglesFaces=0,Stat.spriteCount=0,Stat.spriteRenderUseCacheCount=0,Stat.frustumCulling=0,Stat.octreeNodeCulling=0,Stat.canvasNormal=0,Stat.canvasBitmap=0,Stat.canvasReCache=0,Stat.renderSlow=!1,Stat._fpsData=[],Stat._timer=0,Stat._count=0,Stat._StatRender=null;class StringKey{constructor(){this._strsToID={},this._idToStrs=[],this._length=0}add(str){var index=this._strsToID[str];return null!=index?index:(this._idToStrs[this._length]=str,this._strsToID[str]=this._length++)}getID(str){var index=this._strsToID[str];return null==index?-1:index}getName(id){var str=this._idToStrs[id];return null==str?void 0:str}}class Shader extends BaseShader{constructor(vs,ps,saveName=null,nameMap=null,bindAttrib=null){if(super(),this._attribInfo=null,this.customCompile=!1,this._curActTexIndex=0,this.tag={},this._program=null,this._params=null,this._paramsMap={},!vs||!ps)throw"Shader Error";this._attribInfo=bindAttrib,this._id=++Shader._count,this._vs=vs,this._ps=ps,this._nameMap=nameMap||{},null!=saveName&&(Shader.sharders[saveName]=this),this.recreateResource(),this.lock=!0}static getShader(name){return Shader.sharders[name]}static create(vs,ps,saveName=null,nameMap=null,bindAttrib=null){return new Shader(vs,ps,saveName,nameMap,bindAttrib)}static withCompile(nameID,define,shaderName,createShader){if(shaderName&&Shader.sharders[shaderName])return Shader.sharders[shaderName];var pre=Shader._preCompileShader[Shader.SHADERNAME2ID*nameID];if(!pre)throw new Error("withCompile shader err!"+nameID);return pre.createShader(define,shaderName,createShader,null)}static withCompile2D(nameID,mainID,define,shaderName,createShader,bindAttrib=null){if(shaderName&&Shader.sharders[shaderName])return Shader.sharders[shaderName];var pre=Shader._preCompileShader[Shader.SHADERNAME2ID*nameID+mainID];if(!pre)throw new Error("withCompile shader err!"+nameID+" "+mainID);return pre.createShader(define,shaderName,createShader,bindAttrib)}static addInclude(fileName,txt){ILaya.ShaderCompile.addInclude(fileName,txt)}static preCompile(nameID,vs,ps,nameMap){var id=Shader.SHADERNAME2ID*nameID;Shader._preCompileShader[id]=new ILaya.ShaderCompile(vs,ps,nameMap)}static preCompile2D(nameID,mainID,vs,ps,nameMap){var id=Shader.SHADERNAME2ID*nameID+mainID;Shader._preCompileShader[id]=new ILaya.ShaderCompile(vs,ps,nameMap)}recreateResource(){this._compile(),this._setGPUMemory(0)}_disposeResource(){WebGLContext.mainContext.deleteShader(this._vshader),WebGLContext.mainContext.deleteShader(this._pshader),WebGLContext.mainContext.deleteProgram(this._program),this._vshader=this._pshader=this._program=null,this._params=null,this._paramsMap={},this._setGPUMemory(0),this._curActTexIndex=0}_compile(){if(this._vs&&this._ps&&!this._params){var result;this._reCompile=!0,this._params=[],this.customCompile&&(result=ILaya.ShaderCompile.preGetParams(this._vs,this._ps));var one,i,n,gl=WebGLContext.mainContext;this._program=gl.createProgram(),this._vshader=Shader._createShader(gl,this._vs,gl.VERTEX_SHADER),this._pshader=Shader._createShader(gl,this._ps,gl.FRAGMENT_SHADER),gl.attachShader(this._program,this._vshader),gl.attachShader(this._program,this._pshader);var attribDescNum=this._attribInfo?this._attribInfo.length:0;for(i=0;i<attribDescNum;i+=2)gl.bindAttribLocation(this._program,this._attribInfo[i+1],this._attribInfo[i]);if(gl.linkProgram(this._program),!this.customCompile&&!gl.getProgramParameter(this._program,gl.LINK_STATUS))throw gl.getProgramInfoLog(this._program);var nUniformNum=this.customCompile?result.uniforms.length:gl.getProgramParameter(this._program,gl.ACTIVE_UNIFORMS);for(i=0;i<nUniformNum;i++){var uniform=this.customCompile?result.uniforms[i]:gl.getActiveUniform(this._program,i);(one={vartype:"uniform",glfun:null,ivartype:1,location:gl.getUniformLocation(this._program,uniform.name),name:uniform.name,type:uniform.type,isArray:!1,isSame:!1,preValue:null,indexOfParams:0}).name.indexOf("[0]")>0&&(one.name=one.name.substr(0,one.name.length-3),one.isArray=!0,one.location=gl.getUniformLocation(this._program,one.name)),this._params.push(one)}for(i=0,n=this._params.length;i<n;i++)switch((one=this._params[i]).indexOfParams=i,one.index=1,one.value=[one.location,null],one.codename=one.name,one.name=this._nameMap[one.codename]?this._nameMap[one.codename]:one.codename,this._paramsMap[one.name]=one,one._this=this,one.uploadedValue=[],one.type){case gl.INT:one.fun=one.isArray?this._uniform1iv:this._uniform1i;break;case gl.FLOAT:one.fun=one.isArray?this._uniform1fv:this._uniform1f;break;case gl.FLOAT_VEC2:one.fun=one.isArray?this._uniform_vec2v:this._uniform_vec2;break;case gl.FLOAT_VEC3:one.fun=one.isArray?this._uniform_vec3v:this._uniform_vec3;break;case gl.FLOAT_VEC4:one.fun=one.isArray?this._uniform_vec4v:this._uniform_vec4;break;case gl.SAMPLER_2D:one.fun=this._uniform_sampler2D;break;case gl.SAMPLER_CUBE:one.fun=this._uniform_samplerCube;break;case gl.FLOAT_MAT4:one.glfun=gl.uniformMatrix4fv,one.fun=this._uniformMatrix4fv;break;case gl.BOOL:one.fun=this._uniform1i;break;case gl.FLOAT_MAT2:case gl.FLOAT_MAT3:default:throw new Error("compile shader err!")}}}static _createShader(gl,str,type){var shader=gl.createShader(type);return gl.shaderSource(shader,str),gl.compileShader(shader),gl.getShaderParameter(shader,gl.COMPILE_STATUS)?shader:(console.log(gl.getShaderInfoLog(shader)),null)}getUniform(name){return this._paramsMap[name]}_uniform1f(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value?(WebGLContext.mainContext.uniform1f(one.location,uploadedValue[0]=value),1):0}_uniform1fv(one,value){if(value.length<4){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]||uploadedValue[3]!==value[3]?(WebGLContext.mainContext.uniform1fv(one.location,value),uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2],uploadedValue[3]=value[3],1):0}return WebGLContext.mainContext.uniform1fv(one.location,value),1}_uniform_vec2(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]?(WebGLContext.mainContext.uniform2f(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1]),1):0}_uniform_vec2v(one,value){if(value.length<2){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]||uploadedValue[3]!==value[3]?(WebGLContext.mainContext.uniform2fv(one.location,value),uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2],uploadedValue[3]=value[3],1):0}return WebGLContext.mainContext.uniform2fv(one.location,value),1}_uniform_vec3(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]?(WebGLContext.mainContext.uniform3f(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2]),1):0}_uniform_vec3v(one,value){return WebGLContext.mainContext.uniform3fv(one.location,value),1}_uniform_vec4(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]||uploadedValue[3]!==value[3]?(WebGLContext.mainContext.uniform4f(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2],uploadedValue[3]=value[3]),1):0}_uniform_vec4v(one,value){return WebGLContext.mainContext.uniform4fv(one.location,value),1}_uniformMatrix2fv(one,value){return WebGLContext.mainContext.uniformMatrix2fv(one.location,!1,value),1}_uniformMatrix3fv(one,value){return WebGLContext.mainContext.uniformMatrix3fv(one.location,!1,value),1}_uniformMatrix4fv(one,value){return WebGLContext.mainContext.uniformMatrix4fv(one.location,!1,value),1}_uniform1i(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value?(WebGLContext.mainContext.uniform1i(one.location,uploadedValue[0]=value),1):0}_uniform1iv(one,value){return WebGLContext.mainContext.uniform1iv(one.location,value),1}_uniform_ivec2(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]?(WebGLContext.mainContext.uniform2i(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1]),1):0}_uniform_ivec2v(one,value){return WebGLContext.mainContext.uniform2iv(one.location,value),1}_uniform_vec3i(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]?(WebGLContext.mainContext.uniform3i(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2]),1):0}_uniform_vec3vi(one,value){return WebGLContext.mainContext.uniform3iv(one.location,value),1}_uniform_vec4i(one,value){var uploadedValue=one.uploadedValue;return uploadedValue[0]!==value[0]||uploadedValue[1]!==value[1]||uploadedValue[2]!==value[2]||uploadedValue[3]!==value[3]?(WebGLContext.mainContext.uniform4i(one.location,uploadedValue[0]=value[0],uploadedValue[1]=value[1],uploadedValue[2]=value[2],uploadedValue[3]=value[3]),1):0}_uniform_vec4vi(one,value){return WebGLContext.mainContext.uniform4iv(one.location,value),1}_uniform_sampler2D(one,value){var gl=WebGLContext.mainContext,uploadedValue=one.uploadedValue;return null==uploadedValue[0]?(uploadedValue[0]=this._curActTexIndex,gl.uniform1i(one.location,this._curActTexIndex),WebGLContext.activeTexture(gl,gl.TEXTURE0+this._curActTexIndex),WebGLContext.bindTexture(gl,gl.TEXTURE_2D,value),this._curActTexIndex++,1):(WebGLContext.activeTexture(gl,gl.TEXTURE0+uploadedValue[0]),WebGLContext.bindTexture(gl,gl.TEXTURE_2D,value),0)}_uniform_samplerCube(one,value){var gl=WebGLContext.mainContext,uploadedValue=one.uploadedValue;return null==uploadedValue[0]?(uploadedValue[0]=this._curActTexIndex,gl.uniform1i(one.location,this._curActTexIndex),WebGLContext.activeTexture(gl,gl.TEXTURE0+this._curActTexIndex),WebGLContext.bindTexture(gl,gl.TEXTURE_CUBE_MAP,value),this._curActTexIndex++,1):(WebGLContext.activeTexture(gl,gl.TEXTURE0+uploadedValue[0]),WebGLContext.bindTexture(gl,gl.TEXTURE_CUBE_MAP,value),0)}_noSetValue(one){console.log("no....:"+one.name)}uploadOne(name,value){WebGLContext.useProgram(WebGLContext.mainContext,this._program);var one=this._paramsMap[name];one.fun.call(this,one,value)}uploadTexture2D(value){var CTX=WebGLContext;CTX._activeTextures[0]!==value&&(CTX.bindTexture(WebGLContext.mainContext,LayaGL.instance.TEXTURE_2D,value),CTX._activeTextures[0]=value)}upload(shaderValue,params=null){BaseShader.activeShader=BaseShader.bindShader=this;var gl=WebGLContext.mainContext;WebGLContext.useProgram(gl,this._program),this._reCompile?(params=this._params,this._reCompile=!1):params=params||this._params;for(var one,value,n=params.length,shaderCall=0,i=0;i<n;i++)null!==(value=shaderValue[(one=params[i]).name])&&(shaderCall+=one.fun.call(this,one,value));Stat.shaderCall+=shaderCall}uploadArray(shaderValue,length,_bufferUsage){BaseShader.activeShader=this,BaseShader.bindShader=this,WebGLContext.useProgram(WebGLContext.mainContext,this._program);this._params;for(var value,one,shaderCall=0,i=length-2;i>=0;i-=2)(one=this._paramsMap[shaderValue[i]])&&null!=(value=shaderValue[i+1])&&(_bufferUsage&&_bufferUsage[one.name]&&_bufferUsage[one.name].bind(),shaderCall+=one.fun.call(this,one,value));Stat.shaderCall+=shaderCall}getParams(){return this._params}setAttributesLocation(attribDesc){this._attribInfo=attribDesc}}Shader._count=0,Shader._preCompileShader={},Shader.SHADERNAME2ID=2e-4,Shader.nameKey=new StringKey,Shader.sharders=new Array(32);class Shader2X extends Shader{constructor(vs,ps,saveName=null,nameMap=null,bindAttrib=null){super(vs,ps,saveName,nameMap,bindAttrib),this._params2dQuick2=null,this._shaderValueWidth=0,this._shaderValueHeight=0}_disposeResource(){super._disposeResource(),this._params2dQuick2=null}upload2dQuick2(shaderValue){this.upload(shaderValue,this._params2dQuick2||this._make2dQuick2())}_make2dQuick2(){if(!this._params2dQuick2){this._params2dQuick2=[];for(var one,params=this._params,i=0,n=params.length;i<n;i++)"size"!==(one=params[i]).name&&this._params2dQuick2.push(one)}return this._params2dQuick2}static create(vs,ps,saveName=null,nameMap=null,bindAttrib=null){return new Shader2X(vs,ps,saveName,nameMap,bindAttrib)}}class Value2D{constructor(mainID,subID){this.defines=new ShaderDefines2D,this.size=[0,0],this.alpha=1,this.ALPHA=1,this.subID=0,this.ref=1,this._cacheID=0,this.clipMatDir=[ILaya.Context._MAXSIZE,0,0,ILaya.Context._MAXSIZE],this.clipMatPos=[0,0],this.clipOff=[0,0],this.mainID=mainID,this.subID=subID,this.textureHost=null,this.texture=null,this.color=null,this.colorAdd=null,this.u_mmat2=null,this._cacheID=mainID|subID,this._inClassCache=Value2D._cache[this._cacheID],mainID>0&&!this._inClassCache&&(this._inClassCache=Value2D._cache[this._cacheID]=[],this._inClassCache._length=0),this.clear()}static _initone(type,classT){Value2D._typeClass[type]=classT,Value2D._cache[type]=[],Value2D._cache[type]._length=0}static __init__(){}setValue(value){}_ShaderWithCompile(){return Shader.withCompile2D(0,this.mainID,this.defines.toNameDic(),this.mainID|this.defines._value,Shader2X.create,this._attribLocation)}upload(){var renderstate2d=RenderState2D;RenderState2D.worldMatrix4===RenderState2D.TEMPMAT4_ARRAY||this.defines.addInt(ShaderDefines2D.WORLDMAT),this.mmat=renderstate2d.worldMatrix4,RenderState2D.matWVP&&(this.defines.addInt(ShaderDefines2D.MVP3D),this.u_MvpMatrix=RenderState2D.matWVP.elements);var sd=Shader.sharders[this.mainID|this.defines._value]||this._ShaderWithCompile();sd._shaderValueWidth!==renderstate2d.width||sd._shaderValueHeight!==renderstate2d.height?(this.size[0]=renderstate2d.width,this.size[1]=renderstate2d.height,sd._shaderValueWidth=renderstate2d.width,sd._shaderValueHeight=renderstate2d.height,sd.upload(this,null)):sd.upload(this,sd._params2dQuick2||sd._make2dQuick2())}setFilters(value){if(this.filters=value,value)for(var f,n=value.length,i=0;i<n;i++)(f=value[i])&&(this.defines.add(f.type),f.action.setValue(this))}clear(){this.defines._value=this.subID+(ILaya.WebGL.shaderHighPrecision?ShaderDefines2D.SHADERDEFINE_FSHIGHPRECISION:0),this.clipOff[0]=0}release(){--this.ref<1&&(this._inClassCache&&(this._inClassCache[this._inClassCache._length++]=this),this.clear(),this.filters=null,this.ref=1,this.clipOff[0]=0)}static create(mainType,subType){var types=Value2D._cache[mainType|subType];return types._length?types[--types._length]:new Value2D._typeClass[mainType|subType](subType)}}Value2D._cache=[],Value2D._typeClass=[],Value2D.TEMPMAT4_ARRAY=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];class SubmitKey{constructor(){this.clear()}clear(){this.submitType=-1,this.blendShader=this.other=0}copyFrom(src){this.other=src.other,this.blendShader=src.blendShader,this.submitType=src.submitType}copyFrom2(src,submitType,other){this.other=other,this.submitType=submitType}equal3_2(next,submitType,other){return this.submitType===submitType&&this.other===other&&this.blendShader===next.blendShader}equal4_2(next,submitType,other){return this.submitType===submitType&&this.other===other&&this.blendShader===next.blendShader}equal_3(next){return this.submitType===next.submitType&&this.blendShader===next.blendShader}equal(next){return this.other===next.other&&this.submitType===next.submitType&&this.blendShader===next.blendShader}}class SubmitCMD{constructor(){this._ref=1,this._key=new SubmitKey}renderSubmit(){return this.fun.apply(this._this,this.args),1}getRenderType(){return 0}releaseRender(){if(--this._ref<1){var pool=SubmitCMD.POOL;pool[pool._length++]=this}}static create(args,fun,thisobj){var o=SubmitCMD.POOL._length?SubmitCMD.POOL[--SubmitCMD.POOL._length]:new SubmitCMD;return o.fun=fun,o.args=args,o._this=thisobj,o._ref=1,o._key.clear(),o}}SubmitCMD.POOL=[],SubmitCMD.POOL._length=0;class Filter{constructor(){}get type(){return-1}}Filter.BLUR=16,Filter.COLOR=32,Filter.GLOW=8,Filter._filter=function(sprite,context,x,y){var webglctx=context,next=this._next;if(next){var filters=sprite.filters,len=filters.length;if(1==len&&filters[0].type==Filter.COLOR)return context.save(),context.setColorFilter(filters[0]),next._fun.call(next,sprite,context,x,y),void context.restore();var b,svCP=Value2D.create(ShaderDefines2D.TEXTURE2D,0),p=Point.TEMP,tMatrix=webglctx._curMat,mat=Matrix.create();tMatrix.copyTo(mat);var tPadding=0,tHalfPadding=0,source=null,out=sprite._cacheStyle.filterCache||null;if(out&&0==sprite.getRepaint()){if((sprite._cacheStyle.hasGlowFilter||!1)&&(tPadding=50,tHalfPadding=25),(b=sprite.getBounds()).width<=0||b.height<=0)return;b.width+=tPadding,b.height+=tPadding,p.x=b.x*mat.a+b.y*mat.c,p.y=b.y*mat.d+b.x*mat.b,b.x=p.x,b.y=p.y,p.x=b.width*mat.a+b.height*mat.c,p.y=b.height*mat.d+b.width*mat.b,b.width=p.x,b.height=p.y}else{sprite._isHaveGlowFilter()&&(tPadding=50,tHalfPadding=25),(b=new Rectangle).copyFrom(sprite.getSelfBounds()),b.x+=sprite.x,b.y+=sprite.y,b.x-=sprite.pivotX+4,b.y-=sprite.pivotY+4;var tSX=b.x,tSY=b.y;if(b.width+=tPadding+8,b.height+=tPadding+8,p.x=b.x*mat.a+b.y*mat.c,p.y=b.y*mat.d+b.x*mat.b,b.x=p.x,b.y=p.y,p.x=b.width*mat.a+b.height*mat.c,p.y=b.height*mat.d+b.width*mat.b,b.width=p.x,b.height=p.y,b.width<=0||b.height<=0)return;out&&WebGLRTMgr.releaseRT(out),source=WebGLRTMgr.getRT(b.width,b.height);var outRT=out=WebGLRTMgr.getRT(b.width,b.height);sprite._getCacheStyle().filterCache=out,webglctx.pushRT(),webglctx.useRT(source);var tX=sprite.x-tSX+tHalfPadding,tY=sprite.y-tSY+tHalfPadding;next._fun.call(next,sprite,context,tX,tY),webglctx.useRT(outRT);for(var i=0;i<len;i++){0!=i&&(webglctx.useRT(source),webglctx.drawTarget(outRT,0,0,b.width,b.height,Matrix.TEMP.identity(),svCP,null,BlendMode.TOINT.overlay),webglctx.useRT(outRT));var fil=filters[i];switch(fil.type){case Filter.BLUR:case Filter.GLOW:fil._glRender&&fil._glRender.render(source,context,b.width,b.height,fil);break;case Filter.COLOR:webglctx.setColorFilter(fil),webglctx.drawTarget(source,0,0,b.width,b.height,Matrix.EMPTY.identity(),Value2D.create(ShaderDefines2D.TEXTURE2D,0)),webglctx.setColorFilter(null)}}webglctx.popRT()}if(x=x-tHalfPadding-sprite.x,y=y-tHalfPadding-sprite.y,p.setTo(x,y),mat.transformPoint(p),x=p.x+b.x,y=p.y+b.y,webglctx._drawRenderTexture(out,x,y,b.width,b.height,Matrix.TEMP.identity(),1,RenderTexture2D.defuv),source){var submit=SubmitCMD.create([source],function(s){s.destroy()},this);source=null,context.addRenderObject(submit)}mat.destroy()}};class Utils{static toRadian(angle){return angle*Utils._pi2}static toAngle(radian){return radian*Utils._pi}static toHexColor(color){if(color<0||isNaN(color))return null;for(var str=color.toString(16);str.length<6;)str="0"+str;return"#"+str}static getGID(){return Utils._gid++}static concatArray(source,array){if(!array)return source;if(!source)return array;var i,len=array.length;for(i=0;i<len;i++)source.push(array[i]);return source}static clearArray(array){return array?(array.length=0,array):array}static copyArray(source,array){if(source||(source=[]),!array)return source;source.length=array.length;var i,len=array.length;for(i=0;i<len;i++)source[i]=array[i];return source}static getGlobalRecByPoints(sprite,x0,y0,x1,y1){var newLTPoint,newRBPoint;newLTPoint=Point.create().setTo(x0,y0),newLTPoint=sprite.localToGlobal(newLTPoint),newRBPoint=Point.create().setTo(x1,y1),newRBPoint=sprite.localToGlobal(newRBPoint);var rst=Rectangle._getWrapRec([newLTPoint.x,newLTPoint.y,newRBPoint.x,newRBPoint.y]);return newLTPoint.recover(),newRBPoint.recover(),rst}static getGlobalPosAndScale(sprite){return Utils.getGlobalRecByPoints(sprite,0,0,1,1)}static bind(fun,scope){return fun.bind(scope)}static updateOrder(array){if(!array||array.length<2)return!1;for(var j,key,c,i=1,len=array.length;i<len;){for(c=array[j=i],key=array[j]._zOrder;--j>-1&&array[j]._zOrder>key;)array[j+1]=array[j];array[j+1]=c,i++}return!0}static transPointList(points,x,y){var i,len=points.length;for(i=0;i<len;i+=2)points[i]+=x,points[i+1]+=y}static parseInt(str,radix=0){var result=parseInt(str,radix);return isNaN(result)?0:result}static getFileExtension(path){Utils._extReg.lastIndex=path.lastIndexOf(".");var result=Utils._extReg.exec(path);return result&&result.length>1?result[1].toLowerCase():null}static getTransformRelativeToWindow(coordinateSpace,x,y){var stage=Utils.gStage,globalTransform=Utils.getGlobalPosAndScale(coordinateSpace),canvasMatrix=stage._canvasTransform.clone(),canvasLeft=canvasMatrix.tx,canvasTop=canvasMatrix.ty;canvasMatrix.rotate(-Math.PI/180*stage.canvasDegree),canvasMatrix.scale(stage.clientScaleX,stage.clientScaleY);var tx,ty,domScaleX,domScaleY,perpendicular=stage.canvasDegree%180!=0;return perpendicular?(tx=y+globalTransform.y,ty=x+globalTransform.x,tx*=canvasMatrix.d,ty*=canvasMatrix.a,90==stage.canvasDegree?(tx=canvasLeft-tx,ty+=canvasTop):(tx+=canvasLeft,ty=canvasTop-ty)):(tx=x+globalTransform.x,ty=y+globalTransform.y,tx*=canvasMatrix.a,ty*=canvasMatrix.d,tx+=canvasLeft,ty+=canvasTop),ty+=stage._safariOffsetY,perpendicular?(domScaleX=canvasMatrix.d*globalTransform.height,domScaleY=canvasMatrix.a*globalTransform.width):(domScaleX=canvasMatrix.a*globalTransform.width,domScaleY=canvasMatrix.d*globalTransform.height),{x:tx,y:ty,scaleX:domScaleX,scaleY:domScaleY}}static fitDOMElementInArea(dom,coordinateSpace,x,y,width,height){dom._fitLayaAirInitialized||(dom._fitLayaAirInitialized=!0,dom.style.transformOrigin=dom.style.webKittransformOrigin="left top",dom.style.position="absolute");var transform=Utils.getTransformRelativeToWindow(coordinateSpace,x,y);dom.style.transform=dom.style.webkitTransform="scale("+transform.scaleX+","+transform.scaleY+") rotate("+Utils.gStage.canvasDegree+"deg)",dom.style.width=width+"px",dom.style.height=height+"px",dom.style.left=transform.x+"px",dom.style.top=transform.y+"px"}static isOkTextureList(textureList){if(!textureList)return!1;var i,tTexture,len=textureList.length;for(i=0;i<len;i++)if(!(tTexture=textureList[i])||!tTexture._getSource())return!1;return!0}static isOKCmdList(cmds){if(!cmds)return!1;var i,len=cmds.length;for(i=0;i<len;i++)cmds[i];return!0}static getQueryString(name){if(ILaya.Browser.onMiniGame)return null;if(!window.location||!window.location.search)return null;var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)"),r=window.location.search.substr(1).match(reg);return null!=r?unescape(r[2]):null}}Utils.gStage=null,Utils._gid=1,Utils._pi=180/Math.PI,Utils._pi2=Math.PI/180,Utils._extReg=/\.(\w+)\??/g,Utils.parseXMLFromString=function(value){var rst;if(value=value.replace(/>\s+</g,"><"),(rst=(new DOMParser).parseFromString(value,"text/xml")).firstChild.textContent.indexOf("This page contains the following errors")>-1)throw new Error(rst.firstChild.firstChild.textContent);return rst};class ColorUtils{constructor(value){if(this.arrColor=[],null==value)return this.strColor="#00000000",this.numColor=0,void(this.arrColor=[0,0,0,0]);var i,len,color;if("string"==typeof value)if(value.indexOf("rgba(")>=0||value.indexOf("rgb(")>=0){var beginI,endI,tStr=value;for(beginI=tStr.indexOf("("),endI=tStr.indexOf(")"),tStr=tStr.substring(beginI+1,endI),this.arrColor=tStr.split(","),len=this.arrColor.length,i=0;i<len;i++)this.arrColor[i]=parseFloat(this.arrColor[i]),i<3&&(this.arrColor[i]=Math.round(this.arrColor[i]));color=4==this.arrColor.length?256*(256*(256*this.arrColor[0]+this.arrColor[1])+this.arrColor[2])+Math.round(255*this.arrColor[3]):256*(256*this.arrColor[0]+this.arrColor[1])+this.arrColor[2],this.strColor=value}else{if(this.strColor=value,"#"===value.charAt(0)&&(value=value.substr(1)),3===(len=value.length)||4===len){var temp="";for(i=0;i<len;i++)temp+=value[i]+value[i];value=temp}color=parseInt(value,16)}else color=value,this.strColor=Utils.toHexColor(color);this.strColor.indexOf("rgba")>=0||9===this.strColor.length?(this.arrColor=[((4278190080&color)>>>24)/255,((16711680&color)>>16)/255,((65280&color)>>8)/255,(255&color)/255],this.numColor=(4278190080&color)>>>24|(16711680&color)>>8|(65280&color)<<8|(255&color)<<24):(this.arrColor=[((16711680&color)>>16)/255,((65280&color)>>8)/255,(255&color)/255,1],this.numColor=4278190080|(16711680&color)>>16|65280&color|(255&color)<<16),this.arrColor.__id=++ColorUtils._COLODID}static _initDefault(){for(var i in ColorUtils._DEFAULT={},ColorUtils._COLOR_MAP)ColorUtils._SAVE[i]=ColorUtils._DEFAULT[i]=new ColorUtils(ColorUtils._COLOR_MAP[i]);return ColorUtils._DEFAULT}static _initSaveMap(){for(var i in ColorUtils._SAVE_SIZE=0,ColorUtils._SAVE={},ColorUtils._DEFAULT)ColorUtils._SAVE[i]=ColorUtils._DEFAULT[i]}static create(value){var key=value+"",color=ColorUtils._SAVE[key];return null!=color?color:(ColorUtils._SAVE_SIZE<1e3&&ColorUtils._initSaveMap(),ColorUtils._SAVE[key]=new ColorUtils(value))}}ColorUtils._SAVE={},ColorUtils._SAVE_SIZE=0,ColorUtils._COLOR_MAP={purple:"#800080",orange:"#ffa500",white:"#FFFFFF",red:"#FF0000",green:"#00FF00",blue:"#0000FF",black:"#000000",yellow:"#FFFF00",gray:"#808080"},ColorUtils._DEFAULT=ColorUtils._initDefault(),ColorUtils._COLODID=1;class ColorFilter extends Filter{constructor(mat=null){super(),mat||(mat=this._copyMatrix(ColorFilter.IDENTITY_MATRIX)),this._mat=new Float32Array(16),this._alpha=new Float32Array(4),this.setByMatrix(mat)}gray(){return this.setByMatrix(ColorFilter.GRAY_MATRIX)}color(red=0,green=0,blue=0,alpha=1){return this.setByMatrix([1,0,0,0,red,0,1,0,0,green,0,0,1,0,blue,0,0,0,1,alpha])}setColor(color){var arr=ColorUtils.create(color).arrColor,mt=[0,0,0,0,256*arr[0],0,0,0,0,256*arr[1],0,0,0,0,256*arr[2],0,0,0,1,0];return this.setByMatrix(mt)}setByMatrix(matrix){this._matrix!=matrix&&this._copyMatrix(matrix);for(var j=0,z=0,i=0;i<20;i++)i%5!=4?this._mat[j++]=matrix[i]:this._alpha[z++]=matrix[i];return this}get type(){return Filter.COLOR}adjustColor(brightness,contrast,saturation,hue){return this.adjustHue(hue),this.adjustContrast(contrast),this.adjustBrightness(brightness),this.adjustSaturation(saturation),this}adjustBrightness(brightness){return 0==(brightness=this._clampValue(brightness,100))||isNaN(brightness)?this:this._multiplyMatrix([1,0,0,0,brightness,0,1,0,0,brightness,0,0,1,0,brightness,0,0,0,1,0,0,0,0,0,1])}adjustContrast(contrast){if(0==(contrast=this._clampValue(contrast,100))||isNaN(contrast))return this;var x,x1=(x=contrast<0?127+contrast/100*127:127*(x=0==(x=contrast%1)?ColorFilter.DELTA_INDEX[contrast]:ColorFilter.DELTA_INDEX[contrast<<0]*(1-x)+ColorFilter.DELTA_INDEX[1+(contrast<<0)]*x)+127)/127,x2=.5*(127-x);return this._multiplyMatrix([x1,0,0,0,x2,0,x1,0,0,x2,0,0,x1,0,x2,0,0,0,1,0,0,0,0,0,1])}adjustSaturation(saturation){if(0==(saturation=this._clampValue(saturation,100))||isNaN(saturation))return this;var x=1+(saturation>0?3*saturation/100:saturation/100),dx=1-x,r=.3086*dx,g=.6094*dx,b=.082*dx;return this._multiplyMatrix([r+x,g,b,0,0,r,g+x,b,0,0,r,g,b+x,0,0,0,0,0,1,0,0,0,0,0,1])}adjustHue(hue){if(0==(hue=this._clampValue(hue,180)/180*Math.PI)||isNaN(hue))return this;var cos=Math.cos(hue),sin=Math.sin(hue),r=.213,g=.715,b=.072;return this._multiplyMatrix([r+cos*(1-r)+sin*-r,g+cos*-g+sin*-g,b+cos*-b+sin*(1-b),0,0,r+cos*-r+.143*sin,g+cos*(1-g)+.14*sin,b+cos*-b+-.283*sin,0,0,r+cos*-r+-.787*sin,g+cos*-g+sin*g,b+cos*(1-b)+sin*b,0,0,0,0,0,1,0,0,0,0,0,1])}reset(){return this.setByMatrix(this._copyMatrix(ColorFilter.IDENTITY_MATRIX))}_multiplyMatrix(matrix){var col=[];this._matrix=this._fixMatrix(this._matrix);for(var i=0;i<5;i++){for(var j=0;j<5;j++)col[j]=this._matrix[j+5*i];for(j=0;j<5;j++){for(var val=0,k=0;k<5;k++)val+=matrix[j+5*k]*col[k];this._matrix[j+5*i]=val}}return this.setByMatrix(this._matrix)}_clampValue(val,limit){return Math.min(limit,Math.max(-limit,val))}_fixMatrix(matrix=null){return null==matrix?ColorFilter.IDENTITY_MATRIX:(matrix.length<ColorFilter.LENGTH?matrix=matrix.slice(0,matrix.length).concat(ColorFilter.IDENTITY_MATRIX.slice(matrix.length,ColorFilter.LENGTH)):matrix.length>ColorFilter.LENGTH&&(matrix=matrix.slice(0,ColorFilter.LENGTH)),matrix)}_copyMatrix(matrix){var len=ColorFilter.LENGTH;this._matrix||(this._matrix=[]);for(var i=0;i<len;i++)this._matrix[i]=matrix[i];return this._matrix}}ColorFilter.DELTA_INDEX=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10],ColorFilter.GRAY_MATRIX=[.3086,.6094,.082,0,0,.3086,.6094,.082,0,0,.3086,.6094,.082,0,0,0,0,0,1,0],ColorFilter.IDENTITY_MATRIX=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],ColorFilter.LENGTH=25;class DrawTextureCmd{constructor(){this.colorFlt=null,this.uv=null}static create(texture,x,y,width,height,matrix,alpha,color,blendMode,uv){var cmd=Pool.getItemByClass("DrawTextureCmd",DrawTextureCmd);return cmd.texture=texture,texture._addReference(),cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd.matrix=matrix,cmd.alpha=alpha,cmd.color=color,cmd.blendMode=blendMode,cmd.uv=uv,color&&(cmd.colorFlt=new ColorFilter,cmd.colorFlt.setColor(color)),cmd}recover(){this.texture._removeReference(),this.texture=null,this.matrix=null,Pool.recover("DrawTextureCmd",this)}run(context,gx,gy){context.drawTextureWithTransform(this.texture,this.x,this.y,this.width,this.height,this.matrix,gx,gy,this.alpha,this.blendMode,this.colorFlt,this.uv)}get cmdID(){return DrawTextureCmd.ID}}DrawTextureCmd.ID="DrawTexture";class FillTextureCmd{static create(texture,x,y,width,height,type,offset,other){var cmd=Pool.getItemByClass("FillTextureCmd",FillTextureCmd);return cmd.texture=texture,cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd.type=type,cmd.offset=offset,cmd.other=other,cmd}recover(){this.texture=null,this.offset=null,this.other=null,Pool.recover("FillTextureCmd",this)}run(context,gx,gy){context.fillTexture(this.texture,this.x+gx,this.y+gy,this.width,this.height,this.type,this.offset,this.other)}get cmdID(){return FillTextureCmd.ID}}FillTextureCmd.ID="FillTexture";class RestoreCmd{static create(){return Pool.getItemByClass("RestoreCmd",RestoreCmd)}recover(){Pool.recover("RestoreCmd",this)}run(context,gx,gy){context.restore()}get cmdID(){return RestoreCmd.ID}}RestoreCmd.ID="Restore";class RotateCmd{static create(angle,pivotX,pivotY){var cmd=Pool.getItemByClass("RotateCmd",RotateCmd);return cmd.angle=angle,cmd.pivotX=pivotX,cmd.pivotY=pivotY,cmd}recover(){Pool.recover("RotateCmd",this)}run(context,gx,gy){context._rotate(this.angle,this.pivotX+gx,this.pivotY+gy)}get cmdID(){return RotateCmd.ID}}RotateCmd.ID="Rotate";class ScaleCmd{static create(scaleX,scaleY,pivotX,pivotY){var cmd=Pool.getItemByClass("ScaleCmd",ScaleCmd);return cmd.scaleX=scaleX,cmd.scaleY=scaleY,cmd.pivotX=pivotX,cmd.pivotY=pivotY,cmd}recover(){Pool.recover("ScaleCmd",this)}run(context,gx,gy){context._scale(this.scaleX,this.scaleY,this.pivotX+gx,this.pivotY+gy)}get cmdID(){return ScaleCmd.ID}}ScaleCmd.ID="Scale";class TransformCmd{static create(matrix,pivotX,pivotY){var cmd=Pool.getItemByClass("TransformCmd",TransformCmd);return cmd.matrix=matrix,cmd.pivotX=pivotX,cmd.pivotY=pivotY,cmd}recover(){this.matrix=null,Pool.recover("TransformCmd",this)}run(context,gx,gy){context._transform(this.matrix,this.pivotX+gx,this.pivotY+gy)}get cmdID(){return TransformCmd.ID}}TransformCmd.ID="Transform";class TranslateCmd{static create(tx,ty){var cmd=Pool.getItemByClass("TranslateCmd",TranslateCmd);return cmd.tx=tx,cmd.ty=ty,cmd}recover(){Pool.recover("TranslateCmd",this)}run(context,gx,gy){context.translate(this.tx,this.ty)}get cmdID(){return TranslateCmd.ID}}TranslateCmd.ID="Translate";class Bezier{constructor(){this._controlPoints=[new Point,new Point,new Point],this._calFun=this.getPoint2}_switchPoint(x,y){var tPoint=this._controlPoints.shift();tPoint.setTo(x,y),this._controlPoints.push(tPoint)}getPoint2(t,rst){var p1=this._controlPoints[0],p2=this._controlPoints[1],p3=this._controlPoints[2],lineX=Math.pow(1-t,2)*p1.x+2*t*(1-t)*p2.x+Math.pow(t,2)*p3.x,lineY=Math.pow(1-t,2)*p1.y+2*t*(1-t)*p2.y+Math.pow(t,2)*p3.y;rst.push(lineX,lineY)}getPoint3(t,rst){var p1=this._controlPoints[0],p2=this._controlPoints[1],p3=this._controlPoints[2],p4=this._controlPoints[3],lineX=Math.pow(1-t,3)*p1.x+3*p2.x*t*(1-t)*(1-t)+3*p3.x*t*t*(1-t)+p4.x*Math.pow(t,3),lineY=Math.pow(1-t,3)*p1.y+3*p2.y*t*(1-t)*(1-t)+3*p3.y*t*t*(1-t)+p4.y*Math.pow(t,3);rst.push(lineX,lineY)}insertPoints(count,rst){var i,dLen;for(dLen=1/(count=count>0?count:5),i=0;i<=1;i+=dLen)this._calFun(i,rst)}getBezierPoints(pList,inSertCount=5,count=2){var i,len;if((len=pList.length)<2*(count+1))return[];var rst=[];switch(count){case 2:this._calFun=this.getPoint2;break;case 3:this._calFun=this.getPoint3;break;default:return[]}for(;this._controlPoints.length<=count;)this._controlPoints.push(Point.create());for(i=0;i<2*count;i+=2)this._switchPoint(pList[i],pList[i+1]);for(i=2*count;i<len;i+=2)this._switchPoint(pList[i],pList[i+1]),i/2%count==0&&this.insertPoints(inSertCount,rst);return rst}}Bezier.I=new Bezier;class GrahamScan{static multiply(p1,p2,p0){return(p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y)}static dis(p1,p2){return(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)}static _getPoints(count,tempUse=!1,rst=null){for(GrahamScan._mPointList||(GrahamScan._mPointList=[]);GrahamScan._mPointList.length<count;)GrahamScan._mPointList.push(new Point);return rst||(rst=[]),rst.length=0,tempUse?GrahamScan.getFrom(rst,GrahamScan._mPointList,count):GrahamScan.getFromR(rst,GrahamScan._mPointList,count),rst}static getFrom(rst,src,count){var i;for(i=0;i<count;i++)rst.push(src[i]);return rst}static getFromR(rst,src,count){var i;for(i=0;i<count;i++)rst.push(src.pop());return rst}static pListToPointList(pList,tempUse=!1){var i,len=pList.length/2,rst=GrahamScan._getPoints(len,tempUse,GrahamScan._tempPointList);for(i=0;i<len;i++)rst[i].setTo(pList[i+i],pList[i+i+1]);return rst}static pointListToPlist(pointList){var i,tPoint,len=pointList.length,rst=GrahamScan._temPList;for(rst.length=0,i=0;i<len;i++)tPoint=pointList[i],rst.push(tPoint.x,tPoint.y);return rst}static scanPList(pList){return Utils.copyArray(pList,GrahamScan.pointListToPlist(GrahamScan.scan(GrahamScan.pListToPointList(pList,!0))))}static scan(PointSet){var i,j,tmp,ch,key,k=0,n=PointSet.length,_tmpDic={};for((ch=GrahamScan._temArr).length=0,i=(n=PointSet.length)-1;i>=0;i--)(key=(tmp=PointSet[i]).x+"_"+tmp.y)in _tmpDic||(_tmpDic[key]=!0,ch.push(tmp));for(n=ch.length,Utils.copyArray(PointSet,ch),i=1;i<n;i++)(PointSet[i].y<PointSet[k].y||PointSet[i].y==PointSet[k].y&&PointSet[i].x<PointSet[k].x)&&(k=i);for(tmp=PointSet[0],PointSet[0]=PointSet[k],PointSet[k]=tmp,i=1;i<n-1;i++){for(k=i,j=i+1;j<n;j++)(GrahamScan.multiply(PointSet[j],PointSet[k],PointSet[0])>0||0==GrahamScan.multiply(PointSet[j],PointSet[k],PointSet[0])&&GrahamScan.dis(PointSet[0],PointSet[j])<GrahamScan.dis(PointSet[0],PointSet[k]))&&(k=j);tmp=PointSet[i],PointSet[i]=PointSet[k],PointSet[k]=tmp}if((ch=GrahamScan._temArr).length=0,PointSet.length<3)return Utils.copyArray(ch,PointSet);for(ch.push(PointSet[0],PointSet[1],PointSet[2]),i=3;i<n;i++){for(;ch.length>=2&&GrahamScan.multiply(PointSet[i],ch[ch.length-1],ch[ch.length-2])>=0;)ch.pop();PointSet[i]&&ch.push(PointSet[i])}return ch}}GrahamScan._tempPointList=[],GrahamScan._temPList=[],GrahamScan._temArr=[];class DrawStyle{constructor(value){this.setValue(value)}static create(value){if(value){var color=value instanceof ColorUtils?value:ColorUtils.create(value);return color._drawStyle||(color._drawStyle=new DrawStyle(value))}return DrawStyle.DEFAULT}setValue(value){this._color=value?value instanceof ColorUtils?value:ColorUtils.create(value):ColorUtils.create("#000000")}reset(){this._color=ColorUtils.create("#000000")}toInt(){return this._color.numColor}equal(value){return"string"==typeof value?this._color.strColor===value:value instanceof ColorUtils&&this._color.numColor===value.numColor}toColorStr(){return this._color.strColor}}DrawStyle.DEFAULT=new DrawStyle("#000000");class Path{constructor(){this._lastOriX=0,this._lastOriY=0,this.paths=[],this._curPath=null}beginPath(convex){this.paths.length=1,this._curPath=this.paths[0]=new renderPath,this._curPath.convex=convex}closePath(){this._curPath.loop=!0}newPath(){this._curPath=new renderPath,this.paths.push(this._curPath)}addPoint(pointX,pointY){this._curPath.path.push(pointX,pointY)}push(points,convex){this._curPath?this._curPath.path.length>0&&(this._curPath=new renderPath,this.paths.push(this._curPath)):(this._curPath=new renderPath,this.paths.push(this._curPath));var rp=this._curPath;rp.path=points.slice(),rp.convex=convex}reset(){this.paths.length=0}}class renderPath{constructor(){this.path=[],this.loop=!1,this.convex=!1}}class SubmitBase{constructor(renderType=SubmitBase.TYPE_2D){this.clipInfoID=-1,this._mesh=null,this._blendFn=null,this._id=0,this._renderType=0,this._parent=null,this._key=new SubmitKey,this._startIdx=0,this._numEle=0,this._ref=1,this.shaderValue=null,this._renderType=renderType,this._id=++SubmitBase.ID}static __init__(){var s=SubmitBase.RENDERBASE=new SubmitBase(-1);s.shaderValue=new Value2D(0,0),s.shaderValue.ALPHA=1,s._ref=4294967295}getID(){return this._id}getRenderType(){return this._renderType}toString(){return"ibindex:"+this._startIdx+" num:"+this._numEle+" key="+this._key}renderSubmit(){return 1}releaseRender(){}}SubmitBase.TYPE_2D=1e4,SubmitBase.TYPE_CANVAS=10003,SubmitBase.TYPE_CMDSETRT=10004,SubmitBase.TYPE_CUSTOM=10005,SubmitBase.TYPE_BLURRT=10006,SubmitBase.TYPE_CMDDESTORYPRERT=10007,SubmitBase.TYPE_DISABLESTENCIL=10008,SubmitBase.TYPE_OTHERIBVB=10009,SubmitBase.TYPE_PRIMITIVE=10010,SubmitBase.TYPE_RT=10011,SubmitBase.TYPE_BLUR_RT=10012,SubmitBase.TYPE_TARGET=10013,SubmitBase.TYPE_CHANGE_VALUE=10014,SubmitBase.TYPE_SHAPE=10015,SubmitBase.TYPE_TEXTURE=10016,SubmitBase.TYPE_FILLTEXTURE=10017,SubmitBase.KEY_ONCE=-1,SubmitBase.KEY_FILLRECT=1,SubmitBase.KEY_DRAWTEXTURE=2,SubmitBase.KEY_VG=3,SubmitBase.KEY_TRIANGLES=4,SubmitBase.ID=1,SubmitBase.preRender=null;class SaveBase{constructor(){}static _createArray(){var value=[];return value._length=0,value}static _init(){var namemap=SaveBase._namemap={};return namemap[SaveBase.TYPE_ALPHA]="ALPHA",namemap[SaveBase.TYPE_FILESTYLE]="fillStyle",namemap[SaveBase.TYPE_FONT]="font",namemap[SaveBase.TYPE_LINEWIDTH]="lineWidth",namemap[SaveBase.TYPE_STROKESTYLE]="strokeStyle",namemap[SaveBase.TYPE_ENABLEMERGE]="_mergeID",namemap[SaveBase.TYPE_MARK]=namemap[SaveBase.TYPE_TRANSFORM]=namemap[SaveBase.TYPE_TRANSLATE]=[],namemap[SaveBase.TYPE_TEXTBASELINE]="textBaseline",namemap[SaveBase.TYPE_TEXTALIGN]="textAlign",namemap[SaveBase.TYPE_GLOBALCOMPOSITEOPERATION]="_nBlendType",namemap[SaveBase.TYPE_SHADER]="shader",namemap[SaveBase.TYPE_FILTERS]="filters",namemap[SaveBase.TYPE_COLORFILTER]="_colorFiler",namemap}isSaveMark(){return!1}restore(context){this._dataObj[this._valueName]=this._value,SaveBase.POOL[SaveBase.POOL._length++]=this,this._newSubmit&&(context._curSubmit=SubmitBase.RENDERBASE)}static save(context,type,dataObj,newSubmit){if((context._saveMark._saveuse&type)!==type){context._saveMark._saveuse|=type;var cache=SaveBase.POOL,o=cache._length>0?cache[--cache._length]:new SaveBase;o._value=dataObj[o._valueName=SaveBase._namemap[type]],o._dataObj=dataObj,o._newSubmit=newSubmit;var _save=context._save;_save[_save._length++]=o}}}SaveBase.TYPE_ALPHA=1,SaveBase.TYPE_FILESTYLE=2,SaveBase.TYPE_FONT=8,SaveBase.TYPE_LINEWIDTH=256,SaveBase.TYPE_STROKESTYLE=512,SaveBase.TYPE_MARK=1024,SaveBase.TYPE_TRANSFORM=2048,SaveBase.TYPE_TRANSLATE=4096,SaveBase.TYPE_ENABLEMERGE=8192,SaveBase.TYPE_TEXTBASELINE=16384,SaveBase.TYPE_TEXTALIGN=32768,SaveBase.TYPE_GLOBALCOMPOSITEOPERATION=65536,SaveBase.TYPE_CLIPRECT=131072,SaveBase.TYPE_CLIPRECT_STENCIL=262144,SaveBase.TYPE_IBVB=524288,SaveBase.TYPE_SHADER=1048576,SaveBase.TYPE_FILTERS=2097152,SaveBase.TYPE_FILTERS_TYPE=4194304,SaveBase.TYPE_COLORFILTER=8388608,SaveBase.POOL=SaveBase._createArray(),SaveBase._namemap=SaveBase._init();class SaveClipRect{constructor(){this._globalClipMatrix=new Matrix,this._clipInfoID=-1,this._clipRect=new Rectangle,this.incache=!1}isSaveMark(){return!1}restore(context){this._globalClipMatrix.copyTo(context._globalClipMatrix),this._clipRect.clone(context._clipRect),context._clipInfoID=this._clipInfoID,SaveClipRect.POOL[SaveClipRect.POOL._length++]=this,context._clipInCache=this.incache}static save(context){if((context._saveMark._saveuse&SaveBase.TYPE_CLIPRECT)!=SaveBase.TYPE_CLIPRECT){context._saveMark._saveuse|=SaveBase.TYPE_CLIPRECT;var cache=SaveClipRect.POOL,o=cache._length>0?cache[--cache._length]:new SaveClipRect;context._globalClipMatrix.copyTo(o._globalClipMatrix),context._clipRect.clone(o._clipRect),o._clipInfoID=context._clipInfoID,o.incache=context._clipInCache;var _save=context._save;_save[_save._length++]=o}}}SaveClipRect.POOL=SaveBase._createArray();class SaveMark{constructor(){this._saveuse=0}isSaveMark(){return!0}restore(context){context._saveMark=this._preSaveMark,SaveMark.POOL[SaveMark.POOL._length++]=this}static Create(context){var no=SaveMark.POOL,o=no._length>0?no[--no._length]:new SaveMark;return o._saveuse=0,o._preSaveMark=context._saveMark,context._saveMark=o,o}}SaveMark.POOL=SaveBase._createArray();class SaveTransform{constructor(){this._matrix=new Matrix}isSaveMark(){return!1}restore(context){context._curMat=this._savematrix,SaveTransform.POOL[SaveTransform.POOL._length++]=this}static save(context){var _saveMark=context._saveMark;if((_saveMark._saveuse&SaveBase.TYPE_TRANSFORM)!==SaveBase.TYPE_TRANSFORM){_saveMark._saveuse|=SaveBase.TYPE_TRANSFORM;var no=SaveTransform.POOL,o=no._length>0?no[--no._length]:new SaveTransform;o._savematrix=context._curMat,context._curMat=context._curMat.copyTo(o._matrix);var _save=context._save;_save[_save._length++]=o}}}SaveTransform.POOL=SaveBase._createArray();class SaveTranslate{constructor(){this._mat=new Matrix}isSaveMark(){return!1}restore(context){this._mat.copyTo(context._curMat),SaveTranslate.POOL[SaveTranslate.POOL._length++]=this}static save(context){var no=SaveTranslate.POOL,o=no._length>0?no[--no._length]:new SaveTranslate;context._curMat.copyTo(o._mat);var _save=context._save;_save[_save._length++]=o}}SaveTranslate.POOL=SaveBase._createArray();class RenderInfo{}RenderInfo.loopStTm=0,RenderInfo.loopCount=0;class Buffer{constructor(){this._byteLength=0,this._glBuffer=LayaGL.instance.createBuffer()}get bufferUsage(){return this._bufferUsage}_bindForVAO(){}bind(){return!1}destroy(){this._glBuffer&&(LayaGL.instance.deleteBuffer(this._glBuffer),this._glBuffer=null)}}class Buffer2D extends Buffer{constructor(){super(),this._maxsize=0,this._upload=!0,this._uploadSize=0,this._bufferSize=0,this._u8Array=null}static __int__(gl){}get bufferLength(){return this._buffer.byteLength}set byteLength(value){this.setByteLength(value)}setByteLength(value){this._byteLength!==value&&(value<=this._bufferSize||this._resizeBuffer(2*value+256,!0),this._byteLength=value)}needSize(sz){var old=this._byteLength;if(sz){var needsz=this._byteLength+sz;needsz<=this._bufferSize||this._resizeBuffer(needsz<<1,!0),this._byteLength=needsz}return old}_bufferData(){this._maxsize=Math.max(this._maxsize,this._byteLength),RenderInfo.loopCount%30==0&&(this._buffer.byteLength>this._maxsize+64&&(this._buffer=this._buffer.slice(0,this._maxsize+64),this._bufferSize=this._buffer.byteLength,this._checkArrayUse()),this._maxsize=this._byteLength),this._uploadSize<this._buffer.byteLength&&(this._uploadSize=this._buffer.byteLength,LayaGL.instance.bufferData(this._bufferType,this._uploadSize,this._bufferUsage)),LayaGL.instance.bufferSubData(this._bufferType,0,new Uint8Array(this._buffer,0,this._byteLength))}_bufferSubData(offset=0,dataStart=0,dataLength=0){if(this._maxsize=Math.max(this._maxsize,this._byteLength),RenderInfo.loopCount%30==0&&(this._buffer.byteLength>this._maxsize+64&&(this._buffer=this._buffer.slice(0,this._maxsize+64),this._bufferSize=this._buffer.byteLength,this._checkArrayUse()),this._maxsize=this._byteLength),this._uploadSize<this._buffer.byteLength&&(this._uploadSize=this._buffer.byteLength,LayaGL.instance.bufferData(this._bufferType,this._uploadSize,this._bufferUsage)),dataStart||dataLength){var subBuffer=this._buffer.slice(dataStart,dataLength);LayaGL.instance.bufferSubData(this._bufferType,offset,subBuffer)}else LayaGL.instance.bufferSubData(this._bufferType,offset,this._buffer)}_checkArrayUse(){}_bind_uploadForVAO(){return!!this._upload&&(this._upload=!1,this._bindForVAO(),this._bufferData(),!0)}_bind_upload(){return!!this._upload&&(this._upload=!1,this.bind(),this._bufferData(),!0)}_bind_subUpload(offset=0,dataStart=0,dataLength=0){return!!this._upload&&(this._upload=!1,this.bind(),this._bufferSubData(offset,dataStart,dataLength),!0)}_resizeBuffer(nsz,copy){var buff=this._buffer;if(nsz<=buff.byteLength)return this;var u8buf=this._u8Array;if(copy&&buff&&buff.byteLength>0){var newbuffer=new ArrayBuffer(nsz),oldU8Arr=u8buf&&u8buf.buffer==buff?u8buf:new Uint8Array(buff);(u8buf=this._u8Array=new Uint8Array(newbuffer)).set(oldU8Arr,0),buff=this._buffer=newbuffer}else buff=this._buffer=new ArrayBuffer(nsz),this._u8Array=null;return this._checkArrayUse(),this._upload=!0,this._bufferSize=buff.byteLength,this}append(data){var byteLen,n;this._upload=!0,byteLen=data.byteLength,data instanceof Uint8Array?(this._resizeBuffer(this._byteLength+byteLen,!0),n=new Uint8Array(this._buffer,this._byteLength)):data instanceof Uint16Array?(this._resizeBuffer(this._byteLength+byteLen,!0),n=new Uint16Array(this._buffer,this._byteLength)):data instanceof Float32Array&&(this._resizeBuffer(this._byteLength+byteLen,!0),n=new Float32Array(this._buffer,this._byteLength)),n.set(data,0),this._byteLength+=byteLen,this._checkArrayUse()}appendU16Array(data,len){this._resizeBuffer(this._byteLength+2*len,!0);var u=new Uint16Array(this._buffer,this._byteLength,len);if(6==len)u[0]=data[0],u[1]=data[1],u[2]=data[2],u[3]=data[3],u[4]=data[4],u[5]=data[5];else if(len>=100)u.set(new Uint16Array(data.buffer,0,len));else for(var i=0;i<len;i++)u[i]=data[i];this._byteLength+=2*len,this._checkArrayUse()}appendEx(data,type){var byteLen;this._upload=!0,byteLen=data.byteLength,this._resizeBuffer(this._byteLength+byteLen,!0),new type(this._buffer,this._byteLength).set(data,0),this._byteLength+=byteLen,this._checkArrayUse()}appendEx2(data,type,dataLen,perDataLen=1){var byteLen,n,i;for(this._upload=!0,byteLen=dataLen*perDataLen,this._resizeBuffer(this._byteLength+byteLen,!0),n=new type(this._buffer,this._byteLength),i=0;i<dataLen;i++)n[i]=data[i];this._byteLength+=byteLen,this._checkArrayUse()}getBuffer(){return this._buffer}setNeedUpload(){this._upload=!0}getNeedUpload(){return this._upload}upload(){var gl=LayaGL.instance,scuess=this._bind_upload();return gl.bindBuffer(this._bufferType,null),this._bufferType==gl.ARRAY_BUFFER&&(Buffer._bindedVertexBuffer=null),this._bufferType==gl.ELEMENT_ARRAY_BUFFER&&(Buffer._bindedIndexBuffer=null),BaseShader.activeShader=null,scuess}subUpload(offset=0,dataStart=0,dataLength=0){var gl=LayaGL.instance,scuess=this._bind_subUpload();return gl.bindBuffer(this._bufferType,null),this._bufferType==gl.ARRAY_BUFFER&&(Buffer._bindedVertexBuffer=null),this._bufferType==gl.ELEMENT_ARRAY_BUFFER&&(Buffer._bindedIndexBuffer=null),BaseShader.activeShader=null,scuess}_disposeResource(){this._upload=!0,this._uploadSize=0}clear(){this._byteLength=0,this._upload=!0}}Buffer2D.FLOAT32=4,Buffer2D.SHORT=2;class VertexBuffer2D extends Buffer2D{constructor(vertexStride,bufferUsage){super(),this._vertexStride=vertexStride,this._bufferUsage=bufferUsage,this._bufferType=LayaGL.instance.ARRAY_BUFFER,this._buffer=new ArrayBuffer(8),this._floatArray32=new Float32Array(this._buffer),this._uint32Array=new Uint32Array(this._buffer)}get vertexStride(){return this._vertexStride}getFloat32Array(){return this._floatArray32}appendArray(data){var oldoff=this._byteLength>>2;this.setByteLength(this._byteLength+4*data.length),this.getFloat32Array().set(data,oldoff),this._upload=!0}_checkArrayUse(){this._floatArray32&&(this._floatArray32=new Float32Array(this._buffer)),this._uint32Array&&(this._uint32Array=new Uint32Array(this._buffer))}deleteBuffer(){super._disposeResource()}_bindForVAO(){var gl=LayaGL.instance;gl.bindBuffer(gl.ARRAY_BUFFER,this._glBuffer)}bind(){if(Buffer._bindedVertexBuffer!==this._glBuffer){var gl=LayaGL.instance;return gl.bindBuffer(gl.ARRAY_BUFFER,this._glBuffer),Buffer._bindedVertexBuffer=this._glBuffer,!0}return!1}destroy(){super.destroy(),this._byteLength=0,this._upload=!0,this._buffer=null,this._floatArray32=null}}VertexBuffer2D.create=function(vertexStride,bufferUsage=35048){return new VertexBuffer2D(vertexStride,bufferUsage)};class IndexBuffer2D extends Buffer2D{constructor(bufferUsage=35044){super(),this._bufferUsage=bufferUsage,this._bufferType=LayaGL.instance.ELEMENT_ARRAY_BUFFER,this._buffer=new ArrayBuffer(8)}_checkArrayUse(){this._uint16Array&&(this._uint16Array=new Uint16Array(this._buffer))}getUint16Array(){return this._uint16Array||(this._uint16Array=new Uint16Array(this._buffer))}_bindForVAO(){var gl=LayaGL.instance;gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this._glBuffer)}bind(){if(Buffer._bindedIndexBuffer!==this._glBuffer){var gl=LayaGL.instance;return gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this._glBuffer),Buffer._bindedIndexBuffer=this._glBuffer,!0}return!1}destory(){this._uint16Array=null,this._buffer=null}disposeResource(){this._disposeResource()}}IndexBuffer2D.create=function(bufferUsage=35044){return new IndexBuffer2D(bufferUsage)};class BufferStateBase{constructor(){this._nativeVertexArrayObject=LayaGL.layaGPUInstance.createVertexArray()}bind(){BufferStateBase._curBindedBufferState!==this&&(LayaGL.layaGPUInstance.bindVertexArray(this._nativeVertexArrayObject),BufferStateBase._curBindedBufferState=this)}unBind(){if(BufferStateBase._curBindedBufferState!==this)throw"BufferState: must call bind() function first.";LayaGL.layaGPUInstance.bindVertexArray(null),BufferStateBase._curBindedBufferState=null}destroy(){LayaGL.layaGPUInstance.deleteVertexArray(this._nativeVertexArrayObject)}bindForNative(){LayaGL.instance.bindVertexArray(this._nativeVertexArrayObject),BufferStateBase._curBindedBufferState=this}unBindForNative(){LayaGL.instance.bindVertexArray(null),BufferStateBase._curBindedBufferState=null}}class BufferState2D extends BufferStateBase{constructor(){super()}}class Mesh2D{constructor(stride,vballoc,iballoc){this._stride=0,this.vertNum=0,this.indexNum=0,this._applied=!1,this._quadNum=0,this.canReuse=!1,this._stride=stride,this._vb=new VertexBuffer2D(stride,LayaGL.instance.DYNAMIC_DRAW),vballoc?this._vb._resizeBuffer(vballoc,!1):Config.webGL2D_MeshAllocMaxMem&&this._vb._resizeBuffer(65536*stride,!1),this._ib=new IndexBuffer2D,iballoc&&this._ib._resizeBuffer(iballoc,!1)}cloneWithNewVB(){var mesh=new Mesh2D(this._stride,0,0);return mesh._ib=this._ib,mesh._quadNum=this._quadNum,mesh._attribInfo=this._attribInfo,mesh}cloneWithNewVBIB(){var mesh=new Mesh2D(this._stride,0,0);return mesh._attribInfo=this._attribInfo,mesh}getVBW(){return this._vb.setNeedUpload(),this._vb}getVBR(){return this._vb}getIBR(){return this._ib}getIBW(){return this._ib.setNeedUpload(),this._ib}createQuadIB(QuadNum){this._quadNum=QuadNum,this._ib._resizeBuffer(6*QuadNum*2,!1),this._ib.byteLength=this._ib.bufferLength;for(var bd=this._ib.getUint16Array(),idx=0,curvert=0,i=0;i<QuadNum;i++)bd[idx++]=curvert,bd[idx++]=curvert+2,bd[idx++]=curvert+1,bd[idx++]=curvert,bd[idx++]=curvert+3,bd[idx++]=curvert+2,curvert+=4;this._ib.setNeedUpload()}setAttributes(attribs){if(this._attribInfo=attribs,this._attribInfo.length%3!=0)throw"Mesh2D setAttributes error!"}configVAO(gl){if(!this._applied){this._applied=!0,this._vao||(this._vao=new BufferState2D),this._vao.bind(),this._vb._bindForVAO(),this._ib.setNeedUpload(),this._ib._bind_uploadForVAO();for(var attribNum=this._attribInfo.length/3,idx=0,i=0;i<attribNum;i++){var _size=this._attribInfo[idx+1],_type=this._attribInfo[idx],_off=this._attribInfo[idx+2];gl.enableVertexAttribArray(i),gl.vertexAttribPointer(i,_size,_type,!1,this._stride,_off),idx+=3}this._vao.unBind()}}useMesh(gl){this._applied||this.configVAO(gl),this._vao.bind(),this._vb.bind(),this._ib._bind_upload()||this._ib.bind(),this._vb._bind_upload()||this._vb.bind()}getEleNum(){return this._ib.getBuffer().byteLength/2}releaseMesh(){}destroy(){}clearVB(){this._vb.clear()}}Mesh2D._gvaoid=0;class MeshQuadTexture extends Mesh2D{constructor(){super(MeshQuadTexture.const_stride,4,4),this.canReuse=!0,this.setAttributes(MeshQuadTexture._fixattriInfo),MeshQuadTexture._fixib?(this._ib=MeshQuadTexture._fixib,this._quadNum=MeshQuadTexture._maxIB):(this.createQuadIB(MeshQuadTexture._maxIB),MeshQuadTexture._fixib=this._ib)}static __int__(){MeshQuadTexture._fixattriInfo=[5126,4,0,5121,4,16,5121,4,20]}static getAMesh(mainctx){var ret=null;return ret=MeshQuadTexture._POOL.length?MeshQuadTexture._POOL.pop():new MeshQuadTexture,mainctx&&ret._vb._resizeBuffer(65536*MeshQuadTexture.const_stride,!1),ret}releaseMesh(){this._vb.setByteLength(0),this.vertNum=0,this.indexNum=0,MeshQuadTexture._POOL.push(this)}destroy(){this._vb.destroy(),this._vb.deleteBuffer()}addQuad(pos,uv,color,useTex){var vb=this._vb,vpos=vb._byteLength>>2;vb.setByteLength(vpos+MeshQuadTexture.const_stride<<2);var vbdata=vb._floatArray32||vb.getFloat32Array(),vbu32Arr=vb._uint32Array,cpos=vpos,useTexVal=useTex?255:0;vbdata[cpos++]=pos[0],vbdata[cpos++]=pos[1],vbdata[cpos++]=uv[0],vbdata[cpos++]=uv[1],vbu32Arr[cpos++]=color,vbu32Arr[cpos++]=useTexVal,vbdata[cpos++]=pos[2],vbdata[cpos++]=pos[3],vbdata[cpos++]=uv[2],vbdata[cpos++]=uv[3],vbu32Arr[cpos++]=color,vbu32Arr[cpos++]=useTexVal,vbdata[cpos++]=pos[4],vbdata[cpos++]=pos[5],vbdata[cpos++]=uv[4],vbdata[cpos++]=uv[5],vbu32Arr[cpos++]=color,vbu32Arr[cpos++]=useTexVal,vbdata[cpos++]=pos[6],vbdata[cpos++]=pos[7],vbdata[cpos++]=uv[6],vbdata[cpos++]=uv[7],vbu32Arr[cpos++]=color,vbu32Arr[cpos++]=useTexVal,vb._upload=!0}}MeshQuadTexture.const_stride=24,MeshQuadTexture._maxIB=16384,MeshQuadTexture._POOL=[];class MeshTexture extends Mesh2D{constructor(){super(MeshTexture.const_stride,4,4),this.canReuse=!0,this.setAttributes(MeshTexture._fixattriInfo)}static __init__(){MeshTexture._fixattriInfo=[5126,4,0,5121,4,16,5121,4,20]}static getAMesh(mainctx){var ret;return ret=MeshTexture._POOL.length?MeshTexture._POOL.pop():new MeshTexture,mainctx&&ret._vb._resizeBuffer(65536*MeshTexture.const_stride,!1),ret}addData(vertices,uvs,idx,matrix,rgba){var vb=this._vb,ib=this._ib,vertsz=vertices.length>>1,f32pos=vb.needSize(vertsz*MeshTexture.const_stride)>>2,vbdata=vb._floatArray32||vb.getFloat32Array(),vbu32Arr=vb._uint32Array,ci=0,m00=matrix.a,m01=matrix.b,m10=matrix.c,m11=matrix.d,tx=matrix.tx,ty=matrix.ty,i=0;for(i=0;i<vertsz;i++){var x=vertices[ci],y=vertices[ci+1];vbdata[f32pos]=x*m00+y*m10+tx,vbdata[f32pos+1]=x*m01+y*m11+ty,vbdata[f32pos+2]=uvs[ci],vbdata[f32pos+3]=uvs[ci+1],vbu32Arr[f32pos+4]=rgba,vbu32Arr[f32pos+5]=255,f32pos+=6,ci+=2}vb.setNeedUpload();var vertN=this.vertNum,sz=idx.length,stib=ib.needSize(idx.byteLength),cidx=ib.getUint16Array(),stibid=stib>>1;if(vertN>0){var end=stibid+sz,si=0;for(i=stibid;i<end;i++,si++)cidx[i]=idx[si]+vertN}else cidx.set(idx,stibid);ib.setNeedUpload(),this.vertNum+=vertsz,this.indexNum+=idx.length}releaseMesh(){this._vb.setByteLength(0),this._ib.setByteLength(0),this.vertNum=0,this.indexNum=0,MeshTexture._POOL.push(this)}destroy(){this._ib.destroy(),this._vb.destroy(),this._ib.disposeResource(),this._vb.deleteBuffer()}}MeshTexture.const_stride=24,MeshTexture._POOL=[];class MeshVG extends Mesh2D{constructor(){super(MeshVG.const_stride,4,4),this.canReuse=!0,this.setAttributes(MeshVG._fixattriInfo)}static __init__(){MeshVG._fixattriInfo=[5126,2,0,5121,4,8]}static getAMesh(mainctx){var ret;return ret=MeshVG._POOL.length?MeshVG._POOL.pop():new MeshVG,mainctx&&ret._vb._resizeBuffer(65536*MeshVG.const_stride,!1),ret}addVertAndIBToMesh(ctx,points,rgba,ib){for(var f32pos=this._vb.needSize(points.length/2*MeshVG.const_stride)>>2,vbdata=this._vb._floatArray32||this._vb.getFloat32Array(),vbu32Arr=this._vb._uint32Array,ci=0,sz=points.length/2,i=0;i<sz;i++)vbdata[f32pos++]=points[ci],vbdata[f32pos++]=points[ci+1],ci+=2,vbu32Arr[f32pos++]=rgba;this._vb.setNeedUpload(),this._ib.append(new Uint16Array(ib)),this._ib.setNeedUpload(),this.vertNum+=sz,this.indexNum+=ib.length}releaseMesh(){this._vb.setByteLength(0),this._ib.setByteLength(0),this.vertNum=0,this.indexNum=0,MeshVG._POOL.push(this)}destroy(){this._ib.destroy(),this._vb.destroy(),this._ib.disposeResource(),this._vb.deleteBuffer()}}MeshVG.const_stride=12,MeshVG._POOL=[];class WebGLCacheAsNormalCanvas{constructor(ctx,sp){this.submitStartPos=0,this.submitEndPos=0,this.context=null,this.touches=[],this.submits=[],this.sprite=null,this.meshlist=[],this.cachedClipInfo=new Matrix,this.oldTx=0,this.oldTy=0,this.invMat=new Matrix,this.context=ctx,this.sprite=sp,ctx._globalClipMatrix.copyTo(this.cachedClipInfo)}startRec(){this.context._charSubmitCache._enbale&&(this.context._charSubmitCache.enable(!1,this.context),this.context._charSubmitCache.enable(!0,this.context)),this.context._incache=!0,this.touches.length=0,this.context.touches=this.touches,this.context._globalClipMatrix.copyTo(this.cachedClipInfo),this.submits.length=0,this.submitStartPos=this.context._submits._length;for(var i=0,sz=this.meshlist.length;i<sz;i++){var curm=this.meshlist[i];curm.canReuse?curm.releaseMesh():curm.destroy()}this.meshlist.length=0,this._mesh=MeshQuadTexture.getAMesh(!1),this._pathMesh=MeshVG.getAMesh(!1),this._triangleMesh=MeshTexture.getAMesh(!1),this.meshlist.push(this._mesh),this.meshlist.push(this._pathMesh),this.meshlist.push(this._triangleMesh),this.context._curSubmit=SubmitBase.RENDERBASE,this._oldMesh=this.context._mesh,this._oldPathMesh=this.context._pathMesh,this._oldTriMesh=this.context._triangleMesh,this._oldMeshList=this.context.meshlist,this.context._mesh=this._mesh,this.context._pathMesh=this._pathMesh,this.context._triangleMesh=this._triangleMesh,this.context.meshlist=this.meshlist,this.oldTx=this.context._curMat.tx,this.oldTy=this.context._curMat.ty,this.context._curMat.tx=0,this.context._curMat.ty=0,this.context._curMat.copyTo(this.invMat),this.invMat.invert()}endRec(){this.context._charSubmitCache._enbale&&(this.context._charSubmitCache.enable(!1,this.context),this.context._charSubmitCache.enable(!0,this.context));var parsubmits=this.context._submits;this.submitEndPos=parsubmits._length;for(var num=this.submitEndPos-this.submitStartPos,i=0;i<num;i++)this.submits.push(parsubmits[this.submitStartPos+i]);parsubmits._length-=num,this.context._mesh=this._oldMesh,this.context._pathMesh=this._oldPathMesh,this.context._triangleMesh=this._oldTriMesh,this.context.meshlist=this._oldMeshList,this.context._curSubmit=SubmitBase.RENDERBASE,this.context._curMat.tx=this.oldTx,this.context._curMat.ty=this.oldTy,this.context.touches=null,this.context._incache=!1}isCacheValid(){var curclip=this.context._globalClipMatrix;return curclip.a==this.cachedClipInfo.a&&curclip.b==this.cachedClipInfo.b&&curclip.c==this.cachedClipInfo.c&&curclip.d==this.cachedClipInfo.d&&curclip.tx==this.cachedClipInfo.tx&&curclip.ty==this.cachedClipInfo.ty}flushsubmit(){var curSubmit=SubmitBase.RENDERBASE;this.submits.forEach(function(subm){subm!=SubmitBase.RENDERBASE&&(SubmitBase.preRender=curSubmit,curSubmit=subm,subm.renderSubmit())})}releaseMem(){}}WebGLCacheAsNormalCanvas.matI=new Matrix;var texture_vs="/*\r\n\ttexture和fillrect使用的。\r\n*/\r\nattribute vec4 posuv;\r\nattribute vec4 attribColor;\r\nattribute vec4 attribFlags;\r\n//attribute vec4 clipDir;\r\n//attribute vec2 clipRect;\r\nuniform vec4 clipMatDir;\r\nuniform vec2 clipMatPos;\t\t// 这个是全局的,不用再应用矩阵了。\r\nvarying vec2 cliped;\r\nuniform vec2 size;\r\nuniform vec2 clipOff;\t\t\t// 使用要把clip偏移。cacheas normal用. 只用了[0]\r\n#ifdef WORLDMAT\r\n\tuniform mat4 mmat;\r\n#endif\r\n#ifdef MVP3D\r\n\tuniform mat4 u_MvpMatrix;\r\n#endif\r\nvarying vec4 v_texcoordAlpha;\r\nvarying vec4 v_color;\r\nvarying float v_useTex;\r\n\r\nvoid main() {\r\n\r\n\tvec4 pos = vec4(posuv.xy,0.,1.);\r\n#ifdef WORLDMAT\r\n\tpos=mmat*pos;\r\n#endif\r\n\tvec4 pos1 =vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,0.,1.0);\r\n#ifdef MVP3D\r\n\tgl_Position=u_MvpMatrix*pos1;\r\n#else\r\n\tgl_Position=pos1;\r\n#endif\r\n\tv_texcoordAlpha.xy = posuv.zw;\r\n\t//v_texcoordAlpha.z = attribColor.a/255.0;\r\n\tv_color = attribColor/255.0;\r\n\tv_color.xyz*=v_color.w;//反正后面也要预乘\r\n\t\r\n\tv_useTex = attribFlags.r/255.0;\r\n\tfloat clipw = length(clipMatDir.xy);\r\n\tfloat cliph = length(clipMatDir.zw);\r\n\t\r\n\tvec2 clpos = clipMatPos.xy;\r\n\t#ifdef WORLDMAT\r\n\t\t// 如果有mmat,需要修改clipMatPos,因为 这是cacheas normal (如果不是就错了), clipMatPos被去掉了偏移\r\n\t\tif(clipOff[0]>0.0){\r\n\t\t\tclpos.x+=mmat[3].x;\t//tx\t最简单处理\r\n\t\t\tclpos.y+=mmat[3].y;\t//ty\r\n\t\t}\r\n\t#endif\r\n\tvec2 clippos = pos.xy - clpos;\t//pos已经应用矩阵了,为了减的有意义,clip的位置也要缩放\r\n\tif(clipw>20000. && cliph>20000.)\r\n\t\tcliped = vec2(0.5,0.5);\r\n\telse {\r\n\t\t//转成0到1之间。/clipw/clipw 表示clippos与normalize之后的clip朝向点积之后,再除以clipw\r\n\t\tcliped=vec2( dot(clippos,clipMatDir.xy)/clipw/clipw, dot(clippos,clipMatDir.zw)/cliph/cliph);\r\n\t}\r\n\r\n}",texture_ps="/*\r\n\ttexture和fillrect使用的。\r\n*/\r\n#ifdef FSHIGHPRECISION\r\nprecision highp float;\r\n#else\r\nprecision mediump float;\r\n#endif\r\n\r\nvarying vec4 v_texcoordAlpha;\r\nvarying vec4 v_color;\r\nvarying float v_useTex;\r\nuniform sampler2D texture;\r\nvarying vec2 cliped;\r\n\r\n#ifdef BLUR_FILTER\r\nuniform vec4 strength_sig2_2sig2_gauss1;\r\nuniform vec2 blurInfo;\r\n\r\n#define PI 3.141593\r\n\r\nfloat getGaussian(float x, float y){\r\n return strength_sig2_2sig2_gauss1.w*exp(-(x*x+y*y)/strength_sig2_2sig2_gauss1.z);\r\n}\r\n\r\nvec4 blur(){\r\n const float blurw = 9.0;\r\n vec4 vec4Color = vec4(0.0,0.0,0.0,0.0);\r\n vec2 halfsz=vec2(blurw,blurw)/2.0/blurInfo; \r\n vec2 startpos=v_texcoordAlpha.xy-halfsz;\r\n vec2 ctexcoord = startpos;\r\n vec2 step = 1.0/blurInfo; //每个像素 \r\n \r\n for(float y = 0.0;y<=blurw; ++y){\r\n ctexcoord.x=startpos.x;\r\n for(float x = 0.0;x<=blurw; ++x){\r\n //TODO 纹理坐标的固定偏移应该在vs中处理\r\n vec4Color += texture2D(texture, ctexcoord)*getGaussian(x-blurw/2.0,y-blurw/2.0);\r\n ctexcoord.x+=step.x;\r\n }\r\n ctexcoord.y+=step.y;\r\n }\r\n return vec4Color;\r\n}\r\n#endif\r\n\r\n#ifdef COLOR_FILTER\r\nuniform vec4 colorAlpha;\r\nuniform mat4 colorMat;\r\n#endif\r\n\r\n#ifdef GLOW_FILTER\r\nuniform vec4 u_color;\r\nuniform vec4 u_blurInfo1;\r\nuniform vec4 u_blurInfo2;\r\n#endif\r\n\r\n#ifdef COLOR_ADD\r\nuniform vec4 colorAdd;\r\n#endif\r\n\r\n#ifdef FILLTEXTURE\t\r\nuniform vec4 u_TexRange;//startu,startv,urange, vrange\r\n#endif\r\nvoid main() {\r\n\tif(cliped.x<0.) discard;\r\n\tif(cliped.x>1.) discard;\r\n\tif(cliped.y<0.) discard;\r\n\tif(cliped.y>1.) discard;\r\n\t\r\n#ifdef FILLTEXTURE\t\r\n vec4 color= texture2D(texture, fract(v_texcoordAlpha.xy)*u_TexRange.zw + u_TexRange.xy);\r\n#else\r\n vec4 color= texture2D(texture, v_texcoordAlpha.xy);\r\n#endif\r\n\r\n if(v_useTex<=0.)color = vec4(1.,1.,1.,1.);\r\n color.a*=v_color.w;\r\n //color.rgb*=v_color.w;\r\n color.rgb*=v_color.rgb;\r\n gl_FragColor=color;\r\n \r\n #ifdef COLOR_ADD\r\n\tgl_FragColor = vec4(colorAdd.rgb,colorAdd.a*gl_FragColor.a);\r\n\tgl_FragColor.xyz *= colorAdd.a;\r\n #endif\r\n \r\n #ifdef BLUR_FILTER\r\n\tgl_FragColor = blur();\r\n\tgl_FragColor.w*=v_color.w; \r\n #endif\r\n \r\n #ifdef COLOR_FILTER\r\n\tmat4 alphaMat =colorMat;\r\n\r\n\talphaMat[0][3] *= gl_FragColor.a;\r\n\talphaMat[1][3] *= gl_FragColor.a;\r\n\talphaMat[2][3] *= gl_FragColor.a;\r\n\r\n\tgl_FragColor = gl_FragColor * alphaMat;\r\n\tgl_FragColor += colorAlpha/255.0*gl_FragColor.a;\r\n #endif\r\n \r\n #ifdef GLOW_FILTER\r\n\tconst float c_IterationTime = 10.0;\r\n\tfloat floatIterationTotalTime = c_IterationTime * c_IterationTime;\r\n\tvec4 vec4Color = vec4(0.0,0.0,0.0,0.0);\r\n\tvec2 vec2FilterDir = vec2(-(u_blurInfo1.z)/u_blurInfo2.x,-(u_blurInfo1.w)/u_blurInfo2.y);\r\n\tvec2 vec2FilterOff = vec2(u_blurInfo1.x/u_blurInfo2.x/c_IterationTime * 2.0,u_blurInfo1.y/u_blurInfo2.y/c_IterationTime * 2.0);\r\n\tfloat maxNum = u_blurInfo1.x * u_blurInfo1.y;\r\n\tvec2 vec2Off = vec2(0.0,0.0);\r\n\tfloat floatOff = c_IterationTime/2.0;\r\n\tfor(float i = 0.0;i<=c_IterationTime; ++i){\r\n\t\tfor(float j = 0.0;j<=c_IterationTime; ++j){\r\n\t\t\tvec2Off = vec2(vec2FilterOff.x * (i - floatOff),vec2FilterOff.y * (j - floatOff));\r\n\t\t\tvec4Color += texture2D(texture, v_texcoordAlpha.xy + vec2FilterDir + vec2Off)/floatIterationTotalTime;\r\n\t\t}\r\n\t}\r\n\tgl_FragColor = vec4(u_color.rgb,vec4Color.a * u_blurInfo2.z);\r\n\tgl_FragColor.rgb *= gl_FragColor.a; \r\n #endif\r\n \r\n}",prime_vs="attribute vec4 position;\r\nattribute vec4 attribColor;\r\n//attribute vec4 clipDir;\r\n//attribute vec2 clipRect;\r\nuniform vec4 clipMatDir;\r\nuniform vec2 clipMatPos;\r\n#ifdef WORLDMAT\r\n\tuniform mat4 mmat;\r\n#endif\r\nuniform mat4 u_mmat2;\r\n//uniform vec2 u_pos;\r\nuniform vec2 size;\r\nvarying vec4 color;\r\n//vec4 dirxy=vec4(0.9,0.1, -0.1,0.9);\r\n//vec4 clip=vec4(100.,30.,300.,600.);\r\nvarying vec2 cliped;\r\nvoid main(){\r\n\t\r\n#ifdef WORLDMAT\r\n\tvec4 pos=mmat*vec4(position.xy,0.,1.);\r\n\tgl_Position =vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,pos.z,1.0);\r\n#else\r\n\tgl_Position =vec4((position.x/size.x-0.5)*2.0,(0.5-position.y/size.y)*2.0,position.z,1.0);\r\n#endif\t\r\n\tfloat clipw = length(clipMatDir.xy);\r\n\tfloat cliph = length(clipMatDir.zw);\r\n\tvec2 clippos = position.xy - clipMatPos.xy;\t//pos已经应用矩阵了,为了减的有意义,clip的位置也要缩放\r\n\tif(clipw>20000. && cliph>20000.)\r\n\t\tcliped = vec2(0.5,0.5);\r\n\telse {\r\n\t\t//clipdir是带缩放的方向,由于上面clippos是在缩放后的空间计算的,所以需要把方向先normalize一下\r\n\t\tcliped=vec2( dot(clippos,clipMatDir.xy)/clipw/clipw, dot(clippos,clipMatDir.zw)/cliph/cliph);\r\n\t}\r\n //pos2d.x = dot(clippos,dirx);\r\n color=attribColor/255.;\r\n}",prime_ps="precision mediump float;\r\n//precision mediump float;\r\nvarying vec4 color;\r\n//uniform float alpha;\r\nvarying vec2 cliped;\r\nvoid main(){\r\n\t//vec4 a=vec4(color.r, color.g, color.b, 1);\r\n\t//a.a*=alpha;\r\n gl_FragColor= color;// vec4(color.r, color.g, color.b, alpha);\r\n\tgl_FragColor.rgb*=color.a;\r\n\tif(cliped.x<0.) discard;\r\n\tif(cliped.x>1.) discard;\r\n\tif(cliped.y<0.) discard;\r\n\tif(cliped.y>1.) discard;\r\n}",skin_vs="attribute vec2 position;\r\nattribute vec2 texcoord;\r\nattribute vec4 color;\r\nuniform vec2 size;\r\nuniform float offsetX;\r\nuniform float offsetY;\r\nuniform mat4 mmat;\r\nuniform mat4 u_mmat2;\r\nvarying vec2 v_texcoord;\r\nvarying vec4 v_color;\r\nvoid main() {\r\n vec4 pos=mmat*u_mmat2*vec4(offsetX+position.x,offsetY+position.y,0,1 );\r\n gl_Position = vec4((pos.x/size.x-0.5)*2.0,(0.5-pos.y/size.y)*2.0,pos.z,1.0);\r\n v_color = color;\r\n v_color.rgb *= v_color.a;\r\n v_texcoord = texcoord; \r\n}",skin_ps="precision mediump float;\r\nvarying vec2 v_texcoord;\r\nvarying vec4 v_color;\r\nuniform sampler2D texture;\r\nuniform float alpha;\r\nvoid main() {\r\n\tvec4 t_color = texture2D(texture, v_texcoord);\r\n\tgl_FragColor = t_color.rgba * v_color;\r\n\tgl_FragColor *= alpha;\r\n}";class Shader2D{constructor(){this.ALPHA=1,this.defines=new ShaderDefines2D,this.shaderType=0,this.fillStyle=DrawStyle.DEFAULT,this.strokeStyle=DrawStyle.DEFAULT}destroy(){this.defines=null,this.filters=null}static __init__(){Shader.preCompile2D(0,ShaderDefines2D.TEXTURE2D,texture_vs,texture_ps,null),Shader.preCompile2D(0,ShaderDefines2D.PRIMITIVE,prime_vs,prime_ps,null),Shader.preCompile2D(0,ShaderDefines2D.SKINMESH,skin_vs,skin_ps,null)}}class SkinMeshBuffer{constructor(){var gl=LayaGL.instance;this.ib=IndexBuffer2D.create(gl.DYNAMIC_DRAW),this.vb=VertexBuffer2D.create(8)}static getInstance(){return SkinMeshBuffer.instance=SkinMeshBuffer.instance||new SkinMeshBuffer}addSkinMesh(skinMesh){skinMesh.getData2(this.vb,this.ib,this.vb._byteLength/32)}reset(){this.vb.clear(),this.ib.clear()}}class BasePoly{static createLine2(p,indices,lineWidth,indexBase,outVertex,loop){if(p.length<4)return null;var points=BasePoly.tempData.length>p.length+2?BasePoly.tempData:new Array(p.length+2);points[0]=p[0],points[1]=p[1];var newlen=2,i=0,length=p.length;for(i=2;i<length;i+=2)Math.abs(p[i]-p[i-2])+Math.abs(p[i+1]-p[i-1])>.01&&(points[newlen++]=p[i],points[newlen++]=p[i+1]);loop&&Math.abs(p[0]-points[newlen-2])+Math.abs(p[1]-points[newlen-1])>.01&&(points[newlen++]=p[0],points[newlen++]=p[1]);var result=outVertex;length=newlen/2;var px,py,p1x,p1y,p2x,p2y,p3x,p3y,perpx,perpy,perp2x,perp2y,a1,b1,c1,a2,b2,c2,denom,dist,w=lineWidth/2;for(p1x=points[0],p1y=points[1],perpy=p1x-(p2x=points[2]),perpx=(perpx=-(p1y-(p2y=points[3])))/(dist=Math.sqrt(perpx*perpx+perpy*perpy))*w,perpy=perpy/dist*w,result.push(p1x-perpx,p1y-perpy,p1x+perpx,p1y+perpy),i=1;i<length-1;i++)p1x=points[2*(i-1)],p1y=points[2*(i-1)+1],p2x=points[2*i],p2y=points[2*i+1],p3x=points[2*(i+1)],p3y=points[2*(i+1)+1],perpy=p1x-p2x,perp2y=p2x-p3x,c1=(-(perpx=(perpx=-(p1y-p2y))/(dist=Math.sqrt(perpx*perpx+perpy*perpy))*w)+p1x)*(-(perpy=perpy/dist*w)+p2y)-(-perpx+p2x)*(-perpy+p1y),c2=(-(perp2x=(perp2x=-(p2y-p3y))/(dist=Math.sqrt(perp2x*perp2x+perp2y*perp2y))*w)+p3x)*(-(perp2y=perp2y/dist*w)+p2y)-(-perp2x+p2x)*(-perp2y+p3y),denom=(a1=-perpy+p1y-(-perpy+p2y))*(b2=-perp2x+p2x-(-perp2x+p3x))-(a2=-perp2y+p3y-(-perp2y+p2y))*(b1=-perpx+p2x-(-perpx+p1x)),Math.abs(denom)<.1?(denom+=10.1,result.push(p2x-perpx,p2y-perpy,p2x+perpx,p2y+perpy)):(px=(b1*c2-b2*c1)/denom,py=(a2*c1-a1*c2)/denom,result.push(px,py,p2x-(px-p2x),p2y-(py-p2y)));for(p1x=points[newlen-4],p1y=points[newlen-3],perpy=p1x-(p2x=points[newlen-2]),perpx=(perpx=-(p1y-(p2y=points[newlen-1])))/(dist=Math.sqrt(perpx*perpx+perpy*perpy))*w,perpy=perpy/dist*w,result.push(p2x-perpx,p2y-perpy,p2x+perpx,p2y+perpy),i=1;i<length;i++)indices.push(indexBase+2*(i-1),indexBase+2*(i-1)+1,indexBase+2*i+1,indexBase+2*i+1,indexBase+2*i,indexBase+2*(i-1));return result}static createLineTriangle(path,color,width,loop,outvb,vbstride,outib){var points=path.slice(),ptlen=points.length,p1x=points[0],p1y=points[1],p2x=points[2],len=(points[2],0),rp=0,dx=0,dy=0,pointnum=ptlen/2;if(!(pointnum<=1)&&2!=pointnum){for(var tmpData=new Array(4*pointnum),realPtNum=0,ci=0,i=0;i<pointnum-1;i++)p1x=points[ci++],p1y=points[ci++],p2x=points[ci++],dy=points[ci++]-p1y,0!=(dx=p2x-p1x)&&0!=dy&&(len=Math.sqrt(dx*dx+dy*dy))>.001&&(tmpData[rp=4*realPtNum]=p1x,tmpData[rp+1]=p1y,tmpData[rp+2]=dx/len,tmpData[rp+3]=dy/len,realPtNum++);for(loop?(p1x=points[ptlen-2],p1y=points[ptlen-1],p2x=points[0],dy=points[1]-p1y,0!=(dx=p2x-p1x)&&0!=dy&&(len=Math.sqrt(dx*dx+dy*dy))>.001&&(tmpData[rp=4*realPtNum]=p1x,tmpData[rp+1]=p1y,tmpData[rp+2]=dx/len,tmpData[rp+3]=dy/len,realPtNum++)):(tmpData[rp=4*realPtNum]=p1x,tmpData[rp+1]=p1y,tmpData[rp+2]=dx/len,tmpData[rp+3]=dy/len,realPtNum++),ci=0,i=0;i<pointnum;i++){p1x=points[ci],p1y=points[ci+1],p2x=points[ci+2],points[ci+3];points[ci+4],points[ci+5]}}}}BasePoly.tempData=new Array(256);class EarcutNode{constructor(i,x,y){this.i=i,this.x=x,this.y=y,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}}class Earcut{static earcut(data,holeIndices,dim){dim=dim||2;var minX,minY,maxX,maxY,x,y,invSize,hasHoles=holeIndices&&holeIndices.length,outerLen=hasHoles?holeIndices[0]*dim:data.length,outerNode=Earcut.linkedList(data,0,outerLen,dim,!0),triangles=[];if(!outerNode)return triangles;if(hasHoles&&(outerNode=Earcut.eliminateHoles(data,holeIndices,outerNode,dim)),data.length>80*dim){minX=maxX=data[0],minY=maxY=data[1];for(var i=dim;i<outerLen;i+=dim)(x=data[i])<minX&&(minX=x),(y=data[i+1])<minY&&(minY=y),x>maxX&&(maxX=x),y>maxY&&(maxY=y);invSize=0!==(invSize=Math.max(maxX-minX,maxY-minY))?1/invSize:0}return Earcut.earcutLinked(outerNode,triangles,dim,minX,minY,invSize),triangles}static linkedList(data,start,end,dim,clockwise){var i,last;if(clockwise===Earcut.signedArea(data,start,end,dim)>0)for(i=start;i<end;i+=dim)last=Earcut.insertNode(i,data[i],data[i+1],last);else for(i=end-dim;i>=start;i-=dim)last=Earcut.insertNode(i,data[i],data[i+1],last);return last&&Earcut.equals(last,last.next)&&(Earcut.removeNode(last),last=last.next),last}static filterPoints(start,end){if(!start)return start;end||(end=start);var again,p=start;do{if(again=!1,p.steiner||!Earcut.equals(p,p.next)&&0!==Earcut.area(p.prev,p,p.next))p=p.next;else{if(Earcut.removeNode(p),(p=end=p.prev)===p.next)break;again=!0}}while(again||p!==end);return end}static earcutLinked(ear,triangles,dim,minX,minY,invSize,pass=null){if(ear){!pass&&invSize&&Earcut.indexCurve(ear,minX,minY,invSize);for(var prev,next,stop=ear;ear.prev!==ear.next;)if(prev=ear.prev,next=ear.next,invSize?Earcut.isEarHashed(ear,minX,minY,invSize):Earcut.isEar(ear))triangles.push(prev.i/dim),triangles.push(ear.i/dim),triangles.push(next.i/dim),Earcut.removeNode(ear),ear=next.next,stop=next.next;else if((ear=next)===stop){pass?1===pass?(ear=Earcut.cureLocalIntersections(ear,triangles,dim),Earcut.earcutLinked(ear,triangles,dim,minX,minY,invSize,2)):2===pass&&Earcut.splitEarcut(ear,triangles,dim,minX,minY,invSize):Earcut.earcutLinked(Earcut.filterPoints(ear,null),triangles,dim,minX,minY,invSize,1);break}}}static isEar(ear){var a=ear.prev,b=ear,c=ear.next;if(Earcut.area(a,b,c)>=0)return!1;for(var p=ear.next.next;p!==ear.prev;){if(Earcut.pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&Earcut.area(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}static isEarHashed(ear,minX,minY,invSize){var a=ear.prev,b=ear,c=ear.next;if(Earcut.area(a,b,c)>=0)return!1;for(var minTX=a.x<b.x?a.x<c.x?a.x:c.x:b.x<c.x?b.x:c.x,minTY=a.y<b.y?a.y<c.y?a.y:c.y:b.y<c.y?b.y:c.y,maxTX=a.x>b.x?a.x>c.x?a.x:c.x:b.x>c.x?b.x:c.x,maxTY=a.y>b.y?a.y>c.y?a.y:c.y:b.y>c.y?b.y:c.y,minZ=Earcut.zOrder(minTX,minTY,minX,minY,invSize),maxZ=Earcut.zOrder(maxTX,maxTY,minX,minY,invSize),p=ear.nextZ;p&&p.z<=maxZ;){if(p!==ear.prev&&p!==ear.next&&Earcut.pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&Earcut.area(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(p=ear.prevZ;p&&p.z>=minZ;){if(p!==ear.prev&&p!==ear.next&&Earcut.pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&Earcut.area(p.prev,p,p.next)>=0)return!1;p=p.prevZ}return!0}static cureLocalIntersections(start,triangles,dim){var p=start;do{var a=p.prev,b=p.next.next;!Earcut.equals(a,b)&&Earcut.intersects(a,p,p.next,b)&&Earcut.locallyInside(a,b)&&Earcut.locallyInside(b,a)&&(triangles.push(a.i/dim),triangles.push(p.i/dim),triangles.push(b.i/dim),Earcut.removeNode(p),Earcut.removeNode(p.next),p=start=b),p=p.next}while(p!==start);return p}static splitEarcut(start,triangles,dim,minX,minY,invSize){var a=start;do{for(var b=a.next.next;b!==a.prev;){if(a.i!==b.i&&Earcut.isValidDiagonal(a,b)){var c=Earcut.splitPolygon(a,b);return a=Earcut.filterPoints(a,a.next),c=Earcut.filterPoints(c,c.next),Earcut.earcutLinked(a,triangles,dim,minX,minY,invSize),void Earcut.earcutLinked(c,triangles,dim,minX,minY,invSize)}b=b.next}a=a.next}while(a!==start)}static eliminateHoles(data,holeIndices,outerNode,dim){var i,len,start,end,list,queue=[];for(i=0,len=holeIndices.length;i<len;i++)start=holeIndices[i]*dim,end=i<len-1?holeIndices[i+1]*dim:data.length,(list=Earcut.linkedList(data,start,end,dim,!1))===list.next&&(list.steiner=!0),queue.push(Earcut.getLeftmost(list));for(queue.sort(Earcut.compareX),i=0;i<queue.length;i++)Earcut.eliminateHole(queue[i],outerNode),outerNode=Earcut.filterPoints(outerNode,outerNode.next);return outerNode}static compareX(a,b){return a.x-b.x}static eliminateHole(hole,outerNode){if(outerNode=Earcut.findHoleBridge(hole,outerNode)){var b=Earcut.splitPolygon(outerNode,hole);Earcut.filterPoints(b,b.next)}}static findHoleBridge(hole,outerNode){var m,p=outerNode,hx=hole.x,hy=hole.y,qx=-1/0;do{if(hy<=p.y&&hy>=p.next.y&&p.next.y!==p.y){var x=p.x+(hy-p.y)*(p.next.x-p.x)/(p.next.y-p.y);if(x<=hx&&x>qx){if(qx=x,x===hx){if(hy===p.y)return p;if(hy===p.next.y)return p.next}m=p.x<p.next.x?p:p.next}}p=p.next}while(p!==outerNode);if(!m)return null;if(hx===qx)return m.prev;var tan,stop=m,mx=m.x,my=m.y,tanMin=1/0;for(p=m.next;p!==stop;)hx>=p.x&&p.x>=mx&&hx!==p.x&&Earcut.pointInTriangle(hy<my?hx:qx,hy,mx,my,hy<my?qx:hx,hy,p.x,p.y)&&((tan=Math.abs(hy-p.y)/(hx-p.x))<tanMin||tan===tanMin&&p.x>m.x)&&Earcut.locallyInside(p,hole)&&(m=p,tanMin=tan),p=p.next;return m}static indexCurve(start,minX,minY,invSize){var p=start;do{null===p.z&&(p.z=Earcut.zOrder(p.x,p.y,minX,minY,invSize)),p.prevZ=p.prev,p.nextZ=p.next,p=p.next}while(p!==start);p.prevZ.nextZ=null,p.prevZ=null,Earcut.sortLinked(p)}static sortLinked(list){var i,p,q,e,tail,numMerges,pSize,qSize,inSize=1;do{for(p=list,list=null,tail=null,numMerges=0;p;){for(numMerges++,q=p,pSize=0,i=0;i<inSize&&(pSize++,q=q.nextZ);i++);for(qSize=inSize;pSize>0||qSize>0&&q;)0!==pSize&&(0===qSize||!q||p.z<=q.z)?(e=p,p=p.nextZ,pSize--):(e=q,q=q.nextZ,qSize--),tail?tail.nextZ=e:list=e,e.prevZ=tail,tail=e;p=q}tail.nextZ=null,inSize*=2}while(numMerges>1);return list}static zOrder(x,y,minX,minY,invSize){return(x=1431655765&((x=858993459&((x=252645135&((x=16711935&((x=32767*(x-minX)*invSize)|x<<8))|x<<4))|x<<2))|x<<1))|(y=1431655765&((y=858993459&((y=252645135&((y=16711935&((y=32767*(y-minY)*invSize)|y<<8))|y<<4))|y<<2))|y<<1))<<1}static getLeftmost(start){var p=start,leftmost=start;do{p.x<leftmost.x&&(leftmost=p),p=p.next}while(p!==start);return leftmost}static pointInTriangle(ax,ay,bx,by,cx,cy,px,py){return(cx-px)*(ay-py)-(ax-px)*(cy-py)>=0&&(ax-px)*(by-py)-(bx-px)*(ay-py)>=0&&(bx-px)*(cy-py)-(cx-px)*(by-py)>=0}static isValidDiagonal(a,b){return a.next.i!==b.i&&a.prev.i!==b.i&&!Earcut.intersectsPolygon(a,b)&&Earcut.locallyInside(a,b)&&Earcut.locallyInside(b,a)&&Earcut.middleInside(a,b)}static area(p,q,r){return(q.y-p.y)*(r.x-q.x)-(q.x-p.x)*(r.y-q.y)}static equals(p1,p2){return p1.x===p2.x&&p1.y===p2.y}static intersects(p1,q1,p2,q2){return!!(Earcut.equals(p1,q1)&&Earcut.equals(p2,q2)||Earcut.equals(p1,q2)&&Earcut.equals(p2,q1))||Earcut.area(p1,q1,p2)>0!=Earcut.area(p1,q1,q2)>0&&Earcut.area(p2,q2,p1)>0!=Earcut.area(p2,q2,q1)>0}static intersectsPolygon(a,b){var p=a;do{if(p.i!==a.i&&p.next.i!==a.i&&p.i!==b.i&&p.next.i!==b.i&&Earcut.intersects(p,p.next,a,b))return!0;p=p.next}while(p!==a);return!1}static locallyInside(a,b){return Earcut.area(a.prev,a,a.next)<0?Earcut.area(a,b,a.next)>=0&&Earcut.area(a,a.prev,b)>=0:Earcut.area(a,b,a.prev)<0||Earcut.area(a,a.next,b)<0}static middleInside(a,b){var p=a,inside=!1,px=(a.x+b.x)/2,py=(a.y+b.y)/2;do{p.y>py!=p.next.y>py&&p.next.y!==p.y&&px<(p.next.x-p.x)*(py-p.y)/(p.next.y-p.y)+p.x&&(inside=!inside),p=p.next}while(p!==a);return inside}static splitPolygon(a,b){var a2=new EarcutNode(a.i,a.x,a.y),b2=new EarcutNode(b.i,b.x,b.y),an=a.next,bp=b.prev;return a.next=b,b.prev=a,a2.next=an,an.prev=a2,b2.next=a2,a2.prev=b2,bp.next=b2,b2.prev=bp,b2}static insertNode(i,x,y,last){var p=new EarcutNode(i,x,y);return last?(p.next=last.next,p.prev=last,last.next.prev=p,last.next=p):(p.prev=p,p.next=p),p}static removeNode(p){p.next.prev=p.prev,p.prev.next=p.next,p.prevZ&&(p.prevZ.nextZ=p.nextZ),p.nextZ&&(p.nextZ.prevZ=p.prevZ)}static signedArea(data,start,end,dim){for(var sum=0,i=start,j=end-dim;i<end;i+=dim)sum+=(data[j]-data[i])*(data[i+1]+data[j+1]),j=i;return sum}}class CONST3D2D{}CONST3D2D.BYTES_PE=4,CONST3D2D.BYTES_PIDX=2,CONST3D2D.defaultMatrix4=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],CONST3D2D.defaultMinusYMatrix4=[1,0,0,0,0,-1,0,0,0,0,1,0,0,0,0,1],CONST3D2D.uniformMatrix3=[1,0,0,0,0,1,0,0,0,0,1,0],CONST3D2D._TMPARRAY=[],CONST3D2D._OFFSETX=0,CONST3D2D._OFFSETY=0;class Submit extends SubmitBase{constructor(renderType=SubmitBase.TYPE_2D){super(renderType)}renderSubmit(){if(0===this._numEle||!this._mesh||0==this._numEle)return 1;var _tex=this.shaderValue.textureHost;if(_tex){var source=_tex._getSource();if(!source)return 1;this.shaderValue.texture=source}var gl=WebGLContext.mainContext;return this._mesh.useMesh(gl),this.shaderValue.upload(),BlendMode.activeBlendFunction!==this._blendFn&&(WebGLContext.setBlend(gl,!0),this._blendFn(gl),BlendMode.activeBlendFunction=this._blendFn),gl.drawElements(gl.TRIANGLES,this._numEle,gl.UNSIGNED_SHORT,this._startIdx),Stat.renderBatches++,Stat.trianglesFaces+=this._numEle/3,1}releaseRender(){SubmitBase.RENDERBASE!=this&&--this._ref<1&&(Submit.POOL[Submit._poolSize++]=this,this.shaderValue.release(),this.shaderValue=null,this._mesh=null,this._parent&&(this._parent.releaseRender(),this._parent=null))}static create(context,mesh,sv){var o=Submit._poolSize?Submit.POOL[--Submit._poolSize]:new Submit;o._ref=1,o._mesh=mesh,o._key.clear(),o._startIdx=mesh.indexNum*CONST3D2D.BYTES_PIDX,o._numEle=0;var blendType=context._nBlendType;o._blendFn=context._targets?BlendMode.targetFns[blendType]:BlendMode.fns[blendType],o.shaderValue=sv,o.shaderValue.setValue(context._shader2D);var filters=context._shader2D.filters;return filters&&o.shaderValue.setFilters(filters),o}static createShape(ctx,mesh,numEle,sv){var o=Submit._poolSize?Submit.POOL[--Submit._poolSize]:new Submit;o._mesh=mesh,o._numEle=numEle,o._startIdx=2*mesh.indexNum,o._ref=1,o.shaderValue=sv,o.shaderValue.setValue(ctx._shader2D);var blendType=ctx._nBlendType;return o._key.blendShader=blendType,o._blendFn=ctx._targets?BlendMode.targetFns[blendType]:BlendMode.fns[blendType],o}}Submit._poolSize=0,Submit.POOL=[];class SubmitCanvas extends SubmitBase{constructor(){super(SubmitBase.TYPE_2D),this._matrix=new Matrix,this._matrix4=CONST3D2D.defaultMatrix4.concat(),this.shaderValue=new Value2D(0,0)}static create(canvas,alpha,filters){var o=SubmitCanvas.POOL._length?SubmitCanvas.POOL[--SubmitCanvas.POOL._length]:new SubmitCanvas;o.canv=canvas,o._ref=1,o._numEle=0;var v=o.shaderValue;return v.alpha=alpha,v.defines.setValue(0),filters&&filters.length&&v.setFilters(filters),o}renderSubmit(){var preAlpha=RenderState2D.worldAlpha,preMatrix4=RenderState2D.worldMatrix4,preMatrix=RenderState2D.worldMatrix,preFilters=RenderState2D.worldFilters,preWorldShaderDefines=RenderState2D.worldShaderDefines,v=this.shaderValue,m=this._matrix,m4=this._matrix4,mout=Matrix.TEMP;return Matrix.mul(m,preMatrix,mout),m4[0]=mout.a,m4[1]=mout.b,m4[4]=mout.c,m4[5]=mout.d,m4[12]=mout.tx,m4[13]=mout.ty,RenderState2D.worldMatrix=mout.clone(),RenderState2D.worldMatrix4=m4,RenderState2D.worldAlpha=RenderState2D.worldAlpha*v.alpha,v.filters&&v.filters.length&&(RenderState2D.worldFilters=v.filters,RenderState2D.worldShaderDefines=v.defines),this.canv.flushsubmit(),RenderState2D.worldAlpha=preAlpha,RenderState2D.worldMatrix4=preMatrix4,RenderState2D.worldMatrix.destroy(),RenderState2D.worldMatrix=preMatrix,RenderState2D.worldFilters=preFilters,RenderState2D.worldShaderDefines=preWorldShaderDefines,1}releaseRender(){if(--this._ref<1){var cache=SubmitCanvas.POOL;this._mesh=null,cache[cache._length++]=this}}getRenderType(){return SubmitBase.TYPE_CANVAS}}SubmitCanvas.POOL=[],SubmitCanvas.POOL._length=0;class SubmitTarget{constructor(){this.blendType=0,this._ref=1,this._key=new SubmitKey}renderSubmit(){var gl=WebGLContext.mainContext;this._mesh.useMesh(gl);var target=this.srcRT;return target&&(this.shaderValue.texture=target._getSource(),this.shaderValue.upload(),this.blend(),Stat.renderBatches++,Stat.trianglesFaces+=this._numEle/3,gl.drawElements(gl.TRIANGLES,this._numEle,gl.UNSIGNED_SHORT,this._startIdx)),1}blend(){if(BlendMode.activeBlendFunction!==BlendMode.fns[this.blendType]){var gl=WebGLContext.mainContext;gl.enable(gl.BLEND),BlendMode.fns[this.blendType](gl),BlendMode.activeBlendFunction=BlendMode.fns[this.blendType]}}getRenderType(){return 0}releaseRender(){if(--this._ref<1){var pool=SubmitTarget.POOL;pool[pool._length++]=this}}static create(context,mesh,sv,rt){var o=SubmitTarget.POOL._length?SubmitTarget.POOL[--SubmitTarget.POOL._length]:new SubmitTarget;if(o._mesh=mesh,o.srcRT=rt,o._startIdx=mesh.indexNum*CONST3D2D.BYTES_PIDX,o._ref=1,o._key.clear(),o._numEle=0,o.blendType=context._nBlendType,o._key.blendShader=o.blendType,o.shaderValue=sv,o.shaderValue.setValue(context._shader2D),context._colorFiler){var ft=context._colorFiler;sv.defines.add(ft.type),sv.colorMat=ft._mat,sv.colorAlpha=ft._alpha}return o}}SubmitTarget.POOL=[],SubmitTarget.POOL._length=0;class SubmitTexture extends SubmitBase{constructor(renderType=SubmitBase.TYPE_2D){super(renderType)}releaseRender(){--this._ref<1&&(SubmitTexture.POOL[SubmitTexture._poolSize++]=this,this.shaderValue.release(),this._mesh=null,this._parent&&(this._parent.releaseRender(),this._parent=null))}renderSubmit(){if(0===this._numEle)return 1;var tex=this.shaderValue.textureHost;if(tex){var source=tex?tex._getSource():null;if(!source)return 1}var gl=WebGLContext.mainContext;this._mesh.useMesh(gl);var lastSubmit=SubmitBase.preRender,prekey=SubmitBase.preRender._key;return 0===this._key.blendShader&&this._key.submitType===prekey.submitType&&this._key.blendShader===prekey.blendShader&&BaseShader.activeShader&&SubmitBase.preRender.clipInfoID==this.clipInfoID&&lastSubmit.shaderValue.defines._value===this.shaderValue.defines._value&&0==(this.shaderValue.defines._value&ShaderDefines2D.NOOPTMASK)?BaseShader.activeShader.uploadTexture2D(source):(BlendMode.activeBlendFunction!==this._blendFn&&(WebGLContext.setBlend(gl,!0),this._blendFn(gl),BlendMode.activeBlendFunction=this._blendFn),this.shaderValue.texture=source,this.shaderValue.upload()),gl.drawElements(gl.TRIANGLES,this._numEle,gl.UNSIGNED_SHORT,this._startIdx),Stat.renderBatches++,Stat.trianglesFaces+=this._numEle/3,1}static create(context,mesh,sv){var o=SubmitTexture._poolSize?SubmitTexture.POOL[--SubmitTexture._poolSize]:new SubmitTexture(SubmitBase.TYPE_TEXTURE);o._mesh=mesh,o._key.clear(),o._key.submitType=SubmitBase.KEY_DRAWTEXTURE,o._ref=1,o._startIdx=mesh.indexNum*CONST3D2D.BYTES_PIDX,o._numEle=0;var blendType=context._nBlendType;if(o._key.blendShader=blendType,o._blendFn=context._targets?BlendMode.targetFns[blendType]:BlendMode.fns[blendType],o.shaderValue=sv,context._colorFiler){var ft=context._colorFiler;sv.defines.add(ft.type),sv.colorMat=ft._mat,sv.colorAlpha=ft._alpha}return o}}SubmitTexture._poolSize=0,SubmitTexture.POOL=[];class CharSubmitCache{constructor(){this._data=[],this._ndata=0,this._clipid=-1,this._clipMatrix=new Matrix,this._enbale=!1}clear(){this._tex=null,this._imgId=-1,this._ndata=0,this._enbale=!1,this._colorFiler=null}destroy(){this.clear(),this._data.length=0,this._data=null}add(ctx,tex,imgid,pos,uv,color){this._ndata>0&&(this._tex!=tex||this._imgId!=imgid||this._clipid>=0&&this._clipid!=ctx._clipInfoID)&&this.submit(ctx),this._clipid=ctx._clipInfoID,ctx._globalClipMatrix.copyTo(this._clipMatrix),this._tex=tex,this._imgId=imgid,this._colorFiler=ctx._colorFiler,this._data[this._ndata]=pos,this._data[this._ndata+1]=uv,this._data[this._ndata+2]=color,this._ndata+=3}getPos(){return 0==CharSubmitCache.__nPosPool?new Array(8):CharSubmitCache.__posPool[--CharSubmitCache.__nPosPool]}enable(value,ctx){value!==this._enbale&&(this._enbale=value,this._enbale||this.submit(ctx))}submit(ctx){var n=this._ndata;if(n){var _mesh=ctx._mesh,colorFiler=ctx._colorFiler;ctx._colorFiler=this._colorFiler;var submit=SubmitTexture.create(ctx,_mesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0));ctx._submits[ctx._submits._length++]=ctx._curSubmit=submit,submit.shaderValue.textureHost=this._tex,submit._key.other=this._imgId,ctx._colorFiler=colorFiler,ctx._copyClipInfo(submit,this._clipMatrix),submit.clipInfoID=this._clipid;for(var i=0;i<n;i+=3)_mesh.addQuad(this._data[i],this._data[i+1],this._data[i+2],!0),CharSubmitCache.__posPool[CharSubmitCache.__nPosPool++]=this._data[i];n/=3,submit._numEle+=6*n,_mesh.indexNum+=6*n,_mesh.vertNum+=4*n,ctx._drawCount+=n,this._ndata=0,RenderInfo.loopCount%100==0&&(this._data.length=0)}}}CharSubmitCache.__posPool=[],CharSubmitCache.__nPosPool=0;class AtlasGrid{constructor(width=0,height=0,id=0){this.atlasID=0,this._width=0,this._height=0,this._texCount=0,this._rowInfo=null,this._cells=null,this._used=0,this._cells=null,this._rowInfo=null,this.atlasID=id,this._init(width,height)}addRect(type,width,height,pt){return!!this._get(width,height,pt)&&(this._fill(pt.x,pt.y,width,height,type),this._texCount++,!0)}_release(){this._cells=null,this._rowInfo=null}_init(width,height){return this._width=width,this._height=height,this._release(),0!=this._width&&(this._cells=new Uint8Array(this._width*this._height*3),this._rowInfo=new Uint8Array(this._height),this._used=0,this._clear(),!0)}_get(width,height,pt){if(width>this._width||height>this._height)return!1;for(var rx=-1,ry=-1,nWidth=this._width,nHeight=this._height,pCellBox=this._cells,y=0;y<nHeight;y++)if(!(this._rowInfo[y]<width))for(var x=0;x<nWidth;){var tm=3*(y*nWidth+x);if(0!=pCellBox[tm]||pCellBox[tm+1]<width||pCellBox[tm+2]<height)x+=pCellBox[tm+1];else{rx=x,ry=y;for(var xx=0;xx<width;xx++)if(pCellBox[3*xx+tm+2]<height){rx=-1;break}if(!(rx<0))return pt.x=rx,pt.y=ry,!0;x+=pCellBox[tm+1]}}return!1}_fill(x,y,w,h,type){var nWidth=this._width,nHeghit=this._height;this._check(x+w<=nWidth&&y+h<=nHeghit);for(var yy=y;yy<h+y;++yy){this._check(this._rowInfo[yy]>=w),this._rowInfo[yy]-=w;for(var xx=0;xx<w;xx++){var tm=3*(x+yy*nWidth+xx);this._check(0==this._cells[tm]),this._cells[tm]=type,this._cells[tm+1]=w,this._cells[tm+2]=h}}if(x>0)for(yy=0;yy<h;++yy){var s=0;for(xx=x-1;xx>=0&&0==this._cells[3*((y+yy)*nWidth+xx)];--xx,++s);for(xx=s;xx>0;--xx)this._cells[3*((y+yy)*nWidth+x-xx)+1]=xx,this._check(xx>0)}if(y>0)for(xx=x;xx<x+w;++xx){for(s=0,yy=y-1;yy>=0&&0==this._cells[3*(xx+yy*nWidth)];--yy,s++);for(yy=s;yy>0;--yy)this._cells[3*(xx+(y-yy)*nWidth)+2]=yy,this._check(yy>0)}this._used+=w*h/(this._width*this._height)}_check(ret){0==ret&&console.log("xtexMerger 错误啦")}_clear(){this._texCount=0;for(var y=0;y<this._height;y++)this._rowInfo[y]=this._width;for(var i=0;i<this._height;i++)for(var j=0;j<this._width;j++){var tm=3*(i*this._width+j);this._cells[tm]=0,this._cells[tm+1]=this._width-j,this._cells[tm+2]=this._width-i}}}class TextTexture extends Resource{constructor(textureW,textureH){super(),this._texW=0,this._texH=0,this.__destroyed=!1,this._discardTm=0,this.genID=0,this.bitmap={id:0,_glTexture:null},this.curUsedCovRate=0,this.curUsedCovRateAtlas=0,this.lastTouchTm=0,this.ri=null,this._texW=textureW||TextTexture.gTextRender.atlasWidth,this._texH=textureH||TextTexture.gTextRender.atlasWidth,this.bitmap.id=this.id,this.lock=!0}recreateResource(){if(!this._source){var gl=LayaGL.instance,glTex=this._source=gl.createTexture();this.bitmap._glTexture=glTex,WebGLContext.bindTexture(gl,gl.TEXTURE_2D,glTex),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,this._texW,this._texH,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),TextTexture.gTextRender.debugUV&&this.fillWhite()}}addChar(data,x,y,uv=null){if(TextTexture.gTextRender.isWan1Wan)return this.addCharCanvas(data,x,y,uv);!this._source&&this.recreateResource();var gl=LayaGL.instance;WebGLContext.bindTexture(gl,gl.TEXTURE_2D,this._source),!ILaya.Render.isConchApp&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);var u0,v0,u1,v1,dt=data.data;return data.data instanceof Uint8ClampedArray&&(dt=new Uint8Array(dt.buffer)),gl.texSubImage2D(gl.TEXTURE_2D,0,x,y,data.width,data.height,gl.RGBA,gl.UNSIGNED_BYTE,dt),!ILaya.Render.isConchApp&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),ILaya.Render.isConchApp?(u0=x/this._texW,v0=y/this._texH,u1=(x+data.width)/this._texW,v1=(y+data.height)/this._texH):(u0=(x+1)/this._texW,v0=y/this._texH,u1=(x+data.width-1)/this._texW,v1=(y+data.height-1)/this._texH),(uv=uv||new Array(8))[0]=u0,uv[1]=v0,uv[2]=u1,uv[3]=v0,uv[4]=u1,uv[5]=v1,uv[6]=u0,uv[7]=v1,uv}addCharCanvas(canv,x,y,uv=null){!this._source&&this.recreateResource();var u0,v0,u1,v1,gl=LayaGL.instance;return WebGLContext.bindTexture(gl,gl.TEXTURE_2D,this._source),!ILaya.Render.isConchApp&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),gl.texSubImage2D(gl.TEXTURE_2D,0,x,y,gl.RGBA,gl.UNSIGNED_BYTE,canv),!ILaya.Render.isConchApp&&gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),ILaya.Render.isConchApp?(u0=x/this._texW,v0=y/this._texH,u1=(x+canv.width)/this._texW,v1=(y+canv.height)/this._texH):(u0=(x+1)/this._texW,v0=(y+1)/this._texH,u1=(x+canv.width-1)/this._texW,v1=(y+canv.height-1)/this._texH),(uv=uv||new Array(8))[0]=u0,uv[1]=v0,uv[2]=u1,uv[3]=v0,uv[4]=u1,uv[5]=v1,uv[6]=u0,uv[7]=v1,uv}fillWhite(){!this._source&&this.recreateResource();var gl=LayaGL.instance,dt=new Uint8Array(this._texW*this._texH*4);dt.fill(255),gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,this._texW,this._texH,gl.RGBA,gl.UNSIGNED_BYTE,dt)}discard(){this._texW==TextTexture.gTextRender.atlasWidth&&this._texH==TextTexture.gTextRender.atlasWidth?(this.genID++,TextTexture.poolLen>=TextTexture.pool.length&&(TextTexture.pool=TextTexture.pool.concat(new Array(10))),this._discardTm=RenderInfo.loopStTm,TextTexture.pool[TextTexture.poolLen++]=this):this.destroy()}static getTextTexture(w,h){if(w!=TextTexture.gTextRender.atlasWidth||w!=TextTexture.gTextRender.atlasWidth)return new TextTexture(w,h);if(TextTexture.poolLen>0){var ret=TextTexture.pool[--TextTexture.poolLen];return TextTexture.poolLen>0&&TextTexture.clean(),ret}return new TextTexture(w,h)}destroy(){this.__destroyed=!0;var gl=LayaGL.instance;this._source&&gl.deleteTexture(this._source),this._source=null}static clean(){var curtm=RenderInfo.loopStTm;if(0===TextTexture.cleanTm&&(TextTexture.cleanTm=curtm),curtm-TextTexture.cleanTm>=TextTexture.gTextRender.checkCleanTextureDt){for(var i=0;i<TextTexture.poolLen;i++){var p=TextTexture.pool[i];curtm-p._discardTm>=TextTexture.gTextRender.destroyUnusedTextureDt&&(p.destroy(),TextTexture.pool[i]=TextTexture.pool[TextTexture.poolLen-1],TextTexture.poolLen--,i--)}TextTexture.cleanTm=curtm}}touchRect(ri,curloop){this.lastTouchTm!=curloop&&(this.curUsedCovRate=0,this.curUsedCovRateAtlas=0,this.lastTouchTm=curloop);var texw2=TextTexture.gTextRender.atlasWidth*TextTexture.gTextRender.atlasWidth,gridw2=ILaya.TextAtlas.atlasGridW*ILaya.TextAtlas.atlasGridW;this.curUsedCovRate+=ri.bmpWidth*ri.bmpHeight/texw2,this.curUsedCovRateAtlas+=Math.ceil(ri.bmpWidth/ILaya.TextAtlas.atlasGridW)*Math.ceil(ri.bmpHeight/ILaya.TextAtlas.atlasGridW)/(texw2/gridw2)}get texture(){return this}_getSource(){return this._source}drawOnScreen(x,y){}}TextTexture.gTextRender=null,TextTexture.pool=new Array(10),TextTexture.poolLen=0,TextTexture.cleanTm=0;class TextAtlas{constructor(){this.texWidth=1024,this.texHeight=1024,this.protectDist=1,this.texture=null,this.charMaps={},this.texHeight=this.texWidth=ILaya.TextRender.atlasWidth,this.texture=TextTexture.getTextTexture(this.texWidth,this.texHeight),this.texWidth/TextAtlas.atlasGridW>256&&(TextAtlas.atlasGridW=Math.ceil(this.texWidth/256)),this.atlasgrid=new AtlasGrid(this.texWidth/TextAtlas.atlasGridW,this.texHeight/TextAtlas.atlasGridW,this.texture.id)}setProtecteDist(d){this.protectDist=d}getAEmpty(w,h,pt){var find=this.atlasgrid.addRect(1,Math.ceil(w/TextAtlas.atlasGridW),Math.ceil(h/TextAtlas.atlasGridW),pt);return find&&(pt.x*=TextAtlas.atlasGridW,pt.y*=TextAtlas.atlasGridW),find}get usedRate(){return this.atlasgrid._used}destroy(){for(var k in this.charMaps){this.charMaps[k].deleted=!0}this.texture.discard()}printDebugInfo(){}}TextAtlas.atlasGridW=16;class Event{setTo(type,currentTarget,target){return this.type=type,this.currentTarget=currentTarget,this.target=target,this}stopPropagation(){this._stoped=!0}get touches(){if(!this.nativeEvent)return null;var arr=this.nativeEvent.touches;if(arr)for(var stage=ILaya.stage,i=0,n=arr.length;i<n;i++){var e=arr[i],point=Point.TEMP;point.setTo(e.clientX,e.clientY),stage._canvasTransform.invertTransformPoint(point),stage.transform.invertTransformPoint(point),e.stageX=point.x,e.stageY=point.y}return arr}get altKey(){return this.nativeEvent.altKey}get ctrlKey(){return this.nativeEvent.ctrlKey}get shiftKey(){return this.nativeEvent.shiftKey}get charCode(){return this.nativeEvent.charCode}get keyLocation(){return this.nativeEvent.location||this.nativeEvent.keyLocation}get stageX(){return ILaya.stage.mouseX}get stageY(){return ILaya.stage.mouseY}}Event.EMPTY=new Event,Event.MOUSE_DOWN="mousedown",Event.MOUSE_UP="mouseup",Event.CLICK="click",Event.RIGHT_MOUSE_DOWN="rightmousedown",Event.RIGHT_MOUSE_UP="rightmouseup",Event.RIGHT_CLICK="rightclick",Event.MOUSE_MOVE="mousemove",Event.MOUSE_OVER="mouseover",Event.MOUSE_OUT="mouseout",Event.MOUSE_WHEEL="mousewheel",Event.ROLL_OVER="mouseover",Event.ROLL_OUT="mouseout",Event.DOUBLE_CLICK="doubleclick",Event.CHANGE="change",Event.CHANGED="changed",Event.RESIZE="resize",Event.ADDED="added",Event.REMOVED="removed",Event.DISPLAY="display",Event.UNDISPLAY="undisplay",Event.ERROR="error",Event.COMPLETE="complete",Event.LOADED="loaded",Event.READY="ready",Event.PROGRESS="progress",Event.INPUT="input",Event.RENDER="render",Event.OPEN="open",Event.MESSAGE="message",Event.CLOSE="close",Event.KEY_DOWN="keydown",Event.KEY_PRESS="keypress",Event.KEY_UP="keyup",Event.FRAME="enterframe",Event.DRAG_START="dragstart",Event.DRAG_MOVE="dragmove",Event.DRAG_END="dragend",Event.ENTER="enter",Event.SELECT="select",Event.BLUR="blur",Event.FOCUS="focus",Event.VISIBILITY_CHANGE="visibilitychange",Event.FOCUS_CHANGE="focuschange",Event.PLAYED="played",Event.PAUSED="paused",Event.STOPPED="stopped",Event.START="start",Event.END="end",Event.COMPONENT_ADDED="componentadded",Event.COMPONENT_REMOVED="componentremoved",Event.RELEASED="released",Event.LINK="link",Event.LABEL="label",Event.FULL_SCREEN_CHANGE="fullscreenchange",Event.DEVICE_LOST="devicelost",Event.TRANSFORM_CHANGED="transformchanged",Event.ANIMATION_CHANGED="animationchanged",Event.TRAIL_FILTER_CHANGE="trailfilterchange",Event.TRIGGER_ENTER="triggerenter",Event.TRIGGER_STAY="triggerstay",Event.TRIGGER_EXIT="triggerexit";class Texture extends EventDispatcher{constructor(bitmap=null,uv=null,sourceWidth=0,sourceHeight=0){super(),this.uvrect=[0,0,1,1],this._destroyed=!1,this._referenceCount=0,this.$_GID=0,this.offsetX=0,this.offsetY=0,this._w=0,this._h=0,this.sourceWidth=0,this.sourceHeight=0,this.url=null,this.scaleRate=1,this.setTo(bitmap,uv,sourceWidth,sourceHeight)}static moveUV(offsetX,offsetY,uv){for(var i=0;i<8;i+=2)uv[i]+=offsetX,uv[i+1]+=offsetY;return uv}static create(source,x,y,width,height,offsetX=0,offsetY=0,sourceWidth=0,sourceHeight=0){return Texture._create(source,x,y,width,height,offsetX,offsetY,sourceWidth,sourceHeight)}static _create(source,x,y,width,height,offsetX=0,offsetY=0,sourceWidth=0,sourceHeight=0,outTexture=null){var tex,btex=source instanceof Texture,uv=btex?source.uv:Texture.DEF_UV,bitmap=btex?source.bitmap:source;bitmap.width&&x+width>bitmap.width&&(width=bitmap.width-x),bitmap.height&&y+height>bitmap.height&&(height=bitmap.height-y),outTexture?(tex=outTexture).setTo(bitmap,null,sourceWidth||width,sourceHeight||height):tex=new Texture(bitmap,null,sourceWidth||width,sourceHeight||height),tex.width=width,tex.height=height,tex.offsetX=offsetX,tex.offsetY=offsetY;var dwidth=1/bitmap.width,dheight=1/bitmap.height;x*=dwidth,y*=dheight,width*=dwidth,height*=dheight;var u1=tex.uv[0],v1=tex.uv[1],u2=tex.uv[4],v2=tex.uv[5],inAltasUVWidth=u2-u1,inAltasUVHeight=v2-v1,oriUV=Texture.moveUV(uv[0],uv[1],[x,y,x+width,y,x+width,y+height,x,y+height]);tex.uv=new Float32Array([u1+oriUV[0]*inAltasUVWidth,v1+oriUV[1]*inAltasUVHeight,u2-(1-oriUV[2])*inAltasUVWidth,v1+oriUV[3]*inAltasUVHeight,u2-(1-oriUV[4])*inAltasUVWidth,v2-(1-oriUV[5])*inAltasUVHeight,u1+oriUV[6]*inAltasUVWidth,v2-(1-oriUV[7])*inAltasUVHeight]);var bitmapScale=bitmap.scaleRate;return bitmapScale&&1!=bitmapScale?(tex.sourceWidth/=bitmapScale,tex.sourceHeight/=bitmapScale,tex.width/=bitmapScale,tex.height/=bitmapScale,tex.scaleRate=bitmapScale):tex.scaleRate=1,tex}static createFromTexture(texture,x,y,width,height){var texScaleRate=texture.scaleRate;1!=texScaleRate&&(x*=texScaleRate,y*=texScaleRate,width*=texScaleRate,height*=texScaleRate);var rect=Rectangle.TEMP.setTo(x-texture.offsetX,y-texture.offsetY,width,height),result=rect.intersection(Texture._rect1.setTo(0,0,texture.width,texture.height),Texture._rect2);return result?Texture.create(texture,result.x,result.y,result.width,result.height,result.x-rect.x,result.y-rect.y,width,height):null}get uv(){return this._uv}set uv(value){this.uvrect[0]=Math.min(value[0],value[2],value[4],value[6]),this.uvrect[1]=Math.min(value[1],value[3],value[5],value[7]),this.uvrect[2]=Math.max(value[0],value[2],value[4],value[6])-this.uvrect[0],this.uvrect[3]=Math.max(value[1],value[3],value[5],value[7])-this.uvrect[1],this._uv=value}get width(){return this._w?this._w:this.bitmap?this.uv&&this.uv!==Texture.DEF_UV?(this.uv[2]-this.uv[0])*this.bitmap.width:this.bitmap.width:0}set width(value){this._w=value,this.sourceWidth||(this.sourceWidth=value)}get height(){return this._h?this._h:this.bitmap?this.uv&&this.uv!==Texture.DEF_UV?(this.uv[5]-this.uv[1])*this.bitmap.height:this.bitmap.height:0}set height(value){this._h=value,this.sourceHeight||(this.sourceHeight=value)}get bitmap(){return this._bitmap}set bitmap(value){this._bitmap&&this._bitmap._removeReference(this._referenceCount),this._bitmap=value,value&&value._addReference(this._referenceCount)}get destroyed(){return this._destroyed}_addReference(){this._bitmap&&this._bitmap._addReference(),this._referenceCount++}_removeReference(){this._bitmap&&this._bitmap._removeReference(),this._referenceCount--}_getSource(cb=null){return this._destroyed||!this._bitmap?null:(this.recoverBitmap(cb),this._bitmap.destroyed?null:this.bitmap._getSource())}_onLoaded(complete,context){if(context)if(context==this);else if(context instanceof Texture){var tex=context;Texture._create(context,0,0,tex.width,tex.height,0,0,tex.sourceWidth,tex.sourceHeight,this)}else this.bitmap=context,this.sourceWidth=this._w=context.width,this.sourceHeight=this._h=context.height;else;complete&&complete.run(),this.event(Event.READY,this)}getIsReady(){return!this._destroyed&&!!this._bitmap}setTo(bitmap=null,uv=null,sourceWidth=0,sourceHeight=0){this.bitmap=bitmap,this.sourceWidth=sourceWidth,this.sourceHeight=sourceHeight,bitmap&&(this._w=bitmap.width,this._h=bitmap.height,this.sourceWidth=this.sourceWidth||bitmap.width,this.sourceHeight=this.sourceHeight||bitmap.height),this.uv=uv||Texture.DEF_UV}load(url,complete=null){this._destroyed||ILaya.loader.load(url,Handler.create(this,this._onLoaded,[complete]),null,"htmlimage",1,!1,null,!0)}getTexturePixels(x,y,width,height){var st,dst,i,tex2d=this.bitmap,texw=tex2d.width,texh=tex2d.height;if(x+width>texw&&(width-=x+width-texw),y+height>texh&&(height-=y+height-texh),width<=0||height<=0)return null;var wstride=4*width,pix=null;try{pix=tex2d.getPixels()}catch(e){}if(pix){if(0==x&&0==y&&width==texw&&height==texh)return pix;var ret=new Uint8Array(width*height*4);for(st=4*x,dst=(y+height-1)*(wstride=4*texw)+4*x,i=height-1;i>=0;i--)ret.set(dt.slice(dst,dst+4*width),st),st+=wstride,dst-=wstride;return ret}var ctx=new ILaya.Context;ctx.size(width,height),ctx.asBitmap=!0;var uv=null;if(0!=x||0!=y||width!=texw||height!=texh){var stu=(uv=this._uv.slice())[0],stv=uv[1],uk=(uv[2]-stu)/texw,vk=(uv[7]-stv)/texh;uv=[stu+x*uk,stv+y*vk,stu+(x+width)*uk,stv+y*vk,stu+(x+width)*uk,stv+(y+height)*vk,stu+x*uk,stv+(y+height)*vk]}ctx._drawTextureM(this,0,0,width,height,null,1,uv),ctx._targets.start(),ctx.flush(),ctx._targets.end(),ctx._targets.restore();var dt=ctx._targets.getData(0,0,width,height);for(ctx.destroy(),ret=new Uint8Array(width*height*4),st=0,dst=(height-1)*wstride,i=height-1;i>=0;i--)ret.set(dt.slice(dst,dst+wstride),st),st+=wstride,dst-=wstride;return ret}getPixels(x,y,width,height){return window.conch?this._nativeObj.getImageData(x,y,width,height):this.getTexturePixels(x,y,width,height)}recoverBitmap(onok=null){var url=this._bitmap.url;this._destroyed||this._bitmap&&!this._bitmap.destroyed||!url||ILaya.loader.load(url,Handler.create(this,function(bit){this.bitmap=bit,onok&&onok()}),null,"htmlimage",1,!1,null,!0)}disposeBitmap(){!this._destroyed&&this._bitmap&&this._bitmap.destroy()}destroy(force=!1){if(!this._destroyed){this._destroyed=!0;var bit=this._bitmap;bit&&(bit._removeReference(this._referenceCount),(0===bit.referenceCount||force)&&bit.destroy(),bit=null),this.url&&this===ILaya.loader.getRes(this.url)&&ILaya.loader.clearRes(this.url)}}}Texture.DEF_UV=new Float32Array([0,0,1,0,1,1,0,1]),Texture.NO_UV=new Float32Array([0,0,0,0,0,0,0,0]),Texture.INV_UV=new Float32Array([0,1,1,1,1,0,0,0]),Texture._rect1=new Rectangle,Texture._rect2=new Rectangle;class FontInfo{constructor(font){this._font="14px Arial",this._family="Arial",this._size=14,this._italic=!1,this._bold=!1,this._id=FontInfo._gfontID++,this.setFont(font||this._font)}static Parse(font){if(font===FontInfo._lastFont)return FontInfo._lastFontInfo;var r=FontInfo._cache[font];return r||(r=FontInfo._cache[font]=new FontInfo(font)),FontInfo._lastFont=font,FontInfo._lastFontInfo=r,r}setFont(value){this._font=value;var _words=value.split(" "),l=_words.length;if(l<2)1==l&&_words[0].indexOf("px")>0&&(this._size=parseInt(_words[0]));else{for(var szpos=-1,i=0;i<l;i++)if(_words[i].indexOf("px")>0||_words[i].indexOf("pt")>0){szpos=i,this._size=parseInt(_words[i]),this._size<=0&&(console.error("font parse error:"+value),this._size=14);break}var fpos=szpos+1,familys=_words[fpos];for(fpos++;fpos<l;fpos++)familys+=" "+_words[fpos];this._family=familys.split(",")[0],this._italic=_words.indexOf("italic")>=0,this._bold=_words.indexOf("bold")>=0}}}FontInfo.EMPTY=new FontInfo(null),FontInfo._cache={},FontInfo._gfontID=0,FontInfo._lastFont="";class WordText{constructor(){this.save=[],this.toUpperCase=null,this.width=-1,this.pageChars=[],this.startID=0,this.startIDStroke=0,this.lastGCCnt=0,this.splitRender=!1}setText(txt){this.changed=!0,this._text=txt,this.width=-1,this.cleanCache()}toString(){return this._text}get length(){return this._text?this._text.length:0}charCodeAt(i){return this._text?this._text.charCodeAt(i):NaN}charAt(i){return this._text?this._text.charAt(i):null}cleanCache(){this.pageChars.forEach(function(p){var tex=p.tex;p.words;1==p.words.length&&tex&&tex.ri&&tex.destroy()}),this.pageChars=[],this.startID=0}}class CharRenderInfo{constructor(){this.char="",this.deleted=!1,this.uv=new Array(8),this.pos=0,this.orix=0,this.oriy=0,this.touchTick=0,this.isSpace=!1}touch(){var curLoop=RenderInfo.loopCount;this.touchTick!=curLoop&&this.tex.touchRect(this,curLoop),this.touchTick=curLoop}}class ICharRender{constructor(){this.fontsz=16}getWidth(font,str){return 0}scale(sx,sy){}get canvasWidth(){return 0}set canvasWidth(w){}getCharBmp(char,font,lineWidth,colStr,strokeColStr,size,margin_left,margin_top,margin_right,margin_bottom,rect=null){return null}}class Browser{static __init__(){var Laya=window.Laya||ILaya.Laya;if(Browser._window)return Browser._window;var win=Browser._window=window,doc=Browser._document=win.document,u=Browser.userAgent=win.navigator.userAgent;u.indexOf("AlipayMiniGame")>-1&&"my"in Browser.window&&(window.aliMiniGame(Laya,Laya),window.aliPayMiniGame(Laya,Laya),Laya.ALIMiniAdapter?Laya.ALIMiniAdapter.enable():console.error("请先添加阿里小游戏适配库")),-1==u.indexOf("OPPO")&&u.indexOf("MiniGame")>-1&&"wx"in Browser.window&&("qq"in Browser.window?(window.qqMiniGame(Laya,Laya),Laya.QQMiniAdapter?Laya.QQMiniAdapter.enable():console.error("请引入手机QQ小游戏的适配库:https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")):(window.wxMiniGame(Laya,Laya),Laya.MiniAdpter?Laya.MiniAdpter.enable():console.error("请先添加小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0"))),u.indexOf("SwanGame")>-1&&(window.bdMiniGame(Laya,Laya),Laya.BMiniAdapter?Laya.BMiniAdapter.enable():console.error("请先添加百度小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")),u.indexOf("QuickGame")>-1&&(window.miMiniGame(Laya,Laya),Laya.KGMiniAdapter?Laya.KGMiniAdapter.enable():console.error("请先添加小米小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0")),u.indexOf("OPPO")>-1&&u.indexOf("MiniGame")>-1&&(window.qgMiniGame(Laya,Laya),Laya.QGMiniAdapter?Laya.QGMiniAdapter.enable():console.error("请先添加OPPO小游戏适配库")),u.indexOf("VVGame")>-1&&(window.vvMiniGame(Laya,Laya),Laya.VVMiniAdapter?Laya.VVMiniAdapter.enable():console.error("请先添加VIVO小游戏适配库")),win.trace=console.log,win.requestAnimationFrame=win.requestAnimationFrame||win.webkitRequestAnimationFrame||win.mozRequestAnimationFrame||win.oRequestAnimationFrame||win.msRequestAnimationFrame||function(fun){return win.setTimeout(fun,1e3/60)};var bodyStyle=doc.body.style;bodyStyle.margin=0,bodyStyle.overflow="hidden",bodyStyle["-webkit-user-select"]="none",bodyStyle["-webkit-tap-highlight-color"]="rgba(200,200,200,0)";for(var metas=doc.getElementsByTagName("meta"),i=0,flag=!1,content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no";i<metas.length;){var meta=metas[i];if("viewport"==meta.name){meta.content=content,flag=!0;break}i++}return flag||((meta=doc.createElement("meta")).name="viewport",meta.content=content,doc.getElementsByTagName("head")[0].appendChild(meta)),Browser.onMobile=!!window.isConchApp||u.indexOf("Mobile")>-1,Browser.onIOS=!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),Browser.onIPhone=u.indexOf("iPhone")>-1,Browser.onMac=u.indexOf("Mac OS X")>-1,Browser.onIPad=u.indexOf("iPad")>-1,Browser.onAndroid=u.indexOf("Android")>-1||u.indexOf("Adr")>-1,Browser.onWP=u.indexOf("Windows Phone")>-1,Browser.onQQBrowser=u.indexOf("QQBrowser")>-1,Browser.onMQQBrowser=u.indexOf("MQQBrowser")>-1||u.indexOf("Mobile")>-1&&u.indexOf("QQ")>-1,Browser.onIE=!!win.ActiveXObject||"ActiveXObject"in win,Browser.onWeiXin=u.indexOf("MicroMessenger")>-1,Browser.onSafari=u.indexOf("Safari")>-1,Browser.onPC=!Browser.onMobile,Browser.onMiniGame=u.indexOf("MiniGame")>-1,Browser.onBDMiniGame=u.indexOf("SwanGame")>-1,Browser.onLayaRuntime=!!Browser.window.conch,u.indexOf("OPPO")>-1&&u.indexOf("MiniGame")>-1?(Browser.onQGMiniGame=!0,Browser.onMiniGame=!1):"qq"in Browser.window&&u.indexOf("MiniGame")>-1&&(Browser.onQQMiniGame=!0,Browser.onMiniGame=!1),Browser.onVVMiniGame=u.indexOf("VVGame")>-1,Browser.onKGMiniGame=u.indexOf("QuickGame")>-1,u.indexOf("AlipayMiniGame")>-1&&(Browser.onAlipayMiniGame=!0,Browser.onMiniGame=!1),win}static createElement(type){return Browser.__init__(),Browser._document.createElement(type)}static getElementById(type){return Browser.__init__(),Browser._document.getElementById(type)}static removeElement(ele){ele&&ele.parentNode&&ele.parentNode.removeChild(ele)}static now(){return Date.now()}static get clientWidth(){return Browser.__init__(),Browser._window.innerWidth||Browser._document.body.clientWidth}static get clientHeight(){return Browser.__init__(),Browser._window.innerHeight||Browser._document.body.clientHeight||Browser._document.documentElement.clientHeight}static get width(){return Browser.__init__(),(ILaya.stage&&ILaya.stage.canvasRotation?Browser.clientHeight:Browser.clientWidth)*Browser.pixelRatio}static get height(){return Browser.__init__(),(ILaya.stage&&ILaya.stage.canvasRotation?Browser.clientWidth:Browser.clientHeight)*Browser.pixelRatio}static get pixelRatio(){return Browser._pixelRatio<0&&(Browser.__init__(),Browser.userAgent.indexOf("Mozilla/6.0(Linux; Android 6.0; HUAWEI NXT-AL10 Build/HUAWEINXT-AL10)")>-1?Browser._pixelRatio=2:(Browser._pixelRatio=Browser._window.devicePixelRatio||1,Browser._pixelRatio<1&&(Browser._pixelRatio=1))),Browser._pixelRatio}static get container(){return Browser._container||(Browser.__init__(),Browser._container=Browser.createElement("div"),Browser._container.id="layaContainer",Browser._document.body.appendChild(Browser._container)),Browser._container}static set container(value){Browser._container=value}static get window(){return Browser._window||Browser.__init__()}static get document(){return Browser.__init__(),Browser._document}}Browser._pixelRatio=-1,Browser.mainCanvas=null,Browser.hanzi=new RegExp("^[一-龥]$"),Browser.fontMap=[],Browser.measureText=function(txt,font){var isChinese=Browser.hanzi.test(txt);if(isChinese&&Browser.fontMap[font])return Browser.fontMap[font];var ctx=Browser.context;ctx.font=font;var r=ctx.measureText(txt);return isChinese&&(Browser.fontMap[font]=r),r};class CharRender_Canvas extends ICharRender{constructor(maxw,maxh,scalefont=!0,useImageData=!0,showdbg=!1){super(),this.ctx=null,this.lastScaleX=1,this.lastScaleY=1,this.needResetScale=!1,this.maxTexW=0,this.maxTexH=0,this.scaleFontSize=!0,this.showDbgInfo=!1,this.supportImageData=!0,this.maxTexW=maxw,this.maxTexH=maxh,this.scaleFontSize=scalefont,this.supportImageData=useImageData,this.showDbgInfo=showdbg,CharRender_Canvas.canvas||(CharRender_Canvas.canvas=Browser.createElement("canvas"),CharRender_Canvas.canvas.width=1024,CharRender_Canvas.canvas.height=512,CharRender_Canvas.canvas.style.left="-10000px",CharRender_Canvas.canvas.style.position="absolute",document.body.appendChild(CharRender_Canvas.canvas),this.ctx=CharRender_Canvas.canvas.getContext("2d"))}get canvasWidth(){return CharRender_Canvas.canvas.width}set canvasWidth(w){CharRender_Canvas.canvas.width!=w&&(CharRender_Canvas.canvas.width=w,w>2048&&console.warn("画文字设置的宽度太大,超过2048了"),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.scale(this.lastScaleX,this.lastScaleY))}getWidth(font,str){return this.ctx?(this.ctx._lastFont!=font&&(this.ctx.font=font,this.ctx._lastFont=font),this.ctx.measureText(str).width):0}scale(sx,sy){if(!this.supportImageData)return this.lastScaleX=sx,void(this.lastScaleY=sy);this.lastScaleX==sx&&this.lastScaleY==sy||(this.ctx.setTransform(sx,0,0,sy,0,0),this.lastScaleX=sx,this.lastScaleY=sy)}getCharBmp(char,font,lineWidth,colStr,strokeColStr,cri,margin_left,margin_top,margin_right,margin_bottom,rect=null){if(!this.supportImageData)return this.getCharCanvas(char,font,lineWidth,colStr,strokeColStr,cri,margin_left,margin_top,margin_right,margin_bottom);var ctx=this.ctx,sz=this.fontsz;ctx.font!=font&&(ctx.font=font,ctx._lastFont=font),cri.width=ctx.measureText(char).width;var w=cri.width*this.lastScaleX,h=cri.height*this.lastScaleY;w+=(margin_left+margin_right)*this.lastScaleX,h+=(margin_top+margin_bottom)*this.lastScaleY,w=Math.ceil(w),h=Math.ceil(h);var clearW=(w=Math.min(w,CharRender_Canvas.canvas.width))+2*lineWidth+1,clearH=(h=Math.min(h,CharRender_Canvas.canvas.height))+2*lineWidth+1;rect&&(clearW=Math.max(clearW,rect[0]+rect[2]+1),clearH=Math.max(clearH,rect[1]+rect[3]+1)),ctx.clearRect(0,0,clearW,clearH),ctx.save(),ctx.textBaseline="middle",lineWidth>0&&(ctx.strokeStyle=strokeColStr,ctx.lineWidth=lineWidth,ctx.strokeText(char,margin_left,margin_top+sz/2)),colStr&&(ctx.fillStyle=colStr,ctx.fillText(char,margin_left,margin_top+sz/2)),this.showDbgInfo&&(ctx.strokeStyle="#ff0000",ctx.strokeRect(1,1,w-2,h-2),ctx.strokeStyle="#00ff00",ctx.strokeRect(margin_left,margin_top,cri.width,cri.height)),rect&&-1==rect[2]&&(rect[2]=Math.ceil((cri.width+2*lineWidth)*this.lastScaleX));var imgdt=rect?ctx.getImageData(rect[0],rect[1],rect[2],rect[3]):ctx.getImageData(0,0,w,h);return ctx.restore(),cri.bmpWidth=imgdt.width,cri.bmpHeight=imgdt.height,imgdt}getCharCanvas(char,font,lineWidth,colStr,strokeColStr,cri,margin_left,margin_top,margin_right,margin_bottom){var ctx=this.ctx;ctx.font!=font&&(ctx.font=font,ctx._lastFont=font),cri.width=ctx.measureText(char).width;var w=cri.width*this.lastScaleX,h=cri.height*this.lastScaleY;w+=(margin_left+margin_right)*this.lastScaleX,h+=(margin_top+margin_bottom)*this.lastScaleY+1,w=Math.min(w,this.maxTexW),h=Math.min(h,this.maxTexH),CharRender_Canvas.canvas.width=Math.min(w+1,this.maxTexW),CharRender_Canvas.canvas.height=Math.min(h+1,this.maxTexH),ctx.font=font,ctx.clearRect(0,0,w+1+lineWidth,h+1+lineWidth),ctx.setTransform(1,0,0,1,0,0),ctx.save(),this.scaleFontSize&&ctx.scale(this.lastScaleX,this.lastScaleY),ctx.translate(margin_left,margin_top),ctx.textAlign="left";var sz=this.fontsz;return ctx.textBaseline="middle",lineWidth>0?(ctx.strokeStyle=strokeColStr,ctx.fillStyle=colStr,ctx.lineWidth=lineWidth,ctx.fillAndStrokeText?ctx.fillAndStrokeText(char,0,sz/2):(ctx.strokeText(char,0,sz/2),ctx.fillText(char,0,sz/2))):colStr&&(ctx.fillStyle=colStr,ctx.fillText(char,0,sz/2)),this.showDbgInfo&&(ctx.strokeStyle="#ff0000",ctx.strokeRect(0,0,w,h),ctx.strokeStyle="#00ff00",ctx.strokeRect(0,0,cri.width,cri.height)),ctx.restore(),cri.bmpWidth=CharRender_Canvas.canvas.width,cri.bmpHeight=CharRender_Canvas.canvas.height,CharRender_Canvas.canvas}}CharRender_Canvas.canvas=null;class CharRender_Native extends ICharRender{constructor(){super(),this.lastFont=""}getWidth(font,str){return window.conchTextCanvas?(window.conchTextCanvas.font=font,this.lastFont=font,window.conchTextCanvas.measureText(str).width):0}scale(sx,sy){}getCharBmp(char,font,lineWidth,colStr,strokeColStr,size,margin_left,margin_top,margin_right,margin_bottom,rect=null){if(!window.conchTextCanvas)return null;window.conchTextCanvas.font=font,this.lastFont=font;size.width=window.conchTextCanvas.measureText(char).width,size.height;var nStrokeColor=ColorUtils.create(strokeColStr).numColor,nTextColor=ColorUtils.create(colStr).numColor,textInfo=window.conchTextCanvas.getTextBitmapData(char,nTextColor,lineWidth>2?2:lineWidth,nStrokeColor);return size.bmpWidth=textInfo.width,size.bmpHeight=textInfo.height,textInfo}}class TextRender{constructor(){this.fontSizeInfo={},this.charRender=null,this.mapFont={},this.fontID=0,this.mapColor=[],this.colorID=0,this.fontScaleX=1,this.fontScaleY=1,this._curStrPos=0,this.textAtlases=[],this.isoTextures=[],this.lastFont=null,this.fontSizeW=0,this.fontSizeH=0,this.fontSizeOffX=0,this.fontSizeOffY=0,this.renderPerChar=!0,this.tmpAtlasPos=new Point,this.textureMem=0,ILaya.TextAtlas=TextAtlas;var bugIOS=!1,miniadp=ILaya.Laya.MiniAdpter;miniadp&&miniadp.systemInfo&&miniadp.systemInfo.system&&(bugIOS="ios 10.1.1"===miniadp.systemInfo.system.toLowerCase()),ILaya.Browser.onMiniGame&&!bugIOS&&(TextRender.isWan1Wan=!0),this.charRender=ILaya.Render.isConchApp?new CharRender_Native:new CharRender_Canvas(TextRender.atlasWidth,TextRender.atlasWidth,TextRender.scaleFontWithCtx,!TextRender.isWan1Wan,!1),TextRender.textRenderInst=this,ILaya.Laya.textRender=this,TextRender.atlasWidth2=TextRender.atlasWidth*TextRender.atlasWidth}setFont(font){if(this.lastFont!=font){this.lastFont=font;var fontsz=this.getFontSizeInfo(font._family),offx=fontsz>>24,offy=fontsz>>16&255,fw=fontsz>>8&255,fh=255&fontsz,k=font._size/TextRender.standardFontSize;this.fontSizeOffX=Math.ceil(offx*k),this.fontSizeOffY=Math.ceil(offy*k),this.fontSizeW=Math.ceil(fw*k),this.fontSizeH=Math.ceil(fh*k),font._font.indexOf("italic")>=0?this.fontStr=font._font.replace("italic",""):this.fontStr=font._font}}getNextChar(str){var len=str.length,start=this._curStrPos;if(start>=len)return null;for(var i=start,state=0;i<len;i++){var c=str.charCodeAt(i);if(c>>>11==27){if(1==state)break;state=1,i++}else if(65038===c||65039===c);else if(8205==c)state=2;else if(0==state)state=1;else if(1==state)break}return this._curStrPos=i,str.substring(start,i)}filltext(ctx,data,x,y,fontStr,color,strokeColor,lineWidth,textAlign,underLine=0){if(!(data.length<=0)){var font=FontInfo.Parse(fontStr),nTextAlign=0;switch(textAlign){case"center":nTextAlign=ILaya.Context.ENUM_TEXTALIGN_CENTER;break;case"right":nTextAlign=ILaya.Context.ENUM_TEXTALIGN_RIGHT}this._fast_filltext(ctx,data,null,x,y,font,color,strokeColor,lineWidth,nTextAlign,underLine)}}fillWords(ctx,data,x,y,fontStr,color,strokeColor,lineWidth){if(data&&!(data.length<=0)){var font=FontInfo.Parse(fontStr);this._fast_filltext(ctx,null,data,x,y,font,color,strokeColor,lineWidth,0,0)}}_fast_filltext(ctx,data,htmlchars,x,y,font,color,strokeColor,lineWidth,textAlign,underLine=0){if(!(data&&data.length<1||htmlchars&&htmlchars.length<1)){if(lineWidth<0&&(lineWidth=0),this.setFont(font),this.fontScaleX=this.fontScaleY=1,!ILaya.Render.isConchApp&&TextRender.scaleFontWithCtx){var sx=1,sy=1;if(ILaya.Render.isConchApp?(sx=ctx._curMat.getScaleX(),sy=ctx._curMat.getScaleY()):(sx=ctx.getMatScaleX(),sy=ctx.getMatScaleY()),sx<1e-4||sy<.1)return;sx>1&&(this.fontScaleX=sx),sy>1&&(this.fontScaleY=sy)}font._italic&&(ctx._italicDeg=13);var wt=data,isWT=!htmlchars&&data instanceof WordText,str=data,isHtmlChar=!!htmlchars,sameTexData=isWT?wt.pageChars:[],strWidth=0;switch(isWT?(str=wt._text,(strWidth=wt.width)<0&&(strWidth=wt.width=this.charRender.getWidth(this.fontStr,str))):strWidth=str?this.charRender.getWidth(this.fontStr,str):0,textAlign){case ILaya.Context.ENUM_TEXTALIGN_CENTER:x-=strWidth/2;break;case ILaya.Context.ENUM_TEXTALIGN_RIGHT:x-=strWidth}wt&&sameTexData&&this.hasFreedText(sameTexData)&&(sameTexData=wt.pageChars=[]);var ri=null,splitTex=this.renderPerChar=!isWT||TextRender.forceSplitRender||isHtmlChar||isWT&&wt.splitRender;if(!sameTexData||sameTexData.length<1)if(splitTex){var curstr,stx=0,sty=0;for(this._curStrPos=0;;){if(isHtmlChar){var chc=htmlchars[this._curStrPos++];chc?(curstr=chc.char,stx=chc.x,sty=chc.y):curstr=null}else curstr=this.getNextChar(str);if(!curstr)break;if(!(ri=this.getCharRenderInfo(curstr,font,color,strokeColor,lineWidth,!1)))break;if(ri.isSpace);else{var add=sameTexData[ri.tex.id];if(add)add=add.words;else{var o1={texgen:ri.tex.genID,tex:ri.tex,words:[]};sameTexData[ri.tex.id]=o1,add=o1.words}ILaya.Render.isConchApp?add.push({ri:ri,x:stx,y:sty,w:ri.bmpWidth/this.fontScaleX,h:ri.bmpHeight/this.fontScaleY}):add.push({ri:ri,x:stx+1/this.fontScaleX,y:sty,w:(ri.bmpWidth-2)/this.fontScaleX,h:(ri.bmpHeight-1)/this.fontScaleY}),stx+=ri.width}}}else{var isotex=TextRender.noAtlas||strWidth*this.fontScaleX>TextRender.atlasWidth;ri=this.getCharRenderInfo(str,font,color,strokeColor,lineWidth,isotex),ILaya.Render.isConchApp?sameTexData[0]={texgen:ri.tex.genID,tex:ri.tex,words:[{ri:ri,x:0,y:0,w:ri.bmpWidth/this.fontScaleX,h:ri.bmpHeight/this.fontScaleY}]}:sameTexData[0]={texgen:ri.tex.genID,tex:ri.tex,words:[{ri:ri,x:1/this.fontScaleX,y:0/this.fontScaleY,w:(ri.bmpWidth-2)/this.fontScaleX,h:(ri.bmpHeight-1)/this.fontScaleY}]}}this._drawResortedWords(ctx,x,y,sameTexData),ctx._italicDeg=0}}_drawResortedWords(ctx,startx,starty,samePagesData){for(var isLastRender=ctx._charSubmitCache&&ctx._charSubmitCache._enbale,mat=ctx._curMat,slen=samePagesData.length,id=0;id<slen;id++){var dt=samePagesData[id];if(dt){var pri=dt.words,pisz=pri.length;if(!(pisz<=0))for(var tex=samePagesData[id].tex,j=0;j<pisz;j++){var riSaved=pri[j],ri=riSaved.ri;if(!ri.isSpace){if(ri.touch(),ctx.drawTexAlign=!0,ILaya.Render.isConchApp)ctx._drawTextureM(tex.texture,startx+riSaved.x-ri.orix,starty+riSaved.y-ri.oriy,riSaved.w,riSaved.h,null,1,ri.uv);else{let t=tex;ctx._inner_drawTexture(t.texture,t.id,startx+riSaved.x-ri.orix,starty+riSaved.y-ri.oriy,riSaved.w,riSaved.h,mat,ri.uv,1,isLastRender)}ctx.touches&&ctx.touches.push(ri)}}}}}hasFreedText(txts){for(var sz=txts.length,i=0;i<sz;i++){var pri=txts[i];if(pri){var tex=pri.tex;if(tex.__destroyed||tex.genID!=pri.texgen)return!0}}return!1}getCharRenderInfo(str,font,color,strokeColor,lineWidth,isoTexture=!1){var fid=this.mapFont[font._family];null==fid&&(this.mapFont[font._family]=fid=this.fontID++);var key=str+"_"+fid+"_"+font._size+"_"+color;lineWidth>0&&(key+="_"+strokeColor+lineWidth),font._bold&&(key+="P"),1==this.fontScaleX&&1==this.fontScaleY||(key+=(20*this.fontScaleX|0)+"_"+(20*this.fontScaleY|0));var i=0,sz=this.textAtlases.length,ri=null,atlas=null;if(!isoTexture)for(i=0;i<sz;i++)if(ri=(atlas=this.textAtlases[i]).charMaps[key])return ri.touch(),ri;ri=new CharRenderInfo,this.charRender.scale(this.fontScaleX,this.fontScaleY),ri.char=str,ri.height=font._size;var margin=ILaya.Render.isConchApp?0:font._size/3|0,imgdt=null,w1=Math.ceil(this.charRender.getWidth(this.fontStr,str)*this.fontScaleX);if(w1>this.charRender.canvasWidth&&(this.charRender.canvasWidth=Math.min(2048,w1+2*margin)),isoTexture){this.charRender.fontsz=font._size,imgdt=this.charRender.getCharBmp(str,this.fontStr,lineWidth,color,strokeColor,ri,margin,margin,margin,margin,null);var tex=TextTexture.getTextTexture(imgdt.width,imgdt.height);tex.addChar(imgdt,0,0,ri.uv),ri.tex=tex,ri.orix=margin,ri.oriy=margin,tex.ri=ri,this.isoTextures.push(tex)}else{var len=str.length,lineExt=1*lineWidth,fw=Math.ceil((this.fontSizeW+2*lineExt)*this.fontScaleX),fh=Math.ceil((this.fontSizeH+2*lineExt)*this.fontScaleY);TextRender.imgdtRect[0]=(margin-this.fontSizeOffX-lineExt)*this.fontScaleX|0,TextRender.imgdtRect[1]=(margin-this.fontSizeOffY-lineExt)*this.fontScaleY|0,this.renderPerChar||1==len?(TextRender.imgdtRect[2]=Math.max(w1,fw),TextRender.imgdtRect[3]=Math.max(w1,fh)):(TextRender.imgdtRect[2]=-1,TextRender.imgdtRect[3]=fh),this.charRender.fontsz=font._size,imgdt=this.charRender.getCharBmp(str,this.fontStr,lineWidth,color,strokeColor,ri,margin,margin,margin,margin,TextRender.imgdtRect),atlas=this.addBmpData(imgdt,ri),TextRender.isWan1Wan?(ri.orix=margin,ri.oriy=margin):(ri.orix=this.fontSizeOffX+lineExt,ri.oriy=this.fontSizeOffY+lineExt),atlas.charMaps[key]=ri}return ri}addBmpData(data,ri){for(var w=data.width,h=data.height,sz=this.textAtlases.length,atlas=null,find=!1,i=0;i<sz&&!(find=(atlas=this.textAtlases[i]).getAEmpty(w,h,this.tmpAtlasPos));i++);if(!find){if(atlas=new TextAtlas,this.textAtlases.push(atlas),!(find=atlas.getAEmpty(w,h,this.tmpAtlasPos)))throw"err1";this.cleanAtlases()}return find&&(atlas.texture.addChar(data,this.tmpAtlasPos.x,this.tmpAtlasPos.y,ri.uv),ri.tex=atlas.texture),atlas}GC(){for(var i=0,sz=this.textAtlases.length,destroyDt=TextRender.destroyAtlasDt,totalUsedRateAtlas=0,curloop=RenderInfo.loopCount,maxWasteRateID=-1,maxWasteRate=0,tex=null,curatlas=null;i<sz;i++){if(tex=(curatlas=this.textAtlases[i]).texture){tex.curUsedCovRate,totalUsedRateAtlas+=tex.curUsedCovRateAtlas;var waste=curatlas.usedRate-tex.curUsedCovRateAtlas;maxWasteRate<waste&&(maxWasteRate=waste,maxWasteRateID=i)}curloop-curatlas.texture.lastTouchTm>destroyDt&&(TextRender.showLog&&console.log(curatlas.texture.id),curatlas.destroy(),this.textAtlases[i]=this.textAtlases[sz-1],sz--,i--,maxWasteRateID=-1)}for(this.textAtlases.length=sz,sz=this.isoTextures.length,i=0;i<sz;i++)curloop-(tex=this.isoTextures[i]).lastTouchTm>TextRender.destroyUnusedTextureDt&&(tex.ri.deleted=!0,tex.ri.tex=null,tex.destroy(),this.isoTextures[i]=this.isoTextures[sz-1],sz--,i--);this.isoTextures.length=sz;var needGC=this.textAtlases.length>1&&this.textAtlases.length-totalUsedRateAtlas>=2;(TextRender.atlasWidth*TextRender.atlasWidth*4*this.textAtlases.length>TextRender.cleanMem||needGC||TextRender.simClean)&&(TextRender.simClean=!1,TextRender.showLog&&console.log("清理使用率低的贴图。总使用率:",totalUsedRateAtlas,":",this.textAtlases.length,"最差贴图:"+maxWasteRateID),maxWasteRateID>=0&&((curatlas=this.textAtlases[maxWasteRateID]).destroy(),this.textAtlases[maxWasteRateID]=this.textAtlases[this.textAtlases.length-1],this.textAtlases.length=this.textAtlases.length-1)),TextTexture.clean()}cleanAtlases(){}getCharBmp(c){}checkBmpLine(data,l,sx,ex){this.bmpData32.buffer!=data.data.buffer&&(this.bmpData32=new Uint32Array(data.data.buffer));for(var stpos=data.width*l+sx,x=sx;x<ex;x++)if(0!=this.bmpData32[stpos++])return!0;return!1}updateBbx(data,curbbx,onlyH=!1){var w=data.width,h=data.height,x=0,sy=curbbx[1],ey=0,y=sy;if(this.checkBmpLine(data,sy,0,w))for(;;){if((y=(sy+ey)/2|0)+1>=sy){curbbx[1]=y;break}this.checkBmpLine(data,y,0,w)?sy=y:ey=y}if(curbbx[3]>h)curbbx[3]=h;else if(y=sy=curbbx[3],ey=h,this.checkBmpLine(data,sy,0,w))for(;;){if((y=(sy+ey)/2|0)-1<=sy){curbbx[3]=y;break}this.checkBmpLine(data,y,0,w)?sy=y:ey=y}if(!onlyH){var minx=curbbx[0],stpos=w*curbbx[1];for(y=curbbx[1];y<curbbx[3];y++){for(x=0;x<minx;x++)if(0!=this.bmpData32[stpos+x]){minx=x;break}stpos+=w}curbbx[0]=minx;var maxx=curbbx[2];for(stpos=w*curbbx[1],y=curbbx[1];y<curbbx[3];y++){for(x=maxx;x<w;x++)if(0!=this.bmpData32[stpos+x]){maxx=x;break}stpos+=w}curbbx[2]=maxx}}getFontSizeInfo(font){var finfo=this.fontSizeInfo[font];if(null!=finfo)return finfo;var fontstr="bold "+TextRender.standardFontSize+"px "+font;if(TextRender.isWan1Wan){this.fontSizeW=1.5*this.charRender.getWidth(fontstr,"有"),this.fontSizeH=1.5*TextRender.standardFontSize;var szinfo=this.fontSizeW<<8|this.fontSizeH;return this.fontSizeInfo[font]=szinfo,szinfo}TextRender.pixelBBX[0]=TextRender.standardFontSize/2,TextRender.pixelBBX[1]=TextRender.standardFontSize/2,TextRender.pixelBBX[2]=TextRender.standardFontSize,TextRender.pixelBBX[3]=TextRender.standardFontSize;var orix=16,oriy=16;this.charRender.scale(1,1),TextRender.tmpRI.height=TextRender.standardFontSize,this.charRender.fontsz=TextRender.standardFontSize;var bmpdt=this.charRender.getCharBmp("g",fontstr,0,"red",null,TextRender.tmpRI,orix,oriy,16,16);ILaya.Render.isConchApp&&(bmpdt.data=new Uint8ClampedArray(bmpdt.data)),this.bmpData32=new Uint32Array(bmpdt.data.buffer),this.updateBbx(bmpdt,TextRender.pixelBBX,!1),bmpdt=this.charRender.getCharBmp("有",fontstr,0,"red",null,TextRender.tmpRI,oriy,oriy,16,16),ILaya.Render.isConchApp&&(bmpdt.data=new Uint8ClampedArray(bmpdt.data)),this.bmpData32=new Uint32Array(bmpdt.data.buffer),TextRender.pixelBBX[2]<orix+TextRender.tmpRI.width&&(TextRender.pixelBBX[2]=orix+TextRender.tmpRI.width),this.updateBbx(bmpdt,TextRender.pixelBBX,!1),ILaya.Render.isConchApp&&(orix=0,oriy=0);var sizeinfo=Math.max(orix-TextRender.pixelBBX[0],0)<<24|Math.max(oriy-TextRender.pixelBBX[1],0)<<16|TextRender.pixelBBX[2]-TextRender.pixelBBX[0]<<8|TextRender.pixelBBX[3]-TextRender.pixelBBX[1];return this.fontSizeInfo[font]=sizeinfo,sizeinfo}printDbgInfo(){for(var f in console.log("图集个数:"+this.textAtlases.length+",每个图集大小:"+TextRender.atlasWidth+"x"+TextRender.atlasWidth," 用canvas:",TextRender.isWan1Wan),console.log("图集占用空间:"+TextRender.atlasWidth*TextRender.atlasWidth*4/1024/1024*this.textAtlases.length+"M"),console.log("缓存用到的字体:"),this.mapFont){var fontsz=this.getFontSizeInfo(f),offx=fontsz>>24,offy=fontsz>>16&255,fw=fontsz>>8&255,fh=255&fontsz;console.log(" "+f," off:",offx,offy," size:",fw,fh)}var num=0;console.log("缓存数据:");var totalUsedRate=0,totalUsedRateAtlas=0;this.textAtlases.forEach(function(a){var id=a.texture.id,dt=RenderInfo.loopCount-a.texture.lastTouchTm,dtstr=dt>0?dt+"帧以前":"当前帧";for(var k in totalUsedRate+=a.texture.curUsedCovRate,totalUsedRateAtlas+=a.texture.curUsedCovRateAtlas,console.log("--图集(id:"+id+",当前使用率:"+(1e3*a.texture.curUsedCovRate|0)+"‰","当前图集使用率:",(100*a.texture.curUsedCovRateAtlas|0)+"%","图集使用率:",100*a.usedRate|0,"%, 使用于:"+dtstr+")--:"),a.charMaps){var ri=a.charMaps[k];console.log(" off:",ri.orix,ri.oriy," bmp宽高:",ri.bmpWidth,ri.bmpHeight,"无效:",ri.deleted,"touchdt:",RenderInfo.loopCount-ri.touchTick,"位置:",ri.uv[0]*TextRender.atlasWidth|0,ri.uv[1]*TextRender.atlasWidth|0,"字符:",ri.char,"key:",k),num++}}),console.log("独立贴图文字("+this.isoTextures.length+"个):"),this.isoTextures.forEach(function(tex){console.log(" size:",tex._texW,tex._texH,"touch间隔:",RenderInfo.loopCount-tex.lastTouchTm,"char:",tex.ri.char)}),console.log("总缓存:",num,"总使用率:",totalUsedRate,"总当前图集使用率:",totalUsedRateAtlas)}showAtlas(n,bgcolor,x,y,w,h){if(!this.textAtlases[n])return console.log("没有这个图集"),null;var sp=new ILaya.Sprite,texttex=this.textAtlases[n].texture,texture={width:TextRender.atlasWidth,height:TextRender.atlasWidth,sourceWidth:TextRender.atlasWidth,sourceHeight:TextRender.atlasWidth,offsetX:0,offsetY:0,getIsReady:function(){return!0},_addReference:function(){},_removeReference:function(){},_getSource:function(){return texttex._getSource()},bitmap:{id:texttex.id},_uv:Texture.DEF_UV};return sp.size=function(w,h){return this.width=w,this.height=h,sp.graphics.clear(),sp.graphics.drawRect(0,0,sp.width,sp.height,bgcolor),sp.graphics.drawTexture(texture,0,0,sp.width,sp.height),this},sp.graphics.drawRect(0,0,w,h,bgcolor),sp.graphics.drawTexture(texture,0,0,w,h),sp.pos(x,y),ILaya.stage.addChild(sp),sp}filltext_native(ctx,data,htmlchars,x,y,fontStr,color,strokeColor,lineWidth,textAlign,underLine=0){if(!(data&&data.length<=0||htmlchars&&htmlchars.length<1)){var font=FontInfo.Parse(fontStr),nTextAlign=0;switch(textAlign){case"center":nTextAlign=ILaya.Context.ENUM_TEXTALIGN_CENTER;break;case"right":nTextAlign=ILaya.Context.ENUM_TEXTALIGN_RIGHT}return this._fast_filltext(ctx,data,htmlchars,x,y,font,color,strokeColor,lineWidth,nTextAlign,underLine)}}}TextRender.useOldCharBook=!1,TextRender.atlasWidth=2048,TextRender.noAtlas=!1,TextRender.forceSplitRender=!1,TextRender.forceWholeRender=!1,TextRender.scaleFontWithCtx=!0,TextRender.standardFontSize=32,TextRender.destroyAtlasDt=10,TextRender.checkCleanTextureDt=2e3,TextRender.destroyUnusedTextureDt=3e3,TextRender.cleanMem=104857600,TextRender.isWan1Wan=!1,TextRender.showLog=!1,TextRender.debugUV=!1,TextRender.atlasWidth2=4194304,TextRender.tmpRI=new CharRenderInfo,TextRender.pixelBBX=[0,0,0,0],TextRender.textRenderInst=null,TextRender.imgdtRect=[0,0,0,0],TextRender.simClean=!1,TextTexture.gTextRender=TextRender;class Context{constructor(){if(this._tmpMatrix=new Matrix,this._drawTexToDrawTri_Vert=new Float32Array(8),this._drawTexToDrawTri_Index=new Uint16Array([0,1,2,0,2,3]),this._tempUV=new Float32Array(8),this._drawTriUseAbsMatrix=!1,this._id=++Context._COUNT,this._other=null,this._renderNextSubmitIndex=0,this._path=null,this._drawCount=1,this._width=Context._MAXSIZE,this._height=Context._MAXSIZE,this._renderCount=0,this._isConvexCmd=!0,this._submits=null,this._curSubmit=null,this._submitKey=new SubmitKey,this._mesh=null,this._pathMesh=null,this._triangleMesh=null,this.meshlist=[],this._transedPoints=new Array(8),this._temp4Points=new Array(8),this._clipRect=Context.MAXCLIPRECT,this._globalClipMatrix=new Matrix(Context._MAXSIZE,0,0,Context._MAXSIZE,0,0),this._clipInCache=!1,this._clipInfoID=0,this._clipID_Gen=0,this._curMat=null,this._lastMatScaleX=1,this._lastMatScaleY=1,this._lastMat_a=1,this._lastMat_b=0,this._lastMat_c=0,this._lastMat_d=1,this._nBlendType=0,this._save=null,this._targets=null,this._charSubmitCache=null,this._saveMark=null,this._shader2D=new Shader2D,this.sprite=null,this._italicDeg=0,this._lastTex=null,this._fillColor=0,this._flushCnt=0,this.defTexture=null,this._colorFiler=null,this.drawTexAlign=!1,this._incache=!1,this.isMain=!1,Context._contextcount++,Context._textRender=Context._textRender||new TextRender,!this.defTexture){var defTex2d=new Texture2D(2,2);defTex2d.setPixels(new Uint8Array(16)),defTex2d.lock=!0,this.defTexture=new Texture(defTex2d)}this._lastTex=this.defTexture,this.clear()}static __init__(){Context.MAXCLIPRECT=new Rectangle(0,0,Context._MAXSIZE,Context._MAXSIZE),ContextParams.DEFAULT=new ContextParams}drawImage(...args){}getImageData(...args){}measureText(text){return null}setTransform(...args){}$transform(a,b,c,d,tx,ty){}get lineJoin(){return null}set lineJoin(value){}get lineCap(){return null}set lineCap(value){}get miterLimit(){return null}set miterLimit(value){}clearRect(x,y,width,height){}_drawRect(x,y,width,height,style){Stat.renderBatches++,style&&(this.fillStyle=style),this.fillRect(x,y,width,height,null)}drawTexture2(x,y,pivotX,pivotY,m,args2){}transformByMatrix(matrix,tx,ty){this.transform(matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx+tx,matrix.ty+ty)}saveTransform(matrix){this.save()}restoreTransform(matrix){this.restore()}drawRect(x,y,width,height,fillColor,lineColor,lineWidth){null!=fillColor&&(this.fillStyle=fillColor,this.fillRect(x,y,width,height)),null!=lineColor&&(this.strokeStyle=lineColor,this.lineWidth=lineWidth,this.strokeRect(x,y,width,height))}alpha(value){this.globalAlpha*=value}_transform(mat,pivotX,pivotY){this.translate(pivotX,pivotY),this.transform(mat.a,mat.b,mat.c,mat.d,mat.tx,mat.ty),this.translate(-pivotX,-pivotY)}_rotate(angle,pivotX,pivotY){this.translate(pivotX,pivotY),this.rotate(angle),this.translate(-pivotX,-pivotY)}_scale(scaleX,scaleY,pivotX,pivotY){this.translate(pivotX,pivotY),this.scale(scaleX,scaleY),this.translate(-pivotX,-pivotY)}_drawLine(x,y,fromX,fromY,toX,toY,lineColor,lineWidth,vid){this.beginPath(),this.strokeStyle=lineColor,this.lineWidth=lineWidth,this.moveTo(x+fromX,y+fromY),this.lineTo(x+toX,y+toY),this.stroke()}_drawLines(x,y,points,lineColor,lineWidth,vid){this.beginPath(),this.strokeStyle=lineColor,this.lineWidth=lineWidth;points.length;this.addPath(points.slice(),!1,!1,x,y),this.stroke()}drawCurves(x,y,points,lineColor,lineWidth){this.beginPath(),this.strokeStyle=lineColor,this.lineWidth=lineWidth,this.moveTo(x+points[0],y+points[1]);for(var i=2,n=points.length;i<n;)this.quadraticCurveTo(x+points[i++],y+points[i++],x+points[i++],y+points[i++]);this.stroke()}_fillAndStroke(fillColor,strokeColor,lineWidth,isConvexPolygon=!1){null!=fillColor&&(this.fillStyle=fillColor,this.fill()),null!=strokeColor&&lineWidth>0&&(this.strokeStyle=strokeColor,this.lineWidth=lineWidth,this.stroke())}_drawCircle(x,y,radius,fillColor,lineColor,lineWidth,vid){Stat.renderBatches++,this.beginPath(!0),this.arc(x,y,radius,0,Context.PI2),this.closePath(),this._fillAndStroke(fillColor,lineColor,lineWidth)}_drawPie(x,y,radius,startAngle,endAngle,fillColor,lineColor,lineWidth,vid){this.beginPath(),this.moveTo(x,y),this.arc(x,y,radius,startAngle,endAngle),this.closePath(),this._fillAndStroke(fillColor,lineColor,lineWidth)}_drawPoly(x,y,points,fillColor,lineColor,lineWidth,isConvexPolygon,vid){points.length;this.beginPath(),this.addPath(points.slice(),!0,isConvexPolygon,x,y),this.closePath(),this._fillAndStroke(fillColor,lineColor,lineWidth,isConvexPolygon)}_drawPath(x,y,paths,brush,pen){this.beginPath();for(var i=0,n=paths.length;i<n;i++){var path=paths[i];switch(path[0]){case"moveTo":this.moveTo(x+path[1],y+path[2]);break;case"lineTo":this.lineTo(x+path[1],y+path[2]);break;case"arcTo":this.arcTo(x+path[1],y+path[2],x+path[3],y+path[4],path[5]);break;case"closePath":this.closePath()}}null!=brush&&(this.fillStyle=brush.fillStyle,this.fill()),null!=pen&&(this.strokeStyle=pen.strokeStyle,this.lineWidth=pen.lineWidth||1,this.lineJoin=pen.lineJoin,this.lineCap=pen.lineCap,this.miterLimit=pen.miterLimit,this.stroke())}static set2DRenderConfig(){var gl=LayaGL.instance;WebGLContext.setBlend(gl,!0),WebGLContext.setBlendFunc(gl,gl.ONE,gl.ONE_MINUS_SRC_ALPHA),WebGLContext.setDepthTest(gl,!1),WebGLContext.setCullFace(gl,!1),WebGLContext.setDepthMask(gl,!0),WebGLContext.setFrontFace(gl,gl.CCW),gl.viewport(0,0,RenderState2D.width,RenderState2D.height)}clearBG(r,g,b,a){var gl=WebGLContext.mainContext;gl.clearColor(r,g,b,a),gl.clear(gl.COLOR_BUFFER_BIT)}_getSubmits(){return this._submits}_releaseMem(keepRT=!1){if(this._submits){this._curMat.destroy(),this._curMat=null,this._shader2D.destroy(),this._shader2D=null,this._charSubmitCache.clear();for(var i=0,n=this._submits._length;i<n;i++)this._submits[i].releaseRender();var sz;for(this._submits.length=0,this._submits._length=0,this._submits=null,this._curSubmit=null,this._path=null,this._save=null,i=0,sz=this.meshlist.length;i<sz;i++){this.meshlist[i].destroy()}this.meshlist.length=0,this.sprite=null,keepRT||(this._targets&&this._targets.destroy(),this._targets=null)}}destroy(keepRT=!1){--Context._contextcount,this.sprite=null,this._releaseMem(keepRT),this._charSubmitCache.destroy(),this._mesh.destroy(),keepRT||(this._targets&&this._targets.destroy(),this._targets=null)}clear(){this._submits||(this._other=ContextParams.DEFAULT,this._curMat=Matrix.create(),this._charSubmitCache=new CharSubmitCache,this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh),this._pathMesh=MeshVG.getAMesh(this.isMain),this.meshlist.push(this._pathMesh),this._triangleMesh=MeshTexture.getAMesh(this.isMain),this.meshlist.push(this._triangleMesh),this._submits=[],this._save=[SaveMark.Create(this)],this._save.length=10,this._shader2D=new Shader2D),this._submitKey.clear(),this._mesh.clearVB(),this._renderCount++,this._drawCount=1,this._other=ContextParams.DEFAULT,this._other.lineWidth=this._shader2D.ALPHA=1,this._nBlendType=0,this._clipRect=Context.MAXCLIPRECT,this._curSubmit=SubmitBase.RENDERBASE,SubmitBase.RENDERBASE._ref=16777215,SubmitBase.RENDERBASE._numEle=0,this._shader2D.fillStyle=this._shader2D.strokeStyle=DrawStyle.DEFAULT;for(var i=0,n=this._submits._length;i<n;i++)this._submits[i].releaseRender();this._submits._length=0,this._curMat.identity(),this._other.clear(),this._saveMark=this._save[0],this._save._length=1}size(w,h){this._width==w&&this._height==h||(this._width=w,this._height=h,this._targets&&(this._targets.destroy(),this._targets=new RenderTexture2D(w,h,BaseTexture.FORMAT_R8G8B8A8,-1)),this.isMain&&(WebGLContext.mainContext.viewport(0,0,w,h),RenderState2D.width=w,RenderState2D.height=h)),0===w&&0===h&&this._releaseMem()}set asBitmap(value){if(value){if(this._targets||(this._targets=new RenderTexture2D(this._width,this._height,BaseTexture.FORMAT_R8G8B8A8,-1)),!this._width||!this._height)throw Error("asBitmap no size!")}else this._targets&&this._targets.destroy(),this._targets=null}getMatScaleX(){return this._lastMat_a==this._curMat.a&&this._lastMat_b==this._curMat.b?this._lastMatScaleX:(this._lastMatScaleX=this._curMat.getScaleX(),this._lastMat_a=this._curMat.a,this._lastMat_b=this._curMat.b,this._lastMatScaleX)}getMatScaleY(){return this._lastMat_c==this._curMat.c&&this._lastMat_d==this._curMat.d?this._lastMatScaleY:(this._lastMatScaleY=this._curMat.getScaleY(),this._lastMat_c=this._curMat.c,this._lastMat_d=this._curMat.d,this._lastMatScaleY)}setFillColor(color){this._fillColor=color}getFillColor(){return this._fillColor}set fillStyle(value){this._shader2D.fillStyle.equal(value)||(SaveBase.save(this,SaveBase.TYPE_FILESTYLE,this._shader2D,!1),this._shader2D.fillStyle=DrawStyle.create(value),this._submitKey.other=-this._shader2D.fillStyle.toInt())}get fillStyle(){return this._shader2D.fillStyle}set globalAlpha(value){(value=Math.floor(1e3*value)/1e3)!=this._shader2D.ALPHA&&(SaveBase.save(this,SaveBase.TYPE_ALPHA,this._shader2D,!1),this._shader2D.ALPHA=value)}get globalAlpha(){return this._shader2D.ALPHA}set textAlign(value){this._other.textAlign===value||(this._other=this._other.make(),SaveBase.save(this,SaveBase.TYPE_TEXTALIGN,this._other,!1),this._other.textAlign=value)}get textAlign(){return this._other.textAlign}set textBaseline(value){this._other.textBaseline===value||(this._other=this._other.make(),SaveBase.save(this,SaveBase.TYPE_TEXTBASELINE,this._other,!1),this._other.textBaseline=value)}get textBaseline(){return this._other.textBaseline}set globalCompositeOperation(value){var n=BlendMode.TOINT[value];null==n||this._nBlendType===n||(SaveBase.save(this,SaveBase.TYPE_GLOBALCOMPOSITEOPERATION,this,!0),this._curSubmit=SubmitBase.RENDERBASE,this._nBlendType=n)}get globalCompositeOperation(){return BlendMode.NAMES[this._nBlendType]}set strokeStyle(value){this._shader2D.strokeStyle.equal(value)||(SaveBase.save(this,SaveBase.TYPE_STROKESTYLE,this._shader2D,!1),this._shader2D.strokeStyle=DrawStyle.create(value),this._submitKey.other=-this._shader2D.strokeStyle.toInt())}get strokeStyle(){return this._shader2D.strokeStyle}translate(x,y){0===x&&0===y||(SaveTranslate.save(this),this._curMat._bTransform?(SaveTransform.save(this),this._curMat.tx+=x*this._curMat.a+y*this._curMat.c,this._curMat.ty+=x*this._curMat.b+y*this._curMat.d):(this._curMat.tx=x,this._curMat.ty=y))}set lineWidth(value){this._other.lineWidth===value||(this._other=this._other.make(),SaveBase.save(this,SaveBase.TYPE_LINEWIDTH,this._other,!1),this._other.lineWidth=value)}get lineWidth(){return this._other.lineWidth}save(){this._save[this._save._length++]=SaveMark.Create(this)}restore(){var sz=this._save._length,lastBlend=this._nBlendType;if(!(sz<1)){for(var i=sz-1;i>=0;i--){var o=this._save[i];if(o.restore(this),o.isSaveMark())return void(this._save._length=i)}lastBlend!=this._nBlendType&&(this._curSubmit=SubmitBase.RENDERBASE)}}set font(str){this._other=this._other.make(),SaveBase.save(this,SaveBase.TYPE_FONT,this._other,!1)}fillText(txt,x,y,fontStr,color,align){this._fillText(txt,null,x,y,fontStr,color,null,0,null)}_fillText(txt,words,x,y,fontStr,color,strokeColor,lineWidth,textAlign,underLine=0){txt?Context._textRender.filltext(this,txt,x,y,fontStr,color,strokeColor,lineWidth,textAlign,underLine):words&&Context._textRender.fillWords(this,words,x,y,fontStr,color,strokeColor,lineWidth)}_fast_filltext(data,x,y,fontObj,color,strokeColor,lineWidth,textAlign,underLine=0){Context._textRender._fast_filltext(this,data,null,x,y,fontObj,color,strokeColor,lineWidth,textAlign,underLine)}fillWords(words,x,y,fontStr,color){this._fillText(null,words,x,y,fontStr,color,null,-1,null,0)}fillBorderWords(words,x,y,font,color,borderColor,lineWidth){this._fillBorderText(null,words,x,y,font,color,borderColor,lineWidth,null)}drawText(text,x,y,font,color,textAlign){this._fillText(text,null,x,y,font,ColorUtils.create(color).strColor,null,-1,textAlign)}strokeWord(text,x,y,font,color,lineWidth,textAlign){this._fillText(text,null,x,y,font,null,ColorUtils.create(color).strColor,lineWidth||1,textAlign)}fillBorderText(txt,x,y,fontStr,fillColor,borderColor,lineWidth,textAlign){this._fillBorderText(txt,null,x,y,fontStr,ColorUtils.create(fillColor).strColor,ColorUtils.create(borderColor).strColor,lineWidth,textAlign)}_fillBorderText(txt,words,x,y,fontStr,fillColor,borderColor,lineWidth,textAlign){this._fillText(txt,words,x,y,fontStr,fillColor,borderColor,lineWidth||1,textAlign)}_fillRect(x,y,width,height,rgba){var submit=this._curSubmit,sameKey=submit&&submit._key.submitType===SubmitBase.KEY_DRAWTEXTURE&&submit._key.blendShader===this._nBlendType;this._mesh.vertNum+4>Context._MAXVERTNUM&&(this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh),sameKey=!1),sameKey&&(sameKey=sameKey&&this.isSameClipInfo(submit)),this.transformQuad(x,y,width,height,0,this._curMat,this._transedPoints),this.clipedOff(this._transedPoints)||(this._mesh.addQuad(this._transedPoints,Texture.NO_UV,rgba,!1),sameKey||(submit=this._curSubmit=SubmitTexture.create(this,this._mesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0)),this._submits[this._submits._length++]=submit,this._copyClipInfo(submit,this._globalClipMatrix),submit.shaderValue.textureHost=this._lastTex,submit._key.other=this._lastTex&&this._lastTex.bitmap?this._lastTex.bitmap.id:-1,submit._renderType=SubmitBase.TYPE_TEXTURE),this._curSubmit._numEle+=6,this._mesh.indexNum+=6,this._mesh.vertNum+=4)}fillRect(x,y,width,height,fillStyle){var drawstyle=fillStyle?DrawStyle.create(fillStyle):this._shader2D.fillStyle,rgba=this.mixRGBandAlpha(drawstyle.toInt());this._fillRect(x,y,width,height,rgba)}fillTexture(texture,x,y,width,height,type,offset,other){texture._getSource()?this._fillTexture(texture,texture.width,texture.height,texture.uvrect,x,y,width,height,type,offset.x,offset.y):this.sprite&&ILaya.systemTimer.callLater(this,this._repaintSprite)}_fillTexture(texture,texw,texh,texuvRect,x,y,width,height,type,offsetx,offsety){var submit=this._curSubmit;this._mesh.vertNum+4>Context._MAXVERTNUM&&(this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh));var repeatx=!0,repeaty=!0;switch(type){case"repeat":break;case"repeat-x":repeaty=!1;break;case"repeat-y":repeatx=!1;break;case"no-repeat":repeatx=repeaty=!1}var uv=this._temp4Points,stu=0,stv=0,stx=0,sty=0,edx=0,edy=0;if(offsetx<0?(stx=x,stu=-offsetx%texw/texw):stx=x+offsetx,offsety<0?(sty=y,stv=-offsety%texh/texh):sty=y+offsety,edx=x+width,edy=y+height,!repeatx&&(edx=Math.min(edx,x+offsetx+texw)),!repeaty&&(edy=Math.min(edy,y+offsety+texh)),!(edx<x||edy<y||stx>edx||sty>edy)){var edu=(edx-x-offsetx)/texw,edv=(edy-y-offsety)/texh;if(this.transformQuad(stx,sty,edx-stx,edy-sty,0,this._curMat,this._transedPoints),uv[0]=stu,uv[1]=stv,uv[2]=edu,uv[3]=stv,uv[4]=edu,uv[5]=edv,uv[6]=stu,uv[7]=edv,!this.clipedOff(this._transedPoints)){var rgba=this._mixRGBandAlpha(4294967295,this._shader2D.ALPHA);this._mesh.addQuad(this._transedPoints,uv,rgba,!0);var sv=Value2D.create(ShaderDefines2D.TEXTURE2D,0);sv.defines.add(ShaderDefines2D.FILLTEXTURE),sv.u_TexRange=texuvRect,submit=this._curSubmit=SubmitTexture.create(this,this._mesh,sv),this._submits[this._submits._length++]=submit,this._copyClipInfo(submit,this._globalClipMatrix),submit.shaderValue.textureHost=texture,submit._renderType=SubmitBase.TYPE_TEXTURE,this._curSubmit._numEle+=6,this._mesh.indexNum+=6,this._mesh.vertNum+=4}this.breakNextMerge()}}setColorFilter(filter){SaveBase.save(this,SaveBase.TYPE_COLORFILTER,this,!0),this._colorFiler=filter,this._curSubmit=SubmitBase.RENDERBASE}drawTexture(tex,x,y,width,height){this._drawTextureM(tex,x,y,width,height,null,1,null)}drawTextures(tex,pos,tx,ty){if(tex._getSource())for(var n=pos.length/2,ipos=0,bmpid=tex.bitmap.id,i=0;i<n;i++)this._inner_drawTexture(tex,bmpid,pos[ipos++]+tx,pos[ipos++]+ty,0,0,null,null,1,!1);else this.sprite&&ILaya.systemTimer.callLater(this,this._repaintSprite)}_drawTextureAddSubmit(imgid,tex){var submit=null;submit=SubmitTexture.create(this,this._mesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0)),this._submits[this._submits._length++]=submit,submit.shaderValue.textureHost=tex,submit._key.other=imgid,submit._renderType=SubmitBase.TYPE_TEXTURE,this._curSubmit=submit}_drawTextureM(tex,x,y,width,height,m,alpha,uv){var cs=this.sprite;return!!tex._getSource(function(){cs&&cs.repaint()})&&this._inner_drawTexture(tex,tex.bitmap.id,x,y,width,height,m,uv,alpha,!1)}_drawRenderTexture(tex,x,y,width,height,m,alpha,uv){return this._inner_drawTexture(tex,-1,x,y,width,height,m,uv,1,!1)}submitDebugger(){this._submits[this._submits._length++]=SubmitCMD.create([],function(){},this)}_copyClipInfo(submit,clipInfo){var cm=submit.shaderValue.clipMatDir;cm[0]=clipInfo.a,cm[1]=clipInfo.b,cm[2]=clipInfo.c,cm[3]=clipInfo.d;var cmp=submit.shaderValue.clipMatPos;cmp[0]=clipInfo.tx,cmp[1]=clipInfo.ty,submit.clipInfoID=this._clipInfoID,this._clipInCache&&(submit.shaderValue.clipOff[0]=1)}isSameClipInfo(submit){return submit.clipInfoID===this._clipInfoID}_useNewTex2DSubmit(tex,minVertNum){this._mesh.vertNum+minVertNum>Context._MAXVERTNUM&&(this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh));var submit=SubmitTexture.create(this,this._mesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0));this._submits[this._submits._length++]=this._curSubmit=submit,submit.shaderValue.textureHost=tex,this._copyClipInfo(submit,this._globalClipMatrix)}_drawTexRect(x,y,w,h,uv){this.transformQuad(x,y,w,h,this._italicDeg,this._curMat,this._transedPoints);var ops=this._transedPoints;ops[0]=ops[0]+.5|0,ops[1]=ops[1]+.5|0,ops[2]=ops[2]+.5|0,ops[3]=ops[3]+.5|0,ops[4]=ops[4]+.5|0,ops[5]=ops[5]+.5|0,ops[6]=ops[6]+.5|0,ops[7]=ops[7]+.5|0,this.clipedOff(this._transedPoints)||(this._mesh.addQuad(this._transedPoints,uv,this._fillColor,!0),this._curSubmit._numEle+=6,this._mesh.indexNum+=6,this._mesh.vertNum+=4)}drawCallOptimize(enbale){return this._charSubmitCache.enable(enbale,this),enbale}_inner_drawTexture(tex,imgid,x,y,width,height,m,uv,alpha,lastRender){var preKey=this._curSubmit._key;if(uv=uv||tex._uv,preKey.submitType===SubmitBase.KEY_TRIANGLES&&preKey.other===imgid){var tv=this._drawTexToDrawTri_Vert;tv[0]=x,tv[1]=y,tv[2]=x+width,tv[3]=y,tv[4]=x+width,tv[5]=y+height,tv[6]=x,tv[7]=y+height,this._drawTriUseAbsMatrix=!0;var tuv=this._tempUV;return tuv[0]=uv[0],tuv[1]=uv[1],tuv[2]=uv[2],tuv[3]=uv[3],tuv[4]=uv[4],tuv[5]=uv[5],tuv[6]=uv[6],tuv[7]=uv[7],this.drawTriangles(tex,0,0,tv,tuv,this._drawTexToDrawTri_Index,m,alpha,null,null),this._drawTriUseAbsMatrix=!1,!0}var mesh=this._mesh,submit=this._curSubmit,ops=lastRender?this._charSubmitCache.getPos():this._transedPoints;if(this.transformQuad(x,y,width||tex.width,height||tex.height,this._italicDeg,m||this._curMat,ops),this.drawTexAlign){var round=Math.round;ops[0]=round(ops[0]),ops[1]=round(ops[1]),ops[2]=round(ops[2]),ops[3]=round(ops[3]),ops[4]=round(ops[4]),ops[5]=round(ops[5]),ops[6]=round(ops[6]),ops[7]=round(ops[7]),this.drawTexAlign=!1}var rgba=this._mixRGBandAlpha(4294967295,this._shader2D.ALPHA*alpha);if(lastRender)return this._charSubmitCache.add(this,tex,imgid,ops,uv,rgba),!0;this._drawCount++;var sameKey=imgid>=0&&preKey.submitType===SubmitBase.KEY_DRAWTEXTURE&&preKey.other===imgid;return sameKey&&(sameKey=sameKey&&this.isSameClipInfo(submit)),this._lastTex=tex,mesh.vertNum+4>Context._MAXVERTNUM&&(mesh=this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(mesh),sameKey=!1),mesh.addQuad(ops,uv,rgba,!0),sameKey||(this._submits[this._submits._length++]=this._curSubmit=submit=SubmitTexture.create(this,mesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0)),submit.shaderValue.textureHost=tex,submit._key.other=imgid,this._copyClipInfo(submit,this._globalClipMatrix)),submit._numEle+=6,mesh.indexNum+=6,mesh.vertNum+=4,!0}transform4Points(a,m,out){var tx=m.tx,ty=m.ty,ma=m.a,mb=m.b,mc=m.c,md=m.d,a0=a[0],a1=a[1],a2=a[2],a3=a[3],a4=a[4],a5=a[5],a6=a[6],a7=a[7];m._bTransform?(out[0]=a0*ma+a1*mc+tx,out[1]=a0*mb+a1*md+ty,out[2]=a2*ma+a3*mc+tx,out[3]=a2*mb+a3*md+ty,out[4]=a4*ma+a5*mc+tx,out[5]=a4*mb+a5*md+ty,out[6]=a6*ma+a7*mc+tx,out[7]=a6*mb+a7*md+ty):(out[0]=a0+tx,out[1]=a1+ty,out[2]=a2+tx,out[3]=a3+ty,out[4]=a4+tx,out[5]=a5+ty,out[6]=a6+tx,out[7]=a7+ty)}clipedOff(pt){return this._clipRect.width<=0||this._clipRect.height<=0}transformQuad(x,y,w,h,italicDeg,m,out){var xoff=0;0!=italicDeg&&(xoff=Math.tan(italicDeg*Math.PI/180)*h);var maxx=x+w,maxy=y+h,tx=m.tx,ty=m.ty,ma=m.a,mb=m.b,mc=m.c,md=m.d,a0=x+xoff,a1=y,a2=maxx+xoff,a3=y,a4=maxx,a5=maxy,a6=x,a7=maxy;m._bTransform?(out[0]=a0*ma+a1*mc+tx,out[1]=a0*mb+a1*md+ty,out[2]=a2*ma+a3*mc+tx,out[3]=a2*mb+a3*md+ty,out[4]=a4*ma+a5*mc+tx,out[5]=a4*mb+a5*md+ty,out[6]=a6*ma+a7*mc+tx,out[7]=a6*mb+a7*md+ty):(out[0]=a0+tx,out[1]=a1+ty,out[2]=a2+tx,out[3]=a3+ty,out[4]=a4+tx,out[5]=a5+ty,out[6]=a6+tx,out[7]=a7+ty)}pushRT(){this.addRenderObject(SubmitCMD.create(null,RenderTexture2D.pushRT,this))}popRT(){this.addRenderObject(SubmitCMD.create(null,RenderTexture2D.popRT,this)),this.breakNextMerge()}useRT(rt){this.addRenderObject(SubmitCMD.create([rt],function(rt){if(!rt)throw"error useRT";rt.start(),rt.clear(0,0,0,0)},this)),this.breakNextMerge()}RTRestore(rt){this.addRenderObject(SubmitCMD.create([rt],function(rt){rt.restore()},this)),this.breakNextMerge()}breakNextMerge(){this._curSubmit=SubmitBase.RENDERBASE}_repaintSprite(){this.sprite&&this.sprite.repaint()}drawTextureWithTransform(tex,x,y,width,height,transform,tx,ty,alpha,blendMode,colorfilter=null,uv){var oldcomp=null,curMat=this._curMat;blendMode&&(oldcomp=this.globalCompositeOperation,this.globalCompositeOperation=blendMode);var oldColorFilter=this._colorFiler;if(colorfilter&&this.setColorFilter(colorfilter),!transform)return this._drawTextureM(tex,x+tx,y+ty,width,height,curMat,alpha,uv),blendMode&&(this.globalCompositeOperation=oldcomp),void(colorfilter&&this.setColorFilter(oldColorFilter));var tmpMat=this._tmpMatrix;tmpMat.a=transform.a,tmpMat.b=transform.b,tmpMat.c=transform.c,tmpMat.d=transform.d,tmpMat.tx=transform.tx+tx,tmpMat.ty=transform.ty+ty,tmpMat._bTransform=transform._bTransform,transform&&curMat._bTransform?(Matrix.mul(tmpMat,curMat,tmpMat),(transform=tmpMat)._bTransform=!0):(tmpMat.tx+=curMat.tx,tmpMat.ty+=curMat.ty,transform=tmpMat),this._drawTextureM(tex,x,y,width,height,transform,alpha,uv),blendMode&&(this.globalCompositeOperation=oldcomp),colorfilter&&this.setColorFilter(oldColorFilter)}_flushToTarget(context,target){RenderState2D.worldScissorTest=!1;var gl=LayaGL.instance;gl.disable(gl.SCISSOR_TEST);var preAlpha=RenderState2D.worldAlpha,preMatrix4=RenderState2D.worldMatrix4,preMatrix=RenderState2D.worldMatrix;RenderState2D.worldMatrix=Matrix.EMPTY,RenderState2D.restoreTempArray(),RenderState2D.worldMatrix4=RenderState2D.TEMPMAT4_ARRAY,RenderState2D.worldAlpha=1,BaseShader.activeShader=null,target.start(),context._submits._length>0&&target.clear(0,0,0,0),context._curSubmit=SubmitBase.RENDERBASE,context.flush(),context.clear(),target.restore(),context._curSubmit=SubmitBase.RENDERBASE,BaseShader.activeShader=null,RenderState2D.worldAlpha=preAlpha,RenderState2D.worldMatrix4=preMatrix4,RenderState2D.worldMatrix=preMatrix}drawCanvas(canvas,x,y,width,height){if(canvas){var submit,src=canvas.context;if(src._targets)src._submits._length>0&&(submit=SubmitCMD.create([src,src._targets],this._flushToTarget,this),this._submits[this._submits._length++]=submit),this._drawRenderTexture(src._targets,x,y,width,height,null,1,RenderTexture2D.flipyuv),this._curSubmit=SubmitBase.RENDERBASE;else{var canv=canvas;canv.touches&&canv.touches.forEach(function(v){v.touch()}),submit=SubmitCanvas.create(canvas,this._shader2D.ALPHA,this._shader2D.filters),this._submits[this._submits._length++]=submit,submit._key.clear();var mat=submit._matrix;this._curMat.copyTo(mat);var tx=mat.tx,ty=mat.ty;mat.tx=mat.ty=0,mat.transformPoint(Point.TEMP.setTo(x,y)),mat.translate(Point.TEMP.x+tx,Point.TEMP.y+ty),Matrix.mul(canv.invMat,mat,mat),this._curSubmit=SubmitBase.RENDERBASE}}}drawTarget(rt,x,y,width,height,m,shaderValue,uv=null,blend=-1){if(this._drawCount++,this._mesh.vertNum+4>Context._MAXVERTNUM&&(this._mesh=MeshQuadTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh)),this.transformQuad(x,y,width,height,0,m||this._curMat,this._transedPoints),!this.clipedOff(this._transedPoints)){this._mesh.addQuad(this._transedPoints,uv||Texture.DEF_UV,4294967295,!0);var submit=this._curSubmit=SubmitTarget.create(this,this._mesh,shaderValue,rt);return submit.blendType=-1==blend?this._nBlendType:blend,this._copyClipInfo(submit,this._globalClipMatrix),submit._numEle=6,this._mesh.indexNum+=6,this._mesh.vertNum+=4,this._submits[this._submits._length++]=submit,this._curSubmit=SubmitBase.RENDERBASE,!0}return this._curSubmit=SubmitBase.RENDERBASE,!1}drawTriangles(tex,x,y,vertices,uvs,indices,matrix,alpha,color,blendMode){if(tex._getSource()){this._drawCount++;var tmpMat=this._tmpMatrix,triMesh=this._triangleMesh,oldColorFilter=null,needRestorFilter=!1;color&&(oldColorFilter=this._colorFiler,this._colorFiler=color,this._curSubmit=SubmitBase.RENDERBASE,needRestorFilter=oldColorFilter!=color);var webGLImg=tex.bitmap,preKey=this._curSubmit._key,sameKey=preKey.submitType===SubmitBase.KEY_TRIANGLES&&preKey.other===webGLImg.id&&preKey.blendShader==this._nBlendType;if(triMesh.vertNum+vertices.length/2>Context._MAXVERTNUM&&(triMesh=this._triangleMesh=MeshTexture.getAMesh(this.isMain),this.meshlist.push(triMesh),sameKey=!1),!sameKey){var submit=this._curSubmit=SubmitTexture.create(this,triMesh,Value2D.create(ShaderDefines2D.TEXTURE2D,0));submit.shaderValue.textureHost=tex,submit._renderType=SubmitBase.TYPE_TEXTURE,submit._key.submitType=SubmitBase.KEY_TRIANGLES,submit._key.other=webGLImg.id,this._copyClipInfo(submit,this._globalClipMatrix),this._submits[this._submits._length++]=submit}var rgba=this._mixRGBandAlpha(4294967295,this._shader2D.ALPHA*alpha);this._drawTriUseAbsMatrix?triMesh.addData(vertices,uvs,indices,matrix,rgba):(matrix?(tmpMat.a=matrix.a,tmpMat.b=matrix.b,tmpMat.c=matrix.c,tmpMat.d=matrix.d,tmpMat.tx=matrix.tx+x,tmpMat.ty=matrix.ty+y):(tmpMat.a=1,tmpMat.b=0,tmpMat.c=0,tmpMat.d=1,tmpMat.tx=x,tmpMat.ty=y),Matrix.mul(tmpMat,this._curMat,tmpMat),triMesh.addData(vertices,uvs,indices,tmpMat,rgba)),this._curSubmit._numEle+=indices.length,needRestorFilter&&(this._colorFiler=oldColorFilter,this._curSubmit=SubmitBase.RENDERBASE)}else this.sprite&&ILaya.systemTimer.callLater(this,this._repaintSprite)}transform(a,b,c,d,tx,ty){SaveTransform.save(this),Matrix.mul(Matrix.TEMP.setTo(a,b,c,d,tx,ty),this._curMat,this._curMat),this._curMat._checkTransform()}_transformByMatrix(matrix,tx,ty){matrix.setTranslate(tx,ty),Matrix.mul(matrix,this._curMat,this._curMat),matrix.setTranslate(0,0),this._curMat._bTransform=!0}setTransformByMatrix(value){value.copyTo(this._curMat)}rotate(angle){SaveTransform.save(this),this._curMat.rotateEx(angle)}scale(scaleX,scaleY){SaveTransform.save(this),this._curMat.scaleEx(scaleX,scaleY)}clipRect(x,y,width,height){SaveClipRect.save(this),this._clipRect==Context.MAXCLIPRECT?this._clipRect=new Rectangle(x,y,width,height):(this._clipRect.width=width,this._clipRect.height=height,this._clipRect.x=x,this._clipRect.y=y),this._clipID_Gen++,this._clipID_Gen%=1e4,this._clipInfoID=this._clipID_Gen;var cm=this._globalClipMatrix,minx=cm.tx,miny=cm.ty,maxx=minx+cm.a,maxy=miny+cm.d;if(this._clipRect.width>=Context._MAXSIZE?(cm.a=cm.d=Context._MAXSIZE,cm.b=cm.c=cm.tx=cm.ty=0):(this._curMat._bTransform?(cm.tx=this._clipRect.x*this._curMat.a+this._clipRect.y*this._curMat.c+this._curMat.tx,cm.ty=this._clipRect.x*this._curMat.b+this._clipRect.y*this._curMat.d+this._curMat.ty,cm.a=this._clipRect.width*this._curMat.a,cm.b=this._clipRect.width*this._curMat.b,cm.c=this._clipRect.height*this._curMat.c,cm.d=this._clipRect.height*this._curMat.d):(cm.tx=this._clipRect.x+this._curMat.tx,cm.ty=this._clipRect.y+this._curMat.ty,cm.a=this._clipRect.width,cm.b=cm.c=0,cm.d=this._clipRect.height),this._incache&&(this._clipInCache=!0)),cm.a>0&&cm.d>0){var cmaxx=cm.tx+cm.a,cmaxy=cm.ty+cm.d;cmaxx<=minx||cmaxy<=miny||cm.tx>=maxx||cm.ty>=maxy?(cm.a=-.1,cm.d=-.1):(cm.tx<minx&&(cm.a-=minx-cm.tx,cm.tx=minx),cmaxx>maxx&&(cm.a-=cmaxx-maxx),cm.ty<miny&&(cm.d-=miny-cm.ty,cm.ty=miny),cmaxy>maxy&&(cm.d-=cmaxy-maxy),cm.a<=0&&(cm.a=-.1),cm.d<=0&&(cm.d=-.1))}}drawMesh(x,y,ib,vb,numElement,mat,shader,shaderValues,startIndex=0){}addRenderObject(o){this._submits[this._submits._length++]=o}submitElement(start,end){this.isMain;var renderList=this._submits,ret=renderList._length;end<0&&(end=renderList._length);for(var submit=SubmitBase.RENDERBASE;start<end;)this._renderNextSubmitIndex=start+1,renderList[start]!==SubmitBase.RENDERBASE?(SubmitBase.preRender=submit,start+=(submit=renderList[start]).renderSubmit()):start++;return ret}flush(){this._clipID_Gen=0;var ret=this.submitElement(0,this._submits._length);this._path&&this._path.reset(),SkinMeshBuffer.instance&&SkinMeshBuffer.getInstance().reset(),this._curSubmit=SubmitBase.RENDERBASE;for(var i=0,sz=this.meshlist.length;i<sz;i++){var curm=this.meshlist[i];curm.canReuse?curm.releaseMesh():curm.destroy()}return this.meshlist.length=0,this._mesh=MeshQuadTexture.getAMesh(this.isMain),this._pathMesh=MeshVG.getAMesh(this.isMain),this._triangleMesh=MeshTexture.getAMesh(this.isMain),this.meshlist.push(this._mesh,this._pathMesh,this._triangleMesh),this._flushCnt++,this._flushCnt%60==0&&this.isMain&&TextRender.textRenderInst&&TextRender.textRenderInst.GC(),ret}beginPath(convex=!1){this._getPath().beginPath(convex)}closePath(){this._path.closePath()}addPath(points,close,convex,dx,dy){for(var ci=0,i=0,sz=points.length/2;i<sz;i++){var x1=points[ci]+dx,y1=points[ci+1]+dy;points[ci]=x1,points[ci+1]=y1,ci+=2}this._getPath().push(points,convex)}fill(){var m=this._curMat,tPath=this._getPath(),submit=this._curSubmit,sameKey=submit._key.submitType===SubmitBase.KEY_VG&&submit._key.blendShader===this._nBlendType;sameKey&&(sameKey=sameKey&&this.isSameClipInfo(submit)),sameKey||(this._curSubmit=this.addVGSubmit(this._pathMesh));for(var idx,rgba=this.mixRGBandAlpha(this.fillStyle.toInt()),curEleNum=0,i=0,sz=tPath.paths.length;i<sz;i++){var p=tPath.paths[i],vertNum=p.path.length/2;if(!(vertNum<3||3==vertNum&&!p.convex)){var xp,yp,_x,_y,cpath=p.path.concat(),pi=0;if(m._bTransform)for(pi=0;pi<vertNum;pi++)yp=(xp=pi<<1)+1,_x=cpath[xp],_y=cpath[yp],cpath[xp]=m.a*_x+m.c*_y+m.tx,cpath[yp]=m.b*_x+m.d*_y+m.ty;else for(pi=0;pi<vertNum;pi++)yp=(xp=pi<<1)+1,_x=cpath[xp],_y=cpath[yp],cpath[xp]=_x+m.tx,cpath[yp]=_y+m.ty;this._pathMesh.vertNum+vertNum>Context._MAXVERTNUM&&(this._curSubmit._numEle+=curEleNum,curEleNum=0,this._pathMesh=MeshVG.getAMesh(this.isMain),this._curSubmit=this.addVGSubmit(this._pathMesh));var curvert=this._pathMesh.vertNum;if(p.convex){var faceNum=vertNum-2;idx=new Array(3*faceNum);for(var idxpos=0,fi=0;fi<faceNum;fi++)idx[idxpos++]=curvert,idx[idxpos++]=fi+1+curvert,idx[idxpos++]=fi+2+curvert}else if(idx=Earcut.earcut(cpath,null,2),curvert>0)for(var ii=0;ii<idx.length;ii++)idx[ii]+=curvert;this._pathMesh.addVertAndIBToMesh(this,cpath,rgba,idx),curEleNum+=idx.length}}this._curSubmit._numEle+=curEleNum}addVGSubmit(mesh){var submit=Submit.createShape(this,mesh,0,Value2D.create(ShaderDefines2D.PRIMITIVE,0));return submit._key.submitType=SubmitBase.KEY_VG,this._submits[this._submits._length++]=submit,this._copyClipInfo(submit,this._globalClipMatrix),submit}stroke(){if(this.lineWidth>0){var rgba=this.mixRGBandAlpha(this.strokeStyle._color.numColor),tPath=this._getPath(),submit=this._curSubmit,sameKey=submit._key.submitType===SubmitBase.KEY_VG&&submit._key.blendShader===this._nBlendType;sameKey&&(sameKey=sameKey&&this.isSameClipInfo(submit)),sameKey||(this._curSubmit=this.addVGSubmit(this._pathMesh));for(var curEleNum=0,i=0,sz=tPath.paths.length;i<sz;i++){var p=tPath.paths[i];if(!(p.path.length<=0)){var idx=[],vertex=[],maxVertexNum=2*p.path.length;if(!(maxVertexNum<2)){this._pathMesh.vertNum+maxVertexNum>Context._MAXVERTNUM&&(this._curSubmit._numEle+=curEleNum,curEleNum=0,this._pathMesh=MeshVG.getAMesh(this.isMain),this.meshlist.push(this._pathMesh),this._curSubmit=this.addVGSubmit(this._pathMesh)),BasePoly.createLine2(p.path,idx,this.lineWidth,this._pathMesh.vertNum,vertex,p.loop);var xp,yp,_x,_y,ptnum=vertex.length/2,m=this._curMat,pi=0;if(m._bTransform)for(pi=0;pi<ptnum;pi++)yp=(xp=pi<<1)+1,_x=vertex[xp],_y=vertex[yp],vertex[xp]=m.a*_x+m.c*_y+m.tx,vertex[yp]=m.b*_x+m.d*_y+m.ty;else for(pi=0;pi<ptnum;pi++)yp=(xp=pi<<1)+1,_x=vertex[xp],_y=vertex[yp],vertex[xp]=_x+m.tx,vertex[yp]=_y+m.ty;this._pathMesh.addVertAndIBToMesh(this,vertex,rgba,idx),curEleNum+=idx.length}}}this._curSubmit._numEle+=curEleNum}}moveTo(x,y){var tPath=this._getPath();tPath.newPath(),tPath._lastOriX=x,tPath._lastOriY=y,tPath.addPoint(x,y)}lineTo(x,y){var tPath=this._getPath();Math.abs(x-tPath._lastOriX)<.001&&Math.abs(y-tPath._lastOriY)<.001||(tPath._lastOriX=x,tPath._lastOriY=y,tPath.addPoint(x,y))}arcTo(x1,y1,x2,y2,r){var i=0,x=0,y=0,dx=this._path._lastOriX-x1,dy=this._path._lastOriY-y1,len1=Math.sqrt(dx*dx+dy*dy);if(!(len1<=1e-6)){var ndx=dx/len1,ndy=dy/len1,dx2=x2-x1,dy2=y2-y1,len22=dx2*dx2+dy2*dy2,len2=Math.sqrt(len22);if(!(len2<=1e-6)){var ndx2=dx2/len2,ndy2=dy2/len2,odx=ndx+ndx2,ody=ndy+ndy2,olen=Math.sqrt(odx*odx+ody*ody);if(!(olen<=1e-6)){var nOdx=odx/olen,nOdy=ody/olen,alpha=Math.acos(nOdx*ndx+nOdy*ndy),halfAng=Math.PI/2-alpha,ptx1=(len1=r/Math.tan(halfAng))*ndx+x1,pty1=len1*ndy+y1,orilen=Math.sqrt(len1*len1+r*r),orix=x1+nOdx*orilen,oriy=y1+nOdy*orilen,sinx=0,cosx=0;if(ndx*ndy2-ndy*ndx2>=0){var fda=2*halfAng/Context.SEGNUM;sinx=Math.sin(fda),cosx=Math.cos(fda)}else fda=2*-halfAng/Context.SEGNUM,sinx=Math.sin(fda),cosx=Math.cos(fda);var lastx=this._path._lastOriX,lasty=this._path._lastOriY,_x1=ptx1,_y1=pty1;(Math.abs(_x1-this._path._lastOriX)>.1||Math.abs(_y1-this._path._lastOriY)>.1)&&(x=_x1,y=_y1,lastx=_x1,lasty=_y1,this._path.addPoint(x,y));var cvx=ptx1-orix,cvy=pty1-oriy;for(i=0;i<Context.SEGNUM;i++){var cx=cvx*cosx+cvy*sinx,cy=-cvx*sinx+cvy*cosx;x=cx+orix,y=cy+oriy,(Math.abs(lastx-x)>.1||Math.abs(lasty-y)>.1)&&(this._path.addPoint(x,y),lastx=x,lasty=y),cvx=cx,cvy=cy}}}}}arc(cx,cy,r,startAngle,endAngle,counterclockwise=!1,b=!0){var i,ndivs,a=0,da=0,dx=0,x=0,y=0;if(da=endAngle-startAngle,counterclockwise)if(Math.abs(da)>=2*Math.PI)da=2*-Math.PI;else for(;da>0;)da-=2*Math.PI;else if(Math.abs(da)>=2*Math.PI)da=2*Math.PI;else for(;da<0;)da+=2*Math.PI;var sx=this.getMatScaleX(),sy=this.getMatScaleY(),sr=r*(sx>sy?sx:sy),cl=2*Math.PI*sr;ndivs=0|Math.max(cl/10,10);var tPath=this._getPath();for(i=0;i<=ndivs;i++)a=startAngle+da*(i/ndivs),dx=Math.cos(a),y=cy+Math.sin(a)*r,(x=cx+dx*r)==this._path._lastOriX&&y==this._path._lastOriY||tPath.addPoint(x,y);dx=Math.cos(endAngle),y=cy+Math.sin(endAngle)*r,(x=cx+dx*r)==this._path._lastOriX&&y==this._path._lastOriY||tPath.addPoint(x,y)}quadraticCurveTo(cpx,cpy,x,y){for(var tArray=Bezier.I.getBezierPoints([this._path._lastOriX,this._path._lastOriY,cpx,cpy,x,y],30,2),i=0,n=tArray.length/2;i<n;i++)this.lineTo(tArray[2*i],tArray[2*i+1]);this.lineTo(x,y)}mixRGBandAlpha(color){return this._mixRGBandAlpha(color,this._shader2D.ALPHA)}_mixRGBandAlpha(color,alpha){if(alpha>=1)return color;var a=(4278190080&color)>>>24;return 0!=a?a*=alpha:a=255*alpha,16777215&color|a<<24}strokeRect(x,y,width,height,parameterLineWidth){if(this.lineWidth>0){var rgba=this.mixRGBandAlpha(this.strokeStyle._color.numColor),hw=this.lineWidth/2;this._fillRect(x-hw,y-hw,width+this.lineWidth,this.lineWidth,rgba),this._fillRect(x-hw,y-hw+height,width+this.lineWidth,this.lineWidth,rgba),this._fillRect(x-hw,y+hw,this.lineWidth,height-this.lineWidth,rgba),this._fillRect(x-hw+width,y+hw,this.lineWidth,height-this.lineWidth,rgba)}}clip(){}drawParticle(x,y,pt){pt.x=x,pt.y=y,this._submits[this._submits._length++]=pt}_getPath(){return this._path||(this._path=new Path)}get canvas(){return this._canvas}_fillTexture_h(tex,imgid,uv,oriw,orih,x,y,w){for(var stx=x,num=Math.floor(w/oriw),left=w%oriw,i=0;i<num;i++)this._inner_drawTexture(tex,imgid,stx,y,oriw,orih,this._curMat,uv,1,!1),stx+=oriw;if(left>0){var du=uv[2]-uv[0],uvr=uv[0]+du*(left/oriw),tuv=Context.tmpuv1;tuv[0]=uv[0],tuv[1]=uv[1],tuv[2]=uvr,tuv[3]=uv[3],tuv[4]=uvr,tuv[5]=uv[5],tuv[6]=uv[6],tuv[7]=uv[7],this._inner_drawTexture(tex,imgid,stx,y,left,orih,this._curMat,tuv,1,!1)}}_fillTexture_v(tex,imgid,uv,oriw,orih,x,y,h){for(var sty=y,num=Math.floor(h/orih),left=h%orih,i=0;i<num;i++)this._inner_drawTexture(tex,imgid,x,sty,oriw,orih,this._curMat,uv,1,!1),sty+=orih;if(left>0){var dv=uv[7]-uv[1],uvb=uv[1]+dv*(left/orih),tuv=Context.tmpuv1;tuv[0]=uv[0],tuv[1]=uv[1],tuv[2]=uv[2],tuv[3]=uv[3],tuv[4]=uv[4],tuv[5]=uvb,tuv[6]=uv[6],tuv[7]=uvb,this._inner_drawTexture(tex,imgid,x,sty,oriw,left,this._curMat,tuv,1,!1)}}drawTextureWithSizeGrid(tex,tx,ty,width,height,sizeGrid,gx,gy){if(tex._getSource()){tx+=gx,ty+=gy;var uv=tex.uv,w=tex.bitmap.width,h=tex.bitmap.height,top=sizeGrid[0],left=sizeGrid[3],d_top=top/h,d_left=left/w,right=sizeGrid[1],bottom=sizeGrid[2],d_right=right/w,d_bottom=bottom/h,repeat=sizeGrid[4],needClip=!1;if(width==w&&(left=right=0),height==h&&(top=bottom=0),left+right>width){var clipWidth=width;needClip=!0,width=left+right,this.save(),this.clipRect(0+tx,0+ty,clipWidth,height)}var imgid=tex.bitmap.id,mat=this._curMat,tuv=this._tempUV,uvl=uv[0],uvt=uv[1],uvr=uv[4],uvb=uv[5],uvl_=uvl,uvt_=uvt,uvr_=uvr,uvb_=uvb;if(left&&top&&(uvr_=uvl+d_left,uvb_=uvt+d_top,tuv[0]=uvl,tuv[1]=uvt,tuv[2]=uvr_,tuv[3]=uvt,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl,tuv[7]=uvb_,this._inner_drawTexture(tex,imgid,tx,ty,left,top,mat,tuv,1,!1)),right&&top&&(uvl_=uvr-d_right,uvt_=uvt,uvr_=uvr,uvb_=uvt+d_top,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,this._inner_drawTexture(tex,imgid,width-right+tx,0+ty,right,top,mat,tuv,1,!1)),left&&bottom&&(uvl_=uvl,uvt_=uvb-d_bottom,uvr_=uvl+d_left,uvb_=uvb,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,this._inner_drawTexture(tex,imgid,0+tx,height-bottom+ty,left,bottom,mat,tuv,1,!1)),right&&bottom&&(uvl_=uvr-d_right,uvt_=uvb-d_bottom,uvr_=uvr,uvb_=uvb,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,this._inner_drawTexture(tex,imgid,width-right+tx,height-bottom+ty,right,bottom,mat,tuv,1,!1)),top&&(uvl_=uvl+d_left,uvt_=uvt,uvr_=uvr-d_right,uvb_=uvt+d_top,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,repeat?this._fillTexture_h(tex,imgid,tuv,tex.width-left-right,top,left+tx,ty,width-left-right):this._inner_drawTexture(tex,imgid,left+tx,ty,width-left-right,top,mat,tuv,1,!1)),bottom&&(uvl_=uvl+d_left,uvt_=uvb-d_bottom,uvr_=uvr-d_right,uvb_=uvb,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,repeat?this._fillTexture_h(tex,imgid,tuv,tex.width-left-right,bottom,left+tx,height-bottom+ty,width-left-right):this._inner_drawTexture(tex,imgid,left+tx,height-bottom+ty,width-left-right,bottom,mat,tuv,1,!1)),left&&(uvl_=uvl,uvt_=uvt+d_top,uvr_=uvl+d_left,uvb_=uvb-d_bottom,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,repeat?this._fillTexture_v(tex,imgid,tuv,left,tex.height-top-bottom,tx,top+ty,height-top-bottom):this._inner_drawTexture(tex,imgid,tx,top+ty,left,height-top-bottom,mat,tuv,1,!1)),right&&(uvl_=uvr-d_right,uvt_=uvt+d_top,uvr_=uvr,uvb_=uvb-d_bottom,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,repeat?this._fillTexture_v(tex,imgid,tuv,right,tex.height-top-bottom,width-right+tx,top+ty,height-top-bottom):this._inner_drawTexture(tex,imgid,width-right+tx,top+ty,right,height-top-bottom,mat,tuv,1,!1)),uvl_=uvl+d_left,uvt_=uvt+d_top,uvr_=uvr-d_right,uvb_=uvb-d_bottom,tuv[0]=uvl_,tuv[1]=uvt_,tuv[2]=uvr_,tuv[3]=uvt_,tuv[4]=uvr_,tuv[5]=uvb_,tuv[6]=uvl_,tuv[7]=uvb_,repeat){var tuvr=Context.tmpUVRect;tuvr[0]=uvl_,tuvr[1]=uvt_,tuvr[2]=uvr_-uvl_,tuvr[3]=uvb_-uvt_,this._fillTexture(tex,tex.width-left-right,tex.height-top-bottom,tuvr,left+tx,top+ty,width-left-right,height-top-bottom,"repeat",0,0)}else this._inner_drawTexture(tex,imgid,left+tx,top+ty,width-left-right,height-top-bottom,mat,tuv,1,!1);needClip&&this.restore()}}}Context.ENUM_TEXTALIGN_DEFAULT=0,Context.ENUM_TEXTALIGN_CENTER=1,Context.ENUM_TEXTALIGN_RIGHT=2,Context._SUBMITVBSIZE=32e3,Context._MAXSIZE=99999999,Context._MAXVERTNUM=65535,Context.MAXCLIPRECT=null,Context._COUNT=0,Context.SEGNUM=32,Context._contextcount=0,Context.PI2=2*Math.PI,Context._textRender=null,Context.tmpuv1=[0,0,0,0,0,0,0,0],Context.tmpUV=[0,0,0,0,0,0,0,0],Context.tmpUVRect=[0,0,0,0];class ContextParams{constructor(){this.lineWidth=1}clear(){this.lineWidth=1,this.textAlign=this.textBaseline=null}make(){return this===ContextParams.DEFAULT?new ContextParams:this}}class WebGL{static _uint8ArraySlice(){for(var sz=this.length,dec=new Uint8Array(this.length),i=0;i<sz;i++)dec[i]=this[i];return dec}static _float32ArraySlice(){for(var sz=this.length,dec=new Float32Array(this.length),i=0;i<sz;i++)dec[i]=this[i];return dec}static _uint16ArraySlice(...arg){var sz,dec,i;if(0===arg.length)for(sz=this.length,dec=new Uint16Array(sz),i=0;i<sz;i++)dec[i]=this[i];else if(2===arg.length){var start=arg[0],end=arg[1];if(end>start)for(sz=end-start,dec=new Uint16Array(sz),i=start;i<end;i++)dec[i-start]=this[i];else dec=new Uint16Array(0)}return dec}static _nativeRender_enable(){}static enable(){return!0}static inner_enable(){return Float32Array.prototype.slice||(Float32Array.prototype.slice=WebGL._float32ArraySlice),Uint16Array.prototype.slice||(Uint16Array.prototype.slice=WebGL._uint16ArraySlice),Uint8Array.prototype.slice||(Uint8Array.prototype.slice=WebGL._uint8ArraySlice),!0}static onStageResize(width,height){null!=WebGLContext.mainContext&&(WebGLContext.mainContext.viewport(0,0,width,height),RenderState2D.width=width,RenderState2D.height=height)}}WebGL._isWebGL2=!1,WebGL.isNativeRender_enable=!1;!function(){var glErrorShadow={};function synthesizeGLError(err,opt_msg){var msg;glErrorShadow[err]=!0,void 0!==opt_msg&&(msg=opt_msg,window.console&&window.console.error&&window.console.error(msg))}var WebGLVertexArrayObjectOES=function WebGLVertexArrayObjectOES(ext){var gl=ext.gl;this.ext=ext,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(ext.maxVertexAttribs);for(var n=0;n<this.attribs.length;n++){var attrib=new WebGLVertexArrayObjectOES.VertexAttrib(gl);this.attribs[n]=attrib}this.maxAttrib=0};(WebGLVertexArrayObjectOES.VertexAttrib=function(gl){this.enabled=!1,this.buffer=null,this.size=4,this.type=gl.FLOAT,this.normalized=!1,this.stride=16,this.offset=0,this.cached="",this.recache()}).prototype.recache=function(){this.cached=[this.size,this.type,this.normalized,this.stride,this.offset].join(":")};var OESVertexArrayObject=function(gl){var self=this;this.gl=gl,function(gl){var f=gl.getError;gl.getError=function(){var err;do{(err=f.apply(gl))!=gl.NO_ERROR&&(glErrorShadow[err]=!0)}while(err!=gl.NO_ERROR);for(var err1 in glErrorShadow)if(glErrorShadow[err1])return delete glErrorShadow[err1],parseInt(err1);return gl.NO_ERROR}}(gl);var original=this.original={getParameter:gl.getParameter,enableVertexAttribArray:gl.enableVertexAttribArray,disableVertexAttribArray:gl.disableVertexAttribArray,bindBuffer:gl.bindBuffer,getVertexAttrib:gl.getVertexAttrib,vertexAttribPointer:gl.vertexAttribPointer};gl.getParameter=function(pname){return pname==self.VERTEX_ARRAY_BINDING_OES?self.currentVertexArrayObject==self.defaultVertexArrayObject?null:self.currentVertexArrayObject:original.getParameter.apply(this,arguments)},gl.enableVertexAttribArray=function(index){var vao=self.currentVertexArrayObject;return vao.maxAttrib=Math.max(vao.maxAttrib,index),vao.attribs[index].enabled=!0,original.enableVertexAttribArray.apply(this,arguments)},gl.disableVertexAttribArray=function(index){var vao=self.currentVertexArrayObject;return vao.maxAttrib=Math.max(vao.maxAttrib,index),vao.attribs[index].enabled=!1,original.disableVertexAttribArray.apply(this,arguments)},gl.bindBuffer=function(target,buffer){switch(target){case gl.ARRAY_BUFFER:self.currentArrayBuffer=buffer;break;case gl.ELEMENT_ARRAY_BUFFER:self.currentVertexArrayObject.elementArrayBuffer=buffer}return original.bindBuffer.apply(this,arguments)},gl.getVertexAttrib=function(index,pname){var attrib=self.currentVertexArrayObject.attribs[index];switch(pname){case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:return attrib.buffer;case gl.VERTEX_ATTRIB_ARRAY_ENABLED:return attrib.enabled;case gl.VERTEX_ATTRIB_ARRAY_SIZE:return attrib.size;case gl.VERTEX_ATTRIB_ARRAY_STRIDE:return attrib.stride;case gl.VERTEX_ATTRIB_ARRAY_TYPE:return attrib.type;case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:return attrib.normalized;default:return original.getVertexAttrib.apply(this,arguments)}},gl.vertexAttribPointer=function(indx,size,type,normalized,stride,offset){var vao=self.currentVertexArrayObject;vao.maxAttrib=Math.max(vao.maxAttrib,indx);var attrib=vao.attribs[indx];return attrib.buffer=self.currentArrayBuffer,attrib.size=size,attrib.type=type,attrib.normalized=normalized,attrib.stride=stride,attrib.offset=offset,attrib.recache(),original.vertexAttribPointer.apply(this,arguments)},gl.instrumentExtension&&gl.instrumentExtension(this,"OES_vertex_array_object"),gl.canvas.addEventListener("webglcontextrestored",function(){var msg;msg="OESVertexArrayObject emulation library context restored",window.console&&window.console.log&&window.console.log(msg),self.reset_()},!0),this.reset_()};OESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES=34229,OESVertexArrayObject.prototype.reset_=function(){if(void 0!==this.vertexArrayObjects)for(var ii=0;ii<this.vertexArrayObjects.length;++ii)this.vertexArrayObjects.isAlive=!1;var gl=this.gl;this.maxVertexAttribs=gl.getParameter(gl.MAX_VERTEX_ATTRIBS),this.defaultVertexArrayObject=new WebGLVertexArrayObjectOES(this),this.currentVertexArrayObject=null,this.currentArrayBuffer=null,this.vertexArrayObjects=[this.defaultVertexArrayObject],this.bindVertexArrayOES(null)},OESVertexArrayObject.prototype.createVertexArrayOES=function(){var arrayObject=new WebGLVertexArrayObjectOES(this);return this.vertexArrayObjects.push(arrayObject),arrayObject},OESVertexArrayObject.prototype.deleteVertexArrayOES=function(arrayObject){arrayObject.isAlive=!1,this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject),1),this.currentVertexArrayObject==arrayObject&&this.bindVertexArrayOES(null)},OESVertexArrayObject.prototype.isVertexArrayOES=function(arrayObject){return!!(arrayObject&&arrayObject instanceof WebGLVertexArrayObjectOES&&arrayObject.hasBeenBound&&arrayObject.ext==this)},OESVertexArrayObject.prototype.bindVertexArrayOES=function(arrayObject){var gl=this.gl;if(!arrayObject||arrayObject.isAlive){var original=this.original,oldVAO=this.currentVertexArrayObject;this.currentVertexArrayObject=arrayObject||this.defaultVertexArrayObject,this.currentVertexArrayObject.hasBeenBound=!0;var newVAO=this.currentVertexArrayObject;if(oldVAO!=newVAO){oldVAO&&newVAO.elementArrayBuffer==oldVAO.elementArrayBuffer||original.bindBuffer.call(gl,gl.ELEMENT_ARRAY_BUFFER,newVAO.elementArrayBuffer);for(var currentBinding=this.currentArrayBuffer,maxAttrib=Math.max(oldVAO?oldVAO.maxAttrib:0,newVAO.maxAttrib),n=0;n<=maxAttrib;n++){var attrib=newVAO.attribs[n],oldAttrib=oldVAO?oldVAO.attribs[n]:null;if(oldVAO&&attrib.enabled==oldAttrib.enabled||(attrib.enabled?original.enableVertexAttribArray.call(gl,n):original.disableVertexAttribArray.call(gl,n)),attrib.enabled){var bufferChanged=!1;oldVAO&&attrib.buffer==oldAttrib.buffer||(currentBinding!=attrib.buffer&&(original.bindBuffer.call(gl,gl.ARRAY_BUFFER,attrib.buffer),currentBinding=attrib.buffer),bufferChanged=!0),(bufferChanged||attrib.cached!=oldAttrib.cached)&&original.vertexAttribPointer.call(gl,n,attrib.size,attrib.type,attrib.normalized,attrib.stride,attrib.offset)}}this.currentArrayBuffer!=currentBinding&&original.bindBuffer.call(gl,gl.ARRAY_BUFFER,this.currentArrayBuffer)}}else synthesizeGLError(gl.INVALID_OPERATION,"bindVertexArrayOES: attempt to bind deleted arrayObject")},window._setupVertexArrayObject=function(gl){var original_getSupportedExtensions=gl.getSupportedExtensions;gl.getSupportedExtensions=function(){var list=original_getSupportedExtensions.call(this)||[];return list.indexOf("OES_vertex_array_object")<0&&list.push("OES_vertex_array_object"),list};var original_getExtension=gl.getExtension;gl.getExtension=function(name){var ext=original_getExtension.call(this,name);return ext||("OES_vertex_array_object"!==name?null:(this.__OESVertexArrayObject||(console.log("Setup OES_vertex_array_object polyfill"),this.__OESVertexArrayObject=new OESVertexArrayObject(this)),this.__OESVertexArrayObject))}},window._forceSetupVertexArrayObject=function(gl){var original_getSupportedExtensions=gl.getSupportedExtensions;gl.getSupportedExtensions=function(){var list=original_getSupportedExtensions.call(this)||[];return list.indexOf("OES_vertex_array_object")<0&&list.push("OES_vertex_array_object"),list};var original_getExtension=gl.getExtension;gl.getExtension=function(name){if("OES_vertex_array_object"===name)return this.__OESVertexArrayObject||(console.log("Setup OES_vertex_array_object polyfill"),this.__OESVertexArrayObject=new OESVertexArrayObject(this)),this.__OESVertexArrayObject;var ext=original_getExtension.call(this,name);return ext||null}}}();class LayaGPU{constructor(gl,isWebGL2){this._gl=null,this._vaoExt=null,this._angleInstancedArrays=null,this._isWebGL2=!1,this._oesTextureHalfFloat=null,this._extTextureFilterAnisotropic=null,this._compressedTextureS3tc=null,this._compressedTexturePvrtc=null,this._compressedTextureEtc1=null,this._gl=gl,this._isWebGL2=isWebGL2;try{gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT).precision?WebGL.shaderHighPrecision=!0:WebGL.shaderHighPrecision=!1}catch(e){}if(isWebGL2)this._getExtension("EXT_color_buffer_float");else{var forceVAO=LayaGPU._forceSupportVAOPlatform();ILaya.Render.isConchApp||window._setupVertexArrayObject&&(forceVAO?window._forceSetupVertexArrayObject(gl):window._setupVertexArrayObject(gl)),this._vaoExt=this._getExtension("OES_vertex_array_object"),forceVAO||(this._angleInstancedArrays=this._getExtension("ANGLE_instanced_arrays")),this._oesTextureHalfFloat=this._getExtension("OES_texture_half_float"),this._getExtension("OES_texture_half_float_linear")}this._extTextureFilterAnisotropic=this._getExtension("EXT_texture_filter_anisotropic"),this._compressedTextureS3tc=this._getExtension("WEBGL_compressed_texture_s3tc"),this._compressedTexturePvrtc=this._getExtension("WEBGL_compressed_texture_pvrtc"),this._compressedTextureEtc1=this._getExtension("WEBGL_compressed_texture_etc1")}static _forceSupportVAOPlatform(){let Browser=ILaya.Browser;return Browser.onMiniGame&&Browser.onIOS||Browser.onBDMiniGame||Browser.onQGMiniGame}_getExtension(name){var prefixes=LayaGPU._extentionVendorPrefixes;for(var k in prefixes){var ext=this._gl.getExtension(prefixes[k]+name);if(ext)return ext}return null}createVertexArray(){return this._isWebGL2?this._gl.createVertexArray():this._vaoExt.createVertexArrayOES()}bindVertexArray(vertexArray){this._isWebGL2?this._gl.bindVertexArray(vertexArray):this._vaoExt.bindVertexArrayOES(vertexArray)}deleteVertexArray(vertexArray){this._isWebGL2?this._gl.deleteVertexArray(vertexArray):this._vaoExt.deleteVertexArrayOES(vertexArray)}isVertexArray(vertexArray){this._isWebGL2?this._gl.isVertexArray(vertexArray):this._vaoExt.isVertexArrayOES(vertexArray)}drawElementsInstanced(mode,count,type,offset,instanceCount){this._isWebGL2?this._gl.drawElementsInstanced(mode,count,type,offset,instanceCount):this._angleInstancedArrays.drawElementsInstancedANGLE(mode,count,type,offset,instanceCount)}drawArraysInstanced(mode,first,count,instanceCount){this._isWebGL2?this._gl.drawArraysInstanced(mode,first,count,instanceCount):this._angleInstancedArrays.drawArraysInstancedANGLE(mode,first,count,instanceCount)}vertexAttribDivisor(index,divisor){this._isWebGL2?this._gl.vertexAttribDivisor(index,divisor):this._angleInstancedArrays.vertexAttribDivisorANGLE(index,divisor)}supportInstance(){return!(!this._isWebGL2&&!this._angleInstancedArrays)}}LayaGPU._extentionVendorPrefixes=["","WEBKIT_","MOZ_"];class Render{constructor(width,height,mainCanv){this._timeId=0,Render._mainCanvas=mainCanv,Render._mainCanvas.source.id="layaCanvas",Render._mainCanvas.source.width=width,Render._mainCanvas.source.height=height,Render.isConchApp&&document.body.appendChild(Render._mainCanvas.source),this.initRender(Render._mainCanvas,width,height),window.requestAnimationFrame(function loop(stamp){ILaya.stage._loop();window.requestAnimationFrame(loop)}),ILaya.stage.on("visibilitychange",this,this._onVisibilitychange)}_onVisibilitychange(){ILaya.stage.isVisibility?0!=this._timeId&&window.clearInterval(this._timeId):this._timeId=window.setInterval(this._enterFrame,1e3)}initRender(canvas,w,h){var gl=LayaGL.instance=WebGLContext.mainContext=function(canvas){var gl,names=["webgl2","webgl","experimental-webgl","webkit-3d","moz-webgl"];Config.useWebGL2&&!Browser.onBDMiniGame||names.shift();for(var i=0;i<names.length;i++){try{gl=canvas.getContext(names[i],{stencil:Config.isStencil,alpha:Config.isAlpha,antialias:Config.isAntialias,premultipliedAlpha:Config.premultipliedAlpha,preserveDrawingBuffer:Config.preserveDrawingBuffer})}catch(e){}if(gl)return"webgl2"===names[i]&&(WebGL._isWebGL2=!0),gl}return null}(Render._mainCanvas.source);if(!gl)return!1;LayaGL.instance=gl,LayaGL.layaGPUInstance=new LayaGPU(gl,WebGL._isWebGL2),canvas.size(w,h),Context.__init__(),SubmitBase.__init__();var ctx=new Context;return ctx.isMain=!0,Render._context=ctx,canvas._setContext(ctx),ShaderDefines2D.__init__(),Value2D.__init__(),Shader2D.__init__(),Buffer2D.__int__(gl),BlendMode._init_(gl),!0}_enterFrame(e=null){ILaya.stage._loop()}static get context(){return Render._context}static get canvas(){return Render._mainCanvas.source}}Render.supportWebGLPlusCulling=!1,Render.supportWebGLPlusAnimation=!1,Render.supportWebGLPlusRendering=!1,Render.isConchApp=!1,Render.isConchApp=null!=window.conch,Render.isConchApp?(Render.supportWebGLPlusCulling=!1,Render.supportWebGLPlusAnimation=!0,Render.supportWebGLPlusRendering=!0):null!=window.qq&&null!=window.qq.webglPlus&&(Render.supportWebGLPlusCulling=!1,Render.supportWebGLPlusAnimation=!0,Render.supportWebGLPlusRendering=!0);class DrawTrianglesCmd{static create(texture,x,y,vertices,uvs,indices,matrix,alpha,color,blendMode){var cmd=Pool.getItemByClass("DrawTrianglesCmd",DrawTrianglesCmd);if(cmd.texture=texture,cmd.x=x,cmd.y=y,cmd.vertices=vertices,cmd.uvs=uvs,cmd.indices=indices,cmd.matrix=matrix,cmd.alpha=alpha,color){cmd.color=new ColorFilter;var c=ColorUtils.create(color).arrColor;cmd.color.color(255*c[0],255*c[1],255*c[2],255*c[3])}return cmd.blendMode=blendMode,cmd}recover(){this.texture=null,this.vertices=null,this.uvs=null,this.indices=null,this.matrix=null,Pool.recover("DrawTrianglesCmd",this)}run(context,gx,gy){context.drawTriangles(this.texture,this.x+gx,this.y+gy,this.vertices,this.uvs,this.indices,this.matrix,this.alpha,this.color,this.blendMode)}get cmdID(){return DrawTrianglesCmd.ID}}DrawTrianglesCmd.ID="DrawTriangles";class Draw9GridTexture{constructor(){}static create(texture,x,y,width,height,sizeGrid){var cmd=Pool.getItemByClass("Draw9GridTexture",Draw9GridTexture);return cmd.texture=texture,texture._addReference(),cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd.sizeGrid=sizeGrid,cmd}recover(){this.texture._removeReference(),Pool.recover("Draw9GridTexture",this)}run(context,gx,gy){context.drawTextureWithSizeGrid(this.texture,this.x,this.y,this.width,this.height,this.sizeGrid,gx,gy)}get cmdID(){return Draw9GridTexture.ID}}Draw9GridTexture.ID="Draw9GridTexture";class GraphicsBounds{constructor(){this._cacheBoundsType=!1}destroy(){this._graphics=null,this._cacheBoundsType=!1,this._temp&&(this._temp.length=0),this._rstBoundPoints&&(this._rstBoundPoints.length=0),this._bounds&&this._bounds.recover(),this._bounds=null,Pool.recover("GraphicsBounds",this)}static create(){return Pool.getItemByClass("GraphicsBounds",GraphicsBounds)}reset(){this._temp&&(this._temp.length=0)}getBounds(realSize=!1){return(!this._bounds||!this._temp||this._temp.length<1||realSize!=this._cacheBoundsType)&&(this._bounds=Rectangle._getWrapRec(this.getBoundPoints(realSize),this._bounds)),this._cacheBoundsType=realSize,this._bounds}getBoundPoints(realSize=!1){return(!this._temp||this._temp.length<1||realSize!=this._cacheBoundsType)&&(this._temp=this._getCmdPoints(realSize)),this._cacheBoundsType=realSize,this._rstBoundPoints=Utils.copyArray(this._rstBoundPoints,this._temp)}_getCmdPoints(realSize=!1){var rst,cmds=this._graphics.cmds;if((rst=this._temp||(this._temp=[])).length=0,cmds||null==this._graphics._one||(GraphicsBounds._tempCmds.length=0,GraphicsBounds._tempCmds.push(this._graphics._one),cmds=GraphicsBounds._tempCmds),!cmds)return rst;var matrixs=GraphicsBounds._tempMatrixArrays;matrixs.length=0;var tMatrix=GraphicsBounds._initMatrix;tMatrix.identity();for(var cmd,tex,tempMatrix=GraphicsBounds._tempMatrix,i=0,n=cmds.length;i<n;i++)switch((cmd=cmds[i]).cmdID){case AlphaCmd.ID:matrixs.push(tMatrix),tMatrix=tMatrix.clone();break;case RestoreCmd.ID:tMatrix=matrixs.pop();break;case ScaleCmd.ID:tempMatrix.identity(),tempMatrix.translate(-cmd.pivotX,-cmd.pivotY),tempMatrix.scale(cmd.scaleX,cmd.scaleY),tempMatrix.translate(cmd.pivotX,cmd.pivotY),this._switchMatrix(tMatrix,tempMatrix);break;case RotateCmd.ID:tempMatrix.identity(),tempMatrix.translate(-cmd.pivotX,-cmd.pivotY),tempMatrix.rotate(cmd.angle),tempMatrix.translate(cmd.pivotX,cmd.pivotY),this._switchMatrix(tMatrix,tempMatrix);break;case TranslateCmd.ID:tempMatrix.identity(),tempMatrix.translate(cmd.tx,cmd.ty),this._switchMatrix(tMatrix,tempMatrix);break;case TransformCmd.ID:tempMatrix.identity(),tempMatrix.translate(-cmd.pivotX,-cmd.pivotY),tempMatrix.concat(cmd.matrix),tempMatrix.translate(cmd.pivotX,cmd.pivotY),this._switchMatrix(tMatrix,tempMatrix);break;case DrawImageCmd.ID:case FillTextureCmd.ID:GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),tMatrix);break;case DrawTextureCmd.ID:tMatrix.copyTo(tempMatrix),cmd.matrix&&tempMatrix.concat(cmd.matrix),GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),tempMatrix);break;case DrawImageCmd.ID:if(tex=cmd.texture,realSize)cmd.width&&cmd.height?GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),tMatrix):GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,tex.width,tex.height),tMatrix);else{var wRate=(cmd.width||tex.sourceWidth)/tex.width,hRate=(cmd.height||tex.sourceHeight)/tex.height,oWidth=wRate*tex.sourceWidth,oHeight=hRate*tex.sourceHeight,offX=tex.offsetX>0?tex.offsetX:0,offY=tex.offsetY>0?tex.offsetY:0;offX*=wRate,offY*=hRate,GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x-offX,cmd.y-offY,oWidth,oHeight),tMatrix)}break;case FillTextureCmd.ID:cmd.width&&cmd.height?GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),tMatrix):(tex=cmd.texture,GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,tex.width,tex.height),tMatrix));break;case DrawTextureCmd.ID:var drawMatrix;cmd.matrix?(tMatrix.copyTo(tempMatrix),tempMatrix.concat(cmd.matrix),drawMatrix=tempMatrix):drawMatrix=tMatrix,realSize?cmd.width&&cmd.height?GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),drawMatrix):(tex=cmd.texture,GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,tex.width,tex.height),drawMatrix)):(tex=cmd.texture,wRate=(cmd.width||tex.sourceWidth)/tex.width,hRate=(cmd.height||tex.sourceHeight)/tex.height,oWidth=wRate*tex.sourceWidth,oHeight=hRate*tex.sourceHeight,offX=tex.offsetX>0?tex.offsetX:0,offY=tex.offsetY>0?tex.offsetY:0,offX*=wRate,offY*=hRate,GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x-offX,cmd.y-offY,oWidth,oHeight),drawMatrix));break;case DrawRectCmd.ID:GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x,cmd.y,cmd.width,cmd.height),tMatrix);break;case DrawCircleCmd.ID:GraphicsBounds._addPointArrToRst(rst,Rectangle._getBoundPointS(cmd.x-cmd.radius,cmd.y-cmd.radius,cmd.radius+cmd.radius,cmd.radius+cmd.radius),tMatrix);break;case DrawLineCmd.ID:var lineWidth;GraphicsBounds._tempPoints.length=0,lineWidth=.5*cmd.lineWidth,cmd.fromX==cmd.toX?GraphicsBounds._tempPoints.push(cmd.fromX+lineWidth,cmd.fromY,cmd.toX+lineWidth,cmd.toY,cmd.fromX-lineWidth,cmd.fromY,cmd.toX-lineWidth,cmd.toY):cmd.fromY==cmd.toY?GraphicsBounds._tempPoints.push(cmd.fromX,cmd.fromY+lineWidth,cmd.toX,cmd.toY+lineWidth,cmd.fromX,cmd.fromY-lineWidth,cmd.toX,cmd.toY-lineWidth):GraphicsBounds._tempPoints.push(cmd.fromX,cmd.fromY,cmd.toX,cmd.toY),GraphicsBounds._addPointArrToRst(rst,GraphicsBounds._tempPoints,tMatrix);break;case DrawCurvesCmd.ID:GraphicsBounds._addPointArrToRst(rst,Bezier.I.getBezierPoints(cmd.points),tMatrix,cmd.x,cmd.y);break;case DrawLinesCmd.ID:case DrawPolyCmd.ID:GraphicsBounds._addPointArrToRst(rst,cmd.points,tMatrix,cmd.x,cmd.y);break;case DrawPathCmd.ID:GraphicsBounds._addPointArrToRst(rst,this._getPathPoints(cmd.paths),tMatrix,cmd.x,cmd.y);break;case DrawPieCmd.ID:GraphicsBounds._addPointArrToRst(rst,this._getPiePoints(cmd.x,cmd.y,cmd.radius,cmd.startAngle,cmd.endAngle),tMatrix);break;case DrawTrianglesCmd.ID:GraphicsBounds._addPointArrToRst(rst,this._getTriAngBBXPoints(cmd.vertices),tMatrix);break;case Draw9GridTexture.ID:GraphicsBounds._addPointArrToRst(rst,this._getDraw9GridBBXPoints(cmd),tMatrix)}return rst.length>200?rst=Utils.copyArray(rst,Rectangle._getWrapRec(rst)._getBoundPoints()):rst.length>8&&(rst=GrahamScan.scanPList(rst)),rst}_switchMatrix(tMatix,tempMatrix){tempMatrix.concat(tMatix),tempMatrix.copyTo(tMatix)}static _addPointArrToRst(rst,points,matrix,dx=0,dy=0){var i,len;for(len=points.length,i=0;i<len;i+=2)GraphicsBounds._addPointToRst(rst,points[i]+dx,points[i+1]+dy,matrix)}static _addPointToRst(rst,x,y,matrix){var _tempPoint=Point.TEMP;_tempPoint.setTo(x||0,y||0),matrix.transformPoint(_tempPoint),rst.push(_tempPoint.x,_tempPoint.y)}_getPiePoints(x,y,radius,startAngle,endAngle){var rst=GraphicsBounds._tempPoints;GraphicsBounds._tempPoints.length=0;var k=Math.PI/180,d1=endAngle-startAngle;if(d1>=360||d1<=-360)return rst.push(x-radius,y-radius),rst.push(x+radius,y-radius),rst.push(x+radius,y+radius),rst.push(x-radius,y+radius),rst;rst.push(x,y);var delta=d1%360;delta<0&&(delta+=360);var end1=startAngle+delta,st=startAngle*k,ed=end1*k;rst.push(x+radius*Math.cos(st),y+radius*Math.sin(st)),rst.push(x+radius*Math.cos(ed),y+radius*Math.sin(ed));for(var s1=90*Math.ceil(startAngle/90),s2=90*Math.floor(end1/90),cs=s1;cs<=s2;cs+=90){var csr=cs*k;rst.push(x+radius*Math.cos(csr),y+radius*Math.sin(csr))}return rst}_getTriAngBBXPoints(vert){var vnum=vert.length;if(vnum<2)return[];for(var minx=vert[0],miny=vert[1],maxx=minx,maxy=miny,i=2;i<vnum;){var cx=vert[i++],cy=vert[i++];minx>cx&&(minx=cx),miny>cy&&(miny=cy),maxx<cx&&(maxx=cx),maxy<cy&&(maxy=cy)}return[minx,miny,maxx,miny,maxx,maxy,minx,maxy]}_getDraw9GridBBXPoints(cmd){var maxx=cmd.width,maxy=cmd.height;return[0,0,maxx,0,maxx,maxy,0,maxy]}_getPathPoints(paths){var i,len,tCMD,rst=GraphicsBounds._tempPoints;for(rst.length=0,len=paths.length,i=0;i<len;i++)(tCMD=paths[i]).length>1&&(rst.push(tCMD[1],tCMD[2]),tCMD.length>3&&rst.push(tCMD[3],tCMD[4]));return rst}}GraphicsBounds._tempMatrix=new Matrix,GraphicsBounds._initMatrix=new Matrix,GraphicsBounds._tempPoints=[],GraphicsBounds._tempMatrixArrays=[],GraphicsBounds._tempCmds=[];class SpriteConst{}SpriteConst.ALPHA=1,SpriteConst.TRANSFORM=2,SpriteConst.BLEND=4,SpriteConst.CANVAS=8,SpriteConst.FILTERS=16,SpriteConst.MASK=32,SpriteConst.CLIP=64,SpriteConst.STYLE=128,SpriteConst.TEXTURE=256,SpriteConst.GRAPHICS=512,SpriteConst.LAYAGL3D=1024,SpriteConst.CUSTOM=2048,SpriteConst.ONECHILD=4096,SpriteConst.CHILDS=8192,SpriteConst.REPAINT_NONE=0,SpriteConst.REPAINT_NODE=1,SpriteConst.REPAINT_CACHE=2,SpriteConst.REPAINT_ALL=3;class ClipRectCmd{static create(x,y,width,height){var cmd=Pool.getItemByClass("ClipRectCmd",ClipRectCmd);return cmd.x=x,cmd.y=y,cmd.width=width,cmd.height=height,cmd}recover(){Pool.recover("ClipRectCmd",this)}run(context,gx,gy){context.clipRect(this.x+gx,this.y+gy,this.width,this.height)}get cmdID(){return ClipRectCmd.ID}}ClipRectCmd.ID="ClipRect";class DrawTexturesCmd{static create(texture,pos){var cmd=Pool.getItemByClass("DrawTexturesCmd",DrawTexturesCmd);return cmd.texture=texture,texture._addReference(),cmd.pos=pos,cmd}recover(){this.texture._removeReference(),this.texture=null,this.pos=null,Pool.recover("DrawTexturesCmd",this)}run(context,gx,gy){context.drawTextures(this.texture,this.pos,gx,gy)}get cmdID(){return DrawTexturesCmd.ID}}DrawTexturesCmd.ID="DrawTextures";class FillBorderTextCmd{static create(text,x,y,font,fillColor,borderColor,lineWidth,textAlign){var cmd=Pool.getItemByClass("FillBorderTextCmd",FillBorderTextCmd);return cmd.text=text,cmd.x=x,cmd.y=y,cmd.font=font,cmd.fillColor=fillColor,cmd.borderColor=borderColor,cmd.lineWidth=lineWidth,cmd.textAlign=textAlign,cmd}recover(){Pool.recover("FillBorderTextCmd",this)}run(context,gx,gy){context.fillBorderText(this.text,this.x+gx,this.y+gy,this.font,this.fillColor,this.borderColor,this.lineWidth,this.textAlign)}get cmdID(){return FillBorderTextCmd.ID}}FillBorderTextCmd.ID="FillBorderText";class FillBorderWordsCmd{static create(words,x,y,font,fillColor,borderColor,lineWidth){var cmd=Pool.getItemByClass("FillBorderWordsCmd",FillBorderWordsCmd);return cmd.words=words,cmd.x=x,cmd.y=y,cmd.font=font,cmd.fillColor=fillColor,cmd.borderColor=borderColor,cmd.lineWidth=lineWidth,cmd}recover(){this.words=null,Pool.recover("FillBorderWordsCmd",this)}run(context,gx,gy){context.fillBorderWords(this.words,this.x+gx,this.y+gy,this.font,this.fillColor,this.borderColor,this.lineWidth)}get cmdID(){return FillBorderWordsCmd.ID}}FillBorderWordsCmd.ID="FillBorderWords";class FillTextCmd{constructor(){this._textIsWorldText=!1,this._fontColor=4294967295,this._strokeColor=0,this._fontObj=FillTextCmd._defFontObj,this._nTexAlign=0}static create(text,x,y,font,color,textAlign){var cmd=Pool.getItemByClass("FillTextCmd",FillTextCmd);return cmd.text=text,cmd._textIsWorldText=text instanceof WordText,cmd.x=x,cmd.y=y,cmd.font=font,cmd.color=color,cmd.textAlign=textAlign,cmd}recover(){Pool.recover("FillTextCmd",this)}run(context,gx,gy){ILaya.stage.isGlobalRepaint()&&this._textIsWorldText&&this._text.cleanCache(),this._textIsWorldText?context._fast_filltext(this._text,this.x+gx,this.y+gy,this._fontObj,this._color,null,0,this._nTexAlign,0):context.drawText(this._text,this.x+gx,this.y+gy,this._font,this._color,this._textAlign)}get cmdID(){return FillTextCmd.ID}get text(){return this._text}set text(value){this._text=value,this._textIsWorldText=value instanceof WordText,this._textIsWorldText&&this._text.cleanCache()}get font(){return this._font}set font(value){this._font=value,this._fontObj=FontInfo.Parse(value),this._textIsWorldText&&this._text.cleanCache()}get color(){return this._color}set color(value){this._color=value,this._fontColor=ColorUtils.create(value).numColor,this._textIsWorldText&&this._text.cleanCache()}get textAlign(){return this._textAlign}set textAlign(value){switch(this._textAlign=value,value){case"center":this._nTexAlign=ILaya.Context.ENUM_TEXTALIGN_CENTER;break;case"right":this._nTexAlign=ILaya.Context.ENUM_TEXTALIGN_RIGHT;break;default:this._nTexAlign=ILaya.Context.ENUM_TEXTALIGN_DEFAULT}this._textIsWorldText&&this._text.cleanCache()}}FillTextCmd.ID="FillText",FillTextCmd._defFontObj=new FontInfo(null);class FillWordsCmd{static create(words,x,y,font,color){var cmd=Pool.getItemByClass("FillWordsCmd",FillWordsCmd);return cmd.words=words,cmd.x=x,cmd.y=y,cmd.font=font,cmd.color=color,cmd}recover(){this.words=null,Pool.recover("FillWordsCmd",this)}run(context,gx,gy){context.fillWords(this.words,this.x+gx,this.y+gy,this.font,this.color)}get cmdID(){return FillWordsCmd.ID}}FillWordsCmd.ID="FillWords";class SaveCmd{static create(){return Pool.getItemByClass("SaveCmd",SaveCmd)}recover(){Pool.recover("SaveCmd",this)}run(context,gx,gy){context.save()}get cmdID(){return SaveCmd.ID}}SaveCmd.ID="Save";class StrokeTextCmd{static create(text,x,y,font,color,lineWidth,textAlign){var cmd=Pool.getItemByClass("StrokeTextCmd",StrokeTextCmd);return cmd.text=text,cmd.x=x,cmd.y=y,cmd.font=font,cmd.color=color,cmd.lineWidth=lineWidth,cmd.textAlign=textAlign,cmd}recover(){Pool.recover("StrokeTextCmd",this)}run(context,gx,gy){context.strokeWord(this.text,this.x+gx,this.y+gy,this.font,this.color,this.lineWidth,this.textAlign)}get cmdID(){return StrokeTextCmd.ID}}StrokeTextCmd.ID="StrokeText";class CacheManger{constructor(){}static regCacheByFunction(disposeFunction,getCacheListFunction){var cache;CacheManger.unRegCacheByFunction(disposeFunction,getCacheListFunction),cache={tryDispose:disposeFunction,getCacheList:getCacheListFunction},CacheManger._cacheList.push(cache)}static unRegCacheByFunction(disposeFunction,getCacheListFunction){var i,len;for(len=CacheManger._cacheList.length,i=0;i<len;i++)if(CacheManger._cacheList[i].tryDispose==disposeFunction&&CacheManger._cacheList[i].getCacheList==getCacheListFunction)return void CacheManger._cacheList.splice(i,1)}static forceDispose(){var i,len=CacheManger._cacheList.length;for(i=0;i<len;i++)CacheManger._cacheList[i].tryDispose(!0)}static beginCheck(waitTime=15e3){ILaya.systemTimer.loop(waitTime,null,CacheManger._checkLoop)}static stopCheck(){ILaya.systemTimer.clear(null,CacheManger._checkLoop)}static _checkLoop(){var cacheList=CacheManger._cacheList;if(!(cacheList.length<1)){var count,len,tTime=ILaya.Browser.now();for(len=count=cacheList.length;count>0&&(CacheManger._index++,CacheManger._index=CacheManger._index%len,cacheList[CacheManger._index].tryDispose(!1),!(ILaya.Browser.now()-tTime>CacheManger.loopTimeLimit));)count--}}}CacheManger.loopTimeLimit=2,CacheManger._cacheList=[],CacheManger._index=0;class VectorGraphManager{constructor(){this.useDic={},this.shapeDic={},this.shapeLineDic={},this._id=0,this._checkKey=!1,this._freeIdArray=[],CacheManger.regCacheByFunction(this.startDispose.bind(this),this.getCacheList.bind(this))}static getInstance(){return VectorGraphManager.instance=VectorGraphManager.instance||new VectorGraphManager}getId(){return this._id++}addShape(id,shape){this.shapeDic[id]=shape,this.useDic[id]||(this.useDic[id]=!0)}addLine(id,Line){this.shapeLineDic[id]=Line,this.shapeLineDic[id]||(this.shapeLineDic[id]=!0)}getShape(id){this._checkKey&&null!=this.useDic[id]&&(this.useDic[id]=!0)}deleteShape(id){this.shapeDic[id]&&(this.shapeDic[id]=null,delete this.shapeDic[id]),this.shapeLineDic[id]&&(this.shapeLineDic[id]=null,delete this.shapeLineDic[id]),null!=this.useDic[id]&&delete this.useDic[id]}getCacheList(){var str,list=[];for(str in this.shapeDic)list.push(this.shapeDic[str]);for(str in this.shapeLineDic)list.push(this.shapeLineDic[str]);return list}startDispose(key){var str;for(str in this.useDic)this.useDic[str]=!1;this._checkKey=!0}endDispose(){if(this._checkKey){var str;for(str in this.useDic)this.useDic[str]||this.deleteShape(str);this._checkKey=!1}}}class Graphics{constructor(){this._sp=null,this._one=null,this._render=this._renderEmpty,this._cmds=null,this._vectorgraphArray=null,this._graphicBounds=null,this.autoDestroy=!1,this._createData()}_createData(){}_clearData(){}_destroyData(){}destroy(){this.clear(!0),this._graphicBounds&&this._graphicBounds.destroy(),this._graphicBounds=null,this._vectorgraphArray=null,this._sp&&(this._sp._renderType=0,this._sp._setRenderType(0),this._sp=null),this._destroyData()}clear(recoverCmds=!0){if(recoverCmds){var tCmd=this._one;if(this._cmds){var i,len=this._cmds.length;for(i=0;i<len;i++)(tCmd=this._cmds[i]).recover();this._cmds.length=0}else tCmd&&tCmd.recover()}else this._cmds=null;if(this._one=null,this._render=this._renderEmpty,this._clearData(),this._sp&&(this._sp._renderType&=~SpriteConst.GRAPHICS,this._sp._setRenderType(this._sp._renderType)),this._repaint(),this._vectorgraphArray){for(i=0,len=this._vectorgraphArray.length;i<len;i++)VectorGraphManager.getInstance().deleteShape(this._vectorgraphArray[i]);this._vectorgraphArray.length=0}}_clearBoundsCache(){this._graphicBounds&&this._graphicBounds.reset()}_initGraphicBounds(){this._graphicBounds||(this._graphicBounds=GraphicsBounds.create(),this._graphicBounds._graphics=this)}_repaint(){this._clearBoundsCache(),this._sp&&this._sp.repaint()}_isOnlyOne(){return!this._cmds||0===this._cmds.length}get cmds(){return this._cmds}set cmds(value){this._sp&&(this._sp._renderType|=SpriteConst.GRAPHICS,this._sp._setRenderType(this._sp._renderType)),this._cmds=value,this._render=this._renderAll,this._repaint()}getBounds(realSize=!1){return this._initGraphicBounds(),this._graphicBounds.getBounds(realSize)}getBoundPoints(realSize=!1){return this._initGraphicBounds(),this._graphicBounds.getBoundPoints(realSize)}drawImage(texture,x=0,y=0,width=0,height=0){if(!texture)return null;if(width||(width=texture.sourceWidth),height||(height=texture.sourceHeight),texture.getIsReady()){var wRate=width/texture.sourceWidth,hRate=height/texture.sourceHeight;if(width=texture.width*wRate,height=texture.height*hRate,width<=0||height<=0)return null;x+=texture.offsetX*wRate,y+=texture.offsetY*hRate}this._sp&&(this._sp._renderType|=SpriteConst.GRAPHICS,this._sp._setRenderType(this._sp._renderType));var args=DrawImageCmd.create.call(this,texture,x,y,width,height);return null==this._one?(this._one=args,this._render=this._renderOneImg):this._saveToCmd(null,args),this._repaint(),args}drawTexture(texture,x=0,y=0,width=0,height=0,matrix=null,alpha=1,color=null,blendMode=null,uv){if(!texture||alpha<.01)return null;if(!texture.getIsReady())return null;if(width||(width=texture.sourceWidth),height||(height=texture.sourceHeight),texture.getIsReady()){var wRate=width/texture.sourceWidth,hRate=height/texture.sourceHeight;if(width=texture.width*wRate,height=texture.height*hRate,width<=0||height<=0)return null;x+=texture.offsetX*wRate,y+=texture.offsetY*hRate}this._sp&&(this._sp._renderType|=SpriteConst.GRAPHICS,this._sp._setRenderType(this._sp._renderType));var args=DrawTextureCmd.create.call(this,texture,x,y,width,height,matrix,alpha,color,blendMode,uv);return this._repaint(),this._saveToCmd(null,args)}drawTextures(texture,pos){return texture?this._saveToCmd(Render._context.drawTextures,DrawTexturesCmd.create.call(this,texture,pos)):null}drawTriangles(texture,x,y,vertices,uvs,indices,matrix=null,alpha=1,color=null,blendMode=null){return this._saveToCmd(Render._context.drawTriangles,DrawTrianglesCmd.create.call(this,texture,x,y,vertices,uvs,indices,matrix,alpha,color,blendMode))}fillTexture(texture,x,y,width=0,height=0,type="repeat",offset=null){return texture&&texture.getIsReady()?this._saveToCmd(Render._context._fillTexture,FillTextureCmd.create.call(this,texture,x,y,width,height,type,offset||Point.EMPTY,{})):null}_saveToCmd(fun,args){return this._sp&&(this._sp._renderType|=SpriteConst.GRAPHICS,this._sp._setRenderType(this._sp._renderType)),null==this._one?(this._one=args,this._render=this._renderOne):(this._render=this._renderAll,0===(this._cmds||(this._cmds=[])).length&&this._cmds.push(this._one),this._cmds.push(args)),this._repaint(),args}clipRect(x,y,width,height){return this._saveToCmd(Render._context.clipRect,ClipRectCmd.create.call(this,x,y,width,height))}fillText(text,x,y,font,color,textAlign){return this._saveToCmd(Render._context.fillText,FillTextCmd.create.call(this,text,x,y,font||ILaya.Text.defaultFontStr(),color,textAlign))}fillBorderText(text,x,y,font,fillColor,borderColor,lineWidth,textAlign){return this._saveToCmd(Render._context.fillBorderText,FillBorderTextCmd.create.call(this,text,x,y,font||ILaya.Text.defaultFontStr(),fillColor,borderColor,lineWidth,textAlign))}fillWords(words,x,y,font,color){return this._saveToCmd(Render._context.fillWords,FillWordsCmd.create.call(this,words,x,y,font||ILaya.Text.defaultFontStr(),color))}fillBorderWords(words,x,y,font,fillColor,borderColor,lineWidth){return this._saveToCmd(Render._context.fillBorderWords,FillBorderWordsCmd.create.call(this,words,x,y,font||ILaya.Text.defaultFontStr(),fillColor,borderColor,lineWidth))}strokeText(text,x,y,font,color,lineWidth,textAlign){return this._saveToCmd(Render._context.fillBorderText,StrokeTextCmd.create.call(this,text,x,y,font||ILaya.Text.defaultFontStr(),color,lineWidth,textAlign))}alpha(alpha){return this._saveToCmd(Render._context.alpha,AlphaCmd.create.call(this,alpha))}transform(matrix,pivotX=0,pivotY=0){return this._saveToCmd(Render._context._transform,TransformCmd.create.call(this,matrix,pivotX,pivotY))}rotate(angle,pivotX=0,pivotY=0){return this._saveToCmd(Render._context._rotate,RotateCmd.create.call(this,angle,pivotX,pivotY))}scale(scaleX,scaleY,pivotX=0,pivotY=0){return this._saveToCmd(Render._context._scale,ScaleCmd.create.call(this,scaleX,scaleY,pivotX,pivotY))}translate(tx,ty){return this._saveToCmd(Render._context.translate,TranslateCmd.create.call(this,tx,ty))}save(){return this._saveToCmd(Render._context._save,SaveCmd.create.call(this))}restore(){return this._saveToCmd(Render._context.restore,RestoreCmd.create.call(this))}replaceText(text){this._repaint();var cmds=this._cmds;if(cmds){for(var i=cmds.length-1;i>-1;i--)if(this._isTextCmd(cmds[i]))return cmds[i].text=text,!0}else if(this._one&&this._isTextCmd(this._one))return this._one.text=text,!0;return!1}_isTextCmd(cmd){var cmdID=cmd.cmdID;return cmdID==FillTextCmd.ID||cmdID==StrokeTextCmd.ID||cmdID==FillBorderTextCmd.ID}replaceTextColor(color){this._repaint();var cmds=this._cmds;if(cmds)for(var i=cmds.length-1;i>-1;i--)this._isTextCmd(cmds[i])&&this._setTextCmdColor(cmds[i],color);else this._one&&this._isTextCmd(this._one)&&this._setTextCmdColor(this._one,color)}_setTextCmdColor(cmdO,color){switch(cmdO.cmdID){case FillTextCmd.ID:case StrokeTextCmd.ID:cmdO.color=color;break;case FillBorderTextCmd.ID:case FillBorderWordsCmd.ID:case FillBorderTextCmd.ID:cmdO.fillColor=color}}loadImage(url,x=0,y=0,width=0,height=0,complete=null){var tex=ILaya.Loader.getRes(url);tex?tex.getIsReady()?this.drawImage(tex,x,y,width,height):tex.once(Event.READY,this,this.drawImage,[tex,x,y,width,height]):((tex=new Texture).load(url),ILaya.Loader.cacheRes(url,tex),tex.once(Event.READY,this,this.drawImage,[tex,x,y,width,height])),null!=complete&&(tex.getIsReady()?complete.call(this._sp):tex.on(Event.READY,this._sp,complete))}_renderEmpty(sprite,context,x,y){}_renderAll(sprite,context,x,y){for(var cmds=this._cmds,i=0,n=cmds.length;i<n;i++)cmds[i].run(context,x,y)}_renderOne(sprite,context,x,y){context.sprite=sprite,this._one.run(context,x,y)}_renderOneImg(sprite,context,x,y){context.sprite=sprite,this._one.run(context,x,y)}drawLine(fromX,fromY,toX,toY,lineColor,lineWidth=1){var offset=lineWidth<1||lineWidth%2==0?0:.5;return this._saveToCmd(Render._context._drawLine,DrawLineCmd.create.call(this,fromX+offset,fromY+offset,toX+offset,toY+offset,lineColor,lineWidth,0))}drawLines(x,y,points,lineColor,lineWidth=1){if(!points||points.length<4)return null;var offset=lineWidth<1||lineWidth%2==0?0:.5;return this._saveToCmd(Render._context._drawLines,DrawLinesCmd.create.call(this,x+offset,y+offset,points,lineColor,lineWidth,0))}drawCurves(x,y,points,lineColor,lineWidth=1){return this._saveToCmd(Render._context.drawCurves,DrawCurvesCmd.create.call(this,x,y,points,lineColor,lineWidth))}drawRect(x,y,width,height,fillColor,lineColor=null,lineWidth=1){var offset=lineWidth>=1&&lineColor?lineWidth/2:0,lineOffset=lineColor?lineWidth:0;return this._saveToCmd(Render._context.drawRect,DrawRectCmd.create.call(this,x+offset,y+offset,width-lineOffset,height-lineOffset,fillColor,lineColor,lineWidth))}drawCircle(x,y,radius,fillColor,lineColor=null,lineWidth=1){var offset=lineWidth>=1&&lineColor?lineWidth/2:0;return this._saveToCmd(Render._context._drawCircle,DrawCircleCmd.create.call(this,x,y,radius-offset,fillColor,lineColor,lineWidth,0))}drawPie(x,y,radius,startAngle,endAngle,fillColor,lineColor=null,lineWidth=1){var offset=lineWidth>=1&&lineColor?lineWidth/2:0,lineOffset=lineColor?lineWidth:0;return this._saveToCmd(Render._context._drawPie,DrawPieCmd.create.call(this,x+offset,y+offset,radius-lineOffset,Utils.toRadian(startAngle),Utils.toRadian(endAngle),fillColor,lineColor,lineWidth,0))}drawPoly(x,y,points,fillColor,lineColor=null,lineWidth=1){var tIsConvexPolygon=!1;tIsConvexPolygon=!(points.length>6);var offset=lineWidth>=1&&lineColor?lineWidth%2==0?0:.5:0;return this._saveToCmd(Render._context._drawPoly,DrawPolyCmd.create.call(this,x+offset,y+offset,points,fillColor,lineColor,lineWidth,tIsConvexPolygon,0))}drawPath(x,y,paths,brush=null,pen=null){return this._saveToCmd(Render._context._drawPath,DrawPathCmd.create.call(this,x,y,paths,brush,pen))}draw9Grid(texture,x=0,y=0,width=0,height=0,sizeGrid=null){this._saveToCmd(null,Draw9GridTexture.create(texture,x,y,width,height,sizeGrid))}}class Const{}Const.NOT_ACTIVE=1,Const.ACTIVE_INHIERARCHY=2,Const.AWAKED=4,Const.NOT_READY=8,Const.DISPLAY=16,Const.HAS_ZORDER=32,Const.HAS_MOUSE=64,Const.DISPLAYED_INSTAGE=128,Const.DRAWCALL_OPTIMIZE=256;class HitArea{contains(x,y){return!!HitArea._isHitGraphic(x,y,this.hit)&&!HitArea._isHitGraphic(x,y,this.unHit)}static _isHitGraphic(x,y,graphic){if(!graphic)return!1;var i,len,cmd,cmds=graphic.cmds;if(!cmds&&graphic._one&&((cmds=HitArea._cmds).length=1,cmds[0]=graphic._one),!cmds)return!1;for(len=cmds.length,i=0;i<len;i++)if(cmd=cmds[i]){switch(cmd.cmdID){case"Translate":x-=cmd.tx,y-=cmd.ty}if(HitArea._isHitCmd(x,y,cmd))return!0}return!1}static _isHitCmd(x,y,cmd){if(!cmd)return!1;var rst=!1;switch(cmd.cmdID){case"DrawRect":HitArea._rect.setTo(cmd.x,cmd.y,cmd.width,cmd.height),rst=HitArea._rect.contains(x,y);break;case"DrawCircle":rst=(x-=cmd.x)*x+(y-=cmd.y)*y<cmd.radius*cmd.radius;break;case"DrawPoly":x-=cmd.x,y-=cmd.y,rst=HitArea._ptInPolygon(x,y,cmd.points)}return rst}static _ptInPolygon(x,y,areaPoints){var p=HitArea._ptPoint;p.setTo(x,y);var p1x,p1y,p2x,p2y,len,nCross=0;len=areaPoints.length;for(var i=0;i<len;i+=2){if(p1x=areaPoints[i],p1y=areaPoints[i+1],p2x=areaPoints[(i+2)%len],p1y!=(p2y=areaPoints[(i+3)%len]))if(!(p.y<Math.min(p1y,p2y)))if(!(p.y>=Math.max(p1y,p2y)))(p.y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x>p.x&&nCross++}return nCross%2==1}get hit(){return this._hit||(this._hit=new ILaya.Graphics),this._hit}set hit(value){this._hit=value}get unHit(){return this._unHit||(this._unHit=new ILaya.Graphics),this._unHit}set unHit(value){this._unHit=value}}HitArea._cmds=[],HitArea._rect=new Rectangle,HitArea._ptPoint=new Point;class ClassUtils{static regClass(className,classDef){ClassUtils._classMap[className]=classDef}static regShortClassName(classes){for(var i=0;i<classes.length;i++){var classDef=classes[i],className=classDef.name;ClassUtils._classMap[className]=classDef}}static getRegClass(className){return ClassUtils._classMap[className]}static getClass(className){var classObject=ClassUtils._classMap[className]||ClassUtils._classMap["Laya."+className]||className,glaya=ILaya.Laya;return"string"==typeof classObject?ILaya.__classMap[classObject]||glaya[className]:classObject}static getInstance(className){var compClass=ClassUtils.getClass(className);return compClass?new compClass:(console.warn("[error] Undefined class:",className),null)}static createByJson(json,node=null,root=null,customHandler=null,instanceHandler=null){"string"==typeof json&&(json=JSON.parse(json));var props=json.props;if(!node&&!(node=instanceHandler?instanceHandler.runWith(json):ClassUtils.getInstance(props.runtime||json.type)))return null;var child=json.child;if(child)for(var i=0,n=child.length;i<n;i++){var data=child[i];if("render"!==data.props.name&&"render"!==data.props.renderType||!node._$set_itemRender)if("Graphic"==data.type)ClassUtils._addGraphicsToSprite(data,node);else if(ClassUtils._isDrawType(data.type))ClassUtils._addGraphicToSprite(data,node,!0);else{var tChild=ClassUtils.createByJson(data,null,root,customHandler,instanceHandler);"Script"===data.type?"owner"in tChild?tChild.owner=node:"target"in tChild&&(tChild.target=node):"mask"==data.props.renderType?node.mask=tChild:node.addChild(tChild)}else node.itemRender=data}if(props)for(var prop in props){var value=props[prop];"var"===prop&&root?root[value]=node:value instanceof Array&&node[prop]instanceof Function?node[prop].apply(node,value):node[prop]=value}return customHandler&&json.customProps&&customHandler.runWith([node,json]),node.created&&node.created(),node}static _addGraphicsToSprite(graphicO,sprite){var graphics=graphicO.child;if(graphics&&!(graphics.length<1)){var i,len,g=ClassUtils._getGraphicsFromSprite(graphicO,sprite),ox=0,oy=0;for(graphicO.props&&(ox=ClassUtils._getObjVar(graphicO.props,"x",0),oy=ClassUtils._getObjVar(graphicO.props,"y",0)),0!=ox&&0!=oy&&g.translate(ox,oy),len=graphics.length,i=0;i<len;i++)ClassUtils._addGraphicToGraphics(graphics[i],g);0!=ox&&0!=oy&&g.translate(-ox,-oy)}}static _addGraphicToSprite(graphicO,sprite,isChild=!1){var g=isChild?ClassUtils._getGraphicsFromSprite(graphicO,sprite):sprite.graphics;ClassUtils._addGraphicToGraphics(graphicO,g)}static _getGraphicsFromSprite(dataO,sprite){if(!dataO||!dataO.props)return sprite.graphics;var propsName=dataO.props.renderType;if("hit"===propsName||"unHit"===propsName){var hitArea=sprite._style.hitArea||(sprite.hitArea=new HitArea);hitArea[propsName]||(hitArea[propsName]=new Graphics);var g=hitArea[propsName]}return g||(g=sprite.graphics),g}static _getTransformData(propsO){var m;("pivotX"in propsO||"pivotY"in propsO)&&(m=m||new Matrix).translate(-ClassUtils._getObjVar(propsO,"pivotX",0),-ClassUtils._getObjVar(propsO,"pivotY",0));var sx=ClassUtils._getObjVar(propsO,"scaleX",1),sy=ClassUtils._getObjVar(propsO,"scaleY",1),rotate=ClassUtils._getObjVar(propsO,"rotation",0);ClassUtils._getObjVar(propsO,"skewX",0),ClassUtils._getObjVar(propsO,"skewY",0);return 1==sx&&1==sy&&0==rotate||((m=m||new Matrix).scale(sx,sy),m.rotate(.0174532922222222*rotate)),m}static _addGraphicToGraphics(graphicO,graphic){var propsO,drawConfig;if((propsO=graphicO.props)&&(drawConfig=ClassUtils.DrawTypeDic[graphicO.type])){var g=graphic,params=ClassUtils._getParams(propsO,drawConfig[1],drawConfig[2],drawConfig[3]),m=ClassUtils._tM;(m||1!=ClassUtils._alpha)&&(g.save(),m&&g.transform(m),1!=ClassUtils._alpha&&g.alpha(ClassUtils._alpha)),g[drawConfig[0]].apply(g,params),(m||1!=ClassUtils._alpha)&&g.restore()}}static _adptLineData(params){return params[2]=parseFloat(params[0])+parseFloat(params[2]),params[3]=parseFloat(params[1])+parseFloat(params[3]),params}static _adptTextureData(params){return params[0]=ILaya.Loader.getRes(params[0]),params}static _adptLinesData(params){return params[2]=ClassUtils._getPointListByStr(params[2]),params}static _isDrawType(type){return"Image"!==type&&type in ClassUtils.DrawTypeDic}static _getParams(obj,params,xPos=0,adptFun=null){var i,len,m,rst=ClassUtils._temParam;for(rst.length=params.length,len=params.length,i=0;i<len;i++)rst[i]=ClassUtils._getObjVar(obj,params[i][0],params[i][1]);return ClassUtils._alpha=ClassUtils._getObjVar(obj,"alpha",1),(m=ClassUtils._getTransformData(obj))?(xPos||(xPos=0),m.translate(rst[xPos],rst[xPos+1]),rst[xPos]=rst[xPos+1]=0,ClassUtils._tM=m):ClassUtils._tM=null,adptFun&&ClassUtils[adptFun]&&(rst=ClassUtils[adptFun](rst)),rst}static _getPointListByStr(str){var i,len,pointArr=str.split(",");for(len=pointArr.length,i=0;i<len;i++)pointArr[i]=parseFloat(pointArr[i]);return pointArr}static _getObjVar(obj,key,noValue){return key in obj?obj[key]:noValue}}ClassUtils.DrawTypeDic={Rect:["drawRect",[["x",0],["y",0],["width",0],["height",0],["fillColor",null],["lineColor",null],["lineWidth",1]]],Circle:["drawCircle",[["x",0],["y",0],["radius",0],["fillColor",null],["lineColor",null],["lineWidth",1]]],Pie:["drawPie",[["x",0],["y",0],["radius",0],["startAngle",0],["endAngle",0],["fillColor",null],["lineColor",null],["lineWidth",1]]],Image:["drawTexture",[["x",0],["y",0],["width",0],["height",0]]],Texture:["drawTexture",[["skin",null],["x",0],["y",0],["width",0],["height",0]],1,"_adptTextureData"],FillTexture:["fillTexture",[["skin",null],["x",0],["y",0],["width",0],["height",0],["repeat",null]],1,"_adptTextureData"],FillText:["fillText",[["text",""],["x",0],["y",0],["font",null],["color",null],["textAlign",null]],1],Line:["drawLine",[["x",0],["y",0],["toX",0],["toY",0],["lineColor",null],["lineWidth",0]],0,"_adptLineData"],Lines:["drawLines",[["x",0],["y",0],["points",""],["lineColor",null],["lineWidth",0]],0,"_adptLinesData"],Curves:["drawCurves",[["x",0],["y",0],["points",""],["lineColor",null],["lineWidth",0]],0,"_adptLinesData"],Poly:["drawPoly",[["x",0],["y",0],["points",""],["fillColor",null],["lineColor",null],["lineWidth",1]],0,"_adptLinesData"]},ClassUtils._temParam=[],ClassUtils._classMap={};class Node extends EventDispatcher{constructor(){super(),this._bits=0,this._children=Node.ARRAY_EMPTY,this._extUIChild=Node.ARRAY_EMPTY,this._parent=null,this.name="",this.destroyed=!1,this.createGLBuffer()}createGLBuffer(){}_setBit(type,value){type===Const.DISPLAY&&(this._getBit(type)!=value&&this._updateDisplayedInstage());value?this._bits|=type:this._bits&=~type}_getBit(type){return 0!=(this._bits&type)}_setUpNoticeChain(){this._getBit(Const.DISPLAY)&&this._setBitUp(Const.DISPLAY)}_setBitUp(type){var ele=this;for(ele._setBit(type,!0),ele=ele._parent;ele;){if(ele._getBit(type))return;ele._setBit(type,!0),ele=ele._parent}}on(type,caller,listener,args=null){return type!==Event.DISPLAY&&type!==Event.UNDISPLAY||this._getBit(Const.DISPLAY)||this._setBitUp(Const.DISPLAY),this._createListener(type,caller,listener,args,!1)}once(type,caller,listener,args=null){return type!==Event.DISPLAY&&type!==Event.UNDISPLAY||this._getBit(Const.DISPLAY)||this._setBitUp(Const.DISPLAY),this._createListener(type,caller,listener,args,!0)}destroy(destroyChild=!0){this.destroyed=!0,this._destroyAllComponent(),this._parent&&this._parent.removeChild(this),this._children&&(destroyChild?this.destroyChildren():this.removeChildren()),this.onDestroy(),this._children=null,this.offAll()}onDestroy(){}destroyChildren(){if(this._children)for(var i=0,n=this._children.length;i<n;i++)this._children[0].destroy(!0)}addChild(node){if(!node||this.destroyed||node===this)return node;if(node._zOrder&&this._setBit(Const.HAS_ZORDER,!0),node._parent===this){var index=this.getChildIndex(node);index!==this._children.length-1&&(this._children.splice(index,1),this._children.push(node),this._childChanged())}else node._parent&&node._parent.removeChild(node),this._children===Node.ARRAY_EMPTY&&(this._children=[]),this._children.push(node),node._setParent(this),this._childChanged();return node}addInputChild(node){if(this._extUIChild==Node.ARRAY_EMPTY)this._extUIChild=[node];else{if(this._extUIChild.indexOf(node)>=0)return null;this._extUIChild.push(node)}return null}removeInputChild(node){var idx=this._extUIChild.indexOf(node);idx>=0&&this._extUIChild.splice(idx,1)}addChildren(...args){for(var i=0,n=args.length;i<n;)this.addChild(args[i++])}addChildAt(node,index){if(!node||this.destroyed||node===this)return node;if(node._zOrder&&this._setBit(Const.HAS_ZORDER,!0),index>=0&&index<=this._children.length){if(node._parent===this){var oldIndex=this.getChildIndex(node);this._children.splice(oldIndex,1),this._children.splice(index,0,node),this._childChanged()}else node._parent&&node._parent.removeChild(node),this._children===Node.ARRAY_EMPTY&&(this._children=[]),this._children.splice(index,0,node),node._setParent(this);return node}throw new Error("appendChildAt:The index is out of bounds")}getChildIndex(node){return this._children.indexOf(node)}getChildByName(name){var nodes=this._children;if(nodes)for(var i=0,n=nodes.length;i<n;i++){var node=nodes[i];if(node.name===name)return node}return null}getChildAt(index){return this._children[index]||null}setChildIndex(node,index){var childs=this._children;if(index<0||index>=childs.length)throw new Error("setChildIndex:The index is out of bounds.");var oldIndex=this.getChildIndex(node);if(oldIndex<0)throw new Error("setChildIndex:node is must child of this object.");return childs.splice(oldIndex,1),childs.splice(index,0,node),this._childChanged(),node}_childChanged(child=null){}removeChild(node){if(!this._children)return node;var index=this._children.indexOf(node);return this.removeChildAt(index)}removeSelf(){return this._parent&&this._parent.removeChild(this),this}removeChildByName(name){var node=this.getChildByName(name);return node&&this.removeChild(node),node}removeChildAt(index){var node=this.getChildAt(index);return node&&(this._children.splice(index,1),node._setParent(null)),node}removeChildren(beginIndex=0,endIndex=2147483647){if(this._children&&this._children.length>0){var childs=this._children;if(0===beginIndex&&endIndex>=childs.length-1){var arr=childs;this._children=Node.ARRAY_EMPTY}else arr=childs.splice(beginIndex,endIndex-beginIndex);for(var i=0,n=arr.length;i<n;i++)arr[i]._setParent(null)}return this}replaceChild(newNode,oldNode){var index=this._children.indexOf(oldNode);return index>-1?(this._children.splice(index,1,newNode),oldNode._setParent(null),newNode._setParent(this),newNode):null}get numChildren(){return this._children.length}get parent(){return this._parent}_setParent(value){this._parent!==value&&(value?(this._parent=value,this._onAdded(),this.event(Event.ADDED),this._getBit(Const.DISPLAY)&&(this._setUpNoticeChain(),value.displayedInStage&&this._displayChild(this,!0)),value._childChanged(this)):(this._onRemoved(),this.event(Event.REMOVED),this._parent._childChanged(),this._getBit(Const.DISPLAY)&&this._displayChild(this,!1),this._parent=value))}get displayedInStage(){return this._getBit(Const.DISPLAY)?this._getBit(Const.DISPLAYED_INSTAGE):(this._setBitUp(Const.DISPLAY),this._getBit(Const.DISPLAYED_INSTAGE))}_updateDisplayedInstage(){var ele;ele=this;for(var stage=ILaya.stage,displayedInStage=!1;ele;){if(ele._getBit(Const.DISPLAY)){displayedInStage=ele._getBit(Const.DISPLAYED_INSTAGE);break}if(ele===stage||ele._getBit(Const.DISPLAYED_INSTAGE)){displayedInStage=!0;break}ele=ele._parent}this._setBit(Const.DISPLAYED_INSTAGE,displayedInStage)}_setDisplay(value){this._getBit(Const.DISPLAYED_INSTAGE)!==value&&(this._setBit(Const.DISPLAYED_INSTAGE,value),value?this.event(Event.DISPLAY):this.event(Event.UNDISPLAY))}_displayChild(node,display){var childs=node._children;if(childs)for(var i=0,n=childs.length;i<n;i++){var child=childs[i];child._getBit(Const.DISPLAY)&&(child._children.length>0?this._displayChild(child,display):child._setDisplay(display))}node._setDisplay(display)}contains(node){if(node===this)return!0;for(;node;){if(node._parent===this)return!0;node=node._parent}return!1}timerLoop(delay,caller,method,args=null,coverBefore=!0,jumpFrame=!1){(this.scene?this.scene.timer:ILaya.timer).loop(delay,caller,method,args,coverBefore,jumpFrame)}timerOnce(delay,caller,method,args=null,coverBefore=!0){(this.scene?this.scene.timer:ILaya.timer)._create(!1,!1,delay,caller,method,args,coverBefore)}frameLoop(delay,caller,method,args=null,coverBefore=!0){(this.scene?this.scene.timer:ILaya.timer)._create(!0,!0,delay,caller,method,args,coverBefore)}frameOnce(delay,caller,method,args=null,coverBefore=!0){(this.scene?this.scene.timer:ILaya.timer)._create(!0,!1,delay,caller,method,args,coverBefore)}clearTimer(caller,method){(this.scene?this.scene.timer:ILaya.timer).clear(caller,method)}callLater(method,args=null){(this.scene?this.scene.timer:ILaya.timer).callLater(this,method,args)}runCallLater(method){(this.scene?this.scene.timer:ILaya.timer).runCallLater(this,method)}get scene(){return this._scene}get active(){return!this._getBit(Const.NOT_READY)&&!this._getBit(Const.NOT_ACTIVE)}set active(value){if(value=!!value,!this._getBit(Const.NOT_ACTIVE)!==value){if(this._activeChangeScripts&&0!==this._activeChangeScripts.length)throw value?"Node: can't set the main inActive node active in hierarchy,if the operate is in main inActive node or it's children script's onDisable Event.":"Node: can't set the main active node inActive in hierarchy,if the operate is in main active node or it's children script's onEnable Event.";this._setBit(Const.NOT_ACTIVE,!value),this._parent&&this._parent.activeInHierarchy&&(value?this._processActive():this._processInActive())}}get activeInHierarchy(){return this._getBit(Const.ACTIVE_INHIERARCHY)}_onActive(){Stat.spriteCount++}_onInActive(){Stat.spriteCount--}_onActiveInScene(){}_onInActiveInScene(){}_parse(data,spriteMap){}_setBelongScene(scene){if(!this._scene){this._scene=scene,this._onActiveInScene();for(var i=0,n=this._children.length;i<n;i++)this._children[i]._setBelongScene(scene)}}_setUnBelongScene(){if(this._scene!==this){this._onInActiveInScene(),this._scene=null;for(var i=0,n=this._children.length;i<n;i++)this._children[i]._setUnBelongScene()}}onAwake(){}onEnable(){}_processActive(){this._activeChangeScripts||(this._activeChangeScripts=[]),this._activeHierarchy(this._activeChangeScripts),this._activeScripts()}_activeHierarchy(activeChangeScripts){if(this._setBit(Const.ACTIVE_INHIERARCHY,!0),this._components)for(var i=0,n=this._components.length;i<n;i++){var comp=this._components[i];comp._setActive(!0),comp._isScript()&&comp._enabled&&activeChangeScripts.push(comp)}for(this._onActive(),i=0,n=this._children.length;i<n;i++){var child=this._children[i];!child._getBit(Const.NOT_ACTIVE)&&child._activeHierarchy(activeChangeScripts)}this._getBit(Const.AWAKED)||(this._setBit(Const.AWAKED,!0),this.onAwake()),this.onEnable()}_activeScripts(){for(var i=0,n=this._activeChangeScripts.length;i<n;i++)this._activeChangeScripts[i].onEnable();this._activeChangeScripts.length=0}_processInActive(){this._activeChangeScripts||(this._activeChangeScripts=[]),this._inActiveHierarchy(this._activeChangeScripts),this._inActiveScripts()}_inActiveHierarchy(activeChangeScripts){if(this._onInActive(),this._components)for(var i=0,n=this._components.length;i<n;i++){var comp=this._components[i];comp._setActive(!1),comp._isScript()&&comp._enabled&&activeChangeScripts.push(comp)}for(this._setBit(Const.ACTIVE_INHIERARCHY,!1),i=0,n=this._children.length;i<n;i++){var child=this._children[i];child&&!child._getBit(Const.NOT_ACTIVE)&&child._inActiveHierarchy(activeChangeScripts)}this.onDisable()}_inActiveScripts(){for(var i=0,n=this._activeChangeScripts.length;i<n;i++)this._activeChangeScripts[i].onDisable();this._activeChangeScripts.length=0}onDisable(){}_onAdded(){if(this._activeChangeScripts&&0!==this._activeChangeScripts.length)throw"Node: can't set the main inActive node active in hierarchy,if the operate is in main inActive node or it's children script's onDisable Event.";var parentScene=this._parent.scene;parentScene&&this._setBelongScene(parentScene),this._parent.activeInHierarchy&&this.active&&this._processActive()}_onRemoved(){if(this._activeChangeScripts&&0!==this._activeChangeScripts.length)throw"Node: can't set the main active node inActive in hierarchy,if the operate is in main active node or it's children script's onEnable Event.";this._parent.activeInHierarchy&&this.active&&this._processInActive(),this._parent.scene&&this._setUnBelongScene()}_addComponentInstance(comp){this._components=this._components||[],this._components.push(comp),comp.owner=this,comp._onAdded(),this.activeInHierarchy&&(comp._setActive(!0),comp._isScript()&&comp._enabled&&comp.onEnable())}_destroyComponent(comp){if(this._components)for(var i=0,n=this._components.length;i<n;i++){var item=this._components[i];if(item===comp){item._destroy(),this._components.splice(i,1);break}}}_destroyAllComponent(){if(this._components){for(var i=0,n=this._components.length;i<n;i++){this._components[i]._destroy()}this._components.length=0}}_cloneTo(destObject,srcRoot,dstRoot){var destNode=destObject;if(this._components)for(var i=0,n=this._components.length;i<n;i++){var destComponent=destNode.addComponent(this._components[i].constructor);this._components[i]._cloneTo(destComponent)}}addComponentIntance(comp){if(comp.owner)throw"Node:the component has belong to other node.";if(comp.isSingleton&&this.getComponent(comp.constructor))throw"Node:the component is singleton,can't add the second one.";return this._addComponentInstance(comp),comp}addComponent(type){var comp=Pool.createByClass(type);if(comp._destroyed=!1,comp.isSingleton&&this.getComponent(type))throw"无法实例"+type+"组件,"+type+"组件已存在!";return this._addComponentInstance(comp),comp}getComponent(clas){if(this._components)for(var i=0,n=this._components.length;i<n;i++){var comp=this._components[i];if(comp instanceof clas)return comp}return null}getComponents(clas){var arr;if(this._components)for(var i=0,n=this._components.length;i<n;i++){var comp=this._components[i];comp instanceof clas&&(arr=arr||[]).push(comp)}return arr}get timer(){return this.scene?this.scene.timer:ILaya.timer}}Node.ARRAY_EMPTY=[],ClassUtils.regClass("laya.display.Node",Node),ClassUtils.regClass("Laya.Node",Node);class BoundsStyle{reset(){return this.bounds&&this.bounds.recover(),this.userBounds&&this.userBounds.recover(),this.bounds=null,this.userBounds=null,this.temBM=null,this}recover(){Pool.recover("BoundsStyle",this.reset())}static create(){return Pool.getItemByClass("BoundsStyle",BoundsStyle)}}class HTMLCanvas extends Bitmap{get source(){return this._source}_getSource(){return this._source}constructor(createCanvas=!1){super(),this._source=createCanvas?Browser.createElement("canvas"):this,this.lock=!0}clear(){this._ctx&&this._ctx.clear&&this._ctx.clear(),this._texture&&(this._texture.destroy(),this._texture=null)}destroy(){super.destroy(),this._setCPUMemory(0),this._ctx&&this._ctx.destroy&&this._ctx.destroy(),this._ctx=null}release(){}get context(){return this._ctx?this._ctx:(this._source==this?this._ctx=new ILaya.Context:this._ctx=this._source.getContext(ILaya.Render.isConchApp?"layagl":"2d"),this._ctx._canvas=this,this._ctx)}_setContext(context){this._ctx=context}getContext(contextID,other=null){return this.context}getMemSize(){return 0}size(w,h){(this._width!=w||this._height!=h||this._source&&(this._source.width!=w||this._source.height!=h))&&(this._width=w,this._height=h,this._setCPUMemory(w*h*4),this._ctx&&this._ctx.size&&this._ctx.size(w,h),this._source&&(this._source.height=h,this._source.width=w),this._texture&&(this._texture.destroy(),this._texture=null))}getTexture(){if(!this._texture){var bitmap=new Texture2D;bitmap.loadImageSource(this.source),this._texture=new Texture(bitmap)}return this._texture}toBase64(type,encoderOptions){if(this._source){if(ILaya.Render.isConchApp){var win=window;if(2==win.conchConfig.threadMode)throw"native 2 thread mode use toBase64Async";var width=this._ctx._targets.sourceWidth,height=this._ctx._targets.sourceHeight,data=this._ctx._targets.getData(0,0,width,height);return win.conchToBase64FlipY?win.conchToBase64FlipY(type,encoderOptions,data.buffer,width,height):win.conchToBase64(type,encoderOptions,data.buffer,width,height)}return this._source.toDataURL(type,encoderOptions)}return null}toBase64Async(type,encoderOptions,callBack){var width=this._ctx._targets.sourceWidth,height=this._ctx._targets.sourceHeight;this._ctx._targets.getDataAsync(0,0,width,height,function(data){let win=window;var base64=win.conchToBase64FlipY?win.conchToBase64FlipY(type,encoderOptions,data.buffer,width,height):win.conchToBase64(type,encoderOptions,data.buffer,width,height);callBack(base64)})}}class CacheStyle{constructor(){this.reset()}needBitmapCache(){return this.cacheForFilters||!!this.mask}needEnableCanvasRender(){return"none"!=this.userSetCache||this.cacheForFilters||!!this.mask}releaseContext(){if(this.canvas&&this.canvas.size){Pool.recover("CacheCanvas",this.canvas),this.canvas.size(0,0);try{this.canvas.width=0,this.canvas.height=0}catch(e){}}this.canvas=null}createContext(){if(!this.canvas){this.canvas=Pool.getItem("CacheCanvas")||new HTMLCanvas(!1);var tx=this.canvas.context;tx||(tx=this.canvas.getContext("2d"))}}releaseFilterCache(){var fc=this.filterCache;fc&&(fc.destroy(),fc.recycle(),this.filterCache=null)}recover(){this!==CacheStyle.EMPTY&&Pool.recover("SpriteCache",this.reset())}reset(){return this.releaseContext(),this.releaseFilterCache(),this.cacheAs="none",this.enableCanvasRender=!1,this.userSetCache="none",this.cacheForFilters=!1,this.staticCache=!1,this.reCache=!0,this.mask=null,this.maskParent=null,this.filterCache=null,this.filters=null,this.hasGlowFilter=!1,this.cacheRect&&this.cacheRect.recover(),this.cacheRect=null,this}static create(){return Pool.getItemByClass("SpriteCache",CacheStyle)}_calculateCacheRect(sprite,tCacheType,x,y){var tRec,_cacheStyle=sprite._cacheStyle;if(_cacheStyle.cacheRect||(_cacheStyle.cacheRect=Rectangle.create()),"bitmap"===tCacheType?((tRec=sprite.getSelfBounds()).width=tRec.width+2*CacheStyle.CANVAS_EXTEND_EDGE,tRec.height=tRec.height+2*CacheStyle.CANVAS_EXTEND_EDGE,tRec.x=tRec.x-sprite.pivotX,tRec.y=tRec.y-sprite.pivotY,tRec.x=tRec.x-CacheStyle.CANVAS_EXTEND_EDGE,tRec.y=tRec.y-CacheStyle.CANVAS_EXTEND_EDGE,tRec.x=Math.floor(tRec.x+x)-x,tRec.y=Math.floor(tRec.y+y)-y,tRec.width=Math.floor(tRec.width),tRec.height=Math.floor(tRec.height),_cacheStyle.cacheRect.copyFrom(tRec)):_cacheStyle.cacheRect.setTo(-sprite._style.pivotX,-sprite._style.pivotY,1,1),tRec=_cacheStyle.cacheRect,sprite._style.scrollRect){var scrollRect=sprite._style.scrollRect;tRec.x-=scrollRect.x,tRec.y-=scrollRect.y}return CacheStyle._scaleInfo.setTo(1,1),CacheStyle._scaleInfo}}CacheStyle.EMPTY=new CacheStyle,CacheStyle._scaleInfo=new Point,CacheStyle.CANVAS_EXTEND_EDGE=16;class SpriteStyle{constructor(){this.reset()}reset(){return this.scaleX=this.scaleY=1,this.skewX=this.skewY=0,this.pivotX=this.pivotY=this.rotation=0,this.alpha=1,this.scrollRect&&this.scrollRect.recover(),this.scrollRect=null,this.viewport&&this.viewport.recover(),this.viewport=null,this.hitArea=null,this.dragging=null,this.blendMode=null,this}recover(){this!==SpriteStyle.EMPTY&&Pool.recover("SpriteStyle",this.reset())}static create(){return Pool.getItemByClass("SpriteStyle",SpriteStyle)}}SpriteStyle.EMPTY=new SpriteStyle;class LayaGLQuickRunner{static __init__(){LayaGLQuickRunner.map[SpriteConst.ALPHA|SpriteConst.TRANSFORM|SpriteConst.GRAPHICS]=LayaGLQuickRunner.alpha_transform_drawLayaGL,LayaGLQuickRunner.map[SpriteConst.ALPHA|SpriteConst.GRAPHICS]=LayaGLQuickRunner.alpha_drawLayaGL,LayaGLQuickRunner.map[SpriteConst.TRANSFORM|SpriteConst.GRAPHICS]=LayaGLQuickRunner.transform_drawLayaGL,LayaGLQuickRunner.map[SpriteConst.TRANSFORM|SpriteConst.CHILDS]=LayaGLQuickRunner.transform_drawNodes,LayaGLQuickRunner.map[SpriteConst.ALPHA|SpriteConst.TRANSFORM|SpriteConst.TEXTURE]=LayaGLQuickRunner.alpha_transform_drawTexture,LayaGLQuickRunner.map[SpriteConst.ALPHA|SpriteConst.TEXTURE]=LayaGLQuickRunner.alpha_drawTexture,LayaGLQuickRunner.map[SpriteConst.TRANSFORM|SpriteConst.TEXTURE]=LayaGLQuickRunner.transform_drawTexture,LayaGLQuickRunner.map[SpriteConst.GRAPHICS|SpriteConst.CHILDS]=LayaGLQuickRunner.drawLayaGL_drawNodes}static transform_drawTexture(sprite,context,x,y){sprite._style;var tex=sprite.texture;context.saveTransform(LayaGLQuickRunner.curMat),context.transformByMatrix(sprite.transform,x,y),context.drawTexture(tex,-sprite.pivotX,-sprite.pivotY,sprite._width||tex.width,sprite._height||tex.height),context.restoreTransform(LayaGLQuickRunner.curMat)}static alpha_drawTexture(sprite,context,x,y){var alpha,style=sprite._style,tex=sprite.texture;if((alpha=style.alpha)>.01||sprite._needRepaint()){var temp=context.globalAlpha;context.globalAlpha*=alpha,context.drawTexture(tex,x-style.pivotX+tex.offsetX,y-style.pivotY+tex.offsetY,sprite._width||tex.width,sprite._height||tex.height),context.globalAlpha=temp}}static alpha_transform_drawTexture(sprite,context,x,y){var alpha,style=sprite._style,tex=sprite.texture;if((alpha=style.alpha)>.01||sprite._needRepaint()){var temp=context.globalAlpha;context.globalAlpha*=alpha,context.saveTransform(LayaGLQuickRunner.curMat),context.transformByMatrix(sprite.transform,x,y),context.drawTexture(tex,-style.pivotX+tex.offsetX,-style.pivotY+tex.offsetY,sprite._width||tex.width,sprite._height||tex.height),context.restoreTransform(LayaGLQuickRunner.curMat),context.globalAlpha=temp}}static alpha_transform_drawLayaGL(sprite,context,x,y){var alpha,style=sprite._style;if((alpha=style.alpha)>.01||sprite._needRepaint()){var temp=context.globalAlpha;context.globalAlpha*=alpha,context.saveTransform(LayaGLQuickRunner.curMat),context.transformByMatrix(sprite.transform,x,y),sprite._graphics&&sprite._graphics._render(sprite,context,-style.pivotX,-style.pivotY),context.restoreTransform(LayaGLQuickRunner.curMat),context.globalAlpha=temp}}static alpha_drawLayaGL(sprite,context,x,y){var alpha,style=sprite._style;if((alpha=style.alpha)>.01||sprite._needRepaint()){var temp=context.globalAlpha;context.globalAlpha*=alpha,sprite._graphics&&sprite._graphics._render(sprite,context,x-style.pivotX,y-style.pivotY),context.globalAlpha=temp}}static transform_drawLayaGL(sprite,context,x,y){var style=sprite._style;context.saveTransform(LayaGLQuickRunner.curMat),context.transformByMatrix(sprite.transform,x,y),sprite._graphics&&sprite._graphics._render(sprite,context,-style.pivotX,-style.pivotY),context.restoreTransform(LayaGLQuickRunner.curMat)}static transform_drawNodes(sprite,context,x,y){var textLastRender=sprite._getBit(Const.DRAWCALL_OPTIMIZE)&&context.drawCallOptimize(!0),style=sprite._style;context.saveTransform(LayaGLQuickRunner.curMat),context.transformByMatrix(sprite.transform,x,y),x=-style.pivotX,y=-style.pivotY;var ele,childs=sprite._children,n=childs.length;if(style.viewport){var _x,_y,rect=style.viewport,left=rect.x,top=rect.y,right=rect.right,bottom=rect.bottom;for(i=0;i<n;++i)(ele=childs[i])._visible&&(_x=ele._x)<right&&_x+ele.width>left&&(_y=ele._y)<bottom&&_y+ele.height>top&&ele.render(context,x,y)}else for(var i=0;i<n;++i)(ele=childs[i])._visible&&ele.render(context,x,y);context.restoreTransform(LayaGLQuickRunner.curMat),textLastRender&&context.drawCallOptimize(!1)}static drawLayaGL_drawNodes(sprite,context,x,y){var textLastRender=sprite._getBit(Const.DRAWCALL_OPTIMIZE)&&context.drawCallOptimize(!0),style=sprite._style;x-=style.pivotX,y-=style.pivotY,sprite._graphics&&sprite._graphics._render(sprite,context,x,y);var ele,childs=sprite._children,n=childs.length;if(style.viewport){var _x,_y,rect=style.viewport,left=rect.x,top=rect.y,right=rect.right,bottom=rect.bottom;for(i=0;i<n;++i)(ele=childs[i])._visible&&(_x=ele._x)<right&&_x+ele.width>left&&(_y=ele._y)<bottom&&_y+ele.height>top&&ele.render(context,x,y)}else for(var i=0;i<n;++i)(ele=childs[i])._visible&&ele.render(context,x,y);textLastRender&&context.drawCallOptimize(!1)}}LayaGLQuickRunner.map={},LayaGLQuickRunner.curMat=new Matrix;class RenderSprite{constructor(type,next){if(LayaGLQuickRunner.map[type])return this._fun=LayaGLQuickRunner.map[type],void(this._next=RenderSprite.NORENDER);switch(this._next=next||RenderSprite.NORENDER,type){case 0:return void(this._fun=this._no);case SpriteConst.ALPHA:return void(this._fun=this._alpha);case SpriteConst.TRANSFORM:return void(this._fun=this._transform);case SpriteConst.BLEND:return void(this._fun=this._blend);case SpriteConst.CANVAS:return void(this._fun=this._canvas);case SpriteConst.MASK:return void(this._fun=this._mask);case SpriteConst.CLIP:return void(this._fun=this._clip);case SpriteConst.STYLE:return void(this._fun=this._style);case SpriteConst.GRAPHICS:return void(this._fun=this._graphics);case SpriteConst.CHILDS:return void(this._fun=this._children);case SpriteConst.CUSTOM:return void(this._fun=this._custom);case SpriteConst.TEXTURE:return void(this._fun=this._texture);case SpriteConst.FILTERS:return void(this._fun=Filter._filter);case RenderSprite.INIT:return void(this._fun=RenderSprite._initRenderFun)}this.onCreate(type)}static __init__(){var i,len,initRender;for(LayaGLQuickRunner.__init__(),initRender=new RenderSprite(RenderSprite.INIT,null),len=RenderSprite.renders.length=2*SpriteConst.CHILDS,i=0;i<len;i++)RenderSprite.renders[i]=initRender;RenderSprite.renders[0]=new RenderSprite(0,null)}static _initRenderFun(sprite,context,x,y){var type=sprite._renderType;(RenderSprite.renders[type]=RenderSprite._getTypeRender(type))._fun(sprite,context,x,y)}static _getTypeRender(type){if(LayaGLQuickRunner.map[type])return new RenderSprite(type,null);for(var rst=null,tType=SpriteConst.CHILDS;tType>0;)tType&type&&(rst=new RenderSprite(tType,rst)),tType>>=1;return rst}onCreate(type){}_style(sprite,context,x,y){var style=sprite._style;null!=style.render&&style.render(sprite,context,x,y);var next=this._next;next._fun.call(next,sprite,context,x,y)}_no(sprite,context,x,y){}_custom(sprite,context,x,y){sprite.customRender(context,x,y),this._next._fun.call(this._next,sprite,context,x-sprite.pivotX,y-sprite.pivotY)}_clip(sprite,context,x,y){var next=this._next;if(next!=RenderSprite.NORENDER){var r=sprite._style.scrollRect;context.save(),context.clipRect(x,y,r.width,r.height),next._fun.call(next,sprite,context,x-r.x,y-r.y),context.restore()}}_texture(sprite,context,x,y){var tex=sprite.texture;tex._getSource()&&context.drawTexture(tex,x-sprite.pivotX+tex.offsetX,y-sprite.pivotY+tex.offsetY,sprite._width||tex.width,sprite._height||tex.height);var next=this._next;next!=RenderSprite.NORENDER&&next._fun.call(next,sprite,context,x,y)}_graphics(sprite,context,x,y){var style=sprite._style,g=sprite._graphics;g&&g._render(sprite,context,x-style.pivotX,y-style.pivotY);var next=this._next;next!=RenderSprite.NORENDER&&next._fun.call(next,sprite,context,x,y)}_image(sprite,context,x,y){var style=sprite._style;context.drawTexture2(x,y,style.pivotX,style.pivotY,sprite.transform,sprite._graphics._one)}_image2(sprite,context,x,y){var style=sprite._style;context.drawTexture2(x,y,style.pivotX,style.pivotY,sprite.transform,sprite._graphics._one)}_alpha(sprite,context,x,y){var alpha;if((alpha=sprite._style.alpha)>.01||sprite._needRepaint()){var temp=context.globalAlpha;context.globalAlpha*=alpha;var next=this._next;next._fun.call(next,sprite,context,x,y),context.globalAlpha=temp}}_transform(sprite,context,x,y){var transform=sprite.transform,_next=this._next;sprite._style;transform&&_next!=RenderSprite.NORENDER?(context.save(),context.transform(transform.a,transform.b,transform.c,transform.d,transform.tx+x,transform.ty+y),_next._fun.call(_next,sprite,context,0,0),context.restore()):_next!=RenderSprite.NORENDER&&_next._fun.call(_next,sprite,context,x,y)}_children(sprite,context,x,y){var ele,style=sprite._style,childs=sprite._children,n=childs.length;x-=sprite.pivotX,y-=sprite.pivotY;var textLastRender=sprite._getBit(Const.DRAWCALL_OPTIMIZE)&&context.drawCallOptimize(!0);if(style.viewport){var _x,_y,rect=style.viewport,left=rect.x,top=rect.y,right=rect.right,bottom=rect.bottom;for(i=0;i<n;++i)(ele=childs[i])._visible&&(_x=ele._x)<right&&_x+ele.width>left&&(_y=ele._y)<bottom&&_y+ele.height>top&&ele.render(context,x,y)}else for(var i=0;i<n;++i)(ele=childs[i])._visible&&ele.render(context,x,y);textLastRender&&context.drawCallOptimize(!1)}_canvas(sprite,context,x,y){var _cacheStyle=sprite._cacheStyle,_next=this._next;if(_cacheStyle.enableCanvasRender){"bitmap"===_cacheStyle.cacheAs?Stat.canvasBitmap++:Stat.canvasNormal++;var cacheNeedRebuild=!1,textNeedRestore=!1;if(_cacheStyle.canvas){var canv=_cacheStyle.canvas,charRIs=(canv.context,canv.touches);if(charRIs)for(var ci=0;ci<charRIs.length;ci++)if(charRIs[ci].deleted){textNeedRestore=!0;break}cacheNeedRebuild=canv.isCacheValid&&!canv.isCacheValid()}if(sprite._needRepaint()||!_cacheStyle.canvas||textNeedRestore||cacheNeedRebuild||ILaya.stage.isGlobalRepaint())if("normal"===_cacheStyle.cacheAs){if(context._targets)return void _next._fun.call(_next,sprite,context,x,y);this._canvas_webgl_normal_repaint(sprite,context)}else this._canvas_repaint(sprite,context,x,y);var tRec=_cacheStyle.cacheRect;context.drawCanvas(_cacheStyle.canvas,x+tRec.x,y+tRec.y,tRec.width,tRec.height)}else _next._fun.call(_next,sprite,context,x,y)}_canvas_repaint(sprite,context,x,y){var tx,left,top,tRec,w,h,scaleX,scaleY,scaleInfo,_cacheStyle=sprite._cacheStyle,_next=this._next,canvas=_cacheStyle.canvas,tCacheType=_cacheStyle.cacheAs;if(scaleX=(scaleInfo=_cacheStyle._calculateCacheRect(sprite,tCacheType,x,y)).x,scaleY=scaleInfo.y,w=(tRec=_cacheStyle.cacheRect).width*scaleX,h=tRec.height*scaleY,left=tRec.x,top=tRec.y,"bitmap"===tCacheType&&(w>2048||h>2048))return console.warn("cache bitmap size larger than 2048,cache ignored"),_cacheStyle.releaseContext(),void _next._fun.call(_next,sprite,context,x,y);if(canvas||(_cacheStyle.createContext(),canvas=_cacheStyle.canvas),(tx=canvas.context).sprite=sprite,(canvas.width!=w||canvas.height!=h)&&canvas.size(w,h),"bitmap"===tCacheType?tx.asBitmap=!0:"normal"===tCacheType&&(tx.asBitmap=!1),tx.clear(),1!=scaleX||1!=scaleY){var ctx=tx;ctx.save(),ctx.scale(scaleX,scaleY),_next._fun.call(_next,sprite,tx,-left,-top),ctx.restore(),sprite._applyFilters()}else ctx=tx,_next._fun.call(_next,sprite,tx,-left,-top),sprite._applyFilters();_cacheStyle.staticCache&&(_cacheStyle.reCache=!1),Stat.canvasReCache++}_canvas_webgl_normal_repaint(sprite,context){var _cacheStyle=sprite._cacheStyle,_next=this._next,canvas=_cacheStyle.canvas,tCacheType=_cacheStyle.cacheAs;_cacheStyle._calculateCacheRect(sprite,tCacheType,0,0);canvas||(canvas=_cacheStyle.canvas=new WebGLCacheAsNormalCanvas(context,sprite));var tx=canvas.context;canvas.startRec(),_next._fun.call(_next,sprite,tx,sprite.pivotX,sprite.pivotY),sprite._applyFilters(),Stat.canvasReCache++,canvas.endRec()}_blend(sprite,context,x,y){var style=sprite._style,next=this._next;style.blendMode?(context.save(),context.globalCompositeOperation=style.blendMode,next._fun.call(next,sprite,context,x,y),context.restore()):next._fun.call(next,sprite,context,x,y)}_mask(sprite,context,x,y){var next=this._next,mask=sprite.mask,ctx=context;if(mask){ctx.save();var preBlendMode=ctx.globalCompositeOperation,tRect=new Rectangle;if(tRect.copyFrom(mask.getBounds()),tRect.width=Math.round(tRect.width),tRect.height=Math.round(tRect.height),tRect.x=Math.round(tRect.x),tRect.y=Math.round(tRect.y),tRect.width>0&&tRect.height>0){var w=tRect.width,h=tRect.height,tmpRT=WebGLRTMgr.getRT(w,h);ctx.breakNextMerge(),ctx.pushRT(),ctx.addRenderObject(SubmitCMD.create([ctx,tmpRT,w,h],RenderSprite.tmpTarget,this)),mask.render(ctx,-tRect.x,-tRect.y),ctx.breakNextMerge(),ctx.popRT(),ctx.save(),ctx.clipRect(x+tRect.x-sprite.getStyle().pivotX,y+tRect.y-sprite.getStyle().pivotY,w,h),next._fun.call(next,sprite,ctx,x,y),ctx.restore(),preBlendMode=ctx.globalCompositeOperation,ctx.addRenderObject(SubmitCMD.create(["mask"],RenderSprite.setBlendMode,this));var shaderValue=Value2D.create(ShaderDefines2D.TEXTURE2D,0),uv=Texture.INV_UV;ctx.drawTarget(tmpRT,x+tRect.x-sprite.getStyle().pivotX,y+tRect.y-sprite.getStyle().pivotY,w,h,Matrix.TEMP.identity(),shaderValue,uv,6),ctx.addRenderObject(SubmitCMD.create([tmpRT],RenderSprite.recycleTarget,this)),ctx.addRenderObject(SubmitCMD.create([preBlendMode],RenderSprite.setBlendMode,this))}ctx.restore()}else next._fun.call(next,sprite,context,x,y)}static tmpTarget(ctx,rt,w,h){rt.start(),rt.clear(0,0,0,0)}static recycleTarget(rt){WebGLRTMgr.releaseRT(rt)}static setBlendMode(blendMode){var gl=WebGLContext.mainContext;BlendMode.targetFns[BlendMode.TOINT[blendMode]](gl)}}RenderSprite.INIT=69905,RenderSprite.renders=[],RenderSprite.NORENDER=new RenderSprite(0,null),RenderSprite.tempUV=new Array(8);class Sprite extends Node{constructor(){super(),this._x=0,this._y=0,this._width=0,this._height=0,this._visible=!0,this._mouseState=0,this._zOrder=0,this._renderType=0,this._transform=null,this._tfChanged=!1,this._repaint=SpriteConst.REPAINT_NONE,this._texture=null,this._style=SpriteStyle.EMPTY,this._cacheStyle=CacheStyle.EMPTY,this._boundStyle=null,this._graphics=null,this.mouseThrough=!1,this.autoSize=!1,this.hitTestPrior=!1}destroy(destroyChild=!0){super.destroy(destroyChild),this._style&&this._style.recover(),this._cacheStyle&&this._cacheStyle.recover(),this._boundStyle&&this._boundStyle.recover(),this._style=null,this._cacheStyle=null,this._boundStyle=null,this._transform=null,this._graphics&&this._graphics.autoDestroy&&this._graphics.destroy(),this._graphics=null,this.texture=null}updateZOrder(){Utils.updateOrder(this._children)&&this.repaint()}_getBoundsStyle(){return this._boundStyle||(this._boundStyle=BoundsStyle.create()),this._boundStyle}_setCustomRender(){}set customRenderEnable(b){b&&(this._renderType|=SpriteConst.CUSTOM,this._setRenderType(this._renderType),this._setCustomRender())}get cacheAs(){return this._cacheStyle.cacheAs}_setCacheAs(value){}set cacheAs(value){value!==this._cacheStyle.userSetCache&&(this.mask&&"normal"===value||(this._setCacheAs(value),this._getCacheStyle().userSetCache=value,this._checkCanvasEnable(),this.repaint()))}_checkCanvasEnable(){var tEnable=this._cacheStyle.needEnableCanvasRender();this._getCacheStyle().enableCanvasRender=tEnable,tEnable?(this._cacheStyle.needBitmapCache()?this._cacheStyle.cacheAs="bitmap":this._cacheStyle.cacheAs=this._cacheStyle.userSetCache,this._cacheStyle.reCache=!0,this._renderType|=SpriteConst.CANVAS):(this._cacheStyle.cacheAs="none",this._cacheStyle.releaseContext(),this._renderType&=~SpriteConst.CANVAS),this._setCacheAs(this._cacheStyle.cacheAs),this._setRenderType(this._renderType)}get staticCache(){return this._cacheStyle.staticCache}set staticCache(value){this._getCacheStyle().staticCache=value,value||this.reCache()}reCache(){this._cacheStyle.reCache=!0,this._repaint|=SpriteConst.REPAINT_CACHE}getRepaint(){return this._repaint}_setX(value){this._x=value}_setY(value){this._y=value}_setWidth(texture,value){}_setHeight(texture,value){}get x(){return this._x}set x(value){if(!this.destroyed&&this._x!==value){this._setX(value),this.parentRepaint(SpriteConst.REPAINT_CACHE);var p=this._cacheStyle.maskParent;p&&p.repaint(SpriteConst.REPAINT_CACHE)}}get y(){return this._y}set y(value){if(!this.destroyed&&this._y!==value){this._setY(value),this.parentRepaint(SpriteConst.REPAINT_CACHE);var p=this._cacheStyle.maskParent;p&&p.repaint(SpriteConst.REPAINT_CACHE)}}get width(){return this.get_width()}set width(value){this.set_width(value)}set_width(value){this._width!==value&&(this._width=value,this._setWidth(this.texture,value),this._setTranformChange())}get_width(){return this.autoSize?this.texture?this.texture.width:this._graphics||0!==this._children.length?this.getSelfBounds().width:0:this._width||(this.texture?this.texture.width:0)}get height(){return this.get_height()}set height(value){this.set_height(value)}set_height(value){this._height!==value&&(this._height=value,this._setHeight(this.texture,value),this._setTranformChange())}get_height(){return this.autoSize?this.texture?this.texture.height:this._graphics||0!==this._children.length?this.getSelfBounds().height:0:this._height||(this.texture?this.texture.height:0)}get displayWidth(){return this.width*this.scaleX}get displayHeight(){return this.height*this.scaleY}setSelfBounds(bound){this._getBoundsStyle().userBounds=bound}getBounds(){return this._getBoundsStyle().bounds=Rectangle._getWrapRec(this._boundPointsToParent())}getSelfBounds(){return this._boundStyle&&this._boundStyle.userBounds?this._boundStyle.userBounds:this._graphics||0!==this._children.length||this._texture?this._getBoundsStyle().bounds=Rectangle._getWrapRec(this._getBoundPointsM(!1)):Rectangle.TEMP.setTo(0,0,this.width,this.height)}_boundPointsToParent(ifRotate=!1){var pX=0,pY=0;this._style&&(pX=this.pivotX,pY=this.pivotY,ifRotate=ifRotate||0!==this._style.rotation,this._style.scrollRect&&(pX+=this._style.scrollRect.x,pY+=this._style.scrollRect.y));var pList=this._getBoundPointsM(ifRotate);if(!pList||pList.length<1)return pList;if(8!=pList.length&&(pList=ifRotate?GrahamScan.scanPList(pList):Rectangle._getWrapRec(pList,Rectangle.TEMP)._getBoundPoints()),!this.transform)return Utils.transPointList(pList,this._x-pX,this._y-pY),pList;var i,tPoint=Point.TEMP,len=pList.length;for(i=0;i<len;i+=2)tPoint.x=pList[i],tPoint.y=pList[i+1],this.toParentPoint(tPoint),pList[i]=tPoint.x,pList[i+1]=tPoint.y;return pList}getGraphicBounds(realSize=!1){return this._graphics?this._graphics.getBounds(realSize):Rectangle.TEMP.setTo(0,0,0,0)}_getBoundPointsM(ifRotate=!1){if(this._boundStyle&&this._boundStyle.userBounds)return this._boundStyle.userBounds._getBoundPoints();if(this._boundStyle||this._getBoundsStyle(),this._boundStyle.temBM||(this._boundStyle.temBM=[]),this._style.scrollRect){var rst=Utils.clearArray(this._boundStyle.temBM),rec=Rectangle.TEMP;return rec.copyFrom(this._style.scrollRect),Utils.concatArray(rst,rec._getBoundPoints()),rst}var pList,child,cList,__childs;this._graphics?pList=this._graphics.getBoundPoints():(pList=Utils.clearArray(this._boundStyle.temBM),this._texture&&((rec=Rectangle.TEMP).setTo(0,0,this.width||this._texture.width,this.height||this._texture.height),Utils.concatArray(pList,rec._getBoundPoints())));for(var i=0,n=(__childs=this._children).length;i<n;i++)(child=__childs[i])instanceof Sprite&&!0===child._visible&&(cList=child._boundPointsToParent(ifRotate))&&(pList=pList?Utils.concatArray(pList,cList):cList);return pList}_getCacheStyle(){return this._cacheStyle===CacheStyle.EMPTY&&(this._cacheStyle=CacheStyle.create()),this._cacheStyle}getStyle(){return this._style===SpriteStyle.EMPTY&&(this._style=SpriteStyle.create()),this._style}setStyle(value){this._style=value}get scaleX(){return this._style.scaleX}set scaleX(value){this.set_scaleX(value)}_setScaleX(value){this._style.scaleX=value}get scaleY(){return this._style.scaleY}set scaleY(value){this.set_scaleY(value)}_setScaleY(value){this._style.scaleY=value}set_scaleX(value){this.getStyle().scaleX!==value&&(this._setScaleX(value),this._setTranformChange())}get_scaleX(){return this._style.scaleX}set_scaleY(value){this.getStyle().scaleY!==value&&(this._setScaleY(value),this._setTranformChange())}get_scaleY(){return this._style.scaleY}get rotation(){return this._style.rotation}set rotation(value){this.getStyle().rotation!==value&&(this._setRotation(value),this._setTranformChange())}_setRotation(value){this._style.rotation=value}get skewX(){return this._style.skewX}set skewX(value){this.getStyle().skewX!==value&&(this._setSkewX(value),this._setTranformChange())}_setSkewX(value){this._style.skewX=value}get skewY(){return this._style.skewY}set skewY(value){this.getStyle().skewY!==value&&(this._setSkewY(value),this._setTranformChange())}_setSkewY(value){this._style.skewY=value}_createTransform(){return Matrix.create()}_adjustTransform(){this._tfChanged=!1;var style=this._style,sx=style.scaleX,sy=style.scaleY,sskx=style.skewX,ssky=style.skewY,rot=style.rotation,m=this._transform||(this._transform=this._createTransform());if(rot||1!==sx||1!==sy||0!==sskx||0!==ssky){m._bTransform=!0;var skx=.0174532922222222*(rot-sskx),sky=.0174532922222222*(rot+ssky),cx=Math.cos(sky),ssx=Math.sin(sky),cy=Math.sin(skx),ssy=Math.cos(skx);m.a=sx*cx,m.b=sx*ssx,m.c=-sy*cy,m.d=sy*ssy,m.tx=m.ty=0}else m.identity(),this._renderType&=~SpriteConst.TRANSFORM,this._setRenderType(this._renderType);return m}_setTransform(value){}get transform(){return this._tfChanged?this._adjustTransform():this._transform}set transform(value){this.set_transform(value)}get_transform(){return this._tfChanged?this._adjustTransform():this._transform}set_transform(value){this._tfChanged=!1;var m=this._transform||(this._transform=this._createTransform());value.copyTo(m),this._setTransform(m),value&&(this._x=m.tx,this._y=m.ty,m.tx=m.ty=0),value?this._renderType|=SpriteConst.TRANSFORM:this._renderType&=~SpriteConst.TRANSFORM,this._setRenderType(this._renderType),this.parentRepaint()}_setPivotX(value){this.getStyle().pivotX=value}_getPivotX(){return this._style.pivotX}_setPivotY(value){this.getStyle().pivotY=value}_getPivotY(){return this._style.pivotY}get pivotX(){return this._getPivotX()}set pivotX(value){this._setPivotX(value),this.repaint()}get pivotY(){return this._getPivotY()}set pivotY(value){this._setPivotY(value),this.repaint()}_setAlpha(value){this._style.alpha!==value&&(this.getStyle().alpha=value,1!==value?this._renderType|=SpriteConst.ALPHA:this._renderType&=~SpriteConst.ALPHA,this._setRenderType(this._renderType),this.parentRepaint())}_getAlpha(){return this._style.alpha}get alpha(){return this._getAlpha()}set alpha(value){value=value<0?0:value>1?1:value,this._setAlpha(value)}get visible(){return this.get_visible()}set visible(value){this.set_visible(value)}get_visible(){return this._visible}set_visible(value){this._visible!==value&&(this._visible=value,this.parentRepaint(SpriteConst.REPAINT_ALL))}_setBlendMode(value){}get blendMode(){return this._style.blendMode}set blendMode(value){this._setBlendMode(value),this.getStyle().blendMode=value,value&&"source-over"!=value?this._renderType|=SpriteConst.BLEND:this._renderType&=~SpriteConst.BLEND,this._setRenderType(this._renderType),this.parentRepaint()}get graphics(){return this._graphics||(this.graphics=new Graphics,this._graphics.autoDestroy=!0),this._graphics}_setGraphics(value){}_setGraphicsCallBack(){}set graphics(value){this._graphics&&(this._graphics._sp=null),this._graphics=value,value?(this._setGraphics(value),this._renderType|=SpriteConst.GRAPHICS,value._sp=this):this._renderType&=~SpriteConst.GRAPHICS,this._setRenderType(this._renderType),this.repaint()}get scrollRect(){return this._style.scrollRect}_setScrollRect(value){}set scrollRect(value){this.getStyle().scrollRect=value,this._setScrollRect(value),this.repaint(),value?this._renderType|=SpriteConst.CLIP:this._renderType&=~SpriteConst.CLIP,this._setRenderType(this._renderType)}pos(x,y,speedMode=!1){if(this._x!==x||this._y!==y){if(this.destroyed)return this;if(speedMode){this._setX(x),this._setY(y),this.parentRepaint(SpriteConst.REPAINT_CACHE);var p=this._cacheStyle.maskParent;p&&p.repaint(SpriteConst.REPAINT_CACHE)}else this.x=x,this.y=y}return this}pivot(x,y){return this.pivotX=x,this.pivotY=y,this}size(width,height){return this.width=width,this.height=height,this}scale(scaleX,scaleY,speedMode=!1){var style=this.getStyle();if(style.scaleX!=scaleX||style.scaleY!=scaleY){if(this.destroyed)return this;speedMode?(this._setScaleX(scaleX),this._setScaleY(scaleY),this._setTranformChange()):(this.scaleX=scaleX,this.scaleY=scaleY)}return this}skew(skewX,skewY){return this.skewX=skewX,this.skewY=skewY,this}render(ctx,x,y){RenderSprite.renders[this._renderType]._fun(this,ctx,x+this._x,y+this._y),this._repaint=0}drawToCanvas(canvasWidth,canvasHeight,offsetX,offsetY){return Sprite.drawToCanvas(this,this._renderType,canvasWidth,canvasHeight,offsetX,offsetY)}drawToTexture(canvasWidth,canvasHeight,offsetX,offsetY){return Sprite.drawToTexture(this,this._renderType,canvasWidth,canvasHeight,offsetX,offsetY)}drawToTexture3D(offx,offy,tex){throw"not implement"}customRender(context,x,y){this._repaint=SpriteConst.REPAINT_ALL}_applyFilters(){}get filters(){return this._cacheStyle.filters}_setColorFilter(value){}set filters(value){value&&0===value.length&&(value=null),this._cacheStyle.filters!=value&&(this._getCacheStyle().filters=value?value.slice():null,value&&value.length?(this._setColorFilter(value[0]),this._renderType|=SpriteConst.FILTERS):(this._setColorFilter(null),this._renderType&=~SpriteConst.FILTERS),this._setRenderType(this._renderType),value&&value.length>0?(this._getBit(Const.DISPLAY)||this._setBitUp(Const.DISPLAY),1==value.length&&value[0]instanceof ColorFilter||(this._getCacheStyle().cacheForFilters=!0,this._checkCanvasEnable())):this._cacheStyle.cacheForFilters&&(this._cacheStyle.cacheForFilters=!1,this._checkCanvasEnable()),this._getCacheStyle().hasGlowFilter=this._isHaveGlowFilter(),this.repaint())}_isHaveGlowFilter(){var i,len;if(this.filters)for(i=0;i<this.filters.length;i++)if(this.filters[i].type==Filter.GLOW)return!0;for(i=0,len=this._children.length;i<len;i++)if(this._children[i]._isHaveGlowFilter())return!0;return!1}localToGlobal(point,createNewPoint=!1,globalNode=null){!0===createNewPoint&&(point=new Point(point.x,point.y));var ele=this;for(globalNode=globalNode||ILaya.stage;ele&&!ele.destroyed&&ele!=globalNode;)point=ele.toParentPoint(point),ele=ele.parent;return point}globalToLocal(point,createNewPoint=!1,globalNode=null){createNewPoint&&(point=new Point(point.x,point.y));var ele=this,list=[];for(globalNode=globalNode||ILaya.stage;ele&&!ele.destroyed&&ele!=globalNode;)list.push(ele),ele=ele.parent;for(var i=list.length-1;i>=0;)point=(ele=list[i]).fromParentPoint(point),i--;return point}toParentPoint(point){if(!point)return point;point.x-=this.pivotX,point.y-=this.pivotY,this.transform&&this._transform.transformPoint(point),point.x+=this._x,point.y+=this._y;var scroll=this._style.scrollRect;return scroll&&(point.x-=scroll.x,point.y-=scroll.y),point}fromParentPoint(point){if(!point)return point;point.x-=this._x,point.y-=this._y;var scroll=this._style.scrollRect;return scroll&&(point.x+=scroll.x,point.y+=scroll.y),this.transform&&this._transform.invertTransformPoint(point),point.x+=this.pivotX,point.y+=this.pivotY,point}fromStagePoint(point){return point}on(type,caller,listener,args=null){return 1!==this._mouseState&&this.isMouseEvent(type)?(this.mouseEnabled=!0,this._setBit(Const.HAS_MOUSE,!0),this._parent&&this._onDisplay(),this._createListener(type,caller,listener,args,!1)):super.on(type,caller,listener,args)}once(type,caller,listener,args=null){return 1!==this._mouseState&&this.isMouseEvent(type)?(this.mouseEnabled=!0,this._setBit(Const.HAS_MOUSE,!0),this._parent&&this._onDisplay(),this._createListener(type,caller,listener,args,!0)):super.once(type,caller,listener,args)}_onDisplay(v){if(1!==this._mouseState){var ele=this;for(ele=ele.parent;ele&&1!==ele._mouseState&&!ele._getBit(Const.HAS_MOUSE);)ele.mouseEnabled=!0,ele._setBit(Const.HAS_MOUSE,!0),ele=ele.parent}}_setParent(value){super._setParent(value),value&&this._getBit(Const.HAS_MOUSE)&&this._onDisplay()}loadImage(url,complete=null){if(url){var tex=ILaya.Loader.getRes(url);tex||((tex=new Texture).load(url),ILaya.Loader.cacheRes(url,tex)),this.texture=tex,tex.getIsReady()?loaded.call(this):tex.once(Event.READY,this,loaded)}else this.texture=null,loaded.call(this);function loaded(){this.repaint(SpriteConst.REPAINT_ALL),complete&&complete.run()}return this}static fromImage(url){return(new Sprite).loadImage(url)}repaint(type=SpriteConst.REPAINT_CACHE){this._repaint&type||(this._repaint|=type,this.parentRepaint(type)),this._cacheStyle&&this._cacheStyle.maskParent&&this._cacheStyle.maskParent.repaint(type)}_needRepaint(){return this._repaint&SpriteConst.REPAINT_CACHE&&this._cacheStyle.enableCanvasRender&&this._cacheStyle.reCache}_childChanged(child=null){this._children.length?this._renderType|=SpriteConst.CHILDS:this._renderType&=~SpriteConst.CHILDS,this._setRenderType(this._renderType),child&&this._getBit(Const.HAS_ZORDER)&&ILaya.systemTimer.callLater(this,this.updateZOrder),this.repaint(SpriteConst.REPAINT_ALL)}parentRepaint(type=SpriteConst.REPAINT_CACHE){var p=this._parent;!p||p._repaint&type||(p._repaint|=type,p.parentRepaint(type))}get stage(){return ILaya.stage}get hitArea(){return this._style.hitArea}set hitArea(value){this.getStyle().hitArea=value}_setMask(value){}get mask(){return this._cacheStyle.mask}set mask(value){value&&this.mask&&this.mask._cacheStyle.maskParent||(this._getCacheStyle().mask=value,this._setMask(value),this._checkCanvasEnable(),value?value._getCacheStyle().maskParent=this:this.mask&&(this.mask._getCacheStyle().maskParent=null),this._renderType|=SpriteConst.MASK,this._setRenderType(this._renderType),this.parentRepaint(SpriteConst.REPAINT_ALL))}get mouseEnabled(){return this._mouseState>1}set mouseEnabled(value){this._mouseState=value?2:1}startDrag(area=null,hasInertia=!1,elasticDistance=0,elasticBackTime=300,data=null,disableMouseEvent=!1,ratio=.92){this._style.dragging||(this.getStyle().dragging=new ILaya.Dragging),this._style.dragging.start(this,area,hasInertia,elasticDistance,elasticBackTime,data,disableMouseEvent,ratio)}stopDrag(){this._style.dragging&&this._style.dragging.stop()}_setDisplay(value){value||this._cacheStyle&&(this._cacheStyle.releaseContext(),this._cacheStyle.releaseFilterCache(),this._cacheStyle.hasGlowFilter&&(this._cacheStyle.hasGlowFilter=!1)),super._setDisplay(value)}hitTestPoint(x,y){var point=this.globalToLocal(Point.TEMP.setTo(x,y));return x=point.x,y=point.y,(this._style.hitArea?this._style.hitArea:this._width>0&&this._height>0?Rectangle.TEMP.setTo(0,0,this._width,this._height):this.getSelfBounds()).contains(x,y)}getMousePoint(){return this.globalToLocal(Point.TEMP.setTo(ILaya.stage.mouseX,ILaya.stage.mouseY))}get globalScaleX(){for(var scale=1,ele=this;ele&&ele!==ILaya.stage;)scale*=ele.scaleX,ele=ele.parent;return scale}get globalRotation(){for(var angle=0,ele=this;ele&&ele!==ILaya.stage;)angle+=ele.rotation,ele=ele.parent;return angle}get globalScaleY(){for(var scale=1,ele=this;ele&&ele!==ILaya.stage;)scale*=ele.scaleY,ele=ele.parent;return scale}get mouseX(){return this.getMousePoint().x}get mouseY(){return this.getMousePoint().y}get zOrder(){return this._zOrder}set zOrder(value){this._zOrder!=value&&(this._zOrder=value,this._parent&&(value&&this._parent._setBit(Const.HAS_ZORDER,!0),ILaya.systemTimer.callLater(this._parent,this.updateZOrder)))}get texture(){return this._texture}_setTexture(value){}set texture(value){"string"==typeof value?this.loadImage(value):this._texture!=value&&(this._texture&&this._texture._removeReference(),this._texture=value,value&&value._addReference(),this._setTexture(value),this._setWidth(this._texture,this.width),this._setHeight(this._texture,this.height),value?this._renderType|=SpriteConst.TEXTURE:this._renderType&=~SpriteConst.TEXTURE,this._setRenderType(this._renderType),this.repaint())}get viewport(){return this._style.viewport}set viewport(value){var recArr;"string"==typeof value&&((recArr=value.split(",")).length>3&&(value=new Rectangle(parseFloat(recArr[0]),parseFloat(recArr[1]),parseFloat(recArr[2]),parseFloat(recArr[3]))));this.getStyle().viewport=value}_setRenderType(type){}_setTranformChange(){this._tfChanged=!0,this._renderType|=SpriteConst.TRANSFORM,this.parentRepaint(SpriteConst.REPAINT_CACHE)}_setBgStyleColor(x,y,width,height,fillColor){}_setBorderStyleColor(x,y,width,height,fillColor,borderWidth){}captureMouseEvent(exclusive){ILaya.MouseManager.instance.setCapture(this,exclusive)}releaseMouseEvent(){ILaya.MouseManager.instance.releaseCapture()}set drawCallOptimize(value){this._setBit(Const.DRAWCALL_OPTIMIZE,value)}get drawCallOptimize(){return this._getBit(Const.DRAWCALL_OPTIMIZE)}}Sprite.drawToCanvas=function(sprite,_renderType,canvasWidth,canvasHeight,offsetX,offsetY){offsetX-=sprite.x,offsetY-=sprite.y,offsetX|=0,offsetY|=0,canvasWidth|=0,canvasHeight|=0;var ctx=new Context;ctx.size(canvasWidth,canvasHeight),ctx.asBitmap=!0,ctx._targets.start(),RenderSprite.renders[_renderType]._fun(sprite,ctx,offsetX,offsetY),ctx.flush(),ctx._targets.end(),ctx._targets.restore();var dt=ctx._targets.getData(0,0,canvasWidth,canvasHeight);ctx.destroy();for(var imgdata=new ImageData(canvasWidth,canvasHeight),lineLen=4*canvasWidth,dst=imgdata.data,y=canvasHeight-1,off=y*lineLen,srcoff=0;y>=0;y--)dst.set(dt.subarray(srcoff,srcoff+lineLen),off),off-=lineLen,srcoff+=lineLen;var canv=new HTMLCanvas(!0);return canv.size(canvasWidth,canvasHeight),canv.getContext("2d").putImageData(imgdata,0,0),canv},Sprite.drawToTexture=function(sprite,_renderType,canvasWidth,canvasHeight,offsetX,offsetY){offsetX-=sprite.x,offsetY-=sprite.y,offsetX|=0,offsetY|=0,canvasWidth|=0,canvasHeight|=0;var ctx=new Context;ctx.size(canvasWidth,canvasHeight),ctx.asBitmap=!0,ctx._targets.start(),RenderSprite.renders[_renderType]._fun(sprite,ctx,offsetX,offsetY),ctx.flush(),ctx._targets.end(),ctx._targets.restore();var rtex=new Texture(ctx._targets,Texture.INV_UV);return ctx.destroy(!0),rtex},ClassUtils.regClass("laya.display.Sprite",Sprite),ClassUtils.regClass("Laya.Sprite",Sprite);class TextStyle extends SpriteStyle{constructor(){super(...arguments),this.italic=!1}reset(){return super.reset(),this.italic=!1,this.align="left",this.wordWrap=!1,this.leading=0,this.padding=[0,0,0,0],this.bgColor=null,this.borderColor=null,this.asPassword=!1,this.stroke=0,this.strokeColor="#000000",this.bold=!1,this.underline=!1,this.underlineColor=null,this.currBitmapFont=null,this}recover(){this!==TextStyle.EMPTY&&Pool.recover("TextStyle",this.reset())}static create(){return Pool.getItemByClass("TextStyle",TextStyle)}render(sprite,context,x,y){(this.bgColor||this.borderColor)&&context.drawRect(x,y,sprite.width,sprite.height,this.bgColor,this.borderColor,1)}}TextStyle.EMPTY=new TextStyle;class Text extends Sprite{constructor(){super(),this._textWidth=0,this._textHeight=0,this._lines=[],this._lineWidths=[],this._startX=0,this._startY=0,this._charSize={},this._valign="top",this._fontSize=Text.defaultFontSize,this._font=Text.defaultFont,this._color="#000000",this._singleCharRender=!1,this.overflow=Text.VISIBLE,this._style=TextStyle.EMPTY}static defaultFontStr(){return Text.defaultFontSize+"px "+Text.defaultFont}getStyle(){return this._style===TextStyle.EMPTY&&(this._style=TextStyle.create()),this._style}_getTextStyle(){return this._style===TextStyle.EMPTY&&(this._style=TextStyle.create()),this._style}static registerBitmapFont(name,bitmapFont){Text._bitmapFonts||(Text._bitmapFonts={}),Text._bitmapFonts[name]=bitmapFont}static unregisterBitmapFont(name,destroy=!0){if(Text._bitmapFonts&&Text._bitmapFonts[name]){var tBitmapFont=Text._bitmapFonts[name];destroy&&tBitmapFont.destroy(),delete Text._bitmapFonts[name]}}destroy(destroyChild=!0){super.destroy(destroyChild),this._clipPoint=null,this._lines=null,this._lineWidths=null,this._words&&this._words.forEach(function(w){w.cleanCache()}),this._words=null,this._charSize=null}_getBoundPointsM(ifRotate=!1){var rec=Rectangle.TEMP;return rec.setTo(0,0,this.width,this.height),rec._getBoundPoints()}getGraphicBounds(realSize=!1){var rec=Rectangle.TEMP;return rec.setTo(0,0,this.width,this.height),rec}get width(){return this._width?this._width:this.textWidth+this.padding[1]+this.padding[3]}set width(value){value!=this._width&&(super.set_width(value),this.isChanged=!0,this.borderColor&&this._setBorderStyleColor(0,0,this.width,this.height,this.borderColor,1))}_getCSSStyle(){return this._style}get height(){return this._height?this._height:this.textHeight}set height(value){value!=this._height&&(super.set_height(value),this.isChanged=!0,this.borderColor&&this._setBorderStyleColor(0,0,this.width,this.height,this.borderColor,1))}get textWidth(){return this._isChanged&&ILaya.systemTimer.runCallLater(this,this.typeset),this._textWidth}get textHeight(){return this._isChanged&&ILaya.systemTimer.runCallLater(this,this.typeset),this._textHeight}get text(){return this._text||""}get_text(){return this._text||""}set_text(value){this._text!==value&&(this.lang(value+""),this.isChanged=!0,this.event(Event.CHANGE),this.borderColor&&this._setBorderStyleColor(0,0,this.width,this.height,this.borderColor,1))}set text(value){this.set_text(value)}lang(text,arg1=null,arg2=null,arg3=null,arg4=null,arg5=null,arg6=null,arg7=null,arg8=null,arg9=null,arg10=null){if(text=Text.langPacks&&Text.langPacks[text]?Text.langPacks[text]:text,arguments.length<2)this._text=text;else{for(var i=0,n=arguments.length;i<n;i++)text=text.replace("{"+i+"}",arguments[i+1]);this._text=text}}get font(){return this._font}set font(value){this._style.currBitmapFont&&(this._getTextStyle().currBitmapFont=null,this.scale(1,1)),Text._bitmapFonts&&Text._bitmapFonts[value]&&(this._getTextStyle().currBitmapFont=Text._bitmapFonts[value]),this._font=value,this.isChanged=!0}get fontSize(){return this._fontSize}set fontSize(value){this._fontSize!=value&&(this._fontSize=value,this.isChanged=!0)}get bold(){return this._style.bold}set bold(value){this._getTextStyle().bold=value,this.isChanged=!0}get color(){return this._color}set color(value){this.set_color(value)}get_color(){return this._color}set_color(value){this._color!=value&&(this._color=value,!this._isChanged&&this._graphics?this._graphics.replaceTextColor(this.color):this.isChanged=!0)}get italic(){return this._style.italic}set italic(value){this._getTextStyle().italic=value,this.isChanged=!0}get align(){return this._style.align}set align(value){this._getTextStyle().align=value,this.isChanged=!0}get valign(){return this._valign}set valign(value){this._valign=value,this.isChanged=!0}get wordWrap(){return this._style.wordWrap}set wordWrap(value){this._getTextStyle().wordWrap=value,this.isChanged=!0}get leading(){return this._style.leading}set leading(value){this._getTextStyle().leading=value,this.isChanged=!0}get padding(){return this._style.padding}set padding(value){if("string"==typeof value){var arr,i,len;for(len=(arr=value.split(",")).length;arr.length<4;)arr.push(0);for(i=0;i<len;i++)arr[i]=parseFloat(arr[i])||0;value=arr}this._getTextStyle().padding=value,this.isChanged=!0}get bgColor(){return this._style.bgColor}set bgColor(value){this.set_bgColor(value)}set_bgColor(value){this._getTextStyle().bgColor=value,this._renderType|=SpriteConst.STYLE,this._setBgStyleColor(0,0,this.width,this.height,value),this._setRenderType(this._renderType),this.isChanged=!0}get_bgColor(){return this._style.bgColor}get borderColor(){return this._style.borderColor}set borderColor(value){this._getTextStyle().borderColor=value,this._renderType|=SpriteConst.STYLE,this._setBorderStyleColor(0,0,this.width,this.height,value,1),this._setRenderType(this._renderType),this.isChanged=!0}get stroke(){return this._style.stroke}set stroke(value){this._getTextStyle().stroke=value,this.isChanged=!0}get strokeColor(){return this._style.strokeColor}set strokeColor(value){this._getTextStyle().strokeColor=value,this.isChanged=!0}set isChanged(value){this._isChanged!==value&&(this._isChanged=value,value&&ILaya.systemTimer.callLater(this,this.typeset))}_getContextFont(){return(this.italic?"italic ":"")+(this.bold?"bold ":"")+this.fontSize+"px "+(ILaya.Browser.onIPhone&&Text.fontFamilyMap[this.font]||this.font)}_isPassWordMode(){var password=this._style.asPassword;return"prompt"in this&&this.prompt==this._text&&(password=!1),password}_getPassWordTxt(txt){var word;word="";for(var j=txt.length;j>0;j--)word+="●";return word}_renderText(){var padding=this.padding,visibleLineCount=this._lines.length;this.overflow!=Text.VISIBLE&&(visibleLineCount=Math.min(visibleLineCount,Math.floor((this.height-padding[0]-padding[2])/(this.leading+this._charSize.height))+1));var beginLine=this.scrollY/(this._charSize.height+this.leading)|0,graphics=this.graphics;graphics.clear(!0);var ctxFont=this._getContextFont();ILaya.Browser.context.font=ctxFont;var startX=padding[3],textAlgin="left",lines=this._lines,lineHeight=this.leading+this._charSize.height,tCurrBitmapFont=this._style.currBitmapFont;tCurrBitmapFont&&(lineHeight=this.leading+tCurrBitmapFont.getMaxHeight());var startY=padding[0];if(!tCurrBitmapFont&&this._width>0&&this._textWidth<=this._width&&("right"==this.align?(textAlgin="right",startX=this._width-padding[1]):"center"==this.align&&(textAlgin="center",startX=.5*this._width+padding[3]-padding[1])),this._height>0){var tempVAlign=this._textHeight>this._height?"top":this.valign;"middle"===tempVAlign?startY=.5*(this._height-visibleLineCount*lineHeight)+padding[0]-padding[2]:"bottom"===tempVAlign&&(startY=this._height-visibleLineCount*lineHeight-padding[2])}var style=this._style;if(tCurrBitmapFont&&tCurrBitmapFont.autoScaleSize)var bitmapScale=tCurrBitmapFont.fontSize/this.fontSize;if(this._clipPoint){var tClipWidth,tClipHeight;if(graphics.save(),tCurrBitmapFont&&tCurrBitmapFont.autoScaleSize)tClipWidth=this._width?this._width-padding[3]-padding[1]:this._textWidth,tClipHeight=this._height?this._height-padding[0]-padding[2]:this._textHeight,tClipWidth*=bitmapScale,tClipHeight*=bitmapScale,graphics.clipRect(padding[3],padding[0],tClipWidth,tClipHeight);else graphics.clipRect(padding[3],padding[0],this._width?this._width-padding[3]-padding[1]:this._textWidth,this._height?this._height-padding[0]-padding[2]:this._textHeight);this.repaint()}var password=style.asPassword;"prompt"in this&&this.prompt==this._text&&(password=!1);for(var x=0,y=0,end=Math.min(this._lines.length,visibleLineCount+beginLine)||1,i=beginLine;i<end;i++){var _word,word=lines[i];if(password){var len=word.length;word="";for(var j=len;j>0;j--)word+="●"}if(null==word&&(word=""),x=startX-(this._clipPoint?this._clipPoint.x:0),y=startY+lineHeight*i-(this._clipPoint?this._clipPoint.y:0),this.underline&&this._drawUnderline(textAlgin,x,y,i),tCurrBitmapFont){var tWidth=this.width;tCurrBitmapFont.autoScaleSize&&(tWidth=this.width*bitmapScale),tCurrBitmapFont._drawText(word,this,x,y,this.align,tWidth)}else this._words||(this._words=[]),this._words.length>i-beginLine?_word=this._words[i-beginLine]:(_word=new WordText,this._words.push(_word)),_word.setText(word),_word.splitRender=this._singleCharRender,style.stroke?graphics.fillBorderText(_word,x,y,ctxFont,this.color,style.strokeColor,style.stroke,textAlgin):graphics.fillText(_word,x,y,ctxFont,this.color,textAlgin)}if(tCurrBitmapFont&&tCurrBitmapFont.autoScaleSize){var tScale=1/bitmapScale;this.scale(tScale,tScale)}this._clipPoint&&graphics.restore(),this._startX=startX,this._startY=startY}_drawUnderline(align,x,y,lineIndex){var lineWidth=this._lineWidths[lineIndex];switch(align){case"center":x-=lineWidth/2;break;case"right":x-=lineWidth}y+=this._charSize.height,this._graphics.drawLine(x,y,x+lineWidth,y,this.underlineColor||this.color,1)}typeset(){if(this._isChanged=!1,!this._text)return this._clipPoint=null,this._textWidth=this._textHeight=0,void this.graphics.clear(!0);ILaya.Render.isConchApp?window.conchTextCanvas.font=this._getContextFont():ILaya.Browser.context.font=this._getContextFont(),this._lines.length=0,this._lineWidths.length=0,this._isPassWordMode()?this._parseLines(this._getPassWordTxt(this._text)):this._parseLines(this._text),this._evalTextSize(),this._checkEnabledViewportOrNot()?this._clipPoint||(this._clipPoint=new Point(0,0)):this._clipPoint=null,this._renderText()}_evalTextSize(){var nw,nh;nw=Math.max.apply(this,this._lineWidths),nh=this._style.currBitmapFont?this._lines.length*(this._style.currBitmapFont.getMaxHeight()+this.leading)+this.padding[0]+this.padding[2]:this._lines.length*(this._charSize.height+this.leading)+this.padding[0]+this.padding[2],nw==this._textWidth&&nh==this._textHeight||(this._textWidth=nw,this._textHeight=nh)}_checkEnabledViewportOrNot(){return this.overflow==Text.SCROLL&&(this._width>0&&this._textWidth>this._width||this._height>0&&this._textHeight>this._height)}changeText(text){this._text!==text&&(this.lang(text+""),this._graphics&&this._graphics.replaceText(this._text)||this.typeset())}_parseLines(text){var needWordWrapOrTruncate=this.wordWrap||this.overflow==Text.HIDDEN;if(needWordWrapOrTruncate)var wordWrapWidth=this._getWordWrapWidth();var bitmapFont=this._style.currBitmapFont;if(bitmapFont)this._charSize.width=bitmapFont.getMaxWidth(),this._charSize.height=bitmapFont.getMaxHeight();else{var measureResult=null;(measureResult=ILaya.Render.isConchApp?window.conchTextCanvas.measureText(Text._testWord):ILaya.Browser.context.measureText(Text._testWord))||(measureResult={width:100}),this._charSize.width=measureResult.width,this._charSize.height=measureResult.height||this.fontSize}for(var lines=text.replace(/\r\n/g,"\n").split("\n"),i=0,n=lines.length;i<n;i++){var line=lines[i];needWordWrapOrTruncate?this._parseLine(line,wordWrapWidth):(this._lineWidths.push(this._getTextWidth(line)),this._lines.push(line))}}_parseLine(line,wordWrapWidth){var lines=this._lines,maybeIndex=0,charsWidth=0,wordWidth=0,startIndex=0;if((charsWidth=this._getTextWidth(line))<=wordWrapWidth)return lines.push(line),void this._lineWidths.push(charsWidth);charsWidth=this._charSize.width,0==(maybeIndex=Math.floor(wordWrapWidth/charsWidth))&&(maybeIndex=1),wordWidth=charsWidth=this._getTextWidth(line.substring(0,maybeIndex));for(var j=maybeIndex,m=line.length;j<m;j++)if((wordWidth+=charsWidth=this._getTextWidth(line.charAt(j)))>wordWrapWidth)if(this.wordWrap){var newLine=line.substring(startIndex,j);if(newLine.charCodeAt(newLine.length-1)<255){var execResult=/(?:\w|-)+$/.exec(newLine);execResult&&(j=execResult.index+startIndex,0==execResult.index?j+=newLine.length:newLine=line.substring(startIndex,j))}if(lines.push(newLine),this._lineWidths.push(wordWidth-charsWidth),startIndex=j,!(j+maybeIndex<m)){lines.push(line.substring(startIndex,m)),this._lineWidths.push(this._getTextWidth(lines[lines.length-1])),startIndex=-1;break}j+=maybeIndex,wordWidth=charsWidth=this._getTextWidth(line.substring(startIndex,j)),j--}else if(this.overflow==Text.HIDDEN)return lines.push(line.substring(0,j)),void this._lineWidths.push(this._getTextWidth(lines[lines.length-1]));this.wordWrap&&-1!=startIndex&&(lines.push(line.substring(startIndex,m)),this._lineWidths.push(this._getTextWidth(lines[lines.length-1])))}_getTextWidth(text){var bitmapFont=this._style.currBitmapFont;return bitmapFont?bitmapFont.getTextWidth(text):ILaya.Render.isConchApp?window.conchTextCanvas.measureText(text).width:ILaya.Browser.context.measureText(text).width}_getWordWrapWidth(){var w,p=this.padding,bitmapFont=this._style.currBitmapFont;return(w=bitmapFont&&bitmapFont.autoScaleSize?this._width*(bitmapFont.fontSize/this.fontSize):this._width)<=0&&(w=this.wordWrap?100:ILaya.Browser.width),w<=0&&(w=100),w-p[3]-p[1]}getCharPoint(charIndex,out=null){this._isChanged&&ILaya.systemTimer.runCallLater(this,this.typeset);for(var len=0,lines=this._lines,startIndex=0,i=0,n=lines.length;i<n;i++){if(charIndex<(len+=lines[i].length)){var line=i;break}startIndex=len}var ctxFont=(this.italic?"italic ":"")+(this.bold?"bold ":"")+this.fontSize+"px "+this.font;ILaya.Browser.context.font=ctxFont;var width=this._getTextWidth(this._text.substring(startIndex,charIndex));return(out||new Point).setTo(this._startX+width-(this._clipPoint?this._clipPoint.x:0),this._startY+line*(this._charSize.height+this.leading)-(this._clipPoint?this._clipPoint.y:0))}set scrollX(value){if(!(this.overflow!=Text.SCROLL||this.textWidth<this._width)&&this._clipPoint){value=value<this.padding[3]?this.padding[3]:value;var maxScrollX=this._textWidth-this._width;value=value>maxScrollX?maxScrollX:value,this._clipPoint.x=value,this._renderText()}}get scrollX(){return this._clipPoint?this._clipPoint.x:0}set scrollY(value){if(!(this.overflow!=Text.SCROLL||this.textHeight<this._height)&&this._clipPoint){value=value<this.padding[0]?this.padding[0]:value;var maxScrollY=this._textHeight-this._height;value=value>maxScrollY?maxScrollY:value,this._clipPoint.y=value,this._renderText()}}get scrollY(){return this._clipPoint?this._clipPoint.y:0}get maxScrollX(){return this.textWidth<this._width?0:this._textWidth-this._width}get maxScrollY(){return this.textHeight<this._height?0:this._textHeight-this._height}get lines(){return this._isChanged&&this.typeset(),this._lines}get underlineColor(){return this._style.underlineColor}set underlineColor(value){this._getTextStyle().underlineColor=value,this._isChanged||this._renderText()}get underline(){return this._style.underline}set underline(value){this._getTextStyle().underline=value}set singleCharRender(value){this._singleCharRender=value}get singleCharRender(){return this._singleCharRender}}Text.VISIBLE="visible",Text.SCROLL="scroll",Text.HIDDEN="hidden",Text.defaultFontSize=12,Text.defaultFont="Arial",Text.isComplexText=!1,Text.fontFamilyMap={"报隶":"报隶-简","黑体":"黑体-简","楷体":"楷体-简","兰亭黑":"兰亭黑-简","隶变":"隶变-简","凌慧体":"凌慧体-简","翩翩体":"翩翩体-简","苹方":"苹方-简","手札体":"手札体-简","宋体":"宋体-简","娃娃体":"娃娃体-简","魏碑":"魏碑-简","行楷":"行楷-简","雅痞":"雅痞-简","圆体":"圆体-简"},Text._testWord="游",Text.CharacterCache=!0,Text.RightToLeft=!1,ILaya.regClass(Text),ClassUtils.regClass("laya.display.Text",Text),ClassUtils.regClass("Laya.Text",Text);class Input extends Text{constructor(){super(),this._multiline=!1,this._editable=!0,this._maxChars=1e5,this._type="text",this._prompt="",this._promptColor="#A9A9A9",this._originColor="#000000",this._content="",Input.IOS_IFRAME=ILaya.Browser.onIOS&&ILaya.Browser.window.top!=ILaya.Browser.window.self,this._width=100,this._height=20,this.multiline=!1,this.overflow=Text.SCROLL,this.on(Event.MOUSE_DOWN,this,this._onMouseDown),this.on(Event.UNDISPLAY,this,this._onUnDisplay)}static __init__(){if(Input._createInputElement(),ILaya.Browser.onMobile){var isTrue=!1;(ILaya.Browser.onMiniGame||ILaya.Browser.onBDMiniGame||ILaya.Browser.onQGMiniGame||ILaya.Browser.onKGMiniGame||ILaya.Browser.onVVMiniGame||ILaya.Browser.onAlipayMiniGame||ILaya.Browser.onQQMiniGame)&&(isTrue=!0),ILaya.Render.canvas.addEventListener(Input.IOS_IFRAME?isTrue?"touchend":"click":"touchend",Input._popupInputMethod)}}static _popupInputMethod(e){Input.isInputting&&Input.inputElement.focus()}static _createInputElement(){Input._initInput(Input.area=ILaya.Browser.createElement("textarea")),Input._initInput(Input.input=ILaya.Browser.createElement("input")),Input.inputContainer=ILaya.Browser.createElement("div"),Input.inputContainer.style.position="absolute",Input.inputContainer.style.zIndex=1e5,ILaya.Browser.container.appendChild(Input.inputContainer),Input.inputContainer.setPos=function(x,y){Input.inputContainer.style.left=x+"px",Input.inputContainer.style.top=y+"px"}}static _initInput(input){var style=input.style;style.cssText="position:absolute;overflow:hidden;resize:none;transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-o-transform-origin:0 0;",style.resize="none",style.backgroundColor="transparent",style.border="none",style.outline="none",style.zIndex=1,input.addEventListener("input",Input._processInputting),input.addEventListener("mousemove",Input._stopEvent),input.addEventListener("mousedown",Input._stopEvent),input.addEventListener("touchmove",Input._stopEvent),input.setFontFace=function(fontFace){input.style.fontFamily=fontFace},ILaya.Render.isConchApp||(input.setColor=function(color){input.style.color=color},input.setFontSize=function(fontSize){input.style.fontSize=fontSize+"px"})}static _processInputting(e){var input=Input.inputElement.target;if(input){var value=Input.inputElement.value;input._restrictPattern&&(value=value.replace(/\u2006|\x27/g,""),input._restrictPattern.test(value)&&(value=value.replace(input._restrictPattern,""),Input.inputElement.value=value)),input._text=value,input.event(Event.INPUT)}}static _stopEvent(e){"touchmove"==e.type&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()}setSelection(startIndex,endIndex){this.focus=!0,Input.inputElement.selectionStart=startIndex,Input.inputElement.selectionEnd=endIndex}get multiline(){return this._multiline}set multiline(value){this._multiline=value,this.valign=value?"top":"middle"}get nativeInput(){return this._multiline?Input.area:Input.input}_onUnDisplay(e=null){this.focus=!1}_onMouseDown(e){this.focus=!0}_syncInputTransform(){var inputElement=this.nativeInput,transform=Utils.getTransformRelativeToWindow(this,this.padding[3],this.padding[0]),inputWid=this._width-this.padding[1]-this.padding[3],inputHei=this._height-this.padding[0]-this.padding[2];ILaya.Render.isConchApp?(inputElement.setScale(transform.scaleX,transform.scaleY),inputElement.setSize(inputWid,inputHei),inputElement.setPos(transform.x,transform.y)):(Input.inputContainer.style.transform=Input.inputContainer.style.webkitTransform="scale("+transform.scaleX+","+transform.scaleY+") rotate("+ILaya.stage.canvasDegree+"deg)",inputElement.style.width=inputWid+"px",inputElement.style.height=inputHei+"px",Input.inputContainer.style.left=transform.x+"px",Input.inputContainer.style.top=transform.y+"px")}select(){this.nativeInput.select()}get focus(){return this._focus}set focus(value){var input=this.nativeInput;this._focus!==value&&(value?(input.target?input.target._focusOut():this._setInputMethod(),input.target=this,this._focusIn()):(input.target=null,this._focusOut(),ILaya.Browser.document.body.scrollTop=0,input.blur(),ILaya.Render.isConchApp?input.setPos(-1e4,-1e4):Input.inputContainer.contains(input)&&Input.inputContainer.removeChild(input)))}_setInputMethod(){Input.input.parentElement&&Input.inputContainer.removeChild(Input.input),Input.area.parentElement&&Input.inputContainer.removeChild(Input.area),Input.inputElement=this._multiline?Input.area:Input.input,Input.inputContainer.appendChild(Input.inputElement),Text.RightToLeft&&(Input.inputElement.style.direction="rtl")}_focusIn(){Input.isInputting=!0;var input=this.nativeInput;this._focus=!0;var cssStyle=input.style;cssStyle.whiteSpace=this.wordWrap?"pre-wrap":"nowrap",this._setPromptColor(),input.readOnly=!this._editable,ILaya.Render.isConchApp&&(input.setType(this._type),input.setForbidEdit(!this._editable)),input.maxLength=this._maxChars;this.padding;if(input.value=this._content,input.placeholder=this._prompt,ILaya.stage.off(Event.KEY_DOWN,this,this._onKeyDown),ILaya.stage.on(Event.KEY_DOWN,this,this._onKeyDown),ILaya.stage.focus=this,this.event(Event.FOCUS),ILaya.Browser.onPC&&input.focus(),!(ILaya.Browser.onMiniGame||ILaya.Browser.onBDMiniGame||ILaya.Browser.onQGMiniGame||ILaya.Browser.onKGMiniGame||ILaya.Browser.onVVMiniGame||ILaya.Browser.onAlipayMiniGame||ILaya.Browser.onQQMiniGame)){this._text;this._text=null}this.typeset(),input.setColor(this._originColor),input.setFontSize(this.fontSize),input.setFontFace(ILaya.Browser.onIPhone&&Text.fontFamilyMap[this.font]||this.font),ILaya.Render.isConchApp&&input.setMultiAble&&input.setMultiAble(this._multiline),cssStyle.lineHeight=this.leading+this.fontSize+"px",cssStyle.fontStyle=this.italic?"italic":"normal",cssStyle.fontWeight=this.bold?"bold":"normal",cssStyle.textAlign=this.align,cssStyle.padding="0 0",this._syncInputTransform(),!ILaya.Render.isConchApp&&ILaya.Browser.onPC&&ILaya.systemTimer.frameLoop(1,this,this._syncInputTransform)}_setPromptColor(){Input.promptStyleDOM=ILaya.Browser.getElementById("promptStyle"),Input.promptStyleDOM||(Input.promptStyleDOM=ILaya.Browser.createElement("style"),Input.promptStyleDOM.setAttribute("id","promptStyle"),ILaya.Browser.document.head.appendChild(Input.promptStyleDOM)),Input.promptStyleDOM.innerText="input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {color:"+this._promptColor+"}input:-moz-placeholder, textarea:-moz-placeholder {color:"+this._promptColor+"}input::-moz-placeholder, textarea::-moz-placeholder {color:"+this._promptColor+"}input:-ms-input-placeholder, textarea:-ms-input-placeholder {color:"+this._promptColor+"}"}_focusOut(){Input.isInputting=!1,this._focus=!1,this._text=null,this._content=this.nativeInput.value,this._content?(super.set_text(this._content),super.set_color(this._originColor)):(super.set_text(this._prompt),super.set_color(this._promptColor)),ILaya.stage.off(Event.KEY_DOWN,this,this._onKeyDown),ILaya.stage.focus=null,this.event(Event.BLUR),this.event(Event.CHANGE),ILaya.Render.isConchApp&&this.nativeInput.blur(),ILaya.Browser.onPC&&ILaya.systemTimer.clear(this,this._syncInputTransform)}_onKeyDown(e){13===e.keyCode&&(ILaya.Browser.onMobile&&!this._multiline&&(this.focus=!1),this.event(Event.ENTER))}set text(value){super.set_color(this._originColor),value+="",this._focus?(this.nativeInput.value=value||"",this.event(Event.CHANGE)):(this._multiline||(value=value.replace(/\r?\n/g,"")),this._content=value,value?super.set_text(value):(super.set_text(this._prompt),super.set_color(this.promptColor)))}get text(){return this._focus?this.nativeInput.value:this._content||""}changeText(text){this._content=text,this._focus?(this.nativeInput.value=text||"",this.event(Event.CHANGE)):super.changeText(text)}set color(value){this._focus&&this.nativeInput.setColor(value),super.set_color(this._content?value:this._promptColor),this._originColor=value}get color(){return super.color}set bgColor(value){super.set_bgColor(value),ILaya.Render.isConchApp&&this.nativeInput.setBgColor(value)}get bgColor(){return super.bgColor}get restrict(){return this._restrictPattern?this._restrictPattern.source:""}set restrict(pattern){pattern?((pattern="[^"+pattern+"]").indexOf("^^")>-1&&(pattern=pattern.replace("^^","")),this._restrictPattern=new RegExp(pattern,"g")):this._restrictPattern=null}set editable(value){this._editable=value,ILaya.Render.isConchApp&&Input.input.setForbidEdit(!value)}get editable(){return this._editable}get maxChars(){return this._maxChars}set maxChars(value){value<=0&&(value=1e5),this._maxChars=value}get prompt(){return this._prompt}set prompt(value){!this._text&&value&&super.set_color(this._promptColor),this.promptColor=this._promptColor,this._text?super.set_text(this._text==this._prompt?value:this._text):super.set_text(value),this._prompt=Text.langPacks&&Text.langPacks[value]?Text.langPacks[value]:value}get promptColor(){return this._promptColor}set promptColor(value){this._promptColor=value,this._content||super.set_color(value)}get type(){return this._type}set type(value){this._getTextStyle().asPassword="password"===value,this._type=value}}Input.TYPE_TEXT="text",Input.TYPE_PASSWORD="password",Input.TYPE_EMAIL="email",Input.TYPE_URL="url",Input.TYPE_NUMBER="number",Input.TYPE_RANGE="range",Input.TYPE_DATE="date",Input.TYPE_MONTH="month",Input.TYPE_WEEK="week",Input.TYPE_TIME="time",Input.TYPE_DATE_TIME="datetime",Input.TYPE_DATE_TIME_LOCAL="datetime-local",Input.TYPE_SEARCH="search",Input.IOS_IFRAME=!1,Input.inputHeight=45,Input.isInputting=!1,ClassUtils.regClass("laya.display.Input",Input),ClassUtils.regClass("Laya.Input",Input);class TouchManager{constructor(){this.preOvers=[],this.preDowns=[],this.preRightDowns=[],this.enable=!0,this._event=new Event,this._lastClickTime=0}_clearTempArrs(){TouchManager._oldArr.length=0,TouchManager._newArr.length=0,TouchManager._tEleArr.length=0}getTouchFromArr(touchID,arr){var i,len,tTouchO;for(len=arr.length,i=0;i<len;i++)if((tTouchO=arr[i]).id==touchID)return tTouchO;return null}removeTouchFromArr(touchID,arr){var i;for(i=arr.length-1;i>=0;i--)arr[i].id==touchID&&arr.splice(i,1)}createTouchO(ele,touchID){var rst;return(rst=Pool.getItem("TouchData")||{}).id=touchID,rst.tar=ele,rst}onMouseDown(ele,touchID,isLeft=!1){var preO,tO,arrs,preDowns;this.enable&&(preO=this.getTouchFromArr(touchID,this.preOvers),arrs=this.getEles(ele,null,TouchManager._tEleArr),preO?preO.tar=ele:(tO=this.createTouchO(ele,touchID),this.preOvers.push(tO)),Browser.onMobile&&this.sendEvents(arrs,Event.MOUSE_OVER),preDowns=isLeft?this.preDowns:this.preRightDowns,(preO=this.getTouchFromArr(touchID,preDowns))?preO.tar=ele:(tO=this.createTouchO(ele,touchID),preDowns.push(tO)),this.sendEvents(arrs,isLeft?Event.MOUSE_DOWN:Event.RIGHT_MOUSE_DOWN),this._clearTempArrs())}sendEvents(eles,type){var i,len,_target;for(len=eles.length,this._event._stoped=!1,_target=eles[0],i=0;i<len;i++){var tE=eles[i];if(tE.destroyed)return;if(tE.event(type,this._event.setTo(type,tE,_target)),this._event._stoped)break}}getEles(start,end=null,rst=null){for(rst?rst.length=0:rst=[];start&&start!=end;)rst.push(start),start=start.parent;return rst}checkMouseOutAndOverOfMove(eleNew,elePre,touchID=0){var tar,arrs,i,len;if(elePre!=eleNew)if(elePre.contains(eleNew))arrs=this.getEles(eleNew,elePre,TouchManager._tEleArr),this.sendEvents(arrs,Event.MOUSE_OVER);else if(eleNew.contains(elePre))arrs=this.getEles(elePre,eleNew,TouchManager._tEleArr),this.sendEvents(arrs,Event.MOUSE_OUT);else{var oldArr,newArr,tIndex;for((arrs=TouchManager._tEleArr).length=0,oldArr=this.getEles(elePre,null,TouchManager._oldArr),newArr=this.getEles(eleNew,null,TouchManager._newArr),len=oldArr.length,i=0;i<len;i++){if(tar=oldArr[i],(tIndex=newArr.indexOf(tar))>=0){newArr.splice(tIndex,newArr.length-tIndex);break}arrs.push(tar)}arrs.length>0&&this.sendEvents(arrs,Event.MOUSE_OUT),newArr.length>0&&this.sendEvents(newArr,Event.MOUSE_OVER)}}onMouseMove(ele,touchID){var preO,arrs;this.enable&&((preO=this.getTouchFromArr(touchID,this.preOvers))?(this.checkMouseOutAndOverOfMove(ele,preO.tar),preO.tar=ele,arrs=this.getEles(ele,null,TouchManager._tEleArr)):(arrs=this.getEles(ele,null,TouchManager._tEleArr),this.sendEvents(arrs,Event.MOUSE_OVER),this.preOvers.push(this.createTouchO(ele,touchID))),this.sendEvents(arrs,Event.MOUSE_MOVE),this._clearTempArrs())}getLastOvers(){return TouchManager._tEleArr.length=0,this.preOvers.length>0&&this.preOvers[0].tar?this.getEles(this.preOvers[0].tar,null,TouchManager._tEleArr):(TouchManager._tEleArr.push(ILaya.stage),TouchManager._tEleArr)}stageMouseOut(){var lastOvers;lastOvers=this.getLastOvers(),this.preOvers.length=0,this.sendEvents(lastOvers,Event.MOUSE_OUT)}onMouseUp(ele,touchID,isLeft=!1){if(this.enable){var preO,arrs,oldArr,i,len,tar,sendArr,preDowns,onMobile=Browser.onMobile;if(arrs=this.getEles(ele,null,TouchManager._tEleArr),this.sendEvents(arrs,isLeft?Event.MOUSE_UP:Event.RIGHT_MOUSE_UP),preDowns=isLeft?this.preDowns:this.preRightDowns,preO=this.getTouchFromArr(touchID,preDowns)){var isDouble,now=Browser.now();if(isDouble=now-this._lastClickTime<300,this._lastClickTime=now,ele==preO.tar)sendArr=arrs;else for(oldArr=this.getEles(preO.tar,null,TouchManager._oldArr),(sendArr=TouchManager._newArr).length=0,len=oldArr.length,i=0;i<len;i++)tar=oldArr[i],arrs.indexOf(tar)>=0&&sendArr.push(tar);sendArr.length>0&&this.sendEvents(sendArr,isLeft?Event.CLICK:Event.RIGHT_CLICK),isLeft&&isDouble&&this.sendEvents(sendArr,Event.DOUBLE_CLICK),this.removeTouchFromArr(touchID,preDowns),preO.tar=null,Pool.recover("TouchData",preO)}else;(preO=this.getTouchFromArr(touchID,this.preOvers))&&onMobile&&((sendArr=this.getEles(preO.tar,null,sendArr))&&sendArr.length>0&&this.sendEvents(sendArr,Event.MOUSE_OUT),this.removeTouchFromArr(touchID,this.preOvers),preO.tar=null,Pool.recover("TouchData",preO)),this._clearTempArrs()}}}TouchManager.I=new TouchManager,TouchManager._oldArr=[],TouchManager._newArr=[],TouchManager._tEleArr=[];class MouseManager{constructor(){this.mouseX=0,this.mouseY=0,this.disableMouseEvent=!1,this.mouseDownTime=0,this.mouseMoveAccuracy=2,this._event=new Event,this._captureSp=null,this._captureChain=[],this._captureExlusiveMode=!1,this._hitCaputreSp=!1,this._point=new Point,this._rect=new Rectangle,this._lastMoveTimer=0,this._prePoint=new Point,this._touchIDs={},this._curTouchID=NaN,this._id=1}__init__(stage,canvas){this._stage=stage;var _this=this;canvas.oncontextmenu=function(e){if(MouseManager.enabled)return!1},canvas.addEventListener("mousedown",function(e){MouseManager.enabled&&(Browser.onIE||e.preventDefault(),_this.mouseDownTime=Browser.now(),_this.runEvent(e))}),canvas.addEventListener("mouseup",function(e){MouseManager.enabled&&(e.preventDefault(),_this.mouseDownTime=-Browser.now(),_this.runEvent(e))},!0),canvas.addEventListener("mousemove",function(e){if(MouseManager.enabled){e.preventDefault();var now=Browser.now();if(now-_this._lastMoveTimer<10)return;_this._lastMoveTimer=now,_this.runEvent(e)}},!0),canvas.addEventListener("mouseout",function(e){MouseManager.enabled&&_this.runEvent(e)}),canvas.addEventListener("mouseover",function(e){MouseManager.enabled&&_this.runEvent(e)}),canvas.addEventListener("touchstart",function(e){MouseManager.enabled&&(MouseManager._isFirstTouch||Input.isInputting||e.preventDefault(),_this.mouseDownTime=Browser.now(),_this.runEvent(e))}),canvas.addEventListener("touchend",function(e){MouseManager.enabled?(MouseManager._isFirstTouch||Input.isInputting||e.preventDefault(),MouseManager._isFirstTouch=!1,_this.mouseDownTime=-Browser.now(),_this.runEvent(e)):_this._curTouchID=NaN},!0),canvas.addEventListener("touchmove",function(e){MouseManager.enabled&&(e.preventDefault(),_this.runEvent(e))},!0),canvas.addEventListener("touchcancel",function(e){MouseManager.enabled?(e.preventDefault(),_this.runEvent(e)):_this._curTouchID=NaN},!0),canvas.addEventListener("mousewheel",function(e){MouseManager.enabled&&_this.runEvent(e)}),canvas.addEventListener("DOMMouseScroll",function(e){MouseManager.enabled&&_this.runEvent(e)})}initEvent(e,nativeEvent=null){var evt;this._event._stoped=!1,this._event.nativeEvent=nativeEvent||e,this._target=null,this._point.setTo(e.pageX||e.clientX,e.pageY||e.clientY),this._stage._canvasTransform&&(this._stage._canvasTransform.invertTransformPoint(this._point),this.mouseX=this._point.x,this.mouseY=this._point.y),this._event.touchId=e.identifier||0,this._tTouchID=this._event.touchId,(evt=TouchManager.I._event)._stoped=!1,evt.nativeEvent=this._event.nativeEvent,evt.touchId=this._event.touchId}checkMouseWheel(e){this._event.delta=e.wheelDelta?.025*e.wheelDelta:-e.detail;for(var _lastOvers=TouchManager.I.getLastOvers(),i=0,n=_lastOvers.length;i<n;i++){var ele=_lastOvers[i];ele.event(Event.MOUSE_WHEEL,this._event.setTo(Event.MOUSE_WHEEL,ele,this._target))}}onMouseMove(ele){TouchManager.I.onMouseMove(ele,this._tTouchID)}onMouseDown(ele){if(Input.isInputting&&ILaya.stage.focus&&ILaya.stage.focus.focus&&!ILaya.stage.focus.contains(this._target)){var pre_input=ILaya.stage.focus._tf||ILaya.stage.focus,new_input=ele._tf||ele;new_input instanceof Input&&new_input.multiline==pre_input.multiline?pre_input._focusOut():pre_input.focus=!1}TouchManager.I.onMouseDown(ele,this._tTouchID,this._isLeftMouse)}onMouseUp(ele){TouchManager.I.onMouseUp(ele,this._tTouchID,this._isLeftMouse)}check(sp,mouseX,mouseY,callBack){this._point.setTo(mouseX,mouseY),sp.fromParentPoint(this._point),mouseX=this._point.x,mouseY=this._point.y;var scrollRect=sp._style.scrollRect;if(scrollRect&&(this._rect.setTo(scrollRect.x,scrollRect.y,scrollRect.width,scrollRect.height),!this._rect.contains(mouseX,mouseY)))return!1;if(!this.disableMouseEvent){if(sp.hitTestPrior&&!sp.mouseThrough&&!this.hitTest(sp,mouseX,mouseY))return!1;for(var i=sp._children.length-1;i>-1;i--){var child=sp._children[i];if(!child.destroyed&&child._mouseState>1&&child._visible&&this.check(child,mouseX,mouseY,callBack))return!0}for(i=sp._extUIChild.length-1;i>=0;i--){var c=sp._extUIChild[i];if(!c.destroyed&&c._mouseState>1&&c._visible&&this.check(c,mouseX,mouseY,callBack))return!0}}var isHit=!(!sp.hitTestPrior||sp.mouseThrough||this.disableMouseEvent)||this.hitTest(sp,mouseX,mouseY);return isHit?(this._target=sp,callBack.call(this,sp),this._target==this._hitCaputreSp&&(this._hitCaputreSp=!0)):callBack===this.onMouseUp&&sp===this._stage&&(this._target=this._stage,callBack.call(this,this._target)),isHit}hitTest(sp,mouseX,mouseY){var isHit=!1;sp.scrollRect&&(mouseX-=sp._style.scrollRect.x,mouseY-=sp._style.scrollRect.y);var hitArea=sp._style.hitArea;return hitArea&&hitArea._hit?hitArea.contains(mouseX,mouseY):((sp.width>0&&sp.height>0||sp.mouseThrough||hitArea)&&(isHit=sp.mouseThrough?sp.getGraphicBounds().contains(mouseX,mouseY):(hitArea||this._rect.setTo(0,0,sp.width,sp.height)).contains(mouseX,mouseY)),isHit)}_checkAllBaseUI(mousex,mousey,callback){var ret=this.handleExclusiveCapture(this.mouseX,this.mouseY,callback);return!!ret||(ret=this.check(this._stage,this.mouseX,this.mouseY,callback),this.handleCapture(this.mouseX,this.mouseY,callback)||ret)}check3DUI(mousex,mousey,callback){for(var uis=this._stage._3dUI,i=0,ret=!1;i<uis.length;i++){var curui=uis[i];this._stage._curUIBase=curui,!curui.destroyed&&curui._mouseState>1&&curui._visible&&(ret=ret||this.check(curui,this.mouseX,this.mouseY,callback))}return this._stage._curUIBase=this._stage,ret}handleExclusiveCapture(mousex,mousey,callback){if(this._captureExlusiveMode&&this._captureSp&&this._captureChain.length>0){var cursp;this._point.setTo(mousex,mousey);for(var i=0;i<this._captureChain.length;i++)(cursp=this._captureChain[i]).fromParentPoint(this._point);return this._target=cursp,callback.call(this,cursp),!0}return!1}handleCapture(mousex,mousey,callback){if(!this._hitCaputreSp&&this._captureSp&&this._captureChain.length>0){var cursp;this._point.setTo(mousex,mousey);for(var i=0;i<this._captureChain.length;i++)(cursp=this._captureChain[i]).fromParentPoint(this._point);return this._target=cursp,callback.call(this,cursp),!0}return!1}runEvent(evt){var i,n,touch;switch("mousemove"!==evt.type&&(this._prePoint.x=this._prePoint.y=-1e6),evt.type){case"mousedown":this._touchIDs[0]=this._id++,MouseManager._isTouchRespond?MouseManager._isTouchRespond=!1:(this._isLeftMouse=0===evt.button,this.initEvent(evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseDown));break;case"mouseup":this._isLeftMouse=0===evt.button,this.initEvent(evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseUp);break;case"mousemove":Math.abs(this._prePoint.x-evt.clientX)+Math.abs(this._prePoint.y-evt.clientY)>=this.mouseMoveAccuracy&&(this._prePoint.x=evt.clientX,this._prePoint.y=evt.clientY,this.initEvent(evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseMove));break;case"touchstart":MouseManager._isTouchRespond=!0,this._isLeftMouse=!0;var touches=evt.changedTouches;for(i=0,n=touches.length;i<n;i++)touch=touches[i],(MouseManager.multiTouchEnabled||isNaN(this._curTouchID))&&(this._curTouchID=touch.identifier,this._id%200==0&&(this._touchIDs={}),this._touchIDs[touch.identifier]=this._id++,this.initEvent(touch,evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseDown));break;case"touchend":case"touchcancel":MouseManager._isTouchRespond=!0,this._isLeftMouse=!0;var touchends=evt.changedTouches;for(i=0,n=touchends.length;i<n;i++){if(touch=touchends[i],MouseManager.multiTouchEnabled||touch.identifier==this._curTouchID)this._curTouchID=NaN,this.initEvent(touch,evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseUp)||this.onMouseUp(null)}break;case"touchmove":var touchemoves=evt.changedTouches;for(i=0,n=touchemoves.length;i<n;i++)touch=touchemoves[i],(MouseManager.multiTouchEnabled||touch.identifier==this._curTouchID)&&(this.initEvent(touch,evt),this._checkAllBaseUI(this.mouseX,this.mouseY,this.onMouseMove));break;case"wheel":case"mousewheel":case"DOMMouseScroll":this.checkMouseWheel(evt);break;case"mouseout":TouchManager.I.stageMouseOut();break;case"mouseover":this._stage.event(Event.MOUSE_OVER,this._event.setTo(Event.MOUSE_OVER,this._stage,this._stage))}}setCapture(sp,exclusive=!1){this._captureSp=sp,this._captureExlusiveMode=exclusive,this._captureChain.length=0,this._captureChain.push(sp);for(var cursp=sp;cursp!=ILaya.stage&&cursp!=ILaya.stage._curUIBase&&(cursp=cursp.parent);)this._captureChain.splice(0,0,cursp)}releaseCapture(){console.log("release capture"),this._captureSp=null}}MouseManager.instance=new MouseManager,MouseManager.enabled=!0,MouseManager.multiTouchEnabled=!0,MouseManager._isFirstTouch=!0;class CallLater{constructor(){this._pool=[],this._map=[],this._laters=[]}_update(){var laters=this._laters,len=laters.length;if(len>0){for(var i=0,n=len-1;i<=n;i++){var handler=laters[i];this._map[handler.key]=null,null!==handler.method&&(handler.run(),handler.clear()),this._pool.push(handler),i===n&&(n=laters.length-1)}laters.length=0}}_getHandler(caller,method){var cid=caller?caller.$_GID||(caller.$_GID=ILaya.Utils.getGID()):0,mid=method.$_TID||(method.$_TID=1e5*ILaya.Timer._mid++);return this._map[cid+mid]}callLater(caller,method,args=null){if(null==this._getHandler(caller,method)){if(this._pool.length)var handler=this._pool.pop();else handler=new LaterHandler;handler.caller=caller,handler.method=method,handler.args=args;var cid=caller?caller.$_GID:0,mid=method.$_TID;handler.key=cid+mid,this._map[handler.key]=handler,this._laters.push(handler)}}runCallLater(caller,method){var handler=this._getHandler(caller,method);handler&&null!=handler.method&&(this._map[handler.key]=null,handler.run(),handler.clear())}}CallLater.I=new CallLater;class LaterHandler{clear(){this.caller=null,this.method=null,this.args=null}run(){var caller=this.caller;if(caller&&caller.destroyed)return this.clear();var method=this.method,args=this.args;null!=method&&(args?method.apply(caller,args):method.call(caller))}}class RunDriver{}RunDriver.createShaderCondition=function(conditionScript){var fn="(function() {return "+conditionScript+";})";return window.Laya._runScript(fn)},RunDriver.changeWebGLSize=function(w,h){WebGL.onStageResize(w,h)};class Stage extends Sprite{constructor(){super(),this.offset=new Point,this._frameRate="fast",this.designWidth=0,this.designHeight=0,this.canvasRotation=!1,this.canvasDegree=0,this.renderingEnabled=!0,this.screenAdaptationEnabled=!0,this._canvasTransform=new Matrix,this._screenMode="none",this._scaleMode="noscale",this._alignV="top",this._alignH="left",this._bgColor="black",this._mouseMoveTime=0,this._renderCount=0,this._safariOffsetY=0,this._frameStartTime=0,this._previousOrientation=Browser.window.orientation,this._wgColor=[0,0,0,1],this._scene3Ds=[],this._globalRepaintSet=!1,this._globalRepaintGet=!1,this._3dUI=[],this._curUIBase=null,this.useRetinalCanvas=!1,super.set_transform(this._createTransform()),this.mouseEnabled=!0,this.hitTestPrior=!0,this.autoSize=!1,this._setBit(Const.DISPLAYED_INSTAGE,!0),this._setBit(Const.ACTIVE_INHIERARCHY,!0),this._isFocused=!0,this._isVisibility=!0,this.useRetinalCanvas=Config.useRetinalCanvas;var window=Browser.window,_me=this;window.addEventListener("focus",function(){this._isFocused=!0,_me.event(Event.FOCUS),_me.event(Event.FOCUS_CHANGE)}),window.addEventListener("blur",function(){this._isFocused=!1,_me.event(Event.BLUR),_me.event(Event.FOCUS_CHANGE),_me._isInputting()&&(Input.inputElement.target.focus=!1)});var state="visibilityState",visibilityChange="visibilitychange",document=window.document;void 0!==document.hidden?(visibilityChange="visibilitychange",state="visibilityState"):void 0!==document.mozHidden?(visibilityChange="mozvisibilitychange",state="mozVisibilityState"):void 0!==document.msHidden?(visibilityChange="msvisibilitychange",state="msVisibilityState"):void 0!==document.webkitHidden&&(visibilityChange="webkitvisibilitychange",state="webkitVisibilityState"),window.document.addEventListener(visibilityChange,function(){"hidden"==Browser.document[state]?(this._isVisibility=!1,_me._isInputting()&&(Input.inputElement.target.focus=!1)):this._isVisibility=!0;this.renderingEnabled=this._isVisibility,_me.event(Event.VISIBILITY_CHANGE)}),window.addEventListener("resize",function(){var orientation=Browser.window.orientation;null!=orientation&&orientation!=this._previousOrientation&&_me._isInputting()&&(Input.inputElement.target.focus=!1),this._previousOrientation=orientation,_me._isInputting()||(Browser.onSafari&&(_me._safariOffsetY=(Browser.window.__innerHeight||Browser.document.body.clientHeight||Browser.document.documentElement.clientHeight)-Browser.window.innerHeight),_me._resetCanvas())}),window.addEventListener("orientationchange",function(e){_me._resetCanvas()}),this.on(Event.MOUSE_MOVE,this,this._onmouseMove),Browser.onMobile&&this.on(Event.MOUSE_DOWN,this,this._onmouseMove)}_isInputting(){return Browser.onMobile&&Input.isInputting}set width(value){this.designWidth=value,super.set_width(value),ILaya.systemTimer.callLater(this,this._changeCanvasSize)}get width(){return super.get_width()}set height(value){this.designHeight=value,super.set_height(value),ILaya.systemTimer.callLater(this,this._changeCanvasSize)}get height(){return super.get_height()}set transform(value){super.set_transform(value)}get transform(){return this._tfChanged&&this._adjustTransform(),this._transform=this._transform||this._createTransform()}get isFocused(){return this._isFocused}get isVisibility(){return this._isVisibility}_changeCanvasSize(){this.setScreenSize(Browser.clientWidth*Browser.pixelRatio,Browser.clientHeight*Browser.pixelRatio)}_resetCanvas(){this.screenAdaptationEnabled&&this._changeCanvasSize()}setScreenSize(screenWidth,screenHeight){var rotation=!1;if(this._screenMode!==Stage.SCREEN_NONE&&(rotation=(screenWidth/screenHeight<1?Stage.SCREEN_VERTICAL:Stage.SCREEN_HORIZONTAL)!==this._screenMode)){var temp=screenHeight;screenHeight=screenWidth,screenWidth=temp}this.canvasRotation=rotation;var canvas=Render._mainCanvas,canvasStyle=canvas.source.style,mat=this._canvasTransform.identity(),scaleMode=this._scaleMode,scaleX=screenWidth/this.designWidth,scaleY=screenHeight/this.designHeight,canvasWidth=this.useRetinalCanvas?screenWidth:this.designWidth,canvasHeight=this.useRetinalCanvas?screenHeight:this.designHeight,realWidth=screenWidth,realHeight=screenHeight,pixelRatio=Browser.pixelRatio;switch(this._width=this.designWidth,this._height=this.designHeight,scaleMode){case Stage.SCALE_NOSCALE:scaleX=scaleY=1,realWidth=this.designWidth,realHeight=this.designHeight;break;case Stage.SCALE_SHOWALL:scaleX=scaleY=Math.min(scaleX,scaleY),canvasWidth=realWidth=Math.round(this.designWidth*scaleX),canvasHeight=realHeight=Math.round(this.designHeight*scaleY);break;case Stage.SCALE_NOBORDER:scaleX=scaleY=Math.max(scaleX,scaleY),realWidth=Math.round(this.designWidth*scaleX),realHeight=Math.round(this.designHeight*scaleY);break;case Stage.SCALE_FULL:scaleX=scaleY=1,this._width=canvasWidth=screenWidth,this._height=canvasHeight=screenHeight;break;case Stage.SCALE_FIXED_WIDTH:scaleY=scaleX,this._height=canvasHeight=Math.round(screenHeight/scaleX);break;case Stage.SCALE_FIXED_HEIGHT:scaleX=scaleY,this._width=canvasWidth=Math.round(screenWidth/scaleY);break;case Stage.SCALE_FIXED_AUTO:screenWidth/screenHeight<this.designWidth/this.designHeight?(scaleY=scaleX,this._height=canvasHeight=Math.round(screenHeight/scaleX)):(scaleX=scaleY,this._width=canvasWidth=Math.round(screenWidth/scaleY))}this.useRetinalCanvas&&(canvasWidth=screenWidth,canvasHeight=screenHeight),scaleX*=this.scaleX,scaleY*=this.scaleY,1===scaleX&&1===scaleY?this.transform.identity():(this.transform.a=this._formatData(scaleX/(realWidth/canvasWidth)),this.transform.d=this._formatData(scaleY/(realHeight/canvasHeight))),canvas.size(canvasWidth,canvasHeight),RunDriver.changeWebGLSize(canvasWidth,canvasHeight),mat.scale(realWidth/canvasWidth/pixelRatio,realHeight/canvasHeight/pixelRatio),this._alignH===Stage.ALIGN_LEFT?this.offset.x=0:this._alignH===Stage.ALIGN_RIGHT?this.offset.x=screenWidth-realWidth:this.offset.x=.5*(screenWidth-realWidth)/pixelRatio,this._alignV===Stage.ALIGN_TOP?this.offset.y=0:this._alignV===Stage.ALIGN_BOTTOM?this.offset.y=screenHeight-realHeight:this.offset.y=.5*(screenHeight-realHeight)/pixelRatio,this.offset.x=Math.round(this.offset.x),this.offset.y=Math.round(this.offset.y),mat.translate(this.offset.x,this.offset.y),this._safariOffsetY&&mat.translate(0,this._safariOffsetY),this.canvasDegree=0,rotation&&(this._screenMode===Stage.SCREEN_HORIZONTAL?(mat.rotate(Math.PI/2),mat.translate(screenHeight/pixelRatio,0),this.canvasDegree=90):(mat.rotate(-Math.PI/2),mat.translate(0,screenWidth/pixelRatio),this.canvasDegree=-90)),mat.a=this._formatData(mat.a),mat.d=this._formatData(mat.d),mat.tx=this._formatData(mat.tx),mat.ty=this._formatData(mat.ty),super.set_transform(this.transform),canvasStyle.transformOrigin=canvasStyle.webkitTransformOrigin=canvasStyle.msTransformOrigin=canvasStyle.mozTransformOrigin=canvasStyle.oTransformOrigin="0px 0px 0px",canvasStyle.transform=canvasStyle.webkitTransform=canvasStyle.msTransform=canvasStyle.mozTransform=canvasStyle.oTransform="matrix("+mat.toString()+")",this._safariOffsetY&&mat.translate(0,-this._safariOffsetY),mat.translate(parseInt(canvasStyle.left)||0,parseInt(canvasStyle.top)||0),this.visible=!0,this._repaint|=SpriteConst.REPAINT_CACHE,this.event(Event.RESIZE)}_formatData(value){return Math.abs(value)<1e-6?0:Math.abs(1-value)<.001?value>0?1:-1:value}get scaleMode(){return this._scaleMode}set scaleMode(value){this._scaleMode=value,ILaya.systemTimer.callLater(this,this._changeCanvasSize)}get alignH(){return this._alignH}set alignH(value){this._alignH=value,ILaya.systemTimer.callLater(this,this._changeCanvasSize)}get alignV(){return this._alignV}set alignV(value){this._alignV=value,ILaya.systemTimer.callLater(this,this._changeCanvasSize)}get bgColor(){return this._bgColor}set bgColor(value){this._bgColor=value,this._wgColor=value?ColorUtils.create(value).arrColor:null,Render.canvas.style.background=value||"none"}get mouseX(){return Math.round(MouseManager.instance.mouseX/this.clientScaleX)}get mouseY(){return Math.round(MouseManager.instance.mouseY/this.clientScaleY)}getMousePoint(){return Point.TEMP.setTo(this.mouseX,this.mouseY)}get clientScaleX(){return this._transform?this._transform.getScaleX():1}get clientScaleY(){return this._transform?this._transform.getScaleY():1}get screenMode(){return this._screenMode}set screenMode(value){this._screenMode=value}repaint(type=SpriteConst.REPAINT_CACHE){this._repaint|=type}parentRepaint(type=SpriteConst.REPAINT_CACHE){}_loop(){return this._globalRepaintGet=this._globalRepaintSet,this._globalRepaintSet=!1,this.render(Render._context,0,0),!0}getFrameTm(){return this._frameStartTime}_onmouseMove(e){this._mouseMoveTime=Browser.now()}getTimeFromFrameStart(){return Browser.now()-this._frameStartTime}set visible(value){this.visible!==value&&(super.set_visible(value),Render._mainCanvas.source.style.visibility=value?"visible":"hidden")}get visible(){return super.visible}render(context,x,y){if(window.conch)this.renderToNative(context,x,y);else{if(Stage._dbgSprite.graphics.clear(),this._frameRate===Stage.FRAME_SLEEP){var now=Browser.now();if(!(now-this._frameStartTime>=1e3))return;this._frameStartTime=now}else{if(!this._visible)return this._renderCount++,void(this._renderCount%5==0&&(CallLater.I._update(),Stat.loopCount++,RenderInfo.loopCount=Stat.loopCount,this._updateTimers()));this._frameStartTime=Browser.now(),RenderInfo.loopStTm=this._frameStartTime}this._renderCount++;var isFastMode=(this._frameRate===Stage.FRAME_MOUSE?this._frameStartTime-this._mouseMoveTime<2e3?Stage.FRAME_FAST:Stage.FRAME_SLOW:this._frameRate)!==Stage.FRAME_SLOW,isDoubleLoop=this._renderCount%2==0;if(Stat.renderSlow=!isFastMode,isFastMode||isDoubleLoop){if(CallLater.I._update(),Stat.loopCount++,RenderInfo.loopCount=Stat.loopCount,this.renderingEnabled){for(var i=0,n=this._scene3Ds.length;i<n;i++)this._scene3Ds[i]._update();context.clear(),super.render(context,x,y),Stat._StatRender.renderNotCanvas(context,x,y)}Stage._dbgSprite.render(context,0,0),this.renderingEnabled&&(Stage.clear(this._bgColor),context.flush(),VectorGraphManager.instance&&VectorGraphManager.getInstance().endDispose()),this._updateTimers()}}}renderToNative(context,x,y){if(this._renderCount++,this._visible){if(CallLater.I._update(),Stat.loopCount++,RenderInfo.loopCount=Stat.loopCount,this.renderingEnabled){for(var i=0,n=this._scene3Ds.length;i<n;i++)this._scene3Ds[i]._update();context.clear(),super.render(context,x,y),Stat._StatRender.renderNotCanvas(context,x,y)}this.renderingEnabled&&(Stage.clear(this._bgColor),context.flush(),VectorGraphManager.instance&&VectorGraphManager.getInstance().endDispose()),this._updateTimers()}else this._renderCount%5==0&&(CallLater.I._update(),Stat.loopCount++,RenderInfo.loopCount=Stat.loopCount,this._updateTimers())}_updateTimers(){ILaya.systemTimer._update(),ILaya.startTimer._update(),ILaya.physicsTimer._update(),ILaya.updateTimer._update(),ILaya.lateTimer._update(),ILaya.timer._update()}set fullScreenEnabled(value){var document=Browser.document,canvas=Render.canvas;value?(canvas.addEventListener("mousedown",this._requestFullscreen),canvas.addEventListener("touchstart",this._requestFullscreen),document.addEventListener("fullscreenchange",this._fullScreenChanged),document.addEventListener("mozfullscreenchange",this._fullScreenChanged),document.addEventListener("webkitfullscreenchange",this._fullScreenChanged),document.addEventListener("msfullscreenchange",this._fullScreenChanged)):(canvas.removeEventListener("mousedown",this._requestFullscreen),canvas.removeEventListener("touchstart",this._requestFullscreen),document.removeEventListener("fullscreenchange",this._fullScreenChanged),document.removeEventListener("mozfullscreenchange",this._fullScreenChanged),document.removeEventListener("webkitfullscreenchange",this._fullScreenChanged),document.removeEventListener("msfullscreenchange",this._fullScreenChanged))}get frameRate(){return ILaya.Render.isConchApp?this._frameRateNative:this._frameRate}set frameRate(value){if(ILaya.Render.isConchApp){var c=window.conch;switch(value){case Stage.FRAME_FAST:c.config.setLimitFPS(60);break;case Stage.FRAME_MOUSE:c.config.setMouseFrame(2e3);break;case Stage.FRAME_SLOW:c.config.setSlowFrame(!0);break;case Stage.FRAME_SLEEP:c.config.setLimitFPS(1)}this._frameRateNative=value}else this._frameRate=value}_requestFullscreen(){var element=Browser.document.documentElement;element.requestFullscreen?element.requestFullscreen():element.mozRequestFullScreen?element.mozRequestFullScreen():element.webkitRequestFullscreen?element.webkitRequestFullscreen():element.msRequestFullscreen&&element.msRequestFullscreen()}_fullScreenChanged(){ILaya.stage.event(Event.FULL_SCREEN_CHANGE)}exitFullscreen(){var document=Browser.document;document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}isGlobalRepaint(){return this._globalRepaintGet}setGlobalRepaint(){this._globalRepaintSet=!0}add3DUI(uibase){var uiroot=uibase.rootView;this._3dUI.indexOf(uiroot)>=0||this._3dUI.push(uiroot)}remove3DUI(uibase){var uiroot=uibase.rootView,p=this._3dUI.indexOf(uiroot);return p>=0&&(this._3dUI.splice(p,1),!0)}}Stage.SCALE_NOSCALE="noscale",Stage.SCALE_EXACTFIT="exactfit",Stage.SCALE_SHOWALL="showall",Stage.SCALE_NOBORDER="noborder",Stage.SCALE_FULL="full",Stage.SCALE_FIXED_WIDTH="fixedwidth",Stage.SCALE_FIXED_HEIGHT="fixedheight",Stage.SCALE_FIXED_AUTO="fixedauto",Stage.ALIGN_LEFT="left",Stage.ALIGN_RIGHT="right",Stage.ALIGN_CENTER="center",Stage.ALIGN_TOP="top",Stage.ALIGN_MIDDLE="middle",Stage.ALIGN_BOTTOM="bottom",Stage.SCREEN_NONE="none",Stage.SCREEN_HORIZONTAL="horizontal",Stage.SCREEN_VERTICAL="vertical",Stage.FRAME_FAST="fast",Stage.FRAME_SLOW="slow",Stage.FRAME_MOUSE="mouse",Stage.FRAME_SLEEP="sleep",Stage._dbgSprite=new Sprite,Stage.clear=function(value){Context.set2DRenderConfig();var gl=LayaGL.instance;RenderState2D.worldScissorTest&&gl.disable(gl.SCISSOR_TEST);var ctx=Render.context,c=0==ctx._submits._length||Config.preserveDrawingBuffer?ColorUtils.create(value).arrColor:window.Laya.stage._wgColor;c?ctx.clearBG(c[0],c[1],c[2],c[3]):ctx.clearBG(0,0,0,0),RenderState2D.clear()},ClassUtils.regClass("laya.display.Stage",Stage),ClassUtils.regClass("Laya.Stage",Stage);class KeyBoardManager{static __init__(){KeyBoardManager._addEvent("keydown"),KeyBoardManager._addEvent("keypress"),KeyBoardManager._addEvent("keyup")}static _addEvent(type){ILaya.Browser.document.addEventListener(type,function(e){KeyBoardManager._dispatch(e,type)},!0)}static _dispatch(e,type){if(KeyBoardManager.enabled){KeyBoardManager._event._stoped=!1,KeyBoardManager._event.nativeEvent=e,KeyBoardManager._event.keyCode=e.keyCode||e.which||e.charCode,"keydown"===type?KeyBoardManager._pressKeys[KeyBoardManager._event.keyCode]=!0:"keyup"===type&&(KeyBoardManager._pressKeys[KeyBoardManager._event.keyCode]=null);for(var target=ILaya.stage.focus&&null!=ILaya.stage.focus.event&&ILaya.stage.focus.displayedInStage?ILaya.stage.focus:ILaya.stage,ct=target;ct;)ct.event(type,KeyBoardManager._event.setTo(type,ct,target)),ct=ct.parent}}static hasKeyDown(key){return KeyBoardManager._pressKeys[key]}}KeyBoardManager._pressKeys={},KeyBoardManager.enabled=!0,KeyBoardManager._event=new Event;class SoundChannel extends EventDispatcher{constructor(){super(...arguments),this.isStopped=!1}set volume(v){}get volume(){return 1}get position(){return 0}get duration(){return 0}play(){}stop(){this.completeHandler&&this.completeHandler.run()}pause(){}resume(){}__runComplete(handler){handler&&handler.run()}}class AudioSoundChannel extends SoundChannel{constructor(audio){super(),this._audio=null,this._onEnd=this.__onEnd.bind(this),this._resumePlay=this.__resumePlay.bind(this),audio.addEventListener("ended",this._onEnd),this._audio=audio}__onEnd(evt){if(1==this.loops)return this.completeHandler&&(ILaya.systemTimer.once(10,this,this.__runComplete,[this.completeHandler],!1),this.completeHandler=null),this.stop(),void this.event(Event.COMPLETE);this.loops>0&&this.loops--,this.startTime=0,this.play()}__resumePlay(){if(this._audio&&this._audio.removeEventListener("canplay",this._resumePlay),!this.isStopped)try{this._audio.currentTime=this.startTime,Browser.container.appendChild(this._audio),this._audio.play()}catch(e){this.event(Event.ERROR)}}play(){this.isStopped=!1;try{this._audio.playbackRate=ILaya.SoundManager.playbackRate,this._audio.currentTime=this.startTime}catch(e){return void this._audio.addEventListener("canplay",this._resumePlay)}ILaya.SoundManager.addChannel(this),Browser.container.appendChild(this._audio),"play"in this._audio&&this._audio.play()}get position(){return this._audio?this._audio.currentTime:0}get duration(){return this._audio?this._audio.duration:0}stop(){super.stop(),this.isStopped=!0,ILaya.SoundManager.removeChannel(this),this.completeHandler=null,this._audio&&("pause"in this._audio&&ILaya.Render.isConchApp&&this._audio.stop(),this._audio.pause(),this._audio.removeEventListener("ended",this._onEnd),this._audio.removeEventListener("canplay",this._resumePlay),ILaya.Browser.onIE||this._audio!=ILaya.AudioSound._musicAudio&&ILaya.Pool.recover("audio:"+this.url,this._audio),Browser.removeElement(this._audio),this._audio=null,ILaya.SoundManager.autoReleaseSound&&ILaya.SoundManager.disposeSoundLater(this.url))}pause(){this.isStopped=!0,ILaya.SoundManager.removeChannel(this),"pause"in this._audio&&this._audio.pause(),ILaya.SoundManager.autoReleaseSound&&ILaya.SoundManager.disposeSoundLater(this.url)}resume(){this._audio&&(this.isStopped=!1,ILaya.SoundManager.addChannel(this),"play"in this._audio&&this._audio.play())}set volume(v){this._audio&&(this._audio.volume=v)}get volume(){return this._audio?this._audio.volume:1}}class AudioSound extends EventDispatcher{constructor(){super(...arguments),this.loaded=!1}dispose(){var ad=AudioSound._audioCache[this.url];Pool.clearBySign("audio:"+this.url),ad&&(Render.isConchApp||(ad.src=""),delete AudioSound._audioCache[this.url])}static _initMusicAudio(){AudioSound._musicAudio||(AudioSound._musicAudio||(AudioSound._musicAudio=Browser.createElement("audio")),Render.isConchApp||Browser.document.addEventListener("mousedown",AudioSound._makeMusicOK))}static _makeMusicOK(){Browser.document.removeEventListener("mousedown",AudioSound._makeMusicOK),AudioSound._musicAudio.src?AudioSound._musicAudio.play():(AudioSound._musicAudio.src="",AudioSound._musicAudio.load())}load(url){var ad;if(url=URL.formatURL(url),this.url=url,url==ILaya.SoundManager._bgMusic?(AudioSound._initMusicAudio(),(ad=AudioSound._musicAudio).src!=url&&(AudioSound._audioCache[ad.src]=null,ad=null)):ad=AudioSound._audioCache[url],ad&&ad.readyState>=2)this.event(Event.COMPLETE);else{ad||(url==ILaya.SoundManager._bgMusic?(AudioSound._initMusicAudio(),ad=AudioSound._musicAudio):ad=Browser.createElement("audio"),AudioSound._audioCache[url]=ad,ad.src=url),ad.addEventListener("canplaythrough",onLoaded),ad.addEventListener("error",onErr);var me=this;this.audio=ad,ad.load?ad.load():onErr()}function onLoaded(){offs(),me.loaded=!0,me.event(Event.COMPLETE)}function onErr(){ad.load=null,offs(),me.event(Event.ERROR)}function offs(){ad.removeEventListener("canplaythrough",onLoaded),ad.removeEventListener("error",onErr)}}play(startTime=0,loops=0){if(!this.url)return null;var ad,tAd;if(!(ad=this.url==ILaya.SoundManager._bgMusic?AudioSound._musicAudio:AudioSound._audioCache[this.url]))return null;tAd=Pool.getItem("audio:"+this.url),Render.isConchApp?tAd||((tAd=Browser.createElement("audio")).src=this.url):this.url==ILaya.SoundManager._bgMusic?(AudioSound._initMusicAudio(),(tAd=AudioSound._musicAudio).src=this.url):tAd=tAd||ad.cloneNode(!0);var channel=new AudioSoundChannel(tAd);return channel.url=this.url,channel.loops=loops,channel.startTime=startTime,channel.play(),ILaya.SoundManager.addChannel(channel),channel}get duration(){var ad;return(ad=AudioSound._audioCache[this.url])?ad.duration:0}}AudioSound._audioCache={};class WebAudioSoundChannel extends SoundChannel{constructor(){super(),this.bufferSource=null,this._currentTime=0,this._volume=1,this._startTime=0,this._pauseTime=0,this.context=ILaya.WebAudioSound.ctx,this._onPlayEnd=Utils.bind(this.__onPlayEnd,this),this.context.createGain?this.gain=this.context.createGain():this.gain=this.context.createGainNode()}play(){if(ILaya.SoundManager.addChannel(this),this.isStopped=!1,this._clearBufferSource(),this.audioBuffer){if(this.startTime>=this.duration)return stop();var context=this.context,gain=this.gain,bufferSource=context.createBufferSource();this.bufferSource=bufferSource,bufferSource.buffer=this.audioBuffer,bufferSource.connect(gain),gain&&gain.disconnect(),gain.connect(context.destination),bufferSource.onended=this._onPlayEnd,this._startTime=Browser.now(),this.gain.gain.setTargetAtTime?this.gain.gain.setTargetAtTime(this._volume,this.context.currentTime,WebAudioSoundChannel.SetTargetDelay):this.gain.gain.value=this._volume,0==this.loops&&(bufferSource.loop=!0),bufferSource.playbackRate.setTargetAtTime?bufferSource.playbackRate.setTargetAtTime(ILaya.SoundManager.playbackRate,this.context.currentTime,WebAudioSoundChannel.SetTargetDelay):bufferSource.playbackRate.value=ILaya.SoundManager.playbackRate,bufferSource.start(0,this.startTime),this._currentTime=0}}__onPlayEnd(){if(1==this.loops)return this.completeHandler&&(ILaya.timer.once(10,this,this.__runComplete,[this.completeHandler],!1),this.completeHandler=null),this.stop(),void this.event(Event.COMPLETE);this.loops>0&&this.loops--,this.startTime=0,this.play()}get position(){return this.bufferSource?(Browser.now()-this._startTime)/1e3+this.startTime:0}get duration(){return this.audioBuffer?this.audioBuffer.duration:0}_clearBufferSource(){if(this.bufferSource){var sourceNode=this.bufferSource;sourceNode.stop?sourceNode.stop(0):sourceNode.noteOff(0),sourceNode.disconnect(0),sourceNode.onended=null,WebAudioSoundChannel._tryCleanFailed||this._tryClearBuffer(sourceNode),this.bufferSource=null}}_tryClearBuffer(sourceNode){if(Browser.onMac)try{sourceNode.buffer=ILaya.WebAudioSound._miniBuffer}catch(e){WebAudioSoundChannel._tryCleanFailed=!0}else try{sourceNode.buffer=null}catch(e){WebAudioSoundChannel._tryCleanFailed=!0}}stop(){super.stop(),this._clearBufferSource(),this.audioBuffer=null,this.gain&&this.gain.disconnect(),this.isStopped=!0,ILaya.SoundManager.removeChannel(this),this.completeHandler=null,ILaya.SoundManager.autoReleaseSound&&ILaya.SoundManager.disposeSoundLater(this.url)}pause(){this.isStopped||(this._pauseTime=this.position),this._clearBufferSource(),this.gain&&this.gain.disconnect(),this.isStopped=!0,ILaya.SoundManager.removeChannel(this),ILaya.SoundManager.autoReleaseSound&&ILaya.SoundManager.disposeSoundLater(this.url)}resume(){this.startTime=this._pauseTime,this.play()}set volume(v){this._volume=v,this.isStopped||(this.gain.gain.setTargetAtTime?this.gain.gain.setTargetAtTime(v,this.context.currentTime,WebAudioSoundChannel.SetTargetDelay):this.gain.gain.value=v)}get volume(){return this._volume}}WebAudioSoundChannel._tryCleanFailed=!1,WebAudioSoundChannel.SetTargetDelay=.001;class WebAudioSound extends EventDispatcher{constructor(){super(...arguments),this.loaded=!1,this._disposed=!1}static decode(){WebAudioSound.buffs.length<=0||WebAudioSound.isDecoding||(WebAudioSound.isDecoding=!0,WebAudioSound.tInfo=WebAudioSound.buffs.shift(),WebAudioSound.ctx.decodeAudioData(WebAudioSound.tInfo.buffer,WebAudioSound._done,WebAudioSound._fail))}static _done(audioBuffer){WebAudioSound.e.event("loaded:"+WebAudioSound.tInfo.url,audioBuffer),WebAudioSound.isDecoding=!1,WebAudioSound.decode()}static _fail(){WebAudioSound.e.event("err:"+WebAudioSound.tInfo.url,null),WebAudioSound.isDecoding=!1,WebAudioSound.decode()}static _playEmptySound(){if(null!=WebAudioSound.ctx){var source=WebAudioSound.ctx.createBufferSource();source.buffer=WebAudioSound._miniBuffer,source.connect(WebAudioSound.ctx.destination),source.start(0,0,0)}}static _unlock(){WebAudioSound._unlocked||(WebAudioSound._playEmptySound(),"running"==WebAudioSound.ctx.state&&(window.document.removeEventListener("mousedown",WebAudioSound._unlock,!0),window.document.removeEventListener("touchend",WebAudioSound._unlock,!0),window.document.removeEventListener("touchstart",WebAudioSound._unlock,!0),WebAudioSound._unlocked=!0))}static initWebAudio(){"running"!=WebAudioSound.ctx.state&&(WebAudioSound._unlock(),window.document.addEventListener("mousedown",WebAudioSound._unlock,!0),window.document.addEventListener("touchend",WebAudioSound._unlock,!0),window.document.addEventListener("touchstart",WebAudioSound._unlock,!0))}load(url){var me=this;if(url=URL.formatURL(url),this.url=url,this.audioBuffer=WebAudioSound._dataCache[url],this.audioBuffer)this._loaded(this.audioBuffer);else if(WebAudioSound.e.on("loaded:"+url,this,this._loaded),WebAudioSound.e.on("err:"+url,this,this._err),!WebAudioSound.__loadingSound[url]){WebAudioSound.__loadingSound[url]=!0;var request=new XMLHttpRequest;request.open("GET",url,!0),request.responseType="arraybuffer",request.onload=function(){me._disposed?me._removeLoadEvents():(me.data=request.response,WebAudioSound.buffs.push({buffer:me.data,url:me.url}),WebAudioSound.decode())},request.onerror=function(e){me._err()},request.send()}}_err(){this._removeLoadEvents(),WebAudioSound.__loadingSound[this.url]=!1,this.event(Event.ERROR)}_loaded(audioBuffer){this._removeLoadEvents(),this._disposed||(this.audioBuffer=audioBuffer,WebAudioSound._dataCache[this.url]=this.audioBuffer,this.loaded=!0,this.event(Event.COMPLETE))}_removeLoadEvents(){WebAudioSound.e.off("loaded:"+this.url,this,this._loaded),WebAudioSound.e.off("err:"+this.url,this,this._err)}__playAfterLoaded(){if(this.__toPlays){var i,len,toPlays,tParams;for(len=(toPlays=this.__toPlays).length,i=0;i<len;i++)(tParams=toPlays[i])[2]&&!tParams[2].isStopped&&this.play(tParams[0],tParams[1],tParams[2]);this.__toPlays.length=0}}play(startTime=0,loops=0,channel=null){return channel=channel||new WebAudioSoundChannel,this.audioBuffer||this.url&&(this.__toPlays||(this.__toPlays=[]),this.__toPlays.push([startTime,loops,channel]),this.once(Event.COMPLETE,this,this.__playAfterLoaded),this.load(this.url)),channel.url=this.url,channel.loops=loops,channel.audioBuffer=this.audioBuffer,channel.startTime=startTime,channel.play(),ILaya.SoundManager.addChannel(channel),channel}get duration(){return this.audioBuffer?this.audioBuffer.duration:0}dispose(){this._disposed=!0,delete WebAudioSound._dataCache[this.url],delete WebAudioSound.__loadingSound[this.url],this.audioBuffer=null,this.data=null,this.__toPlays=[]}}WebAudioSound._dataCache={},WebAudioSound.webAudioEnabled=window.AudioContext||window.webkitAudioContext||window.mozAudioContext,WebAudioSound.ctx=WebAudioSound.webAudioEnabled?new(window.AudioContext||window.webkitAudioContext||window.mozAudioContext):void 0,WebAudioSound.buffs=[],WebAudioSound.isDecoding=!1,WebAudioSound._miniBuffer=WebAudioSound.ctx?WebAudioSound.ctx.createBuffer(1,1,22050):void 0,WebAudioSound.e=new EventDispatcher,WebAudioSound._unlocked=!1,WebAudioSound.__loadingSound={};class SoundManager{static __init__(){var win=ILaya.Browser.window,supportWebAudio=!!(win.AudioContext||win.webkitAudioContext||win.mozAudioContext);return supportWebAudio&&WebAudioSound.initWebAudio(),SoundManager._soundClass=supportWebAudio?WebAudioSound:AudioSound,AudioSound._initMusicAudio(),SoundManager._musicClass=AudioSound,supportWebAudio}static addChannel(channel){SoundManager._channels.indexOf(channel)>=0||SoundManager._channels.push(channel)}static removeChannel(channel){var i;for(i=SoundManager._channels.length-1;i>=0;i--)SoundManager._channels[i]==channel&&SoundManager._channels.splice(i,1)}static disposeSoundLater(url){SoundManager._lastSoundUsedTimeDic[url]=ILaya.Browser.now(),SoundManager._isCheckingDispose||(SoundManager._isCheckingDispose=!0,ILaya.timer.loop(5e3,null,SoundManager._checkDisposeSound))}static _checkDisposeSound(){var key,tTime=ILaya.Browser.now(),hasCheck=!1;for(key in SoundManager._lastSoundUsedTimeDic)tTime-SoundManager._lastSoundUsedTimeDic[key]>3e4?(delete SoundManager._lastSoundUsedTimeDic[key],SoundManager.disposeSoundIfNotUsed(key)):hasCheck=!0;hasCheck||(SoundManager._isCheckingDispose=!1,ILaya.timer.clear(null,SoundManager._checkDisposeSound))}static disposeSoundIfNotUsed(url){var i;for(i=SoundManager._channels.length-1;i>=0;i--)if(SoundManager._channels[i].url==url)return;SoundManager.destroySound(url)}static set autoStopMusic(v){ILaya.stage.off(Event.BLUR,null,SoundManager._stageOnBlur),ILaya.stage.off(Event.FOCUS,null,SoundManager._stageOnFocus),ILaya.stage.off(Event.VISIBILITY_CHANGE,null,SoundManager._visibilityChange),SoundManager._autoStopMusic=v,v&&(ILaya.stage.on(Event.BLUR,null,SoundManager._stageOnBlur),ILaya.stage.on(Event.FOCUS,null,SoundManager._stageOnFocus),ILaya.stage.on(Event.VISIBILITY_CHANGE,null,SoundManager._visibilityChange))}static get autoStopMusic(){return SoundManager._autoStopMusic}static _visibilityChange(){ILaya.stage.isVisibility?SoundManager._stageOnFocus():SoundManager._stageOnBlur()}static _stageOnBlur(){SoundManager._isActive=!1,SoundManager._musicChannel&&(SoundManager._musicChannel.isStopped||(SoundManager._blurPaused=!0,SoundManager._musicChannel.pause())),SoundManager.stopAllSound(),ILaya.stage.once(Event.MOUSE_DOWN,null,SoundManager._stageOnFocus)}static _recoverWebAudio(){WebAudioSound.ctx&&"running"!=WebAudioSound.ctx.state&&WebAudioSound.ctx.resume&&WebAudioSound.ctx.resume()}static _stageOnFocus(){SoundManager._isActive=!0,SoundManager._recoverWebAudio(),ILaya.stage.off(Event.MOUSE_DOWN,null,SoundManager._stageOnFocus),SoundManager._blurPaused&&SoundManager._musicChannel&&SoundManager._musicChannel.isStopped&&(SoundManager._blurPaused=!1,SoundManager._musicChannel.resume())}static set muted(value){value!=SoundManager._muted&&(value&&SoundManager.stopAllSound(),SoundManager.musicMuted=value,SoundManager._muted=value)}static get muted(){return SoundManager._muted}static set soundMuted(value){SoundManager._soundMuted=value}static get soundMuted(){return SoundManager._soundMuted}static set musicMuted(value){value!=SoundManager._musicMuted&&(value?(SoundManager._bgMusic&&SoundManager._musicChannel&&!SoundManager._musicChannel.isStopped?ILaya.Render.isConchApp?SoundManager._musicChannel._audio&&(SoundManager._musicChannel._audio.muted=!0):SoundManager._musicChannel.pause():SoundManager._musicChannel=null,SoundManager._musicMuted=value):(SoundManager._musicMuted=value,SoundManager._bgMusic&&SoundManager._musicChannel&&(ILaya.Render.isConchApp?SoundManager._musicChannel._audio&&(SoundManager._musicChannel._audio.muted=!1):SoundManager._musicChannel.resume())))}static get musicMuted(){return SoundManager._musicMuted}static get useAudioMusic(){return SoundManager._useAudioMusic}static set useAudioMusic(value){SoundManager._useAudioMusic=value,SoundManager._musicClass=value?AudioSound:null}static playSound(url,loops=1,complete=null,soundClass=null,startTime=0){if(!SoundManager._isActive||!url)return null;if(SoundManager._muted)return null;if(SoundManager._recoverWebAudio(),(url=URL.formatURL(url))==SoundManager._bgMusic){if(SoundManager._musicMuted)return null}else{if(ILaya.Render.isConchApp){var ext=Utils.getFileExtension(url);if("wav"!=ext&&"ogg"!=ext)return alert("The sound only supports wav or ogg format,for optimal performance reason,please refer to the official website document."),null}if(SoundManager._soundMuted)return null}var tSound,channel;return ILaya.Browser.onBDMiniGame||ILaya.Browser.onMiniGame||ILaya.Browser.onKGMiniGame||ILaya.Browser.onQGMiniGame||ILaya.Browser.onVVMiniGame||ILaya.Browser.onAlipayMiniGame||ILaya.Browser.onQQMiniGame||(tSound=ILaya.loader.getRes(url)),soundClass||(soundClass=SoundManager._soundClass),tSound||((tSound=new soundClass).load(url),ILaya.Browser.onBDMiniGame||ILaya.Browser.onMiniGame||ILaya.Browser.onKGMiniGame||ILaya.Browser.onQGMiniGame||ILaya.Browser.onVVMiniGame||ILaya.Browser.onAlipayMiniGame||ILaya.Browser.onQQMiniGame||ILaya.Loader.cacheRes(url,tSound)),(channel=tSound.play(startTime,loops))?(channel.url=url,channel.volume=url==SoundManager._bgMusic?SoundManager.musicVolume:SoundManager.soundVolume,channel.completeHandler=complete,channel):null}static destroySound(url){var tSound=ILaya.loader.getRes(url);tSound&&(ILaya.Loader.clearRes(url),tSound.dispose())}static playMusic(url,loops=0,complete=null,startTime=0){return url=URL.formatURL(url),SoundManager._bgMusic=url,SoundManager._musicChannel&&SoundManager._musicChannel.stop(),SoundManager._musicChannel=SoundManager.playSound(url,loops,complete,SoundManager._musicClass,startTime)}static stopSound(url){var i,channel;for(url=URL.formatURL(url),i=SoundManager._channels.length-1;i>=0;i--)(channel=SoundManager._channels[i]).url==url&&channel.stop()}static stopAll(){var i;for(SoundManager._bgMusic=null,i=SoundManager._channels.length-1;i>=0;i--)SoundManager._channels[i].stop()}static stopAllSound(){var i,channel;for(i=SoundManager._channels.length-1;i>=0;i--)(channel=SoundManager._channels[i]).url!=SoundManager._bgMusic&&channel.stop()}static stopMusic(){SoundManager._musicChannel&&SoundManager._musicChannel.stop(),SoundManager._bgMusic=null}static setSoundVolume(volume,url=null){var i,channel;if(url)url=URL.formatURL(url),SoundManager._setVolume(url,volume);else for(SoundManager.soundVolume=volume,i=SoundManager._channels.length-1;i>=0;i--)(channel=SoundManager._channels[i]).url!=SoundManager._bgMusic&&(channel.volume=volume)}static setMusicVolume(volume){SoundManager.musicVolume=volume,SoundManager._setVolume(SoundManager._bgMusic,volume)}static _setVolume(url,volume){var i,channel;for(url=URL.formatURL(url),i=SoundManager._channels.length-1;i>=0;i--)(channel=SoundManager._channels[i]).url==url&&(channel.volume=volume)}}SoundManager.musicVolume=1,SoundManager.soundVolume=1,SoundManager.playbackRate=1,SoundManager._useAudioMusic=!0,SoundManager._muted=!1,SoundManager._soundMuted=!1,SoundManager._musicMuted=!1,SoundManager._bgMusic=null,SoundManager._musicChannel=null,SoundManager._channels=[],SoundManager._blurPaused=!1,SoundManager._isActive=!0,SoundManager._lastSoundUsedTimeDic={},SoundManager._isCheckingDispose=!1,SoundManager.autoReleaseSound=!0;class HttpRequest extends EventDispatcher{constructor(){super(...arguments),this._http=new XMLHttpRequest}send(url,data=null,method="get",responseType="text",headers=null){this._responseType=responseType,this._data=null,(Browser.onVVMiniGame||Browser.onQGMiniGame||Browser.onQQMiniGame)&&(url=encodeURI(url)),this._url=url;var _this=this,http=this._http;if(url=URL.getAdptedFilePath(url),http.open(method,url,!0),headers)for(var i=0;i<headers.length;i++)http.setRequestHeader(headers[i++],headers[i]);else window.conch||(data&&"string"!=typeof data?http.setRequestHeader("Content-Type","application/json"):http.setRequestHeader("Content-Type","application/x-www-form-urlencoded"));let restype="arraybuffer"!==responseType?"text":"arraybuffer";http.responseType=restype,http.dataType&&(http.dataType=restype),http.onerror=function(e){_this._onError(e)},http.onabort=function(e){_this._onAbort(e)},http.onprogress=function(e){_this._onProgress(e)},http.onload=function(e){_this._onLoad(e)},http.send(data)}_onProgress(e){e&&e.lengthComputable&&this.event(Event.PROGRESS,e.loaded/e.total)}_onAbort(e){this.error("Request was aborted by user")}_onError(e){this.error("Request failed Status:"+this._http.status+" text:"+this._http.statusText)}_onLoad(e){var http=this._http,status=void 0!==http.status?http.status:200;200===status||204===status||0===status?this.complete():this.error("["+http.status+"]"+http.statusText+":"+http.responseURL)}error(message){this.clear(),console.warn(this.url,message),this.event(Event.ERROR,message)}complete(){this.clear();var flag=!0;try{"json"===this._responseType?this._data=JSON.parse(this._http.responseText):"xml"===this._responseType?this._data=Utils.parseXMLFromString(this._http.responseText):this._data=this._http.response||this._http.responseText}catch(e){flag=!1,this.error(e.message)}flag&&this.event(Event.COMPLETE,this._data instanceof Array?[this._data]:this._data)}clear(){var http=this._http;http.onerror=http.onabort=http.onprogress=http.onload=null}get url(){return this._url}get data(){return this._data}get http(){return this._http}}class BitmapFont{constructor(){this._fontCharDic={},this._fontWidthMap={},this._maxWidth=0,this._spaceWidth=10,this.fontSize=12,this.autoScaleSize=!1,this.letterSpacing=0}loadFont(path,complete){this._path=path,this._complete=complete,path&&-1!==path.indexOf(".fnt")?ILaya.loader.load([{url:path,type:ILaya.Loader.XML},{url:path.replace(".fnt",".png"),type:ILaya.Loader.IMAGE}],Handler.create(this,this._onLoaded)):console.error('Bitmap font configuration information must be a ".fnt" file')}_onLoaded(){this.parseFont(ILaya.Loader.getRes(this._path),ILaya.Loader.getRes(this._path.replace(".fnt",".png"))),this._complete&&this._complete.run()}parseFont(xml,texture){if(null!=xml&&null!=texture){this._texture=texture;var tInfo=xml.getElementsByTagName("info");if(!tInfo[0].getAttributeNode)return this.parseFont2(xml,texture);this.fontSize=parseInt(tInfo[0].getAttributeNode("size").nodeValue);var tPaddingArray=tInfo[0].getAttributeNode("padding").nodeValue.split(",");this._padding=[parseInt(tPaddingArray[0]),parseInt(tPaddingArray[1]),parseInt(tPaddingArray[2]),parseInt(tPaddingArray[3])];var chars=xml.getElementsByTagName("char"),i=0;for(i=0;i<chars.length;i++){var tAttribute=chars[i],tId=parseInt(tAttribute.getAttributeNode("id").nodeValue),xOffset=parseInt(tAttribute.getAttributeNode("xoffset").nodeValue)/1,yOffset=parseInt(tAttribute.getAttributeNode("yoffset").nodeValue)/1,xAdvance=parseInt(tAttribute.getAttributeNode("xadvance").nodeValue)/1,region=new Rectangle;region.x=parseInt(tAttribute.getAttributeNode("x").nodeValue),region.y=parseInt(tAttribute.getAttributeNode("y").nodeValue),region.width=parseInt(tAttribute.getAttributeNode("width").nodeValue),region.height=parseInt(tAttribute.getAttributeNode("height").nodeValue);var tTexture=Texture.create(texture,region.x,region.y,region.width,region.height,xOffset,yOffset);this._maxWidth=Math.max(this._maxWidth,xAdvance+this.letterSpacing),this._fontCharDic[tId]=tTexture,this._fontWidthMap[tId]=xAdvance}}}parseFont2(xml,texture){if(null!=xml&&null!=texture){this._texture=texture;var tInfo=xml.getElementsByTagName("info");this.fontSize=parseInt(tInfo[0].attributes.size.nodeValue);var tPaddingArray=tInfo[0].attributes.padding.nodeValue.split(",");this._padding=[parseInt(tPaddingArray[0]),parseInt(tPaddingArray[1]),parseInt(tPaddingArray[2]),parseInt(tPaddingArray[3])];var chars=xml.getElementsByTagName("char"),i=0;for(i=0;i<chars.length;i++){var tAttribute=chars[i].attributes,tId=parseInt(tAttribute.id.nodeValue),xOffset=parseInt(tAttribute.xoffset.nodeValue)/1,yOffset=parseInt(tAttribute.yoffset.nodeValue)/1,xAdvance=parseInt(tAttribute.xadvance.nodeValue)/1,region=new Rectangle;region.x=parseInt(tAttribute.x.nodeValue),region.y=parseInt(tAttribute.y.nodeValue),region.width=parseInt(tAttribute.width.nodeValue),region.height=parseInt(tAttribute.height.nodeValue);var tTexture=Texture.create(texture,region.x,region.y,region.width,region.height,xOffset,yOffset);this._maxWidth=Math.max(this._maxWidth,xAdvance+this.letterSpacing),this._fontCharDic[tId]=tTexture,this._fontWidthMap[tId]=xAdvance}}}getCharTexture(char){return this._fontCharDic[char.charCodeAt(0)]}destroy(){if(this._texture){for(var p in this._fontCharDic){var tTexture=this._fontCharDic[p];tTexture&&tTexture.destroy()}this._texture.destroy(),this._fontCharDic=null,this._fontWidthMap=null,this._texture=null,this._complete=null,this._padding=null}}setSpaceWidth(spaceWidth){this._spaceWidth=spaceWidth}getCharWidth(char){var code=char.charCodeAt(0);return this._fontWidthMap[code]?this._fontWidthMap[code]+this.letterSpacing:" "===char?this._spaceWidth+this.letterSpacing:0}getTextWidth(text){for(var tWidth=0,i=0,n=text.length;i<n;i++)tWidth+=this.getCharWidth(text.charAt(i));return tWidth}getMaxWidth(){return this._maxWidth}getMaxHeight(){return this.fontSize}_drawText(text,sprite,drawX,drawY,align,width){var tTexture,tWidth=this.getTextWidth(text),dx=0;"center"===align&&(dx=(width-tWidth)/2),"right"===align&&(dx=width-tWidth);for(var tx=0,i=0,n=text.length;i<n;i++)(tTexture=this.getCharTexture(text.charAt(i)))&&(sprite.graphics.drawImage(tTexture,drawX+tx+dx,drawY),tx+=this.getCharWidth(text.charAt(i)))}}ClassUtils.regClass("laya.display.BitmapFont",BitmapFont),ClassUtils.regClass("Laya.BitmapFont",BitmapFont);class Prefab{create(){return this.json?ILaya.SceneUtils.createByData(null,this.json):null}}class Byte{constructor(data=null){this._xd_=!0,this._allocated_=8,this._pos_=0,this._length=0,data?(this._u8d_=new Uint8Array(data),this._d_=new DataView(this._u8d_.buffer),this._length=this._d_.byteLength):this._resizeBuffer(this._allocated_)}static getSystemEndian(){if(!Byte._sysEndian){var buffer=new ArrayBuffer(2);new DataView(buffer).setInt16(0,256,!0),Byte._sysEndian=256===new Int16Array(buffer)[0]?Byte.LITTLE_ENDIAN:Byte.BIG_ENDIAN}return Byte._sysEndian}get buffer(){var rstBuffer=this._d_.buffer;return rstBuffer.byteLength===this._length?rstBuffer:rstBuffer.slice(0,this._length)}get endian(){return this._xd_?Byte.LITTLE_ENDIAN:Byte.BIG_ENDIAN}set endian(value){this._xd_=value===Byte.LITTLE_ENDIAN}set length(value){this._allocated_<value?this._resizeBuffer(this._allocated_=Math.floor(Math.max(value,2*this._allocated_))):this._allocated_>value&&this._resizeBuffer(this._allocated_=value),this._length=value}get length(){return this._length}_resizeBuffer(len){try{var newByteView=new Uint8Array(len);null!=this._u8d_&&(this._u8d_.length<=len?newByteView.set(this._u8d_):newByteView.set(this._u8d_.subarray(0,len))),this._u8d_=newByteView,this._d_=new DataView(newByteView.buffer)}catch(err){throw"Invalid typed array length:"+len}}getString(){return this.readString()}readString(){return this._rUTF(this.getUint16())}getFloat32Array(start,len){return this.readFloat32Array(start,len)}readFloat32Array(start,len){var end=start+len;end=end>this._length?this._length:end;var v=new Float32Array(this._d_.buffer.slice(start,end));return this._pos_=end,v}getUint8Array(start,len){return this.readUint8Array(start,len)}readUint8Array(start,len){var end=start+len;end=end>this._length?this._length:end;var v=new Uint8Array(this._d_.buffer.slice(start,end));return this._pos_=end,v}getInt16Array(start,len){return this.readInt16Array(start,len)}readInt16Array(start,len){var end=start+len;end=end>this._length?this._length:end;var v=new Int16Array(this._d_.buffer.slice(start,end));return this._pos_=end,v}getFloat32(){return this.readFloat32()}readFloat32(){if(this._pos_+4>this._length)throw"getFloat32 error - Out of bounds";var v=this._d_.getFloat32(this._pos_,this._xd_);return this._pos_+=4,v}getFloat64(){return this.readFloat64()}readFloat64(){if(this._pos_+8>this._length)throw"getFloat64 error - Out of bounds";var v=this._d_.getFloat64(this._pos_,this._xd_);return this._pos_+=8,v}writeFloat32(value){this._ensureWrite(this._pos_+4),this._d_.setFloat32(this._pos_,value,this._xd_),this._pos_+=4}writeFloat64(value){this._ensureWrite(this._pos_+8),this._d_.setFloat64(this._pos_,value,this._xd_),this._pos_+=8}getInt32(){return this.readInt32()}readInt32(){if(this._pos_+4>this._length)throw"getInt32 error - Out of bounds";var float=this._d_.getInt32(this._pos_,this._xd_);return this._pos_+=4,float}getUint32(){return this.readUint32()}readUint32(){if(this._pos_+4>this._length)throw"getUint32 error - Out of bounds";var v=this._d_.getUint32(this._pos_,this._xd_);return this._pos_+=4,v}writeInt32(value){this._ensureWrite(this._pos_+4),this._d_.setInt32(this._pos_,value,this._xd_),this._pos_+=4}writeUint32(value){this._ensureWrite(this._pos_+4),this._d_.setUint32(this._pos_,value,this._xd_),this._pos_+=4}getInt16(){return this.readInt16()}readInt16(){if(this._pos_+2>this._length)throw"getInt16 error - Out of bounds";var us=this._d_.getInt16(this._pos_,this._xd_);return this._pos_+=2,us}getUint16(){return this.readUint16()}readUint16(){if(this._pos_+2>this._length)throw"getUint16 error - Out of bounds";var us=this._d_.getUint16(this._pos_,this._xd_);return this._pos_+=2,us}writeUint16(value){this._ensureWrite(this._pos_+2),this._d_.setUint16(this._pos_,value,this._xd_),this._pos_+=2}writeInt16(value){this._ensureWrite(this._pos_+2),this._d_.setInt16(this._pos_,value,this._xd_),this._pos_+=2}getUint8(){return this.readUint8()}readUint8(){if(this._pos_+1>this._length)throw"getUint8 error - Out of bounds";return this._u8d_[this._pos_++]}writeUint8(value){this._ensureWrite(this._pos_+1),this._d_.setUint8(this._pos_,value),this._pos_++}_getUInt8(pos){return this._readUInt8(pos)}_readUInt8(pos){return this._d_.getUint8(pos)}_getUint16(pos){return this._readUint16(pos)}_readUint16(pos){return this._d_.getUint16(pos,this._xd_)}_getMatrix(){return this._readMatrix()}_readMatrix(){return new Matrix(this.getFloat32(),this.getFloat32(),this.getFloat32(),this.getFloat32(),this.getFloat32(),this.getFloat32())}_rUTF(len){var c,c2,c3,max=this._pos_+len,f=String.fromCharCode,u=this._u8d_,strs=[],n=0;for(strs.length=1e3;this._pos_<max;)(c=u[this._pos_++])<128?0!=c&&(strs[n++]=f(c)):c<224?strs[n++]=f((63&c)<<6|127&u[this._pos_++]):c<240?(c2=u[this._pos_++],strs[n++]=f((31&c)<<12|(127&c2)<<6|127&u[this._pos_++])):(c2=u[this._pos_++],c3=u[this._pos_++],strs[n++]=f((15&c)<<18|(127&c2)<<12|c3<<6&127|127&u[this._pos_++]));return strs.length=n,strs.join("")}getCustomString(len){return this.readCustomString(len)}readCustomString(len){for(var c,v="",ulen=0,f=String.fromCharCode,u=this._u8d_;len>0;)if((c=u[this._pos_])<128)v+=f(c),this._pos_++,len--;else for(ulen=c-128,this._pos_++,len-=ulen;ulen>0;)c=u[this._pos_++],v+=f(u[this._pos_++]<<8|c),ulen--;return v}get pos(){return this._pos_}set pos(value){this._pos_=value}get bytesAvailable(){return this._length-this._pos_}clear(){this._pos_=0,this.length=0}__getBuffer(){return this._d_.buffer}writeUTFBytes(value){for(var i=0,sz=(value+="").length;i<sz;i++){var c=value.charCodeAt(i);c<=127?this.writeByte(c):c<=2047?(this._ensureWrite(this._pos_+2),this._u8d_.set([192|c>>6,128|63&c],this._pos_),this._pos_+=2):c<=65535?(this._ensureWrite(this._pos_+3),this._u8d_.set([224|c>>12,128|c>>6&63,128|63&c],this._pos_),this._pos_+=3):(this._ensureWrite(this._pos_+4),this._u8d_.set([240|c>>18,128|c>>12&63,128|c>>6&63,128|63&c],this._pos_),this._pos_+=4)}}writeUTFString(value){var tPos=this.pos;this.writeUint16(1),this.writeUTFBytes(value);var dPos=this.pos-tPos-2;this._d_.setUint16(tPos,dPos,this._xd_)}readUTFString(){return this.readUTFBytes(this.getUint16())}getUTFString(){return this.readUTFString()}readUTFBytes(len=-1){if(0===len)return"";var lastBytes=this.bytesAvailable;if(len>lastBytes)throw"readUTFBytes error - Out of bounds";return len=len>0?len:lastBytes,this._rUTF(len)}getUTFBytes(len=-1){return this.readUTFBytes(len)}writeByte(value){this._ensureWrite(this._pos_+1),this._d_.setInt8(this._pos_,value),this._pos_+=1}readByte(){if(this._pos_+1>this._length)throw"readByte error - Out of bounds";return this._d_.getInt8(this._pos_++)}getByte(){return this.readByte()}_ensureWrite(lengthToEnsure){this._length<lengthToEnsure&&(this._length=lengthToEnsure),this._allocated_<lengthToEnsure&&(this.length=lengthToEnsure)}writeArrayBuffer(arraybuffer,offset=0,length=0){if(offset<0||length<0)throw"writeArrayBuffer error - Out of bounds";0==length&&(length=arraybuffer.byteLength-offset),this._ensureWrite(this._pos_+length);var uint8array=new Uint8Array(arraybuffer);this._u8d_.set(uint8array.subarray(offset,offset+length),this._pos_),this._pos_+=length}readArrayBuffer(length){var rst;return rst=this._u8d_.buffer.slice(this._pos_,this._pos_+length),this._pos_=this._pos_+length,rst}}Byte.BIG_ENDIAN="bigEndian",Byte.LITTLE_ENDIAN="littleEndian",Byte._sysEndian=null;class Loader extends EventDispatcher{constructor(){super(...arguments),this._customParse=!1}static getTypeFromUrl(url){var type=Utils.getFileExtension(url);return type?Loader.typeMap[type]:(console.warn("Not recognize the resources suffix",url),"text")}load(url,type=null,cache=!0,group=null,ignoreCache=!1,useWorkerLoader=ILaya.WorkerLoader.enable){if(url){if(Loader.setGroup(url,"666"),this._url=url,0===url.indexOf("data:image")?type=Loader.IMAGE:url=URL.formatURL(url),this._type=type||(type=Loader.getTypeFromUrl(this._url)),this._cache=cache,this._useWorkerLoader=useWorkerLoader,this._data=null,useWorkerLoader&&ILaya.WorkerLoader.enableWorkerLoader(),!ignoreCache&&Loader.loadedMap[url])return this._data=Loader.loadedMap[url],this.event(Event.PROGRESS,1),void this.event(Event.COMPLETE,this._data);if(group&&Loader.setGroup(url,group),null!=Loader.parserMap[type])return this._customParse=!0,void(Loader.parserMap[type]instanceof Handler?Loader.parserMap[type].runWith(this):Loader.parserMap[type].call(null,this));this._loadResourceFilter(type,url)}else this.onLoaded(null)}_loadResourceFilter(type,url){this._loadResource(type,url)}_loadResource(type,url){switch(type){case Loader.IMAGE:case"htmlimage":case"nativeimage":this._loadImage(url);break;case Loader.SOUND:this._loadSound(url);break;case Loader.TTF:this._loadTTF(url);break;case Loader.ATLAS:case Loader.PREFAB:case Loader.PLF:this._loadHttpRequestWhat(url,Loader.JSON);break;case Loader.FONT:this._loadHttpRequestWhat(url,Loader.XML);break;case Loader.PLFB:this._loadHttpRequestWhat(url,Loader.BUFFER);break;default:this._loadHttpRequestWhat(url,type)}}_loadHttpRequest(url,contentType,onLoadCaller,onLoad,onProcessCaller,onProcess,onErrorCaller,onError){Browser.onVVMiniGame?this._http=new HttpRequest:this._http||(this._http=new HttpRequest),this._http.on(Event.PROGRESS,onProcessCaller,onProcess),this._http.on(Event.COMPLETE,onLoadCaller,onLoad),this._http.on(Event.ERROR,onErrorCaller,onError),this._http.send(url,null,"get",contentType)}_loadHtmlImage(url,onLoadCaller,onLoad,onErrorCaller,onError){var image;function clear(){var img=image;img.onload=null,img.onerror=null,delete Loader._imgCache[url]}(image=new Browser.window.Image).crossOrigin="",image.onload=function(){clear(),onLoad.call(onLoadCaller,image)},image.onerror=function(){clear(),onError.call(onErrorCaller)},image.src=url,Loader._imgCache[url]=image}_loadHttpRequestWhat(url,contentType){Loader.preLoadedMap[url]?this.onLoaded(Loader.preLoadedMap[url]):this._loadHttpRequest(url,contentType,this,this.onLoaded,this,this.onProgress,this,this.onError)}_loadTTF(url){url=URL.formatURL(url);var ttfLoader=new ILaya.TTFLoader;ttfLoader.complete=Handler.create(this,this.onLoaded),ttfLoader.load(url)}_loadImage(url){var onLoaded,_this=this;url=URL.formatURL(url);var onError=function(){_this.event(Event.ERROR,"Load image failed")};if("nativeimage"===this._type)onLoaded=function(image){_this.onLoaded(image)},this._loadHtmlImage(url,this,onLoaded,this,onError);else{var ext=Utils.getFileExtension(url);"ktx"===ext||"pvr"===ext?(onLoaded=function(imageData){var format;switch(ext){case"ktx":format=5;break;case"pvr":format=12}var tex=new Texture2D(0,0,format,!1,!1);tex.wrapModeU=BaseTexture.WARPMODE_CLAMP,tex.wrapModeV=BaseTexture.WARPMODE_CLAMP,tex.setCompressData(imageData),tex._setCreateURL(url),_this.onLoaded(tex)},this._loadHttpRequest(url,Loader.BUFFER,this,onLoaded,null,null,this,onError)):(onLoaded=function(image){var tex=new Texture2D(image.width,image.height,1,!1,!1);tex.wrapModeU=BaseTexture.WARPMODE_CLAMP,tex.wrapModeV=BaseTexture.WARPMODE_CLAMP,tex.loadImageSource(image,!0),tex._setCreateURL(url),_this.onLoaded(tex)},this._loadHtmlImage(url,this,onLoaded,this,onError))}}_loadSound(url){var sound=new SoundManager._soundClass,_this=this;function clear(){sound.offAll()}sound.on(Event.COMPLETE,this,function(){clear(),_this.onLoaded(sound)}),sound.on(Event.ERROR,this,function(){clear(),sound.dispose(),_this.event(Event.ERROR,"Load sound failed")}),sound.load(url)}onProgress(value){this._type===Loader.ATLAS?this.event(Event.PROGRESS,.3*value):this.event(Event.PROGRESS,value)}onError(message){this.event(Event.ERROR,message)}onLoaded(data=null){var type=this._type;if(type==Loader.PLFB)this.parsePLFBData(data),this.complete(data);else if(type==Loader.PLF)this.parsePLFData(data),this.complete(data);else if(type===Loader.IMAGE){var tex=new Texture(data);tex.url=this._url,this.complete(tex)}else if(type===Loader.SOUND||"htmlimage"===type||"nativeimage"===type)this.complete(data);else if(type===Loader.ATLAS){if(!(data instanceof Texture2D)){if(!this._data){if(this._data=data,data.meta&&data.meta.image){var changeType,toloadPics=data.meta.image.split(","),split=this._url.indexOf("/")>=0?"/":"\\",idx=this._url.lastIndexOf(split),folderPath=idx>=0?this._url.substr(0,idx+1):"";Browser.onAndroid&&data.meta.compressTextureAndroid&&(changeType=".ktx"),Browser.onIOS&&data.meta.compressTextureIOS&&(changeType=".pvr");for(var i=0,len=toloadPics.length;i<len;i++)toloadPics[i]=changeType?folderPath+toloadPics[i].replace(".png",changeType):folderPath+toloadPics[i]}else toloadPics=[this._url.replace(".json",".png")];toloadPics.reverse(),data.toLoads=toloadPics,data.pics=[]}return this.event(Event.PROGRESS,.3+1/toloadPics.length*.6),this._loadResourceFilter(Loader.IMAGE,toloadPics.pop())}if(this._data.pics.push(data),this._data.toLoads.length>0)return this.event(Event.PROGRESS,.3+1/this._data.toLoads.length*.6),this._loadResourceFilter(Loader.IMAGE,this._data.toLoads.pop());var frames=this._data.frames,cleanUrl=this._url.split("?")[0],directory=this._data.meta&&this._data.meta.prefix?this._data.meta.prefix:cleanUrl.substring(0,cleanUrl.lastIndexOf("."))+"/",pics=this._data.pics,atlasURL=URL.formatURL(this._url),map=Loader.atlasMap[atlasURL]||(Loader.atlasMap[atlasURL]=[]);map.dir=directory;var scaleRate=1;if(this._data.meta&&this._data.meta.scale&&1!=this._data.meta.scale)for(var name in scaleRate=parseFloat(this._data.meta.scale),frames){var tTexture,obj=frames[name],tPic=pics[obj.frame.idx?obj.frame.idx:0],url=URL.formatURL(directory+name);tPic.scaleRate=scaleRate,tTexture=Texture._create(tPic,obj.frame.x,obj.frame.y,obj.frame.w,obj.frame.h,obj.spriteSourceSize.x,obj.spriteSourceSize.y,obj.sourceSize.w,obj.sourceSize.h,Loader.getRes(url)),Loader.cacheRes(url,tTexture),tTexture.url=url,map.push(url)}else for(name in frames)tPic=pics[(obj=frames[name]).frame.idx?obj.frame.idx:0],url=URL.formatURL(directory+name),tTexture=Texture._create(tPic,obj.frame.x,obj.frame.y,obj.frame.w,obj.frame.h,obj.spriteSourceSize.x,obj.spriteSourceSize.y,obj.sourceSize.w,obj.sourceSize.h,Loader.getRes(url)),Loader.cacheRes(url,tTexture),tTexture.url=url,map.push(url);delete this._data.pics,this.complete(this._data)}else if(type===Loader.FONT){if(!data._source)return this._data=data,this.event(Event.PROGRESS,.5),this._loadImage(this._url.replace(".fnt",".png"));var bFont=new BitmapFont;bFont.parseFont(this._data,new Texture(data));var tArr=this._url.split(".fnt")[0].split("/"),fontName=tArr[tArr.length-1];Text.registerBitmapFont(fontName,bFont),this._data=bFont,this.complete(this._data)}else if(type===Loader.PREFAB){var prefab=new Prefab;prefab.json=data,this.complete(prefab)}else this.complete(data)}parsePLFData(plfData){var type,filePath,fileDic;for(type in plfData)switch(fileDic=plfData[type],type){case"json":case"text":for(filePath in fileDic)Loader.preLoadedMap[URL.formatURL(filePath)]=fileDic[filePath];break;default:for(filePath in fileDic)Loader.preLoadedMap[URL.formatURL(filePath)]=fileDic[filePath]}}parsePLFBData(plfData){var byte,i,len;for(len=(byte=new Byte(plfData)).getInt32(),i=0;i<len;i++)this.parseOnePLFBFile(byte)}parseOnePLFBFile(byte){var fileLen,fileName,fileData;fileName=byte.getUTFString(),fileLen=byte.getInt32(),fileData=byte.readArrayBuffer(fileLen),Loader.preLoadedMap[URL.formatURL(fileName)]=fileData}complete(data){this._data=data,this._customParse?this.event(Event.LOADED,data instanceof Array?[data]:data):(Loader._loaders.push(this),Loader._isWorking||Loader.checkNext())}static checkNext(){Loader._isWorking=!0;for(var startTimer=Browser.now();Loader._startIndex<Loader._loaders.length;)if(Browser.now(),Loader._loaders[Loader._startIndex].endLoad(),Loader._startIndex++,Browser.now()-startTimer>Loader.maxTimeOut)return console.warn("loader callback cost a long time:"+(Browser.now()-startTimer)+" url="+Loader._loaders[Loader._startIndex-1].url),void ILaya.systemTimer.frameOnce(1,null,Loader.checkNext);Loader._loaders.length=0,Loader._startIndex=0,Loader._isWorking=!1}endLoad(content=null){content&&(this._data=content),this._cache&&Loader.cacheRes(this._url,this._data),this.event(Event.PROGRESS,1),this.event(Event.COMPLETE,this.data instanceof Array?[this.data]:this.data)}get url(){return this._url}get type(){return this._type}get cache(){return this._cache}get data(){return this._data}static clearRes(url){url=URL.formatURL(url);var arr=Loader.getAtlas(url);if(arr){for(var i=0,n=arr.length;i<n;i++){var resUrl=arr[i],tex=Loader.getRes(resUrl);delete Loader.loadedMap[resUrl],tex&&tex.destroy()}arr.length=0,delete Loader.atlasMap[url],delete Loader.loadedMap[url]}else{var res=Loader.loadedMap[url];res&&(delete Loader.loadedMap[url],res instanceof Texture&&res.bitmap&&res.destroy())}}static clearTextureRes(url){url=URL.formatURL(url);var arr=Loader.getAtlas(url);if(arr&&arr.length>0)arr.forEach(function(t){var tex=Loader.getRes(t);tex instanceof Texture&&tex.disposeBitmap()});else{var t=Loader.getRes(url);t instanceof Texture&&t.disposeBitmap()}}static getRes(url){return Loader.loadedMap[URL.formatURL(url)]}static getAtlas(url){return Loader.atlasMap[URL.formatURL(url)]}static cacheRes(url,data){url=URL.formatURL(url),null!=Loader.loadedMap[url]||(Loader.loadedMap[url]=data)}static setGroup(url,group){Loader.groupMap[group]||(Loader.groupMap[group]=[]),Loader.groupMap[group].push(url)}static clearResByGroup(group){if(Loader.groupMap[group]){var i,arr=Loader.groupMap[group],len=arr.length;for(i=0;i<len;i++)Loader.clearRes(arr[i]);arr.length=0}}}Loader.TEXT="text",Loader.JSON="json",Loader.PREFAB="prefab",Loader.XML="xml",Loader.BUFFER="arraybuffer",Loader.IMAGE="image",Loader.SOUND="sound",Loader.ATLAS="atlas",Loader.FONT="font",Loader.TTF="ttf",Loader.PLF="plf",Loader.PLFB="plfb",Loader.HIERARCHY="HIERARCHY",Loader.MESH="MESH",Loader.MATERIAL="MATERIAL",Loader.TEXTURE2D="TEXTURE2D",Loader.TEXTURECUBE="TEXTURECUBE",Loader.ANIMATIONCLIP="ANIMATIONCLIP",Loader.AVATAR="AVATAR",Loader.TERRAINHEIGHTDATA="TERRAINHEIGHTDATA",Loader.TERRAINRES="TERRAIN",Loader.typeMap={ttf:"ttf",png:"image",jpg:"image",jpeg:"image",ktx:"image",pvr:"image",txt:"text",json:"json",prefab:"prefab",xml:"xml",als:"atlas",atlas:"atlas",mp3:"sound",ogg:"sound",wav:"sound",part:"json",fnt:"font",plf:"plf",plfb:"plfb",scene:"json",ani:"json",sk:"arraybuffer"},Loader.parserMap={},Loader.maxTimeOut=100,Loader.groupMap={},Loader.loadedMap={},Loader.atlasMap={},Loader.preLoadedMap={},Loader._imgCache={},Loader._loaders=[],Loader._isWorking=!1,Loader._startIndex=0;class AtlasInfoManager{static enable(infoFile,callback=null){ILaya.loader.load(infoFile,Handler.create(null,AtlasInfoManager._onInfoLoaded,[callback]),null,Loader.JSON)}static _onInfoLoaded(callback,data){var tKey,tPrefix,tArr,i,len;for(tKey in data)for(tPrefix=(tArr=data[tKey])[0],len=(tArr=tArr[1]).length,i=0;i<len;i++)AtlasInfoManager._fileLoadDic[tPrefix+tArr[i]]=tKey;callback&&callback.run()}static getFileLoadPath(file){return AtlasInfoManager._fileLoadDic[file]||file}}AtlasInfoManager._fileLoadDic={};class LoaderManager extends EventDispatcher{constructor(){super(),this.retryNum=1,this.retryDelay=0,this.maxLoader=5,this._loaders=[],this._loaderCount=0,this._resInfos=[],this._infoPool=[],this._maxPriority=5,this._failRes={},this._statInfo={count:1,loaded:1};for(var i=0;i<this._maxPriority;i++)this._resInfos[i]=[]}getProgress(){return this._statInfo.loaded/this._statInfo.count}resetProgress(){this._statInfo.count=this._statInfo.loaded=1}create(url,complete=null,progress=null,type=null,constructParams=null,propertyParams=null,priority=1,cache=!0){this._create(url,!0,complete,progress,type,constructParams,propertyParams,priority,cache)}_create(url,mainResou,complete=null,progress=null,type=null,constructParams=null,propertyParams=null,priority=1,cache=!0){if(url instanceof Array){var allScuess=!0,items=url,itemCount=items.length,loadedCount=0;if(progress)var progress2=Handler.create(progress.caller,progress.method,progress.args,!1);for(var i=0;i<itemCount;i++){var item=items[i];"string"==typeof item&&(item=items[i]={url:item}),item.progress=0}for(i=0;i<itemCount;i++){item=items[i];var progressHandler=progress?Handler.create(null,function(item,value){item.progress=value;for(var num=0,j=0;j<itemCount;j++){num+=items[j].progress}var v=num/itemCount;progress2.runWith(v)},[item],!1):null,completeHandler=progress||complete?Handler.create(null,function(item,content=null){loadedCount++,item.progress=1,content||(allScuess=!1),loadedCount===itemCount&&complete&&complete.runWith(allScuess)},[item]):null;this._createOne(item.url,mainResou,completeHandler,progressHandler,item.type||type,item.constructParams||constructParams,item.propertyParams||propertyParams,item.priority||priority,cache)}}else this._createOne(url,mainResou,complete,progress,type,constructParams,propertyParams,priority,cache)}_createOne(url,mainResou,complete=null,progress=null,type=null,constructParams=null,propertyParams=null,priority=1,cache=!0){var item=this.getRes(url);if(item)!mainResou&&item instanceof Resource&&item._addReference(),progress&&progress.runWith(1),complete&&complete.runWith(item);else{var extension=Utils.getFileExtension(url);if(type||(type=LoaderManager.createMap[extension]?LoaderManager.createMap[extension][0]:null),!type)return void this.load(url,complete,progress,type,priority,cache);if(!Loader.parserMap[type])return void this.load(url,complete,progress,type,priority,cache);this._createLoad(url,Handler.create(null,function(createRes){createRes&&(!mainResou&&createRes instanceof Resource&&createRes._addReference(),createRes._setCreateURL(url)),complete&&complete.runWith(createRes),ILaya.loader.event(url)}),progress,type,constructParams,propertyParams,priority,cache,!0)}}load(url,complete=null,progress=null,type=null,priority=1,cache=!0,group=null,ignoreCache=!1,useWorkerLoader=ILaya.WorkerLoader.enable){if(url instanceof Array)return this._loadAssets(url,complete,progress,type,priority,cache,group);var content=Loader.getRes(url);if(ignoreCache||null==content){var original;original=url,(url=AtlasInfoManager.getFileLoadPath(url))!=original&&"nativeimage"!==type?type=Loader.ATLAS:original=null;var info=LoaderManager._resMap[url];info?(complete&&(original?complete&&info._createListener(Event.COMPLETE,this,this._resInfoLoaded,[original,complete],!1,!1):complete&&info._createListener(Event.COMPLETE,complete.caller,complete.method,complete.args,!1,!1)),progress&&info._createListener(Event.PROGRESS,progress.caller,progress.method,progress.args,!1,!1)):((info=this._infoPool.length?this._infoPool.pop():new ResInfo).url=url,info.type=type,info.cache=cache,info.group=group,info.ignoreCache=ignoreCache,info.useWorkerLoader=useWorkerLoader,info.originalUrl=original,complete&&info.on(Event.COMPLETE,complete.caller,complete.method,complete.args),progress&&info.on(Event.PROGRESS,progress.caller,progress.method,progress.args),LoaderManager._resMap[url]=info,priority=priority<this._maxPriority?priority:this._maxPriority-1,this._resInfos[priority].push(info),this._statInfo.count++,this.event(Event.PROGRESS,this.getProgress()),this._next())}else ILaya.systemTimer.frameOnce(1,this,function(){progress&&progress.runWith(1),complete&&complete.runWith(content instanceof Array?[content]:content),this._loaderCount||this.event(Event.COMPLETE)});return this}_resInfoLoaded(original,complete){complete.runWith(Loader.getRes(original))}_createLoad(url,complete=null,progress=null,type=null,constructParams=null,propertyParams=null,priority=1,cache=!0,ignoreCache=!1){if(url instanceof Array)return this._loadAssets(url,complete,progress,type,priority,cache);var content=Loader.getRes(url);if(null!=content)ILaya.systemTimer.frameOnce(1,this,function(){progress&&progress.runWith(1),complete&&complete.runWith(content),this._loaderCount||this.event(Event.COMPLETE)});else{var info=LoaderManager._resMap[url];info?(complete&&info._createListener(Event.COMPLETE,complete.caller,complete.method,complete.args,!1,!1),progress&&info._createListener(Event.PROGRESS,progress.caller,progress.method,progress.args,!1,!1)):((info=this._infoPool.length?this._infoPool.pop():new ResInfo).url=url,info.type=type,info.cache=!1,info.ignoreCache=ignoreCache,info.originalUrl=null,info.group=null,info.createCache=cache,info.createConstructParams=constructParams,info.createPropertyParams=propertyParams,complete&&info.on(Event.COMPLETE,complete.caller,complete.method,complete.args),progress&&info.on(Event.PROGRESS,progress.caller,progress.method,progress.args),LoaderManager._resMap[url]=info,priority=priority<this._maxPriority?priority:this._maxPriority-1,this._resInfos[priority].push(info),this._statInfo.count++,this.event(Event.PROGRESS,this.getProgress()),this._next())}return this}_next(){if(!(this._loaderCount>=this.maxLoader)){for(var i=0;i<this._maxPriority;i++)for(var infos=this._resInfos[i];infos.length>0;){var info=infos.shift();if(info)return this._doLoad(info)}this._loaderCount||this.event(Event.COMPLETE)}}_doLoad(resInfo){this._loaderCount++;var loader=this._loaders.length?this._loaders.pop():new Loader;loader.on(Event.COMPLETE,null,onLoaded),loader.on(Event.PROGRESS,null,function(num){resInfo.event(Event.PROGRESS,num)}),loader.on(Event.ERROR,null,function(msg){onLoaded(null)});var _me=this;function onLoaded(data=null){loader.offAll(),loader._data=null,loader._customParse=!1,_me._loaders.push(loader),_me._endLoad(resInfo,data instanceof Array?[data]:data),_me._loaderCount--,_me._next()}loader._constructParams=resInfo.createConstructParams,loader._propertyParams=resInfo.createPropertyParams,loader._createCache=resInfo.createCache,loader.load(resInfo.url,resInfo.type,resInfo.cache,resInfo.group,resInfo.ignoreCache,resInfo.useWorkerLoader)}_endLoad(resInfo,content){var url=resInfo.url;if(null==content){var errorCount=this._failRes[url]||0;if(errorCount<this.retryNum)return console.warn("[warn]Retry to load:",url),this._failRes[url]=errorCount+1,void ILaya.systemTimer.once(this.retryDelay,this,this._addReTry,[resInfo],!1);Loader.clearRes(url),console.warn("[error]Failed to load:",url),this.event(Event.ERROR,url)}this._failRes[url]&&(this._failRes[url]=0),delete LoaderManager._resMap[url],resInfo.originalUrl&&(content=Loader.getRes(resInfo.originalUrl)),resInfo.event(Event.COMPLETE,content),resInfo.offAll(),this._infoPool.push(resInfo),this._statInfo.loaded++,this.event(Event.PROGRESS,this.getProgress())}_addReTry(resInfo){this._resInfos[this._maxPriority-1].push(resInfo),this._next()}clearRes(url){Loader.clearRes(url)}clearTextureRes(url){Loader.clearTextureRes(url)}getRes(url){return Loader.getRes(url)}cacheRes(url,data){Loader.cacheRes(url,data)}setGroup(url,group){Loader.setGroup(url,group)}clearResByGroup(group){Loader.clearResByGroup(group)}static cacheRes(url,data){Loader.cacheRes(url,data)}clearUnLoaded(){for(var i=0;i<this._maxPriority;i++){for(var infos=this._resInfos[i],j=infos.length-1;j>-1;j--){var info=infos[j];info&&(info.offAll(),this._infoPool.push(info))}infos.length=0}this._loaderCount=0,LoaderManager._resMap={}}cancelLoadByUrls(urls){if(urls)for(var i=0,n=urls.length;i<n;i++)this.cancelLoadByUrl(urls[i])}cancelLoadByUrl(url){for(var i=0;i<this._maxPriority;i++)for(var infos=this._resInfos[i],j=infos.length-1;j>-1;j--){var info=infos[j];info&&info.url===url&&(infos[j]=null,info.offAll(),this._infoPool.push(info))}LoaderManager._resMap[url]&&delete LoaderManager._resMap[url]}_loadAssets(arr,complete=null,progress=null,type=null,priority=1,cache=!0,group=null){for(var itemCount=arr.length,loadedCount=0,totalSize=0,items=[],success=!0,i=0;i<itemCount;i++){var item=arr[i];"string"==typeof item&&(item={url:item,type:type,size:1,priority:priority}),item.size||(item.size=1),item.progress=0,totalSize+=item.size,items.push(item);var progressHandler=progress?Handler.create(null,loadProgress,[item],!1):null,completeHandler=complete||progress?Handler.create(null,loadComplete,[item]):null;this.load(item.url,completeHandler,progressHandler,item.type,item.priority||1,cache,item.group||group,!1,item.useWorkerLoader)}function loadComplete(item,content=null){loadedCount++,item.progress=1,content||(success=!1),loadedCount===itemCount&&complete&&complete.runWith(success)}function loadProgress(item,value){if(null!=progress){item.progress=value;for(var num=0,j=0;j<items.length;j++){var item1=items[j];num+=item1.size*item1.progress}var v=num/totalSize;progress.runWith(v)}}return this}decodeBitmaps(urls){var i,ctx,len=urls.length;for(ctx=ILaya.Render._context,i=0;i<len;i++){var atlas,tex;if(atlas=Loader.getAtlas(urls[i]))this._decodeTexture(atlas[0],ctx);else(tex=this.getRes(urls[i]))&&tex instanceof Texture&&this._decodeTexture(tex,ctx)}}_decodeTexture(tex,ctx){var bitmap=tex.bitmap;if(tex&&bitmap){var tImg=bitmap.source||bitmap.image;if(tImg&&tImg instanceof HTMLImageElement){ctx.drawImage(tImg,0,0,1,1);ctx.getImageData(0,0,1,1)}}}}LoaderManager._resMap={},LoaderManager.createMap={atlas:[null,Loader.ATLAS]};class ResInfo extends EventDispatcher{}class LocalStorage{static __init__(){return LocalStorage._baseClass||(LocalStorage._baseClass=Storage,Storage.init()),LocalStorage.items=LocalStorage._baseClass.items,LocalStorage.support=LocalStorage._baseClass.support,LocalStorage.support}static setItem(key,value){LocalStorage._baseClass.setItem(key,value)}static getItem(key){return LocalStorage._baseClass.getItem(key)}static setJSON(key,value){LocalStorage._baseClass.setJSON(key,value)}static getJSON(key){return LocalStorage._baseClass.getJSON(key)}static removeItem(key){LocalStorage._baseClass.removeItem(key)}static clear(){LocalStorage._baseClass.clear()}}LocalStorage.support=!1;class Storage{static init(){try{Storage.support=!0,Storage.items=window.localStorage,Storage.setItem("laya","1"),Storage.removeItem("laya")}catch(e){Storage.support=!1}Storage.support||console.log("LocalStorage is not supprot or browser is private mode.")}static setItem(key,value){try{Storage.support&&Storage.items.setItem(key,value)}catch(e){console.warn("set localStorage failed",e)}}static getItem(key){return Storage.support?Storage.items.getItem(key):null}static setJSON(key,value){try{Storage.support&&Storage.items.setItem(key,JSON.stringify(value))}catch(e){console.warn("set localStorage failed",e)}}static getJSON(key){return JSON.parse(Storage.support?Storage.items.getItem(key):null)}static removeItem(key){Storage.support&&Storage.items.removeItem(key)}static clear(){Storage.support&&Storage.items.clear()}}Storage.support=!1;class TTFLoader{load(fontPath){this._url=fontPath;var tArr=fontPath.split(".ttf")[0].split("/");this.fontName=tArr[tArr.length-1],ILaya.Render.isConchApp?this._loadConch():window.FontFace?this._loadWithFontFace():this._loadWithCSS()}_loadConch(){this._http=new HttpRequest,this._http.on(Event.ERROR,this,this._onErr),this._http.on(Event.COMPLETE,this,this._onHttpLoaded),this._http.send(this._url,null,"get",Loader.BUFFER)}_onHttpLoaded(data=null){window.conchTextCanvas.setFontFaceFromBuffer(this.fontName,data),this._clearHttp(),this._complete()}_clearHttp(){this._http&&(this._http.off(Event.ERROR,this,this._onErr),this._http.off(Event.COMPLETE,this,this._onHttpLoaded),this._http=null)}_onErr(){this._clearHttp(),this.err&&(this.err.runWith("fail:"+this._url),this.err=null)}_complete(){ILaya.systemTimer.clear(this,this._complete),ILaya.systemTimer.clear(this,this._checkComplete),this._div&&this._div.parentNode&&(this._div.parentNode.removeChild(this._div),this._div=null),this.complete&&(this.complete.runWith(this),this.complete=null)}_checkComplete(){ILaya.Browser.measureText(TTFLoader._testString,this._fontTxt).width!=this._txtWidth&&this._complete()}_loadWithFontFace(){var fontFace=new window.FontFace(this.fontName,"url('"+this._url+"')");document.fonts.add(fontFace);var self=this;fontFace.loaded.then(function(){self._complete()}),fontFace.load()}_createDiv(){this._div=Browser.createElement("div"),this._div.innerHTML="laya";var _style=this._div.style;_style.fontFamily=this.fontName,_style.position="absolute",_style.left="-100px",_style.top="-100px",document.body.appendChild(this._div)}_loadWithCSS(){var fontStyle=Browser.createElement("style");fontStyle.type="text/css",document.body.appendChild(fontStyle),fontStyle.textContent="@font-face { font-family:'"+this.fontName+"'; src:url('"+this._url+"');}",this._fontTxt="40px "+this.fontName,this._txtWidth=Browser.measureText(TTFLoader._testString,this._fontTxt).width;var self=this;fontStyle.onload=function(){ILaya.systemTimer.once(1e4,self,this._complete)},ILaya.systemTimer.loop(20,this,this._checkComplete),this._createDiv()}}TTFLoader._testString="LayaTTFFont";class Ease{static linearNone(t,b,c,d){return c*t/d+b}static linearIn(t,b,c,d){return c*t/d+b}static linearInOut(t,b,c,d){return c*t/d+b}static linearOut(t,b,c,d){return c*t/d+b}static bounceIn(t,b,c,d){return c-Ease.bounceOut(d-t,0,c,d)+b}static bounceInOut(t,b,c,d){return t<.5*d?.5*Ease.bounceIn(2*t,0,c,d)+b:.5*Ease.bounceOut(2*t-d,0,c,d)+.5*c+b}static bounceOut(t,b,c,d){return(t/=d)<1/2.75?c*(7.5625*t*t)+b:t<2/2.75?c*(7.5625*(t-=1.5/2.75)*t+.75)+b:t<2.5/2.75?c*(7.5625*(t-=2.25/2.75)*t+.9375)+b:c*(7.5625*(t-=2.625/2.75)*t+.984375)+b}static backIn(t,b,c,d,s=1.70158){return c*(t/=d)*t*((s+1)*t-s)+b}static backInOut(t,b,c,d,s=1.70158){return(t/=.5*d)<1?.5*c*(t*t*((1+(s*=1.525))*t-s))+b:c/2*((t-=2)*t*((1+(s*=1.525))*t+s)+2)+b}static backOut(t,b,c,d,s=1.70158){return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b}static elasticIn(t,b,c,d,a=0,p=0){var s;return 0==t?b:1==(t/=d)?b+c:(p||(p=.3*d),!a||c>0&&a<c||c<0&&a<-c?(a=c,s=p/4):s=p/Ease.PI2*Math.asin(c/a),-a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*Ease.PI2/p)+b)}static elasticInOut(t,b,c,d,a=0,p=0){var s;return 0==t?b:2==(t/=.5*d)?b+c:(p||(p=d*(.3*1.5)),!a||c>0&&a<c||c<0&&a<-c?(a=c,s=p/4):s=p/Ease.PI2*Math.asin(c/a),t<1?a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*Ease.PI2/p)*-.5+b:a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*Ease.PI2/p)*.5+c+b)}static elasticOut(t,b,c,d,a=0,p=0){var s;return 0==t?b:1==(t/=d)?b+c:(p||(p=.3*d),!a||c>0&&a<c||c<0&&a<-c?(a=c,s=p/4):s=p/Ease.PI2*Math.asin(c/a),a*Math.pow(2,-10*t)*Math.sin((t*d-s)*Ease.PI2/p)+c+b)}static strongIn(t,b,c,d){return c*(t/=d)*t*t*t*t+b}static strongInOut(t,b,c,d){return(t/=.5*d)<1?.5*c*t*t*t*t*t+b:.5*c*((t-=2)*t*t*t*t+2)+b}static strongOut(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b}static sineInOut(t,b,c,d){return.5*-c*(Math.cos(Math.PI*t/d)-1)+b}static sineIn(t,b,c,d){return-c*Math.cos(t/d*Ease.HALF_PI)+c+b}static sineOut(t,b,c,d){return c*Math.sin(t/d*Ease.HALF_PI)+b}static quintIn(t,b,c,d){return c*(t/=d)*t*t*t*t+b}static quintInOut(t,b,c,d){return(t/=.5*d)<1?.5*c*t*t*t*t*t+b:.5*c*((t-=2)*t*t*t*t+2)+b}static quintOut(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b}static quartIn(t,b,c,d){return c*(t/=d)*t*t*t+b}static quartInOut(t,b,c,d){return(t/=.5*d)<1?.5*c*t*t*t*t+b:.5*-c*((t-=2)*t*t*t-2)+b}static quartOut(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b}static cubicIn(t,b,c,d){return c*(t/=d)*t*t+b}static cubicInOut(t,b,c,d){return(t/=.5*d)<1?.5*c*t*t*t+b:.5*c*((t-=2)*t*t+2)+b}static cubicOut(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b}static quadIn(t,b,c,d){return c*(t/=d)*t+b}static quadInOut(t,b,c,d){return(t/=.5*d)<1?.5*c*t*t+b:.5*-c*(--t*(t-2)-1)+b}static quadOut(t,b,c,d){return-c*(t/=d)*(t-2)+b}static expoIn(t,b,c,d){return 0==t?b:c*Math.pow(2,10*(t/d-1))+b-.001*c}static expoInOut(t,b,c,d){return 0==t?b:t==d?b+c:(t/=.5*d)<1?.5*c*Math.pow(2,10*(t-1))+b:.5*c*(2-Math.pow(2,-10*--t))+b}static expoOut(t,b,c,d){return t==d?b+c:c*(1-Math.pow(2,-10*t/d))+b}static circIn(t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b}static circInOut(t,b,c,d){return(t/=.5*d)<1?.5*-c*(Math.sqrt(1-t*t)-1)+b:.5*c*(Math.sqrt(1-(t-=2)*t)+1)+b}static circOut(t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b}}Ease.HALF_PI=.5*Math.PI,Ease.PI2=2*Math.PI;class Tween{constructor(){this.gid=0,this.repeat=1,this._count=0}static to(target,props,duration,ease=null,complete=null,delay=0,coverBefore=!1,autoRecover=!0){return Pool.getItemByClass("tween",Tween)._create(target,props,duration,ease,complete,delay,coverBefore,!0,autoRecover,!0)}static from(target,props,duration,ease=null,complete=null,delay=0,coverBefore=!1,autoRecover=!0){return Pool.getItemByClass("tween",Tween)._create(target,props,duration,ease,complete,delay,coverBefore,!1,autoRecover,!0)}to(target,props,duration,ease=null,complete=null,delay=0,coverBefore=!1){return this._create(target,props,duration,ease,complete,delay,coverBefore,!0,!1,!0)}from(target,props,duration,ease=null,complete=null,delay=0,coverBefore=!1){return this._create(target,props,duration,ease,complete,delay,coverBefore,!1,!1,!0)}_create(target,props,duration,ease,complete,delay,coverBefore,isTo,usePool,runNow){if(!target)throw new Error("Tween:target is null");this._target=target,this._duration=duration,this._ease=ease||props.ease||Tween.easeNone,this._complete=complete||props.complete,this._delay=delay,this._props=[],this._usedTimer=0,this._startTimer=Browser.now(),this._usedPool=usePool,this._delayParam=null,this.update=props.update;var gid=target.$_GID||(target.$_GID=Utils.getGID());return Tween.tweenMap[gid]?(coverBefore&&Tween.clearTween(target),Tween.tweenMap[gid].push(this)):Tween.tweenMap[gid]=[this],runNow?delay<=0?this.firstStart(target,props,isTo):(this._delayParam=[target,props,isTo],ILaya.timer.once(delay,this,this.firstStart,this._delayParam)):this._initProps(target,props,isTo),this}firstStart(target,props,isTo){this._delayParam=null,target.destroyed?this.clear():(this._initProps(target,props,isTo),this._beginLoop())}_initProps(target,props,isTo){for(var p in props)if("number"==typeof target[p]){var start=isTo?target[p]:props[p],end=isTo?props[p]:target[p];this._props.push([p,start,end-start]),isTo||(target[p]=start)}}_beginLoop(){ILaya.timer.frameLoop(1,this,this._doEase)}_doEase(){this._updateEase(Browser.now())}_updateEase(time){var target=this._target;if(target){if(target.destroyed)return Tween.clearTween(target);var usedTimer=this._usedTimer=time-this._startTimer-this._delay;if(!(usedTimer<0)){if(usedTimer>=this._duration)return this.complete();for(var ratio=usedTimer>0?this._ease(usedTimer,0,1,this._duration):0,props=this._props,i=0,n=props.length;i<n;i++){var prop=props[i];target[prop[0]]=prop[1]+ratio*prop[2]}this.update&&this.update.run()}}}set progress(v){var uTime=v*this._duration;this._startTimer=Browser.now()-this._delay-uTime}complete(){if(this._target){ILaya.timer.runTimer(this,this.firstStart);for(var target=this._target,props=this._props,handler=this._complete,i=0,n=props.length;i<n;i++){var prop=props[i];target[prop[0]]=prop[1]+prop[2]}this.update&&this.update.run(),this._count++,0!=this.repeat&&this._count>=this.repeat?(this.clear(),handler&&handler.run()):this.restart()}}pause(){var dTime;ILaya.timer.clear(this,this._beginLoop),ILaya.timer.clear(this,this._doEase),ILaya.timer.clear(this,this.firstStart),(dTime=Browser.now()-this._startTimer-this._delay)<0&&(this._usedTimer=dTime)}setStartTime(startTime){this._startTimer=startTime}static clearAll(target){if(target&&target.$_GID){var tweens=Tween.tweenMap[target.$_GID];if(tweens){for(var i=0,n=tweens.length;i<n;i++)tweens[i]._clear();tweens.length=0}}}static clear(tween){tween.clear()}static clearTween(target){Tween.clearAll(target)}clear(){this._target&&(this._remove(),this._clear())}_clear(){this.pause(),ILaya.timer.clear(this,this.firstStart),this._complete=null,this._target=null,this._ease=null,this._props=null,this._delayParam=null,this._usedPool&&(this.update=null,Pool.recover("tween",this))}recover(){this._usedPool=!0,this._clear()}_remove(){var tweens=Tween.tweenMap[this._target.$_GID];if(tweens)for(var i=0,n=tweens.length;i<n;i++)if(tweens[i]===this){tweens.splice(i,1);break}}restart(){if(this.pause(),this._usedTimer=0,this._startTimer=Browser.now(),this._delayParam)ILaya.timer.once(this._delay,this,this.firstStart,this._delayParam);else{for(var props=this._props,i=0,n=props.length;i<n;i++){var prop=props[i];this._target[prop[0]]=prop[1]}ILaya.timer.once(this._delay,this,this._beginLoop)}}resume(){this._usedTimer>=this._duration||(this._startTimer=Browser.now()-this._usedTimer-this._delay,this._delayParam?this._usedTimer<0?ILaya.timer.once(-this._usedTimer,this,this.firstStart,this._delayParam):this.firstStart.apply(this,this._delayParam):this._beginLoop())}static easeNone(t,b,c,d){return c*t/d+b}}Tween.tweenMap=[];class Dragging{constructor(){this.ratio=.92,this.maxOffset=60,this._dragging=!1,this._clickOnly=!0}start(target,area,hasInertia,elasticDistance,elasticBackTime,data,disableMouseEvent,ratio=.92){this.clearTimer(),this.target=target,this.area=area,this.hasInertia=hasInertia,this.elasticDistance=area?elasticDistance:0,this.elasticBackTime=elasticBackTime,this.data=data,this._disableMouseEvent=disableMouseEvent,this.ratio=ratio,this._parent=target.parent,this._clickOnly=!0,this._dragging=!0,this._elasticRateX=this._elasticRateY=1,this._lastX=this._parent.mouseX,this._lastY=this._parent.mouseY,ILaya.stage.on(Event.MOUSE_UP,this,this.onStageMouseUp),ILaya.stage.on(Event.MOUSE_OUT,this,this.onStageMouseUp),ILaya.systemTimer.frameLoop(1,this,this.loop)}clearTimer(){ILaya.systemTimer.clear(this,this.loop),ILaya.systemTimer.clear(this,this.tweenMove),this._tween&&(this._tween.recover(),this._tween=null)}stop(){this._dragging&&(MouseManager.instance.disableMouseEvent=!1,ILaya.stage.off(Event.MOUSE_UP,this,this.onStageMouseUp),ILaya.stage.off(Event.MOUSE_OUT,this,this.onStageMouseUp),this._dragging=!1,this.target&&this.area&&this.backToArea(),this.clear())}loop(){var point=this._parent.getMousePoint(),mouseX=point.x,mouseY=point.y,offsetX=mouseX-this._lastX,offsetY=mouseY-this._lastY;if(this._clickOnly){if(!(Math.abs(offsetX*ILaya.stage._canvasTransform.getScaleX())>1||Math.abs(offsetY*ILaya.stage._canvasTransform.getScaleY())>1))return;this._clickOnly=!1,this._offsets||(this._offsets=[]),this._offsets.length=0,this.target.event(Event.DRAG_START,this.data),MouseManager.instance.disableMouseEvent=this._disableMouseEvent}else this._offsets.push(offsetX,offsetY);0===offsetX&&0===offsetY||(this._lastX=mouseX,this._lastY=mouseY,this.target.x+=offsetX*this._elasticRateX,this.target.y+=offsetY*this._elasticRateY,this.area&&this.checkArea(),this.target.event(Event.DRAG_MOVE,this.data))}checkArea(){if(this.elasticDistance<=0)this.backToArea();else{if(this.target._x<this.area.x)var offsetX=this.area.x-this.target._x;else offsetX=this.target._x>this.area.x+this.area.width?this.target._x-this.area.x-this.area.width:0;if(this._elasticRateX=Math.max(0,1-offsetX/this.elasticDistance),this.target._y<this.area.y)var offsetY=this.area.y-this.target.y;else offsetY=this.target._y>this.area.y+this.area.height?this.target._y-this.area.y-this.area.height:0;this._elasticRateY=Math.max(0,1-offsetY/this.elasticDistance)}}backToArea(){this.target.x=Math.min(Math.max(this.target._x,this.area.x),this.area.x+this.area.width),this.target.y=Math.min(Math.max(this.target._y,this.area.y),this.area.y+this.area.height)}onStageMouseUp(e){if(MouseManager.instance.disableMouseEvent=!1,ILaya.stage.off(Event.MOUSE_UP,this,this.onStageMouseUp),ILaya.stage.off(Event.MOUSE_OUT,this,this.onStageMouseUp),ILaya.systemTimer.clear(this,this.loop),!this._clickOnly&&this.target)if(this.hasInertia){this._offsets.length<1&&this._offsets.push(this._parent.mouseX-this._lastX,this._parent.mouseY-this._lastY),this._offsetX=this._offsetY=0;for(var len=this._offsets.length,n=Math.min(len,6),m=this._offsets.length-n,i=len-1;i>m;i--)this._offsetY+=this._offsets[i--],this._offsetX+=this._offsets[i];this._offsetX=this._offsetX/n*2,this._offsetY=this._offsetY/n*2,Math.abs(this._offsetX)>this.maxOffset&&(this._offsetX=this._offsetX>0?this.maxOffset:-this.maxOffset),Math.abs(this._offsetY)>this.maxOffset&&(this._offsetY=this._offsetY>0?this.maxOffset:-this.maxOffset),ILaya.systemTimer.frameLoop(1,this,this.tweenMove)}else this.elasticDistance>0?this.checkElastic():this.clear()}checkElastic(){var tx=NaN,ty=NaN;if(this.target.x<this.area.x?tx=this.area.x:this.target._x>this.area.x+this.area.width&&(tx=this.area.x+this.area.width),this.target.y<this.area.y?ty=this.area.y:this.target._y>this.area.y+this.area.height&&(ty=this.area.y+this.area.height),isNaN(tx)&&isNaN(ty))this.clear();else{var obj={};isNaN(tx)||(obj.x=tx),isNaN(ty)||(obj.y=ty),this._tween=Tween.to(this.target,obj,this.elasticBackTime,Ease.sineOut,Handler.create(this,this.clear),0,!1,!1)}}tweenMove(){this._offsetX*=this.ratio*this._elasticRateX,this._offsetY*=this.ratio*this._elasticRateY,this.target.x+=this._offsetX,this.target.y+=this._offsetY,this.area&&this.checkArea(),this.target.event(Event.DRAG_MOVE,this.data),(Math.abs(this._offsetX)<1&&Math.abs(this._offsetY)<1||this._elasticRateX<.5||this._elasticRateY<.5)&&(ILaya.systemTimer.clear(this,this.tweenMove),this.elasticDistance>0?this.checkElastic():this.clear())}clear(){if(this.target){this.clearTimer();var sp=this.target;this.target=null,this._parent=null,sp.event(Event.DRAG_END,this.data)}}}class Component{constructor(){this._id=Utils.getGID(),this._resetComp()}get id(){return this._id}get enabled(){return this._enabled}set enabled(value){this._enabled!=value&&(this._enabled=value,this.owner&&(value?this.owner.activeInHierarchy&&this._onEnable():this.owner.activeInHierarchy&&this._onDisable()))}get isSingleton(){return!0}get destroyed(){return this._destroyed}_isScript(){return!1}_resetComp(){this._indexInList=-1,this._enabled=!0,this._awaked=!1,this.owner=null}_getIndexInList(){return this._indexInList}_setIndexInList(index){this._indexInList=index}_onAdded(){}_onAwake(){}_onEnable(){}_onDisable(){}_onDestroy(){}onReset(){}_parse(data){}_cloneTo(dest){}_setActive(value){value?(this._awaked||(this._awaked=!0,this._onAwake()),this._enabled&&this._onEnable()):this._enabled&&this._onDisable()}destroy(){this.owner&&this.owner._destroyComponent(this)}_destroy(){this.owner.activeInHierarchy&&this._enabled&&(this._setActive(!1),this._isScript()&&this.onDisable()),this._onDestroy(),this._destroyed=!0,this.onReset!==Component.prototype.onReset?(this.onReset(),this._resetComp(),Pool.recoverByClass(this)):this._resetComp()}}class AnimationBase extends Sprite{constructor(){super(),this.wrapMode=0,this._interval=Config.animationInterval,this._isReverse=!1,this._frameRateChanged=!1,this._setBitUp(Const.DISPLAY)}play(start=0,loop=!0,name=""){this._isPlaying=!0,this._actionName=name,this.index="string"==typeof start?this._getFrameByLabel(start):start,this.loop=loop,this._isReverse=this.wrapMode===AnimationBase.WRAP_REVERSE,0==this.index&&this._isReverse&&(this.index=this.count-1),this.interval>0&&this.timerLoop(this.interval,this,this._frameLoop,null,!0,!0)}get interval(){return this._interval}set interval(value){this._interval!=value&&(this._frameRateChanged=!0,this._interval=value,this._isPlaying&&value>0&&this.timerLoop(value,this,this._frameLoop,null,!0,!0))}_getFrameByLabel(label){for(var i=0;i<this._count;i++){var item=this._labels[i];if(item&&item.indexOf(label)>-1)return i}return 0}_frameLoop(){if(this._isReverse){if(this._index--,this._index<0){if(!this.loop)return this._index=0,this.stop(),void this.event(Event.COMPLETE);this.wrapMode==AnimationBase.WRAP_PINGPONG?(this._index=this._count>0?1:0,this._isReverse=!1):this._index=this._count-1,this.event(Event.COMPLETE)}}else if(this._index++,this._index>=this._count){if(!this.loop)return this._index--,this.stop(),void this.event(Event.COMPLETE);this.wrapMode==AnimationBase.WRAP_PINGPONG?(this._index=this._count-2>=0?this._count-2:0,this._isReverse=!0):this._index=0,this.event(Event.COMPLETE)}this.index=this._index}_setControlNode(node){this._controlNode&&(this._controlNode.off(Event.DISPLAY,this,this._resumePlay),this._controlNode.off(Event.UNDISPLAY,this,this._resumePlay)),this._controlNode=node,node&&node!=this&&(node.on(Event.DISPLAY,this,this._resumePlay),node.on(Event.UNDISPLAY,this,this._resumePlay))}_setDisplay(value){super._setDisplay(value),this._resumePlay()}_resumePlay(){this._isPlaying&&(this._controlNode.displayedInStage?this.play(this._index,this.loop,this._actionName):this.clearTimer(this,this._frameLoop))}stop(){this._isPlaying=!1,this.clearTimer(this,this._frameLoop)}get isPlaying(){return this._isPlaying}addLabel(label,index){this._labels||(this._labels={}),this._labels[index]||(this._labels[index]=[]),this._labels[index].push(label)}removeLabel(label){if(label){if(this._labels)for(var name in this._labels)this._removeLabelFromList(this._labels[name],label)}else this._labels=null}_removeLabelFromList(list,label){if(list)for(var i=list.length-1;i>=0;i--)list[i]==label&&list.splice(i,1)}gotoAndStop(position){this.index="string"==typeof position?this._getFrameByLabel(position):position,this.stop()}get index(){return this._index}set index(value){if(this._index=value,this._displayToIndex(value),this._labels&&this._labels[value])for(var tArr=this._labels[value],i=0,len=tArr.length;i<len;i++)this.event(Event.LABEL,tArr[i])}_displayToIndex(value){}get count(){return this._count}clear(){return this.stop(),this._labels=null,this}}AnimationBase.WRAP_POSITIVE=0,AnimationBase.WRAP_REVERSE=1,AnimationBase.WRAP_PINGPONG=2,ClassUtils.regClass("laya.display.AnimationBase",AnimationBase),ClassUtils.regClass("Laya.AnimationBase",AnimationBase);class MathUtil{static subtractVector3(l,r,o){o[0]=l[0]-r[0],o[1]=l[1]-r[1],o[2]=l[2]-r[2]}static lerp(left,right,amount){return left*(1-amount)+right*amount}static scaleVector3(f,b,e){e[0]=f[0]*b,e[1]=f[1]*b,e[2]=f[2]*b}static lerpVector3(l,r,t,o){var ax=l[0],ay=l[1],az=l[2];o[0]=ax+t*(r[0]-ax),o[1]=ay+t*(r[1]-ay),o[2]=az+t*(r[2]-az)}static lerpVector4(l,r,t,o){var ax=l[0],ay=l[1],az=l[2],aw=l[3];o[0]=ax+t*(r[0]-ax),o[1]=ay+t*(r[1]-ay),o[2]=az+t*(r[2]-az),o[3]=aw+t*(r[3]-aw)}static slerpQuaternionArray(a,Offset1,b,Offset2,t,out,Offset3){var omega,cosom,sinom,scale0,scale1,ax=a[Offset1+0],ay=a[Offset1+1],az=a[Offset1+2],aw=a[Offset1+3],bx=b[Offset2+0],by=b[Offset2+1],bz=b[Offset2+2],bw=b[Offset2+3];return(cosom=ax*bx+ay*by+az*bz+aw*bw)<0&&(cosom=-cosom,bx=-bx,by=-by,bz=-bz,bw=-bw),1-cosom>1e-6?(omega=Math.acos(cosom),sinom=Math.sin(omega),scale0=Math.sin((1-t)*omega)/sinom,scale1=Math.sin(t*omega)/sinom):(scale0=1-t,scale1=t),out[Offset3+0]=scale0*ax+scale1*bx,out[Offset3+1]=scale0*ay+scale1*by,out[Offset3+2]=scale0*az+scale1*bz,out[Offset3+3]=scale0*aw+scale1*bw,out}static getRotation(x0,y0,x1,y1){return Math.atan2(y1-y0,x1-x0)/Math.PI*180}static sortBigFirst(a,b){return a==b?0:b>a?1:-1}static sortSmallFirst(a,b){return a==b?0:b>a?-1:1}static sortNumBigFirst(a,b){return parseFloat(b)-parseFloat(a)}static sortNumSmallFirst(a,b){return parseFloat(a)-parseFloat(b)}static sortByKey(key,bigFirst=!1,forceNum=!0){var _sortFun;return _sortFun=bigFirst?forceNum?MathUtil.sortNumBigFirst:MathUtil.sortBigFirst:forceNum?MathUtil.sortNumSmallFirst:MathUtil.sortSmallFirst,function(a,b){return _sortFun(a[key],b[key])}}}class FrameAnimation extends AnimationBase{constructor(){super(),null===FrameAnimation._sortIndexFun&&(FrameAnimation._sortIndexFun=MathUtil.sortByKey("index",!1,!0))}_setUp(targetDic,animationData){this._targetDic=targetDic,this._animationData=animationData,this.interval=1e3/animationData.frameRate,animationData.parsed?(this._count=animationData.count,this._labels=animationData.labels,this._usedFrames=animationData.animationNewFrames):(this._usedFrames=[],this._calculateDatas(),animationData.parsed=!0,animationData.labels=this._labels,animationData.count=this._count,animationData.animationNewFrames=this._usedFrames)}clear(){return super.clear(),this._targetDic=null,this._animationData=null,this}_displayToIndex(value){if(this._animationData){value<0&&(value=0),value>this._count&&(value=this._count);var i,nodes=this._animationData.nodes,len=nodes.length;for(i=0;i<len;i++)this._displayNodeToFrame(nodes[i],value)}}_displayNodeToFrame(node,frame,targetDic=null){targetDic||(targetDic=this._targetDic);var target=targetDic[node.target];if(target){var key,propFrames,value,i,frames=node.frames,keys=node.keys,len=keys.length;for(i=0;i<len;i++)value=(propFrames=frames[key=keys[i]]).length>frame?propFrames[frame]:propFrames[propFrames.length-1],target[key]=value;var funFrames,funkeys=node.funkeys;if(0!=(len=funkeys.length))for(i=0;i<len;i++)void 0!==(funFrames=frames[key=funkeys[i]])[frame]&&target[key]&&target[key].apply(target,funFrames[frame])}}_calculateDatas(){if(this._animationData){var i,tNode,nodes=this._animationData.nodes,len=nodes.length;for(this._count=0,i=0;i<len;i++)tNode=nodes[i],this._calculateKeyFrames(tNode);this._count+=1}}_calculateKeyFrames(node){var key,tKeyFrames,keyFrames=node.keyframes,target=node.target;for(key in node.frames||(node.frames={}),node.keys?node.keys.length=0:node.keys=[],node.funkeys?node.funkeys.length=0:node.funkeys=[],node.initValues||(node.initValues={}),keyFrames){var isFun=-1!=key.indexOf("()");if(tKeyFrames=keyFrames[key],isFun&&(key=key.substr(0,key.length-2)),node.frames[key]||(node.frames[key]=[]),isFun){node.funkeys.push(key);for(var map=node.frames[key],i=0;i<tKeyFrames.length;i++){var temp=tKeyFrames[i];map[temp.index]=temp.value,temp.index>this._count&&(this._count=temp.index)}}else this._targetDic&&this._targetDic[target]&&(node.initValues[key]=this._targetDic[target][key]),tKeyFrames.sort(FrameAnimation._sortIndexFun),node.keys.push(key),this._calculateNodePropFrames(tKeyFrames,node.frames[key],key,target)}}resetNodes(){if(this._targetDic&&this._animationData){var i,tNode,initValues,nodes=this._animationData.nodes,len=nodes.length;for(i=0;i<len;i++)if(initValues=(tNode=nodes[i]).initValues){var key,target=this._targetDic[tNode.target];if(target)for(key in initValues)target[key]=initValues[key]}}}_calculateNodePropFrames(keyframes,frames,key,target){var i,len=keyframes.length-1;for(frames.length=keyframes[len].index+1,i=0;i<len;i++)this._dealKeyFrame(keyframes[i]),this._calculateFrameValues(keyframes[i],keyframes[i+1],frames);0==len&&(frames[0]=keyframes[0].value,this._usedFrames&&(this._usedFrames[keyframes[0].index]=!0)),this._dealKeyFrame(keyframes[i])}_dealKeyFrame(keyFrame){keyFrame.label&&""!=keyFrame.label&&this.addLabel(keyFrame.label,keyFrame.index)}_calculateFrameValues(startFrame,endFrame,result){var i,easeFun,start=startFrame.index,end=endFrame.index,startValue=startFrame.value,dValue=endFrame.value-startFrame.value,dLen=end-start,frames=this._usedFrames;if(end>this._count&&(this._count=end),startFrame.tween)for(null==(easeFun=Ease[startFrame.tweenMethod])&&(easeFun=Ease.linearNone),i=start;i<end;i++)result[i]=easeFun(i-start,startValue,dValue,dLen),frames&&(frames[i]=!0);else for(i=start;i<end;i++)result[i]=startValue;frames&&(frames[startFrame.index]=!0,frames[endFrame.index]=!0),result[endFrame.index]=endFrame.value}}ClassUtils.regClass("laya.display.FrameAnimation",FrameAnimation),ClassUtils.regClass("Laya.FrameAnimation",FrameAnimation);var supportWeakMap=!!WeakMap;class WeakObject{constructor(){this._obj=WeakObject.supportWeakMap?new Browser.window.WeakMap:{},WeakObject.supportWeakMap||WeakObject._maps.push(this)}static __init__(){WeakObject.I=new WeakObject,WeakObject.supportWeakMap||ILaya.systemTimer.loop(WeakObject.delInterval,null,WeakObject.clearCache)}static clearCache(){for(var i=0,n=WeakObject._maps.length;i<n;i++){WeakObject._maps[i]._obj={}}}set(key,value){if(null!=key)if(WeakObject.supportWeakMap){var objKey=key;"string"!=typeof key&&"number"!=typeof key||(objKey=WeakObject._keys[key])||(objKey=WeakObject._keys[key]={k:key}),this._obj.set(objKey,value)}else"string"==typeof key||"number"==typeof key?this._obj[key]=value:(key.$_GID||(key.$_GID=Utils.getGID()),this._obj[key.$_GID]=value)}get(key){if(null==key)return null;if(WeakObject.supportWeakMap){var objKey="string"==typeof key||"number"==typeof key?WeakObject._keys[key]:key;return objKey?this._obj.get(objKey):null}return"string"==typeof key||"number"==typeof key?this._obj[key]:this._obj[key.$_GID]}del(key){if(null!=key)if(WeakObject.supportWeakMap){var objKey="string"==typeof key||"number"==typeof key?WeakObject._keys[key]:key;if(!objKey)return;this._obj.delete(objKey)}else"string"==typeof key||"number"==typeof key?delete this._obj[key]:delete this._obj[this._obj.$_GID]}has(key){if(null==key)return!1;if(WeakObject.supportWeakMap){var objKey="string"==typeof key||"number"==typeof key?WeakObject._keys[key]:key;return this._obj.has(objKey)}return"string"==typeof key||"number"==typeof key?null!=this._obj[key]:null!=this._obj[this._obj.$_GID]}}WeakObject.supportWeakMap=supportWeakMap,WeakObject.delInterval=6e5,WeakObject._keys={},WeakObject._maps=[];class SceneUtils{static __init(){SceneUtils._funMap=new WeakObject}static getBindFun(value){var fun=SceneUtils._funMap.get(value);if(null==fun){var temp='"'+value+'"',str="(function(data){if(data==null)return;with(data){try{\nreturn "+(temp=temp.replace(/^"\${|}"$/g,"").replace(/\${/g,'"+').replace(/}/g,'+"'))+"\n}catch(e){}}})";fun=window.Laya._runScript(str),SceneUtils._funMap.set(value,fun)}return fun}static createByData(root,uiView){var tInitTool=InitTool.create();if((root=SceneUtils.createComp(uiView,root,root,null,tInitTool))._setBit(Const.NOT_READY,!0),"_idMap"in root&&(root._idMap=tInitTool._idMap),uiView.animations){var i,tAni,tAniO,anilist=[],animations=uiView.animations,len=animations.length;for(i=0;i<len;i++){switch(tAni=new FrameAnimation,tAniO=animations[i],tAni._setUp(tInitTool._idMap,tAniO),root[tAniO.name]=tAni,tAni._setControlNode(root),tAniO.action){case 1:tAni.play(0,!1);break;case 2:tAni.play(0,!0)}anilist.push(tAni)}root._aniList=anilist}return"Scene"===root._$componentType&&root._width>0&&null==uiView.props.hitTestPrior&&!root.mouseThrough&&(root.hitTestPrior=!0),tInitTool.beginLoad(root),root}static createInitTool(){return InitTool.create()}static createComp(uiView,comp=null,view=null,dataMap=null,initTool=null){if("Scene3D"==uiView.type||"Sprite3D"==uiView.type){var outBatchSprits=[],scene3D=ILaya.Laya.Utils3D._createSceneByJsonForMaker(uiView,outBatchSprits,initTool);return"Sprite3D"==uiView.type?ILaya.Laya.StaticBatchManager.combine(scene3D,outBatchSprits):ILaya.Laya.StaticBatchManager.combine(null,outBatchSprits),scene3D}if(!(comp=comp||SceneUtils.getCompInstance(uiView)))return uiView.props&&uiView.props.runtime?console.warn("runtime not found:"+uiView.props.runtime):console.warn("can not create:"+uiView.type),null;var child=uiView.child;if(child)for(var isList="List"==comp._$componentType,i=0,n=child.length;i<n;i++){var node=child[i];if("itemRender"in comp&&("render"==node.props.name||"render"===node.props.renderType))comp.itemRender=node;else if("Graphic"==node.type)ILaya.ClassUtils._addGraphicsToSprite(node,comp);else if(ILaya.ClassUtils._isDrawType(node.type))ILaya.ClassUtils._addGraphicToSprite(node,comp,!0);else{if(isList){var arr=[],tChild=SceneUtils.createComp(node,null,view,arr,initTool);arr.length&&(tChild._$bindData=arr)}else tChild=SceneUtils.createComp(node,null,view,dataMap,initTool);"Script"==node.type?tChild instanceof Component?comp._addComponentInstance(tChild):"owner"in tChild?tChild.owner=comp:"target"in tChild&&(tChild.target=comp):"mask"==node.props.renderType||"mask"==node.props.name?comp.mask=tChild:tChild instanceof Node&&comp.addChild(tChild)}}var props=uiView.props;for(var prop in props){var value=props[prop];"string"==typeof value&&(value.indexOf("@node:")>=0||value.indexOf("@Prefab:")>=0)?initTool&&initTool.addNodeRef(comp,prop,value):SceneUtils.setCompValue(comp,prop,value,view,dataMap)}return comp._afterInited&&comp._afterInited(),uiView.compId&&initTool&&initTool._idMap&&(initTool._idMap[uiView.compId]=comp),comp}static setCompValue(comp,prop,value,view=null,dataMap=null){if("string"==typeof value&&value.indexOf("${")>-1){if(SceneUtils._sheet||(SceneUtils._sheet=ILaya.ClassUtils.getClass("laya.data.Table")),!SceneUtils._sheet)return void console.warn("Can not find class Sheet");if(dataMap)dataMap.push(comp,prop,value);else if(view){-1==value.indexOf("].")&&(value=value.replace(".","[0]."));var one,temp,watcher=new DataWatcher(comp,prop,value);watcher.exe(view);for(var str=value.replace(/\[.*?\]\./g,".");null!=(one=SceneUtils._parseWatchData.exec(str));){for(var key1=one[1];null!=(temp=SceneUtils._parseKeyWord.exec(key1));){var key2=temp[0],arr=view._watchMap[key2]||(view._watchMap[key2]=[]);arr.push(watcher),SceneUtils._sheet.I.notifer.on(key2,view,view.changeData,[key2])}(arr=view._watchMap[key1]||(view._watchMap[key1]=[])).push(watcher),SceneUtils._sheet.I.notifer.on(key1,view,view.changeData,[key1])}}}else"var"===prop&&view?view[value]=comp:comp[prop]="true"===value||"false"!==value&&value}static getCompInstance(json){if("UIView"==json.type&&json.props&&json.props.pageData)return SceneUtils.createByData(null,json.props.pageData);var runtime=json.props&&json.props.runtime||json.type,compClass=ILaya.ClassUtils.getClass(runtime);if(!compClass)throw"Can not find class "+runtime;if("Script"===json.type&&compClass.prototype._doAwake){var comp=Pool.createByClass(compClass);return comp._destroyed=!1,comp}return json.props&&"renderType"in json.props&&"instance"==json.props.renderType?(compClass.instance||(compClass.instance=new compClass),compClass.instance):new compClass}}SceneUtils._parseWatchData=/\${(.*?)}/g,SceneUtils._parseKeyWord=/[a-zA-Z_][a-zA-Z0-9_]*(?:(?:\.[a-zA-Z_][a-zA-Z0-9_]*)+)/g;class DataWatcher{constructor(comp,prop,value){this.comp=comp,this.prop=prop,this.value=value}exe(view){var fun=SceneUtils.getBindFun(this.value);this.comp[this.prop]=fun.call(this,view)}}class InitTool{reset(){this._nodeRefList=null,this._initList=null,this._idMap=null,this._loadList=null,this._scene=null}recover(){this.reset(),Pool.recover("InitTool",this)}static create(){var tool=Pool.getItemByClass("InitTool",InitTool);return tool._idMap=[],tool}addLoadRes(url,type=null){this._loadList||(this._loadList=[]),type?this._loadList.push({url:url,type:type}):this._loadList.push(url)}addNodeRef(node,prop,referStr){this._nodeRefList||(this._nodeRefList=[]),this._nodeRefList.push([node,prop,referStr]),referStr.indexOf("@Prefab:")>=0&&this.addLoadRes(referStr.replace("@Prefab:",""),Loader.PREFAB)}setNodeRef(){if(this._nodeRefList)if(this._idMap){var i,len,tRefInfo;for(len=this._nodeRefList.length,i=0;i<len;i++)(tRefInfo=this._nodeRefList[i])[0][tRefInfo[1]]=this.getReferData(tRefInfo[2]);this._nodeRefList=null}else this._nodeRefList=null}getReferData(referStr){if(referStr.indexOf("@Prefab:")>=0)return Loader.getRes(referStr.replace("@Prefab:",""));if(referStr.indexOf("@arr:")>=0){var list,i,len,tStr;for(len=(list=(referStr=referStr.replace("@arr:","")).split(",")).length,i=0;i<len;i++)tStr=list[i],list[i]=tStr?this._idMap[tStr.replace("@node:","")]:null;return list}return this._idMap[referStr.replace("@node:","")]}addInitItem(item){this._initList||(this._initList=[]),this._initList.push(item)}doInits(){this._initList&&(this._initList=null)}finish(){this.setNodeRef(),this.doInits(),this._scene._setBit(Const.NOT_READY,!1),this._scene.parent&&this._scene.parent.activeInHierarchy&&this._scene.active&&this._scene._processActive(),this._scene.event("onViewCreated"),this.recover()}beginLoad(scene){this._scene=scene,!this._loadList||this._loadList.length<1?this.finish():ILaya.loader.load(this._loadList,Handler.create(this,this.finish))}}class IStatRender{show(x=0,y=0){}enable(){}hide(){}set_onclick(fn){}isCanvasRender(){return!0}renderNotCanvas(ctx,x,y){}}class StatUI extends IStatRender{constructor(){super(...arguments),this._show=!1,this._useCanvas=!1,this._height=100,this._view=[]}show(x=0,y=0){Browser.onMiniGame||ILaya.Render.isConchApp||Browser.onBDMiniGame||Browser.onKGMiniGame||Browser.onQGMiniGame||Browser.onQQMiniGame||(this._useCanvas=!0),this._show=!0,Stat._fpsData.length=60,this._view[0]={title:"FPS(Canvas)",value:"_fpsStr",color:"yellow",units:"int"},this._view[1]={title:"Sprite",value:"_spriteStr",color:"white",units:"int"},this._view[2]={title:"RenderBatches",value:"renderBatches",color:"white",units:"int"},this._view[3]={title:"SavedRenderBatches",value:"savedRenderBatches",color:"white",units:"int"},this._view[4]={title:"CPUMemory",value:"cpuMemory",color:"yellow",units:"M"},this._view[5]={title:"GPUMemory",value:"gpuMemory",color:"yellow",units:"M"},this._view[6]={title:"Shader",value:"shaderCall",color:"white",units:"int"},Render.is3DMode?(this._view[0].title="FPS(3D)",this._view[7]={title:"TriFaces",value:"trianglesFaces",color:"white",units:"int"},this._view[8]={title:"FrustumCulling",value:"frustumCulling",color:"white",units:"int"},this._view[9]={title:"OctreeNodeCulling",value:"octreeNodeCulling",color:"white",units:"int"}):(this._view[0].title="FPS(WebGL)",this._view[7]={title:"Canvas",value:"_canvasStr",color:"white",units:"int"}),this._useCanvas?this.createUIPre(x,y):this.createUI(x,y),this.enable()}createUIPre(x,y){var pixel=Browser.pixelRatio;this._width=180*pixel,this._vx=120*pixel,this._height=pixel*(12*this._view.length+3*pixel)+4,StatUI._fontSize=12*pixel;for(var i=0;i<this._view.length;i++)this._view[i].x=4,this._view[i].y=i*StatUI._fontSize+2*pixel;this._canvas||(this._canvas=new HTMLCanvas(!0),this._canvas.size(this._width,this._height),this._ctx=this._canvas.getContext("2d"),this._ctx.textBaseline="top",this._ctx.font=StatUI._fontSize+"px Arial",this._canvas.source.style.cssText="pointer-events:none;background:rgba(150,150,150,0.8);z-index:100000;position: absolute;direction:ltr;left:"+x+"px;top:"+y+"px;width:"+this._width/pixel+"px;height:"+this._height/pixel+"px;"),Browser.onKGMiniGame||Browser.container.appendChild(this._canvas.source),this._first=!0,this.loop(),this._first=!1}createUI(x,y){var stat=this._sp,pixel=Browser.pixelRatio;stat||(stat=new Sprite,this._leftText=new Text,this._leftText.pos(5,5),this._leftText.color="#ffffff",stat.addChild(this._leftText),this._txt=new Text,this._txt.pos(80*pixel,5),this._txt.color="#ffffff",stat.addChild(this._txt),this._sp=stat),stat.pos(x,y);for(var text="",i=0;i<this._view.length;i++){text+=this._view[i].title+"\n"}this._leftText.text=text;var width=138*pixel,height=pixel*(12*this._view.length+3*pixel)+4;this._txt.fontSize=StatUI._fontSize*pixel,this._leftText.fontSize=StatUI._fontSize*pixel,stat.size(width,height),stat.graphics.clear(),stat.graphics.alpha(.5),stat.graphics.drawRect(0,0,width,height,"#999999"),stat.graphics.alpha(2),this.loop()}enable(){ILaya.systemTimer.frameLoop(1,this,this.loop)}hide(){this._show=!1,ILaya.systemTimer.clear(this,this.loop),this._canvas&&Browser.removeElement(this._canvas.source)}set_onclick(fn){this._sp&&this._sp.on("click",this._sp,fn),this._canvas&&(this._canvas.source.onclick=fn,this._canvas.source.style.pointerEvents="")}loop(){Stat._count++;var timer=Browser.now();if(!(timer-Stat._timer<1e3)){var count=Stat._count;if(Stat.FPS=Math.round(1e3*count/(timer-Stat._timer)),this._show){Stat.trianglesFaces=Math.round(Stat.trianglesFaces/count),this._useCanvas?Stat.renderBatches=Math.round(Stat.renderBatches/count):Stat.renderBatches=Math.round(Stat.renderBatches/count)-1,Stat.savedRenderBatches=Math.round(Stat.savedRenderBatches/count),Stat.shaderCall=Math.round(Stat.shaderCall/count),Stat.spriteRenderUseCacheCount=Math.round(Stat.spriteRenderUseCacheCount/count),Stat.canvasNormal=Math.round(Stat.canvasNormal/count),Stat.canvasBitmap=Math.round(Stat.canvasBitmap/count),Stat.canvasReCache=Math.ceil(Stat.canvasReCache/count),Stat.frustumCulling=Math.round(Stat.frustumCulling/count),Stat.octreeNodeCulling=Math.round(Stat.octreeNodeCulling/count);var delay=Stat.FPS>0?Math.floor(1e3/Stat.FPS).toString():" ";Stat._fpsStr=Stat.FPS+(Stat.renderSlow?" slow":"")+" "+delay,Stat._spriteStr=Stat.spriteCount+(Stat.spriteRenderUseCacheCount?"/"+Stat.spriteRenderUseCacheCount:""),Stat._canvasStr=Stat.canvasReCache+"/"+Stat.canvasNormal+"/"+Stat.canvasBitmap,Stat.cpuMemory=Resource.cpuMemory,Stat.gpuMemory=Resource.gpuMemory,this._useCanvas?this.renderInfoPre():this.renderInfo(),Stat.clear()}Stat._count=0,Stat._timer=timer}}renderInfoPre(){var one,value,i=0;if(this._canvas){var ctx=this._ctx;for(ctx.clearRect(this._first?0:this._vx,0,this._width,this._height),i=0;i<this._view.length;i++)one=this._view[i],this._first&&(ctx.fillStyle="white",ctx.fillText(one.title,one.x,one.y)),ctx.fillStyle=one.color,value=Stat[one.value],"M"==one.units&&(value=Math.floor(value/1048576*100)/100+" M"),ctx.fillText(value+"",one.x+this._vx,one.y)}}renderInfo(){for(var text="",i=0;i<this._view.length;i++){var one=this._view[i],value=Stat[one.value];"M"==one.units&&(value=Math.floor(value/1048576*100)/100+" M"),"K"==one.units&&(value=Math.floor(value/1024*100)/100+" K"),text+=value+"\n"}this._txt.text=text}isCanvasRender(){return this._useCanvas}renderNotCanvas(ctx,x,y){this._show&&this._sp&&this._sp.render(ctx,0,0)}}StatUI._fontSize=12;class Timer{constructor(autoActive=!0){this.scale=1,this.currTimer=Date.now(),this.currFrame=0,this._delta=0,this._lastTimer=Date.now(),this._map=[],this._handlers=[],this._temp=[],this._count=0,autoActive&&Timer.gSysTimer&&Timer.gSysTimer.frameLoop(1,this,this._update)}get delta(){return this._delta}_update(){if(this.scale<=0)return this._lastTimer=Date.now(),void(this._delta=0);var frame=this.currFrame=this.currFrame+this.scale,now=Date.now(),awake=now-this._lastTimer>3e4;this._delta=(now-this._lastTimer)*this.scale;var timer=this.currTimer=this.currTimer+this._delta;this._lastTimer=now;var handlers=this._handlers;this._count=0;for(var i=0,n=handlers.length;i<n;i++){var handler=handlers[i];if(null!==handler.method){var t=handler.userFrame?frame:timer;if(t>=handler.exeTime)if(handler.repeat)if(!handler.jumpFrame||awake)handler.exeTime+=handler.delay,handler.run(!1),t>handler.exeTime&&(handler.exeTime+=Math.ceil((t-handler.exeTime)/handler.delay)*handler.delay);else for(;t>=handler.exeTime;)handler.exeTime+=handler.delay,handler.run(!1);else handler.run(!0)}else this._count++}(this._count>30||frame%200==0)&&this._clearHandlers()}_clearHandlers(){for(var handlers=this._handlers,i=0,n=handlers.length;i<n;i++){var handler=handlers[i];null!==handler.method?this._temp.push(handler):this._recoverHandler(handler)}this._handlers=this._temp,handlers.length=0,this._temp=handlers}_recoverHandler(handler){this._map[handler.key]==handler&&(this._map[handler.key]=null),handler.clear(),Timer._pool.push(handler)}_create(useFrame,repeat,delay,caller,method,args,coverBefore){if(!delay)return method.apply(caller,args),null;if(coverBefore){var handler=this._getHandler(caller,method);if(handler)return handler.repeat=repeat,handler.userFrame=useFrame,handler.delay=delay,handler.caller=caller,handler.method=method,handler.args=args,handler.exeTime=delay+(useFrame?this.currFrame:this.currTimer+Date.now()-this._lastTimer),handler}return(handler=Timer._pool.length>0?Timer._pool.pop():new TimerHandler).repeat=repeat,handler.userFrame=useFrame,handler.delay=delay,handler.caller=caller,handler.method=method,handler.args=args,handler.exeTime=delay+(useFrame?this.currFrame:this.currTimer+Date.now()-this._lastTimer),this._indexHandler(handler),this._handlers.push(handler),handler}_indexHandler(handler){var caller=handler.caller,method=handler.method,cid=caller?caller.$_GID||(caller.$_GID=ILaya.Utils.getGID()):0,mid=method.$_TID||(method.$_TID=1e5*Timer._mid++);handler.key=cid+mid,this._map[handler.key]=handler}once(delay,caller,method,args=null,coverBefore=!0){this._create(!1,!1,delay,caller,method,args,coverBefore)}loop(delay,caller,method,args=null,coverBefore=!0,jumpFrame=!1){var handler=this._create(!1,!0,delay,caller,method,args,coverBefore);handler&&(handler.jumpFrame=jumpFrame)}frameOnce(delay,caller,method,args=null,coverBefore=!0){this._create(!0,!1,delay,caller,method,args,coverBefore)}frameLoop(delay,caller,method,args=null,coverBefore=!0){this._create(!0,!0,delay,caller,method,args,coverBefore)}toString(){return" handlers:"+this._handlers.length+" pool:"+Timer._pool.length}clear(caller,method){var handler=this._getHandler(caller,method);handler&&(this._map[handler.key]=null,handler.key=0,handler.clear())}clearAll(caller){if(caller)for(var i=0,n=this._handlers.length;i<n;i++){var handler=this._handlers[i];handler.caller===caller&&(this._map[handler.key]=null,handler.key=0,handler.clear())}}_getHandler(caller,method){var cid=caller?caller.$_GID||(caller.$_GID=ILaya.Utils.getGID()):0,mid=method.$_TID||(method.$_TID=1e5*Timer._mid++);return this._map[cid+mid]}callLater(caller,method,args=null){CallLater.I.callLater(caller,method,args)}runCallLater(caller,method){CallLater.I.runCallLater(caller,method)}runTimer(caller,method){var handler=this._getHandler(caller,method);handler&&null!=handler.method&&(this._map[handler.key]=null,handler.run(!0))}pause(){this.scale=0}resume(){this.scale=1}}Timer.gSysTimer=null,Timer._pool=[],Timer._mid=1;class TimerHandler{clear(){this.caller=null,this.method=null,this.args=null}run(withClear){var caller=this.caller;if(caller&&caller.destroyed)return this.clear();var method=this.method,args=this.args;withClear&&this.clear(),null!=method&&(args?method.apply(caller,args):method.call(caller))}}class SkinSV extends Value2D{constructor(type){super(ShaderDefines2D.SKINMESH,0),this.offsetX=300,this.offsetY=0;var gl=WebGLContext.mainContext,_vlen=8*CONST3D2D.BYTES_PE;this.position=[2,gl.FLOAT,!1,_vlen,0],this.texcoord=[2,gl.FLOAT,!1,_vlen,2*CONST3D2D.BYTES_PE],this.color=[4,gl.FLOAT,!1,_vlen,4*CONST3D2D.BYTES_PE]}}class PrimitiveSV extends Value2D{constructor(args){super(ShaderDefines2D.PRIMITIVE,0),this._attribLocation=["position",0,"attribColor",1]}}class TextureSV extends Value2D{constructor(subID=0){super(ShaderDefines2D.TEXTURE2D,subID),this.strength=0,this.blurInfo=null,this.colorMat=null,this.colorAlpha=null,this._attribLocation=["posuv",0,"attribColor",1,"attribFlags",2]}clear(){this.texture=null,this.shader=null,this.defines._value=this.subID+(WebGL.shaderHighPrecision?ShaderDefines2D.SHADERDEFINE_FSHIGHPRECISION:0)}}class InlcudeFile{constructor(txt){this.codes={},this.funs={},this.curUseID=-1,this.funnames="",this.script=txt;for(var ofs,end,begin=0;!((begin=txt.indexOf("#begin",begin))<0);){for(end=begin+5;!((end=txt.indexOf("#end",end))<0)&&"i"===txt.charAt(end+4);)end+=5;if(end<0)throw"add include err,no #end:"+txt;ofs=txt.indexOf("\n",begin);var words=ILaya.ShaderCompile.splitToWords(txt.substr(begin,ofs-begin),null);"code"==words[1]?this.codes[words[2]]=txt.substr(ofs+1,end-ofs-1):"function"==words[1]&&(ofs=txt.indexOf("function",begin),ofs+="function".length,this.funs[words[3]]=txt.substr(ofs+1,end-ofs-1),this.funnames+=words[3]+";"),begin=end+1}}getWith(name=null){var r=name?this.codes[name]:this.script;if(!r)throw"get with error:"+name;return r}getFunsScript(funsdef){var r="";for(var i in this.funs)funsdef.indexOf(i+";")>=0&&(r+=this.funs[i]);return r}}class ShaderNode{constructor(includefiles){this.childs=[],this.text="",this.useFuns="",this.z=0,this.includefiles=includefiles}setParent(parent){parent.childs.push(this),this.z=parent.z+1,this.parent=parent}setCondition(condition,type){condition&&(this.conditionType=type,condition=condition.replace(/(\s*$)/g,""),this.condition=function(){return this[condition]},this.condition.__condition=condition)}toscript(def,out){return this._toscript(def,out,++ShaderNode.__id)}_toscript(def,out,id){if(this.childs.length<1&&!this.text)return out;out.length;if(this.condition){var ifdef=!!this.condition.call(def);if(this.conditionType===ILaya.ShaderCompile.IFDEF_ELSE&&(ifdef=!ifdef),!ifdef)return out}if(this.text&&out.push(this.text),this.childs.length>0&&this.childs.forEach(function(o,index,arr){o._toscript(def,out,id)}),this.includefiles.length>0&&this.useFuns.length>0)for(var funsCode,i=0,n=this.includefiles.length;i<n;i++)this.includefiles[i].curUseID!=id&&(funsCode=this.includefiles[i].file.getFunsScript(this.useFuns)).length>0&&(this.includefiles[i].curUseID=id,out[0]=funsCode+out[0]);return out}}ShaderNode.__id=1;class ShaderCompile{constructor(vs,ps,nameMap){this.defs={};let _this=this;function _compile(script){script=script.replace(ShaderCompile._clearCR,"");var includefiles=[],top=new ShaderNode(includefiles);return _this._compileToTree(top,script.split("\n"),0,includefiles,_this.defs),top}var startTime=Date.now();this._VS=_compile(vs),this._PS=_compile(ps),this._nameMap=nameMap,Date.now()-startTime>2&&console.log("ShaderCompile use time:"+(Date.now()-startTime)+" size:"+vs.length+"/"+ps.length)}static __init__(){var gl=LayaGL.instance;ShaderCompile.shaderParamsMap={float:gl.FLOAT,int:gl.INT,bool:gl.BOOL,vec2:gl.FLOAT_VEC2,vec3:gl.FLOAT_VEC3,vec4:gl.FLOAT_VEC4,ivec2:gl.INT_VEC2,ivec3:gl.INT_VEC3,ivec4:gl.INT_VEC4,bvec2:gl.BOOL_VEC2,bvec3:gl.BOOL_VEC3,bvec4:gl.BOOL_VEC4,mat2:gl.FLOAT_MAT2,mat3:gl.FLOAT_MAT3,mat4:gl.FLOAT_MAT4,sampler2D:gl.SAMPLER_2D,samplerCube:gl.SAMPLER_CUBE}}static _parseOne(attributes,uniforms,words,i,word,b){var one={type:ShaderCompile.shaderParamsMap[words[i+1]],name:words[i+2],size:isNaN(parseInt(words[i+3]))?1:parseInt(words[i+3])};return b&&("attribute"==word?attributes.push(one):uniforms.push(one)),":"==words[i+3]&&(one.type=words[i+4],i+=2),i+=2}static addInclude(fileName,txt){if(!txt||0===txt.length)throw new Error("add shader include file err:"+fileName);if(ShaderCompile.includes[fileName])throw new Error("add shader include file err, has add:"+fileName);ShaderCompile.includes[fileName]=new InlcudeFile(txt)}static preGetParams(vs,ps){var i,n,text=[vs,ps],result={},attributes=[],uniforms=[],definesInfo={},definesName=[];result.attributes=attributes,result.uniforms=uniforms,result.defines=definesInfo;for(var s=0;s<2;s++){text[s]=text[s].replace(ShaderCompile._removeAnnotation,"");var tempelse,words=text[s].match(ShaderCompile._reg);for(i=0,n=words.length;i<n;i++){var word=words[i];if("attribute"==word||"uniform"==word)i=ShaderCompile._parseOne(attributes,uniforms,words,i,word,!0);else{if("#define"==word){definesName[word=words[++i]]=1;continue}if("#ifdef"==word){definesInfo[tempelse=words[++i]]=definesInfo[tempelse]||[];for(i++;i<n;i++)if("attribute"==(word=words[i])||"uniform"==word)i=ShaderCompile._parseOne(attributes,uniforms,words,i,word,definesName[tempelse]);else if("#else"==word)for(i++;i<n;i++)if("attribute"==(word=words[i])||"uniform"==word)i=ShaderCompile._parseOne(attributes,uniforms,words,i,word,!definesName[tempelse]);else if("#endif"==word)break}}}}return result}static splitToWords(str,block){for(var c,word,out=[],ofs=-1,i=0,n=str.length;i<n;i++)if(c=str.charAt(i)," \t=+-*/&%!<>()'\",;".indexOf(c)>=0){if(ofs>=0&&i-ofs>1&&(word=str.substr(ofs,i-ofs),out.push(word)),'"'==c||"'"==c){var ofs2=str.indexOf(c,i+1);if(ofs2<0)throw"Sharder err:"+str;out.push(str.substr(i+1,ofs2-i-1)),i=ofs2,ofs=-1;continue}"("==c&&block&&out.length>0&&(word=out[out.length-1]+";","vec4;main;".indexOf(word)<0&&(block.useFuns+=word)),ofs=-1}else ofs<0&&(ofs=i);return ofs<n&&n-ofs>1&&(word=str.substr(ofs,n-ofs),out.push(word)),out}_compileToTree(parent,lines,start,includefiles,defs){var node,preNode,text,name,fname,ofs,words,noUseNode,i,n,j;for(i=start;i<lines.length;i++)if(!((text=lines[i]).length<1)&&0!==(ofs=text.indexOf("//"))){if(ofs>=0&&(text=text.substr(0,ofs)),node=noUseNode||new ShaderNode(includefiles),noUseNode=null,node.text=text,node.noCompile=!0,(ofs=text.indexOf("#"))>=0){for(name="#",j=ofs+1,n=text.length;j<n;j++){var c=text.charAt(j);if(" "===c||"\t"===c||"?"===c)break;name+=c}switch(node.name=name,name){case"#ifdef":case"#ifndef":if(node.src=text,node.noCompile=null!=text.match(/[!&|()=<>]/),node.noCompile?console.log("function():Boolean{return "+text.substr(ofs+node.name.length)+"}"):(words=text.replace(/^\s*/,"").split(/\s+/),node.setCondition(words[1],"#ifdef"===name?ShaderCompile.IFDEF_YES:ShaderCompile.IFDEF_ELSE),node.text="//"+node.text),node.setParent(parent),parent=node,defs)for(words=text.substr(j).split(ShaderCompile._splitToWordExps3),j=0;j<words.length;j++)(text=words[j]).length&&(defs[text]=!0);continue;case"#if":if(node.src=text,node.noCompile=!0,node.setParent(parent),parent=node,defs)for(words=text.substr(j).split(ShaderCompile._splitToWordExps3),j=0;j<words.length;j++)(text=words[j]).length&&"defined"!=text&&(defs[text]=!0);continue;case"#else":node.src=text,preNode=(parent=parent.parent).childs[parent.childs.length-1],node.noCompile=preNode.noCompile,node.noCompile||(node.condition=preNode.condition,node.conditionType=preNode.conditionType==ShaderCompile.IFDEF_YES?ShaderCompile.IFDEF_ELSE:ShaderCompile.IFDEF_YES,node.text="//"+node.text+" "+preNode.text+" "+node.conditionType),node.setParent(parent),parent=node;continue;case"#endif":preNode=(parent=parent.parent).childs[parent.childs.length-1],node.noCompile=preNode.noCompile,node.noCompile||(node.text="//"+node.text),node.setParent(parent);continue;case"#include":words=ShaderCompile.splitToWords(text,null);var inlcudeFile=ShaderCompile.includes[words[1]];if(!inlcudeFile)throw"ShaderCompile error no this include file:"+words[1];if((ofs=words[0].indexOf("?"))<0){node.setParent(parent),text=inlcudeFile.getWith("with"==words[2]?words[3]:null),this._compileToTree(node,text.split("\n"),0,includefiles,defs),node.text="";continue}node.setCondition(words[0].substr(ofs+1),ShaderCompile.IFDEF_YES),node.text=inlcudeFile.getWith("with"==words[2]?words[3]:null);break;case"#import":fname=(words=ShaderCompile.splitToWords(text,null))[1],includefiles.push({node:node,file:ShaderCompile.includes[fname],ofs:node.text.length});continue}}else{if((preNode=parent.childs[parent.childs.length-1])&&!preNode.name){includefiles.length>0&&ShaderCompile.splitToWords(text,preNode),noUseNode=node,preNode.text+="\n"+text;continue}includefiles.length>0&&ShaderCompile.splitToWords(text,node)}node.setParent(parent)}}createShader(define,shaderName,createShader,bindAttrib){var defMap={},defineStr="";if(define)for(var i in define)defineStr+="#define "+i+"\n",defMap[i]=!0;var vs=this._VS.toscript(defMap,[]),ps=this._PS.toscript(defMap,[]);return(createShader||Shader.create)(defineStr+vs.join("\n"),defineStr+ps.join("\n"),shaderName,this._nameMap,bindAttrib)}}ShaderCompile.IFDEF_NO=0,ShaderCompile.IFDEF_YES=1,ShaderCompile.IFDEF_ELSE=2,ShaderCompile.IFDEF_PARENT=3,ShaderCompile._removeAnnotation=new RegExp("(/\\*([^*]|[\\r\\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)","g"),ShaderCompile._reg=new RegExp("(\".*\")|('.*')|([#\\w\\*-\\.+/()=<>{}\\\\]+)|([,;:\\\\])","g"),ShaderCompile._splitToWordExps=new RegExp("[(\".*\")]+|[('.*')]+|([ \\t=\\+\\-*/&%!<>!%(),;])","g"),ShaderCompile.includes={},ShaderCompile._clearCR=new RegExp("\r","g"),ShaderCompile._splitToWordExps3=new RegExp("[ \\t=\\+\\-*/&%!<>!%(),;\\|]","g");class WorkerLoader extends EventDispatcher{constructor(){super(),this.worker=new Worker(WorkerLoader.workerPath);let me=this;this.worker.onmessage=function(evt){me.workerMessage(evt.data)}}static __init__(){return null==WorkerLoader._preLoadFun&&(!!Worker&&(WorkerLoader._preLoadFun=Loader.prototype._loadImage,Loader.prototype._loadImage=WorkerLoader.prototype._loadImage,WorkerLoader.I||(WorkerLoader.I=new WorkerLoader),!0))}static workerSupported(){return!!Worker}static enableWorkerLoader(){WorkerLoader._tryEnabled||(WorkerLoader.enable=!0,WorkerLoader._tryEnabled=!0)}static set enable(value){WorkerLoader._enable!=value&&(WorkerLoader._enable=value,value&&null==WorkerLoader._preLoadFun&&(WorkerLoader._enable=WorkerLoader.__init__()))}static get enable(){return WorkerLoader._enable}workerMessage(data){if(data)switch(data.type){case"Image":this.imageLoaded(data);break;case"Disable":WorkerLoader.enable=!1}}imageLoaded(data){if(data.dataType&&"imageBitmap"==data.dataType){var imageData=data.imageBitmap,tex=new Texture2D;tex.loadImageSource(imageData),console.log("load:",data.url),this.event(data.url,tex)}else this.event(data.url,null)}loadImage(url){this.worker.postMessage(url)}_loadImage(url){var _this=this;if(this._useWorkerLoader&&WorkerLoader._enable){url=URL.formatURL(url);var onload=function(image){WorkerLoader.I.off(url,_this,onload),image?_this.onLoaded(image):WorkerLoader._preLoadFun.call(_this,url)};WorkerLoader.I.on(url,_this,onload),WorkerLoader.I.loadImage(url)}else WorkerLoader._preLoadFun.call(_this,url)}}WorkerLoader.workerPath="libs/workerloader.js",WorkerLoader._enable=!1,WorkerLoader._tryEnabled=!1;class Mouse{static set cursor(cursorStr){Mouse._style.cursor=cursorStr}static get cursor(){return Mouse._style.cursor}static __init__(){}static hide(){"none"!=Mouse.cursor&&(Mouse._preCursor=Mouse.cursor,Mouse.cursor="none")}static show(){"none"==Mouse.cursor&&(Mouse._preCursor?Mouse.cursor=Mouse._preCursor:Mouse.cursor="auto")}}class MeshParticle2D extends Mesh2D{constructor(maxNum){super(MeshParticle2D.const_stride,4*maxNum*MeshParticle2D.const_stride,4),this.canReuse=!0,this.setAttributes(MeshParticle2D._fixattriInfo),this.createQuadIB(maxNum),this._quadNum=maxNum}static __init__(){var gl=LayaGL.instance;MeshParticle2D._fixattriInfo=[gl.FLOAT,4,0,gl.FLOAT,3,16,gl.FLOAT,3,28,gl.FLOAT,4,40,gl.FLOAT,4,56,gl.FLOAT,3,72,gl.FLOAT,2,84,gl.FLOAT,4,92,gl.FLOAT,1,108,gl.FLOAT,1,112]}setMaxParticleNum(maxNum){this._vb._resizeBuffer(4*maxNum*MeshParticle2D.const_stride,!1),this.createQuadIB(maxNum)}static getAMesh(maxNum){if(MeshParticle2D._POOL.length){var ret=MeshParticle2D._POOL.pop();return ret.setMaxParticleNum(maxNum),ret}return new MeshParticle2D(maxNum)}releaseMesh(){this._vb.setByteLength(0),this.vertNum=0,this.indexNum=0,MeshParticle2D._POOL.push(this)}destroy(){this._ib.destroy(),this._vb.destroy(),this._vb.deleteBuffer()}}MeshParticle2D.const_stride=116,MeshParticle2D._POOL=[];class HTMLImage extends Bitmap{}HTMLImage.create=function(width,height,format){var tex=new Texture2D(width,height,format,!1,!1);return tex.wrapModeU=BaseTexture.WARPMODE_CLAMP,tex.wrapModeV=BaseTexture.WARPMODE_CLAMP,tex};class Laya{static __init(_classs){_classs.forEach(function(o){o.__init$&&o.__init$()})}static init(width,height,...plugins){if(!Laya._isinit){Laya._isinit=!0,ArrayBuffer.prototype.slice||(ArrayBuffer.prototype.slice=Laya._arrayBufferSlice),Browser.__init__();var mainCanv=Browser.mainCanvas=new HTMLCanvas(!0),style=mainCanv.source.style;style.position="absolute",style.top=style.left="0px",style.background="#000000",Browser.onKGMiniGame||Browser.onAlipayMiniGame||Browser.container.appendChild(mainCanv.source),Browser.canvas=new HTMLCanvas(!0),Browser.context=Browser.canvas.getContext("2d"),Browser.supportWebAudio=SoundManager.__init__(),Browser.supportLocalStorage=LocalStorage.__init__(),Laya.systemTimer=new Timer(!1),exports.systemTimer=Timer.gSysTimer=Laya.systemTimer,Laya.startTimer=new Timer(!1),Laya.physicsTimer=new Timer(!1),Laya.updateTimer=new Timer(!1),Laya.lateTimer=new Timer(!1),Laya.timer=new Timer(!1),exports.startTimer=ILaya.startTimer=Laya.startTimer,exports.lateTimer=ILaya.lateTimer=Laya.lateTimer,exports.updateTimer=ILaya.updateTimer=Laya.updateTimer,ILaya.systemTimer=Laya.systemTimer,exports.timer=ILaya.timer=Laya.timer,exports.physicsTimer=ILaya.physicsTimer=Laya.physicsTimer,Laya.loader=new LoaderManager,ILaya.Laya=Laya,exports.loader=ILaya.loader=Laya.loader,WeakObject.__init__(),SceneUtils.__init(),Mouse.__init__(),WebGL.inner_enable();for(var i=0,n=plugins.length;i<n;i++)plugins[i]&&plugins[i].enable&&plugins[i].enable();return ILaya.Render.isConchApp&&Laya.enableNative(),Laya.enableWebGLPlus(),CacheManger.beginCheck(),exports.stage=Laya.stage=new Stage,ILaya.stage=Laya.stage,Utils.gStage=Laya.stage,URL.rootPath=URL._basePath=Laya._getUrlPath(),MeshQuadTexture.__int__(),MeshVG.__init__(),MeshTexture.__init__(),Laya.render=new Render(0,0,Browser.mainCanvas),exports.render=Laya.render,Laya.stage.size(width,height),window.stage=Laya.stage,WebGLContext.__init__(),MeshParticle2D.__init__(),ShaderCompile.__init__(),RenderSprite.__init__(),KeyBoardManager.__init__(),MouseManager.instance.__init__(Laya.stage,Render.canvas),Input.__init__(),SoundManager.autoStopMusic=!0,Stat._StatRender=new StatUI,Value2D._initone(ShaderDefines2D.TEXTURE2D,TextureSV),Value2D._initone(ShaderDefines2D.TEXTURE2D|ShaderDefines2D.FILTERGLOW,TextureSV),Value2D._initone(ShaderDefines2D.PRIMITIVE,PrimitiveSV),Value2D._initone(ShaderDefines2D.SKINMESH,SkinSV),Render.canvas}}static _getUrlPath(){var location=Browser.window.location,pathName=location.pathname;return pathName=":"==pathName.charAt(2)?pathName.substring(1):pathName,URL.getPath("file:"==location.protocol?pathName:location.protocol+"//"+location.host+location.pathname)}static _arrayBufferSlice(start,end){var arrU8List=new Uint8Array(this,start,end-start),newU8List=new Uint8Array(arrU8List.length);return newU8List.set(arrU8List),newU8List.buffer}static set alertGlobalError(value){var erralert=0;Browser.window.onerror=value?function(msg,url,line,column,detail){erralert++<5&&detail&&this.alert("出错啦,请把此信息截图给研发商\n"+msg+"\n"+detail.stack)}:null}static _runScript(script){return Browser.window[Laya._evcode](script)}static enableDebugPanel(debugJsPath="libs/laya.debugtool.js"){if(Laya.DebugPanel)Laya.DebugPanel.enable();else{var script=Browser.createElement("script");script.onload=function(){Laya.DebugPanel.enable()},script.src=debugJsPath,Browser.document.body.appendChild(script)}}static enableWebGLPlus(){WebGLContext.__init_native()}static enableNative(){Laya.isNativeRender_enable||(Laya.isNativeRender_enable=!0,Shader.prototype.uploadTexture2D=function(value){var gl=LayaGL.instance;gl.bindTexture(gl.TEXTURE_2D,value)},RenderState2D.width=Browser.window.innerWidth,RenderState2D.height=Browser.window.innerHeight,Browser.measureText=function(txt,font){return window.conchTextCanvas.font=font,window.conchTextCanvas.measureText(txt)},Stage.clear=function(color){Context.set2DRenderConfig();var c=ColorUtils.create(color).arrColor,gl=LayaGL.instance;c&&gl.clearColor(c[0],c[1],c[2],c[3]),gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT|gl.STENCIL_BUFFER_BIT),RenderState2D.clear()},Sprite.drawToCanvas=Sprite.drawToTexture=function(sprite,_renderType,canvasWidth,canvasHeight,offsetX,offsetY){offsetX-=sprite.x,offsetY-=sprite.y,offsetX|=0,offsetY|=0,canvasWidth|=0,canvasHeight|=0;var canv=new HTMLCanvas(!1),ctx=canv.getContext("2d");return canv.size(canvasWidth,canvasHeight),ctx.asBitmap=!0,ctx._targets.start(),RenderSprite.renders[_renderType]._fun(sprite,ctx,offsetX,offsetY),ctx.flush(),ctx._targets.end(),ctx._targets.restore(),canv},Object.defineProperty(RenderTexture2D.prototype,"uv",{get:function(){return this._uv},set:function(v){this._uv=v}}),HTMLCanvas.prototype.getTexture=function(){return this._texture||(this._texture=this.context._targets,this._texture.uv=RenderTexture2D.flipyuv,this._texture.bitmap=this._texture),this._texture})}}Laya.stage=null,Laya.systemTimer=null,Laya.startTimer=null,Laya.physicsTimer=null,Laya.updateTimer=null,Laya.lateTimer=null,Laya.timer=null,Laya.loader=null,Laya.version="2.2.0",Laya._isinit=!1,Laya.isWXOpenDataContext=!1,Laya.isWXPosMsg=!1,Laya.__classmap=null,Laya.Config=Config,Laya.TextRender=TextRender,Laya.EventDispatcher=EventDispatcher,Laya.SoundChannel=SoundChannel,Laya.Stage=Stage,Laya.Render=Render,Laya.Browser=Browser,Laya.Sprite=Sprite,Laya.Node=Node,Laya.Context=Context,Laya.WebGL=WebGL,Laya.Handler=Handler,Laya.RunDriver=RunDriver,Laya.Utils=Utils,Laya.Input=Input,Laya.Loader=Loader,Laya.LocalStorage=LocalStorage,Laya.SoundManager=SoundManager,Laya.URL=URL,Laya.Event=Event,Laya.Matrix=Matrix,Laya.HTMLImage=HTMLImage,Laya.Laya=Laya,Laya._evcode="eval",Laya.isNativeRender_enable=!1,Laya.__classmap=ILaya.__classMap,ILaya.Timer=Timer,ILaya.Dragging=Dragging,ILaya.GraphicsBounds=GraphicsBounds,ILaya.Sprite=Sprite,ILaya.TextRender=TextRender,ILaya.Loader=Loader,ILaya.TTFLoader=TTFLoader,ILaya.WebAudioSound=WebAudioSound,ILaya.SoundManager=SoundManager,ILaya.ShaderCompile=ShaderCompile,ILaya.ClassUtils=ClassUtils,ILaya.SceneUtils=SceneUtils,ILaya.Context=Context,ILaya.Render=Render,ILaya.MouseManager=MouseManager,ILaya.Text=Text,ILaya.Browser=Browser,ILaya.WebGL=WebGL,ILaya.AudioSound=AudioSound,ILaya.Pool=Pool,ILaya.Utils=Utils,ILaya.Graphics=Graphics,ILaya.Submit=Submit,ILaya.Stage=Stage,ILaya.Resource=Resource,ILaya.WorkerLoader=WorkerLoader;var libs=window._layalibs;if(libs){libs.sort(function(a,b){return a.i-b.i});for(var j=0;j<libs.length;j++)libs[j].f(window,window.document,Laya)}let win=window;win.Laya?(win.Laya.Laya=Laya,Object.assign(win.Laya,Laya)):win.Laya=Laya;var __init=Laya.__init,init=Laya.init,version=Laya.version,alertGlobalError=Laya.alertGlobalError,enableDebugPanel=Laya.enableDebugPanel;function _static(_class,def){for(var i=0,sz=def.length;i<sz;i+=2)if("length"==def[i])_class.length=def[i+1].call(_class);else{function tmp(){var name=def[i],getfn=def[i+1];Object.defineProperty(_class,name,{get:function(){return delete this[name],this[name]=getfn.call(this)},set:function(v){delete this[name],this[name]=v},enumerable:!0,configurable:!0})}tmp()}}class Script extends Component{get isSingleton(){return!1}_onAwake(){this.onAwake(),this.onStart!==Script.prototype.onStart&&ILaya.startTimer.callLater(this,this.onStart)}_onEnable(){var proto=Script.prototype;this.onTriggerEnter!==proto.onTriggerEnter&&this.owner.on(Event.TRIGGER_ENTER,this,this.onTriggerEnter),this.onTriggerStay!==proto.onTriggerStay&&this.owner.on(Event.TRIGGER_STAY,this,this.onTriggerStay),this.onTriggerExit!==proto.onTriggerExit&&this.owner.on(Event.TRIGGER_EXIT,this,this.onTriggerExit),this.onMouseDown!==proto.onMouseDown&&this.owner.on(Event.MOUSE_DOWN,this,this.onMouseDown),this.onMouseUp!==proto.onMouseUp&&this.owner.on(Event.MOUSE_UP,this,this.onMouseUp),this.onClick!==proto.onClick&&this.owner.on(Event.CLICK,this,this.onClick),this.onStageMouseDown!==proto.onStageMouseDown&&ILaya.stage.on(Event.MOUSE_DOWN,this,this.onStageMouseDown),this.onStageMouseUp!==proto.onStageMouseUp&&ILaya.stage.on(Event.MOUSE_UP,this,this.onStageMouseUp),this.onStageClick!==proto.onStageClick&&ILaya.stage.on(Event.CLICK,this,this.onStageClick),this.onStageMouseMove!==proto.onStageMouseMove&&ILaya.stage.on(Event.MOUSE_MOVE,this,this.onStageMouseMove),this.onDoubleClick!==proto.onDoubleClick&&this.owner.on(Event.DOUBLE_CLICK,this,this.onDoubleClick),this.onRightClick!==proto.onRightClick&&this.owner.on(Event.RIGHT_CLICK,this,this.onRightClick),this.onMouseMove!==proto.onMouseMove&&this.owner.on(Event.MOUSE_MOVE,this,this.onMouseMove),this.onMouseOver!==proto.onMouseOver&&this.owner.on(Event.MOUSE_OVER,this,this.onMouseOver),this.onMouseOut!==proto.onMouseOut&&this.owner.on(Event.MOUSE_OUT,this,this.onMouseOut),this.onKeyDown!==proto.onKeyDown&&ILaya.stage.on(Event.KEY_DOWN,this,this.onKeyDown),this.onKeyPress!==proto.onKeyPress&&ILaya.stage.on(Event.KEY_PRESS,this,this.onKeyPress),this.onKeyUp!==proto.onKeyUp&&ILaya.stage.on(Event.KEY_UP,this,this.onKeyUp),this.onUpdate!==proto.onUpdate&&ILaya.updateTimer.frameLoop(1,this,this.onUpdate),this.onLateUpdate!==proto.onLateUpdate&&ILaya.lateTimer.frameLoop(1,this,this.onLateUpdate),this.onPreRender!==proto.onPreRender&&ILaya.lateTimer.frameLoop(1,this,this.onPreRender)}_onDisable(){this.owner.offAllCaller(this),ILaya.stage.offAllCaller(this),ILaya.startTimer.clearAll(this),ILaya.updateTimer.clearAll(this),ILaya.lateTimer.clearAll(this)}_isScript(){return!0}_onDestroy(){this.onDestroy()}onAwake(){}onEnable(){}onStart(){}onTriggerEnter(other,self,contact){}onTriggerStay(other,self,contact){}onTriggerExit(other,self,contact){}onMouseDown(e){}onMouseUp(e){}onClick(e){}onStageMouseDown(e){}onStageMouseUp(e){}onStageClick(e){}onStageMouseMove(e){}onDoubleClick(e){}onRightClick(e){}onMouseMove(e){}onMouseOver(e){}onMouseOut(e){}onKeyDown(e){}onKeyPress(e){}onKeyUp(e){}onUpdate(){}onLateUpdate(){}onPreRender(){}onPostRender(){}onDisable(){}onDestroy(){}}class GraphicAnimation extends FrameAnimation{constructor(){super(...arguments),this._nodeIDAniDic={}}_parseNodeList(uiView){this._nodeList||(this._nodeList=[]),this._nodeDefaultProps[uiView.compId]=uiView.props,uiView.compId&&this._nodeList.push(uiView.compId);var childs=uiView.child;if(childs){var i,len=childs.length;for(i=0;i<len;i++)this._parseNodeList(childs[i])}}_calGraphicData(aniData){var key;if(this._setUp(null,aniData),this._createGraphicData(),this._nodeIDAniDic)for(key in this._nodeIDAniDic)this._nodeIDAniDic[key]=null}_createGraphicData(){var i,preGraphic,gList=[],len=this.count,animationDataNew=this._usedFrames;for(animationDataNew||(animationDataNew=[]),i=0;i<len;i++)!animationDataNew[i]&&preGraphic||(preGraphic=this._createFrameGraphic(i)),gList.push(preGraphic);this._gList=gList}_createFrameGraphic(frame){var g=new Graphics;return GraphicAnimation._rootMatrix||(GraphicAnimation._rootMatrix=new Matrix),this._updateNodeGraphic(this._rootNode,frame,GraphicAnimation._rootMatrix,g),g}_updateNodeGraphic(node,frame,parentTransfrom,g,alpha=1){var tNodeG,tResultTransform,tTex;(tNodeG=this._nodeGDic[node.compId]=this._getNodeGraphicData(node.compId,frame,this._nodeGDic[node.compId])).resultTransform||(tNodeG.resultTransform=new Matrix),tResultTransform=tNodeG.resultTransform,Matrix.mul(tNodeG.transform,parentTransfrom,tResultTransform);var tGraphicAlpha=tNodeG.alpha*alpha;if(!(tGraphicAlpha<.01)){tNodeG.skin&&(tTex=this._getTextureByUrl(tNodeG.skin))&&(tResultTransform._checkTransform()?(g.drawTexture(tTex,0,0,tNodeG.width,tNodeG.height,tResultTransform,tGraphicAlpha),tNodeG.resultTransform=null):g.drawTexture(tTex,tResultTransform.tx,tResultTransform.ty,tNodeG.width,tNodeG.height,null,tGraphicAlpha));var i,len,childs=node.child;if(childs)for(len=childs.length,i=0;i<len;i++)this._updateNodeGraphic(childs[i],frame,tResultTransform,g,tGraphicAlpha)}}_updateNoChilds(tNodeG,g){if(tNodeG.skin){var tTex=this._getTextureByUrl(tNodeG.skin);if(tTex){var tTransform=tNodeG.transform;tTransform._checkTransform(),!tTransform._bTransform?g.drawTexture(tTex,tTransform.tx,tTransform.ty,tNodeG.width,tNodeG.height,null,tNodeG.alpha):g.drawTexture(tTex,0,0,tNodeG.width,tNodeG.height,tTransform.clone(),tNodeG.alpha)}}}_updateNodeGraphic2(node,frame,g){var tNodeG;if(tNodeG=this._nodeGDic[node.compId]=this._getNodeGraphicData(node.compId,frame,this._nodeGDic[node.compId]),node.child){var onlyTranslate,hasTrans,ifSave,tTransform=tNodeG.transform;tTransform._checkTransform(),hasTrans=(onlyTranslate=!tTransform._bTransform)&&(0!=tTransform.tx||0!=tTransform.ty),(ifSave=tTransform._bTransform||1!=tNodeG.alpha)&&g.save(),1!=tNodeG.alpha&&g.alpha(tNodeG.alpha),onlyTranslate?hasTrans&&g.translate(tTransform.tx,tTransform.ty):g.transform(tTransform.clone());var tTex,i,len,childs=node.child;if(tNodeG.skin&&(tTex=this._getTextureByUrl(tNodeG.skin))&&g.drawImage(tTex,0,0,tNodeG.width,tNodeG.height),childs)for(len=childs.length,i=0;i<len;i++)this._updateNodeGraphic2(childs[i],frame,g);ifSave?g.restore():onlyTranslate?hasTrans&&g.translate(-tTransform.tx,-tTransform.ty):g.transform(tTransform.clone().invert())}else this._updateNoChilds(tNodeG,g)}_calculateKeyFrames(node){super._calculateKeyFrames(node),this._nodeIDAniDic[node.target]=node}getNodeDataByID(nodeID){return this._nodeIDAniDic[nodeID]}_getParams(obj,params,frame,obj2){var rst=GraphicAnimation._temParam;rst.length=params.length;var i,len=params.length;for(i=0;i<len;i++)rst[i]=this._getObjVar(obj,params[i][0],frame,params[i][1],obj2);return rst}_getObjVar(obj,key,frame,noValue,obj2){if(key in obj){var vArr=obj[key];return frame>=vArr.length&&(frame=vArr.length-1),obj[key][frame]}return key in obj2?obj2[key]:noValue}_getNodeGraphicData(nodeID,frame,rst){rst||(rst=new GraphicNode),rst.transform?rst.transform.identity():rst.transform=new Matrix;var node=this.getNodeDataByID(nodeID);if(!node)return rst;var width,height,tex,frameData=node.frames,params=this._getParams(frameData,GraphicAnimation._drawTextureCmd,frame,this._nodeDefaultProps[nodeID]),url=params[0],px=params[5],py=params[6],aX=params[13],aY=params[14],sx=params[7],sy=params[8],rotate=params[9],skewX=params[11],skewY=params[12];width=params[3],height=params[4],0!=width&&0!=height||(url=null),-1==width&&(width=0),-1==height&&(height=0),rst.skin=url,rst.width=width,rst.height=height,url&&((tex=this._getTextureByUrl(url))?(width||(width=tex.sourceWidth),height||(height=tex.sourceHeight)):console.warn("lost skin:",url,",you may load pics first")),rst.alpha=params[10];var m=rst.transform;0!=aX&&(px=aX*width),0!=aY&&(py=aY*height),0==px&&0==py||m.translate(-px,-py);var tm=null;if(rotate||1!==sx||1!==sy||skewX||skewY){(tm=GraphicAnimation._tempMt).identity(),tm._bTransform=!0;var skx=.0174532922222222*(rotate-skewX),sky=.0174532922222222*(rotate+skewY),cx=Math.cos(sky),ssx=Math.sin(sky),cy=Math.sin(skx),ssy=Math.cos(skx);tm.a=sx*cx,tm.b=sx*ssx,tm.c=-sy*cy,tm.d=sy*ssy,tm.tx=tm.ty=0}return tm&&(m=Matrix.mul(m,tm,m)),m.translate(params[1],params[2]),rst}_getTextureByUrl(url){return Loader.getRes(url)}setAniData(uiView,aniName=null){if(uiView.animations){this._nodeDefaultProps={},this._nodeGDic={},this._nodeList&&(this._nodeList.length=0),this._rootNode=uiView,this._parseNodeList(uiView);var i,tAniO,aniDic={},anilist=[],animations=uiView.animations,len=animations.length;for(i=0;i<len;i++)if(tAniO=animations[i],this._labels=null,(!aniName||aniName==tAniO.name)&&tAniO){try{this._calGraphicData(tAniO)}catch(e){console.warn("parse animation fail:"+tAniO.name+",empty animation created"),this._gList=[]}var frameO={};frameO.interval=1e3/tAniO.frameRate,frameO.frames=this._gList,frameO.labels=this._labels,frameO.name=tAniO.name,anilist.push(frameO),aniDic[tAniO.name]=frameO}this.animationList=anilist,this.animationDic=aniDic}GraphicAnimation._temParam.length=0}parseByData(aniData){var rootNode,aniO;rootNode=aniData.nodeRoot,aniO=aniData.aniO,delete aniData.nodeRoot,delete aniData.aniO,this._nodeDefaultProps={},this._nodeGDic={},this._nodeList&&(this._nodeList.length=0),this._rootNode=rootNode,this._parseNodeList(rootNode),this._labels=null;try{this._calGraphicData(aniO)}catch(e){console.warn("parse animation fail:"+aniO.name+",empty animation created"),this._gList=[]}var frameO=aniData;return frameO.interval=1e3/aniO.frameRate,frameO.frames=this._gList,frameO.labels=this._labels,frameO.name=aniO.name,frameO}setUpAniData(uiView){if(uiView.animations){var i,tAniO,aniDic={},anilist=[],animations=uiView.animations,len=animations.length;for(i=0;i<len;i++)if(tAniO=animations[i]){var frameO={};frameO.name=tAniO.name,frameO.aniO=tAniO,frameO.nodeRoot=uiView,anilist.push(frameO),aniDic[tAniO.name]=frameO}this.animationList=anilist,this.animationDic=aniDic}}_clear(){this.animationList=null,this.animationDic=null,this._gList=null,this._nodeGDic=null}static parseAnimationByData(animationObject){var rst;return GraphicAnimation._I||(GraphicAnimation._I=new GraphicAnimation),rst=GraphicAnimation._I.parseByData(animationObject),GraphicAnimation._I._clear(),rst}static parseAnimationData(aniData){var rst;return GraphicAnimation._I||(GraphicAnimation._I=new GraphicAnimation),GraphicAnimation._I.setUpAniData(aniData),(rst={}).animationList=GraphicAnimation._I.animationList,rst.animationDic=GraphicAnimation._I.animationDic,GraphicAnimation._I._clear(),rst}}GraphicAnimation._drawTextureCmd=[["skin",null],["x",0],["y",0],["width",-1],["height",-1],["pivotX",0],["pivotY",0],["scaleX",1],["scaleY",1],["rotation",0],["alpha",1],["skewX",0],["skewY",0],["anchorX",0],["anchorY",0]],GraphicAnimation._temParam=[],GraphicAnimation._tempMt=new Matrix;class GraphicNode{constructor(){this.alpha=1}}class Animation extends AnimationBase{constructor(){super(),this._setControlNode(this)}destroy(destroyChild=!0){this.stop(),super.destroy(destroyChild),this._frames=null,this._labels=null}play(start=0,loop=!0,name=""){name&&this._setFramesFromCache(name,!0),super.play(start,loop,name)}_setFramesFromCache(name,showWarn=!1){if(this._url&&(name=this._url+"#"+name),name&&Animation.framesMap[name]){var tAniO=Animation.framesMap[name];return tAniO instanceof Array?(this._frames=Animation.framesMap[name],this._count=this._frames.length):(tAniO.nodeRoot&&(Animation.framesMap[name]=GraphicAnimation.parseAnimationByData(tAniO),tAniO=Animation.framesMap[name]),this._frames=tAniO.frames,this._count=this._frames.length,this._frameRateChanged||(this._interval=tAniO.interval),this._labels=this._copyLabels(tAniO.labels)),!0}return showWarn&&console.log("ani not found:",name),!1}_copyLabels(labels){if(!labels)return null;var rst,key;for(key in rst={},labels)rst[key]=Utils.copyArray([],labels[key]);return rst}_frameLoop(){this._visible&&this._style.alpha>.01&&this._frames&&super._frameLoop()}_displayToIndex(value){this._frames&&(this.graphics=this._frames[value])}get frames(){return this._frames}set frames(value){this._frames=value,value&&(this._count=value.length,this._actionName&&this._setFramesFromCache(this._actionName,!0),this.index=this._index)}set source(value){value.indexOf(".ani")>-1?this.loadAnimation(value):value.indexOf(".json")>-1||value.indexOf("als")>-1||value.indexOf("atlas")>-1?this.loadAtlas(value):this.loadImages(value.split(","))}set autoAnimation(value){this.play(0,!0,value)}set autoPlay(value){value?this.play():this.stop()}clear(){return super.clear(),this.stop(),this.graphics=null,this._frames=null,this._labels=null,this}loadImages(urls,cacheName=""){return this._url="",this._setFramesFromCache(cacheName)||(this.frames=Animation.framesMap[cacheName]?Animation.framesMap[cacheName]:Animation.createFrames(urls,cacheName)),this}loadAtlas(url,loaded=null,cacheName=""){this._url="";var _this=this;if(!_this._setFramesFromCache(cacheName)){function onLoaded(loadUrl){url===loadUrl&&(_this.frames=Animation.framesMap[cacheName]?Animation.framesMap[cacheName]:Animation.createFrames(url,cacheName),loaded&&loaded.run())}Loader.getAtlas(url)?onLoaded(url):ILaya.loader.load(url,Handler.create(null,onLoaded,[url]),null,Loader.ATLAS)}return this}loadAnimation(url,loaded=null,atlas=null){this._url=url;return this._actionName||(this._actionName=""),this._setFramesFromCache(this._actionName)?(this._setFramesFromCache(this._actionName,!0),this.index=0,loaded&&loaded.run()):!atlas||Loader.getAtlas(atlas)?this._loadAnimationData(url,loaded,atlas):ILaya.loader.load(atlas,Handler.create(this,this._loadAnimationData,[url,loaded,atlas]),null,Loader.ATLAS),this}_loadAnimationData(url,loaded=null,atlas=null){if(!atlas||Loader.getAtlas(atlas)){var _this=this;Loader.getRes(url)?onLoaded(url):ILaya.loader.load(url,Handler.create(null,onLoaded,[url]),null,Loader.JSON)}else console.warn("atlas load fail:"+atlas);function onLoaded(loadUrl){if(Loader.getRes(loadUrl)){if(url===loadUrl){var tAniO;if(Animation.framesMap[url+"#"])_this._setFramesFromCache(_this._actionName,!0),_this.index=0,_this._resumePlay();else{var aniData=GraphicAnimation.parseAnimationData(Loader.getRes(url));if(!aniData)return;var i,defaultO,aniList=aniData.animationList,len=aniList.length;for(i=0;i<len;i++)tAniO=aniList[i],Animation.framesMap[url+"#"+tAniO.name]=tAniO,defaultO||(defaultO=tAniO);defaultO&&(Animation.framesMap[url+"#"]=defaultO,_this._setFramesFromCache(_this._actionName,!0),_this.index=0),_this._resumePlay()}loaded&&loaded.run()}Loader.clearRes(url)}else Animation.framesMap[url+"#"]&&(_this._setFramesFromCache(this._actionName,!0),_this.index=0,_this._resumePlay(),loaded&&loaded.run())}}static createFrames(url,name){var arr;if("string"==typeof url){var atlas=Loader.getAtlas(url);if(atlas&&atlas.length){arr=[];for(var i=0,n=atlas.length;i<n;i++){var g=new Graphics;g.drawImage(Loader.getRes(atlas[i]),0,0),arr.push(g)}}}else if(url instanceof Array)for(arr=[],i=0,n=url.length;i<n;i++)(g=new Graphics).loadImage(url[i],0,0),arr.push(g);return name&&(Animation.framesMap[name]=arr),arr}static clearCache(key){var val,cache=Animation.framesMap,key2=key+"#";for(val in cache)val!==key&&0!==val.indexOf(key2)||delete Animation.framesMap[val]}}Animation.framesMap={},ILaya.regClass(Animation),ClassUtils.regClass("laya.display.Animation",Animation),ClassUtils.regClass("Laya.Animation",Animation);class EffectAnimation extends FrameAnimation{constructor(){super(...arguments),this._initData={}}set target(v){this._target&&this._target.off(EffectAnimation.EFFECT_BEGIN,this,this._onOtherBegin),this._target=v,this._target&&this._target.on(EffectAnimation.EFFECT_BEGIN,this,this._onOtherBegin),this._addEvent()}get target(){return this._target}_onOtherBegin(effect){effect!==this&&this.stop()}set playEvent(event){this._playEvent=event,event&&this._addEvent()}_addEvent(){this._target&&this._playEvent&&(this._setControlNode(this._target),this._target.on(this._playEvent,this,this._onPlayAction))}_onPlayAction(){this.play(0,!1)}play(start=0,loop=!0,name=""){this._target&&(this._target.event(EffectAnimation.EFFECT_BEGIN,[this]),this._recordInitData(),super.play(start,loop,name))}_recordInitData(){var i,len,key;if(this._aniKeys)for(len=this._aniKeys.length,i=0;i<len;i++)key=this._aniKeys[i],this._initData[key]=this._target[key]}set effectClass(classStr){if(this._effectClass=ClassUtils.getClass(classStr),this._effectClass){var uiData=this._effectClass.uiView;if(uiData){var aniData=uiData.animations;if(aniData&&aniData[0]){var data=aniData[0];this._setUp({},data),data.nodes&&data.nodes[0]&&(this._aniKeys=data.nodes[0].keys)}}}}set effectData(uiData){if(uiData){var aniData=uiData.animations;if(aniData&&aniData[0]){var data=aniData[0];this._setUp({},data),data.nodes&&data.nodes[0]&&(this._aniKeys=data.nodes[0].keys)}}}_displayToIndex(value){if(this._animationData){value<0&&(value=0),value>this._count&&(value=this._count);var i,nodes=this._animationData.nodes,len=nodes.length;for(len=len>1?1:len,i=0;i<len;i++)this._displayNodeToFrame(nodes[i],value)}}_displayNodeToFrame(node,frame,targetDic=null){if(this._target){var key,propFrames,value,i,tSecondFrame,easeFun,tKeyFrames,startFrame,endFrame,target=this._target,frames=node.frames,keys=node.keys,len=keys.length,secondFrames=node.secondFrames;for(i=0;i<len;i++)propFrames=frames[key=keys[i]],-1==(tSecondFrame=secondFrames[key])?value=this._initData[key]:frame<tSecondFrame?(startFrame=(tKeyFrames=node.keyframes[key])[0]).tween?(null==(easeFun=Ease[startFrame.tweenMethod])&&(easeFun=Ease.linearNone),endFrame=tKeyFrames[1],value=easeFun(frame,this._initData[key],endFrame.value-this._initData[key],endFrame.index)):value=this._initData[key]:value=propFrames.length>frame?propFrames[frame]:propFrames[propFrames.length-1],target[key]=value}}_calculateKeyFrames(node){super._calculateKeyFrames(node);var key,tKeyFrames,keyFrames=node.keyframes,secondFrames=(node.target,{});for(key in node.secondFrames=secondFrames,keyFrames)(tKeyFrames=keyFrames[key]).length<=1?secondFrames[key]=-1:secondFrames[key]=tKeyFrames[1].index}}EffectAnimation.EFFECT_BEGIN="effectbegin",ClassUtils.regClass("laya.display.EffectAnimation",EffectAnimation),ClassUtils.regClass("Laya.EffectAnimation",EffectAnimation);class SceneLoader extends EventDispatcher{constructor(){super(),this._completeHandler=new Handler(this,this.onOneLoadComplete),this.reset()}reset(){this._toLoadList=[],this._isLoading=!1,this.totalCount=0}get leftCount(){return this._isLoading?this._toLoadList.length+1:this._toLoadList.length}get loadedCount(){return this.totalCount-this.leftCount}load(url,is3D=!1,ifCheck=!0){var i,len;if(url instanceof Array)for(len=url.length,i=0;i<len;i++)this._addToLoadList(url[i],is3D);else this._addToLoadList(url,is3D);ifCheck&&this._checkNext()}_addToLoadList(url,is3D=!1){this._toLoadList.indexOf(url)>=0||Loader.getRes(url)||(is3D?this._toLoadList.push({url:url}):this._toLoadList.push(url),this.totalCount++)}_checkNext(){if(!this._isLoading){if(0==this._toLoadList.length)return void this.event(Event.COMPLETE);var tItem;"string"==typeof(tItem=this._toLoadList.pop())?this.loadOne(tItem):this.loadOne(tItem.url,!0)}}loadOne(url,is3D=!1){this._curUrl=url;var type=Utils.getFileExtension(this._curUrl);is3D?ILaya.loader.create(url,this._completeHandler):SceneLoader.LoadableExtensions[type]?ILaya.loader.load(url,this._completeHandler,null,SceneLoader.LoadableExtensions[type]):url!=AtlasInfoManager.getFileLoadPath(url)||SceneLoader.No3dLoadTypes[type]||!LoaderManager.createMap[type]?ILaya.loader.load(url,this._completeHandler):ILaya.loader.create(url,this._completeHandler)}onOneLoadComplete(){this._isLoading=!1,Loader.getRes(this._curUrl)||console.log("Fail to load:",this._curUrl);var dataO,type=Utils.getFileExtension(this._curUrl);SceneLoader.LoadableExtensions[type]&&((dataO=Loader.getRes(this._curUrl))&&dataO instanceof Prefab&&(dataO=dataO.json),dataO&&(dataO.loadList&&this.load(dataO.loadList,!1,!1),dataO.loadList3D&&this.load(dataO.loadList3D,!0,!1)));"sk"==type&&this.load(this._curUrl.replace(".sk",".png"),!1,!1),this.event(Event.PROGRESS,this.getProgress()),this._checkNext()}getProgress(){return this.loadedCount/this.totalCount}}SceneLoader.LoadableExtensions={scene:Loader.JSON,scene3d:Loader.JSON,ani:Loader.JSON,ui:Loader.JSON,prefab:Loader.PREFAB},SceneLoader.No3dLoadTypes={png:!0,jpg:!0,txt:!0};class Scene extends Sprite{constructor(createChildren=!0){super(),this.autoDestroyAtClosed=!1,this.url=null,this._viewCreated=!1,this._$componentType="Scene",this._setBit(Const.NOT_READY,!0),Scene.unDestroyedScenes.push(this),this._scene=this,createChildren&&this.createChildren()}createChildren(){}loadScene(path){var url=path.indexOf(".")>-1?path:path+".scene",view=ILaya.loader.getRes(url);if(view)this.createView(view);else{ILaya.loader.resetProgress();var loader=new SceneLoader;loader.on(Event.COMPLETE,this,this._onSceneLoaded,[url]),loader.load(url)}}_onSceneLoaded(url){this.createView(ILaya.Loader.getRes(url))}createView(view){view&&!this._viewCreated&&(this._viewCreated=!0,SceneUtils.createByData(this,view))}getNodeByID(id){return this._idMap?this._idMap[id]:null}open(closeOther=!0,param=null){closeOther&&Scene.closeAll(),Scene.root.addChild(this),this.onOpened(param)}onOpened(param){}close(type=null){this.onClosed(type),this.autoDestroyAtClosed?this.destroy():this.removeSelf()}onClosed(type=null){}destroy(destroyChild=!0){this._idMap=null,super.destroy(destroyChild);for(var list=Scene.unDestroyedScenes,i=list.length-1;i>-1;i--)if(list[i]===this)return void list.splice(i,1)}set scaleX(value){super.get_scaleX()!=value&&(super.set_scaleX(value),this.event(Event.RESIZE))}get scaleX(){return super.scaleX}set scaleY(value){super.get_scaleY()!=value&&(super.set_scaleY(value),this.event(Event.RESIZE))}get scaleY(){return super.scaleY}get width(){if(this._width)return this._width;for(var max=0,i=this.numChildren-1;i>-1;i--){var comp=this.getChildAt(i);comp._visible&&(max=Math.max(comp._x+comp.width*comp.scaleX,max))}return max}set width(value){super.get_width()!=value&&(super.set_width(value),this.callLater(this._sizeChanged))}get height(){if(this._height)return this._height;for(var max=0,i=this.numChildren-1;i>-1;i--){var comp=this.getChildAt(i);comp._visible&&(max=Math.max(comp._y+comp.height*comp.scaleY,max))}return max}set height(value){super.get_height()!=value&&(super.set_height(value),this.callLater(this._sizeChanged))}_sizeChanged(){this.event(Event.RESIZE)}static get root(){return Scene._root||(Scene._root=ILaya.stage.addChild(new Sprite),Scene._root.name="root",ILaya.stage.on("resize",null,()=>{Scene._root.size(ILaya.stage.width,ILaya.stage.height),Scene._root.event(Event.RESIZE)}),Scene._root.size(ILaya.stage.width,ILaya.stage.height),Scene._root.event(Event.RESIZE)),Scene._root}get timer(){return this._timer||ILaya.timer}set timer(value){this._timer=value}static load(url,complete=null,progress=null){ILaya.loader.resetProgress();var loader=new SceneLoader;function onProgress(value){Scene._loadPage&&Scene._loadPage.event("progress",value),progress&&progress.runWith(value)}loader.on(Event.PROGRESS,null,onProgress),loader.once(Event.COMPLETE,null,function(){loader.off(Event.PROGRESS,null,onProgress);var obj=ILaya.Loader.getRes(url);if(!obj)throw"Can not find scene:"+url;if(!obj.props)throw"Scene data is error:"+url;var runtime=obj.props.runtime?obj.props.runtime:obj.type,clas=ILaya.ClassUtils.getClass(runtime);if("instance"==obj.props.renderType)var scene=clas.instance||(clas.instance=new clas);else scene=new clas;if(!(scene&&scene instanceof Node))throw"Can not find scene:"+runtime;scene.url=url,scene._getBit(Const.NOT_READY)?(scene.on("onViewCreated",null,function(){complete&&complete.runWith(scene)}),scene.createView(obj)):complete&&complete.runWith(scene),Scene.hideLoadingPage()}),loader.load(url)}static open(url,closeOther=!0,param=null,complete=null,progress=null){if(param instanceof Handler){var temp=complete;complete=param,param=temp}Scene.showLoadingPage(),Scene.load(url,Handler.create(null,this._onSceneLoaded,[closeOther,complete,param]),progress)}static _onSceneLoaded(closeOther,complete,param,scene){scene.open(closeOther,param),complete&&complete.runWith(scene)}static close(url,name=""){for(var flag=!1,list=Scene.unDestroyedScenes,i=0,n=list.length;i<n;i++){var scene=list[i];scene&&scene.parent&&scene.url===url&&scene.name==name&&(scene.close(),flag=!0)}return flag}static closeAll(){for(var root=Scene.root,i=0,n=root.numChildren;i<n;i++){var scene=root.getChildAt(0);scene instanceof Scene?scene.close():scene.removeSelf()}}static destroy(url,name=""){for(var flag=!1,list=Scene.unDestroyedScenes,i=0,n=list.length;i<n;i++){var scene=list[i];scene.url===url&&scene.name==name&&(scene.destroy(),flag=!0)}return flag}static gc(){Resource.destroyUnusedResources()}static setLoadingPage(loadPage){Scene._loadPage!=loadPage&&(Scene._loadPage=loadPage)}static showLoadingPage(param=null,delay=500){Scene._loadPage&&(ILaya.systemTimer.clear(null,Scene._showLoading),ILaya.systemTimer.clear(null,Scene._hideLoading),ILaya.systemTimer.once(delay,null,Scene._showLoading,[param],!1))}static _showLoading(param){ILaya.stage.addChild(Scene._loadPage),Scene._loadPage.onOpened(param)}static _hideLoading(){Scene._loadPage.close()}static hideLoadingPage(delay=500){Scene._loadPage&&(ILaya.systemTimer.clear(null,Scene._showLoading),ILaya.systemTimer.clear(null,Scene._hideLoading),ILaya.systemTimer.once(delay,null,Scene._hideLoading))}}Scene.unDestroyedScenes=[],ILaya.regClass(Scene),ClassUtils.regClass("laya.display.Scene",Scene),ClassUtils.regClass("Laya.Scene",Scene);class DrawCanvasCmd{constructor(){this._paramData=null}static create(texture,x,y,width,height){return null}recover(){this._graphicsCmdEncoder=null,Pool.recover("DrawCanvasCmd",this)}get cmdID(){return DrawCanvasCmd.ID}}DrawCanvasCmd.ID="DrawCanvasCmd",DrawCanvasCmd._DRAW_IMAGE_CMD_ENCODER_=null,DrawCanvasCmd._PARAM_TEXTURE_POS_=2,DrawCanvasCmd._PARAM_VB_POS_=5;class DrawParticleCmd{static create(_temp){var cmd=Pool.getItemByClass("DrawParticleCmd",DrawParticleCmd);return cmd._templ=_temp,cmd}recover(){this._templ=null,Pool.recover("DrawParticleCmd",this)}run(context,gx,gy){context.drawParticle(gx,gy,this._templ)}get cmdID(){return DrawParticleCmd.ID}}DrawParticleCmd.ID="DrawParticleCmd";class FilterSetterBase{constructor(){}paramChanged(){Laya.systemTimer.callLater(this,this.buildFilter)}buildFilter(){this._target&&this.addFilter(this._target)}addFilter(sprite){var preFilters;sprite&&(sprite.filters?(preFilters=sprite.filters).indexOf(this._filter)<0&&(preFilters.push(this._filter),sprite.filters=Utils.copyArray([],preFilters)):sprite.filters=[this._filter])}removeFilter(sprite){sprite&&(sprite.filters=null)}set target(value){this._target!=value&&(this._target=value,this.paramChanged())}}class BlurFilterGLRender{render(rt,ctx,width,height,filter){var shaderValue=Value2D.create(ShaderDefines2D.TEXTURE2D,0);this.setShaderInfo(shaderValue,filter,rt.width,rt.height),ctx.drawTarget(rt,0,0,width,height,Matrix.EMPTY.identity(),shaderValue)}setShaderInfo(shader,filter,w,h){shader.defines.add(Filter.BLUR);var sv=shader;BlurFilterGLRender.blurinfo[0]=w,BlurFilterGLRender.blurinfo[1]=h,sv.blurInfo=BlurFilterGLRender.blurinfo;var sigma=filter.strength/3,sigma2=sigma*sigma;filter.strength_sig2_2sig2_gauss1[0]=filter.strength,filter.strength_sig2_2sig2_gauss1[1]=sigma2,filter.strength_sig2_2sig2_gauss1[2]=2*sigma2,filter.strength_sig2_2sig2_gauss1[3]=1/(2*Math.PI*sigma2),sv.strength_sig2_2sig2_gauss1=filter.strength_sig2_2sig2_gauss1}}BlurFilterGLRender.blurinfo=new Array(2);class BlurFilter extends Filter{constructor(strength=4){super(),this.strength_sig2_2sig2_gauss1=[],this.strength=strength,this._glRender=new BlurFilterGLRender}get type(){return Filter.BLUR}getStrenth_sig2_2sig2_native(){this.strength_sig2_native||(this.strength_sig2_native=new Float32Array(4));var sigma=this.strength/3,sigma2=sigma*sigma;return this.strength_sig2_native[0]=this.strength,this.strength_sig2_native[1]=sigma2,this.strength_sig2_native[2]=2*sigma2,this.strength_sig2_native[3]=1/(2*Math.PI*sigma2),this.strength_sig2_native}}class EffectBase extends Component{constructor(){super(...arguments),this.duration=1e3,this.delay=0,this.repeat=0,this.autoDestroyAtComplete=!0}_onAwake(){this.target=this.target||this.owner,this.autoDestroyAtComplete&&(this._comlete=Handler.create(this.target,this.target.destroy,null,!1)),this.eventName?this.owner.on(this.eventName,this,this._exeTween):this._exeTween()}_exeTween(){this._tween=this._doTween(),this._tween.repeat=this.repeat}_doTween(){return null}onReset(){this.duration=1e3,this.delay=0,this.repeat=0,this.ease=null,this.target=null,this.eventName&&(this.owner.off(this.eventName,this,this._exeTween),this.eventName=null),this._comlete&&(this._comlete.recover(),this._comlete=null),this._tween&&(this._tween.clear(),this._tween=null)}}class GlowFilterGLRender{setShaderInfo(shader,w,h,data){shader.defines.add(data.type);var sv=shader;sv.u_blurInfo1=data._sv_blurInfo1;var info2=data._sv_blurInfo2;info2[0]=w,info2[1]=h,sv.u_blurInfo2=info2,sv.u_color=data.getColor()}render(rt,ctx,width,height,filter){var w=width,h=height,svBlur=Value2D.create(ShaderDefines2D.TEXTURE2D,0);this.setShaderInfo(svBlur,w,h,filter);var svCP=Value2D.create(ShaderDefines2D.TEXTURE2D,0),matI=Matrix.TEMP.identity();ctx.drawTarget(rt,0,0,w,h,matI,svBlur),ctx.drawTarget(rt,0,0,w,h,matI,svCP)}}class GlowFilter extends Filter{constructor(color,blur=4,offX=6,offY=6){super(),this._elements=new Float32Array(9),this._sv_blurInfo1=new Array(4),this._sv_blurInfo2=[0,0,1,0],this._color=new ColorUtils(color),this.blur=Math.min(blur,20),this.offX=offX,this.offY=offY,this._sv_blurInfo1[0]=this._sv_blurInfo1[1]=this.blur,this._sv_blurInfo1[2]=offX,this._sv_blurInfo1[3]=-offY,this._glRender=new GlowFilterGLRender}get type(){return BlurFilter.GLOW}get offY(){return this._elements[6]}set offY(value){this._elements[6]=value,this._sv_blurInfo1[3]=-value}get offX(){return this._elements[5]}set offX(value){this._elements[5]=value,this._sv_blurInfo1[2]=value}getColor(){return this._color.arrColor}get blur(){return this._elements[4]}set blur(value){this._elements[4]=value,this._sv_blurInfo1[0]=this._sv_blurInfo1[1]=value}getColorNative(){this._color_native||(this._color_native=new Float32Array(4));var color=this.getColor();return this._color_native[0]=color[0],this._color_native[1]=color[1],this._color_native[2]=color[2],this._color_native[3]=color[3],this._color_native}getBlurInfo1Native(){return this._blurInof1_native||(this._blurInof1_native=new Float32Array(4)),this._blurInof1_native[0]=this._blurInof1_native[1]=this.blur,this._blurInof1_native[2]=this.offX,this._blurInof1_native[3]=this.offY,this._blurInof1_native}getBlurInfo2Native(){return this._blurInof2_native||(this._blurInof2_native=new Float32Array(4)),this._blurInof2_native[2]=1,this._blurInof2_native}}class KeyLocation{}KeyLocation.STANDARD=0,KeyLocation.LEFT=1,KeyLocation.RIGHT=2,KeyLocation.NUM_PAD=3;class Keyboard{}Keyboard.NUMBER_0=48,Keyboard.NUMBER_1=49,Keyboard.NUMBER_2=50,Keyboard.NUMBER_3=51,Keyboard.NUMBER_4=52,Keyboard.NUMBER_5=53,Keyboard.NUMBER_6=54,Keyboard.NUMBER_7=55,Keyboard.NUMBER_8=56,Keyboard.NUMBER_9=57,Keyboard.A=65,Keyboard.B=66,Keyboard.C=67,Keyboard.D=68,Keyboard.E=69,Keyboard.F=70,Keyboard.G=71,Keyboard.H=72,Keyboard.I=73,Keyboard.J=74,Keyboard.K=75,Keyboard.L=76,Keyboard.M=77,Keyboard.N=78,Keyboard.O=79,Keyboard.P=80,Keyboard.Q=81,Keyboard.R=82,Keyboard.S=83,Keyboard.T=84,Keyboard.U=85,Keyboard.V=86,Keyboard.W=87,Keyboard.X=88,Keyboard.Y=89,Keyboard.Z=90,Keyboard.F1=112,Keyboard.F2=113,Keyboard.F3=114,Keyboard.F4=115,Keyboard.F5=116,Keyboard.F6=117,Keyboard.F7=118,Keyboard.F8=119,Keyboard.F9=120,Keyboard.F10=121,Keyboard.F11=122,Keyboard.F12=123,Keyboard.F13=124,Keyboard.F14=125,Keyboard.F15=126,Keyboard.NUMPAD=21,Keyboard.NUMPAD_0=96,Keyboard.NUMPAD_1=97,Keyboard.NUMPAD_2=98,Keyboard.NUMPAD_3=99,Keyboard.NUMPAD_4=100,Keyboard.NUMPAD_5=101,Keyboard.NUMPAD_6=102,Keyboard.NUMPAD_7=103,Keyboard.NUMPAD_8=104,Keyboard.NUMPAD_9=105,Keyboard.NUMPAD_ADD=107,Keyboard.NUMPAD_DECIMAL=110,Keyboard.NUMPAD_DIVIDE=111,Keyboard.NUMPAD_ENTER=108,Keyboard.NUMPAD_MULTIPLY=106,Keyboard.NUMPAD_SUBTRACT=109,Keyboard.SEMICOLON=186,Keyboard.EQUAL=187,Keyboard.COMMA=188,Keyboard.MINUS=189,Keyboard.PERIOD=190,Keyboard.SLASH=191,Keyboard.BACKQUOTE=192,Keyboard.LEFTBRACKET=219,Keyboard.BACKSLASH=220,Keyboard.RIGHTBRACKET=221,Keyboard.QUOTE=222,Keyboard.ALTERNATE=18,Keyboard.BACKSPACE=8,Keyboard.CAPS_LOCK=20,Keyboard.COMMAND=15,Keyboard.CONTROL=17,Keyboard.DELETE=46,Keyboard.ENTER=13,Keyboard.ESCAPE=27,Keyboard.PAGE_UP=33,Keyboard.PAGE_DOWN=34,Keyboard.END=35,Keyboard.HOME=36,Keyboard.LEFT=37,Keyboard.UP=38,Keyboard.RIGHT=39,Keyboard.DOWN=40,Keyboard.SHIFT=16,Keyboard.SPACE=32,Keyboard.TAB=9,Keyboard.INSERT=45;class QuickTestTool{constructor(){}static getMCDName(type){return QuickTestTool._typeToNameDic[type]}static showRenderTypeInfo(type,force=!1){if(force||!QuickTestTool.showedDic[type]){if(QuickTestTool.showedDic[type]=!0,!QuickTestTool._rendertypeToStrDic[type]){var tType,arr=[];for(tType=1;tType<=type;)tType&type&&arr.push(QuickTestTool.getMCDName(tType&type)),tType<<=1;QuickTestTool._rendertypeToStrDic[type]=arr.join(",")}console.log("cmd:",QuickTestTool._rendertypeToStrDic[type])}}static __init__(){QuickTestTool._typeToNameDic[SpriteConst.ALPHA]="ALPHA",QuickTestTool._typeToNameDic[SpriteConst.TRANSFORM]="TRANSFORM",QuickTestTool._typeToNameDic[SpriteConst.TEXTURE]="TEXTURE",QuickTestTool._typeToNameDic[SpriteConst.GRAPHICS]="GRAPHICS",QuickTestTool._typeToNameDic[SpriteConst.ONECHILD]="ONECHILD",QuickTestTool._typeToNameDic[SpriteConst.CHILDS]="CHILDS",QuickTestTool._typeToNameDic[SpriteConst.TRANSFORM|SpriteConst.ALPHA]="TRANSFORM|ALPHA",QuickTestTool._typeToNameDic[SpriteConst.CANVAS]="CANVAS",QuickTestTool._typeToNameDic[SpriteConst.BLEND]="BLEND",QuickTestTool._typeToNameDic[SpriteConst.FILTERS]="FILTERS",QuickTestTool._typeToNameDic[SpriteConst.MASK]="MASK",QuickTestTool._typeToNameDic[SpriteConst.CLIP]="CLIP",QuickTestTool._typeToNameDic[SpriteConst.LAYAGL3D]="LAYAGL3D"}render(context,x,y){QuickTestTool._addType(this._renderType),QuickTestTool.showRenderTypeInfo(this._renderType),RenderSprite.renders[this._renderType]._fun(this,context,x+this._x,y+this._y),this._repaint=0}_stageRender(context,x,y){QuickTestTool._countStart(),QuickTestTool._PreStageRender.call(ILaya.stage,context,x,y),QuickTestTool._countEnd()}static _countStart(){var key;for(key in QuickTestTool._countDic)QuickTestTool._countDic[key]=0}static _countEnd(){QuickTestTool._i++,QuickTestTool._i>60&&(QuickTestTool.showCountInfo(),QuickTestTool._i=0)}static _addType(type){QuickTestTool._countDic[type]?QuickTestTool._countDic[type]+=1:QuickTestTool._countDic[type]=1}static showCountInfo(){var key;for(key in console.log("==================="),QuickTestTool._countDic)console.log("count:"+QuickTestTool._countDic[key]),QuickTestTool.showRenderTypeInfo(key,!0)}static enableQuickTest(){QuickTestTool.__init__(),Sprite.prototype.render=QuickTestTool.prototype.render,QuickTestTool._PreStageRender=Stage.prototype.render,Stage.prototype.render=QuickTestTool.prototype._stageRender}}QuickTestTool.showedDic={},QuickTestTool._rendertypeToStrDic={},QuickTestTool._typeToNameDic={},QuickTestTool._countDic={},QuickTestTool._i=0;class ResourceVersion{static enable(manifestFile,callback,type=2){ResourceVersion.type=type,ILaya.loader.load(manifestFile,Handler.create(null,ResourceVersion.onManifestLoaded,[callback]),null,Loader.JSON)}static onManifestLoaded(callback,data){ResourceVersion.manifest=data,URL.customFormat=ResourceVersion.addVersionPrefix,callback.run(),data||console.warn("资源版本清单文件不存在,不使用资源版本管理。忽略ERR_FILE_NOT_FOUND错误。")}static addVersionPrefix(originURL){return originURL=URL.getAdptedFilePath(originURL),ResourceVersion.manifest&&ResourceVersion.manifest[originURL]?ResourceVersion.type==ResourceVersion.FILENAME_VERSION?ResourceVersion.manifest[originURL]:ResourceVersion.manifest[originURL]+"/"+originURL:originURL}}ResourceVersion.FOLDER_VERSION=1,ResourceVersion.FILENAME_VERSION=2,ResourceVersion.type=ResourceVersion.FOLDER_VERSION;class Socket extends EventDispatcher{constructor(host=null,port=0,byteClass=null,protocols=null){super(),this.disableInput=!1,this.protocols=[],this._byteClass=byteClass||Byte,this.protocols=protocols,this.endian=Socket.BIG_ENDIAN,host&&port>0&&port<65535&&this.connect(host,port)}get input(){return this._input}get output(){return this._output}get connected(){return this._connected}get endian(){return this._endian}set endian(value){this._endian=value,null!=this._input&&(this._input.endian=value),null!=this._output&&(this._output.endian=value)}connect(host,port){var url="ws://"+host+":"+port;this.connectByUrl(url)}connectByUrl(url){null!=this._socket&&this.close(),this._socket&&this.cleanSocket(),this.protocols&&0!=this.protocols.length?this._socket=new Browser.window.WebSocket(url,this.protocols):this._socket=new Browser.window.WebSocket(url),this._socket.binaryType="arraybuffer",this._output=new this._byteClass,this._output.endian=this.endian,this._input=new this._byteClass,this._input.endian=this.endian,this._addInputPosition=0,this._socket.onopen=(e=>{this._onOpen(e)}),this._socket.onmessage=(msg=>{this._onMessage(msg)}),this._socket.onclose=(e=>{this._onClose(e)}),this._socket.onerror=(e=>{this._onError(e)})}cleanSocket(){this.close(),this._connected=!1,this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null,this._socket=null}close(){if(null!=this._socket)try{this._socket.close()}catch(e){}}_onOpen(e){this._connected=!0,this.event(Event.OPEN,e)}_onMessage(msg){if(msg&&msg.data){var data=msg.data;if(this.disableInput&&data)this.event(Event.MESSAGE,data);else{this._input.length>0&&this._input.bytesAvailable<1&&(this._input.clear(),this._addInputPosition=0);var pre=this._input.pos;!this._addInputPosition&&(this._addInputPosition=0),this._input.pos=this._addInputPosition,data&&("string"==typeof data?this._input.writeUTFBytes(data):this._input.writeArrayBuffer(data),this._addInputPosition=this._input.pos,this._input.pos=pre),this.event(Event.MESSAGE,data)}}}_onClose(e){this._connected=!1,this.event(Event.CLOSE,e)}_onError(e){this.event(Event.ERROR,e)}send(data){this._socket.send(data)}flush(){if(this._output&&this._output.length>0){var evt;try{this._socket&&this._socket.send(this._output.__getBuffer().slice(0,this._output.length))}catch(e){evt=e}this._output.endian=this.endian,this._output.clear(),evt&&this.event(Event.ERROR,evt)}}}Socket.LITTLE_ENDIAN="littleEndian",Socket.BIG_ENDIAN="bigEndian";class HTMLChar{constructor(){this.reset()}setData(char,w,h,style){return this.char=char,this.charNum=char.charCodeAt(0),this.x=this.y=0,this.width=w,this.height=h,this.style=style,this.isWord=!HTMLChar._isWordRegExp.test(char),this}reset(){return this.x=this.y=this.width=this.height=0,this.isWord=!1,this.char=null,this.charNum=0,this.style=null,this}recover(){Pool.recover("HTMLChar",this.reset())}static create(){return Pool.getItemByClass("HTMLChar",HTMLChar)}_isChar(){return!0}_getCSSStyle(){return this.style}}HTMLChar._isWordRegExp=new RegExp("[\\w.]","");class Log{static enable(){Log._logdiv||(Log._logdiv=Browser.createElement("div"),Log._logdiv.style.cssText="border:white;padding:4px;overflow-y:auto;z-index:1000000;background:rgba(100,100,100,0.6);color:white;position: absolute;left:0px;top:0px;width:50%;height:50%;",Browser.document.body.appendChild(Log._logdiv),Log._btn=Browser.createElement("button"),Log._btn.innerText="Hide",Log._btn.style.cssText="z-index:1000001;position: absolute;left:10px;top:10px;",Log._btn.onclick=Log.toggle,Browser.document.body.appendChild(Log._btn))}static toggle(){var style=Log._logdiv.style;""===style.display?(Log._btn.innerText="Show",style.display="none"):(Log._btn.innerText="Hide",style.display="")}static print(value){Log._logdiv&&(Log._count>=Log.maxCount&&Log.clear(),Log._count++,Log._logdiv.innerText+=value+"\n",Log.autoScrollToBottom&&Log._logdiv.scrollHeight-Log._logdiv.scrollTop-Log._logdiv.clientHeight<50&&(Log._logdiv.scrollTop=Log._logdiv.scrollHeight))}static clear(){Log._logdiv.innerText="",Log._count=0}}Log._count=0,Log.maxCount=50,Log.autoScrollToBottom=!0;let DATANUM=300;class PerfData{constructor(id,color,name,scale){this.scale=1,this.datas=new Array(DATANUM),this.datapos=0,this.id=id,this.color=color,this.name=name,this.scale=scale}addData(v){this.datas[this.datapos]=v,this.datapos++,this.datapos%=DATANUM}}class PerfHUD extends Sprite{constructor(){super(),this.datas=[],this.xdata=new Array(PerfHUD.DATANUM),this.ydata=new Array(PerfHUD.DATANUM),this.hud_width=800,this.hud_height=200,this.gMinV=0,this.gMaxV=100,this.textSpace=40,this.sttm=0,PerfHUD.inst=this,this._renderType|=SpriteConst.CUSTOM,this._setRenderType(this._renderType),this._setCustomRender(),this.addDataDef(0,16777215,"frame",1),this.addDataDef(1,65280,"update",1),this.addDataDef(2,16711680,"flush",1),PerfHUD._now=performance?performance.now.bind(performance):Date.now}now(){return PerfHUD._now()}start(){this.sttm=PerfHUD._now()}end(i){var dt=PerfHUD._now()-this.sttm;this.updateValue(i,dt)}config(w,h){this.hud_width=w,this.hud_height=h}addDataDef(id,color,name,scale){this.datas[id]=new PerfData(id,color,name,scale)}updateValue(id,v){this.datas[id].addData(v)}v2y(v){this._y,this.hud_height,this.gMinV,this.gMaxV;return this._y+this.hud_height*(1-(v-this.gMinV)/this.gMaxV)}drawHLine(ctx,v,color,text){var sx=this._x,sy=(this._x,this.hud_width,this.v2y(v));ctx.fillText(text,sx,sy-6,null,"green",null),sx+=this.textSpace,ctx.fillStyle=color,ctx.fillRect(sx,sy,this._x+this.hud_width,1,null)}customRender(ctx,x,y){var now=performance.now();PerfHUD._lastTm<=0&&(PerfHUD._lastTm=now),this.updateValue(0,now-PerfHUD._lastTm),PerfHUD._lastTm=now,ctx.save(),ctx.fillRect(this._x,this._y,this.hud_width,this.hud_height+4,"#000000cc"),ctx.globalAlpha=.9,this.drawHLine(ctx,0,"green"," 0"),this.drawHLine(ctx,10,"green"," 10"),this.drawHLine(ctx,16.667,"red"," "),this.drawHLine(ctx,20,"green","50|20"),this.drawHLine(ctx,33.334,"yellow",""),this.drawHLine(ctx,16.667*3,"yellow",""),this.drawHLine(ctx,66.668,"yellow",""),this.drawHLine(ctx,50,"green","20|50"),this.drawHLine(ctx,100,"green","10|100");for(var di=0,sz=this.datas.length;di<sz;di++){var cd=this.datas[di];if(cd){var dtlen=cd.datas.length,dx=(this.hud_width-this.textSpace)/dtlen,cx=cd.datapos,_cx=this._x+this.textSpace;ctx.fillStyle=cd.color;for(var dtsz=dtlen;cx<dtsz;cx++){var sty=this.v2y(cd.datas[cx]*cd.scale);ctx.fillRect(_cx,sty,dx,this.hud_height+this._y-sty,null),_cx+=dx}for(cx=0;cx<cd.datapos;cx++)sty=this.v2y(cd.datas[cx]*cd.scale),ctx.fillRect(_cx,sty,dx,this.hud_height+this._y-sty,null),_cx+=dx}}ctx.restore()}}PerfHUD._lastTm=0,PerfHUD._now=null,PerfHUD.DATANUM=300,PerfHUD.drawTexTm=0;class PoolCache{constructor(){this.maxCount=1e3}getCacheList(){return Pool.getPoolBySign(this.sign)}tryDispose(force){var list;(list=Pool.getPoolBySign(this.sign)).length>this.maxCount&&list.splice(this.maxCount,list.length-this.maxCount)}static addPoolCacheManager(sign,maxCount=100){var cache;(cache=new PoolCache).sign=sign,cache.maxCount=maxCount,CacheManger.regCacheByFunction(Utils.bind(cache.tryDispose,cache),Utils.bind(cache.getCacheList,cache))}}class TimeLine extends EventDispatcher{constructor(){super(...arguments),this._tweenDic={},this._tweenDataList=[],this._currTime=0,this._lastTime=0,this._startTime=0,this._index=0,this._gidIndex=0,this._firstTweenDic={},this._startTimeSort=!1,this._endTimeSort=!1,this._loopKey=!1,this.scale=1,this._frameRate=60,this._frameIndex=0,this._total=0}static to(target,props,duration,ease=null,offset=0){return(new TimeLine).to(target,props,duration,ease,offset)}static from(target,props,duration,ease=null,offset=0){return(new TimeLine).from(target,props,duration,ease,offset)}to(target,props,duration,ease=null,offset=0){return this._create(target,props,duration,ease,offset,!0)}from(target,props,duration,ease=null,offset=0){return this._create(target,props,duration,ease,offset,!1)}_create(target,props,duration,ease,offset,isTo){var tTweenData=Pool.getItemByClass("tweenData",tweenData);return tTweenData.isTo=isTo,tTweenData.type=0,tTweenData.target=target,tTweenData.duration=duration,tTweenData.data=props,tTweenData.startTime=this._startTime+offset,tTweenData.endTime=tTweenData.startTime+tTweenData.duration,tTweenData.ease=ease,this._startTime=Math.max(tTweenData.endTime,this._startTime),this._tweenDataList.push(tTweenData),this._startTimeSort=!0,this._endTimeSort=!0,this}addLabel(label,offset){var tTweenData=Pool.getItemByClass("tweenData",tweenData);return tTweenData.type=1,tTweenData.data=label,tTweenData.endTime=tTweenData.startTime=this._startTime+offset,this._labelDic||(this._labelDic={}),this._labelDic[label]=tTweenData,this._tweenDataList.push(tTweenData),this}removeLabel(label){if(this._labelDic&&this._labelDic[label]){var tTweenData=this._labelDic[label];if(tTweenData){var tIndex=this._tweenDataList.indexOf(tTweenData);tIndex>-1&&this._tweenDataList.splice(tIndex,1)}delete this._labelDic[label]}}gotoTime(time){if(null!=this._tweenDataList&&0!=this._tweenDataList.length){var tTween,tObject,tTweenDataCopyList,tTweenData;for(var p in this._firstTweenDic)if(tObject=this._firstTweenDic[p])for(var tDataP in tObject)tDataP in tObject.diyTarget&&(tObject.diyTarget[tDataP]=tObject[tDataP]);for(p in this._tweenDic)(tTween=this._tweenDic[p]).clear(),delete this._tweenDic[p];if(this._index=0,this._gidIndex=0,this._currTime=time,this._lastTime=Browser.now(),null==this._endTweenDataList||this._endTimeSort){this._endTimeSort=!1,this._endTweenDataList=tTweenDataCopyList=this._tweenDataList.concat(),tTweenDataCopyList.sort(function(paraA,paraB){return paraA.endTime>paraB.endTime?1:paraA.endTime<paraB.endTime?-1:0})}else tTweenDataCopyList=this._endTweenDataList;for(var i=0,n=tTweenDataCopyList.length;i<n;i++)if(0==(tTweenData=tTweenDataCopyList[i]).type){if(!(time>=tTweenData.endTime))break;this._index=Math.max(this._index,i+1);var props=tTweenData.data;if(tTweenData.isTo)for(var tP in props)tTweenData.target[tP]=props[tP]}for(i=0,n=this._tweenDataList.length;i<n;i++)0==(tTweenData=this._tweenDataList[i]).type&&time>=tTweenData.startTime&&time<tTweenData.endTime&&(this._index=Math.max(this._index,i+1),this._gidIndex++,(tTween=Pool.getItemByClass("tween",Tween))._create(tTweenData.target,tTweenData.data,tTweenData.duration,tTweenData.ease,Handler.create(this,this._animComplete,[this._gidIndex]),0,!1,tTweenData.isTo,!0,!1),tTween.setStartTime(this._currTime-(time-tTweenData.startTime)),tTween._updateEase(this._currTime),tTween.gid=this._gidIndex,this._tweenDic[this._gidIndex]=tTween)}}gotoLabel(Label){if(null!=this._labelDic){var tLabelData=this._labelDic[Label];tLabelData&&this.gotoTime(tLabelData.startTime)}}pause(){ILaya.timer.clear(this,this._update)}resume(){this.play(this._currTime,this._loopKey)}play(timeOrLabel=0,loop=!1){if(this._tweenDataList){if(this._startTimeSort){this._startTimeSort=!1,this._tweenDataList.sort(function(paraA,paraB){return paraA.startTime>paraB.startTime?1:paraA.startTime<paraB.startTime?-1:0});for(var i=0,n=this._tweenDataList.length;i<n;i++){var tTweenData=this._tweenDataList[i];if(null!=tTweenData&&0==tTweenData.type){var tTarget=tTweenData.target,gid=tTarget.$_GID||(tTarget.$_GID=Utils.getGID()),tSrcData=null;for(var p in null==this._firstTweenDic[gid]?((tSrcData={}).diyTarget=tTarget,this._firstTweenDic[gid]=tSrcData):tSrcData=this._firstTweenDic[gid],tTweenData.data)null==tSrcData[p]&&(tSrcData[p]=tTarget[p])}}}"string"==typeof timeOrLabel?this.gotoLabel(timeOrLabel):this.gotoTime(timeOrLabel),this._loopKey=loop,this._lastTime=Browser.now(),ILaya.timer.frameLoop(1,this,this._update)}}_update(){if(this._currTime>=this._startTime){if(!this._loopKey){for(var p in this._tweenDic)(tTween=this._tweenDic[p]).complete();return this._complete(),void this.pause()}if(this._complete(),!this._tweenDataList)return;this.gotoTime(0)}var tTween,tNow=Browser.now(),tFrameTime=tNow-this._lastTime,tCurrTime=this._currTime+=tFrameTime*this.scale;for(p in this._lastTime=tNow,this._tweenDic)(tTween=this._tweenDic[p])._updateEase(tCurrTime);if(0!=this._tweenDataList.length&&this._index<this._tweenDataList.length){var tTweenData=this._tweenDataList[this._index];tCurrTime>=tTweenData.startTime&&(this._index++,0==tTweenData.type?(this._gidIndex++,(tTween=Pool.getItemByClass("tween",Tween))._create(tTweenData.target,tTweenData.data,tTweenData.duration,tTweenData.ease,Handler.create(this,this._animComplete,[this._gidIndex]),0,!1,tTweenData.isTo,!0,!1),tTween.setStartTime(tCurrTime),tTween.gid=this._gidIndex,this._tweenDic[this._gidIndex]=tTween,tTween._updateEase(tCurrTime)):this.event(Event.LABEL,tTweenData.data))}}_animComplete(index){this._tweenDic[index]&&delete this._tweenDic[index]}_complete(){this.event(Event.COMPLETE)}get index(){return this._frameIndex}set index(value){this._frameIndex=value,this.gotoTime(this._frameIndex/this._frameRate*1e3)}get total(){return this._total=Math.floor(this._startTime/1e3*this._frameRate),this._total}reset(){var p,i,len;if(this._labelDic)for(p in this._labelDic)delete this._labelDic[p];for(p in this._tweenDic)this._tweenDic[p].clear(),delete this._tweenDic[p];for(p in this._firstTweenDic)delete this._firstTweenDic[p];if(this._endTweenDataList=null,this._tweenDataList&&this._tweenDataList.length)for(len=this._tweenDataList.length,i=0;i<len;i++)this._tweenDataList[i]&&this._tweenDataList[i].destroy();this._tweenDataList.length=0,this._currTime=0,this._lastTime=0,this._startTime=0,this._index=0,this._gidIndex=0,this.scale=1,ILaya.timer.clear(this,this._update)}destroy(){this.reset(),this._labelDic=null,this._tweenDic=null,this._tweenDataList=null,this._firstTweenDic=null}}class tweenData{constructor(){this.type=0,this.isTo=!0}destroy(){this.target=null,this.ease=null,this.data=null,this.isTo=!0,this.type=0,Pool.recover("tweenData",this)}}class ArabicReshaper{characterMapContains(c){for(var i=0;i<ArabicReshaper.charsMap.length;++i)if(ArabicReshaper.charsMap[i][0]===c)return!0;return!1}getCharRep(c){for(var i=0;i<ArabicReshaper.charsMap.length;++i)if(ArabicReshaper.charsMap[i][0]===c)return ArabicReshaper.charsMap[i];return!1}getCombCharRep(c1,c2){for(var i=0;i<ArabicReshaper.combCharsMap.length;++i)if(ArabicReshaper.combCharsMap[i][0][0]===c1&&ArabicReshaper.combCharsMap[i][0][1]===c2)return ArabicReshaper.combCharsMap[i];return!1}isTransparent(c){for(var i=0;i<ArabicReshaper.transChars.length;++i)if(ArabicReshaper.transChars[i]===c)return!0;return!1}getOriginalCharsFromCode(code){var j;for(j=0;j<ArabicReshaper.charsMap.length;++j)if(ArabicReshaper.charsMap[j].indexOf(code)>-1)return String.fromCharCode(ArabicReshaper.charsMap[j][0]);for(j=0;j<ArabicReshaper.combCharsMap.length;++j)if(ArabicReshaper.combCharsMap[j].indexOf(code)>-1)return String.fromCharCode(ArabicReshaper.combCharsMap[j][0][0])+String.fromCharCode(ArabicReshaper.combCharsMap[j][0][1]);return String.fromCharCode(code)}convertArabic(normal){for(var crep,combcrep,shaped="",i=0;i<normal.length;++i){var current=normal.charCodeAt(i);if(this.characterMapContains(current)){for(var prev=null,next=null,prevID=i-1,nextID=i+1;prevID>=0&&this.isTransparent(normal.charCodeAt(prevID));--prevID);for((!(crep=!!(prev=prevID>=0?normal.charCodeAt(prevID):null)&&this.getCharRep(prev))||null==crep[2]&&null==crep[3])&&(prev=null);nextID<normal.length&&this.isTransparent(normal.charCodeAt(nextID));++nextID);if((!(crep=!!(next=nextID<normal.length?normal.charCodeAt(nextID):null)&&this.getCharRep(next))||null==crep[3]&&null==crep[4])&&(next=null),1604===current&&null!=next&&(1570===next||1571===next||1573===next||1575===next)){combcrep=this.getCombCharRep(current,next),shaped+=null!=prev?String.fromCharCode(combcrep[4]):String.fromCharCode(combcrep[1]),++i;continue}if(crep=this.getCharRep(current),null!=prev&&null!=next&&null!=crep[3]){shaped+=String.fromCharCode(crep[3]);continue}if(null!=prev&&null!=crep[4]){shaped+=String.fromCharCode(crep[4]);continue}if(null!=next&&null!=crep[2]){shaped+=String.fromCharCode(crep[2]);continue}shaped+=String.fromCharCode(crep[1])}else shaped+=String.fromCharCode(current)}return shaped}convertArabicBack(apfb){var selectedChar,i,toReturn="";for(i=0;i<apfb.length;++i)selectedChar=apfb.charCodeAt(i),toReturn+=this.getOriginalCharsFromCode(selectedChar);return toReturn}}ArabicReshaper.charsMap=[[1569,65152,null,null,null],[1570,65153,null,null,65154],[1571,65155,null,null,65156],[1572,65157,null,null,65158],[1573,65159,null,null,65160],[1574,65161,65163,65164,65162],[1575,65165,null,null,65166],[1576,65167,65169,65170,65168],[1577,65171,null,null,65172],[1578,65173,65175,65176,65174],[1579,65177,65179,65180,65178],[1580,65181,65183,65184,65182],[1581,65185,65187,65188,65186],[1582,65189,65191,65192,65190],[1583,65193,null,null,65194],[1584,65195,null,null,65196],[1585,65197,null,null,65198],[1586,65199,null,null,65200],[1587,65201,65203,65204,65202],[1588,65205,65207,65208,65206],[1589,65209,65211,65212,65210],[1590,65213,65215,65216,65214],[1591,65217,65219,65220,65218],[1592,65221,65223,65224,65222],[1593,65225,65227,65228,65226],[1594,65229,65231,65232,65230],[1600,1600,1600,1600,1600],[1601,65233,65235,65236,65234],[1602,65237,65239,65240,65238],[1603,65241,65243,65244,65242],[1604,65245,65247,65248,65246],[1605,65249,65251,65252,65250],[1606,65253,65255,65256,65254],[1607,65257,65259,65260,65258],[1608,65261,null,null,65262],[1609,65263,null,null,65264],[1610,65265,65267,65268,65266],[1662,64342,64344,64345,64343],[1740,64508,64510,64511,64509],[1670,64378,64380,64381,64379],[1705,64398,64400,64401,64399],[1711,64402,64404,64405,64403],[1688,64394,null,null,64395]],ArabicReshaper.combCharsMap=[[[1604,1570],65269,null,null,65270],[[1604,1571],65271,null,null,65272],[[1604,1573],65273,null,null,65274],[[1604,1575],65275,null,null,65276]],ArabicReshaper.transChars=[1552,1554,1555,1556,1557,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773];class MatirxArray{static ArrayMul(a,b,o){if(a)if(b)for(var ai0,ai1,ai2,ai3,i=0;i<4;i++)ai0=a[i],ai1=a[i+4],ai2=a[i+8],ai3=a[i+12],o[i]=ai0*b[0]+ai1*b[1]+ai2*b[2]+ai3*b[3],o[i+4]=ai0*b[4]+ai1*b[5]+ai2*b[6]+ai3*b[7],o[i+8]=ai0*b[8]+ai1*b[9]+ai2*b[10]+ai3*b[11],o[i+12]=ai0*b[12]+ai1*b[13]+ai2*b[14]+ai3*b[15];else MatirxArray.copyArray(a,o);else MatirxArray.copyArray(b,o)}static copyArray(f,t){if(f&&t)for(var i=0;i<f.length;i++)t[i]=f[i]}}return exports.AlphaCmd=AlphaCmd,exports.Animation=Animation,exports.AnimationBase=AnimationBase,exports.ArabicReshaper=ArabicReshaper,exports.AtlasGrid=AtlasGrid,exports.AtlasInfoManager=AtlasInfoManager,exports.AudioSound=AudioSound,exports.AudioSoundChannel=AudioSoundChannel,exports.BasePoly=BasePoly,exports.BaseShader=BaseShader,exports.BaseTexture=BaseTexture,exports.Bezier=Bezier,exports.Bitmap=Bitmap,exports.BitmapFont=BitmapFont,exports.BlendMode=BlendMode,exports.BlurFilter=BlurFilter,exports.BlurFilterGLRender=BlurFilterGLRender,exports.BlurFilterSetter=class extends FilterSetterBase{constructor(){super(),this._strength=4,this._filter=new BlurFilter(this.strength)}buildFilter(){this._filter=new BlurFilter(this.strength),super.buildFilter()}get strength(){return this._strength}set strength(value){this._strength=value}},exports.BoundsStyle=BoundsStyle,exports.Browser=Browser,exports.Buffer=Buffer,exports.Buffer2D=Buffer2D,exports.BufferState2D=BufferState2D,exports.BufferStateBase=BufferStateBase,exports.ButtonEffect=class{constructor(){this._curState=0,this.effectScale=1.5,this.tweenTime=300}set target(tar){this._tar=tar,tar.on(Event.MOUSE_DOWN,this,this.toChangedState),tar.on(Event.MOUSE_UP,this,this.toInitState),tar.on(Event.MOUSE_OUT,this,this.toInitState)}toChangedState(){this._curState=1,this._curTween&&Tween.clear(this._curTween),this._curTween=Tween.to(this._tar,{scaleX:this.effectScale,scaleY:this.effectScale},this.tweenTime,Ease[this.effectEase],Handler.create(this,this.tweenComplete))}toInitState(){2!=this._curState&&(this._curTween&&Tween.clear(this._curTween),this._curState=2,this._curTween=Tween.to(this._tar,{scaleX:1,scaleY:1},this.tweenTime,Ease[this.backEase],Handler.create(this,this.tweenComplete)))}tweenComplete(){this._curState=0,this._curTween=null}},exports.Byte=Byte,exports.CONST3D2D=CONST3D2D,exports.CacheManger=CacheManger,exports.CacheStyle=CacheStyle,exports.CallLater=CallLater,exports.CharRenderInfo=CharRenderInfo,exports.CharRender_Canvas=CharRender_Canvas,exports.CharRender_Native=CharRender_Native,exports.CharSubmitCache=CharSubmitCache,exports.ClassUtils=ClassUtils,exports.ClipRectCmd=ClipRectCmd,exports.ColorFilter=ColorFilter,exports.ColorFilterSetter=class extends FilterSetterBase{constructor(){super(),this._brightness=0,this._contrast=0,this._saturation=0,this._hue=0,this._red=0,this._green=0,this._blue=0,this._alpha=0,this._filter=new ColorFilter}buildFilter(){this._filter.reset(),this._filter.color(this.red,this.green,this.blue,this.alpha),this._filter.adjustHue(this.hue),this._filter.adjustContrast(this.contrast),this._filter.adjustBrightness(this.brightness),this._filter.adjustSaturation(this.saturation),super.buildFilter()}get brightness(){return this._brightness}set brightness(value){this._brightness=value,this.paramChanged()}get contrast(){return this._contrast}set contrast(value){this._contrast=value,this.paramChanged()}get saturation(){return this._saturation}set saturation(value){this._saturation=value,this.paramChanged()}get hue(){return this._hue}set hue(value){this._hue=value,this.paramChanged()}get red(){return this._red}set red(value){this._red=value,this.paramChanged()}get green(){return this._green}set green(value){this._green=value,this.paramChanged()}get blue(){return this._blue}set blue(value){this._blue=value,this.paramChanged()}get color(){return this._color}set color(value){var colorO;this._color=value,colorO=ColorUtils.create(value),this._red=255*colorO.arrColor[0],this._green=255*colorO.arrColor[1],this._blue=255*colorO.arrColor[2],this.paramChanged()}get alpha(){return this._alpha}set alpha(value){this._alpha=value,this.paramChanged()}},exports.ColorUtils=ColorUtils,exports.CommandEncoder=class{constructor(layagl,reserveSize,adjustSize,isSyncToRenderThread){this._idata=[]}getArrayData(){return this._idata}getPtrID(){return 0}beginEncoding(){}endEncoding(){}clearEncoding(){this._idata.length=0}getCount(){return this._idata.length}add_ShaderValue(o){this._idata.push(o)}addShaderUniform(one){this.add_ShaderValue(one)}},exports.CommonScript=class extends Component{get isSingleton(){return!1}constructor(){super()}onAwake(){}onEnable(){}onStart(){}onUpdate(){}onLateUpdate(){}onDisable(){}onDestroy(){}},exports.Component=Component,exports.Config=Config,exports.Const=Const,exports.Context=Context,exports.Dragging=Dragging,exports.Draw9GridTexture=Draw9GridTexture,exports.DrawCanvasCmd=DrawCanvasCmd,exports.DrawCircleCmd=DrawCircleCmd,exports.DrawCurvesCmd=DrawCurvesCmd,exports.DrawImageCmd=DrawImageCmd,exports.DrawLineCmd=DrawLineCmd,exports.DrawLinesCmd=DrawLinesCmd,exports.DrawParticleCmd=DrawParticleCmd,exports.DrawPathCmd=DrawPathCmd,exports.DrawPieCmd=DrawPieCmd,exports.DrawPolyCmd=DrawPolyCmd,exports.DrawRectCmd=DrawRectCmd,exports.DrawStyle=DrawStyle,exports.DrawTextureCmd=DrawTextureCmd,exports.DrawTexturesCmd=DrawTexturesCmd,exports.DrawTrianglesCmd=DrawTrianglesCmd,exports.Earcut=Earcut,exports.EarcutNode=EarcutNode,exports.Ease=Ease,exports.EffectAnimation=EffectAnimation,exports.EffectBase=EffectBase,exports.Event=Event,exports.EventDispatcher=EventDispatcher,exports.FadeIn=class extends EffectBase{_doTween(){return this.target.alpha=0,Tween.to(this.target,{alpha:1},this.duration,Ease[this.ease],this._comlete,this.delay)}},exports.FadeOut=class extends EffectBase{_doTween(){return this.target.alpha=1,Tween.to(this.target,{alpha:0},this.duration,Ease[this.ease],this._comlete,this.delay)}},exports.FillBorderTextCmd=FillBorderTextCmd,exports.FillBorderWordsCmd=FillBorderWordsCmd,exports.FillTextCmd=FillTextCmd,exports.FillTextureCmd=FillTextureCmd,exports.FillWordsCmd=FillWordsCmd,exports.Filter=Filter,exports.FilterSetterBase=FilterSetterBase,exports.FontInfo=FontInfo,exports.FrameAnimation=FrameAnimation,exports.GlowFilter=GlowFilter,exports.GlowFilterGLRender=GlowFilterGLRender,exports.GlowFilterSetter=class extends FilterSetterBase{constructor(){super(),this._color="#ff0000",this._blur=4,this._offX=6,this._offY=6,this._filter=new GlowFilter(this._color)}buildFilter(){this._filter=new GlowFilter(this.color,this.blur,this.offX,this.offY),super.buildFilter()}get color(){return this._color}set color(value){this._color=value,this.paramChanged()}get blur(){return this._blur}set blur(value){this._blur=value,this.paramChanged()}get offX(){return this._offX}set offX(value){this._offX=value,this.paramChanged()}get offY(){return this._offY}set offY(value){this._offY=value,this.paramChanged()}},exports.GrahamScan=GrahamScan,exports.GraphicAnimation=GraphicAnimation,exports.Graphics=Graphics,exports.GraphicsBounds=GraphicsBounds,exports.HTMLCanvas=HTMLCanvas,exports.HTMLChar=HTMLChar,exports.HTMLImage=HTMLImage,exports.Handler=Handler,exports.HitArea=HitArea,exports.HttpRequest=HttpRequest,exports.ICharRender=ICharRender,exports.ILaya=ILaya,exports.IStatRender=IStatRender,exports.IndexBuffer2D=IndexBuffer2D,exports.InlcudeFile=InlcudeFile,exports.Input=Input,exports.KeyBoardManager=KeyBoardManager,exports.KeyLocation=KeyLocation,exports.Keyboard=Keyboard,exports.Laya=Laya,exports.LayaGL=LayaGL,exports.LayaGLQuickRunner=LayaGLQuickRunner,exports.LayaGLRunner=class{static uploadShaderUniforms(layaGL,commandEncoder,shaderData,uploadUnTexture){for(var data=shaderData._data,shaderUniform=commandEncoder.getArrayData(),shaderCall=0,i=0,n=shaderUniform.length;i<n;i++){var one=shaderUniform[i];if(uploadUnTexture||-1!==one.textureID){var value=data[one.dataOffset];null!=value&&(shaderCall+=one.fun.call(one.caller,one,value))}}return shaderCall}static uploadCustomUniform(layaGL,custom,index,data){var shaderCall=0,one=custom[index];return one&&null!=data&&(shaderCall+=one.fun.call(one.caller,one,data)),shaderCall}static uploadShaderUniformsForNative(layaGL,commandEncoder,shaderData){return LayaGL.instance.uploadShaderUniforms(commandEncoder,shaderData._data,shaderData._runtimeCopyValues.length>0?LayaGL.UPLOAD_SHADER_UNIFORM_TYPE_DATA:LayaGL.UPLOAD_SHADER_UNIFORM_TYPE_ID)}},exports.LayaGPU=LayaGPU,exports.Loader=Loader,exports.LoaderManager=LoaderManager,exports.LocalStorage=LocalStorage,exports.Log=Log,exports.MathUtil=MathUtil,exports.MatirxArray=MatirxArray,exports.Matrix=Matrix,exports.Mesh2D=Mesh2D,exports.MeshParticle2D=MeshParticle2D,exports.MeshQuadTexture=MeshQuadTexture,exports.MeshTexture=MeshTexture,exports.MeshVG=MeshVG,exports.Mouse=Mouse,exports.MouseManager=MouseManager,exports.Node=Node,exports.Path=Path,exports.PerfData=PerfData,exports.PerfHUD=PerfHUD,exports.Point=Point,exports.Pool=Pool,exports.PoolCache=PoolCache,exports.Prefab=Prefab,exports.PrimitiveSV=PrimitiveSV,exports.QuickTestTool=QuickTestTool,exports.Rectangle=Rectangle,exports.Render=Render,exports.RenderInfo=RenderInfo,exports.RenderSprite=RenderSprite,exports.RenderState2D=RenderState2D,exports.RenderTexture2D=RenderTexture2D,exports.Resource=Resource,exports.ResourceVersion=ResourceVersion,exports.RestoreCmd=RestoreCmd,exports.RotateCmd=RotateCmd,exports.RunDriver=RunDriver,exports.SaveBase=SaveBase,exports.SaveClipRect=SaveClipRect,exports.SaveCmd=SaveCmd,exports.SaveMark=SaveMark,exports.SaveTransform=SaveTransform,exports.SaveTranslate=SaveTranslate,exports.ScaleCmd=ScaleCmd,exports.Scene=Scene,exports.SceneLoader=SceneLoader,exports.SceneUtils=SceneUtils,exports.Script=Script,exports.Shader=Shader,exports.Shader2D=Shader2D,exports.Shader2X=Shader2X,exports.ShaderCompile=ShaderCompile,exports.ShaderDefines2D=ShaderDefines2D,exports.ShaderDefinesBase=ShaderDefinesBase,exports.ShaderNode=ShaderNode,exports.ShaderValue=class{constructor(){}},exports.SkinMeshBuffer=SkinMeshBuffer,exports.SkinSV=SkinSV,exports.Socket=Socket,exports.Sound=class extends EventDispatcher{load(url){}play(startTime=0,loops=0){return null}get duration(){return 0}dispose(){}},exports.SoundChannel=SoundChannel,exports.SoundManager=SoundManager,exports.SoundNode=class extends Sprite{constructor(){super(),this.visible=!1,this.on(Event.ADDED,this,this._onParentChange),this.on(Event.REMOVED,this,this._onParentChange)}_onParentChange(){this.target=this.parent}play(loops=1,complete=null){isNaN(loops)&&(loops=1),this.url&&(this.stop(),this._channel=SoundManager.playSound(this.url,loops,complete))}stop(){this._channel&&!this._channel.isStopped&&this._channel.stop(),this._channel=null}_setPlayAction(tar,event,action,add=!0){this[action]&&tar&&(add?tar.on(event,this,this[action]):tar.off(event,this,this[action]))}_setPlayActions(tar,events,action,add=!0){if(tar&&events){var i,len,eventArr=events.split(",");for(len=eventArr.length,i=0;i<len;i++)this._setPlayAction(tar,eventArr[i],action,add)}}set playEvent(events){this._playEvents=events,events&&this._tar&&this._setPlayActions(this._tar,events,"play")}set target(tar){this._tar&&(this._setPlayActions(this._tar,this._playEvents,"play",!1),this._setPlayActions(this._tar,this._stopEvents,"stop",!1)),this._tar=tar,this._tar&&(this._setPlayActions(this._tar,this._playEvents,"play",!0),this._setPlayActions(this._tar,this._stopEvents,"stop",!0))}set stopEvent(events){this._stopEvents=events,events&&this._tar&&this._setPlayActions(this._tar,events,"stop")}},exports.Sprite=Sprite,exports.SpriteConst=SpriteConst,exports.SpriteStyle=SpriteStyle,exports.Stage=Stage,exports.Stat=Stat,exports.StatUI=StatUI,exports.StringKey=StringKey,exports.StrokeTextCmd=StrokeTextCmd,exports.Submit=Submit,exports.SubmitBase=SubmitBase,exports.SubmitCMD=SubmitCMD,exports.SubmitCanvas=SubmitCanvas,exports.SubmitKey=SubmitKey,exports.SubmitTarget=SubmitTarget,exports.SubmitTexture=SubmitTexture,exports.System=class{static changeDefinition(name,classObj){window.Laya[name]=classObj;var str=name+"=classObj";window.eval(str)}},exports.TTFLoader=TTFLoader,exports.Text=Text,exports.TextAtlas=TextAtlas,exports.TextRender=TextRender,exports.TextStyle=TextStyle,exports.TextTexture=TextTexture,exports.Texture=Texture,exports.Texture2D=Texture2D,exports.TextureSV=TextureSV,exports.TimeLine=TimeLine,exports.Timer=Timer,exports.TouchManager=TouchManager,exports.TransformCmd=TransformCmd,exports.TranslateCmd=TranslateCmd,exports.Tween=Tween,exports.URL=URL,exports.Utils=Utils,exports.Value2D=Value2D,exports.VectorGraphManager=VectorGraphManager,exports.VertexArrayObject=class{constructor(){}},exports.VertexBuffer2D=VertexBuffer2D,exports.WeakObject=WeakObject,exports.WebAudioSound=WebAudioSound,exports.WebAudioSoundChannel=WebAudioSoundChannel,exports.WebGL=WebGL,exports.WebGLCacheAsNormalCanvas=WebGLCacheAsNormalCanvas,exports.WebGLContext=WebGLContext,exports.WebGLRTMgr=WebGLRTMgr,exports.WordText=WordText,exports.WorkerLoader=WorkerLoader,exports.__init=__init,exports._static=_static,exports.alertGlobalError=alertGlobalError,exports.enableDebugPanel=enableDebugPanel,exports.init=init,exports.isWXOpenDataContext=void 0,exports.isWXPosMsg=void 0,exports.version=version,exports.static=_static,exports}({});