@smoud/tiny
Version:
Fast and tiny JavaScript library for HTML5 game and playable ads creation.
1 lines • 182 kB
JavaScript
!function(){var t={847:function(){Date.now||(Date.now=function(){return(new Date).getTime()}),'undefined'==typeof Float32Array&&(window.Float32Array=Array,window.Uint16Array=Array),void 0===Object.assign&&(Object.assign=function(t){'use strict';if(null==t)throw new TypeError('Cannot convert undefined or null to object');for(var i=Object(t),e=1;e<arguments.length;e++){var r=arguments[e];if(null!=r)for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i[s]=r[s])}return i})}},i={};function e(r){var s=i[r];if(void 0!==s)return s.exports;var n=i[r]={exports:{}};return t[r](n,n.exports,e),n.exports}!function(){"use strict";e(847);var t=function(t,i,e){this.width=t,this.height=i,this.canvas=document.createElement('canvas'),this.context=this.canvas.getContext('2d',e),this.canvas.width=t,this.canvas.height=i};function i(){this.a=[],this.n=0}t.prototype.constructor=t,t.prototype.clear=function(){this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height)},t.prototype.resize=function(t,i){this.width=this.canvas.width=t,this.height=this.canvas.height=i};var r={call:function(t){t&&(t=t.prototype||t,r.mixin(t))},mixin:function(t){const e={};function r(t,r,s,n){var h=e[t];h||(h=e[t]=new i),h.a.push(r,s||null,n||!1),h.n+=3}t.once=function(t,i,e){r(t,i,e,!0)},t.on=r,t.off=function(t,i,r){if(e[t]){var s=e[t].a;if(i)if(r)for(n=0;n<s.length;n+=3)s[n]==i&&s[n+1]==r&&(s.splice(n,3),n-=3);else for(var n=0;n<s.length;n+=3)s[n]==i&&(s.splice(n,3),n-=3);else s.length=0;0==s.length&&delete e[t]}},t.emit=function(t,i,r,s){var n=e[t];if(n){var h=n.a;n.n=0;for(var a,o,u=arguments.length,l=0;l<h.length-n.n;l+=3)a=h[l],o=h[l+1],h[l+2]&&(h.splice(l,3),l-=3),u<=1?a.call(o):2==u?a.call(o,i):3==u?a.call(o,i,r):a.call(o,i,r,s);0==h.length&&delete e[t]}}}},s=0;function n(){return++s}function h(t){return!(t&t-1||!t)}var a=Math.PI/180,o=180/Math.PI,u={distance:function(t,i,e,r){var s=t-e,n=i-r;return Math.sqrt(s*s+n*n)},clamp:function(t,i,e){return Math.max(i,Math.min(e,t))},degToRad:function(t){return t*a},radToDeg:function(t){return t*o},isPow2:h,getNextPow2:function(t){if(t>0&&0==(t&t-1))return t;for(var i=1;i<t;)i<<=1;return i}};function l(t,i,e){return this.r=1,this.g=1,this.b=1,this.a=1,this.int=16777215,void 0===i&&void 0===e?this.set(t):this.setRGB(t,i,e)}Object.assign(l.prototype,{set:function(t){return t&&'number'==typeof t.int?this.copy(t):'number'==typeof t?this.setHex(t):'string'==typeof t&&this.setStyle(t),this},refresh:function(){return this.int=(255*this.r<<16)+(255*this.g<<8)+(255*this.b|0),this},setHex:function(t){return t|=0,this.int=t,this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this},setRGB:function(t,i,e){return this.r=t,this.g=i,this.b=e,this.refresh()},setStyle:function(t){var i=t.length;if(4===i){var e=t.charAt(1),r=t.charAt(2),s=t.charAt(3);return this.setHex(+('0x'+e+e+r+r+s+s))}return 7===i?this.setHex(+t.replace('#','0x')):this},copy:function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a,this.refresh()},toStyle(){return'#'+('00000'+this.int.toString(16)).slice(-6)},multiply:function(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this.refresh()},toArray:function(t,i){return void 0===t&&(t=[]),void 0===i&&(i=0),t[i]=this.r,t[i+1]=this.g,t[i+2]=this.b,t}}),l.WHITE=new l;var c=function(t,i){this.x=t||0,this.y=i||0};c.prototype={set:function(t,i){return this.x=t||0,this.y=i||(0!==i?this.x:0),this},subVectors:function(t,i){return this.x=t.x-i.x,this.y=t.y-i.y,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this},copy:function(t){return this.x=t.x,this.y=t.y,this},multiply:function(t){return this.x*=t.x,this.y*=t.y,this}};var d=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0};d.prototype.fromArray=function(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]},d.prototype.toArray=function(t){this.array||(this.array=new Float32Array(9));var i=this.array;return t?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i},d.prototype.apply=function(t,i){i=i||new c;var e=t.x,r=t.y;return i.x=this.a*e+this.c*r+this.tx,i.y=this.b*e+this.d*r+this.ty,i},d.prototype.applyInverse=function(t,i){i=i||new c;var e=1/(this.a*this.d+this.c*-this.b),r=t.x,s=t.y;return i.x=this.d*e*r+-this.c*e*s+(this.ty*this.c-this.tx*this.d)*e,i.y=this.a*e*s+-this.b*e*r+(-this.ty*this.a+this.tx*this.b)*e,i},d.prototype.translate=function(t,i){return this.tx+=t,this.ty+=i,this},d.prototype.scale=function(t,i){return this.a*=t,this.d*=i,this.c*=t,this.b*=i,this.tx*=t,this.ty*=i,this},d.prototype.rotate=function(t){var i=Math.cos(t),e=Math.sin(t),r=this.a,s=this.c,n=this.tx;return this.a=r*i-this.b*e,this.b=r*e+this.b*i,this.c=s*i-this.d*e,this.d=s*e+this.d*i,this.tx=n*i-this.ty*e,this.ty=n*e+this.ty*i,this},d.prototype.append=function(t){var i=this.a,e=this.b,r=this.c,s=this.d;return this.a=t.a*i+t.b*r,this.b=t.a*e+t.b*s,this.c=t.c*i+t.d*r,this.d=t.c*e+t.d*s,this.tx=t.tx*i+t.ty*r+this.tx,this.ty=t.tx*e+t.ty*s+this.ty,this},d.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this};var f=new d;const p={NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},y={LINEAR:0,NEAREST:1},m={POLY:0,RECT:1,CIRC:2,ELIP:3,RREC:4};var x={VERSION:'3.0.3',CanvasBuffer:t,EventEmitter:r,Math:u,Mat3:d,Vec2:c,Color:l};Object.assign(x,p,y,m),window.Tiny=x;var g=[];function v(t,i){g.push({name:t,_class_:i})}var _,w,b,M,E,A=function(){},T=function(t){this.callbackContext=this,this.state=0,this.timeScale=1,this.width=0,this.height=0,this.systems=[],this.updatable=[],this.paused=!1,this.pauseDuration=0,this.inputView=document.body,Tiny.app||(Tiny.app=this),r.mixin(this),t=t||{},this.boot=t.boot||this.boot||A,this.preload=t.preload||this.preload||A,this.create=t.create||this.create||A,this.update=t.update||this.update||A,this.render=t.render||this.render||A,this._resize_cb=t.resize||A,this._destroy_cb=t.destroy||A;var i=this;setTimeout((function(){i._boot()}),0)};T.prototype._boot=function(){for(var t=0;t<g.length;t++){var i=g[t],e=new i._class_(this);this.systems.push(e),e.update&&this.updatable.push(e),i.name&&(this[i.name]=e)}Tiny.RAF&&(this.raf=new Tiny.RAF(this)),this.boot.call(this.callbackContext);var r=this;setTimeout((function(){r.load?r._preload():r._create()}),0)},T.prototype._preload=function(){this.preload.call(this.callbackContext),this.state=1,this.load.start(this._create)},T.prototype._create=function(){this.emit('load'),this.create.call(this.callbackContext),this.raf&&this.raf.start(),this.state=2},T.prototype.pause=function(){if(this.raf&&this.raf.reset(),!this.paused){for(var t=0;t<this.systems.length;t++)this.systems[t].pause&&this.systems[t].pause();this.paused=!0}},T.prototype.resume=function(){if(this.raf&&this.raf.reset(),this.paused){for(var t=0;t<this.systems.length;t++)this.systems[t].resume&&this.systems[t].resume();this.paused=!1}},T.prototype._update=function(t,i){if(this.paused)this.pauseDuration+=i;else{i*=this.timeScale,this.update.call(this.callbackContext,t,i),this.emit('update',i);for(var e=0;e<this.updatable.length;e++)this.updatable[e].update(i)}this.render(),this.emit('postrender')},T.prototype.resize=function(t,i){this.width=t||this.width,this.height=i||this.height,this.state>0&&(this._resize_cb.call(this.callbackContext,this.width,this.height),this.emit('resize',t,i));var e=this;setTimeout((function(){e.input&&e.input.updateBounds()}),0)},T.prototype.destroy=function(t){for(var i=0;i<this.systems.length;i++)this.systems[i].destroy&&this.systems[i].destroy(t);this.paused=!0,t&&this.load.clearCache(),this.raf&&this.raf.stop(),this._destroy_cb.call(this.callbackContext),Tiny.app===this&&(Tiny.app=null)};var R=function(){return(new Date).getTime()};void 0!==self.performance&&void 0!==self.performance.now?R=self.performance.now.bind(self.performance):void 0!==Date.now&&(R=Date.now);var S=function(t,i){void 0===i&&(i=!1),this.game=t,this.isRunning=!1,this.forceSetTimeOut=i;for(var e=['ms','moz','webkit','o'],r=0;r<e.length&&!window.requestAnimationFrame;r++)window.requestAnimationFrame=window[e[r]+'RequestAnimationFrame'],window.cancelAnimationFrame=window[e[r]+'CancelAnimationFrame']||window[e[r]+'CancelRequestAnimationFrame'];_=!1,w=null,b=null,M=0,E=0};S.prototype={start:function(){M=R(),this.isRunning=!0;var t=this;!window.requestAnimationFrame||this.forceSetTimeOut?(_=!0,w=function(){return t.updateSetTimeout()},b=window.setTimeout(w,0)):(_=!1,w=function(){return t.updateRAF()},b=window.requestAnimationFrame(w))},updateRAF:function(){E=R(),this.isRunning&&(this.game._update(Math.floor(E),E-M),b=window.requestAnimationFrame(w)),M=E},updateSetTimeout:function(){E=R(),this.isRunning&&(this.game._update(Math.floor(E),E-M),b=window.setTimeout(w,S.timeToCall)),M=E},reset:function(){M=R()},stop:function(){_?clearTimeout(b):window.cancelAnimationFrame(b),this.isRunning=!1}},S.timeToCall=15;var C={image:{},texture:{}},F=function(t){r.mixin(this),t.cache=C,this.game=t,this.list=[]};F.prototype={clearCache:function(){for(var t in C.texture)C.texture[t].destroy();for(var t in C)C[t]={}},all:function(t){this.list=this.list.concat(t)},start:function(t){var i=this,e=i.game,r=i.list,s=r.length;function n(){var t=r.shift(),i=F[t.type];i?i(t,h):h()}function h(h,a){i.emit('progress',1-r.length/s),0!=r.length?n():(i.emit('complete'),t.call(e))}0!=s?n():t.call(e)}},v('load',F);var B=function(t,i){this.resolution=1,this.width=100,this.height=100,this.scaleMode=i||0,this.valid=!1,this.source=t,this._UID=n(),this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],t&&((t.complete||t.getContext)&&t.width&&t.height?this.onLoad():t.onload=this.onLoad.bind(this),this.imageUrl=null,this._powerOf2=!1)};B.prototype.constructor=B,B.prototype.onLoad=function(t){this.valid=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty(),this.onload&&this.onload()},B.prototype.destroy=function(){this.imageUrl?(delete BaseTextureCache[this.imageUrl],delete PIXI.TextureCache[this.imageUrl],this.imageUrl=null,navigator.isCocoonJS||(this.source.src='')):this.source&&this.source._pixiId&&delete BaseTextureCache[this.source._pixiId],this.source=null,this.unloadFromGPU()},B.prototype.dirty=function(){for(var t=0;t<this._glTextures.length;t++)this._dirty[t]=!0},B.prototype.unloadFromGPU=function(){this.dirty();for(var t=this._glTextures.length-1;t>=0;t--){var i=this._glTextures[t],e=Tiny.glContexts[t];e&&i&&e.deleteTexture(i)}this._glTextures.length=0,this.dirty()};var L=function(t,i){var e=new Image;e.addEventListener('load',(function(){var r=new B(e);C.image[t.key]=r,i(t,r)})),e.src=t.src};F.image=L,F.prototype.image=function(t,i){this.list.push({src:i,key:t,type:'image'})};var z=function(t,i,e,r){this.x=t||0,this.y=i||0,this.width=e||0,this.height=r||0,this.type=m.RECT};z.prototype.contains=function(t,i){if(this.width<=0||this.height<=0)return!1;var e=this.x;if(t>=e&&t<=e+this.width){var r=this.y;if(i>=r&&i<=r+this.height)return!0}return!1},z.prototype.constructor=z;var U=new z(0,0,0,0),P=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},O=function(t,i,e,r){if(this.noFrame=!1,i||(this.noFrame=!0,i=new z(0,0,1,1)),'string'==typeof t){var s=t;if(!(t=C.image[s]))throw new Error('Cache Error: image '+s+' does`t found in cache');C.texture[s]=this,this.key=s}else t instanceof O?t=t.base:t instanceof B||(t=new B(t));this.base=t,this.frame=i,this.trim=r,this.valid=!1,this._uvs=null,this.width=0,this.height=0,this.crop=e||new z(0,0,1,1),t.valid?this.onBaseUpdate():t.onload=this.onBaseUpdate.bind(this)};O.prototype.constructor=O,O.prototype.onBaseUpdate=function(){var t=this.base;this.noFrame&&(this.frame=new z(0,0,t.width,t.height)),this.setFrame(this.frame)},O.prototype.addToCache=function(t,i){this.key=this.key||t,this.frame.name=this.frame.name||i,this.frame.name&&(t+='.'+this.frame.name),C.texture[t]=this},O.prototype.destroy=function(t){t&&this.base.destroy(),this.key&&delete C.texture[this.key],this.valid=!1},O.prototype.setFrame=function(t){this.noFrame=!1,this.frame=t,this.width=t.width,this.height=t.height,this.crop.x=t.x,this.crop.y=t.y,this.crop.width=t.width,this.crop.height=t.height,this.trim||!(t.x+t.width>this.base.width||t.y+t.height>this.base.height)?(this.valid=t&&t.width&&t.height&&this.base.valid,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()):this.valid=!1},O.prototype._updateUvs=function(){this._uvs||(this._uvs=new P);var t=this.crop,i=this.base.width,e=this.base.height;this._uvs.x0=t.x/i,this._uvs.y0=t.y/e,this._uvs.x1=(t.x+t.width)/i,this._uvs.y1=t.y/e,this._uvs.x2=(t.x+t.width)/i,this._uvs.y2=(t.y+t.height)/e,this._uvs.x3=t.x/i,this._uvs.y3=(t.y+t.height)/e};F.atlas=function(t,i){var e=t.key;L(t,(function(t,r){for(var s=0;s<t.data.length;s++){var n=e+'.'+t.data[s].name,h=new O(r,t.data[s]);h.key=e,C.texture[n]=h}i()}))},F.prototype.atlas=function(t,i,e){this.list.push({src:i,key:t,data:e,type:'atlas'})};var I;F.spritesheet=function(t,i){var e=t.key;L(t,(function(t,r){var s,n,h;if(t.data){var a=t.data;s=a.length-1;for(var o=0;o<=s;o++)n=e+'.'+o,(h=new O(r,{name:o,x:Math.floor(a[o].x),y:Math.floor(a[o].y),width:Math.floor(a[o].width),height:Math.floor(a[o].height),duration:a[o].duration})).key=e,h.lastFrame=s,C.texture[n]=h}else{var u=r.width,l=r.height,c=t.width,d=t.height;c||(c=Math.floor(u/(t.cols||1))),d||(d=Math.floor(l/(t.rows||1)));var f=Math.floor(u/c)*Math.floor(l/d);if(0===f)return i();t.total&&(f=Math.min(f,t.total));var p=0,y=0;s=f-1;for(o=0;o<f;o++)n=e+'.'+o,(h=new O(r,{name:o,x:p,y,width:c,height:d,duration:t.duration})).key=e,h.lastFrame=s,C.texture[n]=h,(p+=c)+c>u&&(p=0,y+=d)}i()}))},F.prototype.spritesheet=function(t,i,e,r,s,n){var h={src:i,key:t,type:'spritesheet'};'number'==typeof e?(h.width=e,h.height=r,h.total=s,h.duration=n):e.length>0&&(h.data=e),this.list.push(h)};var D=function(t){this.game=t;var i=this.domElement=t.inputView;this.bounds={x:0,y:0,width:0,height:0},this.candidates=[],this.list=[],this.lastMove=null,this.isDown=!1,this.downHandler=this.downHandler.bind(this),this.moveHandler=this.moveHandler.bind(this),this.upHandler=this.upHandler.bind(this),i.addEventListener('touchstart',this.downHandler),i.addEventListener('touchmove',this.moveHandler),i.addEventListener('touchend',this.upHandler),i.addEventListener('touchcancel',this.upHandler),i.addEventListener('mousedown',this.downHandler),i.addEventListener('mousemove',this.moveHandler),i.addEventListener('mouseup',this.upHandler),r.mixin(this);for(var e=0;e<D.systems.length;e++)D.systems[e].init.call(this);this.updateBounds()};D.prototype={add:function(t,i){t.inputEnabled=!0,(i=i||{}).system=this,t.input=i,r.mixin(t.input),this.list.push(t)},remove:function(t){var i=this.list.indexOf(t);if(i>-1){var e=this.list[i];return e.input=null,e.inputEnabled=!1,this.list.splice(i,1),e}},inputHandler:function(t,i){var e=this.getCoords(i);if(null!==e){if('move'!=t){this.candidates.length=0;for(var r=0;r<D.systems.length;r++)D.systems[r].preHandle.call(this,e.x,e.y);for(var s,n=0;n<this.list.length;n++)(s=this.list[n]).inputEnabled&&s.parent&&(s.input.checkBounds?s.input.checkBounds.call(this,s,e.x,e.y):D.checkBounds.call(this,s,e.x,e.y))&&this.candidates.push(s);for(r=this.candidates.length-1;r>=0;r--){if((s=this.candidates[r]).input['last_'+t]={x:e.x,y:e.y},s.input.emit(t,{x:e.x,y:e.y}),'up'==t){var h=s.input.last_down;h&&u.distance(h.x,h.y,e.x,e.y)<30&&s.input.emit('click',{x:e.x,y:e.y})}if(!s.input.transparent)break}}this.emit(t,{x:e.x,y:e.y})}},moveHandler:function(t){this.lastMove=t,this.inputHandler('move',t)},upHandler:function(t){this.isDown=!1,this.inputHandler('up',this.lastMove)},downHandler:function(t){this.isDown=!0,this.lastMove=t,this.inputHandler('down',t)},clickHandler:function(t){this.inputHandler('click',t)},getCoords:function(t){var i=null;return'undefined'!=typeof TouchEvent&&t instanceof TouchEvent?(I=!0,t.touches.length>0?i={x:t.touches[0].clientX,y:t.touches[0].clientY}:t.clientX&&t.clientY&&(i={x:t.clientX,y:t.clientY})):i={x:t.clientX,y:t.clientY},I&&t instanceof MouseEvent||null===i?null:i={x:i.x-this.bounds.x,y:i.y-this.bounds.y}},updateBounds:function(){var t=this.bounds,i=this.domElement.getBoundingClientRect();t.x=i.left,t.y=i.top,t.width=i.width,t.height=i.height},destroy:function(){var t=this.domElement;t.removeEventListener('touchstart',this.downHandler),t.removeEventListener('touchmove',this.moveHandler),t.removeEventListener('touchend',this.upHandler),t.removeEventListener('touchcancel',this.upHandler),t.removeEventListener('mousedown',this.downHandler),t.removeEventListener('mousemove',this.moveHandler),t.removeEventListener('mouseup',this.upHandler)}},D.checkBounds=function(t,i,e){if(t.worldVisible&&t.getBounds().contains(i,e))return!0},D.systems=[],v('input',D);var N=function(){},k=function(t,i,e,r,s,n,h,a,o){this.game=e,this.cb=r||N,this.ctx=s||this,this.delay=null==n?1e3:n,this.loop=h,this.count=a||0,this.repeat=this.count>0,this.running=!!t,this._lastFrame=0,this.autoRemove=i,this.onComplete=o||N};k.prototype={start:function(){this.running=!0},pause:function(){this.running=!1},stop:function(){this.running=!1,this._lastFrame=0},update:function(t){this.running&&(this._lastFrame+=t,this._lastFrame>=this.delay&&(this.cb.call(this.ctx),this._lastFrame=0,this.repeat?(this.count--,0===this.count&&(this.running=!1,this.autoRemove&&this.game.timer.remove(this),this.onComplete())):this.loop||(this.running=!1,this.autoRemove&&this.game.timer.remove(this))))}};var j=function(t){this.game=t,this.list=[],this.autoStart=!0,this.autoRemove=!0};j.prototype={update:function(t){for(var i=0;i<this.list.length;i++)this.list[i].update(t)},removeAll:function(){for(var t=0;t<this.list.length;t++)this.list[t].stop();this.list=[]},remove:function(t){var i=this.list.indexOf(t);i>-1&&(t.stop(),this.list.splice(i,1))},add:function(t,i,e,r,s){r=null!=r?r:this.autoStart,s=null!=s?s:this.autoRemove;var n=new k(r,s,this.game,i,e,t);return this.list.push(n),n},loop:function(t,i,e,r,s){r=null!=r?r:this.autoStart,s=null!=s?s:this.autoRemove;var n=new k(r,s,this.game,i,e,t,!0);return this.list.push(n),n},repeat:function(t,i,e,r,s,n,h){s=null!=s?s:this.autoStart,n=null!=n?n:this.autoRemove;var a=new k(s,n,this.game,e,r,t,!1,i,h);return this.list.push(a),a},destroy:function(){this.removeAll()}},v('timer',j);var V=function(){this._tweens={},this._tweensAddedDuringUpdate={}};V.prototype={getAll:function(){return Object.keys(this._tweens).map(function(t){return this._tweens[t]}.bind(this))},removeAll:function(){this._tweens={}},add:function(t){var i=t.getId();this._tweens[i]=t,this._tweensAddedDuringUpdate[i]=t},remove:function(t){var i=t.getId();delete this._tweens[i],delete this._tweensAddedDuringUpdate[i]},update:function(t,i){var e=Object.keys(this._tweens);if(0===e.length)return!1;for(;e.length>0;){this._tweensAddedDuringUpdate={};for(var r=0;r<e.length;r++){var s=this._tweens[e[r]];s&&!1===s.update(t)&&(s._isPlaying=!1,i||delete this._tweens[e[r]])}e=Object.keys(this._tweensAddedDuringUpdate)}return!0}};var G=new V;G.Group=V,G._nextId=0,G.nextId=function(){return G._nextId++};var Y=function(t,i){this._isPaused=!1,this._object=t,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._repeatDelayTime=void 0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._time=0,this._easingFunction=W.Linear.None,this._interpolationFunction=H.Linear,this._chainedTweens=[],this._onStartCallback=null,this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onRepeatCallback=null,this._onCompleteCallback=null,this._onStopCallback=null,this._group=i||G,this._id=G.nextId()};Y.prototype={getId:function(){return this._id},isPlaying:function(){return this._isPlaying},isPaused:function(){return this._isPaused},to:function(t,i){return this._valuesEnd=Object.create(t),void 0!==i&&(this._duration=i),this},duration:function(t){return this._duration=t,this},start:function(t){for(var i in this._group.add(this),this._isPlaying=!0,this._isPaused=!1,this._time=0,this._onStartCallbackFired=!1,this._startTime=this._delayTime,this._valuesEnd){if(this._valuesEnd[i]instanceof Array){if(0===this._valuesEnd[i].length)continue;this._valuesEnd[i]=[this._object[i]].concat(this._valuesEnd[i])}void 0!==this._object[i]&&(1!=t&&void 0!==this._valuesStart[i]||(this._valuesStart[i]=this._object[i]),this._valuesStart[i]instanceof Array==!1&&(this._valuesStart[i]*=1),this._valuesStartRepeat[i]=this._valuesStart[i]||0)}return this},stop:function(){return this._isPlaying?(this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,null!==this._onStopCallback&&this._onStopCallback(this._object),this.stopChainedTweens(),this):this},end:function(){return this.update(1/0),this},pause:function(){return this._isPaused||!this._isPlaying||(this._isPaused=!0,this._group.remove(this)),this},resume:function(){return this._isPaused&&this._isPlaying?(this._isPaused=!1,this._group.add(this),this):this},stopChainedTweens:function(){for(var t=0,i=this._chainedTweens.length;t<i;t++)this._chainedTweens[t].stop()},group:function(t){return this._group=t,this},delay:function(t){return this._delayTime=t,this},repeat:function(t){return this._repeat=t,this},repeatDelay:function(t){return this._repeatDelayTime=t,this},yoyo:function(t){return this._yoyo=t,this},easing:function(t){return this._easingFunction=t,this},interpolation:function(t){return this._interpolationFunction=t,this},chain:function(){return this._chainedTweens=arguments,this},onStart:function(t){return this._onStartCallback=t,this},onUpdate:function(t){return this._onUpdateCallback=t,this},onRepeat:function(t){return this._onRepeatCallback=t,this},onComplete:function(t){return this._onCompleteCallback=t,this},onStop:function(t){return this._onStopCallback=t,this},update:function(t){var i,e,r;if(this._time+=t,this._time<this._startTime)return!0;for(i in!1===this._onStartCallbackFired&&(null!==this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),e=(this._time-this._startTime)/this._duration,e=0===this._duration||e>1?1:e,r=this._easingFunction(e),this._valuesEnd)if(void 0!==this._valuesStart[i]){var s=this._valuesStart[i]||0,n=this._valuesEnd[i];n instanceof Array?this._object[i]=this._interpolationFunction(n,r):('string'==typeof n&&(n='+'===n.charAt(0)||'-'===n.charAt(0)?s+parseFloat(n):parseFloat(n)),'number'==typeof n&&(this._object[i]=s+(n-s)*r))}if(null!==this._onUpdateCallback&&this._onUpdateCallback(this._object,e),1===e){if(this._time=0,this._repeat>0){for(i in isFinite(this._repeat)&&this._repeat--,this._valuesStartRepeat){if('string'==typeof this._valuesEnd[i]&&(this._valuesStartRepeat[i]=this._valuesStartRepeat[i]+parseFloat(this._valuesEnd[i])),this._yoyo){var h=this._valuesStartRepeat[i];this._valuesStartRepeat[i]=this._valuesEnd[i],this._valuesEnd[i]=h}this._valuesStart[i]=this._valuesStartRepeat[i]}return this._yoyo&&(this._reversed=!this._reversed),void 0!==this._repeatDelayTime?this._startTime=this._repeatDelayTime:this._startTime=this._delayTime,null!==this._onRepeatCallback&&this._onRepeatCallback(this._object),!0}null!==this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var a=0,o=this._chainedTweens.length;a<o;a++)this._chainedTweens[a].start();return!1}return!0}};var X,W={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){return 0===t?0:1===t?1:-Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)},Out:function(t){return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin(5*(t-.1)*Math.PI)+1},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?-.5*Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)+1}},Back:{In:function(t){var i=1.70158;return t*t*((i+1)*t-i)},Out:function(t){var i=1.70158;return--t*t*((i+1)*t+i)+1},InOut:function(t){var i=2.5949095;return(t*=2)<1?t*t*((i+1)*t-i)*.5:.5*((t-=2)*t*((i+1)*t+i)+2)}},Bounce:{In:function(t){return 1-W.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*W.Bounce.In(2*t):.5*W.Bounce.Out(2*t-1)+.5}}},H={Linear:function(t,i){var e=t.length-1,r=e*i,s=Math.floor(r),n=H.Utils.Linear;return i<0?n(t[0],t[1],r):i>1?n(t[e],t[e-1],e-r):n(t[s],t[s+1>e?e:s+1],r-s)},Bezier:function(t,i){for(var e=0,r=t.length-1,s=Math.pow,n=H.Utils.Bernstein,h=0;h<=r;h++)e+=s(1-i,r-h)*s(i,h)*t[h]*n(r,h);return e},CatmullRom:function(t,i){var e=t.length-1,r=e*i,s=Math.floor(r),n=H.Utils.CatmullRom;return t[0]===t[e]?(i<0&&(s=Math.floor(r=e*(1+i))),n(t[(s-1+e)%e],t[s],t[(s+1)%e],t[(s+2)%e],r-s)):i<0?t[0]-(n(t[0],t[0],t[1],t[1],-r)-t[0]):i>1?t[e]-(n(t[e],t[e],t[e-1],t[e-1],r-e)-t[e]):n(t[s?s-1:0],t[s],t[e<s+1?e:s+1],t[e<s+2?e:s+2],r-s)},Utils:{Linear:function(t,i,e){return(i-t)*e+t},Bernstein:function(t,i){var e=H.Utils.Factorial;return e(t)/e(i)/e(t-i)},Factorial:(X=[1],function(t){var i=1;if(X[t])return X[t];for(var e=t;e>1;e--)i*=e;return X[t]=i,i}),CatmullRom:function(t,i,e,r,s){var n=.5*(e-t),h=.5*(r-i),a=s*s;return(2*i-2*e+n+h)*(s*a)+(-3*i+3*e-2*n-h)*a+n*s+i}}},q=function(t){this.game=t,this.bufferList=[],this.group=new V};q.prototype={remove:function(t){this.group.remove(t)},add:function(t){return new Y(t,this.group)},pause:function(){for(var t in this.bufferList.length=0,this.group._tweens)this.bufferList.push(this.group._tweens[t]),this.group._tweens[t].pause()},resume(){for(var t=0;t<this.bufferList.length;t++)this.bufferList[t].resume();this.bufferList.length=0},update:function(t){this.group.update(t)},destroy:function(){this.bufferList.length=0,this.group.removeAll(),this.group=null}},v('tweens',q),Tiny.App=T,Tiny.RAF=S,Tiny.registerSystem=v,Tiny.systems=g,Tiny.TweenManager=q,Tiny.Cache=C,Tiny.Loader=F,Tiny.Easing=W,Tiny.Interpolation=H,Tiny.Input=D,Tiny.Timer=k;var Z=function(){this.stencilStack=[],this.reverse=!0,this.count=0};Z.prototype.setContext=function(t){this.gl=t},Z.prototype.pushStencil=function(t,i,e){var r=this.gl;this.bindGraphics(t,i,e),0===this.stencilStack.length&&(r.enable(r.STENCIL_TEST),r.clear(r.STENCIL_BUFFER_BIT),this.reverse=!0,this.count=0),this.stencilStack.push(i);var s=this.count;r.colorMask(!1,!1,!1,!1),r.stencilFunc(r.ALWAYS,0,255),r.stencilOp(r.KEEP,r.KEEP,r.INVERT),1===i.mode?(r.drawElements(r.TRIANGLE_FAN,i.indices.length-4,r.UNSIGNED_SHORT,0),this.reverse?(r.stencilFunc(r.EQUAL,255-s,255),r.stencilOp(r.KEEP,r.KEEP,r.DECR)):(r.stencilFunc(r.EQUAL,s,255),r.stencilOp(r.KEEP,r.KEEP,r.INCR)),r.drawElements(r.TRIANGLE_FAN,4,r.UNSIGNED_SHORT,2*(i.indices.length-4)),this.reverse?r.stencilFunc(r.EQUAL,255-(s+1),255):r.stencilFunc(r.EQUAL,s+1,255),this.reverse=!this.reverse):(this.reverse?(r.stencilFunc(r.EQUAL,s,255),r.stencilOp(r.KEEP,r.KEEP,r.INCR)):(r.stencilFunc(r.EQUAL,255-s,255),r.stencilOp(r.KEEP,r.KEEP,r.DECR)),r.drawElements(r.TRIANGLE_STRIP,i.indices.length,r.UNSIGNED_SHORT,0),this.reverse?r.stencilFunc(r.EQUAL,s+1,255):r.stencilFunc(r.EQUAL,255-(s+1),255)),r.colorMask(!0,!0,!0,!0),r.stencilOp(r.KEEP,r.KEEP,r.KEEP),this.count++},Z.prototype.bindGraphics=function(t,i,e){this._currentGraphics=t;var r,s=this.gl,n=e.projection,h=e.offset;1===i.mode?(r=e.shaderManager.complexPrimitiveShader,e.shaderManager.setShader(r),s.uniform1f(r.flipY,e.flipY),s.uniformMatrix3fv(r.translationMatrix,!1,t.worldTransform.toArray(!0)),s.uniform2f(r.projectionVector,n.x,-n.y),s.uniform2f(r.offsetVector,-h.x,-h.y),s.uniform3fv(r.tintColor,t.tint.toArray()),s.uniform3fv(r.color,i.color),s.uniform1f(r.alpha,t.worldAlpha*i.alpha),s.bindBuffer(s.ARRAY_BUFFER,i.buffer),s.vertexAttribPointer(r.aVertexPosition,2,s.FLOAT,!1,8,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,i.indexBuffer)):(r=e.shaderManager.primitiveShader,e.shaderManager.setShader(r),s.uniformMatrix3fv(r.translationMatrix,!1,t.worldTransform.toArray(!0)),s.uniform1f(r.flipY,e.flipY),s.uniform2f(r.projectionVector,n.x,-n.y),s.uniform2f(r.offsetVector,-h.x,-h.y),s.uniform3fv(r.tintColor,t.tint.toArray()),s.uniform1f(r.alpha,t.worldAlpha),s.bindBuffer(s.ARRAY_BUFFER,i.buffer),s.vertexAttribPointer(r.aVertexPosition,2,s.FLOAT,!1,24,0),s.vertexAttribPointer(r.colorAttribute,4,s.FLOAT,!1,24,8),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,i.indexBuffer))},Z.prototype.popStencil=function(t,i,e){var r=this.gl;if(this.stencilStack.pop(),this.count--,0===this.stencilStack.length)r.disable(r.STENCIL_TEST);else{var s=this.count;this.bindGraphics(t,i,e),r.colorMask(!1,!1,!1,!1),1===i.mode?(this.reverse=!this.reverse,this.reverse?(r.stencilFunc(r.EQUAL,255-(s+1),255),r.stencilOp(r.KEEP,r.KEEP,r.INCR)):(r.stencilFunc(r.EQUAL,s+1,255),r.stencilOp(r.KEEP,r.KEEP,r.DECR)),r.drawElements(r.TRIANGLE_FAN,4,r.UNSIGNED_SHORT,2*(i.indices.length-4)),r.stencilFunc(r.ALWAYS,0,255),r.stencilOp(r.KEEP,r.KEEP,r.INVERT),r.drawElements(r.TRIANGLE_FAN,i.indices.length-4,r.UNSIGNED_SHORT,0),this.reverse?r.stencilFunc(r.EQUAL,s,255):r.stencilFunc(r.EQUAL,255-s,255)):(this.reverse?(r.stencilFunc(r.EQUAL,s+1,255),r.stencilOp(r.KEEP,r.KEEP,r.DECR)):(r.stencilFunc(r.EQUAL,255-(s+1),255),r.stencilOp(r.KEEP,r.KEEP,r.INCR)),r.drawElements(r.TRIANGLE_STRIP,i.indices.length,r.UNSIGNED_SHORT,0),this.reverse?r.stencilFunc(r.EQUAL,s,255):r.stencilFunc(r.EQUAL,255-s,255)),r.colorMask(!0,!0,!0,!0),r.stencilOp(r.KEEP,r.KEEP,r.KEEP)}},Z.prototype.destroy=function(){this.stencilStack=null,this.gl=null};var K=function(t,i){this.passes=[this],this.shaders=[],this.dirty=!0,this.padding=0,this.uniforms=i||{},this.fragmentSrc=t||[]};K.prototype.constructor=K,K.prototype.syncUniforms=function(){for(var t=0,i=this.shaders.length;t<i;t++)this.shaders[t].dirty=!0};var Q=function(t,i,e){var r=i.join('\n'),s=t.createShader(e);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(window.console.log(t.getShaderInfoLog(s)),null)},$=function(t,i,e){var r=function(t,i){return Q(t,i,t.FRAGMENT_SHADER)}(t,e),s=function(t,i){return Q(t,i,t.VERTEX_SHADER)}(t,i),n=t.createProgram();return t.attachShader(n,s),t.attachShader(n,r),t.linkProgram(n),t.getProgramParameter(n,t.LINK_STATUS)||window.console.log('Could not initialise shaders'),n},J=function(t){this._UID=n(),this.gl=t,this.program=null,this.fragmentSrc=['precision lowp float;','varying vec2 vTextureCoord;','varying vec4 vColor;','uniform sampler2D uSampler;','void main(void) {',' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;','}'],this.textureCount=0,this.firstRun=!0,this.dirty=!0,this.attributes=[],this.init()};J.prototype.constructor=J,J.prototype.init=function(){var t=this.gl,i=$(t,this.vertexSrc||J.defaultVertexSrc,this.fragmentSrc);for(var e in t.useProgram(i),this.uSampler=t.getUniformLocation(i,'uSampler'),this.projectionVector=t.getUniformLocation(i,'projectionVector'),this.offsetVector=t.getUniformLocation(i,'offsetVector'),this.dimensions=t.getUniformLocation(i,'dimensions'),this.aVertexPosition=t.getAttribLocation(i,'aVertexPosition'),this.aTextureCoord=t.getAttribLocation(i,'aTextureCoord'),this.colorAttribute=t.getAttribLocation(i,'aColor'),-1===this.colorAttribute&&(this.colorAttribute=2),this.attributes=[this.aVertexPosition,this.aTextureCoord,this.colorAttribute],this.uniforms)this.uniforms[e].uniformLocation=t.getUniformLocation(i,e);this.initUniforms(),this.program=i},J.prototype.initUniforms=function(){this.textureCount=1;var t,i=this.gl;for(var e in this.uniforms){var r=(t=this.uniforms[e]).type;'sampler2D'===r?(t._init=!1,null!==t.value&&this.initSampler2D(t)):'mat2'===r||'mat3'===r||'mat4'===r?(t.glMatrix=!0,t.glValueLength=1,'mat2'===r?t.glFunc=i.uniformMatrix2fv:'mat3'===r?t.glFunc=i.uniformMatrix3fv:'mat4'===r&&(t.glFunc=i.uniformMatrix4fv)):(t.glFunc=i['uniform'+r],t.glValueLength='2f'===r||'2i'===r?2:'3f'===r||'3i'===r?3:'4f'===r||'4i'===r?4:1)}},J.prototype.initSampler2D=function(t){if(t.value&&t.value.base&&t.value.base.valid){var i=this.gl;if(i.activeTexture(i['TEXTURE'+this.textureCount]),i.bindTexture(i.TEXTURE_2D,t.value.base._glTextures[i.id]),t.textureData){var e=t.textureData,r=e.magFilter?e.magFilter:i.LINEAR,s=e.minFilter?e.minFilter:i.LINEAR,n=e.wrapS?e.wrapS:i.CLAMP_TO_EDGE,h=e.wrapT?e.wrapT:i.CLAMP_TO_EDGE,a=e.luminance?i.LUMINANCE:i.RGBA;if(e.repeat&&(n=i.REPEAT,h=i.REPEAT),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!!e.flipY),e.width){var o=e.width?e.width:512,u=e.height?e.height:2,l=e.border?e.border:0;i.texImage2D(i.TEXTURE_2D,0,a,o,u,l,a,i.UNSIGNED_BYTE,null)}else i.texImage2D(i.TEXTURE_2D,0,a,i.RGBA,i.UNSIGNED_BYTE,t.value.base.source);i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,r),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,s),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,n),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,h)}i.uniform1i(t.uniformLocation,this.textureCount),t._init=!0,this.textureCount++}},J.prototype.syncUniforms=function(){var t;this.textureCount=1;var i=this.gl;for(var e in this.uniforms)1===(t=this.uniforms[e]).glValueLength?!0===t.glMatrix?t.glFunc.call(i,t.uniformLocation,t.transpose,t.value):t.glFunc.call(i,t.uniformLocation,t.value):2===t.glValueLength?t.glFunc.call(i,t.uniformLocation,t.value.x,t.value.y):3===t.glValueLength?t.glFunc.call(i,t.uniformLocation,t.value.x,t.value.y,t.value.z):4===t.glValueLength?t.glFunc.call(i,t.uniformLocation,t.value.x,t.value.y,t.value.z,t.value.w):'sampler2D'===t.type&&(t._init?(i.activeTexture(i['TEXTURE'+this.textureCount]),t.value.base._dirty[i.id]?Tiny.instances[i.id].updateTexture(t.value.base):i.bindTexture(i.TEXTURE_2D,t.value.base._glTextures[i.id]),i.uniform1i(t.uniformLocation,this.textureCount),this.textureCount++):this.initSampler2D(t))},J.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null},J.defaultVertexSrc=['attribute vec2 aVertexPosition;','attribute vec2 aTextureCoord;','attribute vec4 aColor;','uniform vec2 projectionVector;','uniform vec2 offsetVector;','varying vec2 vTextureCoord;','varying vec4 vColor;','const vec2 center = vec2(-1.0, 1.0);','void main(void) {',' gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);',' vTextureCoord = aTextureCoord;',' vColor = vec4(aColor.rgb * aColor.a, aColor.a);','}'];var tt=function(t){this.renderer=t,this.vertSize=5,this.size=2e3;var i=4*this.size*4*this.vertSize,e=6*this.size;this.vertices=new ArrayBuffer(i),this.positions=new Float32Array(this.vertices),this.colors=new Uint32Array(this.vertices),this.indices=new Uint16Array(e),this.lastIndexCount=0;for(var r=0,s=0;r<e;r+=6,s+=4)this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new K(['precision lowp float;','varying vec2 vTextureCoord;','varying vec4 vColor;','uniform sampler2D uSampler;','void main(void) {',' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;','}'])};tt.prototype.setContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices,t.DYNAMIC_DRAW),this.currentBlendMode=99999;var i=new J(t);i.fragmentSrc=this.defaultShader.fragmentSrc,i.uniforms={},i.init(),this.defaultShader.shaders[t.id]=i},tt.prototype.begin=function(t){this.shader=t.shaderManager.defaultShader,this.start()},tt.prototype.render=function(t){var i=t.texture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=i.base);var e=i._uvs;if(e){var r,s,n,h,a=t.anchor.x,o=t.anchor.y;if(i.trim){var u=i.trim;r=(s=u.x-a*u.width)+i.crop.width,n=(h=u.y-o*u.height)+i.crop.height}else r=i.frame.width*(1-a),s=i.frame.width*-a,n=i.frame.height*(1-o),h=i.frame.height*-o;var l=4*this.currentBatchSize*this.vertSize,c=i.base.resolution,d=t.worldTransform,f=d.a/c,p=d.b/c,y=d.c/c,m=d.d/c,x=d.tx,g=d.ty,v=this.colors,_=this.positions;this.renderer.roundPixels?(_[l]=f*s+y*h+x|0,_[l+1]=m*h+p*s+g|0,_[l+5]=f*r+y*h+x|0,_[l+6]=m*h+p*r+g|0,_[l+10]=f*r+y*n+x|0,_[l+11]=m*n+p*r+g|0,_[l+15]=f*s+y*n+x|0,_[l+16]=m*n+p*s+g|0):(_[l]=f*s+y*h+x,_[l+1]=m*h+p*s+g,_[l+5]=f*r+y*h+x,_[l+6]=m*h+p*r+g,_[l+10]=f*r+y*n+x,_[l+11]=m*n+p*r+g,_[l+15]=f*s+y*n+x,_[l+16]=m*n+p*s+g),_[l+2]=e.x0,_[l+3]=e.y0,_[l+7]=e.x1,_[l+8]=e.y1,_[l+12]=e.x2,_[l+13]=e.y2,_[l+17]=e.x3,_[l+18]=e.y3;var w=t.tint.int;v[l+4]=v[l+9]=v[l+14]=v[l+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*t.worldAlpha<<24),this.sprites[this.currentBatchSize++]=t}},tt.prototype.flush=function(){if(0!==this.currentBatchSize){var t,i,e,r,s=this.gl;if(this.dirty){this.dirty=!1,s.activeTexture(s.TEXTURE0),s.bindBuffer(s.ARRAY_BUFFER,this.vertexBuffer),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t=this.defaultShader.shaders[s.id];var n=4*this.vertSize;s.vertexAttribPointer(t.aVertexPosition,2,s.FLOAT,!1,n,0),s.vertexAttribPointer(t.aTextureCoord,2,s.FLOAT,!1,n,8),s.vertexAttribPointer(t.colorAttribute,4,s.UNSIGNED_BYTE,!0,n,16)}if(this.currentBatchSize>.5*this.size)s.bufferSubData(s.ARRAY_BUFFER,0,this.vertices);else{var h=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);s.bufferSubData(s.ARRAY_BUFFER,0,h)}for(var a,o=0,u=0,l=null,c=this.renderer.blendModeManager.currentBlendMode,d=null,f=!1,p=!1,y=0,m=this.currentBatchSize;y<m;y++){if(i=(a=this.sprites[y]).texture.base,f=c!==(e=a.blendMode),p=d!==(r=a.shader||this.defaultShader),(l!==i||f||p)&&(this.renderBatch(l,o,u),u=y,o=0,l=i,f&&(c=e,this.renderer.blendModeManager.setBlendMode(c)),p)){(t=(d=r).shaders[s.id])||((t=new J(s)).fragmentSrc=d.fragmentSrc,t.uniforms=d.uniforms,t.init(),d.shaders[s.id]=t),this.renderer.shaderManager.setShader(t),t.dirty&&t.syncUniforms();var x=this.renderer.projection;s.uniform2f(t.projectionVector,x.x,x.y);var g=this.renderer.offset;s.uniform2f(t.offsetVector,g.x,g.y)}o++}this.renderBatch(l,o,u),this.currentBatchSize=0}},tt.prototype.renderBatch=function(t,i,e){if(0!==i){var r=this.gl;t._dirty[r.id]?this.renderer.updateTexture(t):r.bindTexture(r.TEXTURE_2D,t._glTextures[r.id]),r.drawElements(r.TRIANGLES,6*i,r.UNSIGNED_SHORT,6*e*2),this.renderer.drawCount++}},tt.prototype.stop=function(){this.flush(),this.dirty=!0},tt.prototype.start=function(){this.dirty=!0},tt.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null};var it=function(t){this._UID=n(),this.gl=t,this.program=null,this.fragmentSrc=['precision mediump float;','varying vec4 vColor;','void main(void) {',' gl_FragColor = vColor;','}'],this.vertexSrc=['attribute vec2 aVertexPosition;','attribute vec4 aColor;','uniform mat3 translationMatrix;','uniform vec2 projectionVector;','uniform vec2 offsetVector;','uniform float alpha;','uniform float flipY;','uniform vec3 tint;','varying vec4 vColor;','void main(void) {',' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);',' v -= offsetVector.xyx;',' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);',' vColor = aColor * vec4(tint * alpha, alpha);','}'],this.init()};it.prototype.constructor=it,it.prototype.init=function(){var t=this.gl,i=$(t,this.vertexSrc,this.fragmentSrc);t.useProgram(i),this.projectionVector=t.getUniformLocation(i,'projectionVector'),this.offsetVector=t.getUniformLocation(i,'offsetVector'),this.tintColor=t.getUniformLocation(i,'tint'),this.flipY=t.getUniformLocation(i,'flipY'),this.aVertexPosition=t.getAttribLocation(i,'aVertexPosition'),this.colorAttribute=t.getAttribLocation(i,'aColor'),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=t.getUniformLocation(i,'translationMatrix'),this.alpha=t.getUniformLocation(i,'alpha'),this.program=i},it.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attributes=null};var et=function(t){this._UID=n(),this.gl=t,this.program=null,this.fragmentSrc=['precision mediump float;','varying vec4 vColor;','void main(void) {',' gl_FragColor = vColor;','}'],this.vertexSrc=['attribute vec2 aVertexPosition;','uniform mat3 translationMatrix;','uniform vec2 projectionVector;','uniform vec2 offsetVector;','uniform vec3 tint;','uniform float alpha;','uniform vec3 color;','uniform float flipY;','varying vec4 vColor;','void main(void) {',' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);',' v -= offsetVector.xyx;',' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);',' vColor = vec4(color * alpha * tint, alpha);','}'],this.init()};et.prototype.constructor=et,et.prototype.init=function(){var t=this.gl,i=$(t,this.vertexSrc,this.fragmentSrc);t.useProgram(i),this.projectionVector=t.getUniformLocation(i,'projectionVector'),this.offsetVector=t.getUniformLocation(i,'offsetVector'),this.tintColor=t.getUniformLocation(i,'tint'),this.color=t.getUniformLocation(i,'color'),this.flipY=t.getUniformLocation(i,'flipY'),this.aVertexPosition=t.getAttribLocation(i,'aVertexPosition'),this.attributes=[this.aVertexPosition,this.colorAttribute],this.translationMatrix=t.getUniformLocation(i,'translationMatrix'),this.alpha=t.getUniformLocation(i,'alpha'),this.program=i},et.prototype.destroy=function(){this.gl.deleteProgram(this.program),this.uniforms=null,this.gl=null,this.attribute=null};var rt=function(){this.maxAttibs=10,this.attribState=[],this.tempAttribState=[];for(var t=0;t<this.maxAttibs;t++)this.attribState[t]=!1;this.stack=[]};rt.prototype.constructor=rt,rt.prototype.setContext=function(t){this.gl=t,this.primitiveShader=new it(t),this.complexPrimitiveShader=new et(t),this.defaultShader=new J(t),this.setShader(this.defaultShader)},rt.prototype.setAttribs=function(t){var i;for(i=0;i<this.tempAttribState.length;i++)this.tempAttribState[i]=!1;for(i=0;i<t.length;i++){var e=t[i];this.tempAttribState[e]=!0}var r=this.gl;for(i=0;i<this.attribState.length;i++)this.attribState[i]!==this.tempAttribState[i]&&(this.attribState[i]=this.tempAttribState[i],this.tempAttribState[i]?r.enableVertexAttribArray(i):r.disableVertexAttribArray(i))},rt.prototype.setShader=function(t){return this._currentId!==t._UID&&(this._currentId=t._UID,this.currentShader=t,this.gl.useProgram(t.program),this.setAttribs(t.attributes),!0)},rt.prototype.destroy=function(){this.attribState=null,this.tempAttribState=null,this.primitiveShader.destroy(),this.complexPrimitiveShader.destroy(),this.defaultShader.destroy(),this.gl=null};var st=function(){};st.prototype.constructor=st,st.prototype.setContext=function(t){this.gl=t},st.prototype.pushMask=function(t,i){var e=i.gl;t.dirty&&Tiny.WebGLGraphics.updateGraphics(t,e),t._webGL[e.id].data.length&&i.stencilManager.pushStencil(t,t._webGL[e.id].data[0],i)},st.prototype.popMask=function(t,i){var e=this.gl;i.stencilManager.popStencil(t,t._webGL[e.id].data[0],i)},st.prototype.destroy=function(){this.gl=null};var nt=function(t){this.renderer=t,this.filterStack=[],this.offsetX=0,this.offsetY=0};nt.prototype.constructor=nt,nt.prototype.setContext=function(t){this.gl=t,this.texturePool=[],this.initShaderBuffers()},nt.prototype.begin=function(t,i){this.defaultShader=t.shaderManager.defaultShader;var e=t.projection;this.width=2*e.x,this.height=2*-e.y,this.buffer=i},nt.prototype.pushFilter=function(t){var i=this.gl,e=this.renderer.projection,r=this.renderer.offset;t._filterArea=t.target.filterArea||t.target.getBounds(),this.filterStack.push(t);var s=t.filterPasses[0];this.offsetX+=t._filterArea.x,this.offsetY+=t._filterArea.y;var n=this.texturePool.pop();n?n.resize(this.width,this.height):n=new PIXI.FilterTexture(this.gl,this.width,this.height),i.bindTexture(i.TEXTURE_2D,n.texture);var h=t._filterArea,a=s.padding;h.x-=a,h.y-=a,h.width+=2*a,h.height+=2*a,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),i.bindFramebuffer(i.FRAMEBUFFER,n.frameBuffer),i.viewport(0,0,h.width,h.height),e.x=h.width/2,e.y=-h.height/2,r.x=-h.x,r.y=-h.y,i.colorMask(!0,!0,!0,!0),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),t._glFilterTexture=n},nt.prototype.popFilter=function(){var t=this.gl,i=this.filterStack.pop(),e=i._filterArea,r=i._glFilterTexture,s=this.renderer.projection,n=this.renderer.offset;if(i.filterPasses.length>1){t.viewport(0,0,e.width,e.height),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=e.height,this.vertexArray[2]=e.width,this.vertexArray[3]=e.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=e.width,this.vertexArray[7]=0,t.bufferSubData(t.ARRAY_BUFFER,0,this.vertexArray),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=e.width/this.width,this.uvArray[5]=e.height/this.height,this.uvArray[6]=e.width/this.width,this.uvArray[7]=e.height/this.height,t.bufferSubData(t.ARRAY_BUFFER,0,this.uvArray);var h=r,a=this.texturePool.pop();a||(a=new PIXI.FilterTexture(this.gl,this.width,this.height)),a.resize(this.width,this.height),t.bindFramebuffer(t.FRAMEBUFFER,a.frameBuffer),t.clear(t.COLOR_BUFFER_BIT),t.disable(t.BLEND);for(var o=0;o<i.filterPasses.length-1;o++){var u=i.filterPasses[o];t.bindFramebuffer(t.FRAMEBUFFER,a.frameBuffer),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,h.texture),this.applyFilterPass(u,e,e.width,e.height);var l=h;h=a,a=l}t.enable(t.BLEND),r=h,this.texturePool.push(a)}var c=i.filterPasses[i.filterPasses.length-1];this.offsetX-=e.x,this.offsetY-=e.y;var d=this.width,f=this.height,p=0,y=0,m=this.buffer;if(0===this.filterStack.length)t.colorMask(!0,!0,!0,!0);else{var x=this.filterStack[this.filterStack.length-1];d=(e=x._filterArea).width,f=e.height,p=e.x,y=e.y,m=x._glFilterTexture.frameBuffer}s.x=d/2,s.y=-f/2,n.x=p,n.y=y;var g=(e=i._filterArea).x-p,v=e.y-y;t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=g,this.vertexArray[1]=v+e.height,this.vertexArray[2]=g+e.width,this.vertexArray[3]=v+e.height,this.vertexArray[4]=g,this.vertexArray[5]=v,this.vertexArray[6]=g+e.width,this.vertexArray[7]=v,t.bufferSubData(t.ARRAY_BUFFER,0,this.vertexArray),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=e.width/this.width,this.uvArray[5]=e.height/this.height,this.uvArray[6]=e.width/this.width,this.uvArray[7]=e.height/this.height,t.bufferSubData(t.ARRAY_BUFFER,0,this.uvArray),t.viewport(0,0,d*this.renderer.resolution,f*this.renderer.resolution),t.bindFramebuffer(t.FRAMEBUFFER,m),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,r.texture),this.applyFilterPass(c,e,d,f),this.texturePool.push(r),i._glFilterTexture=null},nt.prototype.applyFilterPass=function(t,i,e,r){var s=this.gl,n=t.shaders[s.id];n||((n=new PIXI.PixiShader(s)).fragmentSrc=t.fragmentSrc,n.uniforms=t.uniforms,n.init(),t.shaders[s.id]=n),this.renderer.shaderManager.setShader(n),s.uniform2f(n.projectionVector,e/2,-r/2),s.uniform2f(n.offsetVector,0,0),t.uniforms.dimensions&&(t.uniforms.dimensions.value[0]=this.width,t.uniforms.dimensions.value[1]=this.height,t.uniforms.dimensions.value[2]=this.vertexArray[0],t.uniforms.dimensions.value[3]=this.vertexArray[5]),n.syncUniforms(),s.bindBuffer(s.ARRAY_BUFFER,this.vertexBuffer),s.vertexAttribPointer(n.aVertexPosition,2,s.FLOAT,!1,0,0),s.bindBuffer(s.ARRAY_BUFFER,this.uvBuffer),s.vertexAttribPointer(n.aTextureCoord,2,s.FLOAT,!1,0,0),s.bindBuffer(s.ARRAY_BUFFER,this.colorBuffer),s.vertexAttribPointer(n.colorAttribute,2,s.FLOAT,!1,0,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.indexBuffer),s.drawElements(s.TRIANGLES,6,s.UNSIGNED_SHORT,0),this.renderer.drawCount++},nt.prototype.initShaderBuffers=function(){var t=this.gl;this.vertexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.vertexArray=new Float32Array([0,0,1,0,0,1,1,1]),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertexArray,t.STATIC_DRAW),this.uvArray=new Float32Array([0,0,1,0,0,1,1,1]),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvArray,t.STATIC_DRAW),this.colorArray=new Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colo