From 00bf349ff5a5181add4ebb4b37731dc62895f668 Mon Sep 17 00:00:00 2001 From: Phaiax Date: Mon, 30 Jun 2014 12:49:53 +0200 Subject: [PATCH] Body.enable only exists in Arcade physics, so move conditions concerning this into arcarde --- src/gameobjects/Sprite.js | 16 ++++++++-------- src/gameobjects/TileSprite.js | 12 ++++++------ src/physics/arcade/Body.js | 12 +++++++++++- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/gameobjects/Sprite.js b/src/gameobjects/Sprite.js index 4238fa4ce..befe50e4b 100644 --- a/src/gameobjects/Sprite.js +++ b/src/gameobjects/Sprite.js @@ -155,7 +155,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { /** * A small internal cache: - * + * * 0 = previous position.x * 1 = previous position.y * 2 = previous rotation @@ -209,7 +209,7 @@ Phaser.Sprite.prototype.preUpdate = function() { this._cache[1] = this.world.y; this._cache[2] = this.rotation; - if (this.body && this.body.enable) + if (this.body) { this.body.preUpdate(); } @@ -284,7 +284,7 @@ Phaser.Sprite.prototype.preUpdate = function() { this.animations.update(); - if (this.body && this.body.enable) + if (this.body) { this.body.preUpdate(); } @@ -323,7 +323,7 @@ Phaser.Sprite.prototype.postUpdate = function() { this.key.render(); } - if (this.exists && this.body && this.body.enable) + if (this.exists && this.body) { this.body.postUpdate(); } @@ -355,7 +355,7 @@ Phaser.Sprite.prototype.postUpdate = function() { Phaser.Sprite.prototype.loadTexture = function (key, frame) { frame = frame || 0; - + this.key = key; if (key instanceof Phaser.RenderTexture) @@ -531,10 +531,10 @@ Phaser.Sprite.prototype.updateCrop = function() { /** * Crop allows you to crop the texture used to display this Sprite. * This modifies the core Sprite texture frame, so the Sprite width/height properties will adjust accordingly. -* +* * Cropping takes place from the top-left of the Sprite and can be modified in real-time by either providing an updated rectangle object to Sprite.crop, * or by modifying Sprite.cropRect (or a reference to it) and then calling Sprite.updateCrop. -* +* * The rectangle object given to this method can be either a Phaser.Rectangle or any object so long as it has public x, y, width and height properties. * A reference to the rectangle is stored in Sprite.cropRect unless the `copy` parameter is `true` in which case the values are duplicated to a local object. * @@ -809,7 +809,7 @@ Phaser.Sprite.prototype.play = function (name, frameRate, loop, killOnComplete) * Checks to see if the bounds of this Sprite overlaps with the bounds of the given Display Object, which can be a Sprite, Image, TileSprite or anything that extends those such as a Button. * This check ignores the Sprites hitArea property and runs a Sprite.getBounds comparison on both objects to determine the result. * Therefore it's relatively expensive to use in large quantities (i.e. with lots of Sprites at a high frequency), but should be fine for low-volume testing where physics isn't required. -* +* * @method Phaser.Sprite#overlap * @memberof Phaser.Sprite * @param {Phaser.Sprite|Phaser.Image|Phaser.TileSprite|Phaser.Button|PIXI.DisplayObject} displayObject - The display object to check against. diff --git a/src/gameobjects/TileSprite.js b/src/gameobjects/TileSprite.js index ad272673b..64bfdeeeb 100644 --- a/src/gameobjects/TileSprite.js +++ b/src/gameobjects/TileSprite.js @@ -173,7 +173,7 @@ Phaser.TileSprite.prototype.preUpdate = function() { this._cache[1] = this.world.y; this._cache[2] = this.rotation; - if (this.body && this.body.enable) + if (this.body) { this.body.preUpdate(); } @@ -241,7 +241,7 @@ Phaser.TileSprite.prototype.preUpdate = function() { this.tilePosition.y += this._scroll.y * this.game.time.physicsElapsed; } - if (this.body && this.body.enable) + if (this.body) { this.body.preUpdate(); } @@ -274,7 +274,7 @@ Phaser.TileSprite.prototype.update = function() { */ Phaser.TileSprite.prototype.postUpdate = function() { - if (this.exists && this.body && this.body.enable) + if (this.exists && this.body) { this.body.postUpdate(); } @@ -333,7 +333,7 @@ Phaser.TileSprite.prototype.stopScroll = function() { Phaser.TileSprite.prototype.loadTexture = function (key, frame) { frame = frame || 0; - + this.key = key; if (key instanceof Phaser.RenderTexture) @@ -496,7 +496,7 @@ Phaser.TileSprite.prototype.play = function (name, frameRate, loop, killOnComple * Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then * sets alive, exists, visible and renderable all to true. Also resets the outOfBounds state. * If the TileSprite has a physics body that too is reset. -* +* * @method Phaser.TileSprite#reset * @memberof Phaser.TileSprite * @param {number} x - The x coordinate (in world space) to position the Sprite at. @@ -525,7 +525,7 @@ Phaser.TileSprite.prototype.reset = function(x, y) { this._cache[4] = 1; return this; - + }; /** diff --git a/src/physics/arcade/Body.js b/src/physics/arcade/Body.js index c7505056e..20ed335fd 100644 --- a/src/physics/arcade/Body.js +++ b/src/physics/arcade/Body.js @@ -365,6 +365,11 @@ Phaser.Physics.Arcade.Body.prototype = { */ preUpdate: function () { + if (!this.enable) + { + return; + } + this.phase = 1; // Store and reset collision flags @@ -440,6 +445,11 @@ Phaser.Physics.Arcade.Body.prototype = { */ postUpdate: function () { + if (!this.enable) + { + return; + } + // Only allow postUpdate to be called once per frame if (this.phase === 2) { @@ -612,7 +622,7 @@ Phaser.Physics.Arcade.Body.prototype = { this._sx = this.sprite.scale.x; this._sy = this.sprite.scale.y; - + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); },