diff --git a/README.md b/README.md index 5b7ad409..c66f71d2 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,8 @@ Updates: * Tweens fire an onLoop event if they are set to repeat. onComplete is now only fired for the final repeat (or never if the repeat is infinite) * Pointer used to un-pause a paused game every time it was clicked/touched (this avoided some rogue browser plugins). Now only happens if Stage.disableVisibilityChange is true. * Input doesn't set the cursor to default if it's already set to none. +* You can now collide a group against itself, to have all children collide, and bodies won't check against themselves (thanks cocoademon) +* RenderTexture.render / renderXY has a new parameter: renderHidden, a boolean which will allow you to render Sprites even if their visible is set to false. Bug Fixes: diff --git a/examples/display/render texture mirror.js b/examples/display/render texture mirror.js index 9517924c..b8331c86 100644 --- a/examples/display/render texture mirror.js +++ b/examples/display/render texture mirror.js @@ -27,9 +27,11 @@ function create() { function update() { - // This time we'll draw the ball sprite twice, in a mirror effect - - texture.renderXY(ball, game.input.activePointer.x, game.input.activePointer.y, false); - texture.renderXY(ball, game.input.activePointer.x, 600 - game.input.activePointer.y, false); + if (!game.input.activePointer.position.isZero()) + { + // This time we'll draw the ball sprite twice, in a mirror effect + texture.renderXY(ball, game.input.activePointer.x, game.input.activePointer.y, false, true); + texture.renderXY(ball, game.input.activePointer.x, 600 - game.input.activePointer.y, false, true); + } } diff --git a/examples/display/render texture starfield.js b/examples/display/render texture starfield.js index 43ab5186..5ee2172b 100644 --- a/examples/display/render texture starfield.js +++ b/examples/display/render texture starfield.js @@ -69,12 +69,12 @@ function update() { if (i == 0 || i == 100 || i == 200) { // If it's the first star of the layer then we clear the texture - stars[i].texture.renderXY(star, stars[i].x, stars[i].y, true); + stars[i].texture.renderXY(star, stars[i].x, stars[i].y, true, true); } else { // Otherwise just draw the star sprite where we need it - stars[i].texture.renderXY(star, stars[i].x, stars[i].y, false); + stars[i].texture.renderXY(star, stars[i].x, stars[i].y, false, true); } } diff --git a/examples/display/render texture trail.js b/examples/display/render texture trail.js index b0c114f8..99b25dba 100644 --- a/examples/display/render texture trail.js +++ b/examples/display/render texture trail.js @@ -27,8 +27,12 @@ function create() { function update() { - // Here we draw the mushroom sprite to the renderTexture at the pointer coordinates. - // The 'false' parameter at the end tells it not to clear itself, causing the trail effect you see. - texture.render(mushroom, game.input.activePointer.position, false); + if (!game.input.activePointer.position.isZero()) + { + // Here we draw the mushroom sprite to the renderTexture at the pointer coordinates. + // The 'false' parameter 2nd from the end tells it not to clear itself, causing the trail effect you see. + // The final 'true' parameter tells it to render sprites even with visible false set. + texture.render(mushroom, game.input.activePointer.position, false, true); + } } diff --git a/src/PixiPatch.js b/src/PixiPatch.js index 2ad64c51..384cae75 100644 --- a/src/PixiPatch.js +++ b/src/PixiPatch.js @@ -24,7 +24,7 @@ PIXI.CanvasRenderer.prototype.render = function(stage) this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.clearRect(0, 0, this.width, this.height) - this.renderDisplayObject(stage); + this.renderDisplayObject(stage, false); // Remove frame updates if (PIXI.Texture.frameUpdates.length > 0) @@ -34,7 +34,9 @@ PIXI.CanvasRenderer.prototype.render = function(stage) } -PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject) +// @param {boolean} [renderHidden=false] - If true displayObjects that have their visible property set to false will still be rendered. + +PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject, renderHidden) { // Once the display object hits this we can break the loop var testObject = displayObject.last._iNext; @@ -44,7 +46,7 @@ PIXI.CanvasRenderer.prototype.renderDisplayObject = function(displayObject) { //transform = displayObject.worldTransform; - if (!displayObject.visible) + if (!displayObject.visible && !renderHidden) { displayObject = displayObject.last._iNext; continue; diff --git a/src/animation/Animation.js b/src/animation/Animation.js index d3c545bb..0e11dd43 100644 --- a/src/animation/Animation.js +++ b/src/animation/Animation.js @@ -43,7 +43,7 @@ Phaser.Animation = function (game, parent, name, frameData, frames, delay, loope this.name = name; /** - * @property {object} _frames + * @property {array} _frames * @private */ this._frames = []; @@ -60,7 +60,8 @@ Phaser.Animation = function (game, parent, name, frameData, frames, delay, loope this.looped = looped; /** - * @property {boolean} looped - The loop state of the Animation. + * @property {boolean} killOnComplete - Should the parent of this Animation be killed when the animation completes? + * @default */ this.killOnComplete = false; diff --git a/src/gameobjects/RenderTexture.js b/src/gameobjects/RenderTexture.js index 9d43a85f..3edd5d9c 100644 --- a/src/gameobjects/RenderTexture.js +++ b/src/gameobjects/RenderTexture.js @@ -71,16 +71,19 @@ Phaser.RenderTexture.prototype.constructor = PIXI.RenderTexture; /** * This function will draw the display object to the texture. If the display object is a Group or has children it will * draw all children as well. -* -* @method render +* +* @method Phaser.RenderTexture#render +* @memberof Phaser.RenderTexture * @param {DisplayObject} displayObject - The display object to render this texture on. * @param {Phaser.Point} [position] - Where to draw the display object. * @param {boolean} [clear=false] - If true the texture will be cleared before the displayObject is drawn. +* @param {boolean} [renderHidden=false] - If true displayObjects that have their visible property set to false will still be rendered. */ -Phaser.RenderTexture.prototype.render = function(displayObject, position, clear) { +Phaser.RenderTexture.prototype.render = function(displayObject, position, clear, renderHidden) { if (typeof position === 'undefined') { position = false; } if (typeof clear === 'undefined') { clear = false; } + if (typeof renderHidden === 'undefined') { renderHidden = false; } if (displayObject instanceof Phaser.Group) { @@ -89,11 +92,11 @@ Phaser.RenderTexture.prototype.render = function(displayObject, position, clear) if (PIXI.gl) { - this.renderWebGL(displayObject, position, clear); + this.renderWebGL(displayObject, position, clear, renderHidden); } else { - this.renderCanvas(displayObject, position, clear); + this.renderCanvas(displayObject, position, clear, renderHidden); } } @@ -102,29 +105,32 @@ Phaser.RenderTexture.prototype.render = function(displayObject, position, clear) * This function will draw the display object to the texture at the given x/y coordinates. * If the display object is a Group or has children it will draw all children as well. * -* @method renderXY +* @method Phaser.RenderTexture#renderXY +* @memberof Phaser.RenderTexture * @param {DisplayObject} displayObject - The display object to render this texture on. * @param {number} x - The x coordinate to draw the display object at. * @param {number} y - The y coordinate to draw the display object at. * @param {boolean} [clear=false] - If true the texture will be cleared before the displayObject is drawn. +* @param {boolean} [renderHidden=false] - If true displayObjects that have their visible property set to false will still be rendered. */ -Phaser.RenderTexture.prototype.renderXY = function(displayObject, x, y, clear) { +Phaser.RenderTexture.prototype.renderXY = function(displayObject, x, y, clear, renderHidden) { this._tempPoint.x = x; this._tempPoint.y = y; - this.render(displayObject, this._tempPoint, clear); + this.render(displayObject, this._tempPoint, clear, renderHidden); } /** - * Initializes the webgl data for this texture - * - * @method initWebGL - * @private - */ -Phaser.RenderTexture.prototype.initWebGL = function() -{ +* Initializes the webgl data for this texture +* +* @method Phaser.RenderTexture#initWebGL +* @memberof Phaser.RenderTexture +* @private +*/ +Phaser.RenderTexture.prototype.initWebGL = function() { + var gl = PIXI.gl; this.glFramebuffer = gl.createFramebuffer(); @@ -160,7 +166,12 @@ Phaser.RenderTexture.prototype.initWebGL = function() // this.render = this.renderWebGL; } - +/** +* Resizes the RenderTexture. +* +* @method Phaser.RenderTexture#resize +* @memberof Phaser.RenderTexture +*/ Phaser.RenderTexture.prototype.resize = function(width, height) { @@ -186,11 +197,12 @@ Phaser.RenderTexture.prototype.resize = function(width, height) } /** - * Initializes the canvas data for this texture - * - * @method initCanvas - * @private - */ +* Initializes the canvas data for this texture +* +* @method Phaser.RenderTexture#initCanvas +* @memberof Phaser.RenderTexture +* @private +*/ Phaser.RenderTexture.prototype.initCanvas = function() { this.renderer = new PIXI.CanvasRenderer(this.width, this.height, null, 0); @@ -202,14 +214,17 @@ Phaser.RenderTexture.prototype.initCanvas = function() } /** - * This function will draw the display object to the texture. - * - * @method renderWebGL - * @param displayObject {DisplayObject} The display object to render this texture on - * @param clear {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -Phaser.RenderTexture.prototype.renderWebGL = function(displayObject, position, clear) +* This function will draw the display object to the texture. +* +* @method Phaser.RenderTexture#renderWebGL +* @memberof Phaser.RenderTexture +* @private +* @param {DisplayObject} displayObject - The display object to render this texture on. +* @param {Phaser.Point} [position] - Where to draw the display object. +* @param {boolean} [clear=false] - If true the texture will be cleared before the displayObject is drawn. +* @param {boolean} [renderHidden=false] - If true displayObjects that have their visible property set to false will still be rendered. +*/ +Phaser.RenderTexture.prototype.renderWebGL = function(displayObject, position, clear, renderHidden) { var gl = PIXI.gl; @@ -280,12 +295,15 @@ Phaser.RenderTexture.prototype.renderWebGL = function(displayObject, position, c /** * This function will draw the display object to the texture. * - * @method renderCanvas - * @param displayObject {DisplayObject} The display object to render this texture on - * @param clear {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -Phaser.RenderTexture.prototype.renderCanvas = function(displayObject, position, clear) +* @method Phaser.RenderTexture#renderCanvas +* @memberof Phaser.RenderTexture +* @private +* @param {DisplayObject} displayObject - The display object to render this texture on. +* @param {Phaser.Point} [position] - Where to draw the display object. +* @param {boolean} [clear=false] - If true the texture will be cleared before the displayObject is drawn. +* @param {boolean} [renderHidden=false] - If true displayObjects that have their visible property set to false will still be rendered. +*/ +Phaser.RenderTexture.prototype.renderCanvas = function(displayObject, position, clear, renderHidden) { var children = displayObject.children; @@ -307,9 +325,8 @@ Phaser.RenderTexture.prototype.renderCanvas = function(displayObject, position, this.renderer.context.clearRect(0, 0, this.width, this.height); } - this.renderer.renderDisplayObject(displayObject); + this.renderer.renderDisplayObject(displayObject, renderHidden); this.renderer.context.setTransform(1, 0, 0, 1, 0, 0); - // PIXI.texturesToUpdate.push(this.baseTexture); } diff --git a/src/input/Mouse.js b/src/input/Mouse.js index 812c35b9..d8f54100 100644 --- a/src/input/Mouse.js +++ b/src/input/Mouse.js @@ -68,7 +68,8 @@ Phaser.Mouse = function (game) { this.pointerLock = new Phaser.Signal(); /** - * @property {MouseEvent} event - The browser mouse event. + * @property {MouseEvent} event - The browser mouse DOM event. Will be set to null if no mouse event has ever been received. + * @default */ this.event = null; diff --git a/src/input/Touch.js b/src/input/Touch.js index 65c59e8b..ff7e29d8 100644 --- a/src/input/Touch.js +++ b/src/input/Touch.js @@ -67,7 +67,8 @@ Phaser.Touch = function (game) { this.preventDefault = true; /** - * @property {TouchEvent} event - The browser touch event. + * @property {TouchEvent} event - The browser touch DOM event. Will be set to null if no touch event has ever been received. + * @default */ this.event = null;