From e1e86f6943ae7891e8779a36999dce43ea3e2bbf Mon Sep 17 00:00:00 2001 From: Pierre Date: Wed, 24 Sep 2014 11:49:31 +0200 Subject: [PATCH 01/13] Remove height check for containsXY --- src/Cube.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Cube.js b/src/Cube.js index 907dae3..1eb991a 100644 --- a/src/Cube.js +++ b/src/Cube.js @@ -1,9 +1,9 @@ /** * @class Phaser.Plugin.Isometric.Cube - * + * * @classdesc * Creates a new Cube object with the bottom-back corner specified by the x, y and z parameters, with the specified breadth (widthX), depth (widthY) and height parameters. If you call this function without parameters, a Cube with x, y, z, breadth, depth and height properties set to 0 is created. - * + * * @constructor * @param {number} x - The x coordinate of the bottom-back corner of the Cube. * @param {number} y - The y coordinate of the bottom-back corner of the Cube. @@ -580,7 +580,7 @@ Phaser.Plugin.Isometric.Cube.contains = function (a, x, y, z) { * @return {boolean} A value of true if the Cube object contains the specified point; otherwise false. */ Phaser.Plugin.Isometric.Cube.containsXY = function (a, x, y) { - if (a.widthX <= 0 || a.widthY <= 0 || a.height <= 0) { + if (a.widthX <= 0 || a.widthY <= 0) { return false; } From 8532f655f331464f4b3573ee5b7ada8334061c1d Mon Sep 17 00:00:00 2001 From: Pierre Date: Wed, 24 Sep 2014 11:50:13 +0200 Subject: [PATCH 02/13] Update dist files --- dist/phaser-plugin-isometric.js | 6 +++--- dist/phaser-plugin-isometric.min.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/phaser-plugin-isometric.js b/dist/phaser-plugin-isometric.js index 05305e1..9dbbb32 100644 --- a/dist/phaser-plugin-isometric.js +++ b/dist/phaser-plugin-isometric.js @@ -68,10 +68,10 @@ Phaser.Plugin.Isometric.ISOSPRITE = 'isosprite'; Phaser.Plugin.Isometric.ISOARCADE = 'isoarcade'; ;/** * @class Phaser.Plugin.Isometric.Cube - * + * * @classdesc * Creates a new Cube object with the bottom-back corner specified by the x, y and z parameters, with the specified breadth (widthX), depth (widthY) and height parameters. If you call this function without parameters, a Cube with x, y, z, breadth, depth and height properties set to 0 is created. - * + * * @constructor * @param {number} x - The x coordinate of the bottom-back corner of the Cube. * @param {number} y - The y coordinate of the bottom-back corner of the Cube. @@ -648,7 +648,7 @@ Phaser.Plugin.Isometric.Cube.contains = function (a, x, y, z) { * @return {boolean} A value of true if the Cube object contains the specified point; otherwise false. */ Phaser.Plugin.Isometric.Cube.containsXY = function (a, x, y) { - if (a.widthX <= 0 || a.widthY <= 0 || a.height <= 0) { + if (a.widthX <= 0 || a.widthY <= 0) { return false; } diff --git a/dist/phaser-plugin-isometric.min.js b/dist/phaser-plugin-isometric.min.js index 7658b3b..6d61f2a 100644 --- a/dist/phaser-plugin-isometric.min.js +++ b/dist/phaser-plugin-isometric.min.js @@ -1,3 +1,3 @@ -/* Phaser Isometric 0.9.1 - 13-09-2014 by Lewis Lane */ -Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.game.iso=this.game.iso||new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC)},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)"; +/* Phaser Isometric 0.9.1 - 24-09-2014 by Lewis Lane */ +Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.game.iso=this.game.iso||new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC)},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)"; var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file From 75e75d676cd516f0dd10c9000eac30bb20c72033 Mon Sep 17 00:00:00 2001 From: edgarjcfn Date: Mon, 13 Oct 2014 23:17:57 +0200 Subject: [PATCH 03/13] Decoupled References to Enable Typescript Added a Reference to Projector to Phaser.Plugin.Isometric. Added a delegate addIsoSprite() to Phaser.Plugin.Isometric. --- dist/phaser-plugin-isometric.js | 12 ++++++++++-- dist/phaser-plugin-isometric.min.js | 6 +++--- src/IsoSprite.js | 6 ++++++ src/Isometric.js | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/dist/phaser-plugin-isometric.js b/dist/phaser-plugin-isometric.js index 9dbbb32..f178e38 100644 --- a/dist/phaser-plugin-isometric.js +++ b/dist/phaser-plugin-isometric.js @@ -45,9 +45,9 @@ Phaser.Plugin.Isometric = function (game, parent) { Phaser.Plugin.call(this, game, parent); - + this.projector = new Phaser.Plugin.Isometric.Projector(this.game, Phaser.Plugin.Isometric.CLASSIC); // Add an instance of Isometric.Projector to game.iso if it doesn't exist already - this.game.iso = this.game.iso || new Phaser.Plugin.Isometric.Projector(this.game, Phaser.Plugin.Isometric.CLASSIC); + this.game.iso = this.game.iso || this.projector; }; Phaser.Plugin.Isometric.prototype = Object.create(Phaser.Plugin.prototype); @@ -965,6 +965,14 @@ Phaser.GameObjectFactory.prototype.isoSprite = function (x, y, z, key, frame, gr }; +Phaser.Plugin.Isometric.prototype.addIsoSprite = function (x, y, z, key, frame, group) { + console.log("game", this.game); + console.log("factory", this.game.add); + return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add, x, y, z, key, frame, group); +}; + + + Phaser.Utils.Debug.prototype.isoSprite = function (sprite, color, filled) { if (!sprite.isoBounds) { diff --git a/dist/phaser-plugin-isometric.min.js b/dist/phaser-plugin-isometric.min.js index 6d61f2a..608732a 100644 --- a/dist/phaser-plugin-isometric.min.js +++ b/dist/phaser-plugin-isometric.min.js @@ -1,3 +1,3 @@ -/* Phaser Isometric 0.9.1 - 24-09-2014 by Lewis Lane */ -Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.game.iso=this.game.iso||new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC)},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)"; -var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file +/* Phaser Isometric 0.9.1 - 13-10-2014 by Lewis Lane */ +Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.projector=new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC),this.game.iso=this.game.iso||this.projector},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Plugin.Isometric.prototype.addIsoSprite=function(a,b,c,d,e,f){return console.log("game",this.game),console.log("factory",this.game.add),Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add,a,b,c,d,e,f)},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y +},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)";var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file diff --git a/src/IsoSprite.js b/src/IsoSprite.js index 61f7b28..ff1cbc1 100644 --- a/src/IsoSprite.js +++ b/src/IsoSprite.js @@ -264,6 +264,12 @@ Phaser.GameObjectFactory.prototype.isoSprite = function (x, y, z, key, frame, gr }; +Phaser.Plugin.Isometric.prototype.addIsoSprite = function (x, y, z, key, frame, group) { + return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add, x, y, z, key, frame, group); +}; + + + Phaser.Utils.Debug.prototype.isoSprite = function (sprite, color, filled) { if (!sprite.isoBounds) { diff --git a/src/Isometric.js b/src/Isometric.js index 0936695..32644b1 100644 --- a/src/Isometric.js +++ b/src/Isometric.js @@ -45,9 +45,9 @@ Phaser.Plugin.Isometric = function (game, parent) { Phaser.Plugin.call(this, game, parent); - + this.projector = new Phaser.Plugin.Isometric.Projector(this.game, Phaser.Plugin.Isometric.CLASSIC); // Add an instance of Isometric.Projector to game.iso if it doesn't exist already - this.game.iso = this.game.iso || new Phaser.Plugin.Isometric.Projector(this.game, Phaser.Plugin.Isometric.CLASSIC); + this.game.iso = this.game.iso || this.projector; }; Phaser.Plugin.Isometric.prototype = Object.create(Phaser.Plugin.prototype); From 97e28ac92fa1bb77fcf52e965ae7ed6860dae837 Mon Sep 17 00:00:00 2001 From: edgarjcfn Date: Mon, 13 Oct 2014 23:27:03 +0200 Subject: [PATCH 04/13] Added the bare-minimum .d.ts file for Typescript Interoperability --- dist/phaser.plugin.isometric.d.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 dist/phaser.plugin.isometric.d.ts diff --git a/dist/phaser.plugin.isometric.d.ts b/dist/phaser.plugin.isometric.d.ts new file mode 100644 index 0000000..d6f930b --- /dev/null +++ b/dist/phaser.plugin.isometric.d.ts @@ -0,0 +1,16 @@ +declare module Phaser.Plugin { + class Isometric extends Phaser.Plugin { + projector: Phaser.Plugin.Isometric.Projector; + + constructor(game: Phaser.Game, parent: any); + + addIsoSprite(x: number, y: number, z: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; + } + + module Isometric { + class Projector { + anchor: Phaser.Point; + } + } + +} \ No newline at end of file From e66a1140a42c108135a0ac12e5deead0ecc29e7a Mon Sep 17 00:00:00 2001 From: edgarjcfn Date: Tue, 14 Oct 2014 00:01:33 +0200 Subject: [PATCH 05/13] Cleaned logs. Updated Typescript definitions file. Built after deleting logs Updated .d.ts file with more definitions Added more definitions to .d.ts file --- dist/phaser-plugin-isometric.js | 2 -- dist/phaser-plugin-isometric.min.js | 6 ++--- dist/phaser.plugin.isometric.d.ts | 35 ++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/dist/phaser-plugin-isometric.js b/dist/phaser-plugin-isometric.js index f178e38..1a42c06 100644 --- a/dist/phaser-plugin-isometric.js +++ b/dist/phaser-plugin-isometric.js @@ -966,8 +966,6 @@ Phaser.GameObjectFactory.prototype.isoSprite = function (x, y, z, key, frame, gr }; Phaser.Plugin.Isometric.prototype.addIsoSprite = function (x, y, z, key, frame, group) { - console.log("game", this.game); - console.log("factory", this.game.add); return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add, x, y, z, key, frame, group); }; diff --git a/dist/phaser-plugin-isometric.min.js b/dist/phaser-plugin-isometric.min.js index 608732a..3806922 100644 --- a/dist/phaser-plugin-isometric.min.js +++ b/dist/phaser-plugin-isometric.min.js @@ -1,3 +1,3 @@ -/* Phaser Isometric 0.9.1 - 13-10-2014 by Lewis Lane */ -Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.projector=new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC),this.game.iso=this.game.iso||this.projector},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Plugin.Isometric.prototype.addIsoSprite=function(a,b,c,d,e,f){return console.log("game",this.game),console.log("factory",this.game.add),Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add,a,b,c,d,e,f)},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y -},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)";var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file +/* Phaser Isometric 0.9.1 - 14-10-2014 by Lewis Lane */ +Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.projector=new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC),this.game.iso=this.game.iso||this.projector},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Plugin.Isometric.prototype.addIsoSprite=function(a,b,c,d,e,f){return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add,a,b,c,d,e,f)},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z +},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)";var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file diff --git a/dist/phaser.plugin.isometric.d.ts b/dist/phaser.plugin.isometric.d.ts index d6f930b..a67c9d0 100644 --- a/dist/phaser.plugin.isometric.d.ts +++ b/dist/phaser.plugin.isometric.d.ts @@ -2,14 +2,47 @@ declare module Phaser.Plugin { class Isometric extends Phaser.Plugin { projector: Phaser.Plugin.Isometric.Projector; - constructor(game: Phaser.Game, parent: any); + constructor(game: Phaser.Game, parent?: any); addIsoSprite(x: number, y: number, z: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; } module Isometric { class Projector { + game: Phaser.Game; anchor: Phaser.Point; + projectionAngle: number; + + project(point3:Phaser.Plugin.Isometric.Point3, out:Phaser.Point) : Phaser.Point; + projectXy(point3:Phaser.Plugin.Isometric.Point3, out:Phaser.Point) : Phaser.Point; + unproject(point:Phaser.Point, out: Phaser.Plugin.Isometric.Point3, z: number): Phaser.Plugin.Isometric.Point3; + simpleSort(group: Phaser.Group); + topologicalSort(group: Phaser.Group, padding: number, prop: string); + + } + + class Point3 { + x: number; + y: number; + z: number; + + constructor(x: number, y: number, z: number); + + copyFrom(source:Phaser.Plugin.Isometric.Point3) : Phaser.Plugin.Isometric.Point3; + copyto(dest:Phaser.Plugin.Isometric.Point3) : Phaser.Plugin.Isometric.Point3; + equals(a:Phaser.Plugin.Isometric.Point3) : boolean; + set(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; + setTo(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; + add(x: number, y: number) : Phaser.Plugin.Isometric.Point3; + subtract(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; + multiply(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; + divide(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; + } + + class IsoSprite extends Phaser.Sprite{ + snap: number; + constructor(game: Phaser.Game, x: number, y: number, z: number, key?: any, frame?: any); + } } From e12516f6b6e1caf659c795d8efbc3fa1e84e086d Mon Sep 17 00:00:00 2001 From: Edgar Neto Date: Wed, 15 Oct 2014 07:17:53 +0200 Subject: [PATCH 06/13] Updated README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2f8f029..2bf0c2b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +Fork changelog +============== +[14.10.2014] - Added Typescript Support + + Phaser Isometric Plug-in ======================= From 71cc243d0b67f9dd828d66ce805eca068253d3ad Mon Sep 17 00:00:00 2001 From: Clark Stevenson Date: Sun, 19 Oct 2014 00:24:40 +0100 Subject: [PATCH 07/13] Update phaser.plugin.isometric.d.ts I expanded on @edgarjcfn original work. There are some issues as detailed at the top of the file which are not done mostly for the same reason as before (opened ended classes). I still hope to get time to play with this library in the next week or so to give it a test :D --- dist/phaser.plugin.isometric.d.ts | 354 ++++++++++++++++++++++++++---- 1 file changed, 316 insertions(+), 38 deletions(-) diff --git a/dist/phaser.plugin.isometric.d.ts b/dist/phaser.plugin.isometric.d.ts index a67c9d0..ca7d47f 100644 --- a/dist/phaser.plugin.isometric.d.ts +++ b/dist/phaser.plugin.isometric.d.ts @@ -1,49 +1,327 @@ +//debug octreee is missing - Octree +//debug isoSprite is missing - IsoSprite +//gameobjectcreator isoSprite missing - IsoSprite +//gameobjectfactory isoSprite missing - IsoSprite +//debug body missing - Body +//debug bodyInfo missing -Body declare module Phaser.Plugin { - class Isometric extends Phaser.Plugin { - projector: Phaser.Plugin.Isometric.Projector; - constructor(game: Phaser.Game, parent?: any); + class Isometric extends Phaser.Plugin { - addIsoSprite(x: number, y: number, z: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; - } + static CLASSIC: number; + static ISOMETRIC: number; + static MILITARY: number; - module Isometric { - class Projector { - game: Phaser.Game; - anchor: Phaser.Point; - projectionAngle: number; + static VERSION: string; + static UP: number; + static DOWN: number; + static FORWARDX: number; + static FORWARDY: number; + static BACKWARDX: number; + static BACKWARDY: number; - project(point3:Phaser.Plugin.Isometric.Point3, out:Phaser.Point) : Phaser.Point; - projectXy(point3:Phaser.Plugin.Isometric.Point3, out:Phaser.Point) : Phaser.Point; - unproject(point:Phaser.Point, out: Phaser.Plugin.Isometric.Point3, z: number): Phaser.Plugin.Isometric.Point3; - simpleSort(group: Phaser.Group); - topologicalSort(group: Phaser.Group, padding: number, prop: string); + static ISOSPRITE: number; + static ISOARCADE: number; - } + projector: Phaser.Plugin.Isometric.Projector; - class Point3 { - x: number; - y: number; - z: number; + constructor(game: Phaser.Game, parent?: any); - constructor(x: number, y: number, z: number); - - copyFrom(source:Phaser.Plugin.Isometric.Point3) : Phaser.Plugin.Isometric.Point3; - copyto(dest:Phaser.Plugin.Isometric.Point3) : Phaser.Plugin.Isometric.Point3; - equals(a:Phaser.Plugin.Isometric.Point3) : boolean; - set(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; - setTo(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; - add(x: number, y: number) : Phaser.Plugin.Isometric.Point3; - subtract(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; - multiply(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; - divide(x: number, y: number, z: number) : Phaser.Plugin.Isometric.Point3; - } + addIsoSprite(x: number, y: number, z: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; - class IsoSprite extends Phaser.Sprite{ - snap: number; - constructor(game: Phaser.Game, x: number, y: number, z: number, key?: any, frame?: any); + } - } - } + module Isometric { -} \ No newline at end of file + class Projector { + + game: Phaser.Game; + anchor: Phaser.Point; + projectionAngle: number; + + project(point3: Phaser.Plugin.Isometric.Point3, out?: Phaser.Point): Phaser.Point; + projectXY(point3: Phaser.Plugin.Isometric.Point3, out?: Phaser.Point): Phaser.Point; + unproject(point: Phaser.Point, out?: Phaser.Plugin.Isometric.Point3, z?: number): Phaser.Plugin.Isometric.Point3; + simpleSort(group: Phaser.Group): void; + topologicalSort(group: Phaser.Group, padding?: number, prop?: string): void; + + } + + class Point3 { + + static add(a: Phaser.Plugin.Isometric.Point3, b: Phaser.Plugin.Isometric.Point3, out?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + static subtract(a: Phaser.Plugin.Isometric.Point3, b: Phaser.Plugin.Isometric.Point3, out?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + static multiply(a: Phaser.Plugin.Isometric.Point3, b: Phaser.Plugin.Isometric.Point3, out?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + static divide(a: Phaser.Plugin.Isometric.Point3, b: Phaser.Plugin.Isometric.Point3, out?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + static equals(a: Phaser.Plugin.Isometric.Point3, b: Phaser.Plugin.Isometric.Point3): boolean; + + x: number; + y: number; + z: number; + + constructor(x?: number, y?: number, z?: number); + + copyFrom(source: any): Phaser.Plugin.Isometric.Point3; + copyto(dest: any): any; + equals(a: any): boolean; + set(x?: number, y?: number, z?: number): Phaser.Plugin.Isometric.Point3; + setTo(x?: number, y?: number, z?: number): Phaser.Plugin.Isometric.Point3; + add(x?: number, y?: number): Phaser.Plugin.Isometric.Point3; + subtract(x?: number, y?: number, z?: number): Phaser.Plugin.Isometric.Point3; + multiply(x?: number, y?: number, z?: number): Phaser.Plugin.Isometric.Point3; + divide(x?: number, y?: number, z?: number): Phaser.Plugin.Isometric.Point3; + + } + + class Octree { + + maxObjects: number; + maxLevels: number; + level: number; + bounds: any; + objects: any[]; + nodes: any[]; + + constructor(x: number, y: number, z: number, widthX: number, widthY: number, height: number, maxObject?: number, maxLevels?: number, level?: number); + + reset(x: number, y: number, z: number, widthX: number, widthY: number, height: number, maxObject?: number, maxLevels?: number, level?: number): void; + populate(group: Phaser.Group); + populateHandler(sprite: Phaser.Plugin.Isometric.IsoSprite): void; + populateHandler(sprite: any): void; + split(): void; + insert(body: Phaser.Plugin.Isometric.Body): void; + insert(body: Phaser.Plugin.Isometric.Cube): void; + insert(body: any): void; + getIndex(cube: Phaser.Plugin.Isometric.Cube): number; + getIndex(cube: any): number; + retrieve(source: Phaser.Plugin.Isometric.IsoSprite): any[]; + retrieve(source: Phaser.Plugin.Isometric.Cube): any[]; + clear(): void; + + } + + class IsoSprite extends Phaser.Sprite { + + snap: number; + isoX: number; + isoY: number; + isoZ: number; + isoPosition: Phaser.Plugin.Isometric.Point3; + isoBounds: Phaser.Plugin.Isometric.Point3; + depth: number; + + constructor(game: Phaser.Game, x: number, y: number, z: number, key?: any, frame?: any); + + resetIsoBounds(): void; + + } + + class Cube { + + static size(a: Phaser.Plugin.Isometric.Cube, output?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + static clone(a: Phaser.Plugin.Isometric.Cube, output?: Phaser.Plugin.Isometric.Cube): Phaser.Plugin.Isometric.Cube; + static contains(a: Phaser.Plugin.Isometric.Cube, x: number, y: number, z: number): boolean; + static containsXY(a: Phaser.Plugin.Isometric.Cube, x: number, y: number): boolean; + static containsPoint3(a: Phaser.Plugin.Isometric.Cube, point3: Phaser.Plugin.Isometric.Point3): boolean; + static containsCube(a: Phaser.Plugin.Isometric.Cube, b: Phaser.Plugin.Isometric.Cube): boolean; + static intersects(a: Phaser.Plugin.Isometric.Cube, b: Phaser.Plugin.Isometric.Cube): boolean; + + x: number; + y: number; + z: number; + widthX: number; + widthY: number; + height: number; + halfWidthX: number; + halfWidthY: number; + halfHeight: number; + bottom: number; + top: number; + backX: number; + backY: number; + frontX: number; + frontY: number; + volume: number; + centerX: number; + centerY: number; + centerZ: number; + randomX: number; + randomY: number; + randomZ: number; + empty: boolean; + + constructor(x?: number, y?: number, z?: number, widthX?: number, widthY?: number, height?: number); + + setTo(x?: number, y?: number, z?: number, widthX?: number, widthY?: number, height?: number): Phaser.Plugin.Isometric.Cube; + copyFrom(source: any): Phaser.Plugin.Isometric.Cube; + copyTo(dest: any): Phaser.Plugin.Isometric.Cube; + size(output?: Phaser.Plugin.Isometric.Point3): Phaser.Plugin.Isometric.Point3; + contains(x: number, y: number, z: number): boolean; + containsXY(x: number, y: number): boolean; + clone(output?: Phaser.Plugin.Isometric.Cube): Phaser.Plugin.Isometric.Cube; + intersects(b: Phaser.Plugin.Isometric.Cube): boolean; + getCorners(): Phaser.Plugin.Isometric.Point3[]; + toString(): string; + + } + + class Body { + + static render(context: any, body: Phaser.Plugin.Isometric.Body, color?: string, filled?: boolean): void; + static renderBodyInfo(debug: any, body: Phaser.Plugin.Isometric.Body): void; //togo debug? + + sprite: Phaser.Plugin.Isometric.IsoSprite; + game: Phaser.Game; + type: number; + enable: boolean; + offset: Phaser.Plugin.Isometric.Point3; + position: Phaser.Plugin.Isometric.Point3; + prev: Phaser.Plugin.Isometric.Point3; + allowRotation: boolean; + rotation: number; + preRotation: number; + sourceWidthX: number; + sourceWidthY: number; + sourceHeight: number; + widthX: number; + widthY: number; + height: number; + halfWidthX: number; + halfWidthY: number; + halfHeight: number; + center: Phaser.Plugin.Isometric.Point3; + velocity: Phaser.Plugin.Isometric.Point3; + newVelocity: Phaser.Plugin.Isometric.Point3; + deltaMax: Phaser.Plugin.Isometric.Point3; + acceleration: Phaser.Plugin.Isometric.Point3; + drag: Phaser.Plugin.Isometric.Point3; + allowGravity: boolean; + gravity: Phaser.Plugin.Isometric.Point3; + bounce: Phaser.Plugin.Isometric.Point3; + maxVelocity: Phaser.Plugin.Isometric.Point3; + angularVelocity: number; + angularAcceleration: number; + angularDrag: number; + maxAngular: number; + mass: number; + angle: number; + speed: number; + facing: number; + immovable: boolean; + moves: boolean; + customSeparateX: boolean; + customSeparateY: boolean; + customSeparateZ: boolean; + overlapX: number; + overlapY: number; + overlayZ: number; + embedded: boolean; + collideWorldBounds: boolean; + checkCollision: { + none: boolean; + any: boolean; + up: boolean; + down: boolean; + frontX: number; + frontY: number; + backX: number; + backY: number; + }; + touching: { + none: boolean; + up: boolean; + down: boolean; + frontX: number; + frontY: number; + backX: number; + backY: number; + }; + wasTouching: { + none: boolean; + up: boolean; + down: boolean; + frontX: number; + frontY: number; + backX: number; + backY: number; + }; + blocked: { + up: boolean; + down: boolean; + frontX: number; + frontY: number; + backX: number; + backY: number; + }; + phase: number; + skipTree: boolean; + top: number; + frontX: number; + right: number; + frontY: number; + bottom: number; + x: number; + y: number; + z: number; + + constructor(sprite: Phaser.Plugin.Isometric.IsoSprite); + + destroy(): void; + setSize(widthX: number, widthY: number, height: number, offsetX?: number, offsetY?: number, offsetZ?: number): void; + reset(x: number, y: number, z: number): void; + hitText(x: number, y: number, z: number): boolean; + onFloor(): boolean; + onWall(): boolean; + deltaAbsX(): number; + deltaAbsY(): number; + deltaAbsZ(): number; + deltaX(): number; + deltaY(): number; + deltaZ(): number; + deltaR(): number; + getCorners(): Phaser.Plugin.Isometric.Point3[]; + + } + + class Arcade { + + game: Phaser.Game; + gravity: Phaser.Plugin.Isometric.Point3; + bounds: Phaser.Plugin.Isometric.Cube; + checkCollision: { + up: boolean; + down: boolean; + frontX: boolean; + frontY: boolean; + backX: boolean; + backY: boolean; + }; + maxObjects: number; + maxLevels: number; + OVERLAP_BIAS: number; + forceXY: boolean; + skipTree: boolean; + useQuadTree: boolean; + quadTree: Phaser.QuadTree; + octree: Phaser.Plugin.Isometric.Octree; + + constructor(game: Phaser.Game); + + setBounds(x: number, y: number, z: number, widthX: number, widthY: number, height: number): void; + setBoundsToWorld(): void; + enable(object: any, children?: boolean): void; + enableBody(object: any): void; + updateMotion(body: Phaser.Plugin.Isometric.Body): void; + computeVelocity(axis: number, body: Phaser.Plugin.Isometric.Body, velocity: number, acceleration: number, drag: number, max?: number): number; + overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + collide(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + intersects(body1: Phaser.Plugin.Isometric.Body): boolean; + distanceBEtwee(source: any, target: any): number; + distanceToXY(displayObject: any, x: number, y: number): number; + distanceToXYZ(displayObject: any, x: number, y: number, z: number): number; + + } + + } + +} From 7677af9f6e5e1d9881a95fc10d44bfc1bae0dc58 Mon Sep 17 00:00:00 2001 From: Clark Stevenson Date: Mon, 20 Oct 2014 12:31:12 +0100 Subject: [PATCH 08/13] Update phaser.plugin.isometric.d.ts Fixed small typo. --- dist/phaser.plugin.isometric.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/phaser.plugin.isometric.d.ts b/dist/phaser.plugin.isometric.d.ts index ca7d47f..735117f 100644 --- a/dist/phaser.plugin.isometric.d.ts +++ b/dist/phaser.plugin.isometric.d.ts @@ -316,7 +316,7 @@ declare module Phaser.Plugin { overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; collide(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; intersects(body1: Phaser.Plugin.Isometric.Body): boolean; - distanceBEtwee(source: any, target: any): number; + distanceBetween(source: any, target: any): number; distanceToXY(displayObject: any, x: number, y: number): number; distanceToXYZ(displayObject: any, x: number, y: number, z: number): number; From 4b199a384bb988515e5b81e35d265c7caf1de3f6 Mon Sep 17 00:00:00 2001 From: Pierre Date: Thu, 26 Mar 2015 16:13:27 +0100 Subject: [PATCH 09/13] Fix compatibility with Phaser 2.3 --- src/physics/Body.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/physics/Body.js b/src/physics/Body.js index 5ed2e66..833697b 100644 --- a/src/physics/Body.js +++ b/src/physics/Body.js @@ -1,10 +1,10 @@ /** * @class Phaser.Plugin.Isometric.Body - * + * * @classdesc * The Physics Body is linked to a single IsoSprite. All physics operations should be performed against the body rather than * the IsoSprite itself. For example you can set the velocity, acceleration, bounce values etc all on the Body. - * + * * @constructor * @param {Phaser.Plugin.Isometric.IsoSprite} sprite - The IsoSprite object this physics body belongs to. */ @@ -485,7 +485,7 @@ Phaser.Plugin.Isometric.Body.prototype = { this.preRotation = this.rotation; - if (this._reset || this.sprite._cache[4] === 1) { + if (this._reset || this.sprite.fresh === true) { this.prev.x = this.position.x; this.prev.y = this.position.y; this.prev.z = this.position.z; From 16491724d02adc261f5e6f4ba1917e08470682f6 Mon Sep 17 00:00:00 2001 From: Pierre Date: Thu, 26 Mar 2015 16:14:36 +0100 Subject: [PATCH 10/13] Update dist files --- dist/phaser-plugin-isometric.js | 6 +++--- dist/phaser-plugin-isometric.min.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/phaser-plugin-isometric.js b/dist/phaser-plugin-isometric.js index 1a42c06..a7d332a 100644 --- a/dist/phaser-plugin-isometric.js +++ b/dist/phaser-plugin-isometric.js @@ -1974,11 +1974,11 @@ Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype, "projectionAn });;/** * @class Phaser.Plugin.Isometric.Body - * + * * @classdesc * The Physics Body is linked to a single IsoSprite. All physics operations should be performed against the body rather than * the IsoSprite itself. For example you can set the velocity, acceleration, bounce values etc all on the Body. - * + * * @constructor * @param {Phaser.Plugin.Isometric.IsoSprite} sprite - The IsoSprite object this physics body belongs to. */ @@ -2459,7 +2459,7 @@ Phaser.Plugin.Isometric.Body.prototype = { this.preRotation = this.rotation; - if (this._reset || this.sprite._cache[4] === 1) { + if (this._reset || this.sprite.fresh === true) { this.prev.x = this.position.x; this.prev.y = this.position.y; this.prev.z = this.position.z; diff --git a/dist/phaser-plugin-isometric.min.js b/dist/phaser-plugin-isometric.min.js index 3806922..d937419 100644 --- a/dist/phaser-plugin-isometric.min.js +++ b/dist/phaser-plugin-isometric.min.js @@ -1,3 +1,3 @@ -/* Phaser Isometric 0.9.1 - 14-10-2014 by Lewis Lane */ -Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.projector=new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC),this.game.iso=this.game.iso||this.projector},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Plugin.Isometric.prototype.addIsoSprite=function(a,b,c,d,e,f){return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add,a,b,c,d,e,f)},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||1===this.sprite._cache[4])&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z -},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)";var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file +/* Phaser Isometric 0.9.1 - 26-03-2015 by Lewis Lane */ +Phaser.Plugin.Isometric=function(a,b){Phaser.Plugin.call(this,a,b),this.projector=new Phaser.Plugin.Isometric.Projector(this.game,Phaser.Plugin.Isometric.CLASSIC),this.game.iso=this.game.iso||this.projector},Phaser.Plugin.Isometric.prototype=Object.create(Phaser.Plugin.prototype),Phaser.Plugin.Isometric.prototype.constructor=Phaser.Plugin.Isometric,Phaser.Plugin.Isometric.VERSION="0.9.1",Phaser.Plugin.Isometric.UP=0,Phaser.Plugin.Isometric.DOWN=1,Phaser.Plugin.Isometric.FORWARDX=2,Phaser.Plugin.Isometric.FORWARDY=3,Phaser.Plugin.Isometric.BACKWARDX=4,Phaser.Plugin.Isometric.BACKWARDY=5,Phaser.Plugin.Isometric.ISOSPRITE="isosprite",Phaser.Plugin.Isometric.ISOARCADE="isoarcade",Phaser.Plugin.Isometric.Cube=function(a,b,c,d,e,f){a=a||0,b=b||0,c=c||0,d=d||0,e=e||0,f=f||0,this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Cube.prototype.constructor=Phaser.Plugin.Isometric.Cube,Phaser.Plugin.Isometric.Cube.prototype={setTo:function(a,b,c,d,e,f){return this.x=a,this.y=b,this.z=c,this.widthX=d,this.widthY=e,this.height=f,this},copyFrom:function(a){this.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.z=this.z,a.widthX=this.widthX,a.widthY=this.widthY,a.height=this.height,a},size:function(a){return Phaser.Plugin.Isometric.Cube.size(this,a)},contains:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},containsXY:function(a,b){return Phaser.Plugin.Isometric.Cube.containsXY(this,a,b)},clone:function(a){return Phaser.Plugin.Isometric.Cube.clone(this,a)},intersects:function(a){return Phaser.Plugin.Isometric.Cube.intersects(this,a)},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners},toString:function(){return"[{Cube (x="+this.x+" y="+this.y+" z="+this.z+" widthX="+this.widthX+" widthY="+this.widthY+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthX",{get:function(){return Math.round(.5*this.widthX)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfWidthY",{get:function(){return Math.round(.5*this.widthY)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"halfHeight",{get:function(){return Math.round(.5*this.height)}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"bottom",{get:function(){return this.z},set:function(a){this.height=a>=this.top?0:this.top-a,this.z=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"top",{get:function(){return this.z+this.height},set:function(a){this.height=a<=this.z?0:a-this.z}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backX",{get:function(){return this.x},set:function(a){this.widthX=a>=this.frontX?0:this.frontX-a,this.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"backY",{get:function(){return this.y},set:function(a){this.widthY=a>=this.frontY?0:this.frontY-a,this.y=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontX",{get:function(){return this.x+this.widthX},set:function(a){this.widthX=a<=this.x?0:a-this.x}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"frontY",{get:function(){return this.y+this.widthY},set:function(a){this.widthY=a<=this.y?0:a-this.y}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"volume",{get:function(){return this.widthX*this.widthY*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerX",{get:function(){return this.x+this.halfWidthX},set:function(a){this.x=a-this.halfWidthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerY",{get:function(){return this.y+this.halfWidthY},set:function(a){this.y=a-this.halfWidthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"centerZ",{get:function(){return this.z+this.halfHeight},set:function(a){this.z=a-this.halfHeight}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomX",{get:function(){return this.x+Math.random()*this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomY",{get:function(){return this.y+Math.random()*this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"randomZ",{get:function(){return this.z+Math.random()*this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Cube.prototype,"empty",{get:function(){return!this.widthX||!this.widthY||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0,0,0)}}),Phaser.Plugin.Isometric.Cube.size=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Point3(a.widthX,a.widthY,a.height):b.setTo(a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.clone=function(a,b){return"undefined"==typeof b||null===b?b=new Phaser.Plugin.Isometric.Cube(a.x,a.y,a.z,a.widthX,a.widthY,a.height):b.setTo(a.x,a.y,a.z,a.widthX,a.widthY,a.height),b},Phaser.Plugin.Isometric.Cube.contains=function(a,b,c,d){return a.widthX<=0||a.widthY<=0||a.height<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY&&d>=a.z&&d<=a.top},Phaser.Plugin.Isometric.Cube.containsXY=function(a,b,c){return a.widthX<=0||a.widthY<=0?!1:b>=a.x&&b<=a.frontX&&c>=a.y&&c<=a.frontY},Phaser.Plugin.Isometric.Cube.containsPoint3=function(a,b){return Phaser.Plugin.Isometric.Cube.contains(a,b.x,b.y,b.z)},Phaser.Plugin.Isometric.Cube.containsCube=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.z>=b.z&&a.frontX<=b.frontX&&a.frontY<=b.frontY&&a.top<=b.top},Phaser.Plugin.Isometric.Cube.intersects=function(a,b){return a.widthX<=0||a.widthY<=0||a.height<=0||b.widthX<=0||b.widthY<=0||b.height<=0?!1:!(a.frontXb.frontX||a.y>b.frontY||a.z>b.top||a.top0&&(this.position.x=Phaser.Math.snapTo(this.position.x,this.snap),this.position.y=Phaser.Math.snapTo(this.position.y,this.snap)),this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0)},Phaser.Plugin.Isometric.IsoSprite.prototype.resetIsoBounds=function(){"undefined"==typeof this._isoBounds&&(this._isoBounds=new Phaser.Plugin.Isometric.Cube);var a=Math.abs(this.scale.x),b=Math.abs(this.scale.y);return this._isoBounds.widthX=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.widthY=Math.round(.5*Math.abs(this.width))*a,this._isoBounds.height=Math.round(Math.abs(this.height)-.5*Math.abs(this.width))*b,this._isoBounds.x=this.isoX+this._isoBounds.widthX*-this.anchor.x+.5*this._isoBounds.widthX,this._isoBounds.y=this.isoY+this._isoBounds.widthY*this.anchor.x-.5*this._isoBounds.widthY,this._isoBounds.z=this.isoZ-Math.abs(this.height)*(1-this.anchor.y)+Math.abs(.5*this.width),this._isoBounds},Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoX",{get:function(){return this._isoPosition.x},set:function(a){this._isoPosition.x=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoY",{get:function(){return this._isoPosition.y},set:function(a){this._isoPosition.y=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoZ",{get:function(){return this._isoPosition.z},set:function(a){this._isoPosition.z=a,this._depthChanged=this._isoPositionChanged=this._isoBoundsChanged=!0}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoPosition",{get:function(){return this._isoPosition}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"isoBounds",{get:function(){return(this._isoBoundsChanged||!this._isoBounds)&&(this.resetIsoBounds(),this._isoBoundsChanged=!1),this._isoBounds}}),Object.defineProperty(Phaser.Plugin.Isometric.IsoSprite.prototype,"depth",{get:function(){return this._depthChanged===!0&&(this._depth=this._isoPosition.x+this._isoPosition.y+1.25*this._isoPosition.z,this._depthChanged=!1),this._depth}}),Phaser.GameObjectCreator.prototype.isoSprite=function(a,b,c,d,e){return new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e)},Phaser.GameObjectFactory.prototype.isoSprite=function(a,b,c,d,e,f){return"undefined"==typeof f&&(f=this.world),f.add(new Phaser.Plugin.Isometric.IsoSprite(this.game,a,b,c,d,e))},Phaser.Plugin.Isometric.prototype.addIsoSprite=function(a,b,c,d,e,f){return Phaser.GameObjectFactory.prototype.isoSprite.call(this.game.add,a,b,c,d,e,f)},Phaser.Utils.Debug.prototype.isoSprite=function(a,b,c){if(a.isoBounds){"undefined"==typeof c&&(c=!0),b=b||"rgba(0,255,0,0.4)";var d=[],e=a.isoBounds.getCorners(),f=-a.game.camera.x,g=-a.game.camera.y;if(this.start(),c){d=[e[1],e[3],e[2],e[6],e[4],e[5],e[1]],d=d.map(function(b){var c=a.game.iso.project(b);return c.x+=f,c.y+=g,c}),this.context.beginPath(),this.context.fillStyle=b,this.context.moveTo(d[0].x,d[0].y);for(var h=1;hthis.maxObjects&&this.levelthis.bounds.top&&(b=4):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=6)):a.x>this.bounds.frontX&&(a.ythis.bounds.top&&(b=5):a.y>this.bounds.frontY&&(a.zthis.bounds.top&&(b=7))),b},retrieve:function(a){var b,c;if(a instanceof Phaser.Plugin.Isometric.Cube)b=this.objects,c=this.getIndex(a);else{if(!a.body)return this._empty;b=this.objects,c=this.getIndex(a.body)}return this.nodes[0]&&(-1!==c?b=b.concat(this.nodes[c].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)),b=b.concat(this.nodes[4].retrieve(a)),b=b.concat(this.nodes[5].retrieve(a)),b=b.concat(this.nodes[6].retrieve(a)),b=b.concat(this.nodes[7].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},Phaser.Plugin.Isometric.Octree.prototype.constructor=Phaser.Plugin.Isometric.Octree,Phaser.Utils.Debug.prototype.octree=function(a,b){b=b||"rgba(255,0,0,0.3)",this.start();var c,d,e=a.bounds;if(0===a.nodes.length){this.context.strokeStyle=b;var f=new Phaser.Plugin.Isometric.Cube(e.x,e.y,e.z,e.widthX,e.widthY,e.height),g=f.getCorners(),h=-this.game.camera.x,i=-this.game.camera.y;for(d=g.slice(0,g.length),d=d.map(function(a){var b=this.game.iso.project(a);return b.x+=h,b.y+=i,b}),this.context.moveTo(d[0].x,d[0].y),this.context.beginPath(),this.context.strokeStyle=b,this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[3].x,d[3].y),this.context.lineTo(d[2].x,d[2].y),this.context.lineTo(d[6].x,d[6].y),this.context.lineTo(d[4].x,d[4].y),this.context.lineTo(d[5].x,d[5].y),this.context.lineTo(d[1].x,d[1].y),this.context.lineTo(d[0].x,d[0].y),this.context.lineTo(d[4].x,d[4].y),this.context.moveTo(d[0].x,d[0].y),this.context.lineTo(d[2].x,d[2].y),this.context.moveTo(d[3].x,d[3].y),this.context.lineTo(d[7].x,d[7].y),this.context.lineTo(d[6].x,d[6].y),this.context.moveTo(d[7].x,d[7].y),this.context.lineTo(d[5].x,d[5].y),this.context.stroke(),this.context.closePath(),c=0;ce&&null!==a.isoSpritesBehind[e];e++)d(a.isoSpritesBehind[e]),a.isoSpritesBehind[e]=null;a[c]=n++}}var e,f;if(a instanceof Phaser.Group)e=a.children,f=!0;else{if(!a.length)return;e=a}c=c||"isoDepth",b="undefined"==typeof b?1.5:b;var g,h,i,j,k,l,m=e.length;for(i=0;m>i;i++){for(g=e[i],l=0,g.isoSpritesBehind||(g.isoSpritesBehind=[]),j=0;m>j;j++)i!=j&&(h=e[j],k=g.body||g.isoBounds,h._isoPosition.x+bi;i++)d(e[i]);f&&a.sort(c)}},Object.defineProperty(Phaser.Plugin.Isometric.Projector.prototype,"projectionAngle",{get:function(){return this._projectionAngle},set:function(a){a!==this._projectionAngle&&(this._projectionAngle=a,this._transform=[Math.cos(this._projectionAngle),Math.sin(this._projectionAngle)])}}),Phaser.Plugin.Isometric.Body=function(a){this.sprite=a,this.game=a.game,this.type=Phaser.Plugin.Isometric.ISOARCADE,this.enable=!0,this.offset=new Phaser.Plugin.Isometric.Point3,this.position=new Phaser.Plugin.Isometric.Point3(a.isoX,a.isoY,a.isoZ),this.prev=new Phaser.Plugin.Isometric.Point3(this.position.x,this.position.y,this.position.z),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.sourceWidthX=a.texture.frame.width,this.sourceWidthY=a.texture.frame.width,this.sourceHeight=a.texture.frame.height,this.widthX=Math.ceil(.5*a.width),this.widthY=Math.ceil(.5*a.width),this.height=a.height-Math.ceil(.5*a.width),this.halfWidthX=Math.abs(.5*this.widthX),this.halfWidthY=Math.abs(.5*this.widthY),this.halfHeight=Math.abs(.5*this.height),this.center=new Phaser.Plugin.Isometric.Point3(a.isoX+this.halfWidthX,a.isoY+this.halfWidthY,a.isoZ+this.halfHeight),this.velocity=new Phaser.Plugin.Isometric.Point3,this.newVelocity=new Phaser.Plugin.Isometric.Point3,this.deltaMax=new Phaser.Plugin.Isometric.Point3,this.acceleration=new Phaser.Plugin.Isometric.Point3,this.drag=new Phaser.Plugin.Isometric.Point3,this.allowGravity=!0,this.gravity=new Phaser.Plugin.Isometric.Point3,this.bounce=new Phaser.Plugin.Isometric.Point3,this.maxVelocity=new Phaser.Plugin.Isometric.Point3(1e4,1e4,1e4),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=Phaser.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.customSeparateZ=!1,this.overlapX=0,this.overlapY=0,this.overlapZ=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,frontX:!0,frontY:!0,backX:!0,backY:!0},this.touching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.wasTouching={none:!0,up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.blocked={up:!1,down:!1,frontX:!1,frontY:!1,backX:!1,backY:!1},this.phase=0,this.skipTree=!1,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0,this._dz=0,this._corners=[new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x,this.y+this.widthY,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y,this.z+this.height),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z),new Phaser.Plugin.Isometric.Point3(this.x+this.widthX,this.y+this.widthY,this.z+this.height)]},Phaser.Plugin.Isometric.Body.prototype={updateBounds:function(){var a=Math.abs(this.sprite.scale.x),b=Math.abs(this.sprite.scale.y);(a!==this._sx||b!==this._sy)&&(this.widthX=Math.ceil(.5*this.sprite.width),this.widthY=Math.ceil(.5*this.sprite.width),this.height=Math.ceil(this.sprite.height-.5*this.sprite.width),this.halfWidthX=Math.floor(2*this.widthX),this.halfWidthY=Math.floor(2*this.widthY),this.halfHeight=Math.floor(2*this.height),this._sx=a,this._sy=b,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this._reset=!0)},preUpdate:function(){this.enable&&(this.phase=1,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.backX=this.touching.backX,this.wasTouching.backY=this.touching.backY,this.wasTouching.frontX=this.touching.frontX,this.wasTouching.frontY=this.touching.frontY,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.backX=!1,this.touching.backY=!1,this.touching.frontX=!1,this.touching.frontY=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.backX=!1,this.blocked.frontX=!1,this.blocked.backY=!1,this.blocked.backX=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.isoX+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=this.sprite.isoY+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=this.sprite.isoZ-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh===!0)&&(this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z),this.moves&&(this.game.physics.isoArcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed,this.velocity.z*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.z+=this.newVelocity.z,(this.position.x!==this.prev.x||this.position.y!==this.prev.y||this.position.z!==this.prev.z)&&(this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y+this.velocity.z*this.velocity.z),this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),this._reset=!1)},postUpdate:function(){this.enable&&2!==this.phase&&(this.phase=2,this.deltaX()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDX:this.deltaX()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDX),this.deltaY()<0?this.facing=Phaser.Plugin.Isometric.BACKWARDY:this.deltaY()>0&&(this.facing=Phaser.Plugin.Isometric.FORWARDY),this.deltaZ()<0?this.facing=Phaser.Plugin.Isometric.DOWN:this.deltaZ()>0&&(this.facing=Phaser.Plugin.Isometric.UP),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),this._dz=this.deltaZ(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),0!==this.deltaMax.z&&0!==this._dz&&(this._dz<0&&this._dz<-this.deltaMax.z?this._dz=-this.deltaMax.z:this._dz>0&&this._dz>this.deltaMax.z&&(this._dz=this.deltaMax.z)),this.sprite.isoX+=this._dx,this.sprite.isoY+=this._dy,this.sprite.isoZ+=this._dz),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaR()),this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z)},destroy:function(){this.sprite=null},checkWorldBounds:function(){this.position.xthis.game.physics.isoArcade.bounds.frontX&&this.game.physics.isoArcade.checkCollision.frontX&&(this.position.x=this.game.physics.isoArcade.bounds.frontX-this.widthX,this.velocity.x*=-this.bounce.x,this.blocked.frontX=!0),this.position.ythis.game.physics.isoArcade.bounds.frontY&&this.game.physics.isoArcade.checkCollision.frontY&&(this.position.y=this.game.physics.isoArcade.bounds.frontY-this.widthY,this.velocity.y*=-this.bounce.y,this.blocked.frontY=!0),this.position.zthis.game.physics.isoArcade.bounds.top&&this.game.physics.isoArcade.checkCollision.up&&(this.position.z=this.game.physics.isoArcade.bounds.top-this.height,this.velocity.z*=-this.bounce.z,this.blocked.up=!0)},setSize:function(a,b,c,d,e,f){"undefined"==typeof d&&(d=this.offset.x),"undefined"==typeof e&&(e=this.offset.y),"undefined"==typeof f&&(f=this.offset.z),this.sourceWidthX=a,this.sourceWidthY=b,this.sourceHeight=c,this.widthX=this.sourceWidthX*this._sx,this.widthY=this.sourceWidthY*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidthX=Math.floor(.5*this.widthX),this.halfWidthY=Math.floor(.5*this.widthY),this.halfHeight=Math.floor(.5*this.height),this.offset.setTo(d,e,f),this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight)},reset:function(a,b,c){this.velocity.set(0),this.acceleration.set(0),this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a+(this.widthX*-this.sprite.anchor.x+.5*this.widthX)+this.offset.x,this.position.y=b+(this.widthY*this.sprite.anchor.x-.5*this.widthY)+this.offset.y,this.position.z=c-Math.abs(this.sprite.height)*(1-this.sprite.anchor.y)+Math.abs(.5*this.sprite.width)+this.offset.z,this.prev.x=this.position.x,this.prev.y=this.position.y,this.prev.z=this.position.z,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidthX,this.position.y+this.halfWidthY,this.position.z+this.halfHeight),this.sprite._isoPositionChanged=!0},hitTest:function(a,b,c){return Phaser.Plugin.Isometric.Cube.contains(this,a,b,c)},onFloor:function(){return this.blocked.down},onWall:function(){return this.blocked.frontX||this.blocked.frontY||this.blocked.backX||this.blocked.backY},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaAbsZ:function(){return this.deltaZ()>0?this.deltaZ():-this.deltaZ()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.position.z-this.prev.z},deltaR:function(){return this.rotation-this.preRotation},getCorners:function(){return this._corners[0].setTo(this.x,this.y,this.z),this._corners[1].setTo(this.x,this.y,this.z+this.height),this._corners[2].setTo(this.x,this.y+this.widthY,this.z),this._corners[3].setTo(this.x,this.y+this.widthY,this.z+this.height),this._corners[4].setTo(this.x+this.widthX,this.y,this.z),this._corners[5].setTo(this.x+this.widthX,this.y,this.z+this.height),this._corners[6].setTo(this.x+this.widthX,this.y+this.widthY,this.z),this._corners[7].setTo(this.x+this.widthX,this.y+this.widthY,this.z+this.height),this._corners}},Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"top",{get:function(){return this.position.z+this.height}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontX",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"right",{get:function(){return this.position.x+this.widthX}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"frontY",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"bottom",{get:function(){return this.position.y+this.widthY}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}), +Object.defineProperty(Phaser.Plugin.Isometric.Body.prototype,"z",{get:function(){return this.position.z},set:function(a){this.position.z=a}}),Phaser.Plugin.Isometric.Body.render=function(a,b,c,d){"undefined"==typeof d&&(d=!0),c=c||"rgba(0,255,0,0.4)";var e=[],f=b.getCorners(),g=-b.sprite.game.camera.x,h=-b.sprite.game.camera.y;if(d){e=[f[1],f[3],f[2],f[6],f[4],f[5],f[1]],e=e.map(function(a){var c=b.sprite.game.iso.project(a);return c.x+=g,c.y+=h,c}),a.beginPath(),a.fillStyle=c,a.moveTo(e[0].x,e[0].y);for(var i=1;i0&&this.enable(a[c],!0));else a instanceof Phaser.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new Phaser.Plugin.Isometric.Body(a))},updateMotion:function(a){this._velocityDelta=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity,a.angularVelocity+=this._velocityDelta,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y),a.velocity.z=this.computeVelocity(3,a,a.velocity.z,a.acceleration.z,a.drag.z,a.maxVelocity.z)},computeVelocity:function(a,b,c,d,e,f){return f=f||1e4,1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity?c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed:3===a&&b.allowGravity&&(c+=(this.gravity.z+b.gravity.z)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(this._drag=e*this.game.time.physicsElapsed,c-this._drag>0?c-=this._drag:c+this._drag<0?c+=this._drag:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!0);else this.collideHandler(a,b,c,d,e,!0);return this._total>0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._result=!1,this._total=0,Array.isArray(b))for(var f=0,g=b.length;g>f;f++)this.collideHandler(a,b[f],c,d,e,!1);else this.collideHandler(a,b,c,d,e,!1);return this._total>0},collideHandler:function(a,b,c,d,e,f){return b||a.type!==Phaser.GROUP?void(a&&b&&a.exists&&b.exists&&(a.type===Phaser.Plugin.Isometric.ISOSPRITE?b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsSprite(a,b,c,d,e,f):b.type===Phaser.GROUP&&this.collideSpriteVsGroup(a,b,c,d,e,f):a.type===Phaser.GROUP&&(b.type===Phaser.Plugin.Isometric.ISOSPRITE?this.collideSpriteVsGroup(b,a,c,d,e,f):b.type===Phaser.GROUP&&this.collideGroupVsGroup(a,b,c,d,e,f)))):void this.collideGroupVsSelf(a,c,d,e,f)},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,c,d,e,f){var g,h;if(0!==b.length&&a.body)if(a.body.skipTree||this.skipTree)for(g=0,h=b.children.length;h>g;g++)b.children[g]&&b.children[g].exists&&this.collideSpriteVsSprite(a,b.children[g],c,d,e,f);else for(this.useQuadTree?(this.quadTree.clear(),this.quadTree.reset(this.bounds.x,this.bounds.y,this.bounds.widthX,this.bounds.widthY,this.maxObjects,this.maxLevels),this.quadTree.populate(b),this._potentials=this.quadTree.retrieve(a)):(this.octree.clear(),this.octree.reset(this.bounds.x,this.bounds.y,this.bounds.z,this.bounds.widthX,this.bounds.widthY,this.bounds.height,this.maxObjects,this.maxLevels),this.octree.populate(b),this._potentials=this.octree.retrieve(a)),g=0,h=this._potentials.length;h>g;g++)this.separate(a.body,this._potentials[g],d,e,f)&&(c&&c.call(e,a,this._potentials[g].sprite),this._total++)},collideGroupVsSelf:function(a,b,c,d,e){if(0!==a.length)for(var f=a.children.length,g=0;f>g;g++)for(var h=g+1;f>=h;h++)a.children[g]&&a.children[h]&&a.children[g].exists&&a.children[h].exists&&this.collideSpriteVsSprite(a.children[g],a.children[h],b,c,d,e)},collideGroupVsGroup:function(a,b,c,d,e,f){if(0!==a.length&&0!==b.length)for(var g=0,h=a.children.length;h>g;g++)a.children[g].exists&&this.collideSpriteVsGroup(a.children[g],b,c,d,e,f)},separate:function(a,b,c,d,e){return a.enable&&b.enable&&this.intersects(a,b)?c&&c.call(d,a.sprite,b.sprite)===!1?!1:e?!0:(this._result=this.forceXY||Math.abs(this.gravity.z+a.gravity.z)=b.frontX?!1:a.y>=b.frontY?!1:a.top<=b.z?!1:a.z>=b.top?!1:!0},separateX:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS,0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(this._overlap=a.frontX-b.x,this._overlap>this._maxOverlap||a.checkCollision.frontX===!1||b.checkCollision.backX===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontX=!0,b.touching.none=!1,b.touching.backX=!0)):a.deltaX()this._maxOverlap||a.checkCollision.backX===!1||b.checkCollision.frontX===!1?this._overlap=0:(a.touching.none=!1,a.touching.backX=!0,b.touching.none=!1,b.touching.frontX=!0)),0!==this._overlap)?(a.overlapX=this._overlap,b.overlapX=this._overlap,c||a.customSeparateX||b.customSeparateX?!0:(this._velocity1=a.velocity.x,this._velocity2=b.velocity.x,a.immovable||b.immovable?a.immovable?b.immovable||(b.x+=this._overlap,b.velocity.x=this._velocity1-this._velocity2*b.bounce.x):(a.x=a.x-this._overlap,a.velocity.x=this._velocity2-this._velocity1*a.bounce.x):(this._overlap*=.5,a.x=a.x-this._overlap,b.x+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.x=this._average+this._newVelocity1*a.bounce.x,b.velocity.x=this._average+this._newVelocity2*b.bounce.x),!0)):!1)},separateY:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS,0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(this._overlap=a.frontY-b.y,this._overlap>this._maxOverlap||a.checkCollision.frontY===!1||b.checkCollision.backY===!1?this._overlap=0:(a.touching.none=!1,a.touching.frontY=!0,b.touching.none=!1,b.touching.backY=!0)):a.deltaY()this._maxOverlap||a.checkCollision.backY===!1||b.checkCollision.frontY===!1?this._overlap=0:(a.touching.none=!1,a.touching.backY=!0,b.touching.none=!1,b.touching.frontY=!0)),0!==this._overlap)?(a.overlapY=this._overlap,b.overlapY=this._overlap,c||a.customSeparateY||b.customSeparateY?!0:(this._velocity1=a.velocity.y,this._velocity2=b.velocity.y,a.immovable||b.immovable?a.immovable?b.immovable||(b.y+=this._overlap,b.velocity.y=this._velocity1-this._velocity2*b.bounce.y):(a.y=a.y-this._overlap,a.velocity.y=this._velocity2-this._velocity1*a.bounce.y):(this._overlap*=.5,a.y=a.y-this._overlap,b.y+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.y=this._average+this._newVelocity1*a.bounce.y,b.velocity.y=this._average+this._newVelocity2*b.bounce.y),!0)):!1)},separateZ:function(a,b,c){return a.immovable&&b.immovable?!1:(this._overlap=0,this.intersects(a,b)&&(this._maxOverlap=a.deltaAbsZ()+b.deltaAbsZ()+this.OVERLAP_BIAS,0===a.deltaZ()&&0===b.deltaZ()?(a.embedded=!0,b.embedded=!0):a.deltaZ()>b.deltaZ()?(this._overlap=a.top-b.z,this._overlap>this._maxOverlap||a.checkCollision.down===!1||b.checkCollision.up===!1?this._overlap=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaZ()this._maxOverlap||a.checkCollision.up===!1||b.checkCollision.down===!1?this._overlap=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),0!==this._overlap)?(a.overlapZ=this._overlap,b.overlapZ=this._overlap,c||a.customSeparateY||b.customSeparateZ?!0:(this._velocity1=a.velocity.z,this._velocity2=b.velocity.z,a.immovable||b.immovable?a.immovable?b.immovable||(b.z+=this._overlap,b.velocity.z=this._velocity1-this._velocity2*b.bounce.z,a.moves&&(b.x+=a.x-a.prev.x,a.y+=b.y-b.prev.y)):(a.z=a.z-this._overlap,a.velocity.z=this._velocity2-this._velocity1*a.bounce.z,b.moves&&(a.x+=b.x-b.prev.x,a.y+=b.y-b.prev.y)):(this._overlap*=.5,a.z=a.z-this._overlap,b.z+=this._overlap,this._newVelocity1=Math.sqrt(this._velocity2*this._velocity2*b.mass/a.mass)*(this._velocity2>0?1:-1),this._newVelocity2=Math.sqrt(this._velocity1*this._velocity1*a.mass/b.mass)*(this._velocity1>0?1:-1),this._average=.5*(this._newVelocity1+this._newVelocity2),this._newVelocity1-=this._average,this._newVelocity2-=this._average,a.velocity.z=this._average+this._newVelocity1*a.bounce.z,b.velocity.z=this._average+this._newVelocity2*b.bounce.z),!0)):!1)},distanceBetween:function(a,b){return this._dx=a.x-b.x,this._dy=a.y-b.y,this._dz=a.z-b.z,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)},distanceToXY:function(a,b,c){return this._dx=a.x-b,this._dy=a.y-c,Math.sqrt(this._dx*this._dx+this._dy*this._dy)},distanceToXYZ:function(a,b,c,d){return this._dx=a.x-b,this._dy=a.y-c,this._dz=a.y-d,Math.sqrt(this._dx*this._dx+this._dy*this._dy+this._dz*this._dz)}},Phaser.Physics.prototype.isoArcade=null,Phaser.Physics.prototype.parseConfig=function(a){return function(){return this.config.hasOwnProperty("isoArcade")&&this.config.isoArcade===!0&&Phaser.Plugin.Isometric.hasOwnProperty("IsoArcade")&&(this.isoArcade=new Phaser.Plugin.Isometric(this.game,this.config)),a.call(this)}}(Phaser.Physics.prototype.parseConfig),Phaser.Physics.prototype.startSystem=function(a){return function(b){return b===Phaser.Plugin.Isometric.ISOARCADE&&null===this.isoArcade&&(this.isoArcade=new Phaser.Plugin.Isometric.Arcade(this.game),this.setBoundsToWorld()),a.call(this,b)}}(Phaser.Physics.prototype.startSystem),Phaser.Physics.prototype.enable=function(a){return function(b,c){return c===Phaser.Plugin.Isometric.ISOARCADE&&this.isoArcade&&this.isoArcade.enable(b),a.call(this,b,c)}}(Phaser.Physics.prototype.enable),Phaser.Physics.prototype.setBoundsToWorld=function(a){return function(){return this.isoArcade&&this.isoArcade.setBoundsToWorld(),a.call(this)}}(Phaser.Physics.prototype.setBoundsToWorld),Phaser.Physics.prototype.destroy=function(a){return function(){return this.isoArcade=null,a.call(this)}}(Phaser.Physics.prototype.destroy); \ No newline at end of file From 8f71b61315ddc0734fc18151c91a36b9c46b14c7 Mon Sep 17 00:00:00 2001 From: Lewis Lane Date: Thu, 2 Apr 2015 16:37:01 +0100 Subject: [PATCH 11/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2bf0c2b..d76612d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ Fork changelog ============== +[02.04.2015] - Fix for Phaser 2.3 courtesy of @mfpierre [14.10.2014] - Added Typescript Support From 545f801ead6c31f778daea210a4b214c49b75d8d Mon Sep 17 00:00:00 2001 From: Lewis Lane Date: Thu, 2 Apr 2015 16:37:14 +0100 Subject: [PATCH 12/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d76612d..f85fb78 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ Fork changelog ============== [02.04.2015] - Fix for Phaser 2.3 courtesy of @mfpierre + [14.10.2014] - Added Typescript Support From 499e8fb87a495cac7c507e2520fa26c9a11306b0 Mon Sep 17 00:00:00 2001 From: Lewis Lane Date: Thu, 2 Apr 2015 16:38:56 +0100 Subject: [PATCH 13/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f85fb78..a8453c1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Fork changelog ============== -[02.04.2015] - Fix for Phaser 2.3 courtesy of @mfpierre +[02.04.2015] - Fix for Phaser 2.3 courtesy of @[mfpierre](https://github.com/mfpierre) [14.10.2014] - Added Typescript Support