diff --git a/dist/melonjs.js b/dist/melonjs.js
index 192ef4dfcc..acc2632f6a 100644
--- a/dist/melonjs.js
+++ b/dist/melonjs.js
@@ -1,5 +1,5 @@
/*!
- * melonJS Game Engine - v9.1.1
+ * melonJS Game Engine - v9.1.2
* http://www.melonjs.org
* melonjs is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
@@ -10681,6 +10681,37 @@
return this;
},
+ /**
+ * Shifts the Polygon to the given position vector.
+ * @name shift
+ * @memberOf me.Polygon
+ * @function
+ * @param {me.Vector2d} position
+ */
+ /**
+ * Shifts the Polygon to the given x, y position.
+ * @name shift
+ * @memberOf me.Polygon
+ * @function
+ * @param {Number} x
+ * @param {Number} y
+ */
+ shift: function shift() {
+ var _x, _y;
+ if (arguments.length === 2) {
+ // x, y
+ _x = arguments[0];
+ _y = arguments[1];
+ } else {
+ // vector
+ _x = arguments[0].x;
+ _y = arguments[0].y;
+ }
+ this.pos.x = _x;
+ this.pos.y = _y;
+ this.updateBounds();
+ },
+
/**
* Returns true if the polygon contains the given point.
* (Note: it is highly recommended to first do a hit test on the corresponding
@@ -10892,67 +10923,6 @@
return this.setShape(rect.pos.x, rect.pos.y, rect.width, rect.height);
},
- /**
- * translate the rect by the specified offset
- * @name translate
- * @memberOf me.Rect.prototype
- * @function
- * @param {Number} x x offset
- * @param {Number} y y offset
- * @return {me.Rect} this rectangle
- */
- /**
- * translate the rect by the specified vector
- * @name translate
- * @memberOf me.Rect.prototype
- * @function
- * @param {me.Vector2d} v vector offset
- * @return {me.Rect} this rectangle
- */
- translate : function () {
- var _x, _y;
-
- if (arguments.length === 2) {
- // x, y
- _x = arguments[0];
- _y = arguments[1];
- } else {
- // vector
- _x = arguments[0].x;
- _y = arguments[0].y;
- }
-
- this.pos.x += _x;
- this.pos.y += _y;
-
- return this;
- },
-
- /**
- * Shifts the rect to the given position vector.
- * @name shift
- * @memberOf me.Rect
- * @function
- * @param {me.Vector2d} position
- */
- /**
- * Shifts the rect to the given x, y position.
- * @name shift
- * @memberOf me.Rect
- * @function
- * @param {Number} x
- * @param {Number} y
- */
- shift : function () {
- if (arguments.length === 2) {
- // x, y
- this.pos.set(arguments[0], arguments[1]);
- } else {
- // vector
- this.pos.setV(arguments[0]);
- }
- },
-
/**
* merge this rectangle with another one
* @name union
@@ -28404,16 +28374,16 @@
}
// set pause/stop action on losing focus
- window.addEventListener("blur", function () {
+ window.addEventListener("blur", (function () {
if (this.stopOnBlur) {
state$1.stop(true);
}
if (this.pauseOnBlur) {
state$1.pause(true);
}
- }, false);
+ }).bind(this), false);
// set restart/resume action on gaining focus
- window.addEventListener("focus", function () {
+ window.addEventListener("focus", (function () {
if (this.stopOnBlur) {
state$1.restart(true);
}
@@ -28424,7 +28394,7 @@
if (this.autoFocus) {
this.focus();
}
- }, false);
+ }).bind(this), false);
// Set the name of the hidden property and the change event for visibility
@@ -28448,7 +28418,7 @@
if (typeof (visibilityChange) === "string") {
// add the corresponding event listener
document.addEventListener(visibilityChange,
- function () {
+ (function () {
if (document[hidden]) {
if (this.stopOnBlur) {
state$1.stop(true);
@@ -28464,7 +28434,7 @@
state$1.resume(true);
}
}
- }, false
+ }).bind(this), false
);
}
},
@@ -32519,10 +32489,10 @@
* this can be overridden by the plugin
* @public
* @type String
- * @default "9.1.1"
+ * @default "9.1.2"
* @name me.plugin.Base#version
*/
- this.version = "9.1.1";
+ this.version = "9.1.2";
}
}),
@@ -36773,7 +36743,7 @@
* @name version
* @type {string}
*/
- var version = "9.1.1";
+ var version = "9.1.2";
/**
diff --git a/dist/melonjs.min.js b/dist/melonjs.min.js
index 18814a51b2..d15afe18bd 100644
--- a/dist/melonjs.min.js
+++ b/dist/melonjs.min.js
@@ -1,5 +1,5 @@
/*!
- * melonJS Game Engine - v9.1.1
+ * melonJS Game Engine - v9.1.2
* http://www.melonjs.org
* melonjs is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
@@ -33,4 +33,4 @@
*
* MIT License
*/
-function(){var t;HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var i=e._howls.length-1;i>=0;i--)e._howls[i].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,i){var n=this;return n.ctx&&n.ctx.listener?(e="number"!=typeof e?n._pos[1]:e,i="number"!=typeof i?n._pos[2]:i,"number"!=typeof t?n._pos:(n._pos=[t,e,i],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],Howler.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],Howler.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],Howler.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},HowlerGlobal.prototype.orientation=function(t,e,i,n,r,o){var s=this;if(!s.ctx||!s.ctx.listener)return s;var a=s._orientation;return e="number"!=typeof e?a[1]:e,i="number"!=typeof i?a[2]:i,n="number"!=typeof n?a[3]:n,r="number"!=typeof r?a[4]:r,o="number"!=typeof o?a[5]:o,"number"!=typeof t?a:(s._orientation=[t,e,i,n,r,o],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(n,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,i,n,r,o),s)},Howl.prototype.init=(t=Howl.prototype.init,function(e){var i=this;return i._orientation=e.orientation||[1,0,0],i._stereo=e.stereo||null,i._pos=e.pos||null,i._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},i._onstereo=e.onstereo?[{fn:e.onstereo}]:[],i._onpos=e.onpos?[{fn:e.onpos}]:[],i._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}),Howl.prototype.stereo=function(t,i){var n=this;if(!n._webAudio)return n;if("loaded"!==n._state)return n._queue.push({event:"stereo",action:function(){n.stereo(t,i)}}),n;var r=void 0===Howler.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof t)return n._stereo;n._stereo=t,n._pos=[t,0,0]}for(var o=n._getSoundIds(i),s=0;st.x?this._x:t.x,this._y>t.y?this._y:t.y)},e.prototype.floor=function(){return new e(Math.floor(this._x),Math.floor(this._y),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.floorSelf=function(){return this._set(Math.floor(this._x),Math.floor(this._y))},e.prototype.ceil=function(){return new e(Math.ceil(this._x),Math.ceil(this._y),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.ceilSelf=function(){return this._set(Math.ceil(this._x),Math.ceil(this._y))},e.prototype.negate=function(){return new e(-this._x,-this._y,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.negateSelf=function(){return this._set(-this._x,-this._y)},e.prototype.copy=function(t){return this._set(t.x,t.y)},e.prototype.equals=function(t){return this._x===t.x&&this._y===t.y},e.prototype.perp=function(){return this._set(this._y,-this._x)},e.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this._x-i,o=this._y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n)},e.prototype.dotProduct=function(t){return this._x*t.x+this._y*t.y},e.prototype.lerp=function(t,e){return this._x+=(t.x-this._x)*e,this._y+=(t.y-this._y)*e,this},e.prototype.distance=function(t){return Math.sqrt((this._x-t.x)*(this._x-t.x)+(this._y-t.y)*(this._y-t.y))},e.prototype.clone=function(){return pool.pull("ObservableVector2d",this._x,this._y,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.toVector2d=function(){return pool.pull("Vector2d",this._x,this._y)},e.prototype.toString=function(){return"x:"+this._x+",y:"+this._y},Object.defineProperties(e.prototype,i),e}(Vector2d),Vector3d=function(){for(var t,e=[],i=arguments.length;i--;)e[i]=arguments[i];(t=this).onResetEvent.apply(t,e)};Vector3d.prototype.onResetEvent=function(t,e,i){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),this.x=t,this.y=e,this.z=i,this},Vector3d.prototype._set=function(t,e,i){return void 0===i&&(i=0),this.x=t,this.y=e,this.z=i,this},Vector3d.prototype.set=function(t,e,i){if(t!==+t||e!==+e||void 0!==i&&i!==+i)throw new Error("invalid x, y, z parameters (not a number)");return this._set(t,e,i)},Vector3d.prototype.setZero=function(){return this.set(0,0,0)},Vector3d.prototype.setV=function(t){return this._set(t.x,t.y,t.z)},Vector3d.prototype.add=function(t){return this._set(this.x+t.x,this.y+t.y,this.z+(t.z||0))},Vector3d.prototype.sub=function(t){return this._set(this.x-t.x,this.y-t.y,this.z-(t.z||0))},Vector3d.prototype.scale=function(t,e,i){return e=void 0!==e?e:t,this._set(this.x*t,this.y*e,this.z*(i||1))},Vector3d.prototype.scaleV=function(t){return this.scale(t.x,t.y,t.z)},Vector3d.prototype.toIso=function(){return this._set(this.x-this.y,.5*(this.x+this.y),this.z)},Vector3d.prototype.to2d=function(){return this._set(this.y+this.x/2,this.y-this.x/2,this.z)},Vector3d.prototype.div=function(t){return this._set(this.x/t,this.y/t,this.z/t)},Vector3d.prototype.abs=function(){return this._set(this.x<0?-this.x:this.x,this.y<0?-this.y:this.y,this.z<0?-this.z:this.z)},Vector3d.prototype.clamp=function(t,e){return new Vector3d(clamp(this.x,t,e),clamp(this.y,t,e),clamp(this.z,t,e))},Vector3d.prototype.clampSelf=function(t,e){return this._set(clamp(this.x,t,e),clamp(this.y,t,e),clamp(this.z,t,e))},Vector3d.prototype.minV=function(t){var e=t.z||0;return this._set(this.xt.x?this.x:t.x,this.y>t.y?this.y:t.y,this.z>e?this.z:e)},Vector3d.prototype.floor=function(){return new Vector3d(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z))},Vector3d.prototype.floorSelf=function(){return this._set(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z))},Vector3d.prototype.ceil=function(){return new Vector3d(Math.ceil(this.x),Math.ceil(this.y),Math.ceil(this.z))},Vector3d.prototype.ceilSelf=function(){return this._set(Math.ceil(this.x),Math.ceil(this.y),Math.ceil(this.z))},Vector3d.prototype.negate=function(){return new Vector3d(-this.x,-this.y,-this.z)},Vector3d.prototype.negateSelf=function(){return this._set(-this.x,-this.y,-this.z)},Vector3d.prototype.copy=function(t){return this._set(t.x,t.y,t.z||0)},Vector3d.prototype.equals=function(){var t,e,i;return arguments.length>=2?(t=arguments[0],e=arguments[1],i=arguments[2]):(t=arguments[0].x,e=arguments[0].y,i=arguments[0].z),void 0===i&&(i=this.z),this.x===t&&this.y===e&&this.z===i},Vector3d.prototype.normalize=function(){return this.div(this.length()||1)},Vector3d.prototype.perp=function(){return this._set(this.y,-this.x,this.z)},Vector3d.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this.x-i,o=this.y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n,this.z)},Vector3d.prototype.dotProduct=function(t){return this.x*t.x+this.y*t.y+this.z*(void 0!==t.z?t.z:this.z)},Vector3d.prototype.length2=function(){return this.dotProduct(this)},Vector3d.prototype.length=function(){return Math.sqrt(this.length2())},Vector3d.prototype.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},Vector3d.prototype.distance=function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-(t.z||0);return Math.sqrt(e*e+i*i+n*n)},Vector3d.prototype.angle=function(t){return Math.acos(clamp(this.dotProduct(t)/(this.length()*t.length()),-1,1))},Vector3d.prototype.project=function(t){var e=this.dotProduct(t)/t.length2();return this.scale(e,e,e)},Vector3d.prototype.projectN=function(t){var e=this.dotProduct(t)/t.length2();return this.scale(e,e,e)},Vector3d.prototype.clone=function(){return pool.pull("Vector3d",this.x,this.y,this.z)},Vector3d.prototype.toString=function(){return"x:"+this.x+",y:"+this.y+",z:"+this.z};var ObservableVector3d=function(t){function e(e,i,n,r){if(void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),t.call(this,e,i,n),void 0===r)throw new Error("undefined `onUpdate` callback");this.setCallback(r.onUpdate,r.scope)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var i={x:{configurable:!0},y:{configurable:!0},z:{configurable:!0}};return e.prototype.onResetEvent=function(t,e,i,n){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),this.setMuted(t,e,i),void 0!==n&&this.setCallback(n.onUpdate,n.scope),this},i.x.get=function(){return this._x},i.x.set=function(t){var e=this.onUpdate.call(this.scope,t,this._y,this._z,this._x,this._y,this._z);this._x=e&&"x"in e?e.x:t},i.y.get=function(){return this._y},i.y.set=function(t){var e=this.onUpdate.call(this.scope,this._x,t,this._z,this._x,this._y,this._z);this._y=e&&"y"in e?e.y:t},i.z.get=function(){return this._z},i.z.set=function(t){var e=this.onUpdate.call(this.scope,this._x,this._y,t,this._x,this._y,this._z);this._z=e&&"z"in e?e.z:t},e.prototype._set=function(t,e,i){var n=this.onUpdate.call(this.scope,t,e,i,this._x,this._y,this._z);return n&&"x"in n&&"y"in n&&"z"in n?(this._x=n.x,this._y=n.y,this._z=n.z):(this._x=t,this._y=e,this._z=i||0),this},e.prototype.setMuted=function(t,e,i){return this._x=t,this._y=e,this._z=i||0,this},e.prototype.setCallback=function(t,e){if(void 0===e&&(e=null),"function"!=typeof t)throw new Error("invalid `onUpdate` callback");return this.onUpdate=t,this.scope=e,this},e.prototype.add=function(t){return this._set(this._x+t.x,this._y+t.y,this._z+(t.z||0))},e.prototype.sub=function(t){return this._set(this._x-t.x,this._y-t.y,this._z-(t.z||0))},e.prototype.scale=function(t,e,i){return e=void 0!==e?e:t,this._set(this._x*t,this._y*e,this._z*(i||1))},e.prototype.scaleV=function(t){return this._set(this._x*t.x,this._y*t.y,this._z*(t.z||1))},e.prototype.div=function(t){return this._set(this._x/t,this._y/t,this._z/t)},e.prototype.abs=function(){return this._set(this._x<0?-this._x:this._x,this._y<0?-this._y:this._y,this._Z<0?-this._z:this._z)},e.prototype.clamp=function(t,i){return new e(clamp(this._x,t,i),clamp(this._y,t,i),clamp(this._z,t,i),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.clampSelf=function(t,e){return this._set(clamp(this._x,t,e),clamp(this._y,t,e),clamp(this._z,t,e))},e.prototype.minV=function(t){var e=t.z||0;return this._set(this._xt.x?this._x:t.x,this._y>t.y?this._y:t.y,this._z>e?this._z:e)},e.prototype.floor=function(){return new e(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.floorSelf=function(){return this._set(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))},e.prototype.ceil=function(){return new e(Math.ceil(this._x),Math.ceil(this._y),Math.ceil(this._z),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.ceilSelf=function(){return this._set(Math.ceil(this._x),Math.ceil(this._y),Math.ceil(this._z))},e.prototype.negate=function(){return new e(-this._x,-this._y,-this._z,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.negateSelf=function(){return this._set(-this._x,-this._y,-this._z)},e.prototype.copy=function(t){return this._set(t.x,t.y,t.z||0)},e.prototype.equals=function(t){return this._x===t.x&&this._y===t.y&&this._z===(t.z||this._z)},e.prototype.perp=function(){return this._set(this._y,-this._x,this._z)},e.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this.x-i,o=this.y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n,this.z)},e.prototype.dotProduct=function(t){return this._x*t.x+this._y*t.y+this._z*(t.z||1)},e.prototype.lerp=function(t,e){return this._x+=(t.x-this._x)*e,this._y+=(t.y-this._y)*e,this._z+=(t.z-this._z)*e,this},e.prototype.distance=function(t){var e=this._x-t.x,i=this._y-t.y,n=this._z-(t.z||0);return Math.sqrt(e*e+i*i+n*n)},e.prototype.clone=function(){return pool.pull("ObservableVector3d",this._x,this._y,this._z,{onUpdate:this.onUpdate})},e.prototype.toVector3d=function(){return pool.pull("Vector3d",this._x,this._y,this._z)},e.prototype.toString=function(){return"x:"+this._x+",y:"+this._y+",z:"+this._z},Object.defineProperties(e.prototype,i),e}(Vector3d),earcut$2={exports:{}};function earcut(t,e,i){i=i||2;var n,r,o,s,a,h,l,u=e&&e.length,c=u?e[0]*i:t.length,d=linkedList(t,0,c,i,!0),p=[];if(!d||d.next===d.prev)return p;if(u&&(d=eliminateHoles(t,e,d,i)),t.length>80*i){n=o=t[0],r=s=t[1];for(var f=i;fo&&(o=a),h>s&&(s=h);l=0!==(l=Math.max(o-n,s-r))?1/l:0}return earcutLinked(d,p,i,n,r,l),p}function linkedList(t,e,i,n,r){var o,s;if(r===signedArea(t,e,i,n)>0)for(o=e;o=e;o-=n)s=insertNode(o,t[o],t[o+1],s);return s&&equals(s,s.next)&&(removeNode(s),s=s.next),s}function filterPoints(t,e){if(!t)return t;e||(e=t);var i,n=t;do{if(i=!1,n.steiner||!equals(n,n.next)&&0!==area(n.prev,n,n.next))n=n.next;else{if(removeNode(n),(n=e=n.prev)===n.next)break;i=!0}}while(i||n!==e);return e}function earcutLinked(t,e,i,n,r,o,s){if(t){!s&&o&&indexCurve(t,n,r,o);for(var a,h,l=t;t.prev!==t.next;)if(a=t.prev,h=t.next,o?isEarHashed(t,n,r,o):isEar(t))e.push(a.i/i),e.push(t.i/i),e.push(h.i/i),removeNode(t),t=h.next,l=h.next;else if((t=h)===l){s?1===s?earcutLinked(t=cureLocalIntersections(filterPoints(t),e,i),e,i,n,r,o,2):2===s&&splitEarcut(t,e,i,n,r,o):earcutLinked(filterPoints(t),e,i,n,r,o,1);break}}}function isEar(t){var e=t.prev,i=t,n=t.next;if(area(e,i,n)>=0)return!1;for(var r=t.next.next;r!==t.prev;){if(pointInTriangle(e.x,e.y,i.x,i.y,n.x,n.y,r.x,r.y)&&area(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function isEarHashed(t,e,i,n){var r=t.prev,o=t,s=t.next;if(area(r,o,s)>=0)return!1;for(var a=r.xo.x?r.x>s.x?r.x:s.x:o.x>s.x?o.x:s.x,u=r.y>o.y?r.y>s.y?r.y:s.y:o.y>s.y?o.y:s.y,c=zOrder(a,h,e,i,n),d=zOrder(l,u,e,i,n),p=t.prevZ,f=t.nextZ;p&&p.z>=c&&f&&f.z<=d;){if(p!==t.prev&&p!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,f!==t.prev&&f!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&area(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;p&&p.z>=c;){if(p!==t.prev&&p!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;f&&f.z<=d;){if(f!==t.prev&&f!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&area(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function cureLocalIntersections(t,e,i){var n=t;do{var r=n.prev,o=n.next.next;!equals(r,o)&&intersects(r,n,n.next,o)&&locallyInside(r,o)&&locallyInside(o,r)&&(e.push(r.i/i),e.push(n.i/i),e.push(o.i/i),removeNode(n),removeNode(n.next),n=t=o),n=n.next}while(n!==t);return filterPoints(n)}function splitEarcut(t,e,i,n,r,o){var s=t;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&isValidDiagonal(s,a)){var h=splitPolygon(s,a);return s=filterPoints(s,s.next),h=filterPoints(h,h.next),earcutLinked(s,e,i,n,r,o),void earcutLinked(h,e,i,n,r,o)}a=a.next}s=s.next}while(s!==t)}function eliminateHoles(t,e,i,n){var r,o,s,a=[];for(r=0,o=e.length;r=n.next.y&&n.next.y!==n.y){var a=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(a<=r&&a>s){if(s=a,a===r){if(o===n.y)return n;if(o===n.next.y)return n.next}i=n.x=n.x&&n.x>=u&&r!==n.x&&pointInTriangle(oi.x||n.x===i.x&§orContainsSector(i,n)))&&(i=n,d=h)),n=n.next}while(n!==l);return i}function sectorContainsSector(t,e){return area(t.prev,t,e.prev)<0&&area(e.next,t,t.next)<0}function indexCurve(t,e,i,n){var r=t;do{null===r.z&&(r.z=zOrder(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,sortLinked(r)}function sortLinked(t){var e,i,n,r,o,s,a,h,l=1;do{for(i=t,t=null,o=null,s=0;i;){for(s++,n=i,a=0,e=0;e0||h>0&&n;)0!==a&&(0===h||!n||i.z<=n.z)?(r=i,i=i.nextZ,a--):(r=n,n=n.nextZ,h--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;i=n}o.nextZ=null,l*=2}while(s>1);return t}function zOrder(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function getLeftmost(t){var e=t,i=t;do{(e.x=0&&(t-s)*(n-a)-(i-s)*(e-a)>=0&&(i-s)*(o-a)-(r-s)*(n-a)>=0}function isValidDiagonal(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!intersectsPolygon(t,e)&&(locallyInside(t,e)&&locallyInside(e,t)&&middleInside(t,e)&&(area(t.prev,t,e.prev)||area(t,e.prev,e))||equals(t,e)&&area(t.prev,t,t.next)>0&&area(e.prev,e,e.next)>0)}function area(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function equals(t,e){return t.x===e.x&&t.y===e.y}function intersects(t,e,i,n){var r=sign(area(t,e,i)),o=sign(area(t,e,n)),s=sign(area(i,n,t)),a=sign(area(i,n,e));return r!==o&&s!==a||(!(0!==r||!onSegment(t,i,e))||(!(0!==o||!onSegment(t,n,e))||(!(0!==s||!onSegment(i,t,n))||!(0!==a||!onSegment(i,e,n)))))}function onSegment(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function sign(t){return t>0?1:t<0?-1:0}function intersectsPolygon(t,e){var i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&intersects(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}function locallyInside(t,e){return area(t.prev,t,t.next)<0?area(t,e,t.next)>=0&&area(t,t.prev,e)>=0:area(t,e,t.prev)<0||area(t,t.next,e)<0}function middleInside(t,e){var i=t,n=!1,r=(t.x+e.x)/2,o=(t.y+e.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}function splitPolygon(t,e){var i=new Node$1(t.i,t.x,t.y),n=new Node$1(e.i,e.x,e.y),r=t.next,o=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,o.next=n,n.prev=o,n}function insertNode(t,e,i,n){var r=new Node$1(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function removeNode(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Node$1(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(t,e,i,n){for(var r=0,o=e,s=i-n;o0&&(n+=t[r-1].length,i.holes.push(n))}return i};var earcut$1=earcut$2.exports;!function(){function t(t,e,i){Object.keys(i).forEach((function(n){if(e[n]=i[n],"function"!=typeof i[n])throw new TypeError("extend: Method `"+n+"` is not a function");Object.defineProperty(t.prototype,n,{configurable:!0,value:i[n]})}))}function e(t,e,i){return t.prototype[e].apply(this,i)}var i=function(){Object.apply(this,arguments)};(i.prototype=Object.create(Object.prototype)).constructor=i,Object.defineProperty(i,"extend",{value:function i(){for(var n=arguments,r={},o=new Array(arguments.length),s=0;se!=c>e&&t<(d-u)*(e-l)/(c-l)+u&&(i=!i)}return i},getBounds:function(){return void 0===this._bounds&&(this._bounds=pool.pull("Bounds")),this._bounds},updateBounds:function(){var t=this.getBounds();return t.update(this.points),t.translate(this.pos),t},clone:function(){var t=[];return this.points.forEach((function(e){t.push(e.clone())})),new Polygon(this.pos.x,this.pos.y,t)}}),Rect=Polygon.extend({init:function(t,e,i,n){this._super(Polygon,"init",[t,e,[new Vector2d(0,0),new Vector2d(i,0),new Vector2d(i,n),new Vector2d(0,n)]]),this.shapeType="Rectangle"},onResetEvent:function(t,e,i,n){this.setShape(t,e,i,n)},setShape:function(t,e,i,n){var r=i;return this.pos.set(t,e),4===arguments.length&&((r=this.points)[0].set(0,0),r[1].set(i,0),r[2].set(i,n),r[3].set(0,n)),this.setVertices(r),this},resize:function(t,e){return this.width=t,this.height=e,this},scale:function(t,e){return void 0===e&&(e=t),this.width*=t,this.height*=e,this},clone:function(){return new Rect(this.pos.x,this.pos.y,this.width,this.height)},copy:function(t){return this.setShape(t.pos.x,t.pos.y,t.width,t.height)},translate:function(){var t,e;return 2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.pos.x+=t,this.pos.y+=e,this},shift:function(){2===arguments.length?this.pos.set(arguments[0],arguments[1]):this.pos.setV(arguments[0])},union:function(t){var e=Math.min(this.left,t.left),i=Math.min(this.top,t.top);return this.resize(Math.max(this.right,t.right)-e,Math.max(this.bottom,t.bottom)-i),this.pos.set(e,i),this},overlaps:function(t){return this.left=this.left&&e<=this.right&&i>=this.top&&n<=this.bottom},equals:function(t){return t.left===this.left&&t.right===this.right&&t.top===this.top&&t.bottom===this.bottom},isFinite:function(){return isFinite(this.pos.x)&&isFinite(this.pos.y)&&isFinite(this.width)&&isFinite(this.height)},toPolygon:function(){return new Polygon(this.pos.x,this.pos.y,this.points)}});Object.defineProperty(Rect.prototype,"left",{get:function(){return this.pos.x},configurable:!0}),Object.defineProperty(Rect.prototype,"right",{get:function(){var t=this.width;return this.pos.x+t||t},configurable:!0}),Object.defineProperty(Rect.prototype,"top",{get:function(){return this.pos.y},configurable:!0}),Object.defineProperty(Rect.prototype,"bottom",{get:function(){var t=this.height;return this.pos.y+t||t},configurable:!0}),Object.defineProperty(Rect.prototype,"width",{get:function(){return this.points[2].x},set:function(t){this.points[1].x=this.points[2].x=t,this.recalc(),this.updateBounds()},configurable:!0}),Object.defineProperty(Rect.prototype,"height",{get:function(){return this.points[2].y},set:function(t){this.points[2].y=this.points[3].y=t,this.recalc(),this.updateBounds()},configurable:!0}),Object.defineProperty(Rect.prototype,"centerX",{get:function(){return isFinite(this.width)?this.pos.x+this.width/2:this.width},set:function(t){this.pos.x=t-this.width/2},configurable:!0}),Object.defineProperty(Rect.prototype,"centerY",{get:function(){return isFinite(this.height)?this.pos.y+this.height/2:this.height},set:function(t){this.pos.y=t-this.height/2},configurable:!0});var _keyStatus={},_keyLock={},_keyLocked={},_keyRefs={},_preventDefaultForKeys={},_keyBindings={},keyDownEvent=function(t,e,i){e=e||t.keyCode||t.button;var n=_keyBindings[e];if(event.publish(event.KEYDOWN,[n,e,!n||!_keyLocked[n]]),n){if(!_keyLocked[n]){var r=void 0!==i?i:e;_keyRefs[n][r]||(_keyStatus[n]++,_keyRefs[n][r]=!0)}return!_preventDefaultForKeys[e]||"function"!=typeof t.preventDefault||t.preventDefault()}return!0},keyUpEvent=function(t,e,i){e=e||t.keyCode||t.button;var n=_keyBindings[e];if(event.publish(event.KEYUP,[n,e]),n){var r=void 0!==i?i:e;return _keyRefs[n][r]=void 0,_keyStatus[n]>0&&_keyStatus[n]--,_keyLocked[n]=!1,!_preventDefaultForKeys[e]||"function"!=typeof t.preventDefault||t.preventDefault()}return!0},keyBoardEventTarget=null,KEY={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:42,INSERT:45,DELETE:46,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,NUM9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,WINDOW_KEY:91,NUMPAD0:96,NUMPAD1:97,NUMPAD2:98,NUMPAD3:99,NUMPAD4:100,NUMPAD5:101,NUMPAD6:102,NUMPAD7:103,NUMPAD8:104,NUMPAD9:105,MULTIPLY:106,ADD:107,SUBSTRACT:109,DECIMAL:110,DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,TILDE:126,NUM_LOCK:144,SCROLL_LOCK:145,SEMICOLON:186,PLUS:187,COMMA:188,MINUS:189,PERIOD:190,FORWAND_SLASH:191,GRAVE_ACCENT:192,OPEN_BRACKET:219,BACK_SLASH:220,CLOSE_BRACKET:221,SINGLE_QUOTE:222};function initKeyboardEvent(){null===keyBoardEventTarget&&!1===device$1.isMobile&&((keyBoardEventTarget=window).addEventListener("keydown",keyDownEvent,!1),keyBoardEventTarget.addEventListener("keyup",keyUpEvent,!1))}function isKeyPressed(t){return!(!_keyStatus[t]||_keyLocked[t])&&(_keyLock[t]&&(_keyLocked[t]=!0),!0)}function keyStatus(t){return _keyStatus[t]>0}function triggerKeyEvent(t,e,i){!0===e?keyDownEvent({},t,i):keyUpEvent({},t,i)}function bindKey(t,e,i,n){void 0===n&&(n=preventDefault),_keyBindings[t]=e,_preventDefaultForKeys[t]=n,_keyStatus[e]=0,_keyLock[e]=i||!1,_keyLocked[e]=!1,_keyRefs[e]={}}function getBindingKey(t){return _keyBindings[t]}function unlockKey(t){_keyLocked[t]=!1}function unbindKey(t){var e=_keyBindings[t];_keyStatus[e]=0,_keyLock[e]=!1,_keyRefs[e]={},_keyBindings[t]=null,_preventDefaultForKeys[t]=null}var viewportOffset=new Vector2d,Pointer=Rect.extend({init:function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=1),void 0===n&&(n=1),this.LEFT=0,this.MIDDLE=1,this.RIGHT=2,this.event=void 0,this.type=void 0,this.button=0,this.isPrimary=!1,this.pageX=0,this.pageY=0,this.clientX=0,this.clientY=0,this.deltaMode=0,this.deltaX=0,this.deltaY=0,this.deltaZ=0,this.gameX=0,this.gameY=0,this.gameScreenX=0,this.gameScreenY=0,this.gameWorldX=0,this.gameWorldY=0,this.gameLocalX=0,this.gameLocalY=0,this.pointerId=void 0,this.bind=[0,0,0],this._super(Rect,"init",[t,e,i,n])},setEvent:function(t,e,i,n,r,o){void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===r&&(r=0),void 0===o&&(o=1);var s=1,a=1;this.event=t,this.pageX=e,this.pageY=i,this.clientX=n,this.clientY=r,globalToLocal(this.pageX,this.pageY,this.pos),this.isNormalized=!device$1.PointerEvent||device$1.PointerEvent&&!(t instanceof window.PointerEvent),"wheel"===t.type?(this.deltaMode=t.deltaMode||0,this.deltaX=t.deltaX||0,this.deltaY=t.deltaY||0,this.deltaZ=t.deltaZ||0):(this.deltaMode=0,this.deltaX=0,this.deltaY=0,this.deltaZ=0),this.pointerId=o,this.isPrimary=void 0===t.isPrimary||t.isPrimary,this.button=t.button||0,this.type=t.type,this.gameScreenX=this.pos.x,this.gameScreenY=this.pos.y,void 0!==game$1.viewport&&game$1.viewport.localToWorld(this.gameScreenX,this.gameScreenY,viewportOffset),this.gameWorldX=viewportOffset.x,this.gameWorldY=viewportOffset.y,!1===this.isNormalized?(s=t.width||1,a=t.height||1):"number"==typeof t.radiusX&&(s=2*t.radiusX||1,a=2*t.radiusY||1),this.resize(s,a)}}),T_POINTERS=[],eventHandlers=new Map,currentPointer,pointerInitialized=!1,lastTimeStamp=0,activeEventList=[],WHEEL=["wheel"],POINTER_MOVE=["pointermove","mousemove","touchmove"],POINTER_DOWN=["pointerdown","mousedown","touchstart"],POINTER_UP=["pointerup","mouseup","touchend"],POINTER_CANCEL=["pointercancel","mousecancel","touchcancel"],POINTER_ENTER=["pointerenter","mouseenter","touchenter"],POINTER_OVER=["pointerover","mouseover","touchover"],POINTER_LEAVE=["pointerleave","mouseleave","touchleave"],pointerEventList=[WHEEL[0],POINTER_MOVE[0],POINTER_DOWN[0],POINTER_UP[0],POINTER_CANCEL[0],POINTER_ENTER[0],POINTER_OVER[0],POINTER_LEAVE[0]],mouseEventList=[WHEEL[0],POINTER_MOVE[1],POINTER_DOWN[1],POINTER_UP[1],POINTER_CANCEL[1],POINTER_ENTER[1],POINTER_OVER[1],POINTER_LEAVE[1]],touchEventList=[POINTER_MOVE[2],POINTER_DOWN[2],POINTER_UP[2],POINTER_CANCEL[2],POINTER_ENTER[2],POINTER_OVER[2],POINTER_LEAVE[2]],pointerEventMap={wheel:WHEEL,pointermove:POINTER_MOVE,pointerdown:POINTER_DOWN,pointerup:POINTER_UP,pointercancel:POINTER_CANCEL,pointerenter:POINTER_ENTER,pointerover:POINTER_OVER,pointerleave:POINTER_LEAVE},normalizedEvents=[];function registerEventListener(t,e){for(var i=0;i=0&&(r=t.callbacks[e][o]);o--)if(!1===r(i))return!0}return!1}function dispatchEvent(t){for(var e=!1;t.length>0;){var i=t.pop();if(T_POINTERS.push(i),void 0!==i.event.timeStamp){if(i.event.timeStamp0;)r.callbacks[t].pop();0===r.callbacks[t].length&&delete r.callbacks[t]}0===Object.keys(r.callbacks).length&&eventHandlers.delete(e)}}function releaseAllPointerEvents(t){if(eventHandlers.has(t))for(var e=0;e0?i===this.GAMEPAD.BUTTONS.L2?Math.max(0,t-2e4)/111070:(t-1)/131070:(65536+t)/131070+.5}var vendorProductRE=/^([0-9a-f]{1,4})-([0-9a-f]{1,4})-/i,leadingZeroRE=/^0+/;function addMapping(t,e){var i=t.replace(vendorProductRE,(function(t,e,i){return"000".substr(e.length-1)+e+"-"+"000".substr(i.length-1)+i+"-"})),n=t.replace(vendorProductRE,(function(t,e,i){return e.replace(leadingZeroRE,"")+"-"+i.replace(leadingZeroRE,"")+"-"}));e.analog=e.analog||e.buttons.map((function(){return-1})),e.normalize_fn=e.normalize_fn||defaultNormalizeFn,remap.set(i,e),remap.set(n,e)}var bindings={},remap=new Map,updateEventHandler;[["45e-28e-Xbox 360 Wired Controller",{axes:[0,1,3,4],buttons:[11,12,13,14,8,9,-1,-1,5,4,6,7,0,1,2,3,10],analog:[-1,-1,-1,-1,-1,-1,2,5,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:wiredXbox360NormalizeFn}],["54c-268-PLAYSTATION(R)3 Controller",{axes:[0,1,2,3],buttons:[14,13,15,12,10,11,8,9,0,3,1,2,4,6,7,5,16]}],["54c-5c4-Wireless Controller",{axes:[0,1,2,3],buttons:[1,0,2,3,4,5,6,7,8,9,10,11,14,15,16,17,12,13]}],["2836-1-OUYA Game Controller",{axes:[0,3,7,9],buttons:[3,6,4,5,7,8,15,16,-1,-1,9,10,11,12,13,14,-1],analog:[-1,-1,-1,-1,-1,-1,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:ouyaNormalizeFn}],["OUYA Game Controller (Vendor: 2836 Product: 0001)",{axes:[0,1,3,4],buttons:[0,3,1,2,4,5,12,13,-1,-1,6,7,8,9,10,11,-1],analog:[-1,-1,-1,-1,-1,-1,2,5,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:ouyaNormalizeFn}]].forEach((function(t){addMapping(t[0],t[1])}));var updateGamepads=function(){var t=navigator.getGamepads();Object.keys(bindings).forEach((function(e){var i=t[e];if(i){var n=null;"standard"!==i.mapping&&(n=remap.get(i.id));var r=bindings[e];Object.keys(r.buttons).forEach((function(t){var o=r.buttons[t],s=t,a=-1;if(!(n&&(s=n.buttons[t],a=n.analog[t],s<0&&a<0))){var h=i.buttons[s]||{};if(n&&a>=0){var l=n.normalize_fn(i.axes[a],-1,+t);h={value:l,pressed:h.pressed||Math.abs(l)>=deadzone}}event.publish(event.GAMEPAD_UPDATE,[e,"buttons",+t,h]),!o.pressed&&h.pressed?triggerKeyEvent(o.keyCode,!0,s+256):o.pressed&&!h.pressed&&triggerKeyEvent(o.keyCode,!1,s+256),o.value=h.value,o.pressed=h.pressed}})),Object.keys(r.axes).forEach((function(t){var o=r.axes[t],s=t;if(!(n&&(s=n.axes[t])<0)){var a=i.axes[s];if(void 0!==a){n&&(a=n.normalize_fn(a,+t,-1));var h=Math.sign(a)||1;if(0!==o[h].keyCode){var l=Math.abs(a)>=deadzone+Math.abs(o[h].threshold);event.publish(event.GAMEPAD_UPDATE,[e,"axes",+t,a]),!o[h].pressed&&l?(o[-h].pressed&&(triggerKeyEvent(o[-h].keyCode,!1,s+256),o[-h].value=0,o[-h].pressed=!1),triggerKeyEvent(o[h].keyCode,!0,s+256)):!o[h].pressed&&!o[-h].pressed||l||triggerKeyEvent(o[h=o[h].pressed?h:-h].keyCode,!1,s+256),o[h].value=a,o[h].pressed=l}}}}))}}))};window.addEventListener("gamepadconnected",(function(t){event.publish(event.GAMEPAD_CONNECTED,[t.gamepad])}),!1),window.addEventListener("gamepaddisconnected",(function(t){event.publish(event.GAMEPAD_DISCONNECTED,[t.gamepad])}),!1);var GAMEPAD={AXES:{LX:0,LY:1,RX:2,RY:3,EXTRA_1:4,EXTRA_2:5,EXTRA_3:6,EXTRA_4:7},BUTTONS:{FACE_1:0,FACE_2:1,FACE_3:2,FACE_4:3,L1:4,R1:5,L2:6,R2:7,SELECT:8,BACK:8,START:9,FORWARD:9,L3:10,R3:11,UP:12,DOWN:13,LEFT:14,RIGHT:15,HOME:16,EXTRA_1:17,EXTRA_2:18,EXTRA_3:19,EXTRA_4:20}};function bindGamepad(t,e,i){if(!getBindingKey(i))throw new Error("no action defined for keycode "+i);void 0===updateEventHandler&&"function"==typeof navigator.getGamepads&&(updateEventHandler=event.subscribe(event.GAME_UPDATE,updateGamepads)),bindings[t]||(bindings[t]={axes:{},buttons:{}});var n={keyCode:i,value:0,pressed:!1,threshold:e.threshold},r=bindings[t][e.type];if("buttons"===e.type)r[e.code]=n;else if("axes"===e.type){var o=Math.sign(e.threshold)||1;r[e.code]||(r[e.code]={});var s=r[e.code];s[o]=n,s[-o]||(s[-o]={keyCode:0,value:0,pressed:!1,threshold:-o})}}function unbindGamepad(t,e){if(!bindings[t])throw new Error("no bindings for gamepad "+t);bindings[t].buttons[e]={}}function setGamepadDeadzone(t){deadzone=t}var setGamepadMapping=addMapping,preventDefault=!0,input=Object.freeze({__proto__:null,preventDefault:preventDefault,get pointerEventTarget(){return pointerEventTarget},get pointer(){return pointer},get throttlingInterval(){return throttlingInterval},globalToLocal:globalToLocal,setTouchAction:setTouchAction,bindPointer:bindPointer,unbindPointer:unbindPointer,registerPointerEvent:registerPointerEvent,releasePointerEvent:releasePointerEvent,releaseAllPointerEvents:releaseAllPointerEvents,get keyBoardEventTarget(){return keyBoardEventTarget},KEY:KEY,initKeyboardEvent:initKeyboardEvent,isKeyPressed:isKeyPressed,keyStatus:keyStatus,triggerKeyEvent:triggerKeyEvent,bindKey:bindKey,getBindingKey:getBindingKey,unlockKey:unlockKey,unbindKey:unbindKey,GAMEPAD:GAMEPAD,bindGamepad:bindGamepad,unbindGamepad:unbindGamepad,setGamepadDeadzone:setGamepadDeadzone,setGamepadMapping:setGamepadMapping}),Renderable=Rect.extend({init:function(t,e,i,n){this._super(Rect,"init",[t,e,i,n]),this.isRenderable=!0,this.isKinematic=!0,this.body=void 0,void 0===this.currentTransform&&(this.currentTransform=pool.pull("Matrix2d")),this.currentTransform.identity(),this.GUID=void 0,this.onVisibilityChange=void 0,this.alwaysUpdate=!1,this.updateWhenPaused=!1,this.isPersistent=!1,this.floating=!1,this.anchorPoint instanceof ObservableVector2d?this.anchorPoint.setMuted(.5,.5).setCallback(this.onAnchorUpdate,this):this.anchorPoint=pool.pull("ObservableVector2d",.5,.5,{onUpdate:this.onAnchorUpdate,scope:this}),this.autoTransform=!0,this.alpha=1,this.ancestor=void 0,this.mask=void 0,this.tint=pool.pull("Color",255,255,255,1),this.name="",this.pos instanceof ObservableVector3d?this.pos.setMuted(t,e,0).setCallback(this.updateBoundsPos,this):this.pos=pool.pull("ObservableVector3d",t,e,0,{onUpdate:this.updateBoundsPos,scope:this}),this.isDirty=!1,this._flip={x:!1,y:!1},this._inViewport=!1,this.setOpacity(1)},onResetEvent:function(){this.init.apply(this,arguments)},getBounds:function(){return void 0===this._bounds&&(this._super(Rect,"getBounds"),this.isFinite()?this._bounds.setMinMax(this.pos.x,this.pos.y,this.pos.x+this.width,this.pos.y+this.height):this._bounds.setMinMax(this.pos.x,this.pos.y,this.width,this.height)),this._bounds},getOpacity:function(){return this.alpha},setOpacity:function(t){"number"==typeof t&&(this.alpha=clamp(t,0,1),isNaN(this.alpha)&&(this.alpha=1))},flipX:function(t){return this._flip.x=!!t,this.isDirty=!0,this},flipY:function(t){return this._flip.y=!!t,this.isDirty=!0,this},transform:function(t){return this.currentTransform.multiply(t),this.updateBoundsPos(this.pos.x,this.pos.y),this.isDirty=!0,this},angleTo:function(t){var e,i,n=this.getBounds();if(t instanceof Renderable){var r=t.getBounds();e=r.centerX-n.centerX,i=r.centerY-n.centerY}else e=t.x-n.centerX,i=t.y-n.centerY;return Math.atan2(i,e)},distanceTo:function(t){var e,i,n=this.getBounds();if(t instanceof Renderable){var r=t.getBounds();e=n.centerX-r.centerX,i=n.centerY-r.centerY}else e=n.centerX-t.x,i=n.centerY-t.y;return Math.sqrt(e*e+i*i)},lookAt:function(t){var e;e=t instanceof Renderable?t.pos:t;var i=this.angleTo(e);return this.rotate(i),this},rotate:function(t){return isNaN(t)||(this.currentTransform.rotate(t),this.isDirty=!0),this},scale:function(t,e){return this.currentTransform.scale(t,e),this._super(Rect,"scale",[t,e]),this.isDirty=!0,this},scaleV:function(t){return this.scale(t.x,t.y),this},update:function(){return this.isDirty},updateBounds:function(){return this._super(Rect,"updateBounds"),this.updateBoundsPos(this.pos.x,this.pos.y),this.getBounds()},updateBoundsPos:function(t,e){var i=this.getBounds();i.shift(t,e),void 0!==this.anchorPoint&&i.isFinite()&&i.translate(-this.anchorPoint.x*i.width,-this.anchorPoint.y*i.height),this.ancestor instanceof Container$1&&!0!==this.floating&&i.translate(this.ancestor.getAbsolutePosition())},getAbsolutePosition:function(){return void 0===this._absPos&&(this._absPos=pool.pull("Vector2d")),this._absPos.set(this.pos.x,this.pos.y),this.ancestor instanceof Container$1&&!0!==this.floating&&this._absPos.add(this.ancestor.getAbsolutePosition()),this._absPos},onAnchorUpdate:function(t,e){this.anchorPoint.setMuted(t,e),this.updateBoundsPos(this.pos.x,this.pos.y)},preDraw:function(t){var e=this.getBounds(),i=e.width*this.anchorPoint.x,n=e.height*this.anchorPoint.y;if(t.save(),t.setGlobalAlpha(t.globalAlpha()*this.getOpacity()),this._flip.x||this._flip.y){var r=this._flip.x?this.centerX-i:0,o=this._flip.y?this.centerY-n:0;t.translate(r,o),t.scale(this._flip.x?-1:1,this._flip.y?-1:1),t.translate(-r,-o)}!0!==this.autoTransform||this.currentTransform.isIdentity()||(t.translate(this.pos.x,this.pos.y),t.transform(this.currentTransform),t.translate(-this.pos.x,-this.pos.y)),t.translate(-i,-n),void 0!==this.mask&&t.setMask(this.mask),t.setTint(this.tint)},draw:function(){},postDraw:function(t){void 0!==this.mask&&t.clearMask(),t.clearTint(),this.isDirty=!1,t.restore()},destroy:function(){pool.push(this.currentTransform),this.currentTransform=void 0,pool.push(this.anchorPoint),this.anchorPoint=void 0,pool.push(this.pos),this.pos=void 0,void 0!==this._absPos&&(pool.push(this._absPos),this._absPos=void 0),pool.push(this._bounds),this._bounds=void 0,this.onVisibilityChange=void 0,void 0!==this.mask&&(pool.push(this.mask),this.mask=void 0),void 0!==this.tint&&(pool.push(this.tint),this.tint=void 0),this.ancestor=void 0,void 0!==this.body&&(this.body.destroy.apply(this.body,arguments),this.body=void 0),releaseAllPointerEvents(this),this.onDestroyEvent.apply(this,arguments)},onDestroyEvent:function(){}});Object.defineProperty(Renderable.prototype,"inViewport",{get:function(){return this._inViewport},set:function(t){this._inViewport!==t&&(this._inViewport=t,"function"==typeof this.onVisibilityChange&&this.onVisibilityChange.call(this,t))},configurable:!0}),Object.defineProperty(Renderable.prototype,"isFlippedX",{get:function(){return!0===this._flip.x},configurable:!0}),Object.defineProperty(Renderable.prototype,"isFlippedY",{get:function(){return!0===this._flip.y},configurable:!0});var deferredRemove=function(t,e){this.removeChildNow(t,e)},globalFloatingCounter=0,Container=Renderable.extend({init:function(t,e,i,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=game$1.viewport.width),void 0===n&&(n=game$1.viewport.height),void 0===r&&(r=!1),this.pendingSort=null,this._super(Renderable,"init",[t,e,i,n]),this.root=r,this.children=void 0,this.sortOn=game$1.sortOn,this.autoSort=!0,this.autoDepth=!0,this.clipping=!1,this.onChildChange=function(){},this.enableChildBoundsUpdate=!1,this.drawCount=0,this.autoTransform=!0,this.isKinematic=!1,this.anchorPoint.set(0,0),!0===this.root&&event.subscribe(event.CANVAS_ONRESIZE,this.updateBounds.bind(this,!0))},reset:function(){this.pendingSort&&(clearTimeout(this.pendingSort),this.pendingSort=null);for(var t,e=this.getChildren(),i=e.length;i>=0;t=e[--i])t&&!0!==t.isPersistent&&this.removeChildNow(t);void 0!==this.currentTransform&&this.currentTransform.identity()},addChild:function(t,e){return t.ancestor instanceof Container?t.ancestor.removeChildNow(t):t.isRenderable&&(t.GUID=utils$1.createGUID(t.id)),t.ancestor=this,this.getChildren().push(t),void 0!==t.pos&&("number"==typeof e?t.pos.z=e:!0===this.autoDepth&&(t.pos.z=this.getChildren().length)),!0===this.autoSort&&this.sort(),"function"==typeof t.onActivateEvent&&this.isAttachedToRoot()&&t.onActivateEvent(),!0===this.isAttachedToRoot()&&game$1.repaint(),this.enableChildBoundsUpdate&&this.updateBounds(!0),this.onChildChange.call(this,this.getChildren().length-1),t},addChildAt:function(t,e){if(e>=0&&e1&&(i=e);n=0&&t=0&&e0?e[0]:null},getChildren:function(){return void 0===this.children&&(this.children=[]),this.children},updateBounds:function(t){void 0===t&&(t=!1),this._super(Renderable,"updateBounds");var e=this.getBounds();return!0!==t&&!0!==this.enableChildBoundsUpdate||this.forEach((function(t){t.isRenderable&&(t.getBounds().isFinite()&&e.addBounds(t.getBounds()))})),e},isAttachedToRoot:function(){if(!0===this.root)return!0;for(var t=this.ancestor;t;){if(!0===t.root)return!0;t=t.ancestor}return!1},updateBoundsPos:function(t,e){var i=this;return this._super(Renderable,"updateBoundsPos",[t,e]),this.forEach((function(n){n.isRenderable&&n.updateBoundsPos(n.pos.x+t-i.pos.x,n.pos.y+e-i.pos.y)})),this.getBounds()},onActivateEvent:function(){this.forEach((function(t){"function"==typeof t.onActivateEvent&&t.onActivateEvent()}))},removeChild:function(t,e){if(!this.hasChild(t))throw new Error("Child is not mine.");utils$1.function.defer(deferredRemove,this,t,e)},removeChildNow:function(t,e){if(this.hasChild(t)&&this.getChildIndex(t)>=0){"function"==typeof t.onDeactivateEvent&&t.onDeactivateEvent(),e||("function"==typeof t.destroy&&t.destroy(),pool.push(t));var i=this.getChildIndex(t);i>=0&&(this.getChildren().splice(i,1),t.ancestor=void 0),!0===this.isAttachedToRoot()&&game$1.repaint(),this.enableChildBoundsUpdate&&this.updateBounds(!0),this.onChildChange.call(this,i)}},setChildsProperty:function(t,e,i){this.forEach((function(n){!0===i&&n instanceof Container&&n.setChildsProperty(t,e,i),n[t]=e}))},moveUp:function(t){var e=this.getChildIndex(t);e-1>=0&&this.swapChildren(t,this.getChildAt(e-1))},moveDown:function(t){var e=this.getChildIndex(t);e>=0&&e+10){var i=this.getChildren();i.splice(0,0,i.splice(e,1)[0]),t.pos.z=i[1].pos.z+1}},moveToBottom:function(t){var e=this.getChildIndex(t),i=this.getChildren();e>=0&&e0||e.floating)&&globalFloatingCounter++,e.inViewport=!1,state$1.current().cameras.forEach((function(t){t.isVisible(e,n)&&(e.inViewport=!0)})),i=(e.inViewport||e.alwaysUpdate)&&e.update(t)||i,globalFloatingCounter>0&&globalFloatingCounter--):i=e.update(t)||i);return i},draw:function(t,e){var i=!1,n=this.getBounds();this.drawCount=0,!1===this.root&&!0===this.clipping&&!0===n.isFinite()&&t.clipRect(n.left,n.top,n.width,n.height),t.translate(this.pos.x,this.pos.y);for(var r,o=this.getChildren(),s=o.length;r=o[--s];)r.isRenderable&&(i=!0===r.floating,(r.inViewport||i)&&(i&&(t.save(),t.resetTransform()),r.preDraw(t),r.draw(t,e),r.postDraw(t),i&&t.restore(),this.drawCount++))}}),Container$1=Container,QT_ARRAY=[];function QT_ARRAY_POP(t,e,i,n){if(QT_ARRAY.length>0){var r=QT_ARRAY.pop();return r.bounds=t,r.max_objects=e||4,r.max_levels=i||4,r.level=n||0,r}return new QuadTree(t,e,i,n)}function QT_ARRAY_PUSH(t){QT_ARRAY.push(t)}var QT_VECTOR=new Vector2d,QuadTree=function(t,e,i,n){this.max_objects=e||4,this.max_levels=i||4,this.level=n||0,this.bounds=t,this.objects=[],this.nodes=[]};QuadTree.prototype.split=function(){var t=this.level+1,e=this.bounds.width/2,i=this.bounds.height/2,n=this.bounds.left,r=this.bounds.top;this.nodes[0]=QT_ARRAY_POP({left:n+e,top:r,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[1]=QT_ARRAY_POP({left:n,top:r,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[2]=QT_ARRAY_POP({left:n,top:r+i,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[3]=QT_ARRAY_POP({left:n+e,top:r+i,width:e,height:i},this.max_objects,this.max_levels,t)},QuadTree.prototype.getIndex=function(t){var e,i=-1,n=(e=t.floating||t.ancestor&&t.ancestor.floating?game$1.viewport.localToWorld(t.left,t.top,QT_VECTOR):QT_VECTOR.set(t.left,t.top)).x,r=e.y,o=t.width,s=t.height,a=this.bounds.left+this.bounds.width/2,h=this.bounds.top+this.bounds.height/2,l=rh;return na&&(l?i=0:u&&(i=3)),i},QuadTree.prototype.insertContainer=function(t){for(var e,i=t.children.length;i--,e=t.children[i];)!0!==e.isKinematic&&(e instanceof Container$1?("rootContainer"!==e.name&&this.insert(e),this.insertContainer(e)):"function"==typeof e.getBounds&&this.insert(e))},QuadTree.prototype.insert=function(t){var e=-1;if(this.nodes.length>0&&-1!==(e=this.getIndex(t)))this.nodes[e].insert(t);else if(this.objects.push(t),this.objects.length>this.max_objects&&this.level0){var n=this.getIndex(t);if(-1!==n)i=i.concat(this.nodes[n].retrieve(t));else for(var r=0;r0){var i=this.getIndex(t);-1!==i&&(e=utils$1.array.remove(this.nodes[i],t))&&this.nodes[i].isPrunable()&&this.nodes.splice(i,1)}return!1===e&&-1!==this.objects.indexOf(t)&&(utils$1.array.remove(this.objects,t),e=!0),e},QuadTree.prototype.isPrunable=function(){return!(this.hasChildren()||this.objects.length>0)},QuadTree.prototype.hasChildren=function(){for(var t=0;t0||e.objects.length>0)return!0}return!1},QuadTree.prototype.clear=function(t){this.objects.length=0;for(var e=0;er&&(r=a)}i[0]=n,i[1]=r}function isSeparatingAxis(t,e,i,n,r,o){var s=T_ARRAYS.pop(),a=T_ARRAYS.pop(),h=T_VECTORS.pop().copy(e).sub(t),l=h.dotProduct(r);if(flattenPointsOn(i,r,s),flattenPointsOn(n,r,a),a[0]+=l,a[1]+=l,s[0]>a[1]||a[0]>s[1])return T_VECTORS.push(h),T_ARRAYS.push(s),T_ARRAYS.push(a),!0;if(o){var u=0;if(s[0]a[1])u=s[0]-a[1],o.aInB=!1;else{var p=s[1]-a[0],f=a[1]-s[0];u=pi?RIGHT_VORNOI_REGION:MIDDLE_VORNOI_REGION}function testPolygonPolygon(t,e,i,n,r){var o,s=e.points,a=e.normals,h=a.length,l=n.points,u=n.normals,c=u.length,d=T_VECTORS.pop().copy(t.pos).add(t.ancestor.getAbsolutePosition()).add(e.pos),p=T_VECTORS.pop().copy(i.pos).add(i.ancestor.getAbsolutePosition()).add(n.pos);for(o=0;ol)return T_VECTORS.push(o),!1;if(r){var c=Math.sqrt(u);r.a=t,r.b=i,r.overlap=h-c,r.overlapN.copy(o.normalize()),r.overlapV.copy(o).scale(r.overlap),r.aInB=s<=a&&c<=a-s,r.bInA=a<=s&&c<=s-a}return T_VECTORS.push(o),!0}function testPolygonEllipse(t,e,i,n,r){for(var o=T_VECTORS.pop().copy(i.pos).add(i.ancestor.getAbsolutePosition()).add(n.pos).sub(t.pos).add(t.ancestor.getAbsolutePosition()).sub(e.pos),s=n.radius,a=s*s,h=e.points,l=e.edges,u=l.length,c=T_VECTORS.pop(),d=T_VECTORS.pop(),p=T_VECTORS.pop(),f=0,g=0;ga&&(r.aInB=!1);var x=vornoiRegion(c,p),w=!0;if(x===LEFT_VORNOI_REGION){var b=null;if(u>1&&(c.copy(l[y]),(x=vornoiRegion(c,b=T_VECTORS.pop().copy(o).sub(h[y])))!==RIGHT_VORNOI_REGION&&(w=!1)),w){if((f=p.length())>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),b&&T_VECTORS.push(b),!1;r&&(r.bInA=!1,_=p.normalize(),v=s-f)}b&&T_VECTORS.push(b)}else if(x===RIGHT_VORNOI_REGION){if(u>1&&(c.copy(l[m]),p.copy(o).sub(h[m]),(x=vornoiRegion(c,p))!==LEFT_VORNOI_REGION&&(w=!1)),w){if((f=p.length())>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),!1;r&&(r.bInA=!1,_=p.normalize(),v=s-f)}}else{d.copy(e.normals[g]),f=p.dotProduct(d);var T=Math.abs(f);if((1===u||f>0)&&T>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),!1;r&&(_=d,v=s-f,(f>=0||v<2*s)&&(r.bInA=!1))}_&&r&&Math.abs(v)0},rayCast:function(t,e){for(var i,n=0,r=e||[],o=game$1.world.broadphase.retrieve(t),s=o.length;i=o[--s];)if(i.body&&t.getBounds().overlaps(i.getBounds())){var a=i.body.shapes.length;if(0===i.body.shapes.length)continue;var h=t,l=0;do{var u=i.body.getShape(l);SAT["test"+h.shapeType+u.shapeType].call(this,dummyObj,h,i,u)&&(r[n]=i,n++),l++}while(lthis.world.fps},getParentContainer:function(t){return t.ancestor},repaint:function(){isDirty=!0},update:function(t,e){if(++frameCounter%frameRate==0)for(frameCounter=0,event.publish(event.GAME_UPDATE,[t]),accumulator+=timer$1.getDelta(),accumulator=Math.min(accumulator,accumulatorMax),updateDelta=timer$1.interpolation?timer$1.getDelta():stepSize,accumulatorUpdateDelta=timer$1.interpolation?updateDelta:Math.max(updateDelta,updateAverageDelta);accumulator>=accumulatorUpdateDelta||timer$1.interpolation;)if(lastUpdateStart=window.performance.now(),isDirty=e.update(updateDelta)||isDirty,timer$1.lastUpdate=window.performance.now(),updateAverageDelta=timer$1.lastUpdate-lastUpdateStart,accumulator-=accumulatorUpdateDelta,timer$1.interpolation){accumulator=0;break}},draw:function(t){var e=video$1.renderer;!0===e.isContextValid&&(isDirty||isAlwaysDirty)&&(e.clear(),t.draw(e),isDirty=!1,e.flush())}},game$1=game,MIN=Math.min,MAX=Math.max,targetV=new Vector2d,Camera2d=Renderable.extend({init:function(t,e,i,n){this._super(Renderable,"init",[t,e,i-t,n-e]),this.AXIS={NONE:0,HORIZONTAL:1,VERTICAL:2,BOTH:3},this.bounds=pool.pull("Bounds"),this.smoothFollow=!0,this.damping=1,this.near=-1e3,this.far=1e3,this.projectionMatrix=new Matrix3d,this.invCurrentTransform=new Matrix2d,this.offset=new Vector2d,this.target=null,this.follow_axis=this.AXIS.NONE,this._shake={intensity:0,duration:0,axis:this.AXIS.BOTH,onComplete:null},this._fadeOut={color:null,tween:null},this._fadeIn={color:null,tween:null},this.name="default",this.setDeadzone(this.width/6,this.height/6),this.anchorPoint.set(0,0),this.isKinematic=!1,this.bounds.setMinMax(t,e,i,n),this._updateProjectionMatrix(),event.subscribe(event.GAME_RESET,this.reset.bind(this)),event.subscribe(event.CANVAS_ONRESIZE,this.resize.bind(this))},_updateProjectionMatrix:function(){this.projectionMatrix.ortho(0,this.width,this.height,0,this.near,this.far)},_followH:function(t){var e=this.pos.x;return t.x-this.pos.x>this.deadzone.right?e=MIN(t.x-this.deadzone.right,this.bounds.width-this.width):t.x-this.pos.xthis.deadzone.bottom?e=MIN(t.y-this.deadzone.bottom,this.bounds.height-this.height):t.y-this.pos.y0&&(this._shake.duration-=t,this._shake.duration<=0?(this._shake.duration=0,this.offset.setZero(),"function"==typeof this._shake.onComplete&&this._shake.onComplete()):(this._shake.axis!==this.AXIS.BOTH&&this._shake.axis!==this.AXIS.HORIZONTAL||(this.offset.x=(Math.random()-.5)*this._shake.intensity),this._shake.axis!==this.AXIS.BOTH&&this._shake.axis!==this.AXIS.VERTICAL||(this.offset.y=(Math.random()-.5)*this._shake.intensity)),e=!0),!0===e&&event.publish(event.VIEWPORT_ONCHANGE,[this.pos]),null==this._fadeIn.tween&&null==this._fadeOut.tween||(e=!0),this.currentTransform.isIdentity()?this.invCurrentTransform.identity():this.invCurrentTransform.copy(this.currentTransform).invert(),e},shake:function(t,e,i,n,r){0!==this._shake.duration&&!0!==r||(this._shake.intensity=t,this._shake.duration=e,this._shake.axis=i||this.AXIS.BOTH,this._shake.onComplete="function"==typeof n?n:void 0)},fadeOut:function(t,e,i){void 0===e&&(e=1e3),this._fadeOut.color=pool.pull("Color").copy(t),this._fadeOut.tween=pool.pull("Tween",this._fadeOut.color).to({alpha:0},e).onComplete(i||null),this._fadeOut.tween.isPersistent=!0,this._fadeOut.tween.start()},fadeIn:function(t,e,i){void 0===e&&(e=1e3),this._fadeIn.color=pool.pull("Color").copy(t);var n=this._fadeIn.color.alpha;this._fadeIn.color.alpha=0,this._fadeIn.tween=pool.pull("Tween",this._fadeIn.color).to({alpha:n},e).onComplete(i||null),this._fadeIn.tween.isPersistent=!0,this._fadeIn.tween.start()},getWidth:function(){return this.width},getHeight:function(){return this.height},focusOn:function(t){var e=t.getBounds();this.moveTo(t.pos.x+e.left+e.width/2,t.pos.y+e.top+e.height/2)},isVisible:function(t,e){return void 0===e&&(e=t.floating),!0===e||!0===t.floating?video$1.renderer.overlaps(t.getBounds()):t.getBounds().overlaps(this)},localToWorld:function(t,e,i){return(i=i||new Vector2d).set(t,e).add(this.pos).sub(game$1.world.pos),this.currentTransform.isIdentity()||this.invCurrentTransform.apply(i),i},worldToLocal:function(t,e,i){return(i=i||new Vector2d).set(t,e),this.currentTransform.isIdentity()||this.currentTransform.apply(i),i.sub(this.pos).add(game$1.world.pos)},drawFX:function(t){this._fadeIn.tween&&(t.save(),t.resetTransform(),t.setColor(this._fadeIn.color),t.fillRect(0,0,this.width,this.height),t.restore(),1===this._fadeIn.color.alpha&&(this._fadeIn.tween=null,pool.push(this._fadeIn.color),this._fadeIn.color=null)),this._fadeOut.tween&&(t.save(),t.resetTransform(),t.setColor(this._fadeOut.color),t.fillRect(0,0,this.width,this.height),t.restore(),0===this._fadeOut.color.alpha&&(this._fadeOut.tween=null,pool.push(this._fadeOut.color),this._fadeOut.color=null))},draw:function(t,e){var i=this.pos.x+this.offset.x,n=this.pos.y+this.offset.y;e.currentTransform.translate(-i,-n),t.setProjection(this.projectionMatrix),t.clipRect(0,0,this.width,this.height),this.preDraw(t),e.preDraw(t),e.draw(t,this),this.drawFX(t),e.postDraw(t),this.postDraw(t),e.currentTransform.translate(i,n)}}),default_camera,default_settings={cameras:[]},Stage=window.Jay.extend({init:function(t){this.cameras=new Map,this.settings=Object.assign(default_settings,t||{})},reset:function(){var t=this;if(this.settings.cameras.forEach((function(e){t.cameras.set(e.name,e)})),!1===this.cameras.has("default")){if(void 0===default_camera){var e=video$1.renderer.getWidth(),i=video$1.renderer.getHeight();default_camera=new Camera2d(0,0,e,i)}this.cameras.set("default",default_camera)}game$1.reset(),this.onResetEvent.apply(this,arguments)},update:function(t){var e=game$1.world.update(t);return this.cameras.forEach((function(i){i.update(t)&&(e=!0)})),e},draw:function(t){this.cameras.forEach((function(e){e.draw(t,game$1.world)}))},destroy:function(){this.cameras.clear(),this.onDestroyEvent.apply(this,arguments)},onResetEvent:function(){"function"==typeof this.settings.onResetEvent&&this.settings.onResetEvent.apply(this,arguments)},onDestroyEvent:function(){"function"==typeof this.settings.onDestroyEvent&&this.settings.onDestroyEvent.apply(this,arguments)}}),ProgressBar=Renderable.extend({init:function(t,e,i,n){var r=this;this.barHeight=n,this._super(Renderable,"init",[t,e,i,n]),this.anchorPoint.set(0,0),this.loaderHdlr=event.subscribe(event.LOADER_PROGRESS,r.onProgressUpdate.bind(r)),this.resizeHdlr=event.subscribe(event.VIEWPORT_ONRESIZE,r.resize.bind(r)),this.anchorPoint.set(0,0),this.progress=0},onProgressUpdate:function(t){this.progress=~~(t*this.width),this.isDirty=!0},draw:function(t){t.clearColor("#202020"),t.setColor("black"),t.fillRect(this.pos.x,game$1.viewport.centerY,t.getWidth(),this.barHeight/2),t.setColor("#55aa00"),t.fillRect(this.pos.x,game$1.viewport.centerY,this.progress,this.barHeight/2)},onDestroyEvent:function(){event.unsubscribe(this.loaderHdlr),event.unsubscribe(this.resizeHdlr),this.loaderHdlr=this.resizeHdlr=null}}),IconLogo=Renderable.extend({init:function(t,e){this._super(Renderable,"init",[t,e,100,85]),this.iconCanvas=video$1.createCanvas(nextPowerOfTwo(this.width),nextPowerOfTwo(this.height),!1);var i=video$1.renderer.getContext2d(this.iconCanvas);i.beginPath(),i.moveTo(.7,48.9),i.bezierCurveTo(10.8,68.9,38.4,75.8,62.2,64.5),i.bezierCurveTo(86.1,53.1,97.2,27.7,87,7.7),i.lineTo(87,7.7),i.bezierCurveTo(89.9,15.4,73.9,30.2,50.5,41.4),i.bezierCurveTo(27.1,52.5,5.2,55.8,.7,48.9),i.lineTo(.7,48.9),i.closePath(),i.fillStyle="rgb(255, 255, 255)",i.fill(),i.beginPath(),i.moveTo(84,7),i.bezierCurveTo(87.6,14.7,72.5,30.2,50.2,41.6),i.bezierCurveTo(27.9,53,6.9,55.9,3.2,48.2),i.bezierCurveTo(-.5,40.4,14.6,24.9,36.9,13.5),i.bezierCurveTo(59.2,2.2,80.3,-.8,84,7),i.lineTo(84,7),i.closePath(),i.lineWidth=5.3,i.strokeStyle="rgb(255, 255, 255)",i.lineJoin="miter",i.miterLimit=4,i.stroke(),this.anchorPoint.set(.5,.5)},draw:function(t){t.drawImage(this.iconCanvas,t.getWidth()/2,this.pos.y)}}),TextLogo=Renderable.extend({init:function(t,e){this._super(Renderable,"init",[0,0,t,e]),this.textWidth=0,this.fontCanvas=video$1.createCanvas(256,64,!0),this.drawFont(video$1.renderer.getContext2d(this.fontCanvas)),this.anchorPoint.set(0,.5)},drawFont:function(t){var e=pool.pull("Text",0,0,{font:"century gothic",size:32,fillStyle:"white",textAlign:"middle",textBaseline:"top",text:"melon"}),i=pool.pull("Text",0,0,{font:"century gothic",size:32,fillStyle:"#55aa00",textAlign:"middle",textBaseline:"top",bold:!0,text:"JS"}),n=e.measureText(t).width,r=i.measureText(t).width;this.textWidth=n+r,this.pos.x=Math.round(this.width-this.textWidth/2),this.pos.y=Math.round(this.height+16),e._drawFont(t,["melon"],0,0),i._drawFont(t,["JS"],n,0),pool.push(e),pool.push(i)},draw:function(t){t.drawImage(this.fontCanvas,Math.round((t.getWidth()-this.textWidth)/2),this.pos.y)}}),defaultLoadingScreen=new Stage({onResetEvent:function(){game$1.world.addChild(new ProgressBar(0,video$1.renderer.getHeight()/2,video$1.renderer.getWidth(),8),1),game$1.world.addChild(new IconLogo(video$1.renderer.getWidth()/2,video$1.renderer.getHeight()/2-16-35),2),game$1.world.addChild(new TextLogo(video$1.renderer.getWidth(),video$1.renderer.getHeight()),2)}}),_state=-1,_animFrameId=-1,_isPaused=!1,_stages={},_fade={color:"",duration:0},_onSwitchComplete=null,_extraArgs=null,_pauseTime=0;function _startRunLoop(){-1===_animFrameId&&-1!==_state&&(timer$1.reset(),_animFrameId=window.requestAnimationFrame(_renderFrame))}function _resumeRunLoop(){_isPaused&&-1!==_state&&(timer$1.reset(),_isPaused=!1)}function _pauseRunLoop(){_isPaused=!0}function _renderFrame(t){var e=_stages[_state].stage;game$1.update(t,e),game$1.draw(e),-1!==_animFrameId&&(_animFrameId=window.requestAnimationFrame(_renderFrame))}function _stopRunLoop(){window.cancelAnimationFrame(_animFrameId),_animFrameId=-1}function _switchState(t){_stopRunLoop(),_stages[_state]&&_stages[_state].stage.destroy(),_stages[t]&&(_stages[_state=t].stage.reset.apply(_stages[_state].stage,_extraArgs),_startRunLoop(),_onSwitchComplete&&_onSwitchComplete(),game$1.repaint())}var state={LOADING:0,MENU:1,READY:2,PLAY:3,GAMEOVER:4,GAME_END:5,SCORE:6,CREDITS:7,SETTINGS:8,DEFAULT:9,USER:100,onPause:null,onResume:null,onStop:null,onRestart:null,init:function(){this.set(this.LOADING,defaultLoadingScreen),this.set(this.DEFAULT,new Stage);var t=this;event.subscribe(event.VIDEO_INIT,(function(){t.change(t.DEFAULT,!0)}))},stop:function(t){_state!==this.LOADING&&this.isRunning()&&(_stopRunLoop(),!0===t&&audio$1.pauseTrack(),_pauseTime=window.performance.now(),event.publish(event.STATE_STOP),"function"==typeof this.onStop&&this.onStop())},pause:function(t){_state===this.LOADING||this.isPaused()||(_pauseRunLoop(),!0===t&&audio$1.pauseTrack(),_pauseTime=window.performance.now(),event.publish(event.STATE_PAUSE),"function"==typeof this.onPause&&this.onPause())},restart:function(t){this.isRunning()||(_startRunLoop(),!0===t&&audio$1.resumeTrack(),_pauseTime=window.performance.now()-_pauseTime,game$1.repaint(),event.publish(event.STATE_RESTART,[_pauseTime]),"function"==typeof this.onRestart&&this.onRestart())},resume:function(t){this.isPaused()&&(_resumeRunLoop(),!0===t&&audio$1.resumeTrack(),_pauseTime=window.performance.now()-_pauseTime,event.publish(event.STATE_RESUME,[_pauseTime]),"function"==typeof this.onResume&&this.onResume())},isRunning:function(){return-1!==_animFrameId},isPaused:function(){return _isPaused},set:function(t,e,i){if(!(e instanceof Stage))throw new Error(e+" is not an instance of me.Stage");_stages[t]={},_stages[t].stage=e,_stages[t].transition=!0,!0===i&&this.change(t)},current:function(){if(void 0!==_stages[_state])return _stages[_state].stage},transition:function(t,e,i){"fade"===t&&(_fade.color=e,_fade.duration=i)},setTransition:function(t,e){_stages[t].transition=e},change:function(t,e){if(void 0===_stages[t])throw new Error("Undefined Stage for state '"+t+"'");this.isCurrent(t)||(_extraArgs=null,arguments.length>1&&(_extraArgs=Array.prototype.slice.call(arguments,1)),_fade.duration&&_stages[t].transition?(_onSwitchComplete=function(){game$1.viewport.fadeOut(_fade.color,_fade.duration)},game$1.viewport.fadeIn(_fade.color,_fade.duration,(function(){utils$1.function.defer(_switchState,this,t)}))):!0===e?_switchState(t):utils$1.function.defer(_switchState,this,t))},isCurrent:function(t){return _state===t}},state$1=state,Ellipse=window.Jay.extend({init:function(t,e,i,n){this.pos=new Vector2d,this._bounds=void 0,this.radius=NaN,this.radiusV=new Vector2d,this.radiusSq=new Vector2d,this.ratio=new Vector2d,this.shapeType="Ellipse",this.setShape(t,e,i,n)},onResetEvent:function(t,e,i,n){this.setShape(t,e,i,n)},setShape:function(t,e,i,n){var r=i/2,o=n/2;this.pos.set(t,e),this.radius=Math.max(r,o),this.ratio.set(r/this.radius,o/this.radius),this.radiusV.set(this.radius,this.radius).scaleV(this.ratio);var s=this.radius*this.radius;return this.radiusSq.set(s,s).scaleV(this.ratio),this.getBounds().setMinMax(t,e,t+i,t+n),this.getBounds().translate(-this.radiusV.x,-this.radiusV.y),this},rotate:function(t,e){return this.pos.rotate(t,e),this.getBounds().shift(this.pos),this.getBounds().translate(-this.radiusV.x,-this.radiusV.y),this},scale:function(t,e){return e=void 0!==e?e:t,this.setShape(this.pos.x,this.pos.y,2*this.radiusV.x*t,2*this.radiusV.y*e)},scaleV:function(t){return this.scale(t.x,t.y)},transform:function(){return this},translate:function(){var t,e;return 2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.pos.x+=t,this.pos.y+=e,this.getBounds().translate(t,e),this},contains:function(t,e){var i,n;return 2===arguments.length?(i=arguments[0],n=arguments[1]):(i=arguments[0].x,n=arguments[0].y),i-=this.pos.x,n-=this.pos.y,i*i/this.radiusSq.x+n*n/this.radiusSq.y<=1},getBounds:function(){return void 0===this._bounds&&(this._bounds=pool.pull("Bounds")),this._bounds},clone:function(){return new Ellipse(this.pos.x,this.pos.y,2*this.radiusV.x,2*this.radiusV.y)}}),Bounds$1=function(t){this.onResetEvent(t)},prototypeAccessors$1={x:{configurable:!0},y:{configurable:!0},width:{configurable:!0},height:{configurable:!0},left:{configurable:!0},right:{configurable:!0},top:{configurable:!0},bottom:{configurable:!0},centerX:{configurable:!0},centerY:{configurable:!0},center:{configurable:!0}};Bounds$1.prototype.onResetEvent=function(t){void 0===this.min?(this.min={x:1/0,y:1/0},this.max={x:-1/0,y:-1/0}):this.clear(),void 0!==t&&this.update(t),this._center=new Vector2d},Bounds$1.prototype.clear=function(){this.setMinMax(1/0,1/0,-1/0,-1/0)},Bounds$1.prototype.setMinMax=function(t,e,i,n){this.min.x=t,this.min.y=e,this.max.x=i,this.max.y=n},prototypeAccessors$1.x.get=function(){return this.min.x},prototypeAccessors$1.x.set=function(t){var e=this.max.x-this.min.x;this.min.x=t,this.max.x=t+e},prototypeAccessors$1.y.get=function(){return this.min.y},prototypeAccessors$1.y.set=function(t){var e=this.max.y-this.min.y;this.min.y=t,this.max.y=t+e},prototypeAccessors$1.width.get=function(){return this.max.x-this.min.x},prototypeAccessors$1.width.set=function(t){this.max.x=this.min.x+t},prototypeAccessors$1.height.get=function(){return this.max.y-this.min.y},prototypeAccessors$1.height.set=function(t){this.max.y=this.min.y+t},prototypeAccessors$1.left.get=function(){return this.min.x},prototypeAccessors$1.right.get=function(){return this.max.x},prototypeAccessors$1.top.get=function(){return this.min.y},prototypeAccessors$1.bottom.get=function(){return this.max.y},prototypeAccessors$1.centerX.get=function(){return this.min.x+this.width/2},prototypeAccessors$1.centerY.get=function(){return this.min.y+this.height/2},prototypeAccessors$1.center.get=function(){return this._center.set(this.centerX,this.centerY)},Bounds$1.prototype.update=function(t){this.add(t,!0)},Bounds$1.prototype.add=function(t,e){void 0===e&&(e=!1),!0===e&&this.clear();for(var i=0;ithis.max.x&&(this.max.x=n.x),n.xthis.max.y&&(this.max.y=n.y),n.ythis.max.x&&(this.max.x=t.max.x),t.min.xthis.max.y&&(this.max.y=t.max.y),t.min.y=this.min.x&&e<=this.max.x&&i>=this.min.y&&n<=this.max.y},Bounds$1.prototype.overlaps=function(t){return this.left<=t.right&&this.right>=t.left&&this.bottom>=t.top&&this.top<=t.bottom},Bounds$1.prototype.isFinite=function(){return isFinite(this.min.x)&&isFinite(this.max.x)&&isFinite(this.min.y)&&isFinite(this.max.y)},Bounds$1.prototype.translate=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.min.x+=t,this.max.x+=t,this.min.y+=e,this.max.y+=e},Bounds$1.prototype.shift=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y);var i=this.max.x-this.min.x,n=this.max.y-this.min.y;this.min.x=t,this.max.x=t+i,this.min.y=e,this.max.y=e+n},Bounds$1.prototype.clone=function(){var t=new Bounds$1;return t.addBounds(this),t},Bounds$1.prototype.toPolygon=function(){return new Polygon(this.x,this.y,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])},Object.defineProperties(Bounds$1.prototype,prototypeAccessors$1);var Body=function(t,e,i){if(this.ancestor=t,void 0===this.bounds&&(this.bounds=new Bounds$1),void 0===this.shapes&&(this.shapes=[]),this.collisionMask=collision.types.ALL_OBJECT,this.collisionType=collision.types.ENEMY_OBJECT,void 0===this.vel&&(this.vel=new Vector2d),this.vel.set(0,0),void 0===this.accel&&(this.accel=new Vector2d),this.accel.set(0,0),void 0===this.force&&(this.force=new Vector2d),this.force.set(0,0),void 0===this.friction&&(this.friction=new Vector2d),this.friction.set(0,0),this.bounce=0,this.mass=1,void 0===this.maxVel&&(this.maxVel=new Vector2d),this.maxVel.set(490,490),void 0===this.gravity){var n=this;this.gravity=new ObservableVector2d(0,0,{onUpdate:function(t,e){"number"==typeof e&&(n.gravityScale=e/game$1.world.gravity.y),console.log("me.Body.gravity is deprecated, please see me.Body.gravityScale to modify gravity for a specific body")}})}if(this.gravityScale=1,this.ignoreGravity=!1,this.falling=!1,this.jumping=!1,"function"==typeof i&&(this.onBodyUpdate=i),this.bounds.clear(),void 0!==e)if(Array.isArray(e))for(var r=0;r0)for(var i=0;i=0;--n)s[i]+=o.charCodeAt(i*e+n)<<(n<<3);return s}function decode(t,e,i){switch(i=i||"none",e=e||"none"){case"csv":return decodeCSV(t);case"base64":var n=decodeBase64AsArray(t,4);return"none"===i?n:decompress();case"none":return t;case"xml":throw new Error("XML encoding is deprecated, use base64 instead");default:throw new Error("Unknown layer encoding: "+e)}}function normalize(t,e){var i=e.nodeName;switch(i){case"data":var n=parse(e);n.text=n.text||n.chunk.text,n.encoding=n.encoding||"xml",t.data=decode(n.text,n.encoding,n.compression),t.encoding="none";break;case"imagelayer":case"layer":case"objectgroup":case"group":var r=parse(e);r.type="layer"===i?"tilelayer":i,r.image&&(r.image=r.image.source),t.layers=t.layers||[],t.layers.push(r);break;case"animation":t.animation=parse(e).frames;break;case"frame":case"object":var o=i+"s";t[o]=t[o]||[],t[o].push(parse(e));break;case"tile":var s=parse(e);s.image&&(s.imagewidth=s.image.width,s.imageheight=s.image.height,s.image=s.image.source),t.tiles=t.tiles||{},t.tiles[s.id]=s;break;case"tileset":var a=parse(e);a.image&&(a.imagewidth=a.image.width,a.imageheight=a.image.height,a.image=a.image.source),t.tilesets=t.tilesets||[],t.tilesets.push(a);break;case"polygon":case"polyline":t[i]=[];for(var h,l=parse(e).points.split(" "),u=0;u0&&(this.vel.x*=-this.bounce)),0!==e.y){this.vel.y=~~(.5+this.vel.y-e.y)||0,this.bounce>0&&(this.vel.y*=-this.bounce);var i=Math.sign(game$1.world.gravity.y*this.gravityScale)||1;this.falling=e.y>=i,this.jumping=e.y<=-i}},Body.prototype.forEach=function(t,e){var i=this,n=0,r=this.shapes,o=r.length;if("function"!=typeof t)throw new Error(t+" is not a function");for(arguments.length>1&&(i=e);n0?n:0,t.y=o<0?o:s>0?s:0},Body.prototype.computeVelocity=function(t){if(this.force.x&&(t.x+=this.force.x*timer$1.tick),this.force.y&&(t.y+=this.force.y*timer$1.tick),(this.friction.x||this.friction.y)&&this.applyFriction(t),!this.ignoreGravity){var e=game$1.world.gravity;t.x+=e.x*this.gravityScale*this.mass*timer$1.tick,t.y+=e.y*this.gravityScale*this.mass*timer$1.tick,this.falling=t.y*Math.sign(e.y*this.gravityScale)>0,this.jumping=!this.falling&&this.jumping}0!==t.y&&(t.y=clamp(t.y,-this.maxVel.y,this.maxVel.y)),0!==t.x&&(t.x=clamp(t.x,-this.maxVel.x,this.maxVel.x))},Body.prototype.update=function(){return this.computeVelocity(this.vel),this.ancestor.pos.add(this.vel),0!==this.vel.x||0!==this.vel.y},Body.prototype.destroy=function(){this.onBodyUpdate=void 0,this.ancestor=void 0,this.shapes.length=0};var TextureCache=function(t){this.cache=new Map,this.tinted=new Map,this.units=new Map,this.max_size=t||1/0,this.clear()};function createAtlas(t,e,i,n){return void 0===i&&(i="default"),void 0===n&&(n="no-repeat"),{meta:{app:"melonJS",size:{w:t,h:e},repeat:n,image:"default"},frames:[{filename:i,frame:{x:0,y:0,w:t,h:e}}]}}TextureCache.prototype.clear=function(){this.cache.clear(),this.tinted.clear(),this.units.clear(),this.length=0},TextureCache.prototype.validate=function(){if(this.length>=this.max_size)throw new Error("Texture cache overflow: "+this.max_size+" texture units available for this GPU.")},TextureCache.prototype.get=function(t,e){return this.cache.has(t)||(e||(e=createAtlas(t.width,t.height,t.src?utils$1.file.getBasename(t.src):void 0)),this.set(t,new Texture(e,t,!1))),this.cache.get(t)},TextureCache.prototype.tint=function(t,e){var i=this.tinted.get(t);return void 0===i&&(i=this.tinted.set(t,new Map)),i.has(e)||i.set(e,video$1.renderer.tint(t,e,"multiply")),i.get(e)},TextureCache.prototype.set=function(t,e){var i=t.width,n=t.height;if(!(1!==video$1.renderer.WebGLVersion||isPowerOfTwo(i)&&isPowerOfTwo(n))){var r=void 0!==t.src?t.src:t;console.warn("[Texture] "+r+" is not a POT texture ("+i+"x"+n+")")}this.cache.set(t,e)},TextureCache.prototype.getUnit=function(t){return this.units.has(t)||(this.validate(),this.units.set(t,this.length++)),this.units.get(t)};var Texture=function(t,e,i){if(this.format=null,this.sources=new Map,this.atlases=new Map,void 0!==t)for(var n in t=Array.isArray(t)?t:[t]){var r=t[n];if(void 0!==r.meta){if(r.meta.app.includes("texturepacker")||r.meta.app.includes("free-tex-packer")){if(this.format="texturepacker",void 0===e){var o=loader$1.getImage(r.meta.image);if(!o)throw new Error("Atlas texture '"+o+"' not found");this.sources.set(r.meta.image,o)}else this.sources.set(r.meta.image||"default","string"==typeof e?loader$1.getImage(e):e);this.repeat="no-repeat"}else if(r.meta.app.includes("ShoeBox")){if(!r.meta.exporter||!r.meta.exporter.includes("melonJS"))throw new Error("ShoeBox requires the JSON exporter : https://github.com/melonjs/melonJS/tree/master/media/shoebox_JSON_export.sbx");this.format="ShoeBox",this.repeat="no-repeat",this.sources.set("default","string"==typeof e?loader$1.getImage(e):e)}else r.meta.app.includes("melonJS")&&(this.format="melonJS",this.repeat=r.meta.repeat||"no-repeat",this.sources.set("default","string"==typeof e?loader$1.getImage(e):e));this.atlases.set(r.meta.image||"default",this.parse(r))}else void 0!==r.framewidth&&void 0!==r.frameheight&&(this.format="Spritesheet (fixed cell size)",this.repeat="no-repeat",void 0!==e&&(r.image="string"==typeof e?loader$1.getImage(e):e),this.atlases.set("default",this.parseFromSpriteSheet(r)),this.sources.set("default",r.image))}if(0===this.atlases.length)throw new Error("texture atlas format not supported");!1!==i&&this.sources.forEach((function(t){i instanceof TextureCache?i.set(t,this):video$1.renderer.cache.set(t,this)}))};Texture.prototype.parse=function(t){var e={},i=this;return t.frames.forEach((function(n){if(n.hasOwnProperty("filename")){var r,o,s=n.frame,a=n.spriteSourceSize&&n.sourceSize&&n.pivot;a&&(r=n.sourceSize.w*n.pivot.x-(n.trimmed?n.spriteSourceSize.x:0),o=n.sourceSize.h*n.pivot.y-(n.trimmed?n.spriteSourceSize.y:0)),e[n.filename]={name:n.filename,texture:t.meta.image||"default",offset:new Vector2d(s.x,s.y),anchorPoint:a?new Vector2d(r/s.w,o/s.h):null,trimmed:!!n.trimmed,width:s.w,height:s.h,angle:!0===n.rotated?-ETA:0},i.addUvsMap(e,n.filename,t.meta.size.w,t.meta.size.h)}})),e},Texture.prototype.parseFromSpriteSheet=function(t){var e={},i=t.image,n=t.spacing||0,r=t.margin||0,o=i.width,s=i.height,a=pool.pull("Vector2d",~~((o-r+n)/(t.framewidth+n)),~~((s-r+n)/(t.frameheight+n)));if(o%(t.framewidth+n)!=0||s%(t.frameheight+n)!=0){var h=a.x*(t.framewidth+n),l=a.y*(t.frameheight+n);h-o!==n&&l-s!==n&&(o=h,s=l,console.warn("Spritesheet Texture for image: "+i.src+" is not divisible by "+(t.framewidth+n)+"x"+(t.frameheight+n)+", truncating effective size to "+o+"x"+s))}for(var u=0,c=a.x*a.y;u0){var e=this.getAnimationFrameObjectByIndex(this.current.idx).delay;for(this.dt+=t;this.dt>=e;){this.isDirty=!0,this.dt-=e;var i=this.current.length>1?this.current.idx+1:this.current.idx;if(this.setAnimationFrame(i),0===this.current.idx&&"function"==typeof this.resetAnim&&!1===this.resetAnim()){this.setAnimationFrame(this.current.length-1),this.dt%=e;break}e=this.getAnimationFrameObjectByIndex(this.current.idx).delay}}return this._flicker.isFlickering&&(this._flicker.duration-=t,this._flicker.duration<0&&("function"==typeof this._flicker.callback&&this._flicker.callback(),this.flicker(-1)),this.isDirty=!0),this.isDirty},destroy:function(){pool.push(this.offset),this.offset=void 0,this._super(Renderable,"destroy")},draw:function(t){if(!this._flicker.isFlickering||(this._flicker.state=!this._flicker.state,this._flicker.state)){var e=this.current,i=this.pos.x,n=this.pos.y,r=e.width,o=e.height,s=e.offset,a=this.offset;0!==e.angle&&(t.translate(-i,-n),t.rotate(e.angle),i-=o,r=e.height,o=e.width),t.drawImage(this.image,a.x+s.x,a.y+s.y,r,o,i,n,r,o)}}}),TMX_FLIP_H=2147483648,TMX_FLIP_V=1073741824,TMX_FLIP_AD=536870912,TMX_CLEAR_BIT_MASK$1=536870911,Tile=function(t){function e(e,i,n,r){var o,s;if(t.call(this),r.isCollection){var a=r.getTileImage(n&TMX_CLEAR_BIT_MASK$1);o=a.width,s=a.height}else o=r.tilewidth,s=r.tileheight;this.setMinMax(0,0,o,s),this.tileset=r,this.currentTransform=null,this.col=e,this.row=i,this.tileId=n,this.flippedX=0!=(this.tileId&TMX_FLIP_H),this.flippedY=0!=(this.tileId&TMX_FLIP_V),this.flippedAD=0!=(this.tileId&TMX_FLIP_AD),this.flipped=this.flippedX||this.flippedY||this.flippedAD,!0===this.flipped&&(null===this.currentTransform&&(this.currentTransform=new Matrix2d),this.setTileTransform(this.currentTransform.identity())),this.tileId&=TMX_CLEAR_BIT_MASK$1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setTileTransform=function(t){t.translate(this.width/2,this.height/2),this.flippedAD&&(t.rotate(-90*Math.PI/180),t.scale(-1,1)),this.flippedX&&t.scale(this.flippedAD?1:-1,this.flippedAD?-1:1),this.flippedY&&t.scale(this.flippedAD?-1:1,this.flippedAD?1:-1),t.translate(-this.width/2,-this.height/2)},e.prototype.getRenderable=function(t){var e,i=this.tileset;if(i.animations.has(this.tileId)){var n=[],r=[];i.animations.get(this.tileId).frames.forEach((function(t){r.push(t.tileid),n.push({name:""+t.tileid,delay:t.duration})})),(e=i.texture.createAnimationFromName(r,t)).addAnimation(this.tileId-i.firstgid,n),e.setCurrentAnimation(this.tileId-i.firstgid)}else if(!0===i.isCollection){var o=i.getTileImage(this.tileId);(e=new Sprite(0,0,Object.assign({image:o}))).anchorPoint.set(0,0),e.scale(t.width/this.width,t.height/this.height),void 0!==t.rotation&&(e.anchorPoint.set(.5,.5),e.currentTransform.rotate(t.rotation),e.currentTransform.translate(t.width/2,t.height/2),t.rotation=void 0)}else(e=i.texture.createSpriteFromName(this.tileId-i.firstgid,t)).anchorPoint.set(0,0);return this.setTileTransform(e.currentTransform),e},e}(Bounds$1),Line=Polygon.extend({contains:function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),t-=this.pos.x,e-=this.pos.y;var i=this.points[0],n=this.points[1];return(e-i.y)*(n.x-i.x)==(n.y-i.y)*(t-i.x)},recalc:function(){var t=this.edges,e=this.normals,i=this.indices,n=this.points;if(2!==n.length)throw new Error("Requires exactly 2 points");return void 0===t[0]&&(t[0]=new Vector2d),t[0].copy(n[1]).sub(n[0]),void 0===e[0]&&(e[0]=new Vector2d),e[0].copy(t[0]).perp().normalize(),i.length=0,this},clone:function(){var t=[];return this.points.forEach((function(e){t.push(e.clone())})),new Line(this.pos.x,this.pos.y,t)}}),Renderer=function(t){return this.settings=t,this.isContextValid=!0,this.currentScissor=new Int32Array([0,0,this.settings.width,this.settings.height]),this.currentBlendMode="normal",!0===device$1.ejecta?this.canvas=document.getElementById("canvas"):void 0!==window.canvas?this.canvas=window.canvas:void 0!==this.settings.canvas?this.canvas=this.settings.canvas:this.canvas=video$1.createCanvas(this.settings.zoomX,this.settings.zoomY),this.backBufferCanvas=this.canvas,this.context=null,this.currentColor=new Color(0,0,0,1),this.currentTint=new Color(255,255,255,1),this.projectionMatrix=new Matrix3d,this.uvOffset=0,this.Texture=Texture,event.subscribe(event.GAME_RESET,(function(){video$1.renderer.reset()})),this};Renderer.prototype.clear=function(){},Renderer.prototype.reset=function(){this.resetTransform(),this.setBlendMode(this.settings.blendMode),this.setColor("#000000"),this.clearTint(),this.cache.clear(),this.currentScissor[0]=0,this.currentScissor[1]=0,this.currentScissor[2]=this.backBufferCanvas.width,this.currentScissor[3]=this.backBufferCanvas.height},Renderer.prototype.getCanvas=function(){return this.backBufferCanvas},Renderer.prototype.getScreenCanvas=function(){return this.canvas},Renderer.prototype.getScreenContext=function(){return this.context},Renderer.prototype.getBlendMode=function(){return this.currentBlendMode},Renderer.prototype.getContext2d=function(t,e){if(null==t)throw new Error("You must pass a canvas element in order to create a 2d context");if(void 0===t.getContext)throw new Error("Your browser does not support HTML5 canvas.");"boolean"!=typeof e&&(e=!0);var i=t.getContext("2d",{alpha:e});return i.canvas||(i.canvas=t),this.setAntiAlias(i,this.settings.antiAlias),i},Renderer.prototype.getWidth=function(){return this.backBufferCanvas.width},Renderer.prototype.getHeight=function(){return this.backBufferCanvas.height},Renderer.prototype.getColor=function(){return this.currentColor},Renderer.prototype.globalAlpha=function(){return this.currentColor.glArray[3]},Renderer.prototype.overlaps=function(t){return t.left<=this.getWidth()&&t.right>=0&&t.top<=this.getHeight()&&t.bottom>=0},Renderer.prototype.resize=function(t,e){t===this.backBufferCanvas.width&&e===this.backBufferCanvas.height||(this.canvas.width=this.backBufferCanvas.width=t,this.canvas.height=this.backBufferCanvas.height=e,this.currentScissor[0]=0,this.currentScissor[1]=0,this.currentScissor[2]=t,this.currentScissor[3]=e,event.publish(event.CANVAS_ONRESIZE,[t,e]))},Renderer.prototype.setAntiAlias=function(t,e){var i=t.canvas;setPrefixed("imageSmoothingEnabled",!0===e,t),!0!==e?(i.style["image-rendering"]="optimizeSpeed",i.style["image-rendering"]="-moz-crisp-edges",i.style["image-rendering"]="-o-crisp-edges",i.style["image-rendering"]="-webkit-optimize-contrast",i.style["image-rendering"]="optimize-contrast",i.style["image-rendering"]="crisp-edges",i.style["image-rendering"]="pixelated",i.style.msInterpolationMode="nearest-neighbor"):i.style["image-rendering"]="auto"},Renderer.prototype.setProjection=function(t){this.projectionMatrix.copy(t)},Renderer.prototype.stroke=function(t,e){t instanceof Rect||t instanceof Bounds$1?this.strokeRect(t.left,t.top,t.width,t.height,e):t instanceof Line||t instanceof Polygon?this.strokePolygon(t,e):t instanceof Ellipse&&this.strokeEllipse(t.pos.x,t.pos.y,t.radiusV.x,t.radiusV.y,e)},Renderer.prototype.tint=function(t,e,i){var n=video$1.createCanvas(t.width,t.height,!0),r=this.getContext2d(n);return r.save(),r.fillStyle=e instanceof Color?e.toRGB():e,r.fillRect(0,0,t.width,t.height),r.globalCompositeOperation=i||"multiply",r.drawImage(t,0,0),r.globalCompositeOperation="destination-atop",r.drawImage(t,0,0),r.restore(),n},Renderer.prototype.fill=function(t){this.stroke(t,!0)},Renderer.prototype.setMask=function(t){},Renderer.prototype.clearMask=function(){},Renderer.prototype.setTint=function(t){this.currentTint.copy(t)},Renderer.prototype.clearTint=function(){this.currentTint.setColor(255,255,255,1)},Renderer.prototype.drawFont=function(){};var CanvasRenderer=function(t){function e(e){return t.call(this,e),this.context=this.getContext2d(this.getScreenCanvas(),this.settings.transparent),this.settings.doubleBuffering?(this.backBufferCanvas=video$1.createCanvas(this.settings.width,this.settings.height,!0),this.backBufferContext2D=this.getContext2d(this.backBufferCanvas)):(this.backBufferCanvas=this.getScreenCanvas(),this.backBufferContext2D=this.context),this.setBlendMode(this.settings.blendMode),this.setColor(this.currentColor),this.cache=new TextureCache,!1===this.settings.textureSeamFix||this.settings.antiAlias||(this.uvOffset=1),this}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this.clearColor(this.currentColor,!0!==this.settings.transparent)},e.prototype.resetTransform=function(){this.backBufferContext2D.setTransform(1,0,0,1,0,0)},e.prototype.setBlendMode=function(t,e){if(e=e||this.getContext(),this.currentBlendMode=t,"multiply"===t)e.globalCompositeOperation="multiply";else e.globalCompositeOperation="source-over",this.currentBlendMode="normal";this.settings.doubleBuffering&&this.settings.transparent&&(this.context.globalCompositeOperation="copy")},e.prototype.clear=function(){this.settings.transparent&&this.clearColor("rgba(0,0,0,0)",!0)},e.prototype.flush=function(){this.settings.doubleBuffering&&this.context.drawImage(this.backBufferCanvas,0,0)},e.prototype.clearColor=function(t,e){this.save(),this.resetTransform(),this.backBufferContext2D.globalCompositeOperation=e?"copy":"source-over",this.backBufferContext2D.fillStyle=t instanceof Color?t.toRGBA():t,this.fillRect(0,0,this.backBufferCanvas.width,this.backBufferCanvas.height),this.restore()},e.prototype.clearRect=function(t,e,i,n){this.backBufferContext2D.clearRect(t,e,i,n)},e.prototype.createPattern=function(t,e){return this.backBufferContext2D.createPattern(t,e)},e.prototype.drawImage=function(t,e,i,n,r,o,s,a,h){if(!(this.backBufferContext2D.globalAlpha<1/255)){void 0===n?(n=a=t.width,r=h=t.height,o=e,s=i,e=0,i=0):void 0===o&&(o=e,s=i,a=n,h=r,n=t.width,r=t.height,e=0,i=0),!1===this.settings.subPixel&&(o=~~o,s=~~s);var l=t,u=this.currentTint.toArray();1===u[0]&&1===u[1]&&1===u[2]||(l=this.cache.tint(t,this.currentTint.toRGB())),this.backBufferContext2D.drawImage(l,e,i,n,r,o,s,a,h)}},e.prototype.drawPattern=function(t,e,i,n,r){if(!(this.backBufferContext2D.globalAlpha<1/255)){var o=this.backBufferContext2D.fillStyle;this.backBufferContext2D.fillStyle=t,this.backBufferContext2D.fillRect(e,i,n,r),this.backBufferContext2D.fillStyle=o}},e.prototype.strokeArc=function(t,e,i,n,r,o,s){var a=this.backBufferContext2D;a.globalAlpha<1/255||(a.translate(t,e),a.beginPath(),a.arc(0,0,i,n,r,o||!1),a[!0===s?"fill":"stroke"](),a.translate(-t,-e))},e.prototype.fillArc=function(t,e,i,n,r,o){this.strokeArc(t,e,i,n,r,o||!1,!0)},e.prototype.strokeEllipse=function(t,e,i,n,r){var o=this.backBufferContext2D;if(!(o.globalAlpha<1/255)){var s=t-i,a=t+i,h=e-n,l=e+n,u=.551784*i,c=.551784*n,d=t-u,p=t+u,f=e-c,g=e+c;o.beginPath(),o.moveTo(t,h),o.bezierCurveTo(p,h,a,f,a,e),o.bezierCurveTo(a,g,p,l,t,l),o.bezierCurveTo(d,l,s,g,s,e),o.bezierCurveTo(s,f,d,h,t,h),o[!0===r?"fill":"stroke"](),o.closePath()}},e.prototype.fillEllipse=function(t,e,i,n){this.strokeEllipse(t,e,i,n,!0)},e.prototype.strokeLine=function(t,e,i,n){var r=this.backBufferContext2D;r<1/255||(r.beginPath(),r.moveTo(t,e),r.lineTo(i,n),r.stroke())},e.prototype.fillLine=function(t,e,i,n){this.strokeLine(t,e,i,n)},e.prototype.strokePolygon=function(t,e){var i=this.backBufferContext2D;if(!(i.globalAlpha<1/255)){var n;this.translate(t.pos.x,t.pos.y),i.beginPath(),i.moveTo(t.points[0].x,t.points[0].y);for(var r=1;r0,this.isAnimated&&(this.preRender=!1),this.getBounds().addBounds(this.getRenderer().getBounds(),!0),this.getBounds().shift(this.pos),!0!==this.preRender||this.canvasRenderer||(this.canvasRenderer=new CanvasRenderer({canvas:video$1.createCanvas(this.width,this.height),widht:this.width,heigth:this.height,transparent:!0}),preRenderLayer(this,this.canvasRenderer))},onDeactivateEvent:function(){this.animatedTilesets=void 0},setRenderer:function(t){this.renderer=t},getRenderer:function(){return this.renderer},getTileId:function(t,e){var i=this.getTile(t,e);return i?i.tileId:null},getTile:function(t,e){var i=null;if(this.contains(t,e)){var n=this.getRenderer().pixelToTileCoords(t,e,pool.pull("Vector2d"));i=this.cellAt(n.x,n.y),pool.push(n)}return i},setTile:function(t,e,i){return this.layerData[e][i]=t,t},getTileById:function(t,e,i){return this.tileset.contains(t)||(this.tileset=this.tilesets.getTilesetByGid(t)),new Tile(e,i,t,this.tileset)},cellAt:function(t,e,i){var n=~~t,r=~~e,o=this.getRenderer();return!1===i||n>=0&&n=0&&rthis.max.x&&(this.max.x=n.x),n.xthis.max.y&&(this.max.y=n.y),n.ythis.max.x&&(this.max.x=t.max.x),t.min.xthis.max.y&&(this.max.y=t.max.y),t.min.y=this.min.x&&e<=this.max.x&&i>=this.min.y&&n<=this.max.y},Bounds.prototype.overlaps=function(t){return this.left<=t.right&&this.right>=t.left&&this.bottom>=t.top&&this.top<=t.bottom},Bounds.prototype.isFinite=function(){return isFinite(this.min.x)&&isFinite(this.max.x)&&isFinite(this.min.y)&&isFinite(this.max.y)},Bounds.prototype.translate=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.min.x+=t,this.max.x+=t,this.min.y+=e,this.max.y+=e},Bounds.prototype.shift=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y);var i=this.max.x-this.min.x,n=this.max.y-this.min.y;this.min.x=t,this.max.x=t+i,this.min.y=e,this.max.y=e+n},Bounds.prototype.clone=function(){var t=new Bounds;return t.addBounds(this),t},Bounds.prototype.toPolygon=function(){return new Polygon(this.x,this.y,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])},Object.defineProperties(Bounds.prototype,prototypeAccessors);var TMXRenderer=function(t,e,i,n){this.cols=t,this.rows=e,this.tilewidth=i,this.tileheight=n,this.bounds=new Bounds};TMXRenderer.prototype.canRender=function(t){return this.tilewidth===t.tilewidth&&this.tileheight===t.tileheight},TMXRenderer.prototype.getBounds=function(t){var e=t instanceof TMXLayer?pool.pull("Bounds"):this.bounds;return e.setMinMax(0,0,this.cols*this.tilewidth,this.rows*this.tileheight),e},TMXRenderer.prototype.pixelToTileCoords=function(t,e,i){return i},TMXRenderer.prototype.tileToPixelCoords=function(t,e,i){return i},TMXRenderer.prototype.drawTile=function(t,e,i,n){},TMXRenderer.prototype.drawTileLayer=function(t,e,i){};var TMXOrthogonalRenderer=function(t){function e(e){t.call(this,e.cols,e.rows,e.tilewidth,e.tileheight)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.canRender=function(e){return"orthogonal"===e.orientation&&t.prototype.canRender.call(this,e)},e.prototype.pixelToTileCoords=function(t,e,i){return(i||new Vector2d).set(t/this.tilewidth,e/this.tileheight)},e.prototype.tileToPixelCoords=function(t,e,i){return(i||new Vector2d).set(t*this.tilewidth,e*this.tileheight)},e.prototype.adjustPosition=function(t){"number"==typeof t.gid&&(t.y-=t.height)},e.prototype.drawTile=function(t,e,i,n){var r=n.tileset;r.drawTile(t,r.tileoffset.x+e*this.tilewidth,r.tileoffset.y+(i+1)*this.tileheight-r.tileheight,n)},e.prototype.drawTileLayer=function(t,e,i){var n=1,r=1,o=this.pixelToTileCoords(Math.max(i.pos.x-(e.maxTileSize.width-e.tilewidth),0),Math.max(i.pos.y-(e.maxTileSize.height-e.tileheight),0),pool.pull("Vector2d")).floorSelf(),s=this.pixelToTileCoords(i.pos.x+i.width+this.tilewidth,i.pos.y+i.height+this.tileheight,pool.pull("Vector2d")).ceilSelf();switch(s.x=s.x>this.cols?this.cols:s.x,s.y=s.y>this.rows?this.rows:s.y,e.renderorder){case"right-up":s.y=o.y+(o.y=s.y)-s.y,r=-1;break;case"left-down":s.x=o.x+(o.x=s.x)-s.x,n=-1;break;case"left-up":s.x=o.x+(o.x=s.x)-s.x,s.y=o.y+(o.y=s.y)-s.y,n=-1,r=-1}for(var a=o.y;a!==s.y;a+=r)for(var h=o.x;h!==s.x;h+=n){var l=e.cellAt(h,a,!1);l&&this.drawTile(t,h,a,l)}pool.push(o),pool.push(s)},e}(TMXRenderer),TMXIsometricRenderer=function(t){function e(e){t.call(this,e.cols,e.rows,e.tilewidth,e.tileheight),this.hTilewidth=this.tilewidth/2,this.hTileheight=this.tileheight/2,this.originX=this.rows*this.hTilewidth}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.canRender=function(e){return"isometric"===e.orientation&&t.prototype.canRender.call(this,e)},e.prototype.getBounds=function(t){var e=t instanceof TMXLayer?pool.pull("Bounds"):this.bounds;return e.setMinMax(0,0,(this.cols+this.rows)*(this.tilewidth/2),(this.cols+this.rows)*(this.tileheight/2)),e},e.prototype.pixelToTileCoords=function(t,e,i){return(i||new Vector2d).set(e/this.tileheight+(t-this.originX)/this.tilewidth,e/this.tileheight-(t-this.originX)/this.tilewidth)},e.prototype.tileToPixelCoords=function(t,e,i){return(i||new Vector2d).set((t-e)*this.hTilewidth+this.originX,(t+e)*this.hTileheight)},e.prototype.adjustPosition=function(t){var e=t.x/this.hTilewidth,i=t.y/this.tileheight,n=pool.pull("Vector2d");this.tileToPixelCoords(e,i,n),t.x=n.x,t.y=n.y,pool.push(n)},e.prototype.drawTile=function(t,e,i,n){var r=n.tileset;r.drawTile(t,(this.cols-1)*r.tilewidth+(e-i)*r.tilewidth>>1,-r.tilewidth+(e+i)*r.tileheight>>2,n)},e.prototype.drawTileLayer=function(t,e,i){var n=e.tileset,r=this.pixelToTileCoords(i.pos.x-n.tilewidth,i.pos.y-n.tileheight,pool.pull("Vector2d")).floorSelf(),o=this.pixelToTileCoords(i.pos.x+i.width+n.tilewidth,i.pos.y+i.height+n.tileheight,pool.pull("Vector2d")).ceilSelf(),s=this.tileToPixelCoords(o.x,o.y,pool.pull("Vector2d")),a=this.tileToPixelCoords(r.x,r.y,pool.pull("Vector2d"));a.x-=this.hTilewidth,a.y+=this.tileheight;var h=a.y-i.pos.y>this.hTileheight,l=i.pos.x-a.x1&&(e.height+=this.rowheight)):(e.setMinMax(0,0,this.cols*(this.tilewidth+this.sidelengthx),this.rows*this.rowheight+this.sideoffsety),e.height>1&&(e.width+=this.columnwidth)),e},e.prototype.doStaggerX=function(t){return this.staggerX&&1&t^this.staggerEven},e.prototype.doStaggerY=function(t){return!this.staggerX&&1&t^this.staggerEven},e.prototype.topLeft=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t-1,e):n.set(t-1,e-1):1&e^this.staggerEven?n.set(t,e-1):n.set(t-1,e-1),n},e.prototype.topRight=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t+1,e):n.set(t+1,e-1):1&e^this.staggerEven?n.set(t+1,e-1):n.set(t,e-1),n},e.prototype.bottomLeft=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t-1,e+1):n.set(t-1,e):1&e^this.staggerEven?n.set(t,e+1):n.set(t-1,e+1),n},e.prototype.bottomRight=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t+1,e+1):n.set(t+1,e):1&e^this.staggerEven?n.set(t+1,e+1):n.set(t,e+1),n},e.prototype.pixelToTileCoords=function(t,e,i){var n=i||new Vector2d;this.staggerX?t-=this.staggerEven?this.tilewidth:this.sideoffsetx:e-=this.staggerEven?this.tileheight:this.sideoffsety;var r,o,s,a,h=pool.pull("Vector2d",Math.floor(t/(2*this.columnwidth)),Math.floor(e/(2*this.rowheight))),l=pool.pull("Vector2d",t-h.x*(2*this.columnwidth),e-h.y*(2*this.rowheight));this.staggerX?(h.x=2*h.x,this.staggerEven&&++h.x):(h.y=2*h.y,this.staggerEven&&++h.y),this.staggerX?(s=(r=this.sidelengthx/2)+this.columnwidth,a=this.tileheight/2,this.centers[0].set(r,a),this.centers[1].set(s,a-this.rowheight),this.centers[2].set(s,a+this.rowheight),this.centers[3].set(s+this.columnwidth,a)):(o=this.sidelengthy/2,s=this.tilewidth/2,a=o+this.rowheight,this.centers[0].set(s,o),this.centers[1].set(s-this.columnwidth,a),this.centers[2].set(s+this.columnwidth,a),this.centers[3].set(s,a+this.rowheight));for(var u=0,c=Number.MAX_VALUE,d=0;d<4;++d){var p=this.centers[d].sub(l).length2();pa.y&&(s=this.topLeft(s.x,s.y,s)),-this.sideoffsety+h>a.y&&(s=this.topRight(s.x,s.y,s)),this.sideoffsety+h0;var h=t.tileoffset;h&&(this.tileoffset.x=+h.x,this.tileoffset.y=+h.y);var l=t.tileproperties;if(l)for(e in l)l.hasOwnProperty(e)&&this.setTileProperty(+e+this.firstgid,l[e]);if(!1===this.isCollection){if(this.image=loader$1.getImage(t.image),!this.image)throw new Error("melonJS: '"+t.image+"' file for tileset '"+this.name+"' not found!");this.texture=video$1.renderer.cache.get(this.image,{framewidth:this.tilewidth,frameheight:this.tileheight,margin:this.margin,spacing:this.spacing}),this.atlas=this.texture.getAtlas();var u=+t.columns||Math.round(this.image.width/(this.tilewidth+this.spacing)),c=Math.round(this.image.height/(this.tileheight+this.spacing));t.tilecount%u>0&&++c,this.lastgid=this.firstgid+(u*c-1||0),t.tilecount&&this.lastgid-this.firstgid+1!=+t.tilecount&&console.warn("Computed tilecount ("+(this.lastgid-this.firstgid+1)+") does not match expected tilecount ("+t.tilecount+")")}};TMXTileset.prototype.getTileImage=function(t){return this.imageCollection[t]},TMXTileset.prototype.setTileProperty=function(t,e){this.TileProperties[t]=e},TMXTileset.prototype.contains=function(t){return t>=this.firstgid&&t<=this.lastgid},TMXTileset.prototype.getViewTileId=function(t){var e=t-this.firstgid;return this.animations.has(e)?this.animations.get(e).cur.tileid:e},TMXTileset.prototype.getTileProperties=function(t){return this.TileProperties[t]},TMXTileset.prototype.update=function(t){var e=0,i=timer$1.getTime(),n=!1;return this._lastUpdate!==i&&(this._lastUpdate=i,this.animations.forEach((function(i){for(i.dt+=t,e=i.cur.duration;i.dt>=e;)i.dt-=e,i.idx=(i.idx+1)%i.frames.length,i.cur=i.frames[i.idx],e=i.cur.duration,n=!0}))),n},TMXTileset.prototype.drawTile=function(t,e,i,n){if(n.flipped&&(t.save(),t.translate(e,i),t.transform(n.currentTransform),e=i=0),!0===this.isCollection)t.drawImage(this.imageCollection[n.tileId],0,0,n.width,n.height,e,i,n.width,n.height);else{var r=this.atlas[this.getViewTileId(n.tileId)].offset;t.drawImage(this.image,r.x,r.y,this.tilewidth,this.tileheight,e,i,this.tilewidth+t.uvOffset,this.tileheight+t.uvOffset)}n.flipped&&t.restore()};var TMX_CLEAR_BIT_MASK=536870911,TMXTilesetGroup=function(){this.tilesets=[],this.length=0};TMXTilesetGroup.prototype.add=function(t){this.tilesets.push(t),this.length++},TMXTilesetGroup.prototype.getTilesetByIndex=function(t){return this.tilesets[t]},TMXTilesetGroup.prototype.getTilesetByGid=function(t){var e=-1;t&=TMX_CLEAR_BIT_MASK;for(var i=0,n=this.tilesets.length;i=this.tilesets[i].firstgid&&(e=i)}if(-1!==e)return this.tilesets[e];throw new Error("no matching tileset found for gid "+t)};var TMXObject=function(t,e,i){this.points=void 0,this.name=e.name,this.x=+e.x,this.y=+e.y,this.z=+i,this.width=+e.width||0,this.height=+e.height||0,this.gid=+e.gid||null,this.tintcolor=e.tintcolor,this.type=e.type,this.type=e.type,this.rotation=degToRad(+e.rotation||0),this.id=+e.id||void 0,this.orientation=t.orientation,this.shapes=void 0,this.isEllipse=!1,this.isPolygon=!1,this.isPolyLine=!1,"number"==typeof this.gid?this.setTile(t.tilesets):void 0!==e.ellipse?this.isEllipse=!0:void 0!==e.polygon?(this.points=e.polygon,this.isPolygon=!0):void 0!==e.polyline&&(this.points=e.polyline,this.isPolyLine=!0),void 0!==e.text?(this.text=e.text,this.text.font=e.text.fontfamily||"sans-serif",this.text.size=e.text.pixelsize||16,this.text.fillStyle=e.text.color||"#000000",this.text.textAlign=e.text.halign||"left",this.text.textBaseline=e.text.valign||"top",this.text.width=this.width,this.text.height=this.height,applyTMXProperties(this.text,e)):(applyTMXProperties(this,e),this.shapes||(this.shapes=this.parseTMXShapes())),t.isEditor||t.getRenderer().adjustPosition(this)};TMXObject.prototype.setTile=function(t){var e=t.getTilesetByGid(this.gid);!1===e.isCollection&&(this.width=this.framewidth=e.tilewidth,this.height=this.frameheight=e.tileheight),this.tile=new Tile(this.x,this.y,this.gid,e)},TMXObject.prototype.parseTMXShapes=function(){var t=0,e=[];if(!0===this.isEllipse)e.push(new Ellipse(this.width/2,this.height/2,this.width,this.height).rotate(this.rotation));else if(!0===this.isPolygon)e.push(new Polygon(0,0,this.points).rotate(this.rotation));else if(!0===this.isPolyLine){var i,n,r=this.points,o=r.length-1;for(t=0;t0&&(e.autoSort=!0,e.autoDepth=!0,i.push(e))}return i},TMXTileMap.prototype.getLayers=function(){return this.readMapObjects(this.data),this.layers},TMXTileMap.prototype.destroy=function(){this.tilesets=void 0,this.layers.length=0,this.objectGroups.length=0,this.initialized=!1};var levels={},levelIdx=[],currentLevelIdx=0;function safeLoadLevel(t,e,i){e.container.reset(),game$1.reset(),levels[level.getCurrentLevelId()]&&levels[level.getCurrentLevelId()].destroy(),currentLevelIdx=levelIdx.indexOf(t),loadTMXLevel(t,e.container,e.flatten,e.setViewportBounds),event.publish(event.LEVEL_LOADED,[t]),e.onLoaded(t),i&&state$1.restart()}function loadTMXLevel(t,e,i,n){var r=levels[t];utils$1.resetGUID(t,r.nextobjectid),e.anchorPoint.set(0,0),r.addTo(e,i,n)}var level={add:function(t,e,i){if("tmx"===t)return null==levels[e]&&(levels[e]=new TMXTileMap(e,loader$1.getTMX(e)),levelIdx.push(e),i&&i(),!0);throw new Error("no level loader defined for format "+t)},load:function(t,e){if(e=Object.assign({container:game$1.world,onLoaded:game$1.onLevelLoaded,flatten:game$1.mergeGroup,setViewportBounds:!0},e||{}),void 0===levels[t])throw new Error("level "+t+" not found");if(!(levels[t]instanceof TMXTileMap))throw new Error("no level loader defined");return state$1.isRunning()?(state$1.stop(),utils$1.function.defer(safeLoadLevel,this,t,e,!0)):safeLoadLevel(t,e),!0},getCurrentLevelId:function(){return levelIdx[currentLevelIdx]},getCurrentLevel:function(){return levels[this.getCurrentLevelId()]},reload:function(t){return this.load(this.getCurrentLevelId(),t)},next:function(t){return currentLevelIdx+1=0&&this.load(levelIdx[currentLevelIdx-1],t)},levelCount:function(){return levelIdx.length}},imgList={},tmxList={},binList={},jsonList={},baseURL={},resourceCount=0,loadCount=0,timerId$1=0;function checkLoadStatus(t){if(loadCount===resourceCount){if(!t&&!loader.onload)throw new Error("no load callback defined");clearTimeout(timerId$1);var e=t||loader.onload;setTimeout((function(){e(),event.publish(event.LOADER_COMPLETE)}),300)}else timerId$1=setTimeout((function(){checkLoadStatus(t)}),100)}function preloadImage(t,e,i){imgList[t.name]=new Image,imgList[t.name].onload=e,imgList[t.name].onerror=i,"string"==typeof loader.crossOrigin&&(imgList[t.name].crossOrigin=loader.crossOrigin),imgList[t.name].src=t.src+loader.nocache}function preloadFontFace(t,e,i){var n=new FontFace(t.name,t.src);n.load().then((function(){document.fonts.add(n),document.body.style.fontFamily=t.name,e()}),(function(e){i(t.name)}))}function preloadTMX(t,e,i){function n(e){tmxList[t.name]=e,"tmx"===t.type&&level.add(t.type,t.name)}if(t.data)return n(t.data),void e();var r=new XMLHttpRequest,o=utils$1.file.getExtension(t.src);r.overrideMimeType&&("json"===o?r.overrideMimeType("application/json"):r.overrideMimeType("text/xml")),r.open("GET",t.src+loader.nocache,!0),r.withCredentials=loader.withCredentials,r.ontimeout=i,r.onreadystatechange=function(){if(4===r.readyState)if(200===r.status||0===r.status&&r.responseText){var s=null;switch(o){case"xml":case"tmx":case"tsx":if(device$1.ua.match(/msie/i)||!r.responseXML){if(!window.DOMParser)throw new Error("XML file format loading not supported, use the JSON file format instead");s=(new DOMParser).parseFromString(r.responseText,"text/xml")}else s=r.responseXML;var a=parse(s);switch(o){case"tmx":s=a.map;break;case"tsx":s=a.tilesets[0]}break;case"json":s=JSON.parse(r.responseText);break;default:throw new Error("TMX file format "+o+"not supported !")}n(s),e()}else i(t.name)},r.send()}function preloadJSON(t,e,i){var n=new XMLHttpRequest;n.overrideMimeType&&n.overrideMimeType("application/json"),n.open("GET",t.src+loader.nocache,!0),n.withCredentials=loader.withCredentials,n.ontimeout=i,n.onreadystatechange=function(){4===n.readyState&&(200===n.status||0===n.status&&n.responseText?(jsonList[t.name]=JSON.parse(n.responseText),e()):i(t.name))},n.send()}function preloadBinary(t,e,i){var n=new XMLHttpRequest;n.open("GET",t.src+loader.nocache,!0),n.withCredentials=loader.withCredentials,n.responseType="arraybuffer",n.onerror=i,n.onload=function(){var i=n.response;if(i){for(var r=new Uint8Array(i),o=[],s=0;s3){var i="melonJS: failed loading "+t;if(!1!==audio.stopOnAudioError)throw new Error(i);audio.disable(),e&&e(),console.log(i+", disabling audio")}else audioTracks[t].load()},audio={stopOnAudioError:!0,init:function(t){if(!exports.initialized)throw new Error("me.audio.init() called before engine initialization.");return t="string"==typeof t?t:"mp3",this.audioFormats=t.split(","),!howler.Howler.noAudio},hasFormat:function(t){return this.hasAudio&&howler.Howler.codecs(t)},hasAudio:function(){return!howler.Howler.noAudio},enable:function(){this.unmuteAll()},disable:function(){this.muteAll()},load:function(t,e,i,n){var r=[];if(void 0===this.audioFormats||0===this.audioFormats.length)throw new Error("target audio extension(s) should be set through me.audio.init() before calling the preloader.");for(var o=0;o0)(JSON.parse(t)||[]).forEach((function(t){data[t]=JSON.parse(localStorage.getItem("me.save."+t))}))}},add:function(t){var e=save;Object.keys(t).forEach((function(i){var n;isReserved(i)||(n=i,Object.defineProperty(e,n,{configurable:!0,enumerable:!0,get:function(){return data[n]},set:function(t){data[n]=t,!0===device$1.localStorage&&localStorage.setItem("me.save."+n,JSON.stringify(t))}}),i in data||(e[i]=t[i]))})),!0===device$1.localStorage&&localStorage.setItem("me.save",JSON.stringify(Object.keys(data)))},remove:function(t){isReserved(t)||void 0!==data[t]&&(delete data[t],!0===device$1.localStorage&&(localStorage.removeItem("me.save."+t),localStorage.setItem("me.save",JSON.stringify(Object.keys(data)))))}},accelInitialized=!1,deviceOrientationInitialized=!1,swipeEnabled=!0;function disableSwipeFn(t){return t.preventDefault(),"function"==typeof window.scroll&&window.scroll(0,0),!1}var readyBound=!1,isReady=!1,readyList=[],_domRect={left:0,top:0,x:0,y:0,width:0,height:0,right:0,bottom:0},device={_domReady:function(t){if(!isReady){if(!document.body)return setTimeout(this._domReady,13);for(document.removeEventListener&&document.removeEventListener("DOMContentLoaded",this._domReady,!1),window.removeEventListener("load",this._domReady,!1);readyList.length;)readyList.shift().call(window,[]);isReady=!0}},_check:function(){this._detectDevice(),this.isMobile&&this.enableSwipe(!1),this.TouchEvent=!!("ontouchstart"in window),this.PointerEvent=!!window.PointerEvent,window.gesture=prefixed("gesture"),this.touch=this.TouchEvent||this.PointerEvent,this.maxTouchPoints=this.touch?this.PointerEvent?navigator.maxTouchPoints||1:10:1,this.wheel="onwheel"in document.createElement("div"),this.hasPointerLockSupport=prefixed("pointerLockElement",document),this.hasPointerLockSupport&&(document.exitPointerLock=prefixed("exitPointerLock",document)),this.hasDeviceOrientation=!!window.DeviceOrientationEvent,this.hasAccelerometer=!!window.DeviceMotionEvent,this.hasFullscreenSupport=prefixed("fullscreenEnabled",document)||document.mozFullScreenEnabled,document.exitFullscreen=prefixed("cancelFullScreen",document)||prefixed("exitFullscreen",document),navigator.vibrate=prefixed("vibrate",navigator),this.hasWebAudio=!(!window.AudioContext&&!window.webkitAudioContext);try{this.localStorage=!!window.localStorage}catch(t){this.localStorage=!1}try{this.OffscreenCanvas=void 0!==window.OffscreenCanvas&&null!==new OffscreenCanvas(0,0).getContext("2d")}catch(t){this.OffscreenCanvas=!1}var t,e;window.addEventListener("blur",(function(){this.stopOnBlur&&state$1.stop(!0),this.pauseOnBlur&&state$1.pause(!0)}),!1),window.addEventListener("focus",(function(){this.stopOnBlur&&state$1.restart(!0),this.resumeOnFocus&&state$1.resume(!0),this.autoFocus&&this.focus()}),!1),void 0!==document.hidden?(t="hidden",e="visibilitychange"):void 0!==document.mozHidden?(t="mozHidden",e="mozvisibilitychange"):void 0!==document.msHidden?(t="msHidden",e="msvisibilitychange"):void 0!==document.webkitHidden&&(t="webkitHidden",e="webkitvisibilitychange"),"string"==typeof e&&document.addEventListener(e,(function(){document[t]?(this.stopOnBlur&&state$1.stop(!0),this.pauseOnBlur&&state$1.pause(!0)):(this.stopOnBlur&&state$1.restart(!0),this.resumeOnFocus&&state$1.resume(!0))}),!1)},_detectDevice:function(){this.iOS=/iPhone|iPad|iPod/i.test(this.ua),this.android=/Android/i.test(this.ua),this.android2=/Android 2/i.test(this.ua),this.linux=/Linux/i.test(this.ua),this.chromeOS=/CrOS/.test(this.ua),this.wp=/Windows Phone/i.test(this.ua),this.BlackBerry=/BlackBerry/i.test(this.ua),this.Kindle=/Kindle|Silk.*Mobile Safari/i.test(this.ua),this.isMobile=/Mobi/i.test(this.ua)||this.iOS||this.android||this.wp||this.BlackBerry||this.Kindle||!1,this.ejecta=void 0!==window.ejecta,this.isWeixin=/MicroMessenger/i.test(this.ua)},ua:navigator.userAgent,localStorage:!1,hasAccelerometer:!1,hasDeviceOrientation:!1,hasFullscreenSupport:!1,hasPointerLockSupport:!1,hasWebAudio:!1,nativeBase64:"function"==typeof window.atob,maxTouchPoints:1,touch:!1,wheel:!1,isMobile:!1,iOS:!1,android:!1,android2:!1,linux:!1,ejecta:!1,isWeixin:!1,chromeOS:!1,wp:!1,BlackBerry:!1,Kindle:!1,accelerationX:0,accelerationY:0,accelerationZ:0,gamma:0,beta:0,alpha:0,language:navigator.language||navigator.browserLanguage||navigator.userLanguage||"en",pauseOnBlur:!0,resumeOnFocus:!0,autoFocus:!0,stopOnBlur:!1,OffscreenCanvas:!1,onReady:function(t){isReady?t.call(window,[]):(readyList.push(t),readyBound||("complete"===document.readyState?window.setTimeout(this._domReady,0):(document.addEventListener&&document.addEventListener("DOMContentLoaded",this._domReady,!1),window.addEventListener("load",this._domReady,!1)),readyBound=!0))},enableSwipe:function(t){!1!==t?!1===swipeEnabled&&(window.document.removeEventListener("touchmove",disableSwipeFn,!1),swipeEnabled=!0):!0===swipeEnabled&&(window.document.addEventListener("touchmove",disableSwipeFn,!1),swipeEnabled=!1)},requestFullscreen:function(t){this.hasFullscreenSupport&&((t=t||video$1.getParent()).requestFullscreen=prefixed("requestFullscreen",t)||t.mozRequestFullScreen,t.requestFullscreen())},exitFullscreen:function(){this.hasFullscreenSupport&&document.exitFullscreen()},getScreenOrientation:function(){var t="portrait",e="landscape",i=window.screen;if(void 0!==i){var n=prefixed("orientation",i);if(void 0!==n&&"string"==typeof n.type)return n.type;if("string"==typeof n)return n}return"number"==typeof window.orientation?90===Math.abs(window.orientation)?e:t:window.outerWidth>window.outerHeight?e:t},lockOrientation:function(t){var e=window.screen;if(void 0!==e){var i=prefixed("lockOrientation",e);if(void 0!==i)return i(t)}return!1},unlockOrientation:function(t){var e=window.screen;if(void 0!==e){var i=prefixed("unlockOrientation",e);if(void 0!==i)return i(t)}return!1},isPortrait:function(){return this.getScreenOrientation().includes("portrait")},isLandscape:function(){return this.getScreenOrientation().includes("landscape")},getStorage:function(t){if(void 0===t&&(t="local"),"local"===t)return save;throw new Error("storage type "+t+" not supported")},getParentElement:function(t){var e=this.getElement(t);return null!==e.parentNode&&(e=e.parentNode),e},getElement:function(t){var e=null;return"undefined"!==t&&("string"==typeof t?e=document.getElementById(t):"object"==typeof t&&t.nodeType===Node.ELEMENT_NODE&&(e=t)),e||(e=document.body),e},getElementBounds:function(t){return"object"==typeof t&&t!==document.body&&void 0!==t.getBoundingClientRect?t.getBoundingClientRect():(_domRect.width=_domRect.right=window.innerWidth,_domRect.height=_domRect.bottom=window.innerHeight,_domRect)},getParentBounds:function(t){return this.getElementBounds(this.getParentElement(t))},isWebGLSupported:function(t){var e=!1;try{var i=document.createElement("canvas"),n={stencil:!0,failIfMajorPerformanceCaveat:t.failIfMajorPerformanceCaveat};e=!(!window.WebGLRenderingContext||!i.getContext("webgl",n)&&!i.getContext("experimental-webgl",n))}catch(t){e=!1}return e},getMaxShaderPrecision:function(t){return t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0?"highp":t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"},focus:function(){"function"==typeof window.focus&&window.focus()},onDeviceMotion:function(t){this.accelerationX=t.accelerationIncludingGravity.x,this.accelerationY=t.accelerationIncludingGravity.y,this.accelerationZ=t.accelerationIncludingGravity.z},onDeviceRotate:function(t){this.gamma=t.gamma,this.beta=t.beta,this.alpha=t.alpha},turnOnPointerLock:function(){if(this.hasPointerLockSupport){var t=video$1.getParent();if(this.ua.match(/Firefox/i)){var e=function(){(prefixed("fullscreenElement",document)||document.mozFullScreenElement)===t&&(document.removeEventListener("fullscreenchange",e),document.removeEventListener("mozfullscreenchange",e),t.requestPointerLock=prefixed("requestPointerLock",t),t.requestPointerLock())};document.addEventListener("fullscreenchange",e,!1),document.addEventListener("mozfullscreenchange",e,!1),this.requestFullscreen()}else t.requestPointerLock()}},turnOffPointerLock:function(){this.hasPointerLockSupport&&document.exitPointerLock()},watchAccelerometer:function(){var t=this;return this.hasAccelerometer&&!accelInitialized&&(DeviceOrientationEvent&&"function"==typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((function(e){"granted"===e&&(window.addEventListener("devicemotion",t.onDeviceMotion,!1),accelInitialized=!0)})).catch(console.error):(window.addEventListener("devicemotion",this.onDeviceMotion,!1),accelInitialized=!0)),accelInitialized},unwatchAccelerometer:function(){accelInitialized&&(window.removeEventListener("devicemotion",this.onDeviceMotion,!1),accelInitialized=!1)},watchDeviceOrientation:function(){var t=this;return this.hasDeviceOrientation&&!deviceOrientationInitialized&&("function"==typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((function(e){"granted"===e&&(window.addEventListener("deviceorientation",t.onDeviceRotate,!1),deviceOrientationInitialized=!0)})).catch(console.error):(window.addEventListener("deviceorientation",this.onDeviceRotate,!1),deviceOrientationInitialized=!0)),deviceOrientationInitialized},unwatchDeviceOrientation:function(){deviceOrientationInitialized&&(window.removeEventListener("deviceorientation",this.onDeviceRotate,!1),deviceOrientationInitialized=!1)},vibrate:function(t){navigator.vibrate&&navigator.vibrate(t)}};Object.defineProperty(device,"devicePixelRatio",{get:function(){return window.devicePixelRatio||1}}),Object.defineProperty(device,"isFullscreen",{get:function(){return!!this.hasFullscreenSupport&&!(!prefixed("fullscreenElement",document)&&!document.mozFullScreenElement)}}),Object.defineProperty(device,"sound",{get:function(){return audio$1.hasAudio()}});var device$1=device;function extractUniforms(t,e){var i,n={},r=/uniform\s+(\w+)\s+(\w+)/g,o={},s={},a={};return[e.vertex,e.fragment].forEach((function(t){for(;i=r.exec(t);)o[i[2]]=i[1]})),Object.keys(o).forEach((function(i){var n=o[i];a[i]=t.getUniformLocation(e.program,i),s[i]={get:function(t){return function(){return a[t]}}(i),set:function(e,i,n){return 0===i.indexOf("mat")?function(i){t[n](a[e],!1,i)}:function(i){var r=n;i.length&&"v"!==n.substr(-1)&&(r+="v"),t[r](a[e],i)}}(i,n,"uniform"+fnHash[n])}})),Object.defineProperties(n,s),n}function extractAttributes(t,e){for(var i,n={},r=/attribute\s+\w+\s+(\w+)/g,o=0;i=r.exec(e.vertex);)n[i[1]]=o++;return n}function compileShader(t,e,i){var n=t.createShader(e);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function compileProgram(t,e,i,n){var r=compileShader(t,t.VERTEX_SHADER,e),o=compileShader(t,t.FRAGMENT_SHADER,i),s=t.createProgram();for(var a in t.attachShader(s,r),t.attachShader(s,o),n)t.bindAttribLocation(s,n[a],a);if(t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)){var h="Error initializing Shader "+this+"\ngl.VALIDATE_STATUS: "+t.getProgramParameter(s,t.VALIDATE_STATUS)+"\ngl.getError()"+t.getError()+"\ngl.getProgramInfoLog()"+t.getProgramInfoLog(s);throw t.deleteProgram(s),s=null,new Error(h)}return t.useProgram(s),t.deleteShader(r),t.deleteShader(o),s}var fnHash={bool:"1i",int:"1i",float:"1f",vec2:"2fv",vec3:"3fv",vec4:"4fv",bvec2:"2iv",bvec3:"3iv",bvec4:"4iv",ivec2:"2iv",ivec3:"3iv",ivec4:"4iv",mat2:"Matrix2fv",mat3:"Matrix3fv",mat4:"Matrix4fv",sampler2D:"1i"};function setPrecision(t,e){return"precision"!==t.substring(0,9)?"precision "+e+" float;"+t:t}function minify(t){return t=(t=(t=(t=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1")).replace(/(\\n\s+)|(\s+\\n)/g,"")).replace(/(\\r|\\n)+/g,"")).replace(/\s*([;,[\](){}\\\/\-+*|^&!=<>?~%])\s*/g,"$1")}var GLShader=function(t,e,i,n){return this.gl=t,this.vertex=setPrecision(minify(e),n||device$1.getMaxShaderPrecision(this.gl)),this.fragment=setPrecision(minify(i),n||device$1.getMaxShaderPrecision(this.gl)),this.attributes=extractAttributes(this.gl,this),this.program=compileProgram(this.gl,this.vertex,this.fragment,this.attributes),this.uniforms=extractUniforms(this.gl,this),event.subscribe(event.WEBGL_ONCONTEXT_LOST,this.destroy.bind(this)),this};GLShader.prototype.bind=function(){this.gl.useProgram(this.program)},GLShader.prototype.getAttribLocation=function(t){var e=this.attributes[t];return void 0!==e?e:-1},GLShader.prototype.setUniform=function(t,e){var i=this.uniforms;if(void 0===i[t])throw new Error("undefined ("+t+") uniform for shader "+this);"object"==typeof e&&"function"==typeof e.toArray?i[t]=e.toArray():i[t]=e},GLShader.prototype.destroy=function(){this.uniforms=null,this.attributes=null,this.gl.deleteProgram(this.program),this.vertex=null,this.fragment=null};var primitiveVertex="// Current vertex point\nattribute vec2 aVertex;\n\n// Projection matrix\nuniform mat4 uProjectionMatrix;\n\n// Vertex color\nuniform vec4 uColor;\n\n// Fragment color\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(uColor.rgb * uColor.a, uColor.a);\n}\n",primitiveFragment="varying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n}\n",quadVertex="attribute vec2 aVertex;\nattribute vec2 aRegion;\nattribute vec4 aColor;\n\nuniform mat4 uProjectionMatrix;\n\nvarying vec2 vRegion;\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n vRegion = aRegion;\n}\n",quadFragment="uniform sampler2D uSampler;\nvarying vec4 vColor;\nvarying vec2 vRegion;\n\nvoid main(void) {\n gl_FragColor = texture2D(uSampler, vRegion) * vColor;\n}\n",VERTEX_SIZE=2,REGION_SIZE=2,COLOR_SIZE=4,ELEMENT_SIZE=VERTEX_SIZE+REGION_SIZE+COLOR_SIZE,ELEMENT_OFFSET=ELEMENT_SIZE*Float32Array.BYTES_PER_ELEMENT,VERTEX_ELEMENT=0,REGION_ELEMENT=VERTEX_ELEMENT+VERTEX_SIZE,COLOR_ELEMENT=REGION_ELEMENT+REGION_SIZE,ELEMENTS_PER_QUAD=4,INDICES_PER_QUAD=6,MAX_LENGTH=16e3,WebGLCompositor=function(t){var e=t.gl;this.length=0,this.currentTextureUnit=-1,this.boundTextures=[],this.v=[new Vector2d,new Vector2d,new Vector2d,new Vector2d],this.renderer=t,this.gl=t.gl,this.color=t.currentColor,this.tint=t.currentTint,this.viewMatrix=t.currentTransform,this.activeShader=null,this.mode=e.TRIANGLES,this.attributes=[],this.primitiveShader=new GLShader(this.gl,primitiveVertex,primitiveFragment),this.quadShader=new GLShader(this.gl,quadVertex,quadFragment),this.addAttribute("aVertex",2,e.FLOAT,!1,0*Float32Array.BYTES_PER_ELEMENT),this.addAttribute("aRegion",2,e.FLOAT,!1,2*Float32Array.BYTES_PER_ELEMENT),this.addAttribute("aColor",4,e.FLOAT,!1,4*Float32Array.BYTES_PER_ELEMENT),e.bindBuffer(e.ARRAY_BUFFER,e.createBuffer()),e.bufferData(e.ARRAY_BUFFER,MAX_LENGTH*ELEMENT_OFFSET*ELEMENTS_PER_QUAD,e.STREAM_DRAW),this.sbSize=256,this.sbIndex=0,this.stream=new Float32Array(this.sbSize*ELEMENT_SIZE*ELEMENTS_PER_QUAD),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,e.createBuffer()),e.bufferData(e.ELEMENT_ARRAY_BUFFER,this.createIB(),e.STATIC_DRAW),event.subscribe(event.CANVAS_ONRESIZE,function(t,e){this.flush(),this.setViewport(0,0,t,e)}.bind(this)),this.reset()};WebGLCompositor.prototype.reset=function(){this.sbIndex=0,this.length=0,this.gl=this.renderer.gl,this.flush(),this.setViewport(0,0,this.renderer.getScreenCanvas().width,this.renderer.getScreenCanvas().height),this.clearColor(0,0,0,0);for(var t=0;t=MAX_LENGTH&&this.flush(),this.length>=this.sbSize&&this.resizeSB(),this.useShader(this.quadShader);var h=this.uploadTexture(t);this.quadShader.setUniform("uSampler",h);var l=this.viewMatrix,u=this.v[0].set(i,n),c=this.v[1].set(i+r,n),d=this.v[2].set(i,n+o),p=this.v[3].set(i+r,n+o);l.isIdentity()||(l.apply(u),l.apply(c),l.apply(d),l.apply(p));var f=this.sbIndex,g=f+ELEMENT_SIZE,m=g+ELEMENT_SIZE,y=m+ELEMENT_SIZE;this.stream[f+VERTEX_ELEMENT+0]=u.x,this.stream[f+VERTEX_ELEMENT+1]=u.y,this.stream[g+VERTEX_ELEMENT+0]=c.x,this.stream[g+VERTEX_ELEMENT+1]=c.y,this.stream[m+VERTEX_ELEMENT+0]=d.x,this.stream[m+VERTEX_ELEMENT+1]=d.y,this.stream[y+VERTEX_ELEMENT+0]=p.x,this.stream[y+VERTEX_ELEMENT+1]=p.y;var v=t.getUVs(e);this.stream[f+REGION_ELEMENT+0]=v[0],this.stream[f+REGION_ELEMENT+1]=v[1],this.stream[g+REGION_ELEMENT+0]=v[2],this.stream[g+REGION_ELEMENT+1]=v[1],this.stream[m+REGION_ELEMENT+0]=v[0],this.stream[m+REGION_ELEMENT+1]=v[3],this.stream[y+REGION_ELEMENT+0]=v[2],this.stream[y+REGION_ELEMENT+1]=v[3],this.stream.set(a,f+COLOR_ELEMENT),this.stream.set(a,g+COLOR_ELEMENT),this.stream.set(a,m+COLOR_ELEMENT),this.stream.set(a,y+COLOR_ELEMENT),this.sbIndex+=ELEMENT_SIZE*ELEMENTS_PER_QUAD,this.length++}},WebGLCompositor.prototype.flush=function(){if(this.length){var t=this.gl,e=this.length*ELEMENT_SIZE*ELEMENTS_PER_QUAD;t.bufferData(t.ARRAY_BUFFER,this.stream.subarray(0,e),t.STREAM_DRAW),t.drawElements(this.mode,this.length*INDICES_PER_QUAD,t.UNSIGNED_SHORT,0),this.sbIndex=0,this.length=0}},WebGLCompositor.prototype.drawVertices=function(t,e,i){var n=this.gl;i=i||e.length,this.useShader(this.primitiveShader),this.primitiveShader.setUniform("uColor",this.color);for(var r=0,o=this.viewMatrix,s=o.isIdentity(),a=0;adesignRatio||"fill-max"===e.scaleMethod&&udesignRatio||"flex-height"===e.scaleMethod){var d=Math.min(o,designWidth*(l/h));i=n=l/d,t.resize(designWidth,Math.floor(d))}else"flex"===e.scaleMethod?t.resize(Math.floor(h),Math.floor(l)):"stretch"===e.scaleMethod?(i=h/designWidth,n=l/designHeight):i=n=uminstep&&timer.interpolation?delta/step:1;for(var e=0,i=timers.length;e=n.delay&&(n.fn.apply(null,n.args),!0===n.repeat?n.elapsed-=n.delay:timer.clearTimeout(n.timerId))}}var timer={tick:1,fps:0,maxfps:60,interpolation:!1,lastUpdate:window.performance.now(),init:function(){this.reset(),now=last=0,event.subscribe(event.GAME_UPDATE,updateTimers)},reset:function(){last=now=window.performance.now(),delta=0,framedelta=0,framecount=0,step=Math.ceil(1e3/this.maxfps),minstep=1e3/this.maxfps*1.25},setTimeout:function(t,e,i){return timers.push({fn:t,delay:e,elapsed:0,repeat:!1,timerId:++timerId,pauseable:!0===i||!0,args:arguments.length>3?Array.prototype.slice.call(arguments,3):void 0}),timerId},setInterval:function(t,e,i){return timers.push({fn:t,delay:e,elapsed:0,repeat:!0,timerId:++timerId,pauseable:!0===i||!0,args:arguments.length>3?Array.prototype.slice.call(arguments,3):void 0}),timerId},clearTimeout:function(t){utils$1.function.defer(clearTimer,this,t)},clearInterval:function(t){utils$1.function.defer(clearTimer,this,t)},getTime:function(){return now},getDelta:function(){return delta},countFPS:function(){framecount++,framedelta+=delta,framecount%10==0&&(this.fps=clamp(Math.round(1e3*framecount/framedelta),0,this.maxfps),framedelta=0,framecount=0)}},timer$1=timer,lastTime=0,vendors=["ms","moz","webkit","o"],x,requestAnimationFrame=window.requestAnimationFrame,cancelAnimationFrame=window.cancelAnimationFrame;for(x=0;x2&&(i=Array.prototype.slice.call(arguments,1)),i[0]=t;var n=new(t.bind.apply(t,i));if(void 0===n||!(n instanceof plugin.Base))throw new Error("Plugin should extend the me.plugin.Base Class !");if(utils$1.checkVersion(n.version)>0)throw new Error("Plugin version mismatch, expected: "+n.version+", got: "+version);plugins[e]=n}},Easing={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 e=1.70158;return t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}},Bounce:{In:function(t){return 1-Easing.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*Easing.Bounce.In(2*t):.5*Easing.Bounce.Out(2*t-1)+.5}}},Interpolation={Linear:function(t,e){var i=t.length-1,n=i*e,r=Math.floor(n),o=Interpolation.Utils.Linear;return e<0?o(t[0],t[1],n):e>1?o(t[i],t[i-1],i-n):o(t[r],t[r+1>i?i:r+1],n-r)},Bezier:function(t,e){var i,n=0,r=t.length-1,o=Math.pow,s=Interpolation.Utils.Bernstein;for(i=0;i<=r;i++)n+=o(1-e,r-i)*o(e,i)*t[i]*s(r,i);return n},CatmullRom:function(t,e){var i=t.length-1,n=i*e,r=Math.floor(n),o=Interpolation.Utils.CatmullRom;return t[0]===t[i]?(e<0&&(r=Math.floor(n=i*(1+e))),o(t[(r-1+i)%i],t[r],t[(r+1)%i],t[(r+2)%i],n-r)):e<0?t[0]-(o(t[0],t[0],t[1],t[1],-n)-t[0]):e>1?t[i]-(o(t[i],t[i],t[i-1],t[i-1],n-i)-t[i]):o(t[r?r-1:0],t[r],t[i1;i--)n*=i;return t[e]=n}}(),CatmullRom:function(t,e,i,n,r){var o=.5*(i-t),s=.5*(n-e),a=r*r;return(2*e-2*i+o+s)*(r*a)+(-3*e+3*i-2*o-s)*a+o*r+e}}},Tween=function(t){var e=null,i=null,n=null,r=null,o=null,s=null,a=null,h=null,l=null,u=null,c=null,d=null,p=null,f=null,g=null,m=null,y=null;this.isRenderable=!1,this._resumeCallback=function(t){l&&(l+=t)},this.setProperties=function(t){for(var v in e=t,i={},n={},r={},o=1e3,s=0,a=!1,h=0,l=null,u=Easing.Linear.None,c=Interpolation.Linear,d=[],p=null,f=!1,g=null,m=null,y=timer$1.lastUpdate,this.isPersistent=!1,this.updateWhenPaused=!1,t)"object"!=typeof t&&(i[v]=parseFloat(t[v]))},this.setProperties(t),this.onResetEvent=function(t){this.setProperties(t)},this.onActivateEvent=function(){event.subscribe(event.STATE_RESUME,this._resumeCallback)},this.onDeactivateEvent=function(){event.unsubscribe(event.STATE_RESUME,this._resumeCallback)},this.to=function(t,e){return n=t,void 0!==e&&("number"==typeof e?o=e:"object"==typeof e&&(e.duration&&(o=e.duration),e.yoyo&&this.yoyo(e.yoyo),e.easing&&this.easing(e.easing),e.repeat&&this.repeat(e.repeat),e.delay&&this.delay(e.delay),e.interpolation&&this.interpolation(e.interpolation),e.autoStart&&this.start())),this},this.start=function(t){for(var o in f=!1,game$1.world.addChild(this),l=(void 0===t?timer$1.getTime():t)+h,n){if(n[o]instanceof Array){if(0===n[o].length)continue;n[o]=[e[o]].concat(n[o])}i[o]=e[o],i[o]instanceof Array==!1&&(i[o]*=1),r[o]=i[o]||0}return this},this.stop=function(){return game$1.world.removeChildNow(this),this},this.delay=function(t){return h=t,this},this.repeat=function(t){return s=t,this},this.yoyo=function(t){return a=t,this},this.easing=function(t){if("function"!=typeof t)throw new Error("invalid easing function for me.Tween.easing()");return u=t,this},this.interpolation=function(t){return c=t,this},this.chain=function(){return d=arguments,this},this.onStart=function(t){return p=t,this},this.onUpdate=function(t){return g=t,this},this.onComplete=function(t){return m=t,this},this.update=function(t){var v,_=y=timer$1.lastUpdate>y?timer$1.lastUpdate:y+t;if(_1?1:x);for(v in n){var b=i[v]||0,T=n[v];T instanceof Array?e[v]=c(T,w):("string"==typeof T&&(T=b+parseFloat(T)),"number"==typeof T&&(e[v]=b+(T-b)*w))}if(null!==g&&g.call(e,w),1===x){if(s>0){for(v in isFinite(s)&&s--,r){if("string"==typeof n[v]&&(r[v]=r[v]+parseFloat(n[v])),a){var E=r[v];r[v]=n[v],n[v]=E}i[v]=r[v]}return l=_+h,!0}game$1.world.removeChildNow(this),null!==m&&m.call(e);for(var A=0,R=d.length;A>>LOG2_PAGE_SIZE];if(e)return e[t&PAGE_SIZE-1]||0}return 0},Glyph.prototype.setKerning=function(t,e){this.kerning||(this.kerning={});var i=this.kerning[t>>>LOG2_PAGE_SIZE];void 0===i&&(this.kerning[t>>>LOG2_PAGE_SIZE]={},i=this.kerning[t>>>LOG2_PAGE_SIZE]),i[t&PAGE_SIZE-1]=e};var capChars=["M","N","B","D","C","E","F","K","A","G","H","I","J","L","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function getValueFromPair(t,e){var i=t.match(e);if(!i)throw new Error("Could not find pattern "+e+" in string: "+t);return i[0].split("=")[1]}function getFirstGlyph(t){for(var e=Object.keys(t),i=0;i32)return t[e[i]];return null}function createSpaceGlyph(t){var e=" ".charCodeAt(0),i=t[e];i||((i=new Glyph).id=e,i.xadvance=getFirstGlyph(t).xadvance,t[e]=i)}var BitmapTextData=function(){for(var t,e=[],i=arguments.length;i--;)e[i]=arguments[i];(t=this).onResetEvent.apply(t,e)};BitmapTextData.prototype.onResetEvent=function(t){this.padTop=0,this.padRight=0,this.padBottom=0,this.padLeft=0,this.lineHeight=0,this.capHeight=1,this.descent=0,this.glyphs={},this.parse(t)},BitmapTextData.prototype.parse=function(t){if(!t)throw new Error("File containing font data was empty, cannot load the bitmap font.");var e=t.split(/\r\n|\n/),i=t.match(/padding\=\d+,\d+,\d+,\d+/g);if(!i)throw new Error("Padding not found in first line");var n=i[0].split("=")[1].split(",");this.padTop=parseFloat(n[0]),this.padLeft=parseFloat(n[1]),this.padBottom=parseFloat(n[2]),this.padRight=parseFloat(n[3]),this.lineHeight=parseFloat(getValueFromPair(e[1],/lineHeight\=\d+/g));var r,o=parseFloat(getValueFromPair(e[1],/base\=\d+/g)),s=this.padTop+this.padBottom,a=null;for(r=4;r0&&a.height>0&&(this.descent=Math.min(o+a.yoffset,this.descent)),this.glyphs[p]=a}}this.descent+=this.padBottom,createSpaceGlyph(this.glyphs);var f=null;for(r=0;rthis._emitter.framesToSkip&&(this._updateCount=0),this._updateCount>0)return this._dt+=t,!1;t+=this._dt,this._dt=0;for(var e=game$1.viewport,i=this.children.length-1;i>=0;--i){var n=this.children[i];n.inViewport=e.isVisible(n,this.floating),n.update(t)||this.removeChildNow(n)}return!0},draw:function(t,e){if(this.children.length>0){var i,n=t.getContext();this._emitter.textureAdditive&&(i=n.globalCompositeOperation,n.globalCompositeOperation="lighter"),this._super(Container$1,"draw",[t,e]),this._emitter.textureAdditive&&(n.globalCompositeOperation=i)}}}),pixel=(canvas=video$1.createCanvas(1,1),context=canvas.getContext("2d"),context.fillStyle="#fff",context.fillRect(0,0,1,1),canvas),canvas,context,ParticleEmitterSettings={width:0,height:0,image:pixel,totalParticles:50,angle:Math.PI/2,angleVariation:0,minLife:1e3,maxLife:3e3,speed:2,speedVariation:1,minRotation:0,maxRotation:0,minStartScale:1,maxStartScale:1,minEndScale:0,maxEndScale:0,gravity:0,wind:0,followTrajectory:!1,textureAdditive:!1,onlyInViewport:!0,floating:!1,maxParticles:10,frequency:100,duration:1/0,framesToSkip:0},ParticleEmitter=Renderable.extend({init:function(t,e,i){this._stream=!1,this._frequencyTimer=0,this._durationTimer=0,this._enabled=!1,this._super(Renderable,"init",[t,e,1/0,1/0]),this.alwaysUpdate=!0,this.autoSort=!1,this.container=new ParticleContainer(this),Object.defineProperty(this.pos,"z",{get:function(){return this.container.pos.z}.bind(this),set:function(t){this.container.pos.z=t}.bind(this),enumerable:!0,configurable:!0}),Object.defineProperty(this,"floating",{get:function(){return this.container.floating},set:function(t){this.container.floating=t},enumerable:!0,configurable:!0}),this.reset(i)},onActivateEvent:function(){this.ancestor.addChild(this.container),this.container.pos.z=this.pos.z,this.ancestor.autoSort||this.ancestor.sort()},onDeactivateEvent:function(){this.ancestor.hasChild(this.container)&&this.ancestor.removeChildNow(this.container)},destroy:function(){this.reset()},getRandomPointX:function(){return this.pos.x+randomFloat(0,this.width)},getRandomPointY:function(){return this.pos.y+randomFloat(0,this.height)},reset:function(t){var e=ParticleEmitterSettings,i="number"==typeof(t=t||{}).width?t.width:e.width,n="number"==typeof t.height?t.height:e.height;this.resize(i,n),Object.assign(this,e,t),this.container.reset()},addParticles:function(t){for(var e=0;e<~~t;e++){var i=pool.pull("Particle",this);this.container.addChild(i)}},isRunning:function(){return this._enabled&&this._stream},streamParticles:function(t){this._enabled=!0,this._stream=!0,this.frequency=Math.max(this.frequency,1),this._durationTimer="number"==typeof t?t:this.duration},stopStream:function(){this._enabled=!1},burstParticles:function(t){this._enabled=!0,this._stream=!1,this.addParticles("number"==typeof t?t:this.totalParticles),this._enabled=!1},update:function(t){if(this._enabled&&this._stream){if(this._durationTimer!==1/0&&(this._durationTimer-=t,this._durationTimer<=0))return this.stopStream(),!1;this._frequencyTimer+=t;var e=this.container.children.length;e=this.frequency&&(e+this.maxParticles<=this.totalParticles?this.addParticles(this.maxParticles):this.addParticles(this.totalParticles-e),this._frequencyTimer=0)}return!0}}),Particle=Renderable.extend({init:function(t){this._super(Renderable,"init",[t.getRandomPointX(),t.getRandomPointY(),t.image.width,t.image.height]),this.alwaysUpdate=!0,this.image=t.image;var e=t.angle+(t.angleVariation>0?(randomFloat(0,2)-1)*t.angleVariation:0),i=t.speed+(t.speedVariation>0?(randomFloat(0,2)-1)*t.speedVariation:0);this.vel=new Vector2d(i*Math.cos(e),-i*Math.sin(e)),this.life=randomFloat(t.minLife,t.maxLife),this.startLife=this.life,this.startScale=clamp(randomFloat(t.minStartScale,t.maxStartScale),t.minStartScale,t.maxStartScale),this.endScale=clamp(randomFloat(t.minEndScale,t.maxEndScale),t.minEndScale,t.maxEndScale),this.gravity=t.gravity,this.wind=t.wind,this.followTrajectory=t.followTrajectory,this.onlyInViewport=t.onlyInViewport,this.pos.z=t.z,this._deltaInv=timer$1.maxfps/1e3,t.followTrajectory||(this.angle=randomFloat(t.minRotation,t.maxRotation))},update:function(t){var e=t*this._deltaInv;this.life=this.life>t?this.life-t:0;var i=this.life/this.startLife,n=this.startScale;this.startScale>this.endScale?n=(n*=i)this.endScale?this.endScale:n),this.alpha=i,this.vel.x+=this.wind*e,this.vel.y+=this.gravity*e;var r=this.followTrajectory?Math.atan2(this.vel.y,this.vel.x):this.angle;return this.pos.x+=this.vel.x*e,this.pos.y+=this.vel.y*e,this.currentTransform.setTransform(n,0,0,0,n,0,this.pos.x,this.pos.y,1).rotate(r),(this.inViewport||!this.onlyInViewport)&&this.life>0},preDraw:function(t){t.save(),t.setGlobalAlpha(t.globalAlpha()*this.alpha),t.transform(this.currentTransform)},draw:function(t){var e=this.width,i=this.height;t.drawImage(this.image,0,0,e,i,-e/2,-i/2,e,i)}}),Entity=Renderable.extend({init:function(t,e,i){if(this.children=[],"number"!=typeof i.width||"number"!=typeof i.height)throw new Error("height and width properties are mandatory when passing settings parameters to an object entity");this._super(Renderable,"init",[t,e,i.width,i.height]),i.image&&(i.framewidth=i.framewidth||i.width,i.frameheight=i.frameheight||i.height,this.renderable=new Sprite(0,0,i)),i.anchorPoint?this.anchorPoint.set(i.anchorPoint.x,i.anchorPoint.y):this.anchorPoint.set(0,0),"string"==typeof i.name&&(this.name=i.name),this.type=i.type||"",this.id=i.id||"",this.alive=!0,void 0===i.shapes&&(i.shapes=new Polygon(0,0,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])),void 0!==this.body?this.body.init(this,i.shapes,this.onBodyUpdate.bind(this)):this.body=new Body(this,i.shapes,this.onBodyUpdate.bind(this)),0===this.width&&0===this.height&&this.resize(this.body.getBounds().width,this.body.getBounds().height),this.body.setCollisionMask(i.collisionMask),this.body.setCollisionType(i.collisionType),this.autoTransform=!1},update:function(t){return this.renderable?this.renderable.update(t):this._super(Renderable,"update",[t])},onBodyUpdate:function(t){this.getBounds().addBounds(t.getBounds(),!0),this.updateBoundsPos(this.pos.x,this.pos.y)},preDraw:function(t){t.save(),t.translate(this.pos.x+this.body.getBounds().x,this.pos.y+this.body.getBounds().y),this.renderable instanceof Renderable&&t.translate(this.anchorPoint.x*this.body.getBounds().width,this.anchorPoint.y*this.body.getBounds().height)},draw:function(t,e){var i=this.renderable;i instanceof Renderable&&(i.preDraw(t),i.draw(t,e),i.postDraw(t))},destroy:function(){this.renderable&&(this.renderable.destroy.apply(this.renderable,arguments),this.children.splice(0,1)),this._super(Renderable,"destroy",arguments)},onDeactivateEvent:function(){this.renderable&&this.renderable.onDeactivateEvent&&this.renderable.onDeactivateEvent()},onCollision:function(){return!1}});Object.defineProperty(Entity.prototype,"renderable",{get:function(){return this.children[0]},set:function(t){if(!(t instanceof Renderable))throw new Error(t+"should extend me.Renderable");this.children[0]=t,this.children[0].ancestor=this},configurable:!0});var DraggableEntity=Entity.extend({init:function(t,e,i){this._super(Entity,"init",[t,e,i]),this.dragging=!1,this.dragId=null,this.grabOffset=new Vector2d(0,0),this.onPointerEvent=registerPointerEvent,this.removePointerEvent=releasePointerEvent,this.initEvents()},initEvents:function(){var t=this;this.mouseDown=function(t){this.translatePointerEvent(t,event.DRAGSTART)},this.mouseUp=function(t){this.translatePointerEvent(t,event.DRAGEND)},this.onPointerEvent("pointerdown",this,this.mouseDown.bind(this)),this.onPointerEvent("pointerup",this,this.mouseUp.bind(this)),this.onPointerEvent("pointercancel",this,this.mouseUp.bind(this)),event.subscribe(event.POINTERMOVE,this.dragMove.bind(this)),event.subscribe(event.DRAGSTART,(function(e,i){i===t&&t.dragStart(e)})),event.subscribe(event.DRAGEND,(function(e,i){i===t&&t.dragEnd(e)}))},translatePointerEvent:function(t,e){event.publish(e,[t,this])},dragStart:function(t){if(!1===this.dragging)return this.dragging=!0,this.grabOffset.set(t.gameX,t.gameY),this.grabOffset.sub(this.pos),!1},dragMove:function(t){!0===this.dragging&&(this.pos.set(t.gameX,t.gameY,this.pos.z),this.pos.sub(this.grabOffset))},dragEnd:function(){if(!0===this.dragging)return this.dragging=!1,!1},destroy:function(){event.unsubscribe(event.POINTERMOVE,this.dragMove),event.unsubscribe(event.DRAGSTART,this.dragStart),event.unsubscribe(event.DRAGEND,this.dragEnd),this.removePointerEvent("pointerdown",this),this.removePointerEvent("pointerup",this)}}),DroptargetEntity=Entity.extend({init:function(t,e,i){this.CHECKMETHOD_OVERLAP="overlaps",this.CHECKMETHOD_CONTAINS="contains",this.checkMethod=null,this._super(Entity,"init",[t,e,i]),event.subscribe(event.DRAGEND,this.checkOnMe.bind(this)),this.checkMethod=this[this.CHECKMETHOD_OVERLAP]},setCheckMethod:function(t){void 0!==this[t]&&(this.checkMethod=this[t])},checkOnMe:function(t,e){e&&this.checkMethod(e.getBounds())&&this.drop(e)},drop:function(){},destroy:function(){event.unsubscribe(event.DRAGEND,this.checkOnMe)}}),Jay=window.Jay,version="9.1.1";exports.initialized=!1;var skipAutoInit=!1;function boot(){!0!==exports.initialized&&(device$1._check(),pool.register("me.Entity",Entity),pool.register("me.Collectable",Collectable),pool.register("me.Trigger",Trigger),pool.register("me.Tween",Tween,!0),pool.register("me.Color",Color,!0),pool.register("me.Particle",Particle,!0),pool.register("me.Sprite",Sprite),pool.register("me.Renderable",Renderable),pool.register("me.Text",Text,!0),pool.register("me.BitmapText",BitmapText,!0),pool.register("me.BitmapTextData",BitmapTextData,!0),pool.register("me.ImageLayer",ImageLayer,!0),pool.register("me.ColorLayer",ColorLayer,!0),pool.register("me.Vector2d",Vector2d,!0),pool.register("me.Vector3d",Vector3d,!0),pool.register("me.ObservableVector2d",ObservableVector2d,!0),pool.register("me.ObservableVector3d",ObservableVector3d,!0),pool.register("me.Matrix2d",Matrix2d,!0),pool.register("me.Matrix3d",Matrix3d,!0),pool.register("me.Rect",Rect,!0),pool.register("me.Polygon",Polygon,!0),pool.register("me.Line",Line,!0),pool.register("me.Ellipse",Ellipse,!0),pool.register("me.Bounds",Bounds$1,!0),pool.register("Entity",Entity),pool.register("Collectable",Collectable),pool.register("Trigger",Trigger),pool.register("Tween",Tween,!0),pool.register("Color",Color,!0),pool.register("Particle",Particle,!0),pool.register("Sprite",Sprite),pool.register("Renderable",Renderable),pool.register("Text",Text,!0),pool.register("BitmapText",BitmapText,!0),pool.register("BitmapTextData",BitmapTextData,!0),pool.register("ImageLayer",ImageLayer,!0),pool.register("ColorLayer",ColorLayer,!0),pool.register("Vector2d",Vector2d,!0),pool.register("Vector3d",Vector3d,!0),pool.register("ObservableVector2d",ObservableVector2d,!0),pool.register("ObservableVector3d",ObservableVector3d,!0),pool.register("Matrix2d",Matrix2d,!0),pool.register("Matrix3d",Matrix3d,!0),pool.register("Rect",Rect,!0),pool.register("Polygon",Polygon,!0),pool.register("Line",Line,!0),pool.register("Ellipse",Ellipse,!0),pool.register("Bounds",Bounds$1,!0),save.init(),timer$1.init(),loader$1.setNocache(utils$1.getUriFragment().nocache||!1),state$1.init(),initKeyboardEvent(),game$1.init(),exports.initialized=!0)}device$1.onReady((function(){boot()})),exports.BitmapText=BitmapText,exports.BitmapTextData=BitmapTextData,exports.Body=Body,exports.Bounds=Bounds$1,exports.Camera2d=Camera2d,exports.CanvasRenderer=CanvasRenderer,exports.Collectable=Collectable,exports.Color=Color,exports.ColorLayer=ColorLayer,exports.Container=Container$1,exports.DraggableEntity=DraggableEntity,exports.DroptargetEntity=DroptargetEntity,exports.Ellipse=Ellipse,exports.Entity=Entity,exports.GLShader=GLShader,exports.GUI_Object=GUI_Object,exports.ImageLayer=ImageLayer,exports.Line=Line,exports.Math=math,exports.Matrix2d=Matrix2d,exports.Matrix3d=Matrix3d,exports.Object=Jay,exports.ObservableVector2d=ObservableVector2d,exports.ObservableVector3d=ObservableVector3d,exports.Particle=Particle,exports.ParticleEmitter=ParticleEmitter,exports.Pointer=Pointer,exports.Polygon=Polygon,exports.QuadTree=QuadTree,exports.Rect=Rect,exports.Renderable=Renderable,exports.Renderer=Renderer,exports.Sprite=Sprite,exports.Stage=Stage,exports.TMXHexagonalRenderer=TMXHexagonalRenderer,exports.TMXIsometricRenderer=TMXIsometricRenderer,exports.TMXLayer=TMXLayer,exports.TMXOrthogonalRenderer=TMXOrthogonalRenderer,exports.TMXRenderer=TMXRenderer,exports.TMXStaggeredRenderer=TMXStaggeredRenderer,exports.TMXTileMap=TMXTileMap,exports.TMXTileset=TMXTileset,exports.TMXTilesetGroup=TMXTilesetGroup,exports.Text=Text,exports.Tile=Tile,exports.Trigger=Trigger,exports.Tween=Tween,exports.Vector2d=Vector2d,exports.Vector3d=Vector3d,exports.WebGLCompositor=WebGLCompositor,exports.WebGLRenderer=WebGLRenderer,exports.World=World,exports.audio=audio$1,exports.boot=boot,exports.collision=collision,exports.deprecated=deprecated,exports.device=device$1,exports.event=event,exports.game=game$1,exports.input=input,exports.level=level,exports.loader=loader$1,exports.plugin=plugin,exports.plugins=plugins,exports.pool=pool,exports.save=save,exports.skipAutoInit=skipAutoInit,exports.state=state$1,exports.timer=timer$1,exports.utils=utils$1,exports.version=version,exports.video=video$1,Object.defineProperty(exports,"__esModule",{value:!0})})),me.deprecated.apply();
\ No newline at end of file
+function(){var t;HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var i=e._howls.length-1;i>=0;i--)e._howls[i].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,i){var n=this;return n.ctx&&n.ctx.listener?(e="number"!=typeof e?n._pos[1]:e,i="number"!=typeof i?n._pos[2]:i,"number"!=typeof t?n._pos:(n._pos=[t,e,i],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],Howler.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],Howler.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],Howler.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},HowlerGlobal.prototype.orientation=function(t,e,i,n,r,o){var s=this;if(!s.ctx||!s.ctx.listener)return s;var a=s._orientation;return e="number"!=typeof e?a[1]:e,i="number"!=typeof i?a[2]:i,n="number"!=typeof n?a[3]:n,r="number"!=typeof r?a[4]:r,o="number"!=typeof o?a[5]:o,"number"!=typeof t?a:(s._orientation=[t,e,i,n,r,o],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(n,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,i,n,r,o),s)},Howl.prototype.init=(t=Howl.prototype.init,function(e){var i=this;return i._orientation=e.orientation||[1,0,0],i._stereo=e.stereo||null,i._pos=e.pos||null,i._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},i._onstereo=e.onstereo?[{fn:e.onstereo}]:[],i._onpos=e.onpos?[{fn:e.onpos}]:[],i._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}),Howl.prototype.stereo=function(t,i){var n=this;if(!n._webAudio)return n;if("loaded"!==n._state)return n._queue.push({event:"stereo",action:function(){n.stereo(t,i)}}),n;var r=void 0===Howler.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof t)return n._stereo;n._stereo=t,n._pos=[t,0,0]}for(var o=n._getSoundIds(i),s=0;st.x?this._x:t.x,this._y>t.y?this._y:t.y)},e.prototype.floor=function(){return new e(Math.floor(this._x),Math.floor(this._y),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.floorSelf=function(){return this._set(Math.floor(this._x),Math.floor(this._y))},e.prototype.ceil=function(){return new e(Math.ceil(this._x),Math.ceil(this._y),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.ceilSelf=function(){return this._set(Math.ceil(this._x),Math.ceil(this._y))},e.prototype.negate=function(){return new e(-this._x,-this._y,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.negateSelf=function(){return this._set(-this._x,-this._y)},e.prototype.copy=function(t){return this._set(t.x,t.y)},e.prototype.equals=function(t){return this._x===t.x&&this._y===t.y},e.prototype.perp=function(){return this._set(this._y,-this._x)},e.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this._x-i,o=this._y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n)},e.prototype.dotProduct=function(t){return this._x*t.x+this._y*t.y},e.prototype.lerp=function(t,e){return this._x+=(t.x-this._x)*e,this._y+=(t.y-this._y)*e,this},e.prototype.distance=function(t){return Math.sqrt((this._x-t.x)*(this._x-t.x)+(this._y-t.y)*(this._y-t.y))},e.prototype.clone=function(){return pool.pull("ObservableVector2d",this._x,this._y,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.toVector2d=function(){return pool.pull("Vector2d",this._x,this._y)},e.prototype.toString=function(){return"x:"+this._x+",y:"+this._y},Object.defineProperties(e.prototype,i),e}(Vector2d),Vector3d=function(){for(var t,e=[],i=arguments.length;i--;)e[i]=arguments[i];(t=this).onResetEvent.apply(t,e)};Vector3d.prototype.onResetEvent=function(t,e,i){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),this.x=t,this.y=e,this.z=i,this},Vector3d.prototype._set=function(t,e,i){return void 0===i&&(i=0),this.x=t,this.y=e,this.z=i,this},Vector3d.prototype.set=function(t,e,i){if(t!==+t||e!==+e||void 0!==i&&i!==+i)throw new Error("invalid x, y, z parameters (not a number)");return this._set(t,e,i)},Vector3d.prototype.setZero=function(){return this.set(0,0,0)},Vector3d.prototype.setV=function(t){return this._set(t.x,t.y,t.z)},Vector3d.prototype.add=function(t){return this._set(this.x+t.x,this.y+t.y,this.z+(t.z||0))},Vector3d.prototype.sub=function(t){return this._set(this.x-t.x,this.y-t.y,this.z-(t.z||0))},Vector3d.prototype.scale=function(t,e,i){return e=void 0!==e?e:t,this._set(this.x*t,this.y*e,this.z*(i||1))},Vector3d.prototype.scaleV=function(t){return this.scale(t.x,t.y,t.z)},Vector3d.prototype.toIso=function(){return this._set(this.x-this.y,.5*(this.x+this.y),this.z)},Vector3d.prototype.to2d=function(){return this._set(this.y+this.x/2,this.y-this.x/2,this.z)},Vector3d.prototype.div=function(t){return this._set(this.x/t,this.y/t,this.z/t)},Vector3d.prototype.abs=function(){return this._set(this.x<0?-this.x:this.x,this.y<0?-this.y:this.y,this.z<0?-this.z:this.z)},Vector3d.prototype.clamp=function(t,e){return new Vector3d(clamp(this.x,t,e),clamp(this.y,t,e),clamp(this.z,t,e))},Vector3d.prototype.clampSelf=function(t,e){return this._set(clamp(this.x,t,e),clamp(this.y,t,e),clamp(this.z,t,e))},Vector3d.prototype.minV=function(t){var e=t.z||0;return this._set(this.xt.x?this.x:t.x,this.y>t.y?this.y:t.y,this.z>e?this.z:e)},Vector3d.prototype.floor=function(){return new Vector3d(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z))},Vector3d.prototype.floorSelf=function(){return this._set(Math.floor(this.x),Math.floor(this.y),Math.floor(this.z))},Vector3d.prototype.ceil=function(){return new Vector3d(Math.ceil(this.x),Math.ceil(this.y),Math.ceil(this.z))},Vector3d.prototype.ceilSelf=function(){return this._set(Math.ceil(this.x),Math.ceil(this.y),Math.ceil(this.z))},Vector3d.prototype.negate=function(){return new Vector3d(-this.x,-this.y,-this.z)},Vector3d.prototype.negateSelf=function(){return this._set(-this.x,-this.y,-this.z)},Vector3d.prototype.copy=function(t){return this._set(t.x,t.y,t.z||0)},Vector3d.prototype.equals=function(){var t,e,i;return arguments.length>=2?(t=arguments[0],e=arguments[1],i=arguments[2]):(t=arguments[0].x,e=arguments[0].y,i=arguments[0].z),void 0===i&&(i=this.z),this.x===t&&this.y===e&&this.z===i},Vector3d.prototype.normalize=function(){return this.div(this.length()||1)},Vector3d.prototype.perp=function(){return this._set(this.y,-this.x,this.z)},Vector3d.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this.x-i,o=this.y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n,this.z)},Vector3d.prototype.dotProduct=function(t){return this.x*t.x+this.y*t.y+this.z*(void 0!==t.z?t.z:this.z)},Vector3d.prototype.length2=function(){return this.dotProduct(this)},Vector3d.prototype.length=function(){return Math.sqrt(this.length2())},Vector3d.prototype.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},Vector3d.prototype.distance=function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-(t.z||0);return Math.sqrt(e*e+i*i+n*n)},Vector3d.prototype.angle=function(t){return Math.acos(clamp(this.dotProduct(t)/(this.length()*t.length()),-1,1))},Vector3d.prototype.project=function(t){var e=this.dotProduct(t)/t.length2();return this.scale(e,e,e)},Vector3d.prototype.projectN=function(t){var e=this.dotProduct(t)/t.length2();return this.scale(e,e,e)},Vector3d.prototype.clone=function(){return pool.pull("Vector3d",this.x,this.y,this.z)},Vector3d.prototype.toString=function(){return"x:"+this.x+",y:"+this.y+",z:"+this.z};var ObservableVector3d=function(t){function e(e,i,n,r){if(void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),t.call(this,e,i,n),void 0===r)throw new Error("undefined `onUpdate` callback");this.setCallback(r.onUpdate,r.scope)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var i={x:{configurable:!0},y:{configurable:!0},z:{configurable:!0}};return e.prototype.onResetEvent=function(t,e,i,n){return void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),this.setMuted(t,e,i),void 0!==n&&this.setCallback(n.onUpdate,n.scope),this},i.x.get=function(){return this._x},i.x.set=function(t){var e=this.onUpdate.call(this.scope,t,this._y,this._z,this._x,this._y,this._z);this._x=e&&"x"in e?e.x:t},i.y.get=function(){return this._y},i.y.set=function(t){var e=this.onUpdate.call(this.scope,this._x,t,this._z,this._x,this._y,this._z);this._y=e&&"y"in e?e.y:t},i.z.get=function(){return this._z},i.z.set=function(t){var e=this.onUpdate.call(this.scope,this._x,this._y,t,this._x,this._y,this._z);this._z=e&&"z"in e?e.z:t},e.prototype._set=function(t,e,i){var n=this.onUpdate.call(this.scope,t,e,i,this._x,this._y,this._z);return n&&"x"in n&&"y"in n&&"z"in n?(this._x=n.x,this._y=n.y,this._z=n.z):(this._x=t,this._y=e,this._z=i||0),this},e.prototype.setMuted=function(t,e,i){return this._x=t,this._y=e,this._z=i||0,this},e.prototype.setCallback=function(t,e){if(void 0===e&&(e=null),"function"!=typeof t)throw new Error("invalid `onUpdate` callback");return this.onUpdate=t,this.scope=e,this},e.prototype.add=function(t){return this._set(this._x+t.x,this._y+t.y,this._z+(t.z||0))},e.prototype.sub=function(t){return this._set(this._x-t.x,this._y-t.y,this._z-(t.z||0))},e.prototype.scale=function(t,e,i){return e=void 0!==e?e:t,this._set(this._x*t,this._y*e,this._z*(i||1))},e.prototype.scaleV=function(t){return this._set(this._x*t.x,this._y*t.y,this._z*(t.z||1))},e.prototype.div=function(t){return this._set(this._x/t,this._y/t,this._z/t)},e.prototype.abs=function(){return this._set(this._x<0?-this._x:this._x,this._y<0?-this._y:this._y,this._Z<0?-this._z:this._z)},e.prototype.clamp=function(t,i){return new e(clamp(this._x,t,i),clamp(this._y,t,i),clamp(this._z,t,i),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.clampSelf=function(t,e){return this._set(clamp(this._x,t,e),clamp(this._y,t,e),clamp(this._z,t,e))},e.prototype.minV=function(t){var e=t.z||0;return this._set(this._xt.x?this._x:t.x,this._y>t.y?this._y:t.y,this._z>e?this._z:e)},e.prototype.floor=function(){return new e(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.floorSelf=function(){return this._set(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))},e.prototype.ceil=function(){return new e(Math.ceil(this._x),Math.ceil(this._y),Math.ceil(this._z),{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.ceilSelf=function(){return this._set(Math.ceil(this._x),Math.ceil(this._y),Math.ceil(this._z))},e.prototype.negate=function(){return new e(-this._x,-this._y,-this._z,{onUpdate:this.onUpdate,scope:this.scope})},e.prototype.negateSelf=function(){return this._set(-this._x,-this._y,-this._z)},e.prototype.copy=function(t){return this._set(t.x,t.y,t.z||0)},e.prototype.equals=function(t){return this._x===t.x&&this._y===t.y&&this._z===(t.z||this._z)},e.prototype.perp=function(){return this._set(this._y,-this._x,this._z)},e.prototype.rotate=function(t,e){var i=0,n=0;"object"==typeof e&&(i=e.x,n=e.y);var r=this.x-i,o=this.y-n,s=Math.cos(t),a=Math.sin(t);return this._set(r*s-o*a+i,r*a+o*s+n,this.z)},e.prototype.dotProduct=function(t){return this._x*t.x+this._y*t.y+this._z*(t.z||1)},e.prototype.lerp=function(t,e){return this._x+=(t.x-this._x)*e,this._y+=(t.y-this._y)*e,this._z+=(t.z-this._z)*e,this},e.prototype.distance=function(t){var e=this._x-t.x,i=this._y-t.y,n=this._z-(t.z||0);return Math.sqrt(e*e+i*i+n*n)},e.prototype.clone=function(){return pool.pull("ObservableVector3d",this._x,this._y,this._z,{onUpdate:this.onUpdate})},e.prototype.toVector3d=function(){return pool.pull("Vector3d",this._x,this._y,this._z)},e.prototype.toString=function(){return"x:"+this._x+",y:"+this._y+",z:"+this._z},Object.defineProperties(e.prototype,i),e}(Vector3d),earcut$2={exports:{}};function earcut(t,e,i){i=i||2;var n,r,o,s,a,h,l,u=e&&e.length,c=u?e[0]*i:t.length,d=linkedList(t,0,c,i,!0),p=[];if(!d||d.next===d.prev)return p;if(u&&(d=eliminateHoles(t,e,d,i)),t.length>80*i){n=o=t[0],r=s=t[1];for(var f=i;fo&&(o=a),h>s&&(s=h);l=0!==(l=Math.max(o-n,s-r))?1/l:0}return earcutLinked(d,p,i,n,r,l),p}function linkedList(t,e,i,n,r){var o,s;if(r===signedArea(t,e,i,n)>0)for(o=e;o=e;o-=n)s=insertNode(o,t[o],t[o+1],s);return s&&equals(s,s.next)&&(removeNode(s),s=s.next),s}function filterPoints(t,e){if(!t)return t;e||(e=t);var i,n=t;do{if(i=!1,n.steiner||!equals(n,n.next)&&0!==area(n.prev,n,n.next))n=n.next;else{if(removeNode(n),(n=e=n.prev)===n.next)break;i=!0}}while(i||n!==e);return e}function earcutLinked(t,e,i,n,r,o,s){if(t){!s&&o&&indexCurve(t,n,r,o);for(var a,h,l=t;t.prev!==t.next;)if(a=t.prev,h=t.next,o?isEarHashed(t,n,r,o):isEar(t))e.push(a.i/i),e.push(t.i/i),e.push(h.i/i),removeNode(t),t=h.next,l=h.next;else if((t=h)===l){s?1===s?earcutLinked(t=cureLocalIntersections(filterPoints(t),e,i),e,i,n,r,o,2):2===s&&splitEarcut(t,e,i,n,r,o):earcutLinked(filterPoints(t),e,i,n,r,o,1);break}}}function isEar(t){var e=t.prev,i=t,n=t.next;if(area(e,i,n)>=0)return!1;for(var r=t.next.next;r!==t.prev;){if(pointInTriangle(e.x,e.y,i.x,i.y,n.x,n.y,r.x,r.y)&&area(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function isEarHashed(t,e,i,n){var r=t.prev,o=t,s=t.next;if(area(r,o,s)>=0)return!1;for(var a=r.xo.x?r.x>s.x?r.x:s.x:o.x>s.x?o.x:s.x,u=r.y>o.y?r.y>s.y?r.y:s.y:o.y>s.y?o.y:s.y,c=zOrder(a,h,e,i,n),d=zOrder(l,u,e,i,n),p=t.prevZ,f=t.nextZ;p&&p.z>=c&&f&&f.z<=d;){if(p!==t.prev&&p!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,f!==t.prev&&f!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&area(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;p&&p.z>=c;){if(p!==t.prev&&p!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;f&&f.z<=d;){if(f!==t.prev&&f!==t.next&&pointInTriangle(r.x,r.y,o.x,o.y,s.x,s.y,f.x,f.y)&&area(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function cureLocalIntersections(t,e,i){var n=t;do{var r=n.prev,o=n.next.next;!equals(r,o)&&intersects(r,n,n.next,o)&&locallyInside(r,o)&&locallyInside(o,r)&&(e.push(r.i/i),e.push(n.i/i),e.push(o.i/i),removeNode(n),removeNode(n.next),n=t=o),n=n.next}while(n!==t);return filterPoints(n)}function splitEarcut(t,e,i,n,r,o){var s=t;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&isValidDiagonal(s,a)){var h=splitPolygon(s,a);return s=filterPoints(s,s.next),h=filterPoints(h,h.next),earcutLinked(s,e,i,n,r,o),void earcutLinked(h,e,i,n,r,o)}a=a.next}s=s.next}while(s!==t)}function eliminateHoles(t,e,i,n){var r,o,s,a=[];for(r=0,o=e.length;r=n.next.y&&n.next.y!==n.y){var a=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(a<=r&&a>s){if(s=a,a===r){if(o===n.y)return n;if(o===n.next.y)return n.next}i=n.x=n.x&&n.x>=u&&r!==n.x&&pointInTriangle(oi.x||n.x===i.x&§orContainsSector(i,n)))&&(i=n,d=h)),n=n.next}while(n!==l);return i}function sectorContainsSector(t,e){return area(t.prev,t,e.prev)<0&&area(e.next,t,t.next)<0}function indexCurve(t,e,i,n){var r=t;do{null===r.z&&(r.z=zOrder(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,sortLinked(r)}function sortLinked(t){var e,i,n,r,o,s,a,h,l=1;do{for(i=t,t=null,o=null,s=0;i;){for(s++,n=i,a=0,e=0;e0||h>0&&n;)0!==a&&(0===h||!n||i.z<=n.z)?(r=i,i=i.nextZ,a--):(r=n,n=n.nextZ,h--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;i=n}o.nextZ=null,l*=2}while(s>1);return t}function zOrder(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function getLeftmost(t){var e=t,i=t;do{(e.x=0&&(t-s)*(n-a)-(i-s)*(e-a)>=0&&(i-s)*(o-a)-(r-s)*(n-a)>=0}function isValidDiagonal(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!intersectsPolygon(t,e)&&(locallyInside(t,e)&&locallyInside(e,t)&&middleInside(t,e)&&(area(t.prev,t,e.prev)||area(t,e.prev,e))||equals(t,e)&&area(t.prev,t,t.next)>0&&area(e.prev,e,e.next)>0)}function area(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function equals(t,e){return t.x===e.x&&t.y===e.y}function intersects(t,e,i,n){var r=sign(area(t,e,i)),o=sign(area(t,e,n)),s=sign(area(i,n,t)),a=sign(area(i,n,e));return r!==o&&s!==a||(!(0!==r||!onSegment(t,i,e))||(!(0!==o||!onSegment(t,n,e))||(!(0!==s||!onSegment(i,t,n))||!(0!==a||!onSegment(i,e,n)))))}function onSegment(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function sign(t){return t>0?1:t<0?-1:0}function intersectsPolygon(t,e){var i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&intersects(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}function locallyInside(t,e){return area(t.prev,t,t.next)<0?area(t,e,t.next)>=0&&area(t,t.prev,e)>=0:area(t,e,t.prev)<0||area(t,t.next,e)<0}function middleInside(t,e){var i=t,n=!1,r=(t.x+e.x)/2,o=(t.y+e.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&r<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}function splitPolygon(t,e){var i=new Node$1(t.i,t.x,t.y),n=new Node$1(e.i,e.x,e.y),r=t.next,o=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,o.next=n,n.prev=o,n}function insertNode(t,e,i,n){var r=new Node$1(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function removeNode(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Node$1(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea(t,e,i,n){for(var r=0,o=e,s=i-n;o0&&(n+=t[r-1].length,i.holes.push(n))}return i};var earcut$1=earcut$2.exports;!function(){function t(t,e,i){Object.keys(i).forEach((function(n){if(e[n]=i[n],"function"!=typeof i[n])throw new TypeError("extend: Method `"+n+"` is not a function");Object.defineProperty(t.prototype,n,{configurable:!0,value:i[n]})}))}function e(t,e,i){return t.prototype[e].apply(this,i)}var i=function(){Object.apply(this,arguments)};(i.prototype=Object.create(Object.prototype)).constructor=i,Object.defineProperty(i,"extend",{value:function i(){for(var n=arguments,r={},o=new Array(arguments.length),s=0;se!=c>e&&t<(d-u)*(e-l)/(c-l)+u&&(i=!i)}return i},getBounds:function(){return void 0===this._bounds&&(this._bounds=pool.pull("Bounds")),this._bounds},updateBounds:function(){var t=this.getBounds();return t.update(this.points),t.translate(this.pos),t},clone:function(){var t=[];return this.points.forEach((function(e){t.push(e.clone())})),new Polygon(this.pos.x,this.pos.y,t)}}),Rect=Polygon.extend({init:function(t,e,i,n){this._super(Polygon,"init",[t,e,[new Vector2d(0,0),new Vector2d(i,0),new Vector2d(i,n),new Vector2d(0,n)]]),this.shapeType="Rectangle"},onResetEvent:function(t,e,i,n){this.setShape(t,e,i,n)},setShape:function(t,e,i,n){var r=i;return this.pos.set(t,e),4===arguments.length&&((r=this.points)[0].set(0,0),r[1].set(i,0),r[2].set(i,n),r[3].set(0,n)),this.setVertices(r),this},resize:function(t,e){return this.width=t,this.height=e,this},scale:function(t,e){return void 0===e&&(e=t),this.width*=t,this.height*=e,this},clone:function(){return new Rect(this.pos.x,this.pos.y,this.width,this.height)},copy:function(t){return this.setShape(t.pos.x,t.pos.y,t.width,t.height)},union:function(t){var e=Math.min(this.left,t.left),i=Math.min(this.top,t.top);return this.resize(Math.max(this.right,t.right)-e,Math.max(this.bottom,t.bottom)-i),this.pos.set(e,i),this},overlaps:function(t){return this.left=this.left&&e<=this.right&&i>=this.top&&n<=this.bottom},equals:function(t){return t.left===this.left&&t.right===this.right&&t.top===this.top&&t.bottom===this.bottom},isFinite:function(){return isFinite(this.pos.x)&&isFinite(this.pos.y)&&isFinite(this.width)&&isFinite(this.height)},toPolygon:function(){return new Polygon(this.pos.x,this.pos.y,this.points)}});Object.defineProperty(Rect.prototype,"left",{get:function(){return this.pos.x},configurable:!0}),Object.defineProperty(Rect.prototype,"right",{get:function(){var t=this.width;return this.pos.x+t||t},configurable:!0}),Object.defineProperty(Rect.prototype,"top",{get:function(){return this.pos.y},configurable:!0}),Object.defineProperty(Rect.prototype,"bottom",{get:function(){var t=this.height;return this.pos.y+t||t},configurable:!0}),Object.defineProperty(Rect.prototype,"width",{get:function(){return this.points[2].x},set:function(t){this.points[1].x=this.points[2].x=t,this.recalc(),this.updateBounds()},configurable:!0}),Object.defineProperty(Rect.prototype,"height",{get:function(){return this.points[2].y},set:function(t){this.points[2].y=this.points[3].y=t,this.recalc(),this.updateBounds()},configurable:!0}),Object.defineProperty(Rect.prototype,"centerX",{get:function(){return isFinite(this.width)?this.pos.x+this.width/2:this.width},set:function(t){this.pos.x=t-this.width/2},configurable:!0}),Object.defineProperty(Rect.prototype,"centerY",{get:function(){return isFinite(this.height)?this.pos.y+this.height/2:this.height},set:function(t){this.pos.y=t-this.height/2},configurable:!0});var _keyStatus={},_keyLock={},_keyLocked={},_keyRefs={},_preventDefaultForKeys={},_keyBindings={},keyDownEvent=function(t,e,i){e=e||t.keyCode||t.button;var n=_keyBindings[e];if(event.publish(event.KEYDOWN,[n,e,!n||!_keyLocked[n]]),n){if(!_keyLocked[n]){var r=void 0!==i?i:e;_keyRefs[n][r]||(_keyStatus[n]++,_keyRefs[n][r]=!0)}return!_preventDefaultForKeys[e]||"function"!=typeof t.preventDefault||t.preventDefault()}return!0},keyUpEvent=function(t,e,i){e=e||t.keyCode||t.button;var n=_keyBindings[e];if(event.publish(event.KEYUP,[n,e]),n){var r=void 0!==i?i:e;return _keyRefs[n][r]=void 0,_keyStatus[n]>0&&_keyStatus[n]--,_keyLocked[n]=!1,!_preventDefaultForKeys[e]||"function"!=typeof t.preventDefault||t.preventDefault()}return!0},keyBoardEventTarget=null,KEY={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:42,INSERT:45,DELETE:46,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,NUM9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,WINDOW_KEY:91,NUMPAD0:96,NUMPAD1:97,NUMPAD2:98,NUMPAD3:99,NUMPAD4:100,NUMPAD5:101,NUMPAD6:102,NUMPAD7:103,NUMPAD8:104,NUMPAD9:105,MULTIPLY:106,ADD:107,SUBSTRACT:109,DECIMAL:110,DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,TILDE:126,NUM_LOCK:144,SCROLL_LOCK:145,SEMICOLON:186,PLUS:187,COMMA:188,MINUS:189,PERIOD:190,FORWAND_SLASH:191,GRAVE_ACCENT:192,OPEN_BRACKET:219,BACK_SLASH:220,CLOSE_BRACKET:221,SINGLE_QUOTE:222};function initKeyboardEvent(){null===keyBoardEventTarget&&!1===device$1.isMobile&&((keyBoardEventTarget=window).addEventListener("keydown",keyDownEvent,!1),keyBoardEventTarget.addEventListener("keyup",keyUpEvent,!1))}function isKeyPressed(t){return!(!_keyStatus[t]||_keyLocked[t])&&(_keyLock[t]&&(_keyLocked[t]=!0),!0)}function keyStatus(t){return _keyStatus[t]>0}function triggerKeyEvent(t,e,i){!0===e?keyDownEvent({},t,i):keyUpEvent({},t,i)}function bindKey(t,e,i,n){void 0===n&&(n=preventDefault),_keyBindings[t]=e,_preventDefaultForKeys[t]=n,_keyStatus[e]=0,_keyLock[e]=i||!1,_keyLocked[e]=!1,_keyRefs[e]={}}function getBindingKey(t){return _keyBindings[t]}function unlockKey(t){_keyLocked[t]=!1}function unbindKey(t){var e=_keyBindings[t];_keyStatus[e]=0,_keyLock[e]=!1,_keyRefs[e]={},_keyBindings[t]=null,_preventDefaultForKeys[t]=null}var viewportOffset=new Vector2d,Pointer=Rect.extend({init:function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=1),void 0===n&&(n=1),this.LEFT=0,this.MIDDLE=1,this.RIGHT=2,this.event=void 0,this.type=void 0,this.button=0,this.isPrimary=!1,this.pageX=0,this.pageY=0,this.clientX=0,this.clientY=0,this.deltaMode=0,this.deltaX=0,this.deltaY=0,this.deltaZ=0,this.gameX=0,this.gameY=0,this.gameScreenX=0,this.gameScreenY=0,this.gameWorldX=0,this.gameWorldY=0,this.gameLocalX=0,this.gameLocalY=0,this.pointerId=void 0,this.bind=[0,0,0],this._super(Rect,"init",[t,e,i,n])},setEvent:function(t,e,i,n,r,o){void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===r&&(r=0),void 0===o&&(o=1);var s=1,a=1;this.event=t,this.pageX=e,this.pageY=i,this.clientX=n,this.clientY=r,globalToLocal(this.pageX,this.pageY,this.pos),this.isNormalized=!device$1.PointerEvent||device$1.PointerEvent&&!(t instanceof window.PointerEvent),"wheel"===t.type?(this.deltaMode=t.deltaMode||0,this.deltaX=t.deltaX||0,this.deltaY=t.deltaY||0,this.deltaZ=t.deltaZ||0):(this.deltaMode=0,this.deltaX=0,this.deltaY=0,this.deltaZ=0),this.pointerId=o,this.isPrimary=void 0===t.isPrimary||t.isPrimary,this.button=t.button||0,this.type=t.type,this.gameScreenX=this.pos.x,this.gameScreenY=this.pos.y,void 0!==game$1.viewport&&game$1.viewport.localToWorld(this.gameScreenX,this.gameScreenY,viewportOffset),this.gameWorldX=viewportOffset.x,this.gameWorldY=viewportOffset.y,!1===this.isNormalized?(s=t.width||1,a=t.height||1):"number"==typeof t.radiusX&&(s=2*t.radiusX||1,a=2*t.radiusY||1),this.resize(s,a)}}),T_POINTERS=[],eventHandlers=new Map,currentPointer,pointerInitialized=!1,lastTimeStamp=0,activeEventList=[],WHEEL=["wheel"],POINTER_MOVE=["pointermove","mousemove","touchmove"],POINTER_DOWN=["pointerdown","mousedown","touchstart"],POINTER_UP=["pointerup","mouseup","touchend"],POINTER_CANCEL=["pointercancel","mousecancel","touchcancel"],POINTER_ENTER=["pointerenter","mouseenter","touchenter"],POINTER_OVER=["pointerover","mouseover","touchover"],POINTER_LEAVE=["pointerleave","mouseleave","touchleave"],pointerEventList=[WHEEL[0],POINTER_MOVE[0],POINTER_DOWN[0],POINTER_UP[0],POINTER_CANCEL[0],POINTER_ENTER[0],POINTER_OVER[0],POINTER_LEAVE[0]],mouseEventList=[WHEEL[0],POINTER_MOVE[1],POINTER_DOWN[1],POINTER_UP[1],POINTER_CANCEL[1],POINTER_ENTER[1],POINTER_OVER[1],POINTER_LEAVE[1]],touchEventList=[POINTER_MOVE[2],POINTER_DOWN[2],POINTER_UP[2],POINTER_CANCEL[2],POINTER_ENTER[2],POINTER_OVER[2],POINTER_LEAVE[2]],pointerEventMap={wheel:WHEEL,pointermove:POINTER_MOVE,pointerdown:POINTER_DOWN,pointerup:POINTER_UP,pointercancel:POINTER_CANCEL,pointerenter:POINTER_ENTER,pointerover:POINTER_OVER,pointerleave:POINTER_LEAVE},normalizedEvents=[];function registerEventListener(t,e){for(var i=0;i=0&&(r=t.callbacks[e][o]);o--)if(!1===r(i))return!0}return!1}function dispatchEvent(t){for(var e=!1;t.length>0;){var i=t.pop();if(T_POINTERS.push(i),void 0!==i.event.timeStamp){if(i.event.timeStamp0;)r.callbacks[t].pop();0===r.callbacks[t].length&&delete r.callbacks[t]}0===Object.keys(r.callbacks).length&&eventHandlers.delete(e)}}function releaseAllPointerEvents(t){if(eventHandlers.has(t))for(var e=0;e0?i===this.GAMEPAD.BUTTONS.L2?Math.max(0,t-2e4)/111070:(t-1)/131070:(65536+t)/131070+.5}var vendorProductRE=/^([0-9a-f]{1,4})-([0-9a-f]{1,4})-/i,leadingZeroRE=/^0+/;function addMapping(t,e){var i=t.replace(vendorProductRE,(function(t,e,i){return"000".substr(e.length-1)+e+"-"+"000".substr(i.length-1)+i+"-"})),n=t.replace(vendorProductRE,(function(t,e,i){return e.replace(leadingZeroRE,"")+"-"+i.replace(leadingZeroRE,"")+"-"}));e.analog=e.analog||e.buttons.map((function(){return-1})),e.normalize_fn=e.normalize_fn||defaultNormalizeFn,remap.set(i,e),remap.set(n,e)}var bindings={},remap=new Map,updateEventHandler;[["45e-28e-Xbox 360 Wired Controller",{axes:[0,1,3,4],buttons:[11,12,13,14,8,9,-1,-1,5,4,6,7,0,1,2,3,10],analog:[-1,-1,-1,-1,-1,-1,2,5,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:wiredXbox360NormalizeFn}],["54c-268-PLAYSTATION(R)3 Controller",{axes:[0,1,2,3],buttons:[14,13,15,12,10,11,8,9,0,3,1,2,4,6,7,5,16]}],["54c-5c4-Wireless Controller",{axes:[0,1,2,3],buttons:[1,0,2,3,4,5,6,7,8,9,10,11,14,15,16,17,12,13]}],["2836-1-OUYA Game Controller",{axes:[0,3,7,9],buttons:[3,6,4,5,7,8,15,16,-1,-1,9,10,11,12,13,14,-1],analog:[-1,-1,-1,-1,-1,-1,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:ouyaNormalizeFn}],["OUYA Game Controller (Vendor: 2836 Product: 0001)",{axes:[0,1,3,4],buttons:[0,3,1,2,4,5,12,13,-1,-1,6,7,8,9,10,11,-1],analog:[-1,-1,-1,-1,-1,-1,2,5,-1,-1,-1,-1,-1,-1,-1,-1,-1],normalize_fn:ouyaNormalizeFn}]].forEach((function(t){addMapping(t[0],t[1])}));var updateGamepads=function(){var t=navigator.getGamepads();Object.keys(bindings).forEach((function(e){var i=t[e];if(i){var n=null;"standard"!==i.mapping&&(n=remap.get(i.id));var r=bindings[e];Object.keys(r.buttons).forEach((function(t){var o=r.buttons[t],s=t,a=-1;if(!(n&&(s=n.buttons[t],a=n.analog[t],s<0&&a<0))){var h=i.buttons[s]||{};if(n&&a>=0){var l=n.normalize_fn(i.axes[a],-1,+t);h={value:l,pressed:h.pressed||Math.abs(l)>=deadzone}}event.publish(event.GAMEPAD_UPDATE,[e,"buttons",+t,h]),!o.pressed&&h.pressed?triggerKeyEvent(o.keyCode,!0,s+256):o.pressed&&!h.pressed&&triggerKeyEvent(o.keyCode,!1,s+256),o.value=h.value,o.pressed=h.pressed}})),Object.keys(r.axes).forEach((function(t){var o=r.axes[t],s=t;if(!(n&&(s=n.axes[t])<0)){var a=i.axes[s];if(void 0!==a){n&&(a=n.normalize_fn(a,+t,-1));var h=Math.sign(a)||1;if(0!==o[h].keyCode){var l=Math.abs(a)>=deadzone+Math.abs(o[h].threshold);event.publish(event.GAMEPAD_UPDATE,[e,"axes",+t,a]),!o[h].pressed&&l?(o[-h].pressed&&(triggerKeyEvent(o[-h].keyCode,!1,s+256),o[-h].value=0,o[-h].pressed=!1),triggerKeyEvent(o[h].keyCode,!0,s+256)):!o[h].pressed&&!o[-h].pressed||l||triggerKeyEvent(o[h=o[h].pressed?h:-h].keyCode,!1,s+256),o[h].value=a,o[h].pressed=l}}}}))}}))};window.addEventListener("gamepadconnected",(function(t){event.publish(event.GAMEPAD_CONNECTED,[t.gamepad])}),!1),window.addEventListener("gamepaddisconnected",(function(t){event.publish(event.GAMEPAD_DISCONNECTED,[t.gamepad])}),!1);var GAMEPAD={AXES:{LX:0,LY:1,RX:2,RY:3,EXTRA_1:4,EXTRA_2:5,EXTRA_3:6,EXTRA_4:7},BUTTONS:{FACE_1:0,FACE_2:1,FACE_3:2,FACE_4:3,L1:4,R1:5,L2:6,R2:7,SELECT:8,BACK:8,START:9,FORWARD:9,L3:10,R3:11,UP:12,DOWN:13,LEFT:14,RIGHT:15,HOME:16,EXTRA_1:17,EXTRA_2:18,EXTRA_3:19,EXTRA_4:20}};function bindGamepad(t,e,i){if(!getBindingKey(i))throw new Error("no action defined for keycode "+i);void 0===updateEventHandler&&"function"==typeof navigator.getGamepads&&(updateEventHandler=event.subscribe(event.GAME_UPDATE,updateGamepads)),bindings[t]||(bindings[t]={axes:{},buttons:{}});var n={keyCode:i,value:0,pressed:!1,threshold:e.threshold},r=bindings[t][e.type];if("buttons"===e.type)r[e.code]=n;else if("axes"===e.type){var o=Math.sign(e.threshold)||1;r[e.code]||(r[e.code]={});var s=r[e.code];s[o]=n,s[-o]||(s[-o]={keyCode:0,value:0,pressed:!1,threshold:-o})}}function unbindGamepad(t,e){if(!bindings[t])throw new Error("no bindings for gamepad "+t);bindings[t].buttons[e]={}}function setGamepadDeadzone(t){deadzone=t}var setGamepadMapping=addMapping,preventDefault=!0,input=Object.freeze({__proto__:null,preventDefault:preventDefault,get pointerEventTarget(){return pointerEventTarget},get pointer(){return pointer},get throttlingInterval(){return throttlingInterval},globalToLocal:globalToLocal,setTouchAction:setTouchAction,bindPointer:bindPointer,unbindPointer:unbindPointer,registerPointerEvent:registerPointerEvent,releasePointerEvent:releasePointerEvent,releaseAllPointerEvents:releaseAllPointerEvents,get keyBoardEventTarget(){return keyBoardEventTarget},KEY:KEY,initKeyboardEvent:initKeyboardEvent,isKeyPressed:isKeyPressed,keyStatus:keyStatus,triggerKeyEvent:triggerKeyEvent,bindKey:bindKey,getBindingKey:getBindingKey,unlockKey:unlockKey,unbindKey:unbindKey,GAMEPAD:GAMEPAD,bindGamepad:bindGamepad,unbindGamepad:unbindGamepad,setGamepadDeadzone:setGamepadDeadzone,setGamepadMapping:setGamepadMapping}),Renderable=Rect.extend({init:function(t,e,i,n){this._super(Rect,"init",[t,e,i,n]),this.isRenderable=!0,this.isKinematic=!0,this.body=void 0,void 0===this.currentTransform&&(this.currentTransform=pool.pull("Matrix2d")),this.currentTransform.identity(),this.GUID=void 0,this.onVisibilityChange=void 0,this.alwaysUpdate=!1,this.updateWhenPaused=!1,this.isPersistent=!1,this.floating=!1,this.anchorPoint instanceof ObservableVector2d?this.anchorPoint.setMuted(.5,.5).setCallback(this.onAnchorUpdate,this):this.anchorPoint=pool.pull("ObservableVector2d",.5,.5,{onUpdate:this.onAnchorUpdate,scope:this}),this.autoTransform=!0,this.alpha=1,this.ancestor=void 0,this.mask=void 0,this.tint=pool.pull("Color",255,255,255,1),this.name="",this.pos instanceof ObservableVector3d?this.pos.setMuted(t,e,0).setCallback(this.updateBoundsPos,this):this.pos=pool.pull("ObservableVector3d",t,e,0,{onUpdate:this.updateBoundsPos,scope:this}),this.isDirty=!1,this._flip={x:!1,y:!1},this._inViewport=!1,this.setOpacity(1)},onResetEvent:function(){this.init.apply(this,arguments)},getBounds:function(){return void 0===this._bounds&&(this._super(Rect,"getBounds"),this.isFinite()?this._bounds.setMinMax(this.pos.x,this.pos.y,this.pos.x+this.width,this.pos.y+this.height):this._bounds.setMinMax(this.pos.x,this.pos.y,this.width,this.height)),this._bounds},getOpacity:function(){return this.alpha},setOpacity:function(t){"number"==typeof t&&(this.alpha=clamp(t,0,1),isNaN(this.alpha)&&(this.alpha=1))},flipX:function(t){return this._flip.x=!!t,this.isDirty=!0,this},flipY:function(t){return this._flip.y=!!t,this.isDirty=!0,this},transform:function(t){return this.currentTransform.multiply(t),this.updateBoundsPos(this.pos.x,this.pos.y),this.isDirty=!0,this},angleTo:function(t){var e,i,n=this.getBounds();if(t instanceof Renderable){var r=t.getBounds();e=r.centerX-n.centerX,i=r.centerY-n.centerY}else e=t.x-n.centerX,i=t.y-n.centerY;return Math.atan2(i,e)},distanceTo:function(t){var e,i,n=this.getBounds();if(t instanceof Renderable){var r=t.getBounds();e=n.centerX-r.centerX,i=n.centerY-r.centerY}else e=n.centerX-t.x,i=n.centerY-t.y;return Math.sqrt(e*e+i*i)},lookAt:function(t){var e;e=t instanceof Renderable?t.pos:t;var i=this.angleTo(e);return this.rotate(i),this},rotate:function(t){return isNaN(t)||(this.currentTransform.rotate(t),this.isDirty=!0),this},scale:function(t,e){return this.currentTransform.scale(t,e),this._super(Rect,"scale",[t,e]),this.isDirty=!0,this},scaleV:function(t){return this.scale(t.x,t.y),this},update:function(){return this.isDirty},updateBounds:function(){return this._super(Rect,"updateBounds"),this.updateBoundsPos(this.pos.x,this.pos.y),this.getBounds()},updateBoundsPos:function(t,e){var i=this.getBounds();i.shift(t,e),void 0!==this.anchorPoint&&i.isFinite()&&i.translate(-this.anchorPoint.x*i.width,-this.anchorPoint.y*i.height),this.ancestor instanceof Container$1&&!0!==this.floating&&i.translate(this.ancestor.getAbsolutePosition())},getAbsolutePosition:function(){return void 0===this._absPos&&(this._absPos=pool.pull("Vector2d")),this._absPos.set(this.pos.x,this.pos.y),this.ancestor instanceof Container$1&&!0!==this.floating&&this._absPos.add(this.ancestor.getAbsolutePosition()),this._absPos},onAnchorUpdate:function(t,e){this.anchorPoint.setMuted(t,e),this.updateBoundsPos(this.pos.x,this.pos.y)},preDraw:function(t){var e=this.getBounds(),i=e.width*this.anchorPoint.x,n=e.height*this.anchorPoint.y;if(t.save(),t.setGlobalAlpha(t.globalAlpha()*this.getOpacity()),this._flip.x||this._flip.y){var r=this._flip.x?this.centerX-i:0,o=this._flip.y?this.centerY-n:0;t.translate(r,o),t.scale(this._flip.x?-1:1,this._flip.y?-1:1),t.translate(-r,-o)}!0!==this.autoTransform||this.currentTransform.isIdentity()||(t.translate(this.pos.x,this.pos.y),t.transform(this.currentTransform),t.translate(-this.pos.x,-this.pos.y)),t.translate(-i,-n),void 0!==this.mask&&t.setMask(this.mask),t.setTint(this.tint)},draw:function(){},postDraw:function(t){void 0!==this.mask&&t.clearMask(),t.clearTint(),this.isDirty=!1,t.restore()},destroy:function(){pool.push(this.currentTransform),this.currentTransform=void 0,pool.push(this.anchorPoint),this.anchorPoint=void 0,pool.push(this.pos),this.pos=void 0,void 0!==this._absPos&&(pool.push(this._absPos),this._absPos=void 0),pool.push(this._bounds),this._bounds=void 0,this.onVisibilityChange=void 0,void 0!==this.mask&&(pool.push(this.mask),this.mask=void 0),void 0!==this.tint&&(pool.push(this.tint),this.tint=void 0),this.ancestor=void 0,void 0!==this.body&&(this.body.destroy.apply(this.body,arguments),this.body=void 0),releaseAllPointerEvents(this),this.onDestroyEvent.apply(this,arguments)},onDestroyEvent:function(){}});Object.defineProperty(Renderable.prototype,"inViewport",{get:function(){return this._inViewport},set:function(t){this._inViewport!==t&&(this._inViewport=t,"function"==typeof this.onVisibilityChange&&this.onVisibilityChange.call(this,t))},configurable:!0}),Object.defineProperty(Renderable.prototype,"isFlippedX",{get:function(){return!0===this._flip.x},configurable:!0}),Object.defineProperty(Renderable.prototype,"isFlippedY",{get:function(){return!0===this._flip.y},configurable:!0});var deferredRemove=function(t,e){this.removeChildNow(t,e)},globalFloatingCounter=0,Container=Renderable.extend({init:function(t,e,i,n,r){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=game$1.viewport.width),void 0===n&&(n=game$1.viewport.height),void 0===r&&(r=!1),this.pendingSort=null,this._super(Renderable,"init",[t,e,i,n]),this.root=r,this.children=void 0,this.sortOn=game$1.sortOn,this.autoSort=!0,this.autoDepth=!0,this.clipping=!1,this.onChildChange=function(){},this.enableChildBoundsUpdate=!1,this.drawCount=0,this.autoTransform=!0,this.isKinematic=!1,this.anchorPoint.set(0,0),!0===this.root&&event.subscribe(event.CANVAS_ONRESIZE,this.updateBounds.bind(this,!0))},reset:function(){this.pendingSort&&(clearTimeout(this.pendingSort),this.pendingSort=null);for(var t,e=this.getChildren(),i=e.length;i>=0;t=e[--i])t&&!0!==t.isPersistent&&this.removeChildNow(t);void 0!==this.currentTransform&&this.currentTransform.identity()},addChild:function(t,e){return t.ancestor instanceof Container?t.ancestor.removeChildNow(t):t.isRenderable&&(t.GUID=utils$1.createGUID(t.id)),t.ancestor=this,this.getChildren().push(t),void 0!==t.pos&&("number"==typeof e?t.pos.z=e:!0===this.autoDepth&&(t.pos.z=this.getChildren().length)),!0===this.autoSort&&this.sort(),"function"==typeof t.onActivateEvent&&this.isAttachedToRoot()&&t.onActivateEvent(),!0===this.isAttachedToRoot()&&game$1.repaint(),this.enableChildBoundsUpdate&&this.updateBounds(!0),this.onChildChange.call(this,this.getChildren().length-1),t},addChildAt:function(t,e){if(e>=0&&e1&&(i=e);n=0&&t=0&&e0?e[0]:null},getChildren:function(){return void 0===this.children&&(this.children=[]),this.children},updateBounds:function(t){void 0===t&&(t=!1),this._super(Renderable,"updateBounds");var e=this.getBounds();return!0!==t&&!0!==this.enableChildBoundsUpdate||this.forEach((function(t){t.isRenderable&&(t.getBounds().isFinite()&&e.addBounds(t.getBounds()))})),e},isAttachedToRoot:function(){if(!0===this.root)return!0;for(var t=this.ancestor;t;){if(!0===t.root)return!0;t=t.ancestor}return!1},updateBoundsPos:function(t,e){var i=this;return this._super(Renderable,"updateBoundsPos",[t,e]),this.forEach((function(n){n.isRenderable&&n.updateBoundsPos(n.pos.x+t-i.pos.x,n.pos.y+e-i.pos.y)})),this.getBounds()},onActivateEvent:function(){this.forEach((function(t){"function"==typeof t.onActivateEvent&&t.onActivateEvent()}))},removeChild:function(t,e){if(!this.hasChild(t))throw new Error("Child is not mine.");utils$1.function.defer(deferredRemove,this,t,e)},removeChildNow:function(t,e){if(this.hasChild(t)&&this.getChildIndex(t)>=0){"function"==typeof t.onDeactivateEvent&&t.onDeactivateEvent(),e||("function"==typeof t.destroy&&t.destroy(),pool.push(t));var i=this.getChildIndex(t);i>=0&&(this.getChildren().splice(i,1),t.ancestor=void 0),!0===this.isAttachedToRoot()&&game$1.repaint(),this.enableChildBoundsUpdate&&this.updateBounds(!0),this.onChildChange.call(this,i)}},setChildsProperty:function(t,e,i){this.forEach((function(n){!0===i&&n instanceof Container&&n.setChildsProperty(t,e,i),n[t]=e}))},moveUp:function(t){var e=this.getChildIndex(t);e-1>=0&&this.swapChildren(t,this.getChildAt(e-1))},moveDown:function(t){var e=this.getChildIndex(t);e>=0&&e+10){var i=this.getChildren();i.splice(0,0,i.splice(e,1)[0]),t.pos.z=i[1].pos.z+1}},moveToBottom:function(t){var e=this.getChildIndex(t),i=this.getChildren();e>=0&&e0||e.floating)&&globalFloatingCounter++,e.inViewport=!1,state$1.current().cameras.forEach((function(t){t.isVisible(e,n)&&(e.inViewport=!0)})),i=(e.inViewport||e.alwaysUpdate)&&e.update(t)||i,globalFloatingCounter>0&&globalFloatingCounter--):i=e.update(t)||i);return i},draw:function(t,e){var i=!1,n=this.getBounds();this.drawCount=0,!1===this.root&&!0===this.clipping&&!0===n.isFinite()&&t.clipRect(n.left,n.top,n.width,n.height),t.translate(this.pos.x,this.pos.y);for(var r,o=this.getChildren(),s=o.length;r=o[--s];)r.isRenderable&&(i=!0===r.floating,(r.inViewport||i)&&(i&&(t.save(),t.resetTransform()),r.preDraw(t),r.draw(t,e),r.postDraw(t),i&&t.restore(),this.drawCount++))}}),Container$1=Container,QT_ARRAY=[];function QT_ARRAY_POP(t,e,i,n){if(QT_ARRAY.length>0){var r=QT_ARRAY.pop();return r.bounds=t,r.max_objects=e||4,r.max_levels=i||4,r.level=n||0,r}return new QuadTree(t,e,i,n)}function QT_ARRAY_PUSH(t){QT_ARRAY.push(t)}var QT_VECTOR=new Vector2d,QuadTree=function(t,e,i,n){this.max_objects=e||4,this.max_levels=i||4,this.level=n||0,this.bounds=t,this.objects=[],this.nodes=[]};QuadTree.prototype.split=function(){var t=this.level+1,e=this.bounds.width/2,i=this.bounds.height/2,n=this.bounds.left,r=this.bounds.top;this.nodes[0]=QT_ARRAY_POP({left:n+e,top:r,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[1]=QT_ARRAY_POP({left:n,top:r,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[2]=QT_ARRAY_POP({left:n,top:r+i,width:e,height:i},this.max_objects,this.max_levels,t),this.nodes[3]=QT_ARRAY_POP({left:n+e,top:r+i,width:e,height:i},this.max_objects,this.max_levels,t)},QuadTree.prototype.getIndex=function(t){var e,i=-1,n=(e=t.floating||t.ancestor&&t.ancestor.floating?game$1.viewport.localToWorld(t.left,t.top,QT_VECTOR):QT_VECTOR.set(t.left,t.top)).x,r=e.y,o=t.width,s=t.height,a=this.bounds.left+this.bounds.width/2,h=this.bounds.top+this.bounds.height/2,l=rh;return na&&(l?i=0:u&&(i=3)),i},QuadTree.prototype.insertContainer=function(t){for(var e,i=t.children.length;i--,e=t.children[i];)!0!==e.isKinematic&&(e instanceof Container$1?("rootContainer"!==e.name&&this.insert(e),this.insertContainer(e)):"function"==typeof e.getBounds&&this.insert(e))},QuadTree.prototype.insert=function(t){var e=-1;if(this.nodes.length>0&&-1!==(e=this.getIndex(t)))this.nodes[e].insert(t);else if(this.objects.push(t),this.objects.length>this.max_objects&&this.level0){var n=this.getIndex(t);if(-1!==n)i=i.concat(this.nodes[n].retrieve(t));else for(var r=0;r0){var i=this.getIndex(t);-1!==i&&(e=utils$1.array.remove(this.nodes[i],t))&&this.nodes[i].isPrunable()&&this.nodes.splice(i,1)}return!1===e&&-1!==this.objects.indexOf(t)&&(utils$1.array.remove(this.objects,t),e=!0),e},QuadTree.prototype.isPrunable=function(){return!(this.hasChildren()||this.objects.length>0)},QuadTree.prototype.hasChildren=function(){for(var t=0;t0||e.objects.length>0)return!0}return!1},QuadTree.prototype.clear=function(t){this.objects.length=0;for(var e=0;er&&(r=a)}i[0]=n,i[1]=r}function isSeparatingAxis(t,e,i,n,r,o){var s=T_ARRAYS.pop(),a=T_ARRAYS.pop(),h=T_VECTORS.pop().copy(e).sub(t),l=h.dotProduct(r);if(flattenPointsOn(i,r,s),flattenPointsOn(n,r,a),a[0]+=l,a[1]+=l,s[0]>a[1]||a[0]>s[1])return T_VECTORS.push(h),T_ARRAYS.push(s),T_ARRAYS.push(a),!0;if(o){var u=0;if(s[0]a[1])u=s[0]-a[1],o.aInB=!1;else{var p=s[1]-a[0],f=a[1]-s[0];u=pi?RIGHT_VORNOI_REGION:MIDDLE_VORNOI_REGION}function testPolygonPolygon(t,e,i,n,r){var o,s=e.points,a=e.normals,h=a.length,l=n.points,u=n.normals,c=u.length,d=T_VECTORS.pop().copy(t.pos).add(t.ancestor.getAbsolutePosition()).add(e.pos),p=T_VECTORS.pop().copy(i.pos).add(i.ancestor.getAbsolutePosition()).add(n.pos);for(o=0;ol)return T_VECTORS.push(o),!1;if(r){var c=Math.sqrt(u);r.a=t,r.b=i,r.overlap=h-c,r.overlapN.copy(o.normalize()),r.overlapV.copy(o).scale(r.overlap),r.aInB=s<=a&&c<=a-s,r.bInA=a<=s&&c<=s-a}return T_VECTORS.push(o),!0}function testPolygonEllipse(t,e,i,n,r){for(var o=T_VECTORS.pop().copy(i.pos).add(i.ancestor.getAbsolutePosition()).add(n.pos).sub(t.pos).add(t.ancestor.getAbsolutePosition()).sub(e.pos),s=n.radius,a=s*s,h=e.points,l=e.edges,u=l.length,c=T_VECTORS.pop(),d=T_VECTORS.pop(),p=T_VECTORS.pop(),f=0,g=0;ga&&(r.aInB=!1);var x=vornoiRegion(c,p),w=!0;if(x===LEFT_VORNOI_REGION){var b=null;if(u>1&&(c.copy(l[y]),(x=vornoiRegion(c,b=T_VECTORS.pop().copy(o).sub(h[y])))!==RIGHT_VORNOI_REGION&&(w=!1)),w){if((f=p.length())>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),b&&T_VECTORS.push(b),!1;r&&(r.bInA=!1,_=p.normalize(),v=s-f)}b&&T_VECTORS.push(b)}else if(x===RIGHT_VORNOI_REGION){if(u>1&&(c.copy(l[m]),p.copy(o).sub(h[m]),(x=vornoiRegion(c,p))!==LEFT_VORNOI_REGION&&(w=!1)),w){if((f=p.length())>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),!1;r&&(r.bInA=!1,_=p.normalize(),v=s-f)}}else{d.copy(e.normals[g]),f=p.dotProduct(d);var T=Math.abs(f);if((1===u||f>0)&&T>s)return T_VECTORS.push(o),T_VECTORS.push(c),T_VECTORS.push(d),T_VECTORS.push(p),!1;r&&(_=d,v=s-f,(f>=0||v<2*s)&&(r.bInA=!1))}_&&r&&Math.abs(v)0},rayCast:function(t,e){for(var i,n=0,r=e||[],o=game$1.world.broadphase.retrieve(t),s=o.length;i=o[--s];)if(i.body&&t.getBounds().overlaps(i.getBounds())){var a=i.body.shapes.length;if(0===i.body.shapes.length)continue;var h=t,l=0;do{var u=i.body.getShape(l);SAT["test"+h.shapeType+u.shapeType].call(this,dummyObj,h,i,u)&&(r[n]=i,n++),l++}while(lthis.world.fps},getParentContainer:function(t){return t.ancestor},repaint:function(){isDirty=!0},update:function(t,e){if(++frameCounter%frameRate==0)for(frameCounter=0,event.publish(event.GAME_UPDATE,[t]),accumulator+=timer$1.getDelta(),accumulator=Math.min(accumulator,accumulatorMax),updateDelta=timer$1.interpolation?timer$1.getDelta():stepSize,accumulatorUpdateDelta=timer$1.interpolation?updateDelta:Math.max(updateDelta,updateAverageDelta);accumulator>=accumulatorUpdateDelta||timer$1.interpolation;)if(lastUpdateStart=window.performance.now(),isDirty=e.update(updateDelta)||isDirty,timer$1.lastUpdate=window.performance.now(),updateAverageDelta=timer$1.lastUpdate-lastUpdateStart,accumulator-=accumulatorUpdateDelta,timer$1.interpolation){accumulator=0;break}},draw:function(t){var e=video$1.renderer;!0===e.isContextValid&&(isDirty||isAlwaysDirty)&&(e.clear(),t.draw(e),isDirty=!1,e.flush())}},game$1=game,MIN=Math.min,MAX=Math.max,targetV=new Vector2d,Camera2d=Renderable.extend({init:function(t,e,i,n){this._super(Renderable,"init",[t,e,i-t,n-e]),this.AXIS={NONE:0,HORIZONTAL:1,VERTICAL:2,BOTH:3},this.bounds=pool.pull("Bounds"),this.smoothFollow=!0,this.damping=1,this.near=-1e3,this.far=1e3,this.projectionMatrix=new Matrix3d,this.invCurrentTransform=new Matrix2d,this.offset=new Vector2d,this.target=null,this.follow_axis=this.AXIS.NONE,this._shake={intensity:0,duration:0,axis:this.AXIS.BOTH,onComplete:null},this._fadeOut={color:null,tween:null},this._fadeIn={color:null,tween:null},this.name="default",this.setDeadzone(this.width/6,this.height/6),this.anchorPoint.set(0,0),this.isKinematic=!1,this.bounds.setMinMax(t,e,i,n),this._updateProjectionMatrix(),event.subscribe(event.GAME_RESET,this.reset.bind(this)),event.subscribe(event.CANVAS_ONRESIZE,this.resize.bind(this))},_updateProjectionMatrix:function(){this.projectionMatrix.ortho(0,this.width,this.height,0,this.near,this.far)},_followH:function(t){var e=this.pos.x;return t.x-this.pos.x>this.deadzone.right?e=MIN(t.x-this.deadzone.right,this.bounds.width-this.width):t.x-this.pos.xthis.deadzone.bottom?e=MIN(t.y-this.deadzone.bottom,this.bounds.height-this.height):t.y-this.pos.y0&&(this._shake.duration-=t,this._shake.duration<=0?(this._shake.duration=0,this.offset.setZero(),"function"==typeof this._shake.onComplete&&this._shake.onComplete()):(this._shake.axis!==this.AXIS.BOTH&&this._shake.axis!==this.AXIS.HORIZONTAL||(this.offset.x=(Math.random()-.5)*this._shake.intensity),this._shake.axis!==this.AXIS.BOTH&&this._shake.axis!==this.AXIS.VERTICAL||(this.offset.y=(Math.random()-.5)*this._shake.intensity)),e=!0),!0===e&&event.publish(event.VIEWPORT_ONCHANGE,[this.pos]),null==this._fadeIn.tween&&null==this._fadeOut.tween||(e=!0),this.currentTransform.isIdentity()?this.invCurrentTransform.identity():this.invCurrentTransform.copy(this.currentTransform).invert(),e},shake:function(t,e,i,n,r){0!==this._shake.duration&&!0!==r||(this._shake.intensity=t,this._shake.duration=e,this._shake.axis=i||this.AXIS.BOTH,this._shake.onComplete="function"==typeof n?n:void 0)},fadeOut:function(t,e,i){void 0===e&&(e=1e3),this._fadeOut.color=pool.pull("Color").copy(t),this._fadeOut.tween=pool.pull("Tween",this._fadeOut.color).to({alpha:0},e).onComplete(i||null),this._fadeOut.tween.isPersistent=!0,this._fadeOut.tween.start()},fadeIn:function(t,e,i){void 0===e&&(e=1e3),this._fadeIn.color=pool.pull("Color").copy(t);var n=this._fadeIn.color.alpha;this._fadeIn.color.alpha=0,this._fadeIn.tween=pool.pull("Tween",this._fadeIn.color).to({alpha:n},e).onComplete(i||null),this._fadeIn.tween.isPersistent=!0,this._fadeIn.tween.start()},getWidth:function(){return this.width},getHeight:function(){return this.height},focusOn:function(t){var e=t.getBounds();this.moveTo(t.pos.x+e.left+e.width/2,t.pos.y+e.top+e.height/2)},isVisible:function(t,e){return void 0===e&&(e=t.floating),!0===e||!0===t.floating?video$1.renderer.overlaps(t.getBounds()):t.getBounds().overlaps(this)},localToWorld:function(t,e,i){return(i=i||new Vector2d).set(t,e).add(this.pos).sub(game$1.world.pos),this.currentTransform.isIdentity()||this.invCurrentTransform.apply(i),i},worldToLocal:function(t,e,i){return(i=i||new Vector2d).set(t,e),this.currentTransform.isIdentity()||this.currentTransform.apply(i),i.sub(this.pos).add(game$1.world.pos)},drawFX:function(t){this._fadeIn.tween&&(t.save(),t.resetTransform(),t.setColor(this._fadeIn.color),t.fillRect(0,0,this.width,this.height),t.restore(),1===this._fadeIn.color.alpha&&(this._fadeIn.tween=null,pool.push(this._fadeIn.color),this._fadeIn.color=null)),this._fadeOut.tween&&(t.save(),t.resetTransform(),t.setColor(this._fadeOut.color),t.fillRect(0,0,this.width,this.height),t.restore(),0===this._fadeOut.color.alpha&&(this._fadeOut.tween=null,pool.push(this._fadeOut.color),this._fadeOut.color=null))},draw:function(t,e){var i=this.pos.x+this.offset.x,n=this.pos.y+this.offset.y;e.currentTransform.translate(-i,-n),t.setProjection(this.projectionMatrix),t.clipRect(0,0,this.width,this.height),this.preDraw(t),e.preDraw(t),e.draw(t,this),this.drawFX(t),e.postDraw(t),this.postDraw(t),e.currentTransform.translate(i,n)}}),default_camera,default_settings={cameras:[]},Stage=window.Jay.extend({init:function(t){this.cameras=new Map,this.settings=Object.assign(default_settings,t||{})},reset:function(){var t=this;if(this.settings.cameras.forEach((function(e){t.cameras.set(e.name,e)})),!1===this.cameras.has("default")){if(void 0===default_camera){var e=video$1.renderer.getWidth(),i=video$1.renderer.getHeight();default_camera=new Camera2d(0,0,e,i)}this.cameras.set("default",default_camera)}game$1.reset(),this.onResetEvent.apply(this,arguments)},update:function(t){var e=game$1.world.update(t);return this.cameras.forEach((function(i){i.update(t)&&(e=!0)})),e},draw:function(t){this.cameras.forEach((function(e){e.draw(t,game$1.world)}))},destroy:function(){this.cameras.clear(),this.onDestroyEvent.apply(this,arguments)},onResetEvent:function(){"function"==typeof this.settings.onResetEvent&&this.settings.onResetEvent.apply(this,arguments)},onDestroyEvent:function(){"function"==typeof this.settings.onDestroyEvent&&this.settings.onDestroyEvent.apply(this,arguments)}}),ProgressBar=Renderable.extend({init:function(t,e,i,n){var r=this;this.barHeight=n,this._super(Renderable,"init",[t,e,i,n]),this.anchorPoint.set(0,0),this.loaderHdlr=event.subscribe(event.LOADER_PROGRESS,r.onProgressUpdate.bind(r)),this.resizeHdlr=event.subscribe(event.VIEWPORT_ONRESIZE,r.resize.bind(r)),this.anchorPoint.set(0,0),this.progress=0},onProgressUpdate:function(t){this.progress=~~(t*this.width),this.isDirty=!0},draw:function(t){t.clearColor("#202020"),t.setColor("black"),t.fillRect(this.pos.x,game$1.viewport.centerY,t.getWidth(),this.barHeight/2),t.setColor("#55aa00"),t.fillRect(this.pos.x,game$1.viewport.centerY,this.progress,this.barHeight/2)},onDestroyEvent:function(){event.unsubscribe(this.loaderHdlr),event.unsubscribe(this.resizeHdlr),this.loaderHdlr=this.resizeHdlr=null}}),IconLogo=Renderable.extend({init:function(t,e){this._super(Renderable,"init",[t,e,100,85]),this.iconCanvas=video$1.createCanvas(nextPowerOfTwo(this.width),nextPowerOfTwo(this.height),!1);var i=video$1.renderer.getContext2d(this.iconCanvas);i.beginPath(),i.moveTo(.7,48.9),i.bezierCurveTo(10.8,68.9,38.4,75.8,62.2,64.5),i.bezierCurveTo(86.1,53.1,97.2,27.7,87,7.7),i.lineTo(87,7.7),i.bezierCurveTo(89.9,15.4,73.9,30.2,50.5,41.4),i.bezierCurveTo(27.1,52.5,5.2,55.8,.7,48.9),i.lineTo(.7,48.9),i.closePath(),i.fillStyle="rgb(255, 255, 255)",i.fill(),i.beginPath(),i.moveTo(84,7),i.bezierCurveTo(87.6,14.7,72.5,30.2,50.2,41.6),i.bezierCurveTo(27.9,53,6.9,55.9,3.2,48.2),i.bezierCurveTo(-.5,40.4,14.6,24.9,36.9,13.5),i.bezierCurveTo(59.2,2.2,80.3,-.8,84,7),i.lineTo(84,7),i.closePath(),i.lineWidth=5.3,i.strokeStyle="rgb(255, 255, 255)",i.lineJoin="miter",i.miterLimit=4,i.stroke(),this.anchorPoint.set(.5,.5)},draw:function(t){t.drawImage(this.iconCanvas,t.getWidth()/2,this.pos.y)}}),TextLogo=Renderable.extend({init:function(t,e){this._super(Renderable,"init",[0,0,t,e]),this.textWidth=0,this.fontCanvas=video$1.createCanvas(256,64,!0),this.drawFont(video$1.renderer.getContext2d(this.fontCanvas)),this.anchorPoint.set(0,.5)},drawFont:function(t){var e=pool.pull("Text",0,0,{font:"century gothic",size:32,fillStyle:"white",textAlign:"middle",textBaseline:"top",text:"melon"}),i=pool.pull("Text",0,0,{font:"century gothic",size:32,fillStyle:"#55aa00",textAlign:"middle",textBaseline:"top",bold:!0,text:"JS"}),n=e.measureText(t).width,r=i.measureText(t).width;this.textWidth=n+r,this.pos.x=Math.round(this.width-this.textWidth/2),this.pos.y=Math.round(this.height+16),e._drawFont(t,["melon"],0,0),i._drawFont(t,["JS"],n,0),pool.push(e),pool.push(i)},draw:function(t){t.drawImage(this.fontCanvas,Math.round((t.getWidth()-this.textWidth)/2),this.pos.y)}}),defaultLoadingScreen=new Stage({onResetEvent:function(){game$1.world.addChild(new ProgressBar(0,video$1.renderer.getHeight()/2,video$1.renderer.getWidth(),8),1),game$1.world.addChild(new IconLogo(video$1.renderer.getWidth()/2,video$1.renderer.getHeight()/2-16-35),2),game$1.world.addChild(new TextLogo(video$1.renderer.getWidth(),video$1.renderer.getHeight()),2)}}),_state=-1,_animFrameId=-1,_isPaused=!1,_stages={},_fade={color:"",duration:0},_onSwitchComplete=null,_extraArgs=null,_pauseTime=0;function _startRunLoop(){-1===_animFrameId&&-1!==_state&&(timer$1.reset(),_animFrameId=window.requestAnimationFrame(_renderFrame))}function _resumeRunLoop(){_isPaused&&-1!==_state&&(timer$1.reset(),_isPaused=!1)}function _pauseRunLoop(){_isPaused=!0}function _renderFrame(t){var e=_stages[_state].stage;game$1.update(t,e),game$1.draw(e),-1!==_animFrameId&&(_animFrameId=window.requestAnimationFrame(_renderFrame))}function _stopRunLoop(){window.cancelAnimationFrame(_animFrameId),_animFrameId=-1}function _switchState(t){_stopRunLoop(),_stages[_state]&&_stages[_state].stage.destroy(),_stages[t]&&(_stages[_state=t].stage.reset.apply(_stages[_state].stage,_extraArgs),_startRunLoop(),_onSwitchComplete&&_onSwitchComplete(),game$1.repaint())}var state={LOADING:0,MENU:1,READY:2,PLAY:3,GAMEOVER:4,GAME_END:5,SCORE:6,CREDITS:7,SETTINGS:8,DEFAULT:9,USER:100,onPause:null,onResume:null,onStop:null,onRestart:null,init:function(){this.set(this.LOADING,defaultLoadingScreen),this.set(this.DEFAULT,new Stage);var t=this;event.subscribe(event.VIDEO_INIT,(function(){t.change(t.DEFAULT,!0)}))},stop:function(t){_state!==this.LOADING&&this.isRunning()&&(_stopRunLoop(),!0===t&&audio$1.pauseTrack(),_pauseTime=window.performance.now(),event.publish(event.STATE_STOP),"function"==typeof this.onStop&&this.onStop())},pause:function(t){_state===this.LOADING||this.isPaused()||(_pauseRunLoop(),!0===t&&audio$1.pauseTrack(),_pauseTime=window.performance.now(),event.publish(event.STATE_PAUSE),"function"==typeof this.onPause&&this.onPause())},restart:function(t){this.isRunning()||(_startRunLoop(),!0===t&&audio$1.resumeTrack(),_pauseTime=window.performance.now()-_pauseTime,game$1.repaint(),event.publish(event.STATE_RESTART,[_pauseTime]),"function"==typeof this.onRestart&&this.onRestart())},resume:function(t){this.isPaused()&&(_resumeRunLoop(),!0===t&&audio$1.resumeTrack(),_pauseTime=window.performance.now()-_pauseTime,event.publish(event.STATE_RESUME,[_pauseTime]),"function"==typeof this.onResume&&this.onResume())},isRunning:function(){return-1!==_animFrameId},isPaused:function(){return _isPaused},set:function(t,e,i){if(!(e instanceof Stage))throw new Error(e+" is not an instance of me.Stage");_stages[t]={},_stages[t].stage=e,_stages[t].transition=!0,!0===i&&this.change(t)},current:function(){if(void 0!==_stages[_state])return _stages[_state].stage},transition:function(t,e,i){"fade"===t&&(_fade.color=e,_fade.duration=i)},setTransition:function(t,e){_stages[t].transition=e},change:function(t,e){if(void 0===_stages[t])throw new Error("Undefined Stage for state '"+t+"'");this.isCurrent(t)||(_extraArgs=null,arguments.length>1&&(_extraArgs=Array.prototype.slice.call(arguments,1)),_fade.duration&&_stages[t].transition?(_onSwitchComplete=function(){game$1.viewport.fadeOut(_fade.color,_fade.duration)},game$1.viewport.fadeIn(_fade.color,_fade.duration,(function(){utils$1.function.defer(_switchState,this,t)}))):!0===e?_switchState(t):utils$1.function.defer(_switchState,this,t))},isCurrent:function(t){return _state===t}},state$1=state,Ellipse=window.Jay.extend({init:function(t,e,i,n){this.pos=new Vector2d,this._bounds=void 0,this.radius=NaN,this.radiusV=new Vector2d,this.radiusSq=new Vector2d,this.ratio=new Vector2d,this.shapeType="Ellipse",this.setShape(t,e,i,n)},onResetEvent:function(t,e,i,n){this.setShape(t,e,i,n)},setShape:function(t,e,i,n){var r=i/2,o=n/2;this.pos.set(t,e),this.radius=Math.max(r,o),this.ratio.set(r/this.radius,o/this.radius),this.radiusV.set(this.radius,this.radius).scaleV(this.ratio);var s=this.radius*this.radius;return this.radiusSq.set(s,s).scaleV(this.ratio),this.getBounds().setMinMax(t,e,t+i,t+n),this.getBounds().translate(-this.radiusV.x,-this.radiusV.y),this},rotate:function(t,e){return this.pos.rotate(t,e),this.getBounds().shift(this.pos),this.getBounds().translate(-this.radiusV.x,-this.radiusV.y),this},scale:function(t,e){return e=void 0!==e?e:t,this.setShape(this.pos.x,this.pos.y,2*this.radiusV.x*t,2*this.radiusV.y*e)},scaleV:function(t){return this.scale(t.x,t.y)},transform:function(){return this},translate:function(){var t,e;return 2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.pos.x+=t,this.pos.y+=e,this.getBounds().translate(t,e),this},contains:function(t,e){var i,n;return 2===arguments.length?(i=arguments[0],n=arguments[1]):(i=arguments[0].x,n=arguments[0].y),i-=this.pos.x,n-=this.pos.y,i*i/this.radiusSq.x+n*n/this.radiusSq.y<=1},getBounds:function(){return void 0===this._bounds&&(this._bounds=pool.pull("Bounds")),this._bounds},clone:function(){return new Ellipse(this.pos.x,this.pos.y,2*this.radiusV.x,2*this.radiusV.y)}}),Bounds$1=function(t){this.onResetEvent(t)},prototypeAccessors$1={x:{configurable:!0},y:{configurable:!0},width:{configurable:!0},height:{configurable:!0},left:{configurable:!0},right:{configurable:!0},top:{configurable:!0},bottom:{configurable:!0},centerX:{configurable:!0},centerY:{configurable:!0},center:{configurable:!0}};Bounds$1.prototype.onResetEvent=function(t){void 0===this.min?(this.min={x:1/0,y:1/0},this.max={x:-1/0,y:-1/0}):this.clear(),void 0!==t&&this.update(t),this._center=new Vector2d},Bounds$1.prototype.clear=function(){this.setMinMax(1/0,1/0,-1/0,-1/0)},Bounds$1.prototype.setMinMax=function(t,e,i,n){this.min.x=t,this.min.y=e,this.max.x=i,this.max.y=n},prototypeAccessors$1.x.get=function(){return this.min.x},prototypeAccessors$1.x.set=function(t){var e=this.max.x-this.min.x;this.min.x=t,this.max.x=t+e},prototypeAccessors$1.y.get=function(){return this.min.y},prototypeAccessors$1.y.set=function(t){var e=this.max.y-this.min.y;this.min.y=t,this.max.y=t+e},prototypeAccessors$1.width.get=function(){return this.max.x-this.min.x},prototypeAccessors$1.width.set=function(t){this.max.x=this.min.x+t},prototypeAccessors$1.height.get=function(){return this.max.y-this.min.y},prototypeAccessors$1.height.set=function(t){this.max.y=this.min.y+t},prototypeAccessors$1.left.get=function(){return this.min.x},prototypeAccessors$1.right.get=function(){return this.max.x},prototypeAccessors$1.top.get=function(){return this.min.y},prototypeAccessors$1.bottom.get=function(){return this.max.y},prototypeAccessors$1.centerX.get=function(){return this.min.x+this.width/2},prototypeAccessors$1.centerY.get=function(){return this.min.y+this.height/2},prototypeAccessors$1.center.get=function(){return this._center.set(this.centerX,this.centerY)},Bounds$1.prototype.update=function(t){this.add(t,!0)},Bounds$1.prototype.add=function(t,e){void 0===e&&(e=!1),!0===e&&this.clear();for(var i=0;ithis.max.x&&(this.max.x=n.x),n.xthis.max.y&&(this.max.y=n.y),n.ythis.max.x&&(this.max.x=t.max.x),t.min.xthis.max.y&&(this.max.y=t.max.y),t.min.y=this.min.x&&e<=this.max.x&&i>=this.min.y&&n<=this.max.y},Bounds$1.prototype.overlaps=function(t){return this.left<=t.right&&this.right>=t.left&&this.bottom>=t.top&&this.top<=t.bottom},Bounds$1.prototype.isFinite=function(){return isFinite(this.min.x)&&isFinite(this.max.x)&&isFinite(this.min.y)&&isFinite(this.max.y)},Bounds$1.prototype.translate=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.min.x+=t,this.max.x+=t,this.min.y+=e,this.max.y+=e},Bounds$1.prototype.shift=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y);var i=this.max.x-this.min.x,n=this.max.y-this.min.y;this.min.x=t,this.max.x=t+i,this.min.y=e,this.max.y=e+n},Bounds$1.prototype.clone=function(){var t=new Bounds$1;return t.addBounds(this),t},Bounds$1.prototype.toPolygon=function(){return new Polygon(this.x,this.y,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])},Object.defineProperties(Bounds$1.prototype,prototypeAccessors$1);var Body=function(t,e,i){if(this.ancestor=t,void 0===this.bounds&&(this.bounds=new Bounds$1),void 0===this.shapes&&(this.shapes=[]),this.collisionMask=collision.types.ALL_OBJECT,this.collisionType=collision.types.ENEMY_OBJECT,void 0===this.vel&&(this.vel=new Vector2d),this.vel.set(0,0),void 0===this.accel&&(this.accel=new Vector2d),this.accel.set(0,0),void 0===this.force&&(this.force=new Vector2d),this.force.set(0,0),void 0===this.friction&&(this.friction=new Vector2d),this.friction.set(0,0),this.bounce=0,this.mass=1,void 0===this.maxVel&&(this.maxVel=new Vector2d),this.maxVel.set(490,490),void 0===this.gravity){var n=this;this.gravity=new ObservableVector2d(0,0,{onUpdate:function(t,e){"number"==typeof e&&(n.gravityScale=e/game$1.world.gravity.y),console.log("me.Body.gravity is deprecated, please see me.Body.gravityScale to modify gravity for a specific body")}})}if(this.gravityScale=1,this.ignoreGravity=!1,this.falling=!1,this.jumping=!1,"function"==typeof i&&(this.onBodyUpdate=i),this.bounds.clear(),void 0!==e)if(Array.isArray(e))for(var r=0;r0)for(var i=0;i=0;--n)s[i]+=o.charCodeAt(i*e+n)<<(n<<3);return s}function decode(t,e,i){switch(i=i||"none",e=e||"none"){case"csv":return decodeCSV(t);case"base64":var n=decodeBase64AsArray(t,4);return"none"===i?n:decompress();case"none":return t;case"xml":throw new Error("XML encoding is deprecated, use base64 instead");default:throw new Error("Unknown layer encoding: "+e)}}function normalize(t,e){var i=e.nodeName;switch(i){case"data":var n=parse(e);n.text=n.text||n.chunk.text,n.encoding=n.encoding||"xml",t.data=decode(n.text,n.encoding,n.compression),t.encoding="none";break;case"imagelayer":case"layer":case"objectgroup":case"group":var r=parse(e);r.type="layer"===i?"tilelayer":i,r.image&&(r.image=r.image.source),t.layers=t.layers||[],t.layers.push(r);break;case"animation":t.animation=parse(e).frames;break;case"frame":case"object":var o=i+"s";t[o]=t[o]||[],t[o].push(parse(e));break;case"tile":var s=parse(e);s.image&&(s.imagewidth=s.image.width,s.imageheight=s.image.height,s.image=s.image.source),t.tiles=t.tiles||{},t.tiles[s.id]=s;break;case"tileset":var a=parse(e);a.image&&(a.imagewidth=a.image.width,a.imageheight=a.image.height,a.image=a.image.source),t.tilesets=t.tilesets||[],t.tilesets.push(a);break;case"polygon":case"polyline":t[i]=[];for(var h,l=parse(e).points.split(" "),u=0;u0&&(this.vel.x*=-this.bounce)),0!==e.y){this.vel.y=~~(.5+this.vel.y-e.y)||0,this.bounce>0&&(this.vel.y*=-this.bounce);var i=Math.sign(game$1.world.gravity.y*this.gravityScale)||1;this.falling=e.y>=i,this.jumping=e.y<=-i}},Body.prototype.forEach=function(t,e){var i=this,n=0,r=this.shapes,o=r.length;if("function"!=typeof t)throw new Error(t+" is not a function");for(arguments.length>1&&(i=e);n0?n:0,t.y=o<0?o:s>0?s:0},Body.prototype.computeVelocity=function(t){if(this.force.x&&(t.x+=this.force.x*timer$1.tick),this.force.y&&(t.y+=this.force.y*timer$1.tick),(this.friction.x||this.friction.y)&&this.applyFriction(t),!this.ignoreGravity){var e=game$1.world.gravity;t.x+=e.x*this.gravityScale*this.mass*timer$1.tick,t.y+=e.y*this.gravityScale*this.mass*timer$1.tick,this.falling=t.y*Math.sign(e.y*this.gravityScale)>0,this.jumping=!this.falling&&this.jumping}0!==t.y&&(t.y=clamp(t.y,-this.maxVel.y,this.maxVel.y)),0!==t.x&&(t.x=clamp(t.x,-this.maxVel.x,this.maxVel.x))},Body.prototype.update=function(){return this.computeVelocity(this.vel),this.ancestor.pos.add(this.vel),0!==this.vel.x||0!==this.vel.y},Body.prototype.destroy=function(){this.onBodyUpdate=void 0,this.ancestor=void 0,this.shapes.length=0};var TextureCache=function(t){this.cache=new Map,this.tinted=new Map,this.units=new Map,this.max_size=t||1/0,this.clear()};function createAtlas(t,e,i,n){return void 0===i&&(i="default"),void 0===n&&(n="no-repeat"),{meta:{app:"melonJS",size:{w:t,h:e},repeat:n,image:"default"},frames:[{filename:i,frame:{x:0,y:0,w:t,h:e}}]}}TextureCache.prototype.clear=function(){this.cache.clear(),this.tinted.clear(),this.units.clear(),this.length=0},TextureCache.prototype.validate=function(){if(this.length>=this.max_size)throw new Error("Texture cache overflow: "+this.max_size+" texture units available for this GPU.")},TextureCache.prototype.get=function(t,e){return this.cache.has(t)||(e||(e=createAtlas(t.width,t.height,t.src?utils$1.file.getBasename(t.src):void 0)),this.set(t,new Texture(e,t,!1))),this.cache.get(t)},TextureCache.prototype.tint=function(t,e){var i=this.tinted.get(t);return void 0===i&&(i=this.tinted.set(t,new Map)),i.has(e)||i.set(e,video$1.renderer.tint(t,e,"multiply")),i.get(e)},TextureCache.prototype.set=function(t,e){var i=t.width,n=t.height;if(!(1!==video$1.renderer.WebGLVersion||isPowerOfTwo(i)&&isPowerOfTwo(n))){var r=void 0!==t.src?t.src:t;console.warn("[Texture] "+r+" is not a POT texture ("+i+"x"+n+")")}this.cache.set(t,e)},TextureCache.prototype.getUnit=function(t){return this.units.has(t)||(this.validate(),this.units.set(t,this.length++)),this.units.get(t)};var Texture=function(t,e,i){if(this.format=null,this.sources=new Map,this.atlases=new Map,void 0!==t)for(var n in t=Array.isArray(t)?t:[t]){var r=t[n];if(void 0!==r.meta){if(r.meta.app.includes("texturepacker")||r.meta.app.includes("free-tex-packer")){if(this.format="texturepacker",void 0===e){var o=loader$1.getImage(r.meta.image);if(!o)throw new Error("Atlas texture '"+o+"' not found");this.sources.set(r.meta.image,o)}else this.sources.set(r.meta.image||"default","string"==typeof e?loader$1.getImage(e):e);this.repeat="no-repeat"}else if(r.meta.app.includes("ShoeBox")){if(!r.meta.exporter||!r.meta.exporter.includes("melonJS"))throw new Error("ShoeBox requires the JSON exporter : https://github.com/melonjs/melonJS/tree/master/media/shoebox_JSON_export.sbx");this.format="ShoeBox",this.repeat="no-repeat",this.sources.set("default","string"==typeof e?loader$1.getImage(e):e)}else r.meta.app.includes("melonJS")&&(this.format="melonJS",this.repeat=r.meta.repeat||"no-repeat",this.sources.set("default","string"==typeof e?loader$1.getImage(e):e));this.atlases.set(r.meta.image||"default",this.parse(r))}else void 0!==r.framewidth&&void 0!==r.frameheight&&(this.format="Spritesheet (fixed cell size)",this.repeat="no-repeat",void 0!==e&&(r.image="string"==typeof e?loader$1.getImage(e):e),this.atlases.set("default",this.parseFromSpriteSheet(r)),this.sources.set("default",r.image))}if(0===this.atlases.length)throw new Error("texture atlas format not supported");!1!==i&&this.sources.forEach((function(t){i instanceof TextureCache?i.set(t,this):video$1.renderer.cache.set(t,this)}))};Texture.prototype.parse=function(t){var e={},i=this;return t.frames.forEach((function(n){if(n.hasOwnProperty("filename")){var r,o,s=n.frame,a=n.spriteSourceSize&&n.sourceSize&&n.pivot;a&&(r=n.sourceSize.w*n.pivot.x-(n.trimmed?n.spriteSourceSize.x:0),o=n.sourceSize.h*n.pivot.y-(n.trimmed?n.spriteSourceSize.y:0)),e[n.filename]={name:n.filename,texture:t.meta.image||"default",offset:new Vector2d(s.x,s.y),anchorPoint:a?new Vector2d(r/s.w,o/s.h):null,trimmed:!!n.trimmed,width:s.w,height:s.h,angle:!0===n.rotated?-ETA:0},i.addUvsMap(e,n.filename,t.meta.size.w,t.meta.size.h)}})),e},Texture.prototype.parseFromSpriteSheet=function(t){var e={},i=t.image,n=t.spacing||0,r=t.margin||0,o=i.width,s=i.height,a=pool.pull("Vector2d",~~((o-r+n)/(t.framewidth+n)),~~((s-r+n)/(t.frameheight+n)));if(o%(t.framewidth+n)!=0||s%(t.frameheight+n)!=0){var h=a.x*(t.framewidth+n),l=a.y*(t.frameheight+n);h-o!==n&&l-s!==n&&(o=h,s=l,console.warn("Spritesheet Texture for image: "+i.src+" is not divisible by "+(t.framewidth+n)+"x"+(t.frameheight+n)+", truncating effective size to "+o+"x"+s))}for(var u=0,c=a.x*a.y;u0){var e=this.getAnimationFrameObjectByIndex(this.current.idx).delay;for(this.dt+=t;this.dt>=e;){this.isDirty=!0,this.dt-=e;var i=this.current.length>1?this.current.idx+1:this.current.idx;if(this.setAnimationFrame(i),0===this.current.idx&&"function"==typeof this.resetAnim&&!1===this.resetAnim()){this.setAnimationFrame(this.current.length-1),this.dt%=e;break}e=this.getAnimationFrameObjectByIndex(this.current.idx).delay}}return this._flicker.isFlickering&&(this._flicker.duration-=t,this._flicker.duration<0&&("function"==typeof this._flicker.callback&&this._flicker.callback(),this.flicker(-1)),this.isDirty=!0),this.isDirty},destroy:function(){pool.push(this.offset),this.offset=void 0,this._super(Renderable,"destroy")},draw:function(t){if(!this._flicker.isFlickering||(this._flicker.state=!this._flicker.state,this._flicker.state)){var e=this.current,i=this.pos.x,n=this.pos.y,r=e.width,o=e.height,s=e.offset,a=this.offset;0!==e.angle&&(t.translate(-i,-n),t.rotate(e.angle),i-=o,r=e.height,o=e.width),t.drawImage(this.image,a.x+s.x,a.y+s.y,r,o,i,n,r,o)}}}),TMX_FLIP_H=2147483648,TMX_FLIP_V=1073741824,TMX_FLIP_AD=536870912,TMX_CLEAR_BIT_MASK$1=536870911,Tile=function(t){function e(e,i,n,r){var o,s;if(t.call(this),r.isCollection){var a=r.getTileImage(n&TMX_CLEAR_BIT_MASK$1);o=a.width,s=a.height}else o=r.tilewidth,s=r.tileheight;this.setMinMax(0,0,o,s),this.tileset=r,this.currentTransform=null,this.col=e,this.row=i,this.tileId=n,this.flippedX=0!=(this.tileId&TMX_FLIP_H),this.flippedY=0!=(this.tileId&TMX_FLIP_V),this.flippedAD=0!=(this.tileId&TMX_FLIP_AD),this.flipped=this.flippedX||this.flippedY||this.flippedAD,!0===this.flipped&&(null===this.currentTransform&&(this.currentTransform=new Matrix2d),this.setTileTransform(this.currentTransform.identity())),this.tileId&=TMX_CLEAR_BIT_MASK$1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setTileTransform=function(t){t.translate(this.width/2,this.height/2),this.flippedAD&&(t.rotate(-90*Math.PI/180),t.scale(-1,1)),this.flippedX&&t.scale(this.flippedAD?1:-1,this.flippedAD?-1:1),this.flippedY&&t.scale(this.flippedAD?-1:1,this.flippedAD?1:-1),t.translate(-this.width/2,-this.height/2)},e.prototype.getRenderable=function(t){var e,i=this.tileset;if(i.animations.has(this.tileId)){var n=[],r=[];i.animations.get(this.tileId).frames.forEach((function(t){r.push(t.tileid),n.push({name:""+t.tileid,delay:t.duration})})),(e=i.texture.createAnimationFromName(r,t)).addAnimation(this.tileId-i.firstgid,n),e.setCurrentAnimation(this.tileId-i.firstgid)}else if(!0===i.isCollection){var o=i.getTileImage(this.tileId);(e=new Sprite(0,0,Object.assign({image:o}))).anchorPoint.set(0,0),e.scale(t.width/this.width,t.height/this.height),void 0!==t.rotation&&(e.anchorPoint.set(.5,.5),e.currentTransform.rotate(t.rotation),e.currentTransform.translate(t.width/2,t.height/2),t.rotation=void 0)}else(e=i.texture.createSpriteFromName(this.tileId-i.firstgid,t)).anchorPoint.set(0,0);return this.setTileTransform(e.currentTransform),e},e}(Bounds$1),Line=Polygon.extend({contains:function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),t-=this.pos.x,e-=this.pos.y;var i=this.points[0],n=this.points[1];return(e-i.y)*(n.x-i.x)==(n.y-i.y)*(t-i.x)},recalc:function(){var t=this.edges,e=this.normals,i=this.indices,n=this.points;if(2!==n.length)throw new Error("Requires exactly 2 points");return void 0===t[0]&&(t[0]=new Vector2d),t[0].copy(n[1]).sub(n[0]),void 0===e[0]&&(e[0]=new Vector2d),e[0].copy(t[0]).perp().normalize(),i.length=0,this},clone:function(){var t=[];return this.points.forEach((function(e){t.push(e.clone())})),new Line(this.pos.x,this.pos.y,t)}}),Renderer=function(t){return this.settings=t,this.isContextValid=!0,this.currentScissor=new Int32Array([0,0,this.settings.width,this.settings.height]),this.currentBlendMode="normal",!0===device$1.ejecta?this.canvas=document.getElementById("canvas"):void 0!==window.canvas?this.canvas=window.canvas:void 0!==this.settings.canvas?this.canvas=this.settings.canvas:this.canvas=video$1.createCanvas(this.settings.zoomX,this.settings.zoomY),this.backBufferCanvas=this.canvas,this.context=null,this.currentColor=new Color(0,0,0,1),this.currentTint=new Color(255,255,255,1),this.projectionMatrix=new Matrix3d,this.uvOffset=0,this.Texture=Texture,event.subscribe(event.GAME_RESET,(function(){video$1.renderer.reset()})),this};Renderer.prototype.clear=function(){},Renderer.prototype.reset=function(){this.resetTransform(),this.setBlendMode(this.settings.blendMode),this.setColor("#000000"),this.clearTint(),this.cache.clear(),this.currentScissor[0]=0,this.currentScissor[1]=0,this.currentScissor[2]=this.backBufferCanvas.width,this.currentScissor[3]=this.backBufferCanvas.height},Renderer.prototype.getCanvas=function(){return this.backBufferCanvas},Renderer.prototype.getScreenCanvas=function(){return this.canvas},Renderer.prototype.getScreenContext=function(){return this.context},Renderer.prototype.getBlendMode=function(){return this.currentBlendMode},Renderer.prototype.getContext2d=function(t,e){if(null==t)throw new Error("You must pass a canvas element in order to create a 2d context");if(void 0===t.getContext)throw new Error("Your browser does not support HTML5 canvas.");"boolean"!=typeof e&&(e=!0);var i=t.getContext("2d",{alpha:e});return i.canvas||(i.canvas=t),this.setAntiAlias(i,this.settings.antiAlias),i},Renderer.prototype.getWidth=function(){return this.backBufferCanvas.width},Renderer.prototype.getHeight=function(){return this.backBufferCanvas.height},Renderer.prototype.getColor=function(){return this.currentColor},Renderer.prototype.globalAlpha=function(){return this.currentColor.glArray[3]},Renderer.prototype.overlaps=function(t){return t.left<=this.getWidth()&&t.right>=0&&t.top<=this.getHeight()&&t.bottom>=0},Renderer.prototype.resize=function(t,e){t===this.backBufferCanvas.width&&e===this.backBufferCanvas.height||(this.canvas.width=this.backBufferCanvas.width=t,this.canvas.height=this.backBufferCanvas.height=e,this.currentScissor[0]=0,this.currentScissor[1]=0,this.currentScissor[2]=t,this.currentScissor[3]=e,event.publish(event.CANVAS_ONRESIZE,[t,e]))},Renderer.prototype.setAntiAlias=function(t,e){var i=t.canvas;setPrefixed("imageSmoothingEnabled",!0===e,t),!0!==e?(i.style["image-rendering"]="optimizeSpeed",i.style["image-rendering"]="-moz-crisp-edges",i.style["image-rendering"]="-o-crisp-edges",i.style["image-rendering"]="-webkit-optimize-contrast",i.style["image-rendering"]="optimize-contrast",i.style["image-rendering"]="crisp-edges",i.style["image-rendering"]="pixelated",i.style.msInterpolationMode="nearest-neighbor"):i.style["image-rendering"]="auto"},Renderer.prototype.setProjection=function(t){this.projectionMatrix.copy(t)},Renderer.prototype.stroke=function(t,e){t instanceof Rect||t instanceof Bounds$1?this.strokeRect(t.left,t.top,t.width,t.height,e):t instanceof Line||t instanceof Polygon?this.strokePolygon(t,e):t instanceof Ellipse&&this.strokeEllipse(t.pos.x,t.pos.y,t.radiusV.x,t.radiusV.y,e)},Renderer.prototype.tint=function(t,e,i){var n=video$1.createCanvas(t.width,t.height,!0),r=this.getContext2d(n);return r.save(),r.fillStyle=e instanceof Color?e.toRGB():e,r.fillRect(0,0,t.width,t.height),r.globalCompositeOperation=i||"multiply",r.drawImage(t,0,0),r.globalCompositeOperation="destination-atop",r.drawImage(t,0,0),r.restore(),n},Renderer.prototype.fill=function(t){this.stroke(t,!0)},Renderer.prototype.setMask=function(t){},Renderer.prototype.clearMask=function(){},Renderer.prototype.setTint=function(t){this.currentTint.copy(t)},Renderer.prototype.clearTint=function(){this.currentTint.setColor(255,255,255,1)},Renderer.prototype.drawFont=function(){};var CanvasRenderer=function(t){function e(e){return t.call(this,e),this.context=this.getContext2d(this.getScreenCanvas(),this.settings.transparent),this.settings.doubleBuffering?(this.backBufferCanvas=video$1.createCanvas(this.settings.width,this.settings.height,!0),this.backBufferContext2D=this.getContext2d(this.backBufferCanvas)):(this.backBufferCanvas=this.getScreenCanvas(),this.backBufferContext2D=this.context),this.setBlendMode(this.settings.blendMode),this.setColor(this.currentColor),this.cache=new TextureCache,!1===this.settings.textureSeamFix||this.settings.antiAlias||(this.uvOffset=1),this}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this.clearColor(this.currentColor,!0!==this.settings.transparent)},e.prototype.resetTransform=function(){this.backBufferContext2D.setTransform(1,0,0,1,0,0)},e.prototype.setBlendMode=function(t,e){if(e=e||this.getContext(),this.currentBlendMode=t,"multiply"===t)e.globalCompositeOperation="multiply";else e.globalCompositeOperation="source-over",this.currentBlendMode="normal";this.settings.doubleBuffering&&this.settings.transparent&&(this.context.globalCompositeOperation="copy")},e.prototype.clear=function(){this.settings.transparent&&this.clearColor("rgba(0,0,0,0)",!0)},e.prototype.flush=function(){this.settings.doubleBuffering&&this.context.drawImage(this.backBufferCanvas,0,0)},e.prototype.clearColor=function(t,e){this.save(),this.resetTransform(),this.backBufferContext2D.globalCompositeOperation=e?"copy":"source-over",this.backBufferContext2D.fillStyle=t instanceof Color?t.toRGBA():t,this.fillRect(0,0,this.backBufferCanvas.width,this.backBufferCanvas.height),this.restore()},e.prototype.clearRect=function(t,e,i,n){this.backBufferContext2D.clearRect(t,e,i,n)},e.prototype.createPattern=function(t,e){return this.backBufferContext2D.createPattern(t,e)},e.prototype.drawImage=function(t,e,i,n,r,o,s,a,h){if(!(this.backBufferContext2D.globalAlpha<1/255)){void 0===n?(n=a=t.width,r=h=t.height,o=e,s=i,e=0,i=0):void 0===o&&(o=e,s=i,a=n,h=r,n=t.width,r=t.height,e=0,i=0),!1===this.settings.subPixel&&(o=~~o,s=~~s);var l=t,u=this.currentTint.toArray();1===u[0]&&1===u[1]&&1===u[2]||(l=this.cache.tint(t,this.currentTint.toRGB())),this.backBufferContext2D.drawImage(l,e,i,n,r,o,s,a,h)}},e.prototype.drawPattern=function(t,e,i,n,r){if(!(this.backBufferContext2D.globalAlpha<1/255)){var o=this.backBufferContext2D.fillStyle;this.backBufferContext2D.fillStyle=t,this.backBufferContext2D.fillRect(e,i,n,r),this.backBufferContext2D.fillStyle=o}},e.prototype.strokeArc=function(t,e,i,n,r,o,s){var a=this.backBufferContext2D;a.globalAlpha<1/255||(a.translate(t,e),a.beginPath(),a.arc(0,0,i,n,r,o||!1),a[!0===s?"fill":"stroke"](),a.translate(-t,-e))},e.prototype.fillArc=function(t,e,i,n,r,o){this.strokeArc(t,e,i,n,r,o||!1,!0)},e.prototype.strokeEllipse=function(t,e,i,n,r){var o=this.backBufferContext2D;if(!(o.globalAlpha<1/255)){var s=t-i,a=t+i,h=e-n,l=e+n,u=.551784*i,c=.551784*n,d=t-u,p=t+u,f=e-c,g=e+c;o.beginPath(),o.moveTo(t,h),o.bezierCurveTo(p,h,a,f,a,e),o.bezierCurveTo(a,g,p,l,t,l),o.bezierCurveTo(d,l,s,g,s,e),o.bezierCurveTo(s,f,d,h,t,h),o[!0===r?"fill":"stroke"](),o.closePath()}},e.prototype.fillEllipse=function(t,e,i,n){this.strokeEllipse(t,e,i,n,!0)},e.prototype.strokeLine=function(t,e,i,n){var r=this.backBufferContext2D;r<1/255||(r.beginPath(),r.moveTo(t,e),r.lineTo(i,n),r.stroke())},e.prototype.fillLine=function(t,e,i,n){this.strokeLine(t,e,i,n)},e.prototype.strokePolygon=function(t,e){var i=this.backBufferContext2D;if(!(i.globalAlpha<1/255)){var n;this.translate(t.pos.x,t.pos.y),i.beginPath(),i.moveTo(t.points[0].x,t.points[0].y);for(var r=1;r0,this.isAnimated&&(this.preRender=!1),this.getBounds().addBounds(this.getRenderer().getBounds(),!0),this.getBounds().shift(this.pos),!0!==this.preRender||this.canvasRenderer||(this.canvasRenderer=new CanvasRenderer({canvas:video$1.createCanvas(this.width,this.height),widht:this.width,heigth:this.height,transparent:!0}),preRenderLayer(this,this.canvasRenderer))},onDeactivateEvent:function(){this.animatedTilesets=void 0},setRenderer:function(t){this.renderer=t},getRenderer:function(){return this.renderer},getTileId:function(t,e){var i=this.getTile(t,e);return i?i.tileId:null},getTile:function(t,e){var i=null;if(this.contains(t,e)){var n=this.getRenderer().pixelToTileCoords(t,e,pool.pull("Vector2d"));i=this.cellAt(n.x,n.y),pool.push(n)}return i},setTile:function(t,e,i){return this.layerData[e][i]=t,t},getTileById:function(t,e,i){return this.tileset.contains(t)||(this.tileset=this.tilesets.getTilesetByGid(t)),new Tile(e,i,t,this.tileset)},cellAt:function(t,e,i){var n=~~t,r=~~e,o=this.getRenderer();return!1===i||n>=0&&n=0&&rthis.max.x&&(this.max.x=n.x),n.xthis.max.y&&(this.max.y=n.y),n.ythis.max.x&&(this.max.x=t.max.x),t.min.xthis.max.y&&(this.max.y=t.max.y),t.min.y=this.min.x&&e<=this.max.x&&i>=this.min.y&&n<=this.max.y},Bounds.prototype.overlaps=function(t){return this.left<=t.right&&this.right>=t.left&&this.bottom>=t.top&&this.top<=t.bottom},Bounds.prototype.isFinite=function(){return isFinite(this.min.x)&&isFinite(this.max.x)&&isFinite(this.min.y)&&isFinite(this.max.y)},Bounds.prototype.translate=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y),this.min.x+=t,this.max.x+=t,this.min.y+=e,this.max.y+=e},Bounds.prototype.shift=function(){var t,e;2===arguments.length?(t=arguments[0],e=arguments[1]):(t=arguments[0].x,e=arguments[0].y);var i=this.max.x-this.min.x,n=this.max.y-this.min.y;this.min.x=t,this.max.x=t+i,this.min.y=e,this.max.y=e+n},Bounds.prototype.clone=function(){var t=new Bounds;return t.addBounds(this),t},Bounds.prototype.toPolygon=function(){return new Polygon(this.x,this.y,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])},Object.defineProperties(Bounds.prototype,prototypeAccessors);var TMXRenderer=function(t,e,i,n){this.cols=t,this.rows=e,this.tilewidth=i,this.tileheight=n,this.bounds=new Bounds};TMXRenderer.prototype.canRender=function(t){return this.tilewidth===t.tilewidth&&this.tileheight===t.tileheight},TMXRenderer.prototype.getBounds=function(t){var e=t instanceof TMXLayer?pool.pull("Bounds"):this.bounds;return e.setMinMax(0,0,this.cols*this.tilewidth,this.rows*this.tileheight),e},TMXRenderer.prototype.pixelToTileCoords=function(t,e,i){return i},TMXRenderer.prototype.tileToPixelCoords=function(t,e,i){return i},TMXRenderer.prototype.drawTile=function(t,e,i,n){},TMXRenderer.prototype.drawTileLayer=function(t,e,i){};var TMXOrthogonalRenderer=function(t){function e(e){t.call(this,e.cols,e.rows,e.tilewidth,e.tileheight)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.canRender=function(e){return"orthogonal"===e.orientation&&t.prototype.canRender.call(this,e)},e.prototype.pixelToTileCoords=function(t,e,i){return(i||new Vector2d).set(t/this.tilewidth,e/this.tileheight)},e.prototype.tileToPixelCoords=function(t,e,i){return(i||new Vector2d).set(t*this.tilewidth,e*this.tileheight)},e.prototype.adjustPosition=function(t){"number"==typeof t.gid&&(t.y-=t.height)},e.prototype.drawTile=function(t,e,i,n){var r=n.tileset;r.drawTile(t,r.tileoffset.x+e*this.tilewidth,r.tileoffset.y+(i+1)*this.tileheight-r.tileheight,n)},e.prototype.drawTileLayer=function(t,e,i){var n=1,r=1,o=this.pixelToTileCoords(Math.max(i.pos.x-(e.maxTileSize.width-e.tilewidth),0),Math.max(i.pos.y-(e.maxTileSize.height-e.tileheight),0),pool.pull("Vector2d")).floorSelf(),s=this.pixelToTileCoords(i.pos.x+i.width+this.tilewidth,i.pos.y+i.height+this.tileheight,pool.pull("Vector2d")).ceilSelf();switch(s.x=s.x>this.cols?this.cols:s.x,s.y=s.y>this.rows?this.rows:s.y,e.renderorder){case"right-up":s.y=o.y+(o.y=s.y)-s.y,r=-1;break;case"left-down":s.x=o.x+(o.x=s.x)-s.x,n=-1;break;case"left-up":s.x=o.x+(o.x=s.x)-s.x,s.y=o.y+(o.y=s.y)-s.y,n=-1,r=-1}for(var a=o.y;a!==s.y;a+=r)for(var h=o.x;h!==s.x;h+=n){var l=e.cellAt(h,a,!1);l&&this.drawTile(t,h,a,l)}pool.push(o),pool.push(s)},e}(TMXRenderer),TMXIsometricRenderer=function(t){function e(e){t.call(this,e.cols,e.rows,e.tilewidth,e.tileheight),this.hTilewidth=this.tilewidth/2,this.hTileheight=this.tileheight/2,this.originX=this.rows*this.hTilewidth}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.canRender=function(e){return"isometric"===e.orientation&&t.prototype.canRender.call(this,e)},e.prototype.getBounds=function(t){var e=t instanceof TMXLayer?pool.pull("Bounds"):this.bounds;return e.setMinMax(0,0,(this.cols+this.rows)*(this.tilewidth/2),(this.cols+this.rows)*(this.tileheight/2)),e},e.prototype.pixelToTileCoords=function(t,e,i){return(i||new Vector2d).set(e/this.tileheight+(t-this.originX)/this.tilewidth,e/this.tileheight-(t-this.originX)/this.tilewidth)},e.prototype.tileToPixelCoords=function(t,e,i){return(i||new Vector2d).set((t-e)*this.hTilewidth+this.originX,(t+e)*this.hTileheight)},e.prototype.adjustPosition=function(t){var e=t.x/this.hTilewidth,i=t.y/this.tileheight,n=pool.pull("Vector2d");this.tileToPixelCoords(e,i,n),t.x=n.x,t.y=n.y,pool.push(n)},e.prototype.drawTile=function(t,e,i,n){var r=n.tileset;r.drawTile(t,(this.cols-1)*r.tilewidth+(e-i)*r.tilewidth>>1,-r.tilewidth+(e+i)*r.tileheight>>2,n)},e.prototype.drawTileLayer=function(t,e,i){var n=e.tileset,r=this.pixelToTileCoords(i.pos.x-n.tilewidth,i.pos.y-n.tileheight,pool.pull("Vector2d")).floorSelf(),o=this.pixelToTileCoords(i.pos.x+i.width+n.tilewidth,i.pos.y+i.height+n.tileheight,pool.pull("Vector2d")).ceilSelf(),s=this.tileToPixelCoords(o.x,o.y,pool.pull("Vector2d")),a=this.tileToPixelCoords(r.x,r.y,pool.pull("Vector2d"));a.x-=this.hTilewidth,a.y+=this.tileheight;var h=a.y-i.pos.y>this.hTileheight,l=i.pos.x-a.x1&&(e.height+=this.rowheight)):(e.setMinMax(0,0,this.cols*(this.tilewidth+this.sidelengthx),this.rows*this.rowheight+this.sideoffsety),e.height>1&&(e.width+=this.columnwidth)),e},e.prototype.doStaggerX=function(t){return this.staggerX&&1&t^this.staggerEven},e.prototype.doStaggerY=function(t){return!this.staggerX&&1&t^this.staggerEven},e.prototype.topLeft=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t-1,e):n.set(t-1,e-1):1&e^this.staggerEven?n.set(t,e-1):n.set(t-1,e-1),n},e.prototype.topRight=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t+1,e):n.set(t+1,e-1):1&e^this.staggerEven?n.set(t+1,e-1):n.set(t,e-1),n},e.prototype.bottomLeft=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t-1,e+1):n.set(t-1,e):1&e^this.staggerEven?n.set(t,e+1):n.set(t-1,e+1),n},e.prototype.bottomRight=function(t,e,i){var n=i||new Vector2d;return this.staggerX?1&t^this.staggerEven?n.set(t+1,e+1):n.set(t+1,e):1&e^this.staggerEven?n.set(t+1,e+1):n.set(t,e+1),n},e.prototype.pixelToTileCoords=function(t,e,i){var n=i||new Vector2d;this.staggerX?t-=this.staggerEven?this.tilewidth:this.sideoffsetx:e-=this.staggerEven?this.tileheight:this.sideoffsety;var r,o,s,a,h=pool.pull("Vector2d",Math.floor(t/(2*this.columnwidth)),Math.floor(e/(2*this.rowheight))),l=pool.pull("Vector2d",t-h.x*(2*this.columnwidth),e-h.y*(2*this.rowheight));this.staggerX?(h.x=2*h.x,this.staggerEven&&++h.x):(h.y=2*h.y,this.staggerEven&&++h.y),this.staggerX?(s=(r=this.sidelengthx/2)+this.columnwidth,a=this.tileheight/2,this.centers[0].set(r,a),this.centers[1].set(s,a-this.rowheight),this.centers[2].set(s,a+this.rowheight),this.centers[3].set(s+this.columnwidth,a)):(o=this.sidelengthy/2,s=this.tilewidth/2,a=o+this.rowheight,this.centers[0].set(s,o),this.centers[1].set(s-this.columnwidth,a),this.centers[2].set(s+this.columnwidth,a),this.centers[3].set(s,a+this.rowheight));for(var u=0,c=Number.MAX_VALUE,d=0;d<4;++d){var p=this.centers[d].sub(l).length2();pa.y&&(s=this.topLeft(s.x,s.y,s)),-this.sideoffsety+h>a.y&&(s=this.topRight(s.x,s.y,s)),this.sideoffsety+h0;var h=t.tileoffset;h&&(this.tileoffset.x=+h.x,this.tileoffset.y=+h.y);var l=t.tileproperties;if(l)for(e in l)l.hasOwnProperty(e)&&this.setTileProperty(+e+this.firstgid,l[e]);if(!1===this.isCollection){if(this.image=loader$1.getImage(t.image),!this.image)throw new Error("melonJS: '"+t.image+"' file for tileset '"+this.name+"' not found!");this.texture=video$1.renderer.cache.get(this.image,{framewidth:this.tilewidth,frameheight:this.tileheight,margin:this.margin,spacing:this.spacing}),this.atlas=this.texture.getAtlas();var u=+t.columns||Math.round(this.image.width/(this.tilewidth+this.spacing)),c=Math.round(this.image.height/(this.tileheight+this.spacing));t.tilecount%u>0&&++c,this.lastgid=this.firstgid+(u*c-1||0),t.tilecount&&this.lastgid-this.firstgid+1!=+t.tilecount&&console.warn("Computed tilecount ("+(this.lastgid-this.firstgid+1)+") does not match expected tilecount ("+t.tilecount+")")}};TMXTileset.prototype.getTileImage=function(t){return this.imageCollection[t]},TMXTileset.prototype.setTileProperty=function(t,e){this.TileProperties[t]=e},TMXTileset.prototype.contains=function(t){return t>=this.firstgid&&t<=this.lastgid},TMXTileset.prototype.getViewTileId=function(t){var e=t-this.firstgid;return this.animations.has(e)?this.animations.get(e).cur.tileid:e},TMXTileset.prototype.getTileProperties=function(t){return this.TileProperties[t]},TMXTileset.prototype.update=function(t){var e=0,i=timer$1.getTime(),n=!1;return this._lastUpdate!==i&&(this._lastUpdate=i,this.animations.forEach((function(i){for(i.dt+=t,e=i.cur.duration;i.dt>=e;)i.dt-=e,i.idx=(i.idx+1)%i.frames.length,i.cur=i.frames[i.idx],e=i.cur.duration,n=!0}))),n},TMXTileset.prototype.drawTile=function(t,e,i,n){if(n.flipped&&(t.save(),t.translate(e,i),t.transform(n.currentTransform),e=i=0),!0===this.isCollection)t.drawImage(this.imageCollection[n.tileId],0,0,n.width,n.height,e,i,n.width,n.height);else{var r=this.atlas[this.getViewTileId(n.tileId)].offset;t.drawImage(this.image,r.x,r.y,this.tilewidth,this.tileheight,e,i,this.tilewidth+t.uvOffset,this.tileheight+t.uvOffset)}n.flipped&&t.restore()};var TMX_CLEAR_BIT_MASK=536870911,TMXTilesetGroup=function(){this.tilesets=[],this.length=0};TMXTilesetGroup.prototype.add=function(t){this.tilesets.push(t),this.length++},TMXTilesetGroup.prototype.getTilesetByIndex=function(t){return this.tilesets[t]},TMXTilesetGroup.prototype.getTilesetByGid=function(t){var e=-1;t&=TMX_CLEAR_BIT_MASK;for(var i=0,n=this.tilesets.length;i=this.tilesets[i].firstgid&&(e=i)}if(-1!==e)return this.tilesets[e];throw new Error("no matching tileset found for gid "+t)};var TMXObject=function(t,e,i){this.points=void 0,this.name=e.name,this.x=+e.x,this.y=+e.y,this.z=+i,this.width=+e.width||0,this.height=+e.height||0,this.gid=+e.gid||null,this.tintcolor=e.tintcolor,this.type=e.type,this.type=e.type,this.rotation=degToRad(+e.rotation||0),this.id=+e.id||void 0,this.orientation=t.orientation,this.shapes=void 0,this.isEllipse=!1,this.isPolygon=!1,this.isPolyLine=!1,"number"==typeof this.gid?this.setTile(t.tilesets):void 0!==e.ellipse?this.isEllipse=!0:void 0!==e.polygon?(this.points=e.polygon,this.isPolygon=!0):void 0!==e.polyline&&(this.points=e.polyline,this.isPolyLine=!0),void 0!==e.text?(this.text=e.text,this.text.font=e.text.fontfamily||"sans-serif",this.text.size=e.text.pixelsize||16,this.text.fillStyle=e.text.color||"#000000",this.text.textAlign=e.text.halign||"left",this.text.textBaseline=e.text.valign||"top",this.text.width=this.width,this.text.height=this.height,applyTMXProperties(this.text,e)):(applyTMXProperties(this,e),this.shapes||(this.shapes=this.parseTMXShapes())),t.isEditor||t.getRenderer().adjustPosition(this)};TMXObject.prototype.setTile=function(t){var e=t.getTilesetByGid(this.gid);!1===e.isCollection&&(this.width=this.framewidth=e.tilewidth,this.height=this.frameheight=e.tileheight),this.tile=new Tile(this.x,this.y,this.gid,e)},TMXObject.prototype.parseTMXShapes=function(){var t=0,e=[];if(!0===this.isEllipse)e.push(new Ellipse(this.width/2,this.height/2,this.width,this.height).rotate(this.rotation));else if(!0===this.isPolygon)e.push(new Polygon(0,0,this.points).rotate(this.rotation));else if(!0===this.isPolyLine){var i,n,r=this.points,o=r.length-1;for(t=0;t0&&(e.autoSort=!0,e.autoDepth=!0,i.push(e))}return i},TMXTileMap.prototype.getLayers=function(){return this.readMapObjects(this.data),this.layers},TMXTileMap.prototype.destroy=function(){this.tilesets=void 0,this.layers.length=0,this.objectGroups.length=0,this.initialized=!1};var levels={},levelIdx=[],currentLevelIdx=0;function safeLoadLevel(t,e,i){e.container.reset(),game$1.reset(),levels[level.getCurrentLevelId()]&&levels[level.getCurrentLevelId()].destroy(),currentLevelIdx=levelIdx.indexOf(t),loadTMXLevel(t,e.container,e.flatten,e.setViewportBounds),event.publish(event.LEVEL_LOADED,[t]),e.onLoaded(t),i&&state$1.restart()}function loadTMXLevel(t,e,i,n){var r=levels[t];utils$1.resetGUID(t,r.nextobjectid),e.anchorPoint.set(0,0),r.addTo(e,i,n)}var level={add:function(t,e,i){if("tmx"===t)return null==levels[e]&&(levels[e]=new TMXTileMap(e,loader$1.getTMX(e)),levelIdx.push(e),i&&i(),!0);throw new Error("no level loader defined for format "+t)},load:function(t,e){if(e=Object.assign({container:game$1.world,onLoaded:game$1.onLevelLoaded,flatten:game$1.mergeGroup,setViewportBounds:!0},e||{}),void 0===levels[t])throw new Error("level "+t+" not found");if(!(levels[t]instanceof TMXTileMap))throw new Error("no level loader defined");return state$1.isRunning()?(state$1.stop(),utils$1.function.defer(safeLoadLevel,this,t,e,!0)):safeLoadLevel(t,e),!0},getCurrentLevelId:function(){return levelIdx[currentLevelIdx]},getCurrentLevel:function(){return levels[this.getCurrentLevelId()]},reload:function(t){return this.load(this.getCurrentLevelId(),t)},next:function(t){return currentLevelIdx+1=0&&this.load(levelIdx[currentLevelIdx-1],t)},levelCount:function(){return levelIdx.length}},imgList={},tmxList={},binList={},jsonList={},baseURL={},resourceCount=0,loadCount=0,timerId$1=0;function checkLoadStatus(t){if(loadCount===resourceCount){if(!t&&!loader.onload)throw new Error("no load callback defined");clearTimeout(timerId$1);var e=t||loader.onload;setTimeout((function(){e(),event.publish(event.LOADER_COMPLETE)}),300)}else timerId$1=setTimeout((function(){checkLoadStatus(t)}),100)}function preloadImage(t,e,i){imgList[t.name]=new Image,imgList[t.name].onload=e,imgList[t.name].onerror=i,"string"==typeof loader.crossOrigin&&(imgList[t.name].crossOrigin=loader.crossOrigin),imgList[t.name].src=t.src+loader.nocache}function preloadFontFace(t,e,i){var n=new FontFace(t.name,t.src);n.load().then((function(){document.fonts.add(n),document.body.style.fontFamily=t.name,e()}),(function(e){i(t.name)}))}function preloadTMX(t,e,i){function n(e){tmxList[t.name]=e,"tmx"===t.type&&level.add(t.type,t.name)}if(t.data)return n(t.data),void e();var r=new XMLHttpRequest,o=utils$1.file.getExtension(t.src);r.overrideMimeType&&("json"===o?r.overrideMimeType("application/json"):r.overrideMimeType("text/xml")),r.open("GET",t.src+loader.nocache,!0),r.withCredentials=loader.withCredentials,r.ontimeout=i,r.onreadystatechange=function(){if(4===r.readyState)if(200===r.status||0===r.status&&r.responseText){var s=null;switch(o){case"xml":case"tmx":case"tsx":if(device$1.ua.match(/msie/i)||!r.responseXML){if(!window.DOMParser)throw new Error("XML file format loading not supported, use the JSON file format instead");s=(new DOMParser).parseFromString(r.responseText,"text/xml")}else s=r.responseXML;var a=parse(s);switch(o){case"tmx":s=a.map;break;case"tsx":s=a.tilesets[0]}break;case"json":s=JSON.parse(r.responseText);break;default:throw new Error("TMX file format "+o+"not supported !")}n(s),e()}else i(t.name)},r.send()}function preloadJSON(t,e,i){var n=new XMLHttpRequest;n.overrideMimeType&&n.overrideMimeType("application/json"),n.open("GET",t.src+loader.nocache,!0),n.withCredentials=loader.withCredentials,n.ontimeout=i,n.onreadystatechange=function(){4===n.readyState&&(200===n.status||0===n.status&&n.responseText?(jsonList[t.name]=JSON.parse(n.responseText),e()):i(t.name))},n.send()}function preloadBinary(t,e,i){var n=new XMLHttpRequest;n.open("GET",t.src+loader.nocache,!0),n.withCredentials=loader.withCredentials,n.responseType="arraybuffer",n.onerror=i,n.onload=function(){var i=n.response;if(i){for(var r=new Uint8Array(i),o=[],s=0;s3){var i="melonJS: failed loading "+t;if(!1!==audio.stopOnAudioError)throw new Error(i);audio.disable(),e&&e(),console.log(i+", disabling audio")}else audioTracks[t].load()},audio={stopOnAudioError:!0,init:function(t){if(!exports.initialized)throw new Error("me.audio.init() called before engine initialization.");return t="string"==typeof t?t:"mp3",this.audioFormats=t.split(","),!howler.Howler.noAudio},hasFormat:function(t){return this.hasAudio&&howler.Howler.codecs(t)},hasAudio:function(){return!howler.Howler.noAudio},enable:function(){this.unmuteAll()},disable:function(){this.muteAll()},load:function(t,e,i,n){var r=[];if(void 0===this.audioFormats||0===this.audioFormats.length)throw new Error("target audio extension(s) should be set through me.audio.init() before calling the preloader.");for(var o=0;o0)(JSON.parse(t)||[]).forEach((function(t){data[t]=JSON.parse(localStorage.getItem("me.save."+t))}))}},add:function(t){var e=save;Object.keys(t).forEach((function(i){var n;isReserved(i)||(n=i,Object.defineProperty(e,n,{configurable:!0,enumerable:!0,get:function(){return data[n]},set:function(t){data[n]=t,!0===device$1.localStorage&&localStorage.setItem("me.save."+n,JSON.stringify(t))}}),i in data||(e[i]=t[i]))})),!0===device$1.localStorage&&localStorage.setItem("me.save",JSON.stringify(Object.keys(data)))},remove:function(t){isReserved(t)||void 0!==data[t]&&(delete data[t],!0===device$1.localStorage&&(localStorage.removeItem("me.save."+t),localStorage.setItem("me.save",JSON.stringify(Object.keys(data)))))}},accelInitialized=!1,deviceOrientationInitialized=!1,swipeEnabled=!0;function disableSwipeFn(t){return t.preventDefault(),"function"==typeof window.scroll&&window.scroll(0,0),!1}var readyBound=!1,isReady=!1,readyList=[],_domRect={left:0,top:0,x:0,y:0,width:0,height:0,right:0,bottom:0},device={_domReady:function(t){if(!isReady){if(!document.body)return setTimeout(this._domReady,13);for(document.removeEventListener&&document.removeEventListener("DOMContentLoaded",this._domReady,!1),window.removeEventListener("load",this._domReady,!1);readyList.length;)readyList.shift().call(window,[]);isReady=!0}},_check:function(){this._detectDevice(),this.isMobile&&this.enableSwipe(!1),this.TouchEvent=!!("ontouchstart"in window),this.PointerEvent=!!window.PointerEvent,window.gesture=prefixed("gesture"),this.touch=this.TouchEvent||this.PointerEvent,this.maxTouchPoints=this.touch?this.PointerEvent?navigator.maxTouchPoints||1:10:1,this.wheel="onwheel"in document.createElement("div"),this.hasPointerLockSupport=prefixed("pointerLockElement",document),this.hasPointerLockSupport&&(document.exitPointerLock=prefixed("exitPointerLock",document)),this.hasDeviceOrientation=!!window.DeviceOrientationEvent,this.hasAccelerometer=!!window.DeviceMotionEvent,this.hasFullscreenSupport=prefixed("fullscreenEnabled",document)||document.mozFullScreenEnabled,document.exitFullscreen=prefixed("cancelFullScreen",document)||prefixed("exitFullscreen",document),navigator.vibrate=prefixed("vibrate",navigator),this.hasWebAudio=!(!window.AudioContext&&!window.webkitAudioContext);try{this.localStorage=!!window.localStorage}catch(t){this.localStorage=!1}try{this.OffscreenCanvas=void 0!==window.OffscreenCanvas&&null!==new OffscreenCanvas(0,0).getContext("2d")}catch(t){this.OffscreenCanvas=!1}var t,e;window.addEventListener("blur",function(){this.stopOnBlur&&state$1.stop(!0),this.pauseOnBlur&&state$1.pause(!0)}.bind(this),!1),window.addEventListener("focus",function(){this.stopOnBlur&&state$1.restart(!0),this.resumeOnFocus&&state$1.resume(!0),this.autoFocus&&this.focus()}.bind(this),!1),void 0!==document.hidden?(t="hidden",e="visibilitychange"):void 0!==document.mozHidden?(t="mozHidden",e="mozvisibilitychange"):void 0!==document.msHidden?(t="msHidden",e="msvisibilitychange"):void 0!==document.webkitHidden&&(t="webkitHidden",e="webkitvisibilitychange"),"string"==typeof e&&document.addEventListener(e,function(){document[t]?(this.stopOnBlur&&state$1.stop(!0),this.pauseOnBlur&&state$1.pause(!0)):(this.stopOnBlur&&state$1.restart(!0),this.resumeOnFocus&&state$1.resume(!0))}.bind(this),!1)},_detectDevice:function(){this.iOS=/iPhone|iPad|iPod/i.test(this.ua),this.android=/Android/i.test(this.ua),this.android2=/Android 2/i.test(this.ua),this.linux=/Linux/i.test(this.ua),this.chromeOS=/CrOS/.test(this.ua),this.wp=/Windows Phone/i.test(this.ua),this.BlackBerry=/BlackBerry/i.test(this.ua),this.Kindle=/Kindle|Silk.*Mobile Safari/i.test(this.ua),this.isMobile=/Mobi/i.test(this.ua)||this.iOS||this.android||this.wp||this.BlackBerry||this.Kindle||!1,this.ejecta=void 0!==window.ejecta,this.isWeixin=/MicroMessenger/i.test(this.ua)},ua:navigator.userAgent,localStorage:!1,hasAccelerometer:!1,hasDeviceOrientation:!1,hasFullscreenSupport:!1,hasPointerLockSupport:!1,hasWebAudio:!1,nativeBase64:"function"==typeof window.atob,maxTouchPoints:1,touch:!1,wheel:!1,isMobile:!1,iOS:!1,android:!1,android2:!1,linux:!1,ejecta:!1,isWeixin:!1,chromeOS:!1,wp:!1,BlackBerry:!1,Kindle:!1,accelerationX:0,accelerationY:0,accelerationZ:0,gamma:0,beta:0,alpha:0,language:navigator.language||navigator.browserLanguage||navigator.userLanguage||"en",pauseOnBlur:!0,resumeOnFocus:!0,autoFocus:!0,stopOnBlur:!1,OffscreenCanvas:!1,onReady:function(t){isReady?t.call(window,[]):(readyList.push(t),readyBound||("complete"===document.readyState?window.setTimeout(this._domReady,0):(document.addEventListener&&document.addEventListener("DOMContentLoaded",this._domReady,!1),window.addEventListener("load",this._domReady,!1)),readyBound=!0))},enableSwipe:function(t){!1!==t?!1===swipeEnabled&&(window.document.removeEventListener("touchmove",disableSwipeFn,!1),swipeEnabled=!0):!0===swipeEnabled&&(window.document.addEventListener("touchmove",disableSwipeFn,!1),swipeEnabled=!1)},requestFullscreen:function(t){this.hasFullscreenSupport&&((t=t||video$1.getParent()).requestFullscreen=prefixed("requestFullscreen",t)||t.mozRequestFullScreen,t.requestFullscreen())},exitFullscreen:function(){this.hasFullscreenSupport&&document.exitFullscreen()},getScreenOrientation:function(){var t="portrait",e="landscape",i=window.screen;if(void 0!==i){var n=prefixed("orientation",i);if(void 0!==n&&"string"==typeof n.type)return n.type;if("string"==typeof n)return n}return"number"==typeof window.orientation?90===Math.abs(window.orientation)?e:t:window.outerWidth>window.outerHeight?e:t},lockOrientation:function(t){var e=window.screen;if(void 0!==e){var i=prefixed("lockOrientation",e);if(void 0!==i)return i(t)}return!1},unlockOrientation:function(t){var e=window.screen;if(void 0!==e){var i=prefixed("unlockOrientation",e);if(void 0!==i)return i(t)}return!1},isPortrait:function(){return this.getScreenOrientation().includes("portrait")},isLandscape:function(){return this.getScreenOrientation().includes("landscape")},getStorage:function(t){if(void 0===t&&(t="local"),"local"===t)return save;throw new Error("storage type "+t+" not supported")},getParentElement:function(t){var e=this.getElement(t);return null!==e.parentNode&&(e=e.parentNode),e},getElement:function(t){var e=null;return"undefined"!==t&&("string"==typeof t?e=document.getElementById(t):"object"==typeof t&&t.nodeType===Node.ELEMENT_NODE&&(e=t)),e||(e=document.body),e},getElementBounds:function(t){return"object"==typeof t&&t!==document.body&&void 0!==t.getBoundingClientRect?t.getBoundingClientRect():(_domRect.width=_domRect.right=window.innerWidth,_domRect.height=_domRect.bottom=window.innerHeight,_domRect)},getParentBounds:function(t){return this.getElementBounds(this.getParentElement(t))},isWebGLSupported:function(t){var e=!1;try{var i=document.createElement("canvas"),n={stencil:!0,failIfMajorPerformanceCaveat:t.failIfMajorPerformanceCaveat};e=!(!window.WebGLRenderingContext||!i.getContext("webgl",n)&&!i.getContext("experimental-webgl",n))}catch(t){e=!1}return e},getMaxShaderPrecision:function(t){return t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0?"highp":t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"},focus:function(){"function"==typeof window.focus&&window.focus()},onDeviceMotion:function(t){this.accelerationX=t.accelerationIncludingGravity.x,this.accelerationY=t.accelerationIncludingGravity.y,this.accelerationZ=t.accelerationIncludingGravity.z},onDeviceRotate:function(t){this.gamma=t.gamma,this.beta=t.beta,this.alpha=t.alpha},turnOnPointerLock:function(){if(this.hasPointerLockSupport){var t=video$1.getParent();if(this.ua.match(/Firefox/i)){var e=function(){(prefixed("fullscreenElement",document)||document.mozFullScreenElement)===t&&(document.removeEventListener("fullscreenchange",e),document.removeEventListener("mozfullscreenchange",e),t.requestPointerLock=prefixed("requestPointerLock",t),t.requestPointerLock())};document.addEventListener("fullscreenchange",e,!1),document.addEventListener("mozfullscreenchange",e,!1),this.requestFullscreen()}else t.requestPointerLock()}},turnOffPointerLock:function(){this.hasPointerLockSupport&&document.exitPointerLock()},watchAccelerometer:function(){var t=this;return this.hasAccelerometer&&!accelInitialized&&(DeviceOrientationEvent&&"function"==typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((function(e){"granted"===e&&(window.addEventListener("devicemotion",t.onDeviceMotion,!1),accelInitialized=!0)})).catch(console.error):(window.addEventListener("devicemotion",this.onDeviceMotion,!1),accelInitialized=!0)),accelInitialized},unwatchAccelerometer:function(){accelInitialized&&(window.removeEventListener("devicemotion",this.onDeviceMotion,!1),accelInitialized=!1)},watchDeviceOrientation:function(){var t=this;return this.hasDeviceOrientation&&!deviceOrientationInitialized&&("function"==typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((function(e){"granted"===e&&(window.addEventListener("deviceorientation",t.onDeviceRotate,!1),deviceOrientationInitialized=!0)})).catch(console.error):(window.addEventListener("deviceorientation",this.onDeviceRotate,!1),deviceOrientationInitialized=!0)),deviceOrientationInitialized},unwatchDeviceOrientation:function(){deviceOrientationInitialized&&(window.removeEventListener("deviceorientation",this.onDeviceRotate,!1),deviceOrientationInitialized=!1)},vibrate:function(t){navigator.vibrate&&navigator.vibrate(t)}};Object.defineProperty(device,"devicePixelRatio",{get:function(){return window.devicePixelRatio||1}}),Object.defineProperty(device,"isFullscreen",{get:function(){return!!this.hasFullscreenSupport&&!(!prefixed("fullscreenElement",document)&&!document.mozFullScreenElement)}}),Object.defineProperty(device,"sound",{get:function(){return audio$1.hasAudio()}});var device$1=device;function extractUniforms(t,e){var i,n={},r=/uniform\s+(\w+)\s+(\w+)/g,o={},s={},a={};return[e.vertex,e.fragment].forEach((function(t){for(;i=r.exec(t);)o[i[2]]=i[1]})),Object.keys(o).forEach((function(i){var n=o[i];a[i]=t.getUniformLocation(e.program,i),s[i]={get:function(t){return function(){return a[t]}}(i),set:function(e,i,n){return 0===i.indexOf("mat")?function(i){t[n](a[e],!1,i)}:function(i){var r=n;i.length&&"v"!==n.substr(-1)&&(r+="v"),t[r](a[e],i)}}(i,n,"uniform"+fnHash[n])}})),Object.defineProperties(n,s),n}function extractAttributes(t,e){for(var i,n={},r=/attribute\s+\w+\s+(\w+)/g,o=0;i=r.exec(e.vertex);)n[i[1]]=o++;return n}function compileShader(t,e,i){var n=t.createShader(e);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function compileProgram(t,e,i,n){var r=compileShader(t,t.VERTEX_SHADER,e),o=compileShader(t,t.FRAGMENT_SHADER,i),s=t.createProgram();for(var a in t.attachShader(s,r),t.attachShader(s,o),n)t.bindAttribLocation(s,n[a],a);if(t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)){var h="Error initializing Shader "+this+"\ngl.VALIDATE_STATUS: "+t.getProgramParameter(s,t.VALIDATE_STATUS)+"\ngl.getError()"+t.getError()+"\ngl.getProgramInfoLog()"+t.getProgramInfoLog(s);throw t.deleteProgram(s),s=null,new Error(h)}return t.useProgram(s),t.deleteShader(r),t.deleteShader(o),s}var fnHash={bool:"1i",int:"1i",float:"1f",vec2:"2fv",vec3:"3fv",vec4:"4fv",bvec2:"2iv",bvec3:"3iv",bvec4:"4iv",ivec2:"2iv",ivec3:"3iv",ivec4:"4iv",mat2:"Matrix2fv",mat3:"Matrix3fv",mat4:"Matrix4fv",sampler2D:"1i"};function setPrecision(t,e){return"precision"!==t.substring(0,9)?"precision "+e+" float;"+t:t}function minify(t){return t=(t=(t=(t=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1")).replace(/(\\n\s+)|(\s+\\n)/g,"")).replace(/(\\r|\\n)+/g,"")).replace(/\s*([;,[\](){}\\\/\-+*|^&!=<>?~%])\s*/g,"$1")}var GLShader=function(t,e,i,n){return this.gl=t,this.vertex=setPrecision(minify(e),n||device$1.getMaxShaderPrecision(this.gl)),this.fragment=setPrecision(minify(i),n||device$1.getMaxShaderPrecision(this.gl)),this.attributes=extractAttributes(this.gl,this),this.program=compileProgram(this.gl,this.vertex,this.fragment,this.attributes),this.uniforms=extractUniforms(this.gl,this),event.subscribe(event.WEBGL_ONCONTEXT_LOST,this.destroy.bind(this)),this};GLShader.prototype.bind=function(){this.gl.useProgram(this.program)},GLShader.prototype.getAttribLocation=function(t){var e=this.attributes[t];return void 0!==e?e:-1},GLShader.prototype.setUniform=function(t,e){var i=this.uniforms;if(void 0===i[t])throw new Error("undefined ("+t+") uniform for shader "+this);"object"==typeof e&&"function"==typeof e.toArray?i[t]=e.toArray():i[t]=e},GLShader.prototype.destroy=function(){this.uniforms=null,this.attributes=null,this.gl.deleteProgram(this.program),this.vertex=null,this.fragment=null};var primitiveVertex="// Current vertex point\nattribute vec2 aVertex;\n\n// Projection matrix\nuniform mat4 uProjectionMatrix;\n\n// Vertex color\nuniform vec4 uColor;\n\n// Fragment color\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(uColor.rgb * uColor.a, uColor.a);\n}\n",primitiveFragment="varying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n}\n",quadVertex="attribute vec2 aVertex;\nattribute vec2 aRegion;\nattribute vec4 aColor;\n\nuniform mat4 uProjectionMatrix;\n\nvarying vec2 vRegion;\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(aColor.rgb * aColor.a, aColor.a);\n vRegion = aRegion;\n}\n",quadFragment="uniform sampler2D uSampler;\nvarying vec4 vColor;\nvarying vec2 vRegion;\n\nvoid main(void) {\n gl_FragColor = texture2D(uSampler, vRegion) * vColor;\n}\n",VERTEX_SIZE=2,REGION_SIZE=2,COLOR_SIZE=4,ELEMENT_SIZE=VERTEX_SIZE+REGION_SIZE+COLOR_SIZE,ELEMENT_OFFSET=ELEMENT_SIZE*Float32Array.BYTES_PER_ELEMENT,VERTEX_ELEMENT=0,REGION_ELEMENT=VERTEX_ELEMENT+VERTEX_SIZE,COLOR_ELEMENT=REGION_ELEMENT+REGION_SIZE,ELEMENTS_PER_QUAD=4,INDICES_PER_QUAD=6,MAX_LENGTH=16e3,WebGLCompositor=function(t){var e=t.gl;this.length=0,this.currentTextureUnit=-1,this.boundTextures=[],this.v=[new Vector2d,new Vector2d,new Vector2d,new Vector2d],this.renderer=t,this.gl=t.gl,this.color=t.currentColor,this.tint=t.currentTint,this.viewMatrix=t.currentTransform,this.activeShader=null,this.mode=e.TRIANGLES,this.attributes=[],this.primitiveShader=new GLShader(this.gl,primitiveVertex,primitiveFragment),this.quadShader=new GLShader(this.gl,quadVertex,quadFragment),this.addAttribute("aVertex",2,e.FLOAT,!1,0*Float32Array.BYTES_PER_ELEMENT),this.addAttribute("aRegion",2,e.FLOAT,!1,2*Float32Array.BYTES_PER_ELEMENT),this.addAttribute("aColor",4,e.FLOAT,!1,4*Float32Array.BYTES_PER_ELEMENT),e.bindBuffer(e.ARRAY_BUFFER,e.createBuffer()),e.bufferData(e.ARRAY_BUFFER,MAX_LENGTH*ELEMENT_OFFSET*ELEMENTS_PER_QUAD,e.STREAM_DRAW),this.sbSize=256,this.sbIndex=0,this.stream=new Float32Array(this.sbSize*ELEMENT_SIZE*ELEMENTS_PER_QUAD),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,e.createBuffer()),e.bufferData(e.ELEMENT_ARRAY_BUFFER,this.createIB(),e.STATIC_DRAW),event.subscribe(event.CANVAS_ONRESIZE,function(t,e){this.flush(),this.setViewport(0,0,t,e)}.bind(this)),this.reset()};WebGLCompositor.prototype.reset=function(){this.sbIndex=0,this.length=0,this.gl=this.renderer.gl,this.flush(),this.setViewport(0,0,this.renderer.getScreenCanvas().width,this.renderer.getScreenCanvas().height),this.clearColor(0,0,0,0);for(var t=0;t=MAX_LENGTH&&this.flush(),this.length>=this.sbSize&&this.resizeSB(),this.useShader(this.quadShader);var h=this.uploadTexture(t);this.quadShader.setUniform("uSampler",h);var l=this.viewMatrix,u=this.v[0].set(i,n),c=this.v[1].set(i+r,n),d=this.v[2].set(i,n+o),p=this.v[3].set(i+r,n+o);l.isIdentity()||(l.apply(u),l.apply(c),l.apply(d),l.apply(p));var f=this.sbIndex,g=f+ELEMENT_SIZE,m=g+ELEMENT_SIZE,y=m+ELEMENT_SIZE;this.stream[f+VERTEX_ELEMENT+0]=u.x,this.stream[f+VERTEX_ELEMENT+1]=u.y,this.stream[g+VERTEX_ELEMENT+0]=c.x,this.stream[g+VERTEX_ELEMENT+1]=c.y,this.stream[m+VERTEX_ELEMENT+0]=d.x,this.stream[m+VERTEX_ELEMENT+1]=d.y,this.stream[y+VERTEX_ELEMENT+0]=p.x,this.stream[y+VERTEX_ELEMENT+1]=p.y;var v=t.getUVs(e);this.stream[f+REGION_ELEMENT+0]=v[0],this.stream[f+REGION_ELEMENT+1]=v[1],this.stream[g+REGION_ELEMENT+0]=v[2],this.stream[g+REGION_ELEMENT+1]=v[1],this.stream[m+REGION_ELEMENT+0]=v[0],this.stream[m+REGION_ELEMENT+1]=v[3],this.stream[y+REGION_ELEMENT+0]=v[2],this.stream[y+REGION_ELEMENT+1]=v[3],this.stream.set(a,f+COLOR_ELEMENT),this.stream.set(a,g+COLOR_ELEMENT),this.stream.set(a,m+COLOR_ELEMENT),this.stream.set(a,y+COLOR_ELEMENT),this.sbIndex+=ELEMENT_SIZE*ELEMENTS_PER_QUAD,this.length++}},WebGLCompositor.prototype.flush=function(){if(this.length){var t=this.gl,e=this.length*ELEMENT_SIZE*ELEMENTS_PER_QUAD;t.bufferData(t.ARRAY_BUFFER,this.stream.subarray(0,e),t.STREAM_DRAW),t.drawElements(this.mode,this.length*INDICES_PER_QUAD,t.UNSIGNED_SHORT,0),this.sbIndex=0,this.length=0}},WebGLCompositor.prototype.drawVertices=function(t,e,i){var n=this.gl;i=i||e.length,this.useShader(this.primitiveShader),this.primitiveShader.setUniform("uColor",this.color);for(var r=0,o=this.viewMatrix,s=o.isIdentity(),a=0;adesignRatio||"fill-max"===e.scaleMethod&&udesignRatio||"flex-height"===e.scaleMethod){var d=Math.min(o,designWidth*(l/h));i=n=l/d,t.resize(designWidth,Math.floor(d))}else"flex"===e.scaleMethod?t.resize(Math.floor(h),Math.floor(l)):"stretch"===e.scaleMethod?(i=h/designWidth,n=l/designHeight):i=n=uminstep&&timer.interpolation?delta/step:1;for(var e=0,i=timers.length;e=n.delay&&(n.fn.apply(null,n.args),!0===n.repeat?n.elapsed-=n.delay:timer.clearTimeout(n.timerId))}}var timer={tick:1,fps:0,maxfps:60,interpolation:!1,lastUpdate:window.performance.now(),init:function(){this.reset(),now=last=0,event.subscribe(event.GAME_UPDATE,updateTimers)},reset:function(){last=now=window.performance.now(),delta=0,framedelta=0,framecount=0,step=Math.ceil(1e3/this.maxfps),minstep=1e3/this.maxfps*1.25},setTimeout:function(t,e,i){return timers.push({fn:t,delay:e,elapsed:0,repeat:!1,timerId:++timerId,pauseable:!0===i||!0,args:arguments.length>3?Array.prototype.slice.call(arguments,3):void 0}),timerId},setInterval:function(t,e,i){return timers.push({fn:t,delay:e,elapsed:0,repeat:!0,timerId:++timerId,pauseable:!0===i||!0,args:arguments.length>3?Array.prototype.slice.call(arguments,3):void 0}),timerId},clearTimeout:function(t){utils$1.function.defer(clearTimer,this,t)},clearInterval:function(t){utils$1.function.defer(clearTimer,this,t)},getTime:function(){return now},getDelta:function(){return delta},countFPS:function(){framecount++,framedelta+=delta,framecount%10==0&&(this.fps=clamp(Math.round(1e3*framecount/framedelta),0,this.maxfps),framedelta=0,framecount=0)}},timer$1=timer,lastTime=0,vendors=["ms","moz","webkit","o"],x,requestAnimationFrame=window.requestAnimationFrame,cancelAnimationFrame=window.cancelAnimationFrame;for(x=0;x2&&(i=Array.prototype.slice.call(arguments,1)),i[0]=t;var n=new(t.bind.apply(t,i));if(void 0===n||!(n instanceof plugin.Base))throw new Error("Plugin should extend the me.plugin.Base Class !");if(utils$1.checkVersion(n.version)>0)throw new Error("Plugin version mismatch, expected: "+n.version+", got: "+version);plugins[e]=n}},Easing={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 e=1.70158;return t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}},Bounce:{In:function(t){return 1-Easing.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*Easing.Bounce.In(2*t):.5*Easing.Bounce.Out(2*t-1)+.5}}},Interpolation={Linear:function(t,e){var i=t.length-1,n=i*e,r=Math.floor(n),o=Interpolation.Utils.Linear;return e<0?o(t[0],t[1],n):e>1?o(t[i],t[i-1],i-n):o(t[r],t[r+1>i?i:r+1],n-r)},Bezier:function(t,e){var i,n=0,r=t.length-1,o=Math.pow,s=Interpolation.Utils.Bernstein;for(i=0;i<=r;i++)n+=o(1-e,r-i)*o(e,i)*t[i]*s(r,i);return n},CatmullRom:function(t,e){var i=t.length-1,n=i*e,r=Math.floor(n),o=Interpolation.Utils.CatmullRom;return t[0]===t[i]?(e<0&&(r=Math.floor(n=i*(1+e))),o(t[(r-1+i)%i],t[r],t[(r+1)%i],t[(r+2)%i],n-r)):e<0?t[0]-(o(t[0],t[0],t[1],t[1],-n)-t[0]):e>1?t[i]-(o(t[i],t[i],t[i-1],t[i-1],n-i)-t[i]):o(t[r?r-1:0],t[r],t[i1;i--)n*=i;return t[e]=n}}(),CatmullRom:function(t,e,i,n,r){var o=.5*(i-t),s=.5*(n-e),a=r*r;return(2*e-2*i+o+s)*(r*a)+(-3*e+3*i-2*o-s)*a+o*r+e}}},Tween=function(t){var e=null,i=null,n=null,r=null,o=null,s=null,a=null,h=null,l=null,u=null,c=null,d=null,p=null,f=null,g=null,m=null,y=null;this.isRenderable=!1,this._resumeCallback=function(t){l&&(l+=t)},this.setProperties=function(t){for(var v in e=t,i={},n={},r={},o=1e3,s=0,a=!1,h=0,l=null,u=Easing.Linear.None,c=Interpolation.Linear,d=[],p=null,f=!1,g=null,m=null,y=timer$1.lastUpdate,this.isPersistent=!1,this.updateWhenPaused=!1,t)"object"!=typeof t&&(i[v]=parseFloat(t[v]))},this.setProperties(t),this.onResetEvent=function(t){this.setProperties(t)},this.onActivateEvent=function(){event.subscribe(event.STATE_RESUME,this._resumeCallback)},this.onDeactivateEvent=function(){event.unsubscribe(event.STATE_RESUME,this._resumeCallback)},this.to=function(t,e){return n=t,void 0!==e&&("number"==typeof e?o=e:"object"==typeof e&&(e.duration&&(o=e.duration),e.yoyo&&this.yoyo(e.yoyo),e.easing&&this.easing(e.easing),e.repeat&&this.repeat(e.repeat),e.delay&&this.delay(e.delay),e.interpolation&&this.interpolation(e.interpolation),e.autoStart&&this.start())),this},this.start=function(t){for(var o in f=!1,game$1.world.addChild(this),l=(void 0===t?timer$1.getTime():t)+h,n){if(n[o]instanceof Array){if(0===n[o].length)continue;n[o]=[e[o]].concat(n[o])}i[o]=e[o],i[o]instanceof Array==!1&&(i[o]*=1),r[o]=i[o]||0}return this},this.stop=function(){return game$1.world.removeChildNow(this),this},this.delay=function(t){return h=t,this},this.repeat=function(t){return s=t,this},this.yoyo=function(t){return a=t,this},this.easing=function(t){if("function"!=typeof t)throw new Error("invalid easing function for me.Tween.easing()");return u=t,this},this.interpolation=function(t){return c=t,this},this.chain=function(){return d=arguments,this},this.onStart=function(t){return p=t,this},this.onUpdate=function(t){return g=t,this},this.onComplete=function(t){return m=t,this},this.update=function(t){var v,_=y=timer$1.lastUpdate>y?timer$1.lastUpdate:y+t;if(_1?1:x);for(v in n){var b=i[v]||0,T=n[v];T instanceof Array?e[v]=c(T,w):("string"==typeof T&&(T=b+parseFloat(T)),"number"==typeof T&&(e[v]=b+(T-b)*w))}if(null!==g&&g.call(e,w),1===x){if(s>0){for(v in isFinite(s)&&s--,r){if("string"==typeof n[v]&&(r[v]=r[v]+parseFloat(n[v])),a){var E=r[v];r[v]=n[v],n[v]=E}i[v]=r[v]}return l=_+h,!0}game$1.world.removeChildNow(this),null!==m&&m.call(e);for(var A=0,R=d.length;A>>LOG2_PAGE_SIZE];if(e)return e[t&PAGE_SIZE-1]||0}return 0},Glyph.prototype.setKerning=function(t,e){this.kerning||(this.kerning={});var i=this.kerning[t>>>LOG2_PAGE_SIZE];void 0===i&&(this.kerning[t>>>LOG2_PAGE_SIZE]={},i=this.kerning[t>>>LOG2_PAGE_SIZE]),i[t&PAGE_SIZE-1]=e};var capChars=["M","N","B","D","C","E","F","K","A","G","H","I","J","L","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function getValueFromPair(t,e){var i=t.match(e);if(!i)throw new Error("Could not find pattern "+e+" in string: "+t);return i[0].split("=")[1]}function getFirstGlyph(t){for(var e=Object.keys(t),i=0;i32)return t[e[i]];return null}function createSpaceGlyph(t){var e=" ".charCodeAt(0),i=t[e];i||((i=new Glyph).id=e,i.xadvance=getFirstGlyph(t).xadvance,t[e]=i)}var BitmapTextData=function(){for(var t,e=[],i=arguments.length;i--;)e[i]=arguments[i];(t=this).onResetEvent.apply(t,e)};BitmapTextData.prototype.onResetEvent=function(t){this.padTop=0,this.padRight=0,this.padBottom=0,this.padLeft=0,this.lineHeight=0,this.capHeight=1,this.descent=0,this.glyphs={},this.parse(t)},BitmapTextData.prototype.parse=function(t){if(!t)throw new Error("File containing font data was empty, cannot load the bitmap font.");var e=t.split(/\r\n|\n/),i=t.match(/padding\=\d+,\d+,\d+,\d+/g);if(!i)throw new Error("Padding not found in first line");var n=i[0].split("=")[1].split(",");this.padTop=parseFloat(n[0]),this.padLeft=parseFloat(n[1]),this.padBottom=parseFloat(n[2]),this.padRight=parseFloat(n[3]),this.lineHeight=parseFloat(getValueFromPair(e[1],/lineHeight\=\d+/g));var r,o=parseFloat(getValueFromPair(e[1],/base\=\d+/g)),s=this.padTop+this.padBottom,a=null;for(r=4;r0&&a.height>0&&(this.descent=Math.min(o+a.yoffset,this.descent)),this.glyphs[p]=a}}this.descent+=this.padBottom,createSpaceGlyph(this.glyphs);var f=null;for(r=0;rthis._emitter.framesToSkip&&(this._updateCount=0),this._updateCount>0)return this._dt+=t,!1;t+=this._dt,this._dt=0;for(var e=game$1.viewport,i=this.children.length-1;i>=0;--i){var n=this.children[i];n.inViewport=e.isVisible(n,this.floating),n.update(t)||this.removeChildNow(n)}return!0},draw:function(t,e){if(this.children.length>0){var i,n=t.getContext();this._emitter.textureAdditive&&(i=n.globalCompositeOperation,n.globalCompositeOperation="lighter"),this._super(Container$1,"draw",[t,e]),this._emitter.textureAdditive&&(n.globalCompositeOperation=i)}}}),pixel=(canvas=video$1.createCanvas(1,1),context=canvas.getContext("2d"),context.fillStyle="#fff",context.fillRect(0,0,1,1),canvas),canvas,context,ParticleEmitterSettings={width:0,height:0,image:pixel,totalParticles:50,angle:Math.PI/2,angleVariation:0,minLife:1e3,maxLife:3e3,speed:2,speedVariation:1,minRotation:0,maxRotation:0,minStartScale:1,maxStartScale:1,minEndScale:0,maxEndScale:0,gravity:0,wind:0,followTrajectory:!1,textureAdditive:!1,onlyInViewport:!0,floating:!1,maxParticles:10,frequency:100,duration:1/0,framesToSkip:0},ParticleEmitter=Renderable.extend({init:function(t,e,i){this._stream=!1,this._frequencyTimer=0,this._durationTimer=0,this._enabled=!1,this._super(Renderable,"init",[t,e,1/0,1/0]),this.alwaysUpdate=!0,this.autoSort=!1,this.container=new ParticleContainer(this),Object.defineProperty(this.pos,"z",{get:function(){return this.container.pos.z}.bind(this),set:function(t){this.container.pos.z=t}.bind(this),enumerable:!0,configurable:!0}),Object.defineProperty(this,"floating",{get:function(){return this.container.floating},set:function(t){this.container.floating=t},enumerable:!0,configurable:!0}),this.reset(i)},onActivateEvent:function(){this.ancestor.addChild(this.container),this.container.pos.z=this.pos.z,this.ancestor.autoSort||this.ancestor.sort()},onDeactivateEvent:function(){this.ancestor.hasChild(this.container)&&this.ancestor.removeChildNow(this.container)},destroy:function(){this.reset()},getRandomPointX:function(){return this.pos.x+randomFloat(0,this.width)},getRandomPointY:function(){return this.pos.y+randomFloat(0,this.height)},reset:function(t){var e=ParticleEmitterSettings,i="number"==typeof(t=t||{}).width?t.width:e.width,n="number"==typeof t.height?t.height:e.height;this.resize(i,n),Object.assign(this,e,t),this.container.reset()},addParticles:function(t){for(var e=0;e<~~t;e++){var i=pool.pull("Particle",this);this.container.addChild(i)}},isRunning:function(){return this._enabled&&this._stream},streamParticles:function(t){this._enabled=!0,this._stream=!0,this.frequency=Math.max(this.frequency,1),this._durationTimer="number"==typeof t?t:this.duration},stopStream:function(){this._enabled=!1},burstParticles:function(t){this._enabled=!0,this._stream=!1,this.addParticles("number"==typeof t?t:this.totalParticles),this._enabled=!1},update:function(t){if(this._enabled&&this._stream){if(this._durationTimer!==1/0&&(this._durationTimer-=t,this._durationTimer<=0))return this.stopStream(),!1;this._frequencyTimer+=t;var e=this.container.children.length;e=this.frequency&&(e+this.maxParticles<=this.totalParticles?this.addParticles(this.maxParticles):this.addParticles(this.totalParticles-e),this._frequencyTimer=0)}return!0}}),Particle=Renderable.extend({init:function(t){this._super(Renderable,"init",[t.getRandomPointX(),t.getRandomPointY(),t.image.width,t.image.height]),this.alwaysUpdate=!0,this.image=t.image;var e=t.angle+(t.angleVariation>0?(randomFloat(0,2)-1)*t.angleVariation:0),i=t.speed+(t.speedVariation>0?(randomFloat(0,2)-1)*t.speedVariation:0);this.vel=new Vector2d(i*Math.cos(e),-i*Math.sin(e)),this.life=randomFloat(t.minLife,t.maxLife),this.startLife=this.life,this.startScale=clamp(randomFloat(t.minStartScale,t.maxStartScale),t.minStartScale,t.maxStartScale),this.endScale=clamp(randomFloat(t.minEndScale,t.maxEndScale),t.minEndScale,t.maxEndScale),this.gravity=t.gravity,this.wind=t.wind,this.followTrajectory=t.followTrajectory,this.onlyInViewport=t.onlyInViewport,this.pos.z=t.z,this._deltaInv=timer$1.maxfps/1e3,t.followTrajectory||(this.angle=randomFloat(t.minRotation,t.maxRotation))},update:function(t){var e=t*this._deltaInv;this.life=this.life>t?this.life-t:0;var i=this.life/this.startLife,n=this.startScale;this.startScale>this.endScale?n=(n*=i)this.endScale?this.endScale:n),this.alpha=i,this.vel.x+=this.wind*e,this.vel.y+=this.gravity*e;var r=this.followTrajectory?Math.atan2(this.vel.y,this.vel.x):this.angle;return this.pos.x+=this.vel.x*e,this.pos.y+=this.vel.y*e,this.currentTransform.setTransform(n,0,0,0,n,0,this.pos.x,this.pos.y,1).rotate(r),(this.inViewport||!this.onlyInViewport)&&this.life>0},preDraw:function(t){t.save(),t.setGlobalAlpha(t.globalAlpha()*this.alpha),t.transform(this.currentTransform)},draw:function(t){var e=this.width,i=this.height;t.drawImage(this.image,0,0,e,i,-e/2,-i/2,e,i)}}),Entity=Renderable.extend({init:function(t,e,i){if(this.children=[],"number"!=typeof i.width||"number"!=typeof i.height)throw new Error("height and width properties are mandatory when passing settings parameters to an object entity");this._super(Renderable,"init",[t,e,i.width,i.height]),i.image&&(i.framewidth=i.framewidth||i.width,i.frameheight=i.frameheight||i.height,this.renderable=new Sprite(0,0,i)),i.anchorPoint?this.anchorPoint.set(i.anchorPoint.x,i.anchorPoint.y):this.anchorPoint.set(0,0),"string"==typeof i.name&&(this.name=i.name),this.type=i.type||"",this.id=i.id||"",this.alive=!0,void 0===i.shapes&&(i.shapes=new Polygon(0,0,[new Vector2d(0,0),new Vector2d(this.width,0),new Vector2d(this.width,this.height),new Vector2d(0,this.height)])),void 0!==this.body?this.body.init(this,i.shapes,this.onBodyUpdate.bind(this)):this.body=new Body(this,i.shapes,this.onBodyUpdate.bind(this)),0===this.width&&0===this.height&&this.resize(this.body.getBounds().width,this.body.getBounds().height),this.body.setCollisionMask(i.collisionMask),this.body.setCollisionType(i.collisionType),this.autoTransform=!1},update:function(t){return this.renderable?this.renderable.update(t):this._super(Renderable,"update",[t])},onBodyUpdate:function(t){this.getBounds().addBounds(t.getBounds(),!0),this.updateBoundsPos(this.pos.x,this.pos.y)},preDraw:function(t){t.save(),t.translate(this.pos.x+this.body.getBounds().x,this.pos.y+this.body.getBounds().y),this.renderable instanceof Renderable&&t.translate(this.anchorPoint.x*this.body.getBounds().width,this.anchorPoint.y*this.body.getBounds().height)},draw:function(t,e){var i=this.renderable;i instanceof Renderable&&(i.preDraw(t),i.draw(t,e),i.postDraw(t))},destroy:function(){this.renderable&&(this.renderable.destroy.apply(this.renderable,arguments),this.children.splice(0,1)),this._super(Renderable,"destroy",arguments)},onDeactivateEvent:function(){this.renderable&&this.renderable.onDeactivateEvent&&this.renderable.onDeactivateEvent()},onCollision:function(){return!1}});Object.defineProperty(Entity.prototype,"renderable",{get:function(){return this.children[0]},set:function(t){if(!(t instanceof Renderable))throw new Error(t+"should extend me.Renderable");this.children[0]=t,this.children[0].ancestor=this},configurable:!0});var DraggableEntity=Entity.extend({init:function(t,e,i){this._super(Entity,"init",[t,e,i]),this.dragging=!1,this.dragId=null,this.grabOffset=new Vector2d(0,0),this.onPointerEvent=registerPointerEvent,this.removePointerEvent=releasePointerEvent,this.initEvents()},initEvents:function(){var t=this;this.mouseDown=function(t){this.translatePointerEvent(t,event.DRAGSTART)},this.mouseUp=function(t){this.translatePointerEvent(t,event.DRAGEND)},this.onPointerEvent("pointerdown",this,this.mouseDown.bind(this)),this.onPointerEvent("pointerup",this,this.mouseUp.bind(this)),this.onPointerEvent("pointercancel",this,this.mouseUp.bind(this)),event.subscribe(event.POINTERMOVE,this.dragMove.bind(this)),event.subscribe(event.DRAGSTART,(function(e,i){i===t&&t.dragStart(e)})),event.subscribe(event.DRAGEND,(function(e,i){i===t&&t.dragEnd(e)}))},translatePointerEvent:function(t,e){event.publish(e,[t,this])},dragStart:function(t){if(!1===this.dragging)return this.dragging=!0,this.grabOffset.set(t.gameX,t.gameY),this.grabOffset.sub(this.pos),!1},dragMove:function(t){!0===this.dragging&&(this.pos.set(t.gameX,t.gameY,this.pos.z),this.pos.sub(this.grabOffset))},dragEnd:function(){if(!0===this.dragging)return this.dragging=!1,!1},destroy:function(){event.unsubscribe(event.POINTERMOVE,this.dragMove),event.unsubscribe(event.DRAGSTART,this.dragStart),event.unsubscribe(event.DRAGEND,this.dragEnd),this.removePointerEvent("pointerdown",this),this.removePointerEvent("pointerup",this)}}),DroptargetEntity=Entity.extend({init:function(t,e,i){this.CHECKMETHOD_OVERLAP="overlaps",this.CHECKMETHOD_CONTAINS="contains",this.checkMethod=null,this._super(Entity,"init",[t,e,i]),event.subscribe(event.DRAGEND,this.checkOnMe.bind(this)),this.checkMethod=this[this.CHECKMETHOD_OVERLAP]},setCheckMethod:function(t){void 0!==this[t]&&(this.checkMethod=this[t])},checkOnMe:function(t,e){e&&this.checkMethod(e.getBounds())&&this.drop(e)},drop:function(){},destroy:function(){event.unsubscribe(event.DRAGEND,this.checkOnMe)}}),Jay=window.Jay,version="9.1.2";exports.initialized=!1;var skipAutoInit=!1;function boot(){!0!==exports.initialized&&(device$1._check(),pool.register("me.Entity",Entity),pool.register("me.Collectable",Collectable),pool.register("me.Trigger",Trigger),pool.register("me.Tween",Tween,!0),pool.register("me.Color",Color,!0),pool.register("me.Particle",Particle,!0),pool.register("me.Sprite",Sprite),pool.register("me.Renderable",Renderable),pool.register("me.Text",Text,!0),pool.register("me.BitmapText",BitmapText,!0),pool.register("me.BitmapTextData",BitmapTextData,!0),pool.register("me.ImageLayer",ImageLayer,!0),pool.register("me.ColorLayer",ColorLayer,!0),pool.register("me.Vector2d",Vector2d,!0),pool.register("me.Vector3d",Vector3d,!0),pool.register("me.ObservableVector2d",ObservableVector2d,!0),pool.register("me.ObservableVector3d",ObservableVector3d,!0),pool.register("me.Matrix2d",Matrix2d,!0),pool.register("me.Matrix3d",Matrix3d,!0),pool.register("me.Rect",Rect,!0),pool.register("me.Polygon",Polygon,!0),pool.register("me.Line",Line,!0),pool.register("me.Ellipse",Ellipse,!0),pool.register("me.Bounds",Bounds$1,!0),pool.register("Entity",Entity),pool.register("Collectable",Collectable),pool.register("Trigger",Trigger),pool.register("Tween",Tween,!0),pool.register("Color",Color,!0),pool.register("Particle",Particle,!0),pool.register("Sprite",Sprite),pool.register("Renderable",Renderable),pool.register("Text",Text,!0),pool.register("BitmapText",BitmapText,!0),pool.register("BitmapTextData",BitmapTextData,!0),pool.register("ImageLayer",ImageLayer,!0),pool.register("ColorLayer",ColorLayer,!0),pool.register("Vector2d",Vector2d,!0),pool.register("Vector3d",Vector3d,!0),pool.register("ObservableVector2d",ObservableVector2d,!0),pool.register("ObservableVector3d",ObservableVector3d,!0),pool.register("Matrix2d",Matrix2d,!0),pool.register("Matrix3d",Matrix3d,!0),pool.register("Rect",Rect,!0),pool.register("Polygon",Polygon,!0),pool.register("Line",Line,!0),pool.register("Ellipse",Ellipse,!0),pool.register("Bounds",Bounds$1,!0),save.init(),timer$1.init(),loader$1.setNocache(utils$1.getUriFragment().nocache||!1),state$1.init(),initKeyboardEvent(),game$1.init(),exports.initialized=!0)}device$1.onReady((function(){boot()})),exports.BitmapText=BitmapText,exports.BitmapTextData=BitmapTextData,exports.Body=Body,exports.Bounds=Bounds$1,exports.Camera2d=Camera2d,exports.CanvasRenderer=CanvasRenderer,exports.Collectable=Collectable,exports.Color=Color,exports.ColorLayer=ColorLayer,exports.Container=Container$1,exports.DraggableEntity=DraggableEntity,exports.DroptargetEntity=DroptargetEntity,exports.Ellipse=Ellipse,exports.Entity=Entity,exports.GLShader=GLShader,exports.GUI_Object=GUI_Object,exports.ImageLayer=ImageLayer,exports.Line=Line,exports.Math=math,exports.Matrix2d=Matrix2d,exports.Matrix3d=Matrix3d,exports.Object=Jay,exports.ObservableVector2d=ObservableVector2d,exports.ObservableVector3d=ObservableVector3d,exports.Particle=Particle,exports.ParticleEmitter=ParticleEmitter,exports.Pointer=Pointer,exports.Polygon=Polygon,exports.QuadTree=QuadTree,exports.Rect=Rect,exports.Renderable=Renderable,exports.Renderer=Renderer,exports.Sprite=Sprite,exports.Stage=Stage,exports.TMXHexagonalRenderer=TMXHexagonalRenderer,exports.TMXIsometricRenderer=TMXIsometricRenderer,exports.TMXLayer=TMXLayer,exports.TMXOrthogonalRenderer=TMXOrthogonalRenderer,exports.TMXRenderer=TMXRenderer,exports.TMXStaggeredRenderer=TMXStaggeredRenderer,exports.TMXTileMap=TMXTileMap,exports.TMXTileset=TMXTileset,exports.TMXTilesetGroup=TMXTilesetGroup,exports.Text=Text,exports.Tile=Tile,exports.Trigger=Trigger,exports.Tween=Tween,exports.Vector2d=Vector2d,exports.Vector3d=Vector3d,exports.WebGLCompositor=WebGLCompositor,exports.WebGLRenderer=WebGLRenderer,exports.World=World,exports.audio=audio$1,exports.boot=boot,exports.collision=collision,exports.deprecated=deprecated,exports.device=device$1,exports.event=event,exports.game=game$1,exports.input=input,exports.level=level,exports.loader=loader$1,exports.plugin=plugin,exports.plugins=plugins,exports.pool=pool,exports.save=save,exports.skipAutoInit=skipAutoInit,exports.state=state$1,exports.timer=timer$1,exports.utils=utils$1,exports.version=version,exports.video=video$1,Object.defineProperty(exports,"__esModule",{value:!0})})),me.deprecated.apply();
\ No newline at end of file
diff --git a/dist/melonjs.module.js b/dist/melonjs.module.js
index 071cff97cf..e4e7c58625 100644
--- a/dist/melonjs.module.js
+++ b/dist/melonjs.module.js
@@ -1,5 +1,5 @@
/*!
- * melonJS Game Engine - v9.1.1
+ * melonJS Game Engine - v9.1.2
* http://www.melonjs.org
* melonjs is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
@@ -10591,6 +10591,37 @@ var Polygon = window.Jay.extend({
return this;
},
+ /**
+ * Shifts the Polygon to the given position vector.
+ * @name shift
+ * @memberOf me.Polygon
+ * @function
+ * @param {me.Vector2d} position
+ */
+ /**
+ * Shifts the Polygon to the given x, y position.
+ * @name shift
+ * @memberOf me.Polygon
+ * @function
+ * @param {Number} x
+ * @param {Number} y
+ */
+ shift() {
+ var _x, _y;
+ if (arguments.length === 2) {
+ // x, y
+ _x = arguments[0];
+ _y = arguments[1];
+ } else {
+ // vector
+ _x = arguments[0].x;
+ _y = arguments[0].y;
+ }
+ this.pos.x = _x;
+ this.pos.y = _y;
+ this.updateBounds();
+ },
+
/**
* Returns true if the polygon contains the given point.
* (Note: it is highly recommended to first do a hit test on the corresponding
@@ -10801,67 +10832,6 @@ var Rect = Polygon.extend({
return this.setShape(rect.pos.x, rect.pos.y, rect.width, rect.height);
},
- /**
- * translate the rect by the specified offset
- * @name translate
- * @memberOf me.Rect.prototype
- * @function
- * @param {Number} x x offset
- * @param {Number} y y offset
- * @return {me.Rect} this rectangle
- */
- /**
- * translate the rect by the specified vector
- * @name translate
- * @memberOf me.Rect.prototype
- * @function
- * @param {me.Vector2d} v vector offset
- * @return {me.Rect} this rectangle
- */
- translate : function () {
- var _x, _y;
-
- if (arguments.length === 2) {
- // x, y
- _x = arguments[0];
- _y = arguments[1];
- } else {
- // vector
- _x = arguments[0].x;
- _y = arguments[0].y;
- }
-
- this.pos.x += _x;
- this.pos.y += _y;
-
- return this;
- },
-
- /**
- * Shifts the rect to the given position vector.
- * @name shift
- * @memberOf me.Rect
- * @function
- * @param {me.Vector2d} position
- */
- /**
- * Shifts the rect to the given x, y position.
- * @name shift
- * @memberOf me.Rect
- * @function
- * @param {Number} x
- * @param {Number} y
- */
- shift : function () {
- if (arguments.length === 2) {
- // x, y
- this.pos.set(arguments[0], arguments[1]);
- } else {
- // vector
- this.pos.setV(arguments[0]);
- }
- },
-
/**
* merge this rectangle with another one
* @name union
@@ -28268,16 +28238,16 @@ let device = {
}
// set pause/stop action on losing focus
- window.addEventListener("blur", function () {
+ window.addEventListener("blur", (function () {
if (this.stopOnBlur) {
state$1.stop(true);
}
if (this.pauseOnBlur) {
state$1.pause(true);
}
- }, false);
+ }).bind(this), false);
// set restart/resume action on gaining focus
- window.addEventListener("focus", function () {
+ window.addEventListener("focus", (function () {
if (this.stopOnBlur) {
state$1.restart(true);
}
@@ -28288,7 +28258,7 @@ let device = {
if (this.autoFocus) {
this.focus();
}
- }, false);
+ }).bind(this), false);
// Set the name of the hidden property and the change event for visibility
@@ -28312,7 +28282,7 @@ let device = {
if (typeof (visibilityChange) === "string") {
// add the corresponding event listener
document.addEventListener(visibilityChange,
- function () {
+ (function () {
if (document[hidden]) {
if (this.stopOnBlur) {
state$1.stop(true);
@@ -28328,7 +28298,7 @@ let device = {
state$1.resume(true);
}
}
- }, false
+ }).bind(this), false
);
}
},
@@ -32368,10 +32338,10 @@ var plugin = {
* this can be overridden by the plugin
* @public
* @type String
- * @default "9.1.1"
+ * @default "9.1.2"
* @name me.plugin.Base#version
*/
- this.version = "9.1.1";
+ this.version = "9.1.2";
}
}),
@@ -36623,7 +36593,7 @@ var Jay = window.Jay;
* @name version
* @type {string}
*/
-const version = "9.1.1";
+const version = "9.1.2";
/**