UNPKG

@smoud/tiny

Version:

Fast and tiny JavaScript library for HTML5 game and playable ads creation.

1 lines 112 kB
!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 s=arguments[e];if(null!=s)for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(i[n]=s[n])}return i})}},i={};function e(s){var n=i[s];if(void 0!==n)return n.exports;var r=i[s]={exports:{}};return t[s](r,r.exports,e),r.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 s={call:function(t){t&&(t=t.prototype||t,s.mixin(t))},mixin:function(t){const e={};function s(t,s,n,r){var h=e[t];h||(h=e[t]=new i),h.a.push(s,n||null,r||!1),h.n+=3}t.once=function(t,i,e){s(t,i,e,!0)},t.on=s,t.off=function(t,i,s){if(e[t]){var n=e[t].a;if(i)if(s)for(r=0;r<n.length;r+=3)n[r]==i&&n[r+1]==s&&(n.splice(r,3),r-=3);else for(var r=0;r<n.length;r+=3)n[r]==i&&(n.splice(r,3),r-=3);else n.length=0;0==n.length&&delete e[t]}},t.emit=function(t,i,s,n){var r=e[t];if(r){var h=r.a;r.n=0;for(var a,o,u=arguments.length,l=0;l<h.length-r.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,s):a.call(o,i,s,n);0==h.length&&delete e[t]}}}},n=0;var r=Math.PI/180,h=180/Math.PI,a={distance:function(t,i,e,s){var n=t-e,r=i-s;return Math.sqrt(n*n+r*r)},clamp:function(t,i,e){return Math.max(i,Math.min(e,t))},degToRad:function(t){return t*r},radToDeg:function(t){return t*h},isPow2:function(t){return!(t&t-1||!t)},getNextPow2:function(t){if(t>0&&0==(t&t-1))return t;for(var i=1;i<t;)i<<=1;return i}};function o(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(o.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),s=t.charAt(2),n=t.charAt(3);return this.setHex(+('0x'+e+e+s+s+n+n))}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}}),o.WHITE=new o;var u=function(t,i){this.x=t||0,this.y=i||0};u.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 l=function(){this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0};l.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]},l.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},l.prototype.apply=function(t,i){i=i||new u;var e=t.x,s=t.y;return i.x=this.a*e+this.c*s+this.tx,i.y=this.b*e+this.d*s+this.ty,i},l.prototype.applyInverse=function(t,i){i=i||new u;var e=1/(this.a*this.d+this.c*-this.b),s=t.x,n=t.y;return i.x=this.d*e*s+-this.c*e*n+(this.ty*this.c-this.tx*this.d)*e,i.y=this.a*e*n+-this.b*e*s+(-this.ty*this.a+this.tx*this.b)*e,i},l.prototype.translate=function(t,i){return this.tx+=t,this.ty+=i,this},l.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},l.prototype.rotate=function(t){var i=Math.cos(t),e=Math.sin(t),s=this.a,n=this.c,r=this.tx;return this.a=s*i-this.b*e,this.b=s*e+this.b*i,this.c=n*i-this.d*e,this.d=n*e+this.d*i,this.tx=r*i-this.ty*e,this.ty=r*e+this.ty*i,this},l.prototype.append=function(t){var i=this.a,e=this.b,s=this.c,n=this.d;return this.a=t.a*i+t.b*s,this.b=t.a*e+t.b*n,this.c=t.c*i+t.d*s,this.d=t.c*e+t.d*n,this.tx=t.tx*i+t.ty*s+this.tx,this.ty=t.tx*e+t.ty*n+this.ty,this},l.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this};new l;const c={POLY:0,RECT:1,CIRC:2,ELIP:3,RREC:4};var d={VERSION:'3.0.3',CanvasBuffer:t,EventEmitter:s,Math:a,Mat3:l,Vec2:u,Color:o};Object.assign(d,{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},{LINEAR:0,NEAREST:1},c),window.Tiny=d;var p=[];function f(t,i){p.push({name:t,_class_:i})}var m,y,g,x,v,_=function(){},w=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),s.mixin(this),t=t||{},this.boot=t.boot||this.boot||_,this.preload=t.preload||this.preload||_,this.create=t.create||this.create||_,this.update=t.update||this.update||_,this.render=t.render||this.render||_,this._resize_cb=t.resize||_,this._destroy_cb=t.destroy||_;var i=this;setTimeout((function(){i._boot()}),0)};w.prototype._boot=function(){for(var t=0;t<p.length;t++){var i=p[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 s=this;setTimeout((function(){s.load?s._preload():s._create()}),0)},w.prototype._preload=function(){this.preload.call(this.callbackContext),this.state=1,this.load.start(this._create)},w.prototype._create=function(){this.emit('load'),this.create.call(this.callbackContext),this.raf&&this.raf.start(),this.state=2},w.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}},w.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}},w.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')},w.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)},w.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 b=function(){return(new Date).getTime()};void 0!==self.performance&&void 0!==self.performance.now?b=self.performance.now.bind(self.performance):void 0!==Date.now&&(b=Date.now);var M=function(t,i){void 0===i&&(i=!1),this.game=t,this.isRunning=!1,this.forceSetTimeOut=i;for(var e=['ms','moz','webkit','o'],s=0;s<e.length&&!window.requestAnimationFrame;s++)window.requestAnimationFrame=window[e[s]+'RequestAnimationFrame'],window.cancelAnimationFrame=window[e[s]+'CancelAnimationFrame']||window[e[s]+'CancelRequestAnimationFrame'];m=!1,y=null,g=null,x=0,v=0};M.prototype={start:function(){x=b(),this.isRunning=!0;var t=this;!window.requestAnimationFrame||this.forceSetTimeOut?(m=!0,y=function(){return t.updateSetTimeout()},g=window.setTimeout(y,0)):(m=!1,y=function(){return t.updateRAF()},g=window.requestAnimationFrame(y))},updateRAF:function(){v=b(),this.isRunning&&(this.game._update(Math.floor(v),v-x),g=window.requestAnimationFrame(y)),x=v},updateSetTimeout:function(){v=b(),this.isRunning&&(this.game._update(Math.floor(v),v-x),g=window.setTimeout(y,M.timeToCall)),x=v},reset:function(){x=b()},stop:function(){m?clearTimeout(g):window.cancelAnimationFrame(g),this.isRunning=!1}},M.timeToCall=15;var z={image:{},texture:{}},A=function(t){s.mixin(this),t.cache=z,this.game=t,this.list=[]};A.prototype={clearCache:function(){for(var t in z.texture)z.texture[t].destroy();for(var t in z)z[t]={}},all:function(t){this.list=this.list.concat(t)},start:function(t){var i=this,e=i.game,s=i.list,n=s.length;function r(){var t=s.shift(),i=A[t.type];i?i(t,h):h()}function h(h,a){i.emit('progress',1-s.length/n),0!=s.length?r():(i.emit('complete'),t.call(e))}0!=n?r():t.call(e)}},f('load',A);var E=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)};E.prototype.constructor=E,E.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()},E.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()},E.prototype.dirty=function(){for(var t=0;t<this._glTextures.length;t++)this._dirty[t]=!0},E.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 T=function(t,i){var e=new Image;e.addEventListener('load',(function(){var s=new E(e);z.image[t.key]=s,i(t,s)})),e.src=t.src};A.image=T,A.prototype.image=function(t,i){this.list.push({src:i,key:t,type:'image'})};var C=function(t,i,e,s){this.x=t||0,this.y=i||0,this.width=e||0,this.height=s||0,this.type=c.RECT};C.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 s=this.y;if(i>=s&&i<=s+this.height)return!0}return!1},C.prototype.constructor=C;new C(0,0,0,0);var F=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},S=function(t,i,e,s){if(this.noFrame=!1,i||(this.noFrame=!0,i=new C(0,0,1,1)),'string'==typeof t){var n=t;if(!(t=z.image[n]))throw new Error('Cache Error: image '+n+' does`t found in cache');z.texture[n]=this,this.key=n}else t instanceof S?t=t.base:t instanceof E||(t=new E(t));this.base=t,this.frame=i,this.trim=s,this.valid=!1,this._uvs=null,this.width=0,this.height=0,this.crop=e||new C(0,0,1,1),t.valid?this.onBaseUpdate():t.onload=this.onBaseUpdate.bind(this)};S.prototype.constructor=S,S.prototype.onBaseUpdate=function(){var t=this.base;this.noFrame&&(this.frame=new C(0,0,t.width,t.height)),this.setFrame(this.frame)},S.prototype.addToCache=function(t,i){this.key=this.key||t,this.frame.name=this.frame.name||i,this.frame.name&&(t+='.'+this.frame.name),z.texture[t]=this},S.prototype.destroy=function(t){t&&this.base.destroy(),this.key&&delete z.texture[this.key],this.valid=!1},S.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},S.prototype._updateUvs=function(){this._uvs||(this._uvs=new F);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};A.atlas=function(t,i){var e=t.key;T(t,(function(t,s){for(var n=0;n<t.data.length;n++){var r=e+'.'+t.data[n].name,h=new S(s,t.data[n]);h.key=e,z.texture[r]=h}i()}))},A.prototype.atlas=function(t,i,e){this.list.push({src:i,key:t,data:e,type:'atlas'})};var O;A.spritesheet=function(t,i){var e=t.key;T(t,(function(t,s){var n,r,h;if(t.data){var a=t.data;n=a.length-1;for(var o=0;o<=n;o++)r=e+'.'+o,(h=new S(s,{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=n,z.texture[r]=h}else{var u=s.width,l=s.height,c=t.width,d=t.height;c||(c=Math.floor(u/(t.cols||1))),d||(d=Math.floor(l/(t.rows||1)));var p=Math.floor(u/c)*Math.floor(l/d);if(0===p)return i();t.total&&(p=Math.min(p,t.total));var f=0,m=0;n=p-1;for(o=0;o<p;o++)r=e+'.'+o,(h=new S(s,{name:o,x:f,y:m,width:c,height:d,duration:t.duration})).key=e,h.lastFrame=n,z.texture[r]=h,(f+=c)+c>u&&(f=0,m+=d)}i()}))},A.prototype.spritesheet=function(t,i,e,s,n,r){var h={src:i,key:t,type:'spritesheet'};'number'==typeof e?(h.width=e,h.height=s,h.total=n,h.duration=r):e.length>0&&(h.data=e),this.list.push(h)};var L=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),s.mixin(this);for(var e=0;e<L.systems.length;e++)L.systems[e].init.call(this);this.updateBounds()};L.prototype={add:function(t,i){t.inputEnabled=!0,(i=i||{}).system=this,t.input=i,s.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 s=0;s<L.systems.length;s++)L.systems[s].preHandle.call(this,e.x,e.y);for(var n,r=0;r<this.list.length;r++)(n=this.list[r]).inputEnabled&&n.parent&&(n.input.checkBounds?n.input.checkBounds.call(this,n,e.x,e.y):L.checkBounds.call(this,n,e.x,e.y))&&this.candidates.push(n);for(s=this.candidates.length-1;s>=0;s--){if((n=this.candidates[s]).input['last_'+t]={x:e.x,y:e.y},n.input.emit(t,{x:e.x,y:e.y}),'up'==t){var h=n.input.last_down;h&&a.distance(h.x,h.y,e.x,e.y)<30&&n.input.emit('click',{x:e.x,y:e.y})}if(!n.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?(O=!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},O&&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)}},L.checkBounds=function(t,i,e){if(t.worldVisible&&t.getBounds().contains(i,e))return!0},L.systems=[],f('input',L);var R=function(){},I=function(t,i,e,s,n,r,h,a,o){this.game=e,this.cb=s||R,this.ctx=n||this,this.delay=null==r?1e3:r,this.loop=h,this.count=a||0,this.repeat=this.count>0,this.running=!!t,this._lastFrame=0,this.autoRemove=i,this.onComplete=o||R};I.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 U=function(t){this.game=t,this.list=[],this.autoStart=!0,this.autoRemove=!0};U.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,s,n){s=null!=s?s:this.autoStart,n=null!=n?n:this.autoRemove;var r=new I(s,n,this.game,i,e,t);return this.list.push(r),r},loop:function(t,i,e,s,n){s=null!=s?s:this.autoStart,n=null!=n?n:this.autoRemove;var r=new I(s,n,this.game,i,e,t,!0);return this.list.push(r),r},repeat:function(t,i,e,s,n,r,h){n=null!=n?n:this.autoStart,r=null!=r?r:this.autoRemove;var a=new I(n,r,this.game,e,s,t,!1,i,h);return this.list.push(a),a},destroy:function(){this.removeAll()}},f('timer',U);var j=function(){this._tweens={},this._tweensAddedDuringUpdate={}};j.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 s=0;s<e.length;s++){var n=this._tweens[e[s]];n&&!1===n.update(t)&&(n._isPlaying=!1,i||delete this._tweens[e[s]])}e=Object.keys(this._tweensAddedDuringUpdate)}return!0}};var k=new j;k.Group=j,k._nextId=0,k.nextId=function(){return k._nextId++};var P=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=D.Linear.None,this._interpolationFunction=B.Linear,this._chainedTweens=[],this._onStartCallback=null,this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onRepeatCallback=null,this._onCompleteCallback=null,this._onStopCallback=null,this._group=i||k,this._id=k.nextId()};P.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,s;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,s=this._easingFunction(e),this._valuesEnd)if(void 0!==this._valuesStart[i]){var n=this._valuesStart[i]||0,r=this._valuesEnd[i];r instanceof Array?this._object[i]=this._interpolationFunction(r,s):('string'==typeof r&&(r='+'===r.charAt(0)||'-'===r.charAt(0)?n+parseFloat(r):parseFloat(r)),'number'==typeof r&&(this._object[i]=n+(r-n)*s))}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 V,D={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-D.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*D.Bounce.In(2*t):.5*D.Bounce.Out(2*t-1)+.5}}},B={Linear:function(t,i){var e=t.length-1,s=e*i,n=Math.floor(s),r=B.Utils.Linear;return i<0?r(t[0],t[1],s):i>1?r(t[e],t[e-1],e-s):r(t[n],t[n+1>e?e:n+1],s-n)},Bezier:function(t,i){for(var e=0,s=t.length-1,n=Math.pow,r=B.Utils.Bernstein,h=0;h<=s;h++)e+=n(1-i,s-h)*n(i,h)*t[h]*r(s,h);return e},CatmullRom:function(t,i){var e=t.length-1,s=e*i,n=Math.floor(s),r=B.Utils.CatmullRom;return t[0]===t[e]?(i<0&&(n=Math.floor(s=e*(1+i))),r(t[(n-1+e)%e],t[n],t[(n+1)%e],t[(n+2)%e],s-n)):i<0?t[0]-(r(t[0],t[0],t[1],t[1],-s)-t[0]):i>1?t[e]-(r(t[e],t[e],t[e-1],t[e-1],s-e)-t[e]):r(t[n?n-1:0],t[n],t[e<n+1?e:n+1],t[e<n+2?e:n+2],s-n)},Utils:{Linear:function(t,i,e){return(i-t)*e+t},Bernstein:function(t,i){var e=B.Utils.Factorial;return e(t)/e(i)/e(t-i)},Factorial:(V=[1],function(t){var i=1;if(V[t])return V[t];for(var e=t;e>1;e--)i*=e;return V[t]=i,i}),CatmullRom:function(t,i,e,s,n){var r=.5*(e-t),h=.5*(s-i),a=n*n;return(2*i-2*e+r+h)*(n*a)+(-3*i+3*e-2*r-h)*a+r*n+i}}},N=function(t){this.game=t,this.bufferList=[],this.group=new j};N.prototype={remove:function(t){this.group.remove(t)},add:function(t){return new P(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}},f('tweens',N),Tiny.App=w,Tiny.RAF=M,Tiny.registerSystem=f,Tiny.systems=p,Tiny.TweenManager=N,Tiny.Cache=z,Tiny.Loader=A,Tiny.Easing=D,Tiny.Interpolation=B,Tiny.Input=L,Tiny.Timer=I;for(var X=[],G=0;G<256;G++)X[G]=(G<16?'0':'')+G.toString(16);var W={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){var t=4294967295*Math.random()|0,i=4294967295*Math.random()|0,e=4294967295*Math.random()|0,s=4294967295*Math.random()|0;return(X[255&t]+X[t>>8&255]+X[t>>16&255]+X[t>>24&255]+'-'+X[255&i]+X[i>>8&255]+'-'+X[i>>16&15|64]+X[i>>24&255]+'-'+X[63&e|128]+X[e>>8&255]+'-'+X[e>>16&255]+X[e>>24&255]+X[255&s]+X[s>>8&255]+X[s>>16&255]+X[s>>24&255]).toUpperCase()},clamp:function(t,i,e){return Math.max(i,Math.min(e,t))},euclideanModulo:function(t,i){return(t%i+i)%i},mapLinear:function(t,i,e,s,n){return s+(t-i)*(n-s)/(e-i)},lerp:function(t,i,e){return(1-e)*t+e*i},smoothstep:function(t,i,e){return t<=i?0:t>=e?1:(t=(t-i)/(e-i))*t*(3-2*t)},smootherstep:function(t,i,e){return t<=i?0:t>=e?1:(t=(t-i)/(e-i))*t*t*(t*(6*t-15)+10)},randInt:function(t,i){return t+Math.floor(Math.random()*(i-t+1))},randFloat:function(t,i){return t+Math.random()*(i-t)},randFloatSpread:function(t){return t*(.5-Math.random())},degToRad:function(t){return t*W.DEG2RAD},radToDeg:function(t){return t*W.RAD2DEG},isPowerOfTwo:function(t){return 0==(t&t-1)&&0!==t},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}};function q(t,i,e,s){this._x=t||0,this._y=i||0,this._z=e||0,this._w=void 0!==s?s:1}Object.assign(q,{slerp:function(t,i,e,s){return e.copy(t).slerp(i,s)},slerpFlat:function(t,i,e,s,n,r,h){var a=e[s+0],o=e[s+1],u=e[s+2],l=e[s+3],c=n[r+0],d=n[r+1],p=n[r+2],f=n[r+3];if(l!==f||a!==c||o!==d||u!==p){var m=1-h,y=a*c+o*d+u*p+l*f,g=y>=0?1:-1,x=1-y*y;if(x>Number.EPSILON){var v=Math.sqrt(x),_=Math.atan2(v,y*g);m=Math.sin(m*_)/v,h=Math.sin(h*_)/v}var w=h*g;if(a=a*m+c*w,o=o*m+d*w,u=u*m+p*w,l=l*m+f*w,m===1-h){var b=1/Math.sqrt(a*a+o*o+u*u+l*l);a*=b,o*=b,u*=b,l*=b}}t[i]=a,t[i+1]=o,t[i+2]=u,t[i+3]=l}}),Object.defineProperties(q.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()}}}),Object.assign(q.prototype,{isQuaternion:!0,set:function(t,i,e,s){return this._x=t,this._y=i,this._z=e,this._w=s,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},setFromEuler:function(t,i){if(!t||!t.isEuler)throw new Error('Tiny.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.');var e=t._x,s=t._y,n=t._z,r=t.order,h=Math.cos,a=Math.sin,o=h(e/2),u=h(s/2),l=h(n/2),c=a(e/2),d=a(s/2),p=a(n/2);return'XYZ'===r?(this._x=c*u*l+o*d*p,this._y=o*d*l-c*u*p,this._z=o*u*p+c*d*l,this._w=o*u*l-c*d*p):'YXZ'===r?(this._x=c*u*l+o*d*p,this._y=o*d*l-c*u*p,this._z=o*u*p-c*d*l,this._w=o*u*l+c*d*p):'ZXY'===r?(this._x=c*u*l-o*d*p,this._y=o*d*l+c*u*p,this._z=o*u*p+c*d*l,this._w=o*u*l-c*d*p):'ZYX'===r?(this._x=c*u*l-o*d*p,this._y=o*d*l+c*u*p,this._z=o*u*p-c*d*l,this._w=o*u*l+c*d*p):'YZX'===r?(this._x=c*u*l+o*d*p,this._y=o*d*l+c*u*p,this._z=o*u*p-c*d*l,this._w=o*u*l-c*d*p):'XZY'===r&&(this._x=c*u*l-o*d*p,this._y=o*d*l-c*u*p,this._z=o*u*p+c*d*l,this._w=o*u*l+c*d*p),!1!==i&&this._onChangeCallback(),this},setFromAxisAngle:function(t,i){var e=i/2,s=Math.sin(e);return this._x=t.x*s,this._y=t.y*s,this._z=t.z*s,this._w=Math.cos(e),this._onChangeCallback(),this},setFromRotationMatrix:function(t){var i,e=t.elements,s=e[0],n=e[4],r=e[8],h=e[1],a=e[5],o=e[9],u=e[2],l=e[6],c=e[10],d=s+a+c;return d>0?(i=.5/Math.sqrt(d+1),this._w=.25/i,this._x=(l-o)*i,this._y=(r-u)*i,this._z=(h-n)*i):s>a&&s>c?(i=2*Math.sqrt(1+s-a-c),this._w=(l-o)/i,this._x=.25*i,this._y=(n+h)/i,this._z=(r+u)/i):a>c?(i=2*Math.sqrt(1+a-s-c),this._w=(r-u)/i,this._x=(n+h)/i,this._y=.25*i,this._z=(o+l)/i):(i=2*Math.sqrt(1+c-s-a),this._w=(h-n)/i,this._x=(r+u)/i,this._y=(o+l)/i,this._z=.25*i),this._onChangeCallback(),this},setFromUnitVectors:function(t,i){var e=t.dot(i)+1;return e<1e-6?(e=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=e):(this._x=0,this._y=-t.z,this._z=t.y,this._w=e)):(this._x=t.y*i.z-t.z*i.y,this._y=t.z*i.x-t.x*i.z,this._z=t.x*i.y-t.y*i.x,this._w=e),this.normalize()},angleTo:function(t){return 2*Math.acos(Math.abs(W.clamp(this.dot(t),-1,1)))},rotateTowards:function(t,i){var e=this.angleTo(t);if(0===e)return this;var s=Math.min(1,i/e);return this.slerp(t,s),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this},multiply:function(t,i){return void 0!==i?this.multiplyQuaternions(t,i):this.multiplyQuaternions(this,t)},premultiply:function(t){return this.multiplyQuaternions(t,this)},multiplyQuaternions:function(t,i){var e=t._x,s=t._y,n=t._z,r=t._w,h=i._x,a=i._y,o=i._z,u=i._w;return this._x=e*u+r*h+s*o-n*a,this._y=s*u+r*a+n*h-e*o,this._z=n*u+r*o+e*a-s*h,this._w=r*u-e*h-s*a-n*o,this._onChangeCallback(),this},slerp:function(t,i){if(0===i)return this;if(1===i)return this.copy(t);var e=this._x,s=this._y,n=this._z,r=this._w,h=r*t._w+e*t._x+s*t._y+n*t._z;if(h<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,h=-h):this.copy(t),h>=1)return this._w=r,this._x=e,this._y=s,this._z=n,this;var a=1-h*h;if(a<=Number.EPSILON){var o=1-i;return this._w=o*r+i*this._w,this._x=o*e+i*this._x,this._y=o*s+i*this._y,this._z=o*n+i*this._z,this.normalize(),this._onChangeCallback(),this}var u=Math.sqrt(a),l=Math.atan2(u,h),c=Math.sin((1-i)*l)/u,d=Math.sin(i*l)/u;return this._w=r*c+this._w*d,this._x=e*c+this._x*d,this._y=s*c+this._y*d,this._z=n*c+this._z*d,this._onChangeCallback(),this},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},fromArray:function(t,i){return void 0===i&&(i=0),this._x=t[i],this._y=t[i+1],this._z=t[i+2],this._w=t[i+3],this._onChangeCallback(),this},toArray:function(t,i){return void 0===t&&(t=[]),void 0===i&&(i=0),t[i]=this._x,t[i+1]=this._y,t[i+2]=this._z,t[i+3]=this._w,t},_onChange:function(t){return this._onChangeCallback=t,this},_onChangeCallback:function(){}});var Y=new Z,H=new q;function Z(t,i,e){this.x=t||0,this.y=i||0,this.z=e||0}Object.assign(Z.prototype,{isVector3:!0,set:function(t,i,e){return this.x=t,this.y=i,this.z=e,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,i){switch(t){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;break;default:throw new Error('index is out of range: '+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error('index is out of range: '+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,i){return void 0!==i?this.addVectors(t,i):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,i){return this.x=t.x+i.x,this.y=t.y+i.y,this.z=t.z+i.z,this},addScaledVector:function(t,i){return this.x+=t.x*i,this.y+=t.y*i,this.z+=t.z*i,this},sub:function(t,i){return void 0!==i?this.subVectors(t,i):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,i){return this.x=t.x-i.x,this.y=t.y-i.y,this.z=t.z-i.z,this},multiply:function(t,i){return void 0!==i?this.multiplyVectors(t,i):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,i){return this.x=t.x*i.x,this.y=t.y*i.y,this.z=t.z*i.z,this},applyEuler:function(t){return!t||t.isEuler,this.applyQuaternion(H.setFromEuler(t))},applyAxisAngle:function(t,i){return this.applyQuaternion(H.setFromAxisAngle(t,i))},applyMatrix3:function(t){var i=this.x,e=this.y,s=this.z,n=t.elements;return this.x=n[0]*i+n[3]*e+n[6]*s,this.y=n[1]*i+n[4]*e+n[7]*s,this.z=n[2]*i+n[5]*e+n[8]*s,this},applyNormalMatrix:function(t){return this.applyMatrix3(t).normalize()},applyMatrix4:function(t){var i=this.x,e=this.y,s=this.z,n=t.elements,r=1/(n[3]*i+n[7]*e+n[11]*s+n[15]);return this.x=(n[0]*i+n[4]*e+n[8]*s+n[12])*r,this.y=(n[1]*i+n[5]*e+n[9]*s+n[13])*r,this.z=(n[2]*i+n[6]*e+n[10]*s+n[14])*r,this},applyQuaternion:function(t){var i=this.x,e=this.y,s=this.z,n=t.x,r=t.y,h=t.z,a=t.w,o=a*i+r*s-h*e,u=a*e+h*i-n*s,l=a*s+n*e-r*i,c=-n*i-r*e-h*s;return this.x=o*a+c*-n+u*-h-l*-r,this.y=u*a+c*-r+l*-n-o*-h,this.z=l*a+c*-h+o*-r-u*-n,this},project:function(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)},unproject:function(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)},transformDirection:function(t){var i=this.x,e=this.y,s=this.z,n=t.elements;return this.x=n[0]*i+n[4]*e+n[8]*s,this.y=n[1]*i+n[5]*e+n[9]*s,this.z=n[2]*i+n[6]*e+n[10]*s,this.normalize()},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){return this.multiplyScalar(1/t)},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this},clamp:function(t,i){return this.x=Math.max(t.x,Math.min(i.x,this.x)),this.y=Math.max(t.y,Math.min(i.y,this.y)),this.z=Math.max(t.z,Math.min(i.z,this.z)),this},clampScalar:function(t,i){return this.x=Math.max(t,Math.min(i,this.x)),this.y=Math.max(t,Math.min(i,this.y)),this.z=Math.max(t,Math.min(i,this.z)),this},clampLength:function(t,i){var e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(t,Math.min(i,e)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,i){return this.x+=(t.x-this.x)*i,this.y+=(t.y-this.y)*i,this.z+=(t.z-this.z)*i,this},lerpVectors:function(t,i,e){return this.subVectors(i,t).multiplyScalar(e).add(t)},cross:function(t,i){return void 0!==i?this.crossVectors(t,i):this.crossVectors(this,t)},crossVectors:function(t,i){var e=t.x,s=t.y,n=t.z,r=i.x,h=i.y,a=i.z;return this.x=s*a-n*h,this.y=n*r-e*a,this.z=e*h-s*r,this},projectOnVector:function(t){var i=t.dot(this)/t.lengthSq();return this.copy(t).multiplyScalar(i)},projectOnPlane:function(t){return Y.copy(this).projectOnVector(t),this.sub(Y)},reflect:function(t){return this.sub(Y.copy(t).multiplyScalar(2*this.dot(t)))},angleTo:function(t){var i=Math.sqrt(this.lengthSq()*t.lengthSq()),e=this.dot(t)/i;return Math.acos(W.clamp(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var i=this.x-t.x,e=this.y-t.y,s=this.z-t.z;return i*i+e*e+s*s},manhattanDistanceTo:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},setFromSpherical:function(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)},setFromSphericalCoords:function(t,i,e){var s=Math.sin(i)*t;return this.x=s*Math.sin(e),this.y=Math.cos(i)*t,this.z=s*Math.cos(e),this},setFromCylindrical:function(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)},setFromCylindricalCoords:function(t,i,e){return this.x=t*Math.sin(i),this.y=e,this.z=t*Math.cos(i),this},setFromMatrixPosition:function(t){var i=t.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this},setFromMatrixScale:function(t){var i=this.setFromMatrixColumn(t,0).length(),e=this.setFromMatrixColumn(t,1).length(),s=this.setFromMatrixColumn(t,2).length();return this.x=i,this.y=e,this.z=s,this},setFromMatrixColumn:function(t,i){return this.fromArray(t.elements,4*i)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,i){return void 0===i&&(i=0),this.x=t[i],this.y=t[i+1],this.z=t[i+2],this},toArray:function(t,i){return void 0===t&&(t=[]),void 0===i&&(i=0),t[i]=this.x,t[i+1]=this.y,t[i+2]=this.z,t},fromAttribute:function(t,i){return this.x=t.getX(i),this.y=t.getY(i),this.z=t.getZ(i),this}});var Q=new Z,K=new st,$=new Z(0,0,0),J=new Z(1,1,1),tt=new Z,it=new Z,et=new Z;function st(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}Object.assign(st.prototype,{isMatrix4:!0,set:function(t,i,e,s,n,r,h,a,o,u,l,c,d,p,f,m){var y=this.elements;return y[0]=t,y[4]=i,y[8]=e,y[12]=s,y[1]=n,y[5]=r,y[9]=h,y[13]=a,y[2]=o,y[6]=u,y[10]=l,y[14]=c,y[3]=d,y[7]=p,y[11]=f,y[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new st).fromArray(this.elements)},copy:function(t){var i=this.elements,e=t.elements;return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],this},copyPosition:function(t){var i=this.elements,e=t.elements;return i[12]=e[12],i[13]=e[13],i[14]=e[14],this},extractBasis:function(t,i,e){return t.setFromMatrixColumn(this,0),i.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this},makeBasis:function(t,i,e){return this.set(t.x,i.x,e.x,0,t.y,i.y,e.y,0,t.z,i.z,e.z,0,0,0,0,1),this},extractRotation:function(t){var i=this.elements,e=t.elements,s=1/Q.setFromMatrixColumn(t,0).length(),n=1/Q.setFromMatrixColumn(t,1).length(),r=1/Q.setFromMatrixColumn(t,2).length();return i[0]=e[0]*s,i[1]=e[1]*s,i[2]=e[2]*s,i[3]=0,i[4]=e[4]*n,i[5]=e[5]*n,i[6]=e[6]*n,i[7]=0,i[8]=e[8]*r,i[9]=e[9]*r,i[10]=e[10]*r,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this},makeRotationFromEuler:function(t){!t||t.isEuler;var i=this.elements,e=t.x,s=t.y,n=t.z,r=Math.cos(e),h=Math.sin(e),a=Math.cos(s),o=Math.sin(s),u=Math.cos(n),l=Math.sin(n);if('XYZ'===t.order){var c=r*u,d=r*l,p=h*u,f=h*l;i[0]=a*u,i[4]=-a*l,i[8]=o,i[1]=d+p*o,i[5]=c-f*o,i[9]=-h*a,i[2]=f-c*o,i[6]=p+d*o,i[10]=r*a}else if('YXZ'===t.order){var m=a*u,y=a*l,g=o*u,x=o*l;i[0]=m+x*h,i[4]=g*h-y,i[8]=r*o,i[1]=r*l,i[5]=r*u,i[9]=-h,i[2]=y*h-g,i[6]=x+m*h,i[10]=r*a}else if('ZXY'===t.order){m=a*u,y=a*l,g=o*u,x=o*l;i[0]=m-x*h,i[4]=-r*l,i[8]=g+y*h,i[1]=y+g*h,i[5]=r*u,i[9]=x-m*h,i[2]=-r*o,i[6]=h,i[10]=r*a}else if('ZYX'===t.order){c=r*u,d=r*l,p=h*u,f=h*l;i[0]=a*u,i[4]=p*o-d,i[8]=c*o+f,i[1]=a*l,i[5]=f*o+c,i[9]=d*o-p,i[2]=-o,i[6]=h*a,i[10]=r*a}else if('YZX'===t.order){var v=r*a,_=r*o,w=h*a,b=h*o;i[0]=a*u,i[4]=b-v*l,i[8]=w*l+_,i[1]=l,i[5]=r*u,i[9]=-h*u,i[2]=-o*u,i[6]=_*l+w,i[10]=v-b*l}else if('XZY'===t.order){v=r*a,_=r*o,w=h*a,b=h*o;i[0]=a*u,i[4]=-l,i[8]=o*u,i[1]=v*l+b,i[5]=r*u,i[9]=_*l-w,i[2]=w*l-_,i[6]=h*u,i[10]=b*l+v}return i[3]=0,i[7]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this},makeRotationFromQuaternion:function(t){return this.compose($,t,J)},lookAt:function(t,i,e){var s=this.elements;return et.subVectors(t,i),0===et.lengthSq()&&(et.z=1),et.normalize(),tt.crossVectors(e,et),0===tt.lengthSq()&&(1===Math.abs(e.z)?et.x+=1e-4:et.z+=1e-4,et.normalize(),tt.crossVectors(e,et)),tt.normalize(),it.crossVectors(et,tt),s[0]=tt.x,s[4]=it.x,s[8]=et.x,s[1]=tt.y,s[5]=it.y,s[9]=et.y,s[2]=tt.z,s[6]=it.z,s[10]=et.z,this},multiply:function(t,i){return void 0!==i?this.multiplyMatrices(t,i):this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,i){var e=t.elements,s=i.elements,n=this.elements,r=e[0],h=e[4],a=e[8],o=e[12],u=e[1],l=e[5],c=e[9],d=e[13],p=e[2],f=e[6],m=e[10],y=e[14],g=e[3],x=e[7],v=e[11],_=e[15],w=s[0],b=s[4],M=s[8],z=s[12],A=s[1],E=s[5],T=s[9],C=s[13],F=s[2],S=s[6],O=s[10],L=s[14],R=s[3],I=s[7],U=s[11],j=s[15];return n[0]=r*w+h*A+a*F+o*R,n[4]=r*b+h*E+a*S+o*I,n[8]=r*M+h*T+a*O+o*U,n[12]=r*z+h*C+a*L+o*j,n[1]=u*w+l*A+c*F+d*R,n[5]=u*b+l*E+c*S+d*I,n[9]=u*M+l*T+c*O+d*U,n[13]=u*z+l*C+c*L+d*j,n[2]=p*w+f*A+m*F+y*R,n[6]=p*b+f*E+m*S+y*I,n[10]=p*M+f*T+m*O+y*U,n[14]=p*z+f*C+m*L+y*j,n[3]=g*w+x*A+v*F+_*R,n[7]=g*b+x*E+v*S+_*I,n[11]=g*M+x*T+v*O+_*U,n[15]=g*z+x*C+v*L+_*j,this},multiplyScalar:function(t){var i=this.elements;return i[0]*=t,i[4]*=t,i[8]*=t,i[12]*=t,i[1]*=t,i[5]*=t,i[9]*=t,i[13]*=t,i[2]*=t,i[6]*=t,i[10]*=t,i[14]*=t,i[3]*=t,i[7]*=t,i[11]*=t,i[15]*=t,this},applyToBufferAttribute:function(t){for(var i=0,e=t.count;i<e;i++)Q.x=t.getX(i),Q.y=t.getY(i),Q.z=t.getZ(i),Q.applyMatrix4(this),t.setXYZ(i,Q.x,Q.y,Q.z);return t},determinant:function(){var t=this.elements,i=t[0],e=t[4],s=t[8],n=t[12],r=t[1],h=t[5],a=t[9],o=t[13],u=t[2],l=t[6],c=t[10],d=t[14];return t[3]*(+n*a*l-s*o*l-n*h*c+e*o*c+s*h*d-e*a*d)+t[7]*(+i*a*d-i*o*c+n*r*c-s*r*d+s*o*u-n*a*u)+t[11]*(+i*o*l-i*h*d-n*r*l+e*r*d+n*h*u-e*o*u)+t[15]*(-s*h*u-i*a*l+i*h*c+s*r*l-e*r*c+e*a*u)},transpose:function(){var t,i=this.elements;return t=i[1],i[1]=i[4],i[4]=t,t=i[2],i[2]=i[8],i[8]=t,t=i[6],i[6]=i[9],i[9]=t,t=i[3],i[3]=i[12],i[12]=t,t=i[7],i[7]=i[13],i[13]=t,t=i[11],i[11]=i[14],i[14]=t,this},setPosition:function(t,i,e){var s=this.elements;return t.isVector3?(s[12]=t.x,s[13]=t.y,s[14]=t.z):(s[12]=t,s[13]=i,s[14]=e),this},getInverse:function(t,i){var e=this.elements,s=t.elements,n=s[0],r=s[1],h=s[2],a=s[3],o=s[4],u=s[5],l=s[6],c=s[7],d=s[8],p=s[9],f=s[10],m=s[11],y=s[12],g=s[13],x=s[14],v=s[15],_=p*x*c-g*f*c+g*l*m-u*x*m-p*l*v+u*f*v,w=y*f*c-d*x*c-y*l*m+o*x*m+d*l*v-o*f*v,b=d*g*c-y*p*c+y*u*m-o*g*m-d*u*v+o*p*v,M=y*p*l-d*g*l-y*u*f+o*g*f+d*u*x-o*p*x,z=n*_+r*w+h*b+a*M;if(0===z){if(!0===i)throw new Error("Tiny.Matrix4: .getInverse() can't invert matrix, determinant is 0");return this.identity()}var A=1/z;return e[0]=_*A,e[1]=(g*f*a-p*x*a-g*h*m+r*x*m+p*h*v-r*f*v)*A,e[2]=(u*x*a-g*l*a+g*h*c-r*x*c-u*h*v+r*l*v)*A,e[3]=(p*l*a-u*f*a-p*h*c+r*f*c+u*h*m-r*l*m)*A,e[4]=w*A,e[5]=(d*x*a-y*f*a+y*h*m-n*x*m-d*h*v+n*f*v)*A,e[6]=(y*l*a-o*x*a-y*h*c+n*x*c+o*h*v-n*l*v)*A,e[7]=(o*f*a-d*l*a+d*h*c-n*f*c-o*h*m+n*l*m)*A,e[8]=b*A,e[9]=(y*p*a-d*g*a-y*r*m+n*g*m+d*r*v-n*p*v)*A,e[10]=(o*g*a-y*u*a+y*r*c-n*g*c-o*r*v+n*u*v)*A,e[11]=(d*u*a-o*p*a-d*r*c+n*p*c+o*r*m-n*u*m)*A,e[12]=M*A,e[13]=(d*g*h-y*p*h+y*r*f-n*g*f-d*r*x+n*p*x)*A,e[14]=(y*u*h-o*g*h-y*r*l+n*g*l+o*r*x-n*u*x)*A,e[15]=(o*p*h-d*u*h+d*r*l-n*p*l-o*r*f+n*u*f)*A,this},scale:function(t){var i=this.elements,e=t.x,s=t.y,n=t.z;return i[0]*=e,i[4]*=s,i[8]*=n,i[1]*=e,i[5]*=s,i[9]*=n,i[2]*=e,i[6]*=s,i[10]*=n,i[3]*=e,i[7]*=s,i[11]*=n,this},getMaxScaleOnAxis:function(){var t=this.elements,i=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],e=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],s=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(i,e,s))},makeTranslation:function(t,i,e){return this.set(1,0,0,t,0,1,0,i,0,0,1,e,0,0,0,1),this},makeRotationX:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(1,0,0,0,0,i,-e,0,0,e,i,0,0,0,0,1),this},makeRotationY:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(i,0,e,0,0,1,0,0,-e,0,i,0,0,0,0,1),this},makeRotationZ:function(t){var i=Math.cos(t),e=Math.sin(t);return this.set(i,-e,0,0,e,i,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(t,i){var e=Math.cos(i),s=Math.sin(i),n=1-e,r=t.x,h=t.y,a=t.z,o=n*r,u=n*h;return this.set(o*r+e,o*h-s*a,o*a+s*h,0,o*h+s*a,u*h+e,u*a-s*r,0,o*a-s*h,u*a+s*r,n*a*a+e,0,0,0,0,1),this},makeScale:function(t,i,e){return this.set(t,0,0,0,0,i,0,0,0,0,e,0,0,0,0,1),this},makeShear:function(t,i,e){return this.set(1,i,e,0,t,1,e,0,t,i,1,0,0,0,0,1),this},compose:function(t,i,e){var s=this.elements,n=i._x,r=i._y,h=i._z,a=i._w,o=n+n,u=r+r,l=h+h,c=n*o,d=n*u,p=n*l,f=r*u,m=r*l,y=h*l,g=a*o,x=a*u,v=a*l,_=e.x,w=e.y,b=e.z;return s[0]=(1-(f+y))*_,s[1]=(d+v)*_,s[2]=(p-x)*_,s[3]=0,s[4]=(d-v)*w,s[5]=(1-(c+y))*w,s[6]=(m+g)*w,s[7]=0,s[8]=(p+x)*b,s[9]=(m-g)*b,s[10]=(1-(c+f))*b,s[11]=0,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=1,this},decompose:function(t,i,e){var s=this.elements,n=Q.set(s[0],s[1],s[2]).length(),r=Q.set(s[4],s[5],s[6]).length(),h=Q.set(s[8],s[9],s[10]).length();this.determinant()<0&&(n=-n),t.x=s[12],t.y=s[13],t.z=s[14],K.copy(this);var a=1/n,o=1/r,u=1/h;return K.elements[0]*=a,K.elements[1]*=a,K.elements[2]*=a,K.elements[4]*=o,K.elements[5]*=o,K.elements[6]*=o,K.elements[8]*=u,K.elements[9]*=u,K.elements[10]*=u,i.setFromRotationMatrix(K),e.x=n,e.y=r,e.z=h,this},makePerspective:function(t,i,e,s,n,r){var h=this.elements,a=2*n/(i-t),o=2*n/(e-s),u=(i+t)/(i-t),l=(e+s)/(e-s),c=-(r+n)/(r-n),d=-2*r*n/(r-n);return h[0]=a,h[4]=0,h[8]=u,h[12]=0,h[1]=0,h[5]=o,h[9]=l,h[13]=0,h[2]=0,h[6]=0,h[10]=c,h[14]=d,h[3]=0,h[7]=0,h[11]=-1,h[15]=0,this},makeOrthographic:function(t,i,e,s,n,r){var h=this.elements,a=1/(i-t),o=1/(e-s),u=1/(r-n),l=(i+t)*a,c=(e+s)*o,d=(r+n)*u;return h[0]=2*a,h[4]=0,h[8]=0,h[12]=-l,h[1]=0,h[5]=2*o,h[9]=0,h[13]=-c,h[2]=0,h[6]=0,h[10]=-2*u,h[14]=-d,h[3]=0,h[7]=0,h[11]=0,h[15]=1,this},equals:function(t){for(var i=this.elements,e=t.elements,s=0;s<16;s++)if(i[s]!==e[s])return!1;return!0},fromArray:function(t,i){void 0===i&&(i=0);for(var e=0;e<16;e++)this.elements[e]=t[e+i];return this},toArray:function(t,i){void 0===t&&(t=[]),void 0===i&&(i=0);var e=this.elements;return t[i]=e[0],t[i+1]=e[1],t[i+2]=e[2],t[i+3]=e[3],t[i+4]=e[4],t[i+5]=e[5],t[i+6]=e[6],t[i+7]=e[7],t[i+8]=e[8],t[i+9]=e[9],t[i+10]=e[10],t[i+11]=e[11],t[i+12]=e[12],t[i+13]=e[13],t[i+14]=e[14],t[i+15]=e[15],t}});var nt=new st,rt=new q;function