UNPKG

proton-engine

Version:

Proton is a simple and powerful javascript particle animation engine.

10 lines 63.8 kB
/*! * Proton v7.1.5 * https://github.com/drawcall/Proton * * Copyright 2013-2025, drawcall * Licensed under the MIT license * http://www.opensource.org/licenses/mit-license * */ this.Proton=function(){"use strict";function t(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function e(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,i(t,e)}function i(t,e){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},i(t,e)}function n(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}var r=function(t){--t;for(var e=1;e<32;e<<=1)t|=t>>e;return t+1},a=function(t,e){return[1,0,0,0,1,0,t,e,1]},s=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},o=function(t,e){return[t,0,0,0,e,0,0,0,1]},h=function(t,e){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+n*f+r*m,i*d+n*g+r*v,i*p+n*y+r*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},l={createCanvas:function(t,e,i,n){void 0===n&&(n="absolute");var r=document.createElement("canvas");return r.id=t,r.width=e,r.height=i,r.style.opacity=0,r.style.position=n,this.transform(r,-500,-500,0,0),r},createDiv:function(t,e,i){var n=document.createElement("div");return n.id=t,n.style.position="absolute",this.resize(n,e,i),n},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,n,r){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+n+") rotate("+r+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,n,r){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+n+") rotate("+r+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var n=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+n]=i,t.style["Moz"+n]=i,t.style["O"+n]=i,t.style["ms"+n]=i,t.style[""+e]=i}},c={},u={},d=0,p=function(t,e,i){t.drawImage(e,i.x,i.y);var n=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),n},f=function(t,e,i){var n="string"==typeof t?t:t.src;if(c[n])e(c[n],i);else{var r=new Image;r.onload=function(t){c[n]=t.target,e(c[n],i)},r.src=n}},g=function(t,e,i){var n=t.src;if(!u[n]){var a=r(t.width),s=r(t.height),o=l.createCanvas("proton_canvas_cache_"+ ++d,a,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),u[n]=o}return e&&e(u[n],i),u[n]},y={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var n=e;n<t.length;n++)i.push(t[n])},getRandFromArray:function(t){return t?t[Math.floor(t.length*Math.random())]:null},emptyObject:function(t,e){for(var i in void 0===e&&(e=null),t)e&&e.indexOf(i)>-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return p(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},m={},v={_index:0,_cache:{},id:function(t){return void 0!==m[t]&&null!==m[t]||(m[t]=0),t+"_"+m[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},b=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var n;return i=i||t.__puid||v.getId(t),(n=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,n},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?y.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),x=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),n=this.getRenderer(),r="";switch(this.type){case 2:r+="emitter:"+this.proton.emitters.length+"<br>",i&&(r+="em speed:"+i.emitSpeed+"<br>"),i&&(r+="pos:"+this.getEmitterPos(i));break;case 3:i&&(r+="initializes:"+i.initializes.length+"<br>"),i&&(r+='<span style="display:inline-block;">'+this.concatArr(i.initializes)+"</span><br>"),i&&(r+="behaviours:"+i.behaviours.length+"<br>"),i&&(r+='<span style="display:inline-block;">'+this.concatArr(i.behaviours)+"</span><br>");break;case 4:n&&(r+=n.name+"<br>"),n&&(r+="body:"+this.getCreatedNumber(n)+"<br>");break;default:r+="particles:"+this.proton.getCount()+"<br>",r+="pool:"+this.proton.pool.getCount()+"<br>",r+="total:"+this.proton.pool.total}this.container.innerHTML=r},e.add=function(t,e){var i=this;if(!this.container){var n,r;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:n="#201",r="#f08";break;case 3:n="#020",r="#0f0";break;default:n="#002",r="#0ff"}this.container.style["background-color"]=n,this.container.style.color=r}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i<t.length;i++)e+=(t[i].name||"").substr(0,1)+".";return e},e.getCreatedNumber=function(t){return t.pool.total||t.cpool&&t.cpool.total||0},e.getEmitterPos=function(t){return Math.round(t.p.x)+","+Math.round(t.p.y)},e.destroy=function(){this.container&&this.container.parentNode&&(this.body||document.body).removeChild(this.container);this.proton=null,this.container=null},t}(),E=function(){function t(){this._listeners=null}t.bind=function(e){e.prototype.dispatchEvent=t.prototype.dispatchEvent,e.prototype.hasEventListener=t.prototype.hasEventListener,e.prototype.addEventListener=t.prototype.addEventListener,e.prototype.removeEventListener=t.prototype.removeEventListener,e.prototype.removeAllEventListeners=t.prototype.removeAllEventListeners};var e=t.prototype;return e.addEventListener=function(t,e){return this._listeners?this.removeEventListener(t,e):this._listeners={},this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),e},e.removeEventListener=function(t,e){if(this._listeners&&this._listeners[t])for(var i=this._listeners[t],n=i.length,r=0;r<n;r++)if(i[r]===e){1===n?delete this._listeners[t]:i.splice(r,1);break}},e.removeAllEventListeners=function(t){t?this._listeners&&delete this._listeners[t]:this._listeners=null},e.dispatchEvent=function(t,e){var i=!1,n=this._listeners;if(t&&n){var r,a=n[t];if(!a)return i;for(var s=a.length;s--;)r=a[s],i=i||r(e)}return!!i},e.hasEventListener=function(t){var e=this._listeners;return!(!e||!e[t])},t}(),P=3.1415926,A=1/0,T={PI:P,PIx2:2*P,PI_2:P/2,PI_180:P/180,N180_PI:180/P,Infinity:-999,isInfinity:function(t){return t===this.Infinity||t===A},randomAToB:function(t,e,i){return void 0===i&&(i=!1),i?(Math.random()*(e-t)|0)+t:t+Math.random()*(e-t)},randomFloating:function(t,e,i){return this.randomAToB(t-e,t+e,i)},randomColor:function(){return"#"+("00000"+(16777216*Math.random()|0).toString(16)).slice(-6)},randomZone:function(t){},floor:function(t,e){void 0===e&&(e=4);var i=Math.pow(10,e);return Math.floor(t*i)/i},degreeTransform:function(t){return t*P/180},toColor16:function(t){return"#"+t.toString(16)}},R=function(){function t(t){this.type=t}var e=t.prototype;return e.calculate=function(t,e,i){this.eulerIntegrate(t,e,i)},e.eulerIntegrate=function(t,e,i){t.sleep||(t.old.p.copy(t.p),t.old.v.copy(t.v),t.a.multiplyScalar(1/t.mass),t.v.add(t.a.multiplyScalar(e)),t.p.add(t.old.v.multiplyScalar(e)),i&&t.v.multiplyScalar(i),t.a.clear())},t}(),_=function(){function e(t){this.emitters=[],this.renderers=[],this.time=0,this.now=0,this.then=0,this.elapsed=0,this.stats=new x(this),this.pool=new b(80),this.integrationType=y.initValue(t,e.EULER),this.integrator=new R(this.integrationType),this._fps="auto",this._interval=e.DEFAULT_INTERVAL}var i,n,r,a=e.prototype;return a.addRenderer=function(t){t.init(this),this.renderers.push(t)},a.removeRenderer=function(t){var e=this.renderers.indexOf(t);this.renderers.splice(e,1),t.remove(this)},a.addEmitter=function(t){this.emitters.push(t),t.parent=this,this.dispatchEvent(e.EMITTER_ADDED,t)},a.removeEmitter=function(t){var i=this.emitters.indexOf(t);this.emitters.splice(i,1),t.parent=null,this.dispatchEvent(e.EMITTER_REMOVED,t)},a.update=function(){"auto"===this._fps?(this.dispatchEvent(e.PROTON_UPDATE),e.USE_CLOCK?(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.amendChangeTabsBug(),this.elapsed>0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(e.DEFAULT_INTERVAL),this.dispatchEvent(e.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(e.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(e.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){e.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){y.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),y.destroyAll(e.emitters),y.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=e,(n=[{key:"fps",get:function(){return this._fps},set:function(t){this._fps=t,this._interval="auto"===t?e.DEFAULT_INTERVAL:T.floor(1/t,7)}}])&&t(i.prototype,n),r&&t(i,r),Object.defineProperty(i,"prototype",{writable:!1}),i}();_.USE_CLOCK=!1,_.MEASURE=100,_.EULER="euler",_.RK2="runge-kutta2",_.PARTICLE_CREATED="PARTICLE_CREATED",_.PARTICLE_UPDATE="PARTICLE_UPDATE",_.PARTICLE_SLEEP="PARTICLE_SLEEP",_.PARTICLE_DEAD="PARTICLE_DEAD",_.EMITTER_ADDED="EMITTER_ADDED",_.EMITTER_REMOVED="EMITTER_REMOVED",_.PROTON_UPDATE="PROTON_UPDATE",_.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",_.DEFAULT_INTERVAL=.0167,_.amendChangeTabsBug=!0,E.bind(_);var w=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),C=function(){function t(t,e,i){this.isArray=void 0,this.a=void 0,this.b=void 0,this.center=void 0,y.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=y.initValue(t,1),this.b=y.initValue(e,this.a),this.center=y.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?y.getRandFromArray(this.a):this.center?T.randomFloating(this.a,this.b,t):T.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,n){return e instanceof t?e:void 0===i?new t(e):void 0===n?new t(e,i):new t(e,i,n)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),I={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=C.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},S={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*T.PI_2)},easeOutSine:function(t){return Math.sin(t*T.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},D=function(){function t(t,e){this.x=void 0,this.y=void 0,this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?T.PI_2:this.y<0?-T.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),V=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=v.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new D,this.v=new D,this.a=new D,this.old.p=new D,this.old.v=new D,this.old.a=new D,this.rgb=new w,this.reset(),t&&I.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*T.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=S.easeLinear,this.rgb.reset(),y.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age<this.life){var i=this.easing(this.age/this.life);this.energy=Math.max(1-i,0)}else this.destroy()},e.applyBehaviours=function(t,e){var i,n=this.behaviours.length;for(i=0;i<n;i++)this.behaviours[i]&&this.behaviours[i].applyBehaviour(this,t,e)},e.addBehaviour=function(t){this.behaviours.push(t),t.hasOwnProperty("parents")&&t.parents.push(this),t.initialize(this)},e.addBehaviours=function(t){var e,i=t.length;for(e=0;e<i;e++)this.addBehaviour(t[e])},e.removeBehaviour=function(t){var e=this.behaviours.indexOf(t);e>-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),M={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},B=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new D(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),L={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*n+u*s,i[1]=c*r+u*o,i[2]=a*d,i[3]=p*n+f*s,i[4]=p*r+f*o,i[6]=g*n+y*s+h,i[7]=g*r+y*o+l,i},inverse:function(t,e){var i,n=t[0],r=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(n*l+r*c),e[0]=l*i,e[1]=-r*i,e[3]=c*i,e[4]=n*i,e[6]=u*i,e[7]=(-h*n+r*o)*i,e},multiplyVec2:function(t,e,i){var n=e[0],r=e[1];return i[0]=n*t[0]+r*t[3]+t[6],i[1]=n*t[1]+r*t[4]+t[7],i}},U=function(t){function i(e){var i;return(i=t.call(this)||this)._arr=y.toArray(e),i}return e(i,t),i.prototype.getValue=function(){var t=y.getRandFromArray(this._arr);return"random"===t||"Random"===t?T.randomColor():t},i.createArraySpan=function(t){return t?t instanceof i?t:new i(t):null},i}(C),F=function(){function t(t,e,i,n){this.x=t,this.y=e,this.width=i,this.height=n,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),O=function(){function t(t,e){this.numPan=void 0,this.timePan=void 0,this.startTime=void 0,this.nextTime=void 0,this.numPan=C.setSpanValue(y.initValue(t,1)),this.timePan=C.setSpanValue(y.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),z=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),k=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).lifePan=void 0,r.name=void 0,r.lifePan=C.setSpanValue(e,i,n),r.name="Life",r}return e(i,t),i.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},i}(z),N=function(){function t(){this.vector=new D(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),H=function(t){function i(e,i){var n;return(n=t.call(this)||this).x=e,n.y=i,n}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},n.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},i}(N),q=function(t){function i(e){var i;return(i=t.call(this)||this).zone=void 0,i.name=void 0,i.zone=y.initValue(e,new H),i.name="Position",i}e(i,t);var n=i.prototype;return n.reset=function(t){this.zone=y.initValue(t,new H)},n.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},i}(z),G=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).rPan=void 0,r.thaPan=void 0,r.name=void 0,r.rPan=C.setSpanValue(e),r.thaPan=C.setSpanValue(i),r.type=y.initValue(n,"vector"),r.name="Velocity",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.rPan=C.setSpanValue(t),this.thaPan=C.setSpanValue(e),this.type=y.initValue(i,"vector")},n.normalizeVelocity=function(t){return t*_.MEASURE},n.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new B(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*T.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},i}(z),X=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).massPan=void 0,r.name=void 0,r.massPan=C.setSpanValue(e,i,n),r.name="Mass",r}return e(i,t),i.prototype.initialize=function(t){t.mass=this.massPan.getValue()},i}(z),Y=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).radius=void 0,r.name=void 0,r.radius=C.setSpanValue(e,i,n),r.name="Radius",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.radius=C.setSpanValue(t,e,i)},n.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},i}(z),j=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).image=void 0,r.name=void 0,r.image=r.setSpanValue(e),r.w=y.initValue(i,20),r.h=y.initValue(n,r.w),r.name="Body",r}e(i,t);var n=i.prototype;return n.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},n.setSpanValue=function(t){return t instanceof U?t:new U(t)},i}(z),W=function(){function t(e,i){this.life=y.initValue(e,1/0),this.easing=S.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=y.initValue(t,1/0),this.easing=S.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(_.MEASURE)},e.normalizeValue=function(t){return t*_.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var n=this.easing(t.age/t.life);this.energy=Math.max(1-n,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();W.id=0;var Z=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).force=a.normalizeForce(new D(e,i)),a.name="Force",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.force=this.normalizeForce(new D(e,i)),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},i}(W),Q=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).targetPosition=y.initValue(e,new D),s.radius=y.initValue(n,1e3),s.force=y.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new D,s.lengthSq=0,s.name="Attraction",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.targetPosition=y.initValue(e,new D),this.radius=y.initValue(n,1e3),this.force=y.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new D,this.lengthSq=0,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq<this.radiusSq&&(this.attractionForce.normalize(),this.attractionForce.multiplyScalar(1-this.lengthSq/this.radiusSq),this.attractionForce.multiplyScalar(this.force),t.a.add(this.attractionForce))},i}(W),K=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.time=0,s.name="RandomDrift",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.panFoce=new D(e,i),this.panFoce=this.normalizeForce(this.panFoce),this.delay=n,r&&t.prototype.reset.call(this,r,a)},n.initialize=function(t){t.data.time=0},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.data.time+=e,t.data.time>=this.delay&&(t.a.addXY(T.randomAToB(-this.panFoce.x,this.panFoce.x),T.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},i}(W),J=function(t){function i(e,i,n){var r;return(r=t.call(this,0,e,i,n)||this).name="Gravity",r}return e(i,t),i.prototype.reset=function(e,i,n){t.prototype.reset.call(this,0,e,i,n)},i}(Z),$=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.newPool=[],s.pool=[],s.name="Collision",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.emitter=y.initValue(e,null),this.mass=y.initValue(i,!0),this.callback=y.initValue(n,null),this.collisionPool=[],this.delta=new D,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.emitter?y.sliceArray(this.emitter.particles,i,this.newPool):y.sliceArray(this.pool,i,this.newPool);var n,r,a,s,o,h,l,c=this.newPool.length;for(l=0;l<c;l++)if((n=this.newPool[l])!==t){this.delta.copy(n.p),this.delta.sub(t.p),r=this.delta.lengthSq();var u=t.radius+n.radius;r<=u*u&&(a=u-Math.sqrt(r),a+=.5,s=t.mass+n.mass,o=this.mass?n.mass/s:.5,h=this.mass?t.mass/s:.5,t.p.add(this.delta.clone().normalize().multiplyScalar(a*-o)),n.p.add(this.delta.normalize().multiplyScalar(a*h)),this.callback&&this.callback(t,n))}},i}(W),tt=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).reset(e,i),a.name="CrossZone",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.zone=e,this.zone.crossType=y.initValue(i,"dead"),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.zone.crossing(t)},i}(W),et=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).same=void 0,a.a=void 0,a.b=void 0,a.name=void 0,a.reset(e,i),a.name="Alpha",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.same=null==i,this.a=C.setSpanValue(y.initValue(e,1)),this.b=C.setSpanValue(i),n&&t.prototype.reset.call(this,n,r)},n.initialize=function(t){t.data.alphaA=this.a.getValue(),this.same?t.data.alphaB=t.data.alphaA:t.data.alphaB=this.b.getValue()},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.alpha=t.data.alphaB+(t.data.alphaA-t.data.alphaB)*this.energy,t.alpha<.001&&(t.alpha=0)},i}(W),it=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).same=void 0,a.name=void 0,a.reset(e,i),a.name="Scale",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.same=null==i,this.a=C.setSpanValue(y.initValue(e,1)),this.b=C.setSpanValue(i),n&&t.prototype.reset.call(this,n,r)},n.initialize=function(t){t.data.scaleA=this.a.getValue(),t.data.oldRadius=t.radius,t.data.scaleB=this.same?t.data.scaleA:this.b.getValue()},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.scale=t.data.scaleB+(t.data.scaleA-t.data.scaleB)*this.energy,t.scale<1e-4&&(t.scale=0),t.radius=t.data.oldRadius*t.scale},i}(W),nt=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).same=void 0,s.a=void 0,s.b=void 0,s.style=void 0,s.name=void 0,s.reset(e,i,n),s.name="Rotate",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.same=null==i,this.a=C.setSpanValue(y.initValue(e,"Velocity")),this.b=C.setSpanValue(y.initValue(i,0)),this.style=y.initValue(n,"to"),r&&t.prototype.reset.call(this,r,a)},n.initialize=function(t){t.rotation=this.a.getValue(),t.data.rotationA=this.a.getValue(),this.same||(t.data.rotationB=this.b.getValue())},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.same?"V"!==this.a.a&&"Velocity"!==this.a.a&&"v"!==this.a.a||(t.rotation=t.getDirection()):"to"===this.style||"TO"===this.style||"_"===this.style?t.rotation+=t.data.rotationB+(t.data.rotationA-t.data.rotationB)*this.energy:t.rotation+=t.data.rotationB},i}(W),rt=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).reset(e,i),a.name="Color",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.a=U.createArraySpan(e),this.b=U.createArraySpan(i),n&&t.prototype.reset.call(this,n,r)},n.initialize=function(t){t.color=this.a.getValue(),t.data.colorA=M.hexToRgb(t.color),this.b&&(t.data.colorB=M.hexToRgb(this.b.getValue()))},n.applyBehaviour=function(t,e,i){this.b?(this.calculate(t,e,i),t.rgb.r=t.data.colorB.r+(t.data.colorA.r-t.data.colorB.r)*this.energy,t.rgb.g=t.data.colorB.g+(t.data.colorA.g-t.data.colorB.g)*this.energy,t.rgb.b=t.data.colorB.b+(t.data.colorA.b-t.data.colorB.b)*this.energy,t.rgb.r=t.rgb.r|0,t.rgb.g=t.rgb.g|0,t.rgb.b=t.rgb.b|0):(t.rgb.r=t.data.colorA.r,t.rgb.g=t.data.colorA.g,t.rgb.b=t.data.colorA.b)},i}(W),at="changing",st=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).setAngleAndForce(e,i),a.name="Cyclone",a}e(i,t);var n=i.prototype;return n.setAngleAndForce=function(t,e){this.force=at,this.angle=T.PI/2,"right"===t?this.angle=T.PI/2:"left"===t?this.angle=-T.PI/2:"random"===t?this.angle="random":t instanceof C?(this.angle="span",this.span=t):t&&(this.angle=t),"changing"===String(e).toLowerCase()||"chang"===String(e).toLowerCase()||"auto"===String(e).toLowerCase()?this.force=at:e&&(this.force=e)},n.reset=function(e,i,n,r){this.angle=T.PI/2,this.setAngleAndForce(e,i),n&&t.prototype.reset.call(this,n,r)},n.initialize=function(t){"random"===this.angle?t.data.cangle=T.randomAToB(-T.PI,T.PI):"span"===this.angle&&(t.data.cangle=this.span.getValue()),t.data.cyclone=new D(0,0)},n.applyBehaviour=function(t,e,i){var n;this.calculate(t,e,i);var r=t.v.getGradient();"random"===this.angle||"span"===this.angle?r+=t.data.cangle:r+=this.angle,n=this.force===at?t.v.length()/100:this.force,t.data.cyclone.x=n*Math.cos(r),t.data.cyclone.y=n*Math.sin(r),t.data.cyclone=this.normalizeForce(t.data.cyclone),t.a.add(t.data.cyclone)},i}(W),ot=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,e,i,n,r,a)||this).force*=-1,s.name="Repulsion",s}return e(i,t),i.prototype.reset=function(e,i,n,r,a){t.prototype.reset.call(this,e,i,n,r,a),this.force*=-1},i}(Q),ht=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).distanceVec=new D,a.centerPoint=y.initValue(e,new D),a.force=y.initValue(a.normalizeValue(i),100),a.name="GravityWell",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.distanceVec=new D,this.centerPoint=y.initValue(e,new D),this.force=y.initValue(this.normalizeValue(i),100),n&&t.prototype.reset.call(this,n,r)},n.initialize=function(t){},n.applyBehaviour=function(t,e,i){this.distanceVec.set(this.centerPoint.x-t.p.x,this.centerPoint.y-t.p.y);var n=this.distanceVec.lengthSq();if(0!==n){var r=this.distanceVec.length(),a=this.force*e/(n*r);t.v.x+=a*this.distanceVec.x,t.v.y+=a*this.distanceVec.y}},i}(W),lt={initialize:function(t,e,i){var n,r=i.length;for(n=0;n<r;n++)i[n]instanceof z?i[n].init(t,e):this.init(t,e,i[n]);this.bindEmitter(t,e)},init:function(t,e,i){I.setProp(e,i),I.setVectorVal(e,i)},bindEmitter:function(t,e){t.bindEmitter&&(e.p.add(t.p),e.v.add(t.v),e.a.add(t.a),e.v.rotate(T.degreeTransform(t.rotation)))}},ct=function(t){function i(e){var i;return void 0===e&&(e={}),(i=t.call(this,e)||this).particles=[],i.behaviours=[],i.initializes=[],i.emitTime=0,i.emitSpeed=0,i.totalTime=-1,i.damping=.006,i.bindEmitter=!0,i.rate=new O(1,.1),i.name="Emitter",i.id=v.id(i.name),i}e(i,t);var n=i.prototype;return n.emit=function(t,e){this.stoped=!1,this.emitTime=0,this.totalTime=y.initValue(t,1/0),!0===e||"life"===e||"destroy"===e?this.life="once"===t?1:this.totalTime:isNaN(e)||(this.life=e),this.rate.init()},n.stop=function(){this.totalTime=-1,this.emitTime=0,this.stoped=!0},n.preEmit=function(t){var e=this.stoped,i=this.emitTime,n=this.totalTime;this.stoped=!1,this.emitTime=0,this.totalTime=t,this.rate.init();for(var r=.0167;t>r;)t-=r,this.update(r);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=n},n.removeAllParticles=function(){for(var t=this.particles.length;t--;)this.particles[t].dead=!0},n.addSelfInitialize=function(t){t.init&&t.init(this)},n.addInitialize=function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];for(var n=e.length;n--;)this.initializes.push(e[n])},n.removeInitialize=function(t){var e=this.initializes.indexOf(t);e>-1&&this.initializes.splice(e,1)},n.removeAllInitializers=function(){y.emptyArray(this.initializes)},n.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];for(var n=arguments.length;n--;){var r=e[n];this.behaviours.push(r),r.parents&&r.parents.push(this)}},n.removeBehaviour=function(t){var e=this.behaviours.indexOf(t);return this.behaviours.splice(e,1),t.parents&&(e=t.parents.indexOf(t),t.parents.splice(e,1)),e},n.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},n.update=function(t){this.age+=t,(this.age>=this.life||this.dead)&&this.destroy(),this.emitting(t),this.integrate(t)},n.integrate=function(t){if(this.parent){var e,i,n=1-this.damping;for(this.parent.integrator.calculate(this,t,n),e=this.particles.length-1;e>=0;e--)(i=this.particles[e]).update(t,e),this.parent.integrator.calculate(i,t,n),this.dispatch("PARTICLE_UPDATE",i),i.dead&&(this.dispatch("PARTICLE_DEAD",i),this.parent.pool.expire(i),this.particles.splice(e,1))}},n.dispatch=function(t,e){this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)},n.emitting=function(t){if(!this.stoped)if("none"===this.totalTime)this.emitTime+=t;else if("once"===this.totalTime){var e,i=this.rate.getValue(99999);for(i>0&&(this.emitSpeed=i),e=0;e<i;e++)this.createParticle();this.totalTime="none"}else if(this.emitTime+=t,this.emitTime<this.totalTime){var n,r=this.rate.getValue(t);for(r>0&&(this.emitSpeed=r),n=0;n<r;n++)this.createParticle()}},n.createParticle=function(t,e){var i=this.parent.pool.get(V);return this.setupParticle(i,t,e),this.dispatch("PARTICLE_CREATED",i),i},n.setupParticle=function(t,e,i){var n=this.initializes,r=this.behaviours;e&&(n=y.toArray(e)),i&&(r=y.toArray(i)),t.reset(),lt.initialize(this,t,n),t.addBehaviours(r),t.parent=this,this.particles.push(t)},n.remove=function(){this.stop(),y.destroyAll(this.particles)},n.destroy=function(){this.dead=!0,this.remove(),this.removeAllInitializers(),this.removeAllBehaviours(),this.parent&&this.parent.removeEmitter(this),this.rate=null,this.old=null,this.rgb=null,this.v=null,this.a=null,this.p=null},i}(V);E.bind(ct);var ut,dt=function(t){function i(e){var i;return(i=t.call(this,e)||this).selfBehaviours=[],i}e(i,t);var n=i.prototype;return n.addSelfBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n,r=e.length;for(n=0;n<r;n++){var a=e[n];this.selfBehaviours.push(a),a.initialize(this)}},n.removeSelfBehaviour=function(t){var e=this.selfBehaviours.indexOf(t);e>-1&&this.selfBehaviours.splice(e,1)},n.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,n=this.selfBehaviours.length;for(i=0;i<n;i++)this.selfBehaviours[i].applyBehaviour(this,e,i)}},i}(ct),pt=function(t){function i(e,i,n){var r;return(r=t.call(this,n)||this).mouseTarget=y.initValue(e,window),r.ease=y.initValue(i,.7),r._allowEmitting=!1,r.initEventHandler(),r}e(i,t);var n=i.prototype;return n.initEventHandler=function(){var t=this;this.mousemoveHandler=function(e){return t.mousemove.call(t,e)},this.mousedownHandler=function(e){return t.mousedown.call(t,e)},this.mouseupHandler=function(e){return t.mouseup.call(t,e)},this.mouseTarget.addEventListener("mousemove",this.mousemoveHandler,!1)},n.emit=function(){this._allowEmitting=!0},n.stop=function(){this._allowEmitting=!1},n.mousemove=function(e){e.layerX||0===e.layerX?(this.p.x+=(e.layerX-this.p.x)*this.ease,this.p.y+=(e.layerY-this.p.y)*this.ease):(e.offsetX||0===e.offsetX)&&(this.p.x+=(e.offsetX-this.p.x)*this.ease,this.p.y+=(e.offsetY-this.p.y)*this.ease),this._allowEmitting&&t.prototype.emit.call(this,"once")},n.destroy=function(){t.prototype.destroy.call(this),this.mouseTarget.removeEventListener("mousemove",this.mousemoveHandler,!1)},i}(ct),ft=function(t){if(!t)return!1;if(t.__isImage)return!0;var e=(""+t.tagName).toUpperCase();return("IMG"===(""+t.nodeName).toUpperCase()||"IMG"===e)&&(t.__isImage=!0,!0)},gt=function(t){return"string"==typeof t},yt=function(){function t(t,e){this.pool=new b,this.element=t,this.stroke=e,this.circleConf={isCircle:!0},this.initEventHandler(),this.name="BaseRenderer"}var e=t.prototype;return e.setStroke=function(t,e){void 0===t&&(t="#000000"),void 0===e&&(e=1),this.stroke={color:t,thinkness:e}},e.initEventHandler=function(){var t=this;this._protonUpdateHandler=function(){t.onProtonUpdate.call(t)},this._protonUpdateAfterHandler=function(){t.onProtonUpdateAfter.call(t)},this._emitterAddedHandler=function(e){t.onEmitterAdded.call(t,e)},this._emitterRemovedHandler=function(e){t.onEmitterRemoved.call(t,e)},this._particleCreatedHandler=function(e){t.onParticleCreated.call(t,e)},this._particleUpdateHandler=function(e){t.onParticleUpdate.call(t,e)},this._particleDeadHandler=function(e){t.onParticleDead.call(t,e)}},e.init=function(t){this.parent=t,t.addEventListener("PROTON_UPDATE",this._protonUpdateHandler),t.addEventListener("PROTON_UPDATE_AFTER",this._protonUpdateAfterHandler),t.addEventListener("EMITTER_ADDED",this._emitterAddedHandler),t.addEventListener("EMITTER_REMOVED",this._emitterRemovedHandler),t.addEventListener("PARTICLE_CREATED",this._particleCreatedHandler),t.addEventListener("PARTICLE_UPDATE",this._particleUpdateHandler),t.addEventListener("PARTICLE_DEAD",this._particleDeadHandler)},e.resize=function(t,e){},e.destroy=function(){this.remove(),this.pool.destroy(),this.pool=null,this.element=null,this.stroke=null},e.remove=function(t){this.parent.removeEventListener("PROTON_UPDATE",this._protonUpdateHandler),this.parent.removeEventListener("PROTON_UPDATE_AFTER",this._protonUpdateAfterHandler),this.parent.removeEventListener("EMITTER_ADDED",this._emitterAddedHandler),this.parent.removeEventListener("EMITTER_REMOVED",this._emitterRemovedHandler),this.parent.removeEventListener("PARTICLE_CREATED",this._particleCreatedHandler),this.parent.removeEventListener("PARTICLE_UPDATE",this._particleUpdateHandler),this.parent.removeEventListener("PARTICLE_DEAD",this._particleDeadHandler),this.parent=null},e.onProtonUpdate=function(){},e.onProtonUpdateAfter=function(){},e.onEmitterAdded=function(t){},e.onEmitterRemoved=function(t){},e.onParticleCreated=function(t){},e.onParticleUpdate=function(t){},e.onParticleDead=function(t){},t}(),mt=function(t){function i(e){var i;return(i=t.call(this,e)||this).stroke=void 0,i.context=void 0,i.bufferCache=void 0,i.name=void 0,i.stroke=null,i.context=i.element.getContext("2d"),i.bufferCache={},i.name="CanvasRenderer",i}e(i,t);var n=i.prototype;return n.resize=function(t,e){this.element.width=t,this.element.height=e},n.onProtonUpdate=function(){this.context.clearRect(0,0,this.element.width,this.element.height)},n.onParticleCreated=function(t){t.body?f(t.body,this.addImg2Body,t):t.color=t.color||"#ff0000"},n.onParticleUpdate=function(t){t.body?ft(t.body)&&this.drawImage(t):this.drawCircle(t)},n.onParticleDead=function(t){t.body=null},n.addImg2Body=function(t,e){e.body=t},n.drawImage=function(t){var e=t.body.width*t.scale|0,i=t.body.height*t.scale|0,n=t.p.x-e/2,r=t.p.y-i/2;if(t.color){t.data.buffer||(t.data.buffer=this.createBuffer(t.body));var a=t.data.buffer.getContext("2d");a.clearRect(0,0,t.data.buffer.width,t.data.buffer.height),a.globalAlpha=t.alpha,a.drawImage(t.body,0,0),a.globalCompositeOperation="source-atop",a.fillStyle=M.rgbToHex(t.rgb),a.fillRect(0,0,t.data.buffer.width,t.data.buffer.height),a.globalCompositeOperation="source-over",a.globalAlpha=1,this.context.drawImage(t.data.buffer,0,0,t.data.buffer.width,t.data.buffer.height,n,r,e,i)}else this.context.save(),this.context.globalAlpha=t.alpha,this.context.translate(t.p.x,t.p.y),this.context.rotate(T.degreeTransform(t.rotation)),this.context.translate(-t.p.x,-t.p.y),this.context.drawImage(t.body,0,0,t.body.width,t.body.height,n,r,e,i),this.context.globalAlpha=1,this.context.restore()},n.drawCircle=function(t){t.rgb?this.context.fillStyle="rgba("+t.rgb.r+","+t.rgb.g+","+t.rgb.b+","+t.alpha+")":this.context.fillStyle=t.color,this.context.beginPath(),this.context.arc(t.p.x,t.p.y,t.radius,0,2*Math.PI,!0),this.stroke&&(this.context.strokeStyle=this.stroke.color,this.context.lineWidth=this.stroke.thinkness,this.context.stroke()),this.context.closePath(),this.context.fill()},n.createBuffer=function(t){if(ft(t)){var e=t.width+"_"+t.height,i=this.bufferCache[e];return i||((i=document.createElement("canvas")).width=t.width,i.height=t.height,this.bufferCache[e]=i),i}},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.bufferCache=null},i}(yt),vt=function(t){function i(e){var i;return(i=t.call(this,e)||this).stroke=null,i.transform3d=!1,i.pool.create=function(t,e){return i.createBody(t,e)},i.addImg2Body=i.addImg2Body.bind(i),i.name="DomRenderer",i}e(i,t);var n=i.prototype;return n.onParticleCreated=function(t){t.body?f(t.body,this.addImg2Body,t):(t.body=this.pool.get(this.circleConf,t),this.element.appendChild(t.body))},n.onParticleUpdate=function(t){this.bodyReady(t)&&(this.transform3d?l.transform3d(t.body,t.p.x,t.p.y,t.scale,t.rotation):l.transform(t.body,t.p.x,t.p.y,t.scale,t.rotation),t.body.style.opacity=t.alpha,t.body.isCircle&&(t.body.style.backgroundColor=t.color||"#ff0000"))},n.onParticleDead=function(t){this.bodyReady(t)&&(this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null)},n.bodyReady=function(t){return"object"==typeof t.body&&t.body&&!t.body.isInner},n.addImg2Body=function(t,e){e.dead||(e.body=this.pool.get(t,e),l.resize(e.body,t.width,t.height),this.element.appendChild(e.body))},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t,e)},n.createCircle=function(t){var e=l.createDiv(t.id+"_dom",2*t.radius,2*t.radius);return e.style.borderRadius=t.radius+"px",this.stroke&&(e.style.borderColor=this.stroke.color,e.style.borderWidth=this.stroke.thinkness+"px"),e.isCircle=!0,e},n.createSprite=function(t,e){var i="string"==typeof t?t:t.src,n=l.createDiv(e.id+"_dom",t.width,t.height);return n.style.backgroundImage="url("+i+")",n},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null},i}(yt),bt=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.name="EaselRenderer",n}e(i,t);var n=i.prototype;return n.onParticleCreated=function(t){t.body?this.createSprite(t):this.createCircle(t),this.element.addChild(t.body)},n.onParticleUpdate=function(t){t.body&&(t.body.x=t.p.x,t.body.y=t.p.y,t.body.alpha=t.alpha,t.body.scaleX=t.body.scaleY=t.scale,t.body.rotation=t.rotation)},n.onParticleDead=function(t){t.body&&(t.body.parent&&t.body.parent.removeChild(t.body),this.pool.expire(t.body),t.body=null),t.graphics&&this.pool.expire(t.graphics)},n.createSprite=function(t){t.body=this.pool.get(t.body),t.body.parent||t.body.image&&(t.body.regX=t.body.image.width/2,t.body.regY=t.body.image.height/2)},n.createCircle=function(t){var e=this.pool.get(window.createjs.Graphics);this.stroke&&(gt(this.stroke)?e.beginStroke(this.stroke):e.beginStroke("#000000")),e.beginFill(t.color||"#ff0000").drawCircle(0,0,t.radius);var i=this.pool.get(window.createjs.Shape,[e]);t.body=i,t.graphics=e},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null},i}(yt),xt=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).context=n.element.getContext("2d"),n.imageData=null,n.rectangle=i,n.createImageData(i),n.name="PixelRenderer",n}e(i,t);var n=i.prototype;return n.resize=function(t,e){this.element.width=t,this.element.height=e},n.createImageData=function(t){this.rectangle=t||new F(0,0,this.element.width,this.element.height),this.imageData=this.context.createImageData(this.rectangle.width,this.rectangle.height),this.context.putImageData(this.imageData,this.rectangle.x,this.rectangle.y)},n.onProtonUpdate=function(){this.context.clearRect(this.rectangle.x,this.rectangle.y,this.rectangle.width,this.rectangle.height),this.imageData=this.context.getImageData(this.rectangle.x,this.rectangle.y,this.rectangle.width,this.rectangle.height)},n.onProtonUpdateAfter=function(){this.context.putImageData(this.imageData,this.rectangle.x,this.rectangle.y)},n.onParticleCreated=function(t){},n.onParticleUpdate=function(t){this.imageData&&this.setPixel(this.imageData,t.p.x-this.rectangle.x|0,t.p.y-this.rectangle.y|0,t)},n.setPixel=function(t,e,i,n){var r=n.rgb;if(!(e<0||e>this.element.width||i<0||i>this.element.height)){var a=4*((i|0)*t.width+(e|0));t.data[a]=r.r,t.data[a+1]=r.g,t.data[a+2]=r.b,t.data[a+3]=255*n.alpha}},n.onParticleDead=function(t){},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},i}(yt),Et=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.color=!1,n.setColor=!1,n.blendMode=null,n.pool.create=function(t,e){return n.createBody(t,e)},n.setPIXI(window.PIXI),n.name="PixiRenderer",n}e(i,t);var n=i.prototype;return n.setPIXI=function(t){try{ut=t||{Sprite:{}},this.createFromImage=ut.Sprite.from||ut.Sprite.fromImage}catch(t){}},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.body?t.body=this.pool.get(t.body,t):t.body=this.pool.get(this.circleConf,t),this.blendMode&&(t.body.blendMode=this.blendMode),this.element.addChild(t.body)},n.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=M.getHex16FromParticle(t))},n.onParticleDead=function(t){this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null},n.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*T.PI_180},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},n.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new ut.Sprite(t);return e.anchor.x=.5,e.anchor.y=.5,e},n.createCircle=function(t){var e=new ut.Graphics;if(this.stroke){var i=gt(this.stroke)?this.stroke:0;e.beginStroke(i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},n.destroy=function(e){t.prototype.destroy.call(this);for(var i=e.length;i--;){var n=e[i];n.body&&this.element.removeChild(n.body)}},i}(yt),Pt=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(L.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?L.set(t,this.mats[0]):L.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?L.set(t,this.mats[0]):L.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),At=function(t){function i(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(i),i.name="WebGLRenderer",i}e(i,t);var n=i.prototype;return n.init=function(e){t.prototype.init.