diff --git a/GruntFile.js b/GruntFile.js
index d48f7e066..ae8e8ff80 100644
--- a/GruntFile.js
+++ b/GruntFile.js
@@ -51,15 +51,23 @@ module.exports = function (grunt) {
comments: true
}
},
- fx: {
- src: ['SpecialFX/**/*.ts'],
- dest: 'build/phaser-fx.js',
- options: {
- target: 'ES5',
- declaration: true,
- comments: true
- }
- }
+ //tests: {
+ // src: ['Tests/**/*.ts'],
+ // options: {
+ // target: 'ES5',
+ // declaration: true,
+ // comments: true
+ // }
+ // }
+ //fx: {
+ // src: ['SpecialFX/**/*.ts'],
+ // dest: 'build/phaser-fx.js',
+ // options: {
+ // target: 'ES5',
+ // declaration: true,
+ // comments: true
+ // }
+ //}
},
copy: {
main: {
diff --git a/Phaser/components/Transform.ts b/Phaser/components/Transform.ts
index 47e518669..4d9cf796e 100644
--- a/Phaser/components/Transform.ts
+++ b/Phaser/components/Transform.ts
@@ -1,5 +1,6 @@
///
///
+///
/**
* Phaser - Components - Transform
@@ -98,7 +99,7 @@ module Phaser.Components {
this._halfSize.y = this.parent.height / 2;
this._offset.x = this.origin.x * this.parent.width;
this._offset.y = this.origin.y * this.parent.height;
- this._angle = Math.atan2(this.halfHeight - this._offset.y, this.halfWidth - this._offset.x);
+ this._angle = Math.atan2(this.halfHeight - this._offset.x, this.halfWidth - this._offset.y);
this._distance = Math.sqrt(((this._offset.x - this._halfSize.x) * (this._offset.x - this._halfSize.x)) + ((this._offset.y - this._halfSize.y) * (this._offset.y - this._halfSize.y)));
this._size.x = this.parent.width;
this._size.y = this.parent.height;
@@ -240,22 +241,22 @@ module Phaser.Components {
/**
* Scale of the object. A scale of 1.0 is the original size. 0.5 half size. 2.0 double sized.
*/
- public scale: Phaser.Vec2;
+ public scale: Vec2;
/**
* Skew the object along the x and y axis. A skew value of 0 is no skew.
*/
- public skew: Phaser.Vec2;
+ public skew: Vec2;
/**
* The influence of camera movement upon the object, if supported.
*/
- public scrollFactor: Phaser.Vec2;
+ public scrollFactor: Vec2;
/**
* The origin is the point around which scale and rotation takes place and defaults to the top-left of the sprite.
*/
- public origin: Phaser.Vec2;
+ public origin: Vec2;
/**
* This value is added to the rotation of the object.
diff --git a/Phaser/gameobjects/GameObjectFactory.ts b/Phaser/gameobjects/GameObjectFactory.ts
index 47bc8f2bf..dc9e071f2 100644
--- a/Phaser/gameobjects/GameObjectFactory.ts
+++ b/Phaser/gameobjects/GameObjectFactory.ts
@@ -83,11 +83,12 @@ module Phaser {
* @param y {number} Y position of the new sprite.
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
+ * @param [bodyType] {number} The physics body type of the object (defaults to BODY_DYNAMIC)
* @param [shapeType] The default body shape is either 0 for a Box or 1 for a Circle. See Sprite.body.addShape for custom shapes (polygons, etc)
* @returns {Sprite} The newly created sprite object.
*/
- public physicsSprite(x: number, y: number, key?: string = '', frame? = null, shapeType?:number = 0): Sprite {
- return this._world.group.add(new Sprite(this._game, x, y, key, frame, Phaser.Types.BODY_DYNAMIC, shapeType));
+ public physicsSprite(x: number, y: number, key?: string = '', frame? = null, bodyType?: number = Phaser.Types.BODY_DYNAMIC, shapeType?:number = 0): Sprite {
+ return this._world.group.add(new Sprite(this._game, x, y, key, frame, bodyType, shapeType));
}
/**
diff --git a/Phaser/math/Vec2.ts b/Phaser/math/Vec2.ts
index 14c451b3b..d9bfab0fd 100644
--- a/Phaser/math/Vec2.ts
+++ b/Phaser/math/Vec2.ts
@@ -23,6 +23,8 @@ module Phaser {
this.x = x;
this.y = y;
+ return this;
+
}
/**
diff --git a/Phaser/math/Vec2Utils.ts b/Phaser/math/Vec2Utils.ts
index ec46d7b45..f78a26ff6 100644
--- a/Phaser/math/Vec2Utils.ts
+++ b/Phaser/math/Vec2Utils.ts
@@ -68,7 +68,7 @@ module Phaser {
* @param {Vec2} out The output Vec2 that is the result of the operation.
* @return {Vec2} A Vec2 that is the scaled vector.
*/
- static scale(a: Vec2, s: number, out?: Vec2 = new Vec2): Vec2 {
+ static scale(a: Phaser.Vec2, s: number, out?: Phaser.Vec2 = new Phaser.Vec2): Phaser.Vec2 {
return out.setTo(a.x * s, a.y * s);
}
@@ -212,7 +212,7 @@ module Phaser {
* @param {Vec2} out The output Vec2 that is the result of the operation.
* @return {Vec2} A Vec2.
*/
- static normalRightHand(a: Vec2, out?: Vec2 = this): Vec2 {
+ static normalRightHand(a: Vec2, out?: Vec2 = new Vec2): Vec2 {
return out.setTo(a.y * -1, a.x);
}
diff --git a/Phaser/phaser.js b/Phaser/phaser.js
index 7b20a194e..ec56656ed 100644
--- a/Phaser/phaser.js
+++ b/Phaser/phaser.js
@@ -1,19 +1,3 @@
-/**
-* Phaser
-*
-* v1.0.0 - June XX 2013
-*
-* A small and feature-packed 2D canvas game framework born from the firey pits of Flixel and Kiwi.
-*
-* Richard Davey (@photonstorm)
-*
-* Many thanks to Adam Saltsman (@ADAMATOMIC) for releasing Flixel, from both which Phaser
-* and my love of game development took a lot of inspiration.
-*
-* "If you want your children to be intelligent, read them fairy tales."
-* "If you want them to be more intelligent, read them more fairy tales."
-* -- Albert Einstein
-*/
var Phaser;
(function (Phaser) {
Phaser.VERSION = 'Phaser version 1.0.0';
diff --git a/Phaser/physics/Body.ts b/Phaser/physics/Body.ts
index aa9c82d1f..0e65ebabd 100644
--- a/Phaser/physics/Body.ts
+++ b/Phaser/physics/Body.ts
@@ -91,7 +91,7 @@ module Phaser.Physics {
/**
* Reference to Phaser.Game
*/
- public game: Game;
+ public game: Phaser.Game;
/**
* Reference to the parent Sprite
@@ -461,7 +461,7 @@ module Phaser.Physics {
this.bounds.clear();
- for (var i = 0; i < this.shapes.length; i++)
+ for (var i = 0; i < this.shapesLength; i++)
{
var shape: IShape = this.shapes[i];
shape.cacheData(this.transform);
@@ -534,13 +534,13 @@ module Phaser.Physics {
this.angle += this.angularVelocity * dt;
- if (this.sprite)
- {
- this.sprite.x = this.position.x * 50;
- this.sprite.y = this.position.y * 50;
+ if (this.sprite)
+ {
+ this.sprite.x = this.position.x * 50;
+ this.sprite.y = this.position.y * 50;
// Obey fixed rotation?
- this.sprite.rotation = this.game.math.radiansToDegrees(this.angle);
- }
+ this.sprite.rotation = this.game.math.radiansToDegrees(this.angle);
+ }
}
diff --git a/Phaser/physics/Space.ts b/Phaser/physics/Space.ts
index f8e8d9bbe..c9b3b8098 100644
--- a/Phaser/physics/Space.ts
+++ b/Phaser/physics/Space.ts
@@ -723,7 +723,7 @@ module Phaser.Physics {
Manager.dump("Velocity Solvers", this.bodies[1]);
- // 6) Intergrate position
+ // 6) Integrate position
for (var i = 0; i < this._bl; i++)
{
if (this.bodies[i] && this.bodies[i].isDynamic && this.bodies[i].isAwake)
diff --git a/Phaser/physics/shapes/Box.ts b/Phaser/physics/shapes/Box.ts
index 461faf869..3650e803e 100644
--- a/Phaser/physics/shapes/Box.ts
+++ b/Phaser/physics/shapes/Box.ts
@@ -17,14 +17,20 @@ module Phaser.Physics.Shapes {
// Give in pixels
constructor(x, y, width, height) {
+ console.log('Box px', x, y, width, height);
+
x = Manager.pixelsToMeters(x);
y = Manager.pixelsToMeters(y);
width = Manager.pixelsToMeters(width);
height = Manager.pixelsToMeters(height);
+ console.log('Box m', x, y, width, height);
+
var hw = width * 0.5;
var hh = height * 0.5;
+ console.log('Box hh', hw, hh);
+
super([
{ x: -hw + x, y: +hh + y },
{ x: -hw + x, y: -hh + y },
diff --git a/Phaser/physics/shapes/IShape.ts b/Phaser/physics/shapes/IShape.ts
index 1e49f5a9c..c1f0ddb47 100644
--- a/Phaser/physics/shapes/IShape.ts
+++ b/Phaser/physics/shapes/IShape.ts
@@ -33,8 +33,10 @@ module Phaser.Physics {
findEdgeByPoint(p: Phaser.Vec2, minDist: number): number;
findVertexByPoint(p: Phaser.Vec2, minDist: number): number;
+ // The verts of the shape (in local coordinate space)
verts: Phaser.Vec2[];
planes: Phaser.Physics.Plane[];
+ // The translated verts (in world space)
tverts: Phaser.Vec2[];
tplanes: Phaser.Physics.Plane[];
convexity: bool;
diff --git a/Phaser/utils/DebugUtils.ts b/Phaser/utils/DebugUtils.ts
index c593f7ede..a4ae9613f 100644
--- a/Phaser/utils/DebugUtils.ts
+++ b/Phaser/utils/DebugUtils.ts
@@ -42,6 +42,40 @@ module Phaser {
}
+ /**
+ * Render debug infos. (including name, bounds info, position and some other properties)
+ * @param x {number} X position of the debug info to be rendered.
+ * @param y {number} Y position of the debug info to be rendered.
+ * @param [color] {number} color of the debug info to be rendered. (format is css color string)
+ */
+ static renderPhysicsBodyInfo(body: Phaser.Physics.Body, x: number, y: number, color?: string = 'rgb(255,255,255)') {
+
+ DebugUtils.context.fillStyle = color;
+ DebugUtils.context.fillText('Body ID: ' + body.name, x, y);
+ DebugUtils.context.fillText('Position x: ' + body.position.x.toFixed(1) + ' y: ' + body.position.y.toFixed(1) + ' rotation: ' + body.angle.toFixed(1), x, y + 14);
+ DebugUtils.context.fillText('World x: ' + (body.position.x * 50).toFixed(1) + ' y: ' + (body.position.y * 50).toFixed(1), x, y + 28);
+ DebugUtils.context.fillText('Velocity x: ' + body.velocity.x.toFixed(1) + ' y: ' + body.velocity.y.toFixed(1), x, y + 42);
+
+ if (body.shapes[0].verts.length > 0)
+ {
+
+ DebugUtils.context.fillText('Vert 1 x: ' + (body.shapes[0].verts[0].x * 50) + ' y: ' + (body.shapes[0].verts[0].y * 50), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + (body.shapes[0].verts[1].x * 50) + ' y: ' + (body.shapes[0].verts[1].y * 50), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + (body.shapes[0].tverts[2].x * 50) + ' y: ' + (body.shapes[0].tverts[2].y * 50), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + (body.shapes[0].tverts[3].x * 50) + ' y: ' + (body.shapes[0].tverts[3].y * 50), x, y + 98);
+
+
+/*
+ DebugUtils.context.fillText('Vert 1 x: ' + body.shapes[0].verts[0].x.toFixed(1) + ' y: ' + body.shapes[0].verts[0].y.toFixed(1), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + body.shapes[0].verts[1].x.toFixed(1) + ' y: ' + body.shapes[0].verts[1].y.toFixed(1), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + body.shapes[0].verts[2].x.toFixed(1) + ' y: ' + body.shapes[0].verts[2].y.toFixed(1), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + body.shapes[0].verts[3].x.toFixed(1) + ' y: ' + body.shapes[0].verts[3].y.toFixed(1), x, y + 98);
+*/
+
+ }
+
+ }
+
static renderSpriteBounds(sprite: Sprite, camera?: Camera = null, color?: string = 'rgba(0,255,0,0.2)') {
if (camera == null)
@@ -59,7 +93,7 @@ module Phaser {
static renderPhysicsBody(body: Phaser.Physics.Body, lineWidth: number = 1, fillStyle: string = 'rgba(0,255,0,0.2)', sleepStyle: string = 'rgba(100,100,100,0.2)') {
- for (var s = 0; s < body.shapes.length; s++)
+ for (var s = 0; s < body.shapesLength; s++)
{
DebugUtils.context.beginPath();
@@ -67,13 +101,16 @@ module Phaser {
{
var verts = body.shapes[s].tverts;
- DebugUtils.context.moveTo((body.position.x + verts[0].x) * 50, (body.position.y + verts[0].y) * 50);
+// DebugUtils.context.moveTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.moveTo(verts[0].x * 50, verts[0].y * 50);
- for (var i = 0; i < verts.length; i++) {
- DebugUtils.context.lineTo((body.position.x + verts[i].x) * 50, (body.position.y + verts[i].y) * 50);
+ for (var i = 1; i < verts.length; i++) {
+// DebugUtils.context.lineTo(body.position.x * 50 + verts[i].x, body.position.y * 50 + verts[i].y);
+ DebugUtils.context.lineTo(verts[i].x * 50, verts[i].y * 50);
}
- DebugUtils.context.lineTo((body.position.x + verts[verts.length - 1].x) * 50, (body.position.y + verts[verts.length - 1].y) * 50);
+// DebugUtils.context.lineTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.lineTo(verts[0].x * 50, verts[0].y * 50);
}
else if (body.shapes[s].type == Phaser.Physics.Manager.SHAPE_TYPE_CIRCLE)
{
diff --git a/Tests/phaser-fx.js b/Tests/phaser-fx.js
index 6499d8dac..dc65ef514 100644
--- a/Tests/phaser-fx.js
+++ b/Tests/phaser-fx.js
@@ -1,12 +1,6 @@
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Flash
- *
- * The camera is filled with the given color and returns to normal at the given duration.
- */
(function (Camera) {
var Flash = (function () {
function Flash(game) {
@@ -15,21 +9,12 @@ var Phaser;
this._fxFlashAlpha = 0;
this._game = game;
}
- Flash.prototype.start = /**
- * The camera is filled with this color and returns to normal at the given duration.
- *
- * @param Color The color you want to use in 0xRRGGBB format, i.e. 0xffffff for white.
- * @param Duration How long it takes for the flash to fade.
- * @param OnComplete An optional function you want to run when the flash finishes. Set to null for no callback.
- * @param Force Force an already running flash effect to reset.
- */
- function (color, duration, onComplete, force) {
+ Flash.prototype.start = function (color, duration, onComplete, force) {
if (typeof color === "undefined") { color = 0xffffff; }
if (typeof duration === "undefined") { duration = 1; }
if (typeof onComplete === "undefined") { onComplete = null; }
if (typeof force === "undefined") { force = false; }
if(force === false && this._fxFlashAlpha > 0) {
- // You can't flash again unless you force it
return;
}
if(duration <= 0) {
@@ -44,7 +29,6 @@ var Phaser;
this._fxFlashComplete = onComplete;
};
Flash.prototype.postUpdate = function () {
- // Update the Flash effect
if(this._fxFlashAlpha > 0) {
this._fxFlashAlpha -= this._game.time.elapsed / this._fxFlashDuration;
if(this._game.math.roundTo(this._fxFlashAlpha, -2) <= 0) {
@@ -72,38 +56,17 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Border
- *
- * Creates a border around a camera.
- */
(function (Camera) {
var Border = (function () {
function Border(game, parent) {
- /**
- * Whether render border of this camera or not. (default is false)
- * @type {boolean}
- */
this.showBorder = false;
- /**
- * Color of border of this camera. (in css color string)
- * @type {string}
- */
this.borderColor = 'rgb(255,255,255)';
this._game = game;
this._parent = parent;
}
- Border.prototype.start = /**
- * You can name the function that starts the effect whatever you like, but we used 'start' in our effects.
- */
- function () {
+ Border.prototype.start = function () {
};
- Border.prototype.postRender = /**
- * Post-render is called during the objects render cycle, after the children/image data has been rendered.
- * It happens directly BEFORE a canvas context.restore has happened if added to a Camera.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
+ Border.prototype.postRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
if(this.showBorder == true) {
this._game.stage.context.strokeStyle = this.borderColor;
this._game.stage.context.lineWidth = 1;
@@ -122,50 +85,23 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Template
- *
- * A Template FX file you can use to create your own Camera FX.
- * If you don't use any of the methods below (i.e. preUpdate, render, etc) then DELETE THEM to avoid un-necessary calls by the FXManager.
- */
(function (Camera) {
var Template = (function () {
function Template(game, parent) {
this._game = game;
this._parent = parent;
}
- Template.prototype.start = /**
- * You can name the function that starts the effect whatever you like, but we used 'start' in our effects.
- */
- function () {
+ Template.prototype.start = function () {
};
- Template.prototype.preUpdate = /**
- * Pre-update is called at the start of the objects update cycle, before any other updates have taken place.
- */
- function () {
+ Template.prototype.preUpdate = function () {
};
- Template.prototype.postUpdate = /**
- * Post-update is called at the end of the objects update cycle, after other update logic has taken place.
- */
- function () {
+ Template.prototype.postUpdate = function () {
};
- Template.prototype.preRender = /**
- * Pre-render is called at the start of the object render cycle, before any transforms have taken place.
- * It happens directly AFTER a canvas context.save has happened if added to a Camera.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
+ Template.prototype.preRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
};
- Template.prototype.render = /**
- * render is called during the objects render cycle, right after all transforms have finished, but before any children/image data is rendered.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
+ Template.prototype.render = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
};
- Template.prototype.postRender = /**
- * Post-render is called during the objects render cycle, after the children/image data has been rendered.
- * It happens directly BEFORE a canvas context.restore has happened if added to a Camera.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
+ Template.prototype.postRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
};
return Template;
})();
@@ -178,13 +114,6 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Mirror
- *
- * Creates a mirror effect for a camera.
- * Can mirror the camera image horizontally, vertically or both with an optional fill color overlay.
- */
(function (Camera) {
var Mirror = (function () {
function Mirror(game, parent) {
@@ -199,11 +128,7 @@ var Phaser;
this._canvas.height = parent.height;
this._context = this._canvas.getContext('2d');
}
- Mirror.prototype.start = /**
- * This is the rectangular region to grab from the Camera used in the Mirror effect
- * It is rendered to the Stage at Mirror.x/y (note the use of Stage coordinates, not World coordinates)
- */
- function (x, y, region, fillColor) {
+ Mirror.prototype.start = function (x, y, region, fillColor) {
if (typeof fillColor === "undefined") { fillColor = 'rgba(0, 0, 100, 0.5)'; }
this.x = x;
this.y = y;
@@ -216,15 +141,7 @@ var Phaser;
this._context.fillStyle = this._mirrorColor;
}
};
- Mirror.prototype.postRender = /**
- * Post-render is called during the objects render cycle, after the children/image data has been rendered.
- * It happens directly BEFORE a canvas context.restore has happened if added to a Camera.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
- //if (this.cls)
- //{
- // this._context.clearRect(0, 0, this._mirrorWidth, this._mirrorHeight);
- //}
+ Mirror.prototype.postRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
this._sx = cameraX + this._mirrorX;
this._sy = cameraY + this._mirrorY;
if(this.flipX == true && this.flipY == false) {
@@ -232,16 +149,7 @@ var Phaser;
} else if(this.flipY == true && this.flipX == false) {
this._sy = 0;
}
- this._context.drawImage(this._game.stage.canvas, // Source Image
- this._sx, // Source X (location within the source image)
- this._sy, // Source Y
- this._mirrorWidth, // Source Width
- this._mirrorHeight, // Source Height
- 0, // Destination X (where on the canvas it'll be drawn)
- 0, // Destination Y
- this._mirrorWidth, // Destination Width (always same as Source Width unless scaled)
- this._mirrorHeight);
- // Destination Height (always same as Source Height unless scaled)
+ this._context.drawImage(this._game.stage.canvas, this._sx, this._sy, this._mirrorWidth, this._mirrorHeight, 0, 0, this._mirrorWidth, this._mirrorHeight);
if(this._mirrorColor) {
this._context.fillRect(0, 0, this._mirrorWidth, this._mirrorHeight);
}
@@ -267,49 +175,19 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Shadow
- *
- * Creates a drop-shadow effect on the camera window.
- */
(function (Camera) {
var Shadow = (function () {
function Shadow(game, parent) {
- /**
- * Render camera shadow or not. (default is false)
- * @type {boolean}
- */
this.showShadow = false;
- /**
- * Color of shadow, in css color string.
- * @type {string}
- */
this.shadowColor = 'rgb(0,0,0)';
- /**
- * Blur factor of shadow.
- * @type {number}
- */
this.shadowBlur = 10;
- /**
- * Offset of the shadow from camera's position.
- * @type {Point}
- */
this.shadowOffset = new Phaser.Point(4, 4);
this._game = game;
this._parent = parent;
}
- Shadow.prototype.start = /**
- * You can name the function that starts the effect whatever you like, but we used 'start' in our effects.
- */
- function () {
+ Shadow.prototype.start = function () {
};
- Shadow.prototype.preRender = /**
- * Pre-render is called at the start of the object render cycle, before any transforms have taken place.
- * It happens directly AFTER a canvas context.save has happened if added to a Camera.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
- // Shadow
+ Shadow.prototype.preRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
if(this.showShadow == true) {
this._game.stage.context.shadowColor = this.shadowColor;
this._game.stage.context.shadowBlur = this.shadowBlur;
@@ -317,11 +195,7 @@ var Phaser;
this._game.stage.context.shadowOffsetY = this.shadowOffset.y;
}
};
- Shadow.prototype.render = /**
- * render is called during the objects render cycle, right after all transforms have finished, but before any children/image data is rendered.
- */
- function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
- // Shadow off
+ Shadow.prototype.render = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
if(this.showShadow == true) {
this._game.stage.context.shadowBlur = 0;
this._game.stage.context.shadowOffsetX = 0;
@@ -339,12 +213,6 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Scanlines
- *
- * Give your game that classic retro feel!
- */
(function (Camera) {
var Scanlines = (function () {
function Scanlines(game, parent) {
@@ -370,12 +238,6 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Shake
- *
- * A simple camera shake effect.
- */
(function (Camera) {
var Shake = (function () {
function Shake(game, camera) {
@@ -392,16 +254,7 @@ var Phaser;
Shake.SHAKE_BOTH_AXES = 0;
Shake.SHAKE_HORIZONTAL_ONLY = 1;
Shake.SHAKE_VERTICAL_ONLY = 2;
- Shake.prototype.start = /**
- * A simple camera shake effect.
- *
- * @param Intensity Percentage of screen size representing the maximum distance that the screen can move while shaking.
- * @param Duration The length in seconds that the shaking effect should last.
- * @param OnComplete A function you want to run when the shake effect finishes.
- * @param Force Force the effect to reset (default = true, unlike flash() and fade()!).
- * @param Direction Whether to shake on both axes, just up and down, or just side to side (use class constants SHAKE_BOTH_AXES, SHAKE_VERTICAL_ONLY, or SHAKE_HORIZONTAL_ONLY).
- */
- function (intensity, duration, onComplete, force, direction) {
+ Shake.prototype.start = function (intensity, duration, onComplete, force, direction) {
if (typeof intensity === "undefined") { intensity = 0.05; }
if (typeof duration === "undefined") { duration = 0.5; }
if (typeof onComplete === "undefined") { onComplete = null; }
@@ -410,7 +263,6 @@ var Phaser;
if(!force && ((this._fxShakeOffset.x != 0) || (this._fxShakeOffset.y != 0))) {
return;
}
- // If a shake is not already running we need to store the offsets here
if(this._fxShakeOffset.x == 0 && this._fxShakeOffset.y == 0) {
this._fxShakePrevX = this._parent.x;
this._fxShakePrevY = this._parent.y;
@@ -422,7 +274,6 @@ var Phaser;
this._fxShakeOffset.setTo(0, 0);
};
Shake.prototype.postUpdate = function () {
- // Update the "shake" special effect
if(this._fxShakeDuration > 0) {
this._fxShakeDuration -= this._game.time.elapsed;
if(this._game.math.roundTo(this._fxShakeDuration, -2) <= 0) {
@@ -435,11 +286,9 @@ var Phaser;
}
} else {
if((this._fxShakeDirection == Shake.SHAKE_BOTH_AXES) || (this._fxShakeDirection == Shake.SHAKE_HORIZONTAL_ONLY)) {
- //this._fxShakeOffset.x = ((this._game.math.random() * this._fxShakeIntensity * this.worldView.width * 2 - this._fxShakeIntensity * this.worldView.width) * this._zoom;
this._fxShakeOffset.x = (this._game.math.random() * this._fxShakeIntensity * this._parent.worldView.width * 2 - this._fxShakeIntensity * this._parent.worldView.width);
}
if((this._fxShakeDirection == Shake.SHAKE_BOTH_AXES) || (this._fxShakeDirection == Shake.SHAKE_VERTICAL_ONLY)) {
- //this._fxShakeOffset.y = (this._game.math.random() * this._fxShakeIntensity * this.worldView.height * 2 - this._fxShakeIntensity * this.worldView.height) * this._zoom;
this._fxShakeOffset.y = (this._game.math.random() * this._fxShakeIntensity * this._parent.worldView.height * 2 - this._fxShakeIntensity * this._parent.worldView.height);
}
}
@@ -462,12 +311,6 @@ var Phaser;
var Phaser;
(function (Phaser) {
(function (FX) {
- ///
- /**
- * Phaser - FX - Camera - Fade
- *
- * The camera is filled with the given color and returns to normal at the given duration.
- */
(function (Camera) {
var Fade = (function () {
function Fade(game) {
@@ -476,21 +319,12 @@ var Phaser;
this._fxFadeAlpha = 0;
this._game = game;
}
- Fade.prototype.start = /**
- * The camera is gradually filled with this color.
- *
- * @param Color The color you want to use in 0xRRGGBB format, i.e. 0xffffff for white.
- * @param Duration How long it takes for the flash to fade.
- * @param OnComplete An optional function you want to run when the flash finishes. Set to null for no callback.
- * @param Force Force an already running flash effect to reset.
- */
- function (color, duration, onComplete, force) {
+ Fade.prototype.start = function (color, duration, onComplete, force) {
if (typeof color === "undefined") { color = 0x000000; }
if (typeof duration === "undefined") { duration = 1; }
if (typeof onComplete === "undefined") { onComplete = null; }
if (typeof force === "undefined") { force = false; }
if(force === false && this._fxFadeAlpha > 0) {
- // You can't fade again unless you force it
return;
}
if(duration <= 0) {
@@ -505,7 +339,6 @@ var Phaser;
this._fxFadeComplete = onComplete;
};
Fade.prototype.postUpdate = function () {
- // Update the Fade effect
if(this._fxFadeAlpha > 0) {
this._fxFadeAlpha += this._game.time.elapsed / this._fxFadeDuration;
if(this._game.math.roundTo(this._fxFadeAlpha, -2) >= 1) {
@@ -517,7 +350,6 @@ var Phaser;
}
};
Fade.prototype.postRender = function (camera, cameraX, cameraY, cameraWidth, cameraHeight) {
- // "Fade" FX
if(this._fxFadeAlpha > 0) {
this._game.stage.context.fillStyle = this._fxFadeColor + this._fxFadeAlpha + ')';
this._game.stage.context.fillRect(cameraX, cameraY, cameraWidth, cameraHeight);
diff --git a/Tests/phaser.js b/Tests/phaser.js
index 661e4d306..0df38b194 100644
--- a/Tests/phaser.js
+++ b/Tests/phaser.js
@@ -760,6 +760,7 @@ var Phaser;
if (typeof y === "undefined") { y = 0; }
this.x = x;
this.y = y;
+ return this;
}
Vec2.prototype.copyFrom = /**
* Copies the x and y properties from any given object to this Vec2.
@@ -3086,6 +3087,7 @@ var Phaser;
(function (Phaser) {
///
///
+ ///
/**
* Phaser - Components - Transform
*/
@@ -3138,7 +3140,7 @@ var Phaser;
this._halfSize.y = this.parent.height / 2;
this._offset.x = this.origin.x * this.parent.width;
this._offset.y = this.origin.y * this.parent.height;
- this._angle = Math.atan2(this.halfHeight - this._offset.y, this.halfWidth - this._offset.x);
+ this._angle = Math.atan2(this.halfHeight - this._offset.x, this.halfWidth - this._offset.y);
this._distance = Math.sqrt(((this._offset.x - this._halfSize.x) * (this._offset.x - this._halfSize.x)) + ((this._offset.y - this._halfSize.y) * (this._offset.y - this._halfSize.y)));
this._size.x = this.parent.width;
this._size.y = this.parent.height;
@@ -4123,7 +4125,7 @@ var Phaser;
* @return {Vec2} A Vec2.
*/
function normalRightHand(a, out) {
- if (typeof out === "undefined") { out = this; }
+ if (typeof out === "undefined") { out = new Phaser.Vec2(); }
return out.setTo(a.y * -1, a.x);
};
Vec2Utils.normalize = /**
@@ -6466,7 +6468,7 @@ var Phaser;
// 5) Iterative velocity constraints solver
this.velocitySolver(velocityIterations);
Physics.Manager.dump("Velocity Solvers", this.bodies[1]);
- // 6) Intergrate position
+ // 6) Integrate position
for(var i = 0; i < this._bl; i++) {
if(this.bodies[i] && this.bodies[i].isDynamic && this.bodies[i].isAwake) {
this.bodies[i].updatePosition(this._delta);
@@ -6597,12 +6599,15 @@ var Phaser;
__extends(Box, _super);
// Give in pixels
function Box(x, y, width, height) {
+ console.log('Box px', x, y, width, height);
x = Physics.Manager.pixelsToMeters(x);
y = Physics.Manager.pixelsToMeters(y);
width = Physics.Manager.pixelsToMeters(width);
height = Physics.Manager.pixelsToMeters(height);
+ console.log('Box m', x, y, width, height);
var hw = width * 0.5;
var hh = height * 0.5;
+ console.log('Box hh', hw, hh);
_super.call(this, [
{
x: -hw + x,
@@ -6932,7 +6937,7 @@ var Phaser;
Physics.Manager.write('p: ' + this.position.toString());
Physics.Manager.write('xf: ' + this.transform.toString());
this.bounds.clear();
- for(var i = 0; i < this.shapes.length; i++) {
+ for(var i = 0; i < this.shapesLength; i++) {
var shape = this.shapes[i];
shape.cacheData(this.transform);
this.bounds.addBounds(shape.bounds);
@@ -13573,14 +13578,16 @@ var Phaser;
* @param y {number} Y position of the new sprite.
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
+ * @param [bodyType] {number} The physics body type of the object (defaults to BODY_DYNAMIC)
* @param [shapeType] The default body shape is either 0 for a Box or 1 for a Circle. See Sprite.body.addShape for custom shapes (polygons, etc)
* @returns {Sprite} The newly created sprite object.
*/
- function (x, y, key, frame, shapeType) {
+ function (x, y, key, frame, bodyType, shapeType) {
if (typeof key === "undefined") { key = ''; }
if (typeof frame === "undefined") { frame = null; }
+ if (typeof bodyType === "undefined") { bodyType = Phaser.Types.BODY_DYNAMIC; }
if (typeof shapeType === "undefined") { shapeType = 0; }
- return this._world.group.add(new Phaser.Sprite(this._game, x, y, key, frame, Phaser.Types.BODY_DYNAMIC, shapeType));
+ return this._world.group.add(new Phaser.Sprite(this._game, x, y, key, frame, bodyType, shapeType));
};
GameObjectFactory.prototype.dynamicTexture = /**
* Create a new DynamicTexture with specific size.
@@ -18582,6 +18589,32 @@ var Phaser;
DebugUtils.context.fillText('cx: ' + sprite.cameraView.x + ' cy: ' + sprite.cameraView.y + ' cw: ' + sprite.cameraView.width + ' ch: ' + sprite.cameraView.height + ' cb: ' + sprite.cameraView.bottom + ' cr: ' + sprite.cameraView.right, x, y + 70);
DebugUtils.context.fillText('inCamera: ' + DebugUtils.game.renderer.inCamera(DebugUtils.game.camera, sprite), x, y + 84);
};
+ DebugUtils.renderPhysicsBodyInfo = /**
+ * Render debug infos. (including name, bounds info, position and some other properties)
+ * @param x {number} X position of the debug info to be rendered.
+ * @param y {number} Y position of the debug info to be rendered.
+ * @param [color] {number} color of the debug info to be rendered. (format is css color string)
+ */
+ function renderPhysicsBodyInfo(body, x, y, color) {
+ if (typeof color === "undefined") { color = 'rgb(255,255,255)'; }
+ DebugUtils.context.fillStyle = color;
+ DebugUtils.context.fillText('Body ID: ' + body.name, x, y);
+ DebugUtils.context.fillText('Position x: ' + body.position.x.toFixed(1) + ' y: ' + body.position.y.toFixed(1) + ' rotation: ' + body.angle.toFixed(1), x, y + 14);
+ DebugUtils.context.fillText('World x: ' + (body.position.x * 50).toFixed(1) + ' y: ' + (body.position.y * 50).toFixed(1), x, y + 28);
+ DebugUtils.context.fillText('Velocity x: ' + body.velocity.x.toFixed(1) + ' y: ' + body.velocity.y.toFixed(1), x, y + 42);
+ if(body.shapes[0].verts.length > 0) {
+ DebugUtils.context.fillText('Vert 1 x: ' + (body.shapes[0].verts[0].x * 50) + ' y: ' + (body.shapes[0].verts[0].y * 50), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + (body.shapes[0].verts[1].x * 50) + ' y: ' + (body.shapes[0].verts[1].y * 50), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + (body.shapes[0].tverts[2].x * 50) + ' y: ' + (body.shapes[0].tverts[2].y * 50), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + (body.shapes[0].tverts[3].x * 50) + ' y: ' + (body.shapes[0].tverts[3].y * 50), x, y + 98);
+ /*
+ DebugUtils.context.fillText('Vert 1 x: ' + body.shapes[0].verts[0].x.toFixed(1) + ' y: ' + body.shapes[0].verts[0].y.toFixed(1), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + body.shapes[0].verts[1].x.toFixed(1) + ' y: ' + body.shapes[0].verts[1].y.toFixed(1), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + body.shapes[0].verts[2].x.toFixed(1) + ' y: ' + body.shapes[0].verts[2].y.toFixed(1), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + body.shapes[0].verts[3].x.toFixed(1) + ' y: ' + body.shapes[0].verts[3].y.toFixed(1), x, y + 98);
+ */
+ }
+ };
DebugUtils.renderSpriteBounds = function renderSpriteBounds(sprite, camera, color) {
if (typeof camera === "undefined") { camera = null; }
if (typeof color === "undefined") { color = 'rgba(0,255,0,0.2)'; }
@@ -18597,15 +18630,18 @@ var Phaser;
if (typeof lineWidth === "undefined") { lineWidth = 1; }
if (typeof fillStyle === "undefined") { fillStyle = 'rgba(0,255,0,0.2)'; }
if (typeof sleepStyle === "undefined") { sleepStyle = 'rgba(100,100,100,0.2)'; }
- for(var s = 0; s < body.shapes.length; s++) {
+ for(var s = 0; s < body.shapesLength; s++) {
DebugUtils.context.beginPath();
if(body.shapes[s].type == Phaser.Physics.Manager.SHAPE_TYPE_POLY) {
var verts = body.shapes[s].tverts;
- DebugUtils.context.moveTo((body.position.x + verts[0].x) * 50, (body.position.y + verts[0].y) * 50);
- for(var i = 0; i < verts.length; i++) {
- DebugUtils.context.lineTo((body.position.x + verts[i].x) * 50, (body.position.y + verts[i].y) * 50);
+ // DebugUtils.context.moveTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.moveTo(verts[0].x * 50, verts[0].y * 50);
+ for(var i = 1; i < verts.length; i++) {
+ // DebugUtils.context.lineTo(body.position.x * 50 + verts[i].x, body.position.y * 50 + verts[i].y);
+ DebugUtils.context.lineTo(verts[i].x * 50, verts[i].y * 50);
}
- DebugUtils.context.lineTo((body.position.x + verts[verts.length - 1].x) * 50, (body.position.y + verts[verts.length - 1].y) * 50);
+ // DebugUtils.context.lineTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.lineTo(verts[0].x * 50, verts[0].y * 50);
} else if(body.shapes[s].type == Phaser.Physics.Manager.SHAPE_TYPE_CIRCLE) {
var circle = body.shapes[s];
DebugUtils.context.arc(circle.tc.x * 50, circle.tc.y * 50, circle.radius * 50, 0, Math.PI * 2, false);
@@ -19058,6 +19094,84 @@ var Phaser;
})();
Phaser.Game = Game;
})(Phaser || (Phaser = {}));
+///
+/**
+* Phaser - State
+*
+* This is a base State class which can be extended if you are creating your game using TypeScript.
+*/
+var Phaser;
+(function (Phaser) {
+ var State = (function () {
+ /**
+ * State constructor
+ * Create a new State
.
+ */
+ function State(game) {
+ this.game = game;
+ this.add = game.add;
+ this.camera = game.camera;
+ this.cache = game.cache;
+ this.input = game.input;
+ this.load = game.load;
+ this.math = game.math;
+ this.motion = game.motion;
+ this.sound = game.sound;
+ this.stage = game.stage;
+ this.time = game.time;
+ this.tweens = game.tweens;
+ this.world = game.world;
+ }
+ State.prototype.init = // Override these in your own States
+ /**
+ * Override this method to add some load operations.
+ * If you need to use the loader, you may need to use them here.
+ */
+ function () {
+ };
+ State.prototype.create = /**
+ * This method is called after the game engine successfully switches states.
+ * Feel free to add any setup code here.(Do not load anything here, override init() instead)
+ */
+ function () {
+ };
+ State.prototype.update = /**
+ * Put update logic here.
+ */
+ function () {
+ };
+ State.prototype.render = /**
+ * Put render operations here.
+ */
+ function () {
+ };
+ State.prototype.paused = /**
+ * This method will be called when game paused.
+ */
+ function () {
+ };
+ State.prototype.destroy = /**
+ * This method will be called when the state is destroyed
+ */
+ function () {
+ };
+ return State;
+ })();
+ Phaser.State = State;
+ /**
+ * Checks for overlaps between two objects using the world QuadTree. Can be GameObject vs. GameObject, GameObject vs. Group or Group vs. Group.
+ * Note: Does not take the objects scrollFactor into account. All overlaps are check in world space.
+ * @param object1 The first GameObject or Group to check. If null the world.group is used.
+ * @param object2 The second GameObject or Group to check.
+ * @param notifyCallback A callback function that is called if the objects overlap. The two objects will be passed to this function in the same order in which you passed them to Collision.overlap.
+ * @param processCallback A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then notifyCallback will only be called if processCallback returns true.
+ * @param context The context in which the callbacks will be called
+ * @returns {boolean} true if the objects overlap, otherwise false.
+ */
+ //public collide(objectOrGroup1 = null, objectOrGroup2 = null, notifyCallback = null, context? = this.game.callbackContext): bool {
+ // return this.collision.overlap(objectOrGroup1, objectOrGroup2, notifyCallback, Collision.separate, context);
+ //}
+ })(Phaser || (Phaser = {}));
var Phaser;
(function (Phaser) {
/**
@@ -19400,6 +19514,206 @@ var Phaser;
Phaser.Line = Line;
})(Phaser || (Phaser = {}));
///
+/**
+* Phaser - IntersectResult
+*
+* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
+*/
+var Phaser;
+(function (Phaser) {
+ var IntersectResult = (function () {
+ function IntersectResult() {
+ /**
+ * Did they intersect or not?
+ * @property result
+ * @type {Boolean}
+ */
+ this.result = false;
+ }
+ IntersectResult.prototype.setTo = /**
+ *
+ * @method setTo
+ * @param {Number} x1
+ * @param {Number} y1
+ * @param {Number} [x2]
+ * @param {Number} [y2]
+ * @param {Number} [width]
+ * @param {Number} [height]
+ */
+ function (x1, y1, x2, y2, width, height) {
+ if (typeof x2 === "undefined") { x2 = 0; }
+ if (typeof y2 === "undefined") { y2 = 0; }
+ if (typeof width === "undefined") { width = 0; }
+ if (typeof height === "undefined") { height = 0; }
+ this.x = x1;
+ this.y = y1;
+ this.x1 = x1;
+ this.y1 = y1;
+ this.x2 = x2;
+ this.y2 = y2;
+ this.width = width;
+ this.height = height;
+ };
+ return IntersectResult;
+ })();
+ Phaser.IntersectResult = IntersectResult;
+})(Phaser || (Phaser = {}));
+///
+///
+///
+/**
+* Phaser - Mat3Utils
+*
+* A collection of methods useful for manipulating and performing operations on Mat3 objects.
+*
+*/
+var Phaser;
+(function (Phaser) {
+ var Mat3Utils = (function () {
+ function Mat3Utils() { }
+ Mat3Utils.transpose = /**
+ * Transpose the values of a Mat3
+ **/
+ function transpose(source, dest) {
+ if (typeof dest === "undefined") { dest = null; }
+ if(dest === null) {
+ // Transpose ourselves
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a12 = source.data[5];
+ source.data[1] = source.data[3];
+ source.data[2] = source.data[6];
+ source.data[3] = a01;
+ source.data[5] = source.data[7];
+ source.data[6] = a02;
+ source.data[7] = a12;
+ } else {
+ source.data[0] = dest.data[0];
+ source.data[1] = dest.data[3];
+ source.data[2] = dest.data[6];
+ source.data[3] = dest.data[1];
+ source.data[4] = dest.data[4];
+ source.data[5] = dest.data[7];
+ source.data[6] = dest.data[2];
+ source.data[7] = dest.data[5];
+ source.data[8] = dest.data[8];
+ }
+ return source;
+ };
+ Mat3Utils.invert = /**
+ * Inverts a Mat3
+ **/
+ function invert(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ var b01 = a22 * a11 - a12 * a21;
+ var b11 = -a22 * a10 + a12 * a20;
+ var b21 = a21 * a10 - a11 * a20;
+ // Determinant
+ var det = a00 * b01 + a01 * b11 + a02 * b21;
+ if(!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ source.data[0] = b01 * det;
+ source.data[1] = (-a22 * a01 + a02 * a21) * det;
+ source.data[2] = (a12 * a01 - a02 * a11) * det;
+ source.data[3] = b11 * det;
+ source.data[4] = (a22 * a00 - a02 * a20) * det;
+ source.data[5] = (-a12 * a00 + a02 * a10) * det;
+ source.data[6] = b21 * det;
+ source.data[7] = (-a21 * a00 + a01 * a20) * det;
+ source.data[8] = (a11 * a00 - a01 * a10) * det;
+ return source;
+ };
+ Mat3Utils.adjoint = /**
+ * Calculates the adjugate of a Mat3
+ **/
+ function adjoint(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ source.data[0] = (a11 * a22 - a12 * a21);
+ source.data[1] = (a02 * a21 - a01 * a22);
+ source.data[2] = (a01 * a12 - a02 * a11);
+ source.data[3] = (a12 * a20 - a10 * a22);
+ source.data[4] = (a00 * a22 - a02 * a20);
+ source.data[5] = (a02 * a10 - a00 * a12);
+ source.data[6] = (a10 * a21 - a11 * a20);
+ source.data[7] = (a01 * a20 - a00 * a21);
+ source.data[8] = (a00 * a11 - a01 * a10);
+ return source;
+ };
+ Mat3Utils.determinant = /**
+ * Calculates the adjugate of a Mat3
+ **/
+ function determinant(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);
+ };
+ Mat3Utils.multiply = /**
+ * Multiplies two Mat3s
+ **/
+ function multiply(source, b) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ var b00 = b.data[0];
+ var b01 = b.data[1];
+ var b02 = b.data[2];
+ var b10 = b.data[3];
+ var b11 = b.data[4];
+ var b12 = b.data[5];
+ var b20 = b.data[6];
+ var b21 = b.data[7];
+ var b22 = b.data[8];
+ source.data[0] = b00 * a00 + b01 * a10 + b02 * a20;
+ source.data[1] = b00 * a01 + b01 * a11 + b02 * a21;
+ source.data[2] = b00 * a02 + b01 * a12 + b02 * a22;
+ source.data[3] = b10 * a00 + b11 * a10 + b12 * a20;
+ source.data[4] = b10 * a01 + b11 * a11 + b12 * a21;
+ source.data[5] = b10 * a02 + b11 * a12 + b12 * a22;
+ source.data[6] = b20 * a00 + b21 * a10 + b22 * a20;
+ source.data[7] = b20 * a01 + b21 * a11 + b22 * a21;
+ source.data[8] = b20 * a02 + b21 * a12 + b22 * a22;
+ return source;
+ };
+ Mat3Utils.fromQuaternion = function fromQuaternion() {
+ };
+ Mat3Utils.normalFromMat4 = function normalFromMat4() {
+ };
+ return Mat3Utils;
+ })();
+ Phaser.Mat3Utils = Mat3Utils;
+})(Phaser || (Phaser = {}));
+///
///
///
///
@@ -19563,161 +19877,6 @@ var Phaser;
Phaser.CircleUtils = CircleUtils;
})(Phaser || (Phaser = {}));
///
-///
-///
-/**
-* Phaser - Mat3Utils
-*
-* A collection of methods useful for manipulating and performing operations on Mat3 objects.
-*
-*/
-var Phaser;
-(function (Phaser) {
- var Mat3Utils = (function () {
- function Mat3Utils() { }
- Mat3Utils.transpose = /**
- * Transpose the values of a Mat3
- **/
- function transpose(source, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if(dest === null) {
- // Transpose ourselves
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a12 = source.data[5];
- source.data[1] = source.data[3];
- source.data[2] = source.data[6];
- source.data[3] = a01;
- source.data[5] = source.data[7];
- source.data[6] = a02;
- source.data[7] = a12;
- } else {
- source.data[0] = dest.data[0];
- source.data[1] = dest.data[3];
- source.data[2] = dest.data[6];
- source.data[3] = dest.data[1];
- source.data[4] = dest.data[4];
- source.data[5] = dest.data[7];
- source.data[6] = dest.data[2];
- source.data[7] = dest.data[5];
- source.data[8] = dest.data[8];
- }
- return source;
- };
- Mat3Utils.invert = /**
- * Inverts a Mat3
- **/
- function invert(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- var b01 = a22 * a11 - a12 * a21;
- var b11 = -a22 * a10 + a12 * a20;
- var b21 = a21 * a10 - a11 * a20;
- // Determinant
- var det = a00 * b01 + a01 * b11 + a02 * b21;
- if(!det) {
- return null;
- }
- det = 1.0 / det;
- source.data[0] = b01 * det;
- source.data[1] = (-a22 * a01 + a02 * a21) * det;
- source.data[2] = (a12 * a01 - a02 * a11) * det;
- source.data[3] = b11 * det;
- source.data[4] = (a22 * a00 - a02 * a20) * det;
- source.data[5] = (-a12 * a00 + a02 * a10) * det;
- source.data[6] = b21 * det;
- source.data[7] = (-a21 * a00 + a01 * a20) * det;
- source.data[8] = (a11 * a00 - a01 * a10) * det;
- return source;
- };
- Mat3Utils.adjoint = /**
- * Calculates the adjugate of a Mat3
- **/
- function adjoint(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- source.data[0] = (a11 * a22 - a12 * a21);
- source.data[1] = (a02 * a21 - a01 * a22);
- source.data[2] = (a01 * a12 - a02 * a11);
- source.data[3] = (a12 * a20 - a10 * a22);
- source.data[4] = (a00 * a22 - a02 * a20);
- source.data[5] = (a02 * a10 - a00 * a12);
- source.data[6] = (a10 * a21 - a11 * a20);
- source.data[7] = (a01 * a20 - a00 * a21);
- source.data[8] = (a00 * a11 - a01 * a10);
- return source;
- };
- Mat3Utils.determinant = /**
- * Calculates the adjugate of a Mat3
- **/
- function determinant(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);
- };
- Mat3Utils.multiply = /**
- * Multiplies two Mat3s
- **/
- function multiply(source, b) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- var b00 = b.data[0];
- var b01 = b.data[1];
- var b02 = b.data[2];
- var b10 = b.data[3];
- var b11 = b.data[4];
- var b12 = b.data[5];
- var b20 = b.data[6];
- var b21 = b.data[7];
- var b22 = b.data[8];
- source.data[0] = b00 * a00 + b01 * a10 + b02 * a20;
- source.data[1] = b00 * a01 + b01 * a11 + b02 * a21;
- source.data[2] = b00 * a02 + b01 * a12 + b02 * a22;
- source.data[3] = b10 * a00 + b11 * a10 + b12 * a20;
- source.data[4] = b10 * a01 + b11 * a11 + b12 * a21;
- source.data[5] = b10 * a02 + b11 * a12 + b12 * a22;
- source.data[6] = b20 * a00 + b21 * a10 + b22 * a20;
- source.data[7] = b20 * a01 + b21 * a11 + b22 * a21;
- source.data[8] = b20 * a02 + b21 * a12 + b22 * a22;
- return source;
- };
- Mat3Utils.fromQuaternion = function fromQuaternion() {
- };
- Mat3Utils.normalFromMat4 = function normalFromMat4() {
- };
- return Mat3Utils;
- })();
- Phaser.Mat3Utils = Mat3Utils;
-})(Phaser || (Phaser = {}));
-///
///
///
///
@@ -19745,126 +19904,3 @@ var Phaser;
})();
Phaser.PixelUtils = PixelUtils;
})(Phaser || (Phaser = {}));
-///
-/**
-* Phaser - IntersectResult
-*
-* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
-*/
-var Phaser;
-(function (Phaser) {
- var IntersectResult = (function () {
- function IntersectResult() {
- /**
- * Did they intersect or not?
- * @property result
- * @type {Boolean}
- */
- this.result = false;
- }
- IntersectResult.prototype.setTo = /**
- *
- * @method setTo
- * @param {Number} x1
- * @param {Number} y1
- * @param {Number} [x2]
- * @param {Number} [y2]
- * @param {Number} [width]
- * @param {Number} [height]
- */
- function (x1, y1, x2, y2, width, height) {
- if (typeof x2 === "undefined") { x2 = 0; }
- if (typeof y2 === "undefined") { y2 = 0; }
- if (typeof width === "undefined") { width = 0; }
- if (typeof height === "undefined") { height = 0; }
- this.x = x1;
- this.y = y1;
- this.x1 = x1;
- this.y1 = y1;
- this.x2 = x2;
- this.y2 = y2;
- this.width = width;
- this.height = height;
- };
- return IntersectResult;
- })();
- Phaser.IntersectResult = IntersectResult;
-})(Phaser || (Phaser = {}));
-///
-/**
-* Phaser - State
-*
-* This is a base State class which can be extended if you are creating your game using TypeScript.
-*/
-var Phaser;
-(function (Phaser) {
- var State = (function () {
- /**
- * State constructor
- * Create a new State
.
- */
- function State(game) {
- this.game = game;
- this.add = game.add;
- this.camera = game.camera;
- this.cache = game.cache;
- this.input = game.input;
- this.load = game.load;
- this.math = game.math;
- this.motion = game.motion;
- this.sound = game.sound;
- this.stage = game.stage;
- this.time = game.time;
- this.tweens = game.tweens;
- this.world = game.world;
- }
- State.prototype.init = // Override these in your own States
- /**
- * Override this method to add some load operations.
- * If you need to use the loader, you may need to use them here.
- */
- function () {
- };
- State.prototype.create = /**
- * This method is called after the game engine successfully switches states.
- * Feel free to add any setup code here.(Do not load anything here, override init() instead)
- */
- function () {
- };
- State.prototype.update = /**
- * Put update logic here.
- */
- function () {
- };
- State.prototype.render = /**
- * Put render operations here.
- */
- function () {
- };
- State.prototype.paused = /**
- * This method will be called when game paused.
- */
- function () {
- };
- State.prototype.destroy = /**
- * This method will be called when the state is destroyed
- */
- function () {
- };
- return State;
- })();
- Phaser.State = State;
- /**
- * Checks for overlaps between two objects using the world QuadTree. Can be GameObject vs. GameObject, GameObject vs. Group or Group vs. Group.
- * Note: Does not take the objects scrollFactor into account. All overlaps are check in world space.
- * @param object1 The first GameObject or Group to check. If null the world.group is used.
- * @param object2 The second GameObject or Group to check.
- * @param notifyCallback A callback function that is called if the objects overlap. The two objects will be passed to this function in the same order in which you passed them to Collision.overlap.
- * @param processCallback A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then notifyCallback will only be called if processCallback returns true.
- * @param context The context in which the callbacks will be called
- * @returns {boolean} true if the objects overlap, otherwise false.
- */
- //public collide(objectOrGroup1 = null, objectOrGroup2 = null, notifyCallback = null, context? = this.game.callbackContext): bool {
- // return this.collision.overlap(objectOrGroup1, objectOrGroup2, notifyCallback, Collision.separate, context);
- //}
- })(Phaser || (Phaser = {}));
diff --git a/Tests/physics/simple test 1.js b/Tests/physics/simple test 1.js
index 7ecb08023..44a660aaa 100644
--- a/Tests/physics/simple test 1.js
+++ b/Tests/physics/simple test 1.js
@@ -1,25 +1,21 @@
-///
-(function () {
- var game = new Phaser.Game(this, 'game', 800, 600, init, create, null, render);
- function init() {
- // Using Phasers asset loader we load up a PNG from the assets folder
- game.load.image('atari', 'assets/sprites/atari130xe.png');
- game.load.image('ball', 'assets/sprites/shinyball.png');
- game.load.start();
- }
- var atari;
- var ball;
- function create() {
- // Add some gravity to the world, otherwise nothing will actually happen
- game.physics.gravity.setTo(0, 10);
- //atari = game.add.physicsSprite(220/2, 450, 'atari');
- atari = game.add.physicsSprite(320, 450, 'atari');
- // We'll make the atari sprite a static body, so it won't be influenced by gravity or other forces
- atari.body.type = Phaser.Types.BODY_STATIC;
- ball = game.add.physicsSprite(330, 0, 'ball', null, 0);
- }
- function render() {
- Phaser.DebugUtils.renderPhysicsBody(atari.body);
- Phaser.DebugUtils.renderPhysicsBody(ball.body);
- }
-})();
+(function () {
+ var game = new Phaser.Game(this, 'game', 800, 600, init, create, null, render);
+ function init() {
+ game.load.image('atari', 'assets/sprites/atari130xe.png');
+ game.load.image('ball', 'assets/sprites/shinyball.png');
+ game.load.start();
+ }
+ var atari;
+ var ball;
+ function create() {
+ game.physics.gravity.setTo(0, 5);
+ atari = game.add.physicsSprite(300, 450, 'atari', null, Phaser.Types.BODY_STATIC);
+ ball = game.add.physicsSprite(300 - 20, 0, 'ball');
+ }
+ function render() {
+ Phaser.DebugUtils.renderPhysicsBodyInfo(atari.body, 32, 32);
+ Phaser.DebugUtils.renderPhysicsBodyInfo(ball.body, 320, 32);
+ Phaser.DebugUtils.renderPhysicsBody(atari.body);
+ Phaser.DebugUtils.renderPhysicsBody(ball.body);
+ }
+})();
diff --git a/Tests/physics/simple test 1.ts b/Tests/physics/simple test 1.ts
index c35cc3c1d..aef0b3413 100644
--- a/Tests/physics/simple test 1.ts
+++ b/Tests/physics/simple test 1.ts
@@ -19,19 +19,24 @@
function create() {
// Add some gravity to the world, otherwise nothing will actually happen
- game.physics.gravity.setTo(0, 10);
+ game.physics.gravity.setTo(0, 5);
- //atari = game.add.physicsSprite(220/2, 450, 'atari');
- atari = game.add.physicsSprite(320, 450, 'atari');
// We'll make the atari sprite a static body, so it won't be influenced by gravity or other forces
- atari.body.type = Phaser.Types.BODY_STATIC;
+ atari = game.add.physicsSprite(300, 450, 'atari', null, Phaser.Types.BODY_STATIC);
- ball = game.add.physicsSprite(330, 0, 'ball', null, 0);
+ // atari = 220px width (110 = center x)
+ // ball = 32px width (16 = center x)
+
+ // Ball will be a dynamic body and fall based on gravity
+ ball = game.add.physicsSprite(300-20, 0, 'ball');
}
function render() {
+ Phaser.DebugUtils.renderPhysicsBodyInfo(atari.body, 32, 32);
+ Phaser.DebugUtils.renderPhysicsBodyInfo(ball.body, 320, 32);
+
Phaser.DebugUtils.renderPhysicsBody(atari.body);
Phaser.DebugUtils.renderPhysicsBody(ball.body);
diff --git a/build/phaser.d.ts b/build/phaser.d.ts
index d09681a83..ca8759253 100644
--- a/build/phaser.d.ts
+++ b/build/phaser.d.ts
@@ -6666,10 +6666,11 @@ module Phaser {
* @param y {number} Y position of the new sprite.
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
+ * @param [bodyType] {number} The physics body type of the object (defaults to BODY_DYNAMIC)
* @param [shapeType] The default body shape is either 0 for a Box or 1 for a Circle. See Sprite.body.addShape for custom shapes (polygons, etc)
* @returns {Sprite} The newly created sprite object.
*/
- public physicsSprite(x: number, y: number, key?: string, frame?, shapeType?: number): Sprite;
+ public physicsSprite(x: number, y: number, key?: string, frame?, bodyType?: number, shapeType?: number): Sprite;
/**
* Create a new DynamicTexture with specific size.
*
@@ -9300,6 +9301,13 @@ module Phaser {
* @param [color] {number} color of the debug info to be rendered. (format is css color string)
*/
static renderSpriteInfo(sprite: Sprite, x: number, y: number, color?: string): void;
+ /**
+ * Render debug infos. (including name, bounds info, position and some other properties)
+ * @param x {number} X position of the debug info to be rendered.
+ * @param y {number} Y position of the debug info to be rendered.
+ * @param [color] {number} color of the debug info to be rendered. (format is css color string)
+ */
+ static renderPhysicsBodyInfo(body: Physics.Body, x: number, y: number, color?: string): void;
static renderSpriteBounds(sprite: Sprite, camera?: Camera, color?: string): void;
static renderPhysicsBody(body: Physics.Body, lineWidth?: number, fillStyle?: string, sleepStyle?: string): void;
}
@@ -9543,6 +9551,110 @@ module Phaser {
}
}
/**
+* Phaser - State
+*
+* This is a base State class which can be extended if you are creating your game using TypeScript.
+*/
+module Phaser {
+ class State {
+ /**
+ * State constructor
+ * Create a new State
.
+ */
+ constructor(game: Game);
+ /**
+ * Reference to Game.
+ */
+ public game: Game;
+ /**
+ * Currently used camera.
+ * @type {Camera}
+ */
+ public camera: Camera;
+ /**
+ * Reference to the assets cache.
+ * @type {Cache}
+ */
+ public cache: Cache;
+ /**
+ * Reference to the GameObject Factory.
+ * @type {GameObjectFactory}
+ */
+ public add: GameObjectFactory;
+ /**
+ * Reference to the input manager
+ * @type {Input}
+ */
+ public input: Input;
+ /**
+ * Reference to the assets loader.
+ * @type {Loader}
+ */
+ public load: Loader;
+ /**
+ * Reference to the math helper.
+ * @type {GameMath}
+ */
+ public math: GameMath;
+ /**
+ * Reference to the motion helper.
+ * @type {Motion}
+ */
+ public motion: Motion;
+ /**
+ * Reference to the sound manager.
+ * @type {SoundManager}
+ */
+ public sound: SoundManager;
+ /**
+ * Reference to the stage.
+ * @type {Stage}
+ */
+ public stage: Stage;
+ /**
+ * Reference to game clock.
+ * @type {Time}
+ */
+ public time: Time;
+ /**
+ * Reference to the tween manager.
+ * @type {TweenManager}
+ */
+ public tweens: TweenManager;
+ /**
+ * Reference to the world.
+ * @type {World}
+ */
+ public world: World;
+ /**
+ * Override this method to add some load operations.
+ * If you need to use the loader, you may need to use them here.
+ */
+ public init(): void;
+ /**
+ * This method is called after the game engine successfully switches states.
+ * Feel free to add any setup code here.(Do not load anything here, override init() instead)
+ */
+ public create(): void;
+ /**
+ * Put update logic here.
+ */
+ public update(): void;
+ /**
+ * Put render operations here.
+ */
+ public render(): void;
+ /**
+ * This method will be called when game paused.
+ */
+ public paused(): void;
+ /**
+ * This method will be called when the state is destroyed
+ */
+ public destroy(): void;
+ }
+}
+/**
* Phaser - Components - Debug
*
*
@@ -9723,6 +9835,104 @@ module Phaser {
}
}
/**
+* Phaser - IntersectResult
+*
+* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
+*/
+module Phaser {
+ class IntersectResult {
+ /**
+ * Did they intersect or not?
+ * @property result
+ * @type {Boolean}
+ */
+ public result: bool;
+ /**
+ * @property x
+ * @type {Number}
+ */
+ public x: number;
+ /**
+ * @property y
+ * @type {Number}
+ */
+ public y: number;
+ /**
+ * @property x1
+ * @type {Number}
+ */
+ public x1: number;
+ /**
+ * @property y1
+ * @type {Number}
+ */
+ public y1: number;
+ /**
+ * @property x2
+ * @type {Number}
+ */
+ public x2: number;
+ /**
+ * @property y2
+ * @type {Number}
+ */
+ public y2: number;
+ /**
+ * @property width
+ * @type {Number}
+ */
+ public width: number;
+ /**
+ * @property height
+ * @type {Number}
+ */
+ public height: number;
+ /**
+ *
+ * @method setTo
+ * @param {Number} x1
+ * @param {Number} y1
+ * @param {Number} [x2]
+ * @param {Number} [y2]
+ * @param {Number} [width]
+ * @param {Number} [height]
+ */
+ public setTo(x1: number, y1: number, x2?: number, y2?: number, width?: number, height?: number): void;
+ }
+}
+/**
+* Phaser - Mat3Utils
+*
+* A collection of methods useful for manipulating and performing operations on Mat3 objects.
+*
+*/
+module Phaser {
+ class Mat3Utils {
+ /**
+ * Transpose the values of a Mat3
+ **/
+ static transpose(source: Mat3, dest?: Mat3): Mat3;
+ /**
+ * Inverts a Mat3
+ **/
+ static invert(source: Mat3): Mat3;
+ /**
+ * Calculates the adjugate of a Mat3
+ **/
+ static adjoint(source: Mat3): Mat3;
+ /**
+ * Calculates the adjugate of a Mat3
+ **/
+ static determinant(source: Mat3): number;
+ /**
+ * Multiplies two Mat3s
+ **/
+ static multiply(source: Mat3, b: Mat3): Mat3;
+ static fromQuaternion(): void;
+ static normalFromMat4(): void;
+ }
+}
+/**
* Phaser - CircleUtils
*
* A collection of methods useful for manipulating and comparing Circle objects.
@@ -9806,38 +10016,6 @@ module Phaser {
}
}
/**
-* Phaser - Mat3Utils
-*
-* A collection of methods useful for manipulating and performing operations on Mat3 objects.
-*
-*/
-module Phaser {
- class Mat3Utils {
- /**
- * Transpose the values of a Mat3
- **/
- static transpose(source: Mat3, dest?: Mat3): Mat3;
- /**
- * Inverts a Mat3
- **/
- static invert(source: Mat3): Mat3;
- /**
- * Calculates the adjugate of a Mat3
- **/
- static adjoint(source: Mat3): Mat3;
- /**
- * Calculates the adjugate of a Mat3
- **/
- static determinant(source: Mat3): number;
- /**
- * Multiplies two Mat3s
- **/
- static multiply(source: Mat3, b: Mat3): Mat3;
- static fromQuaternion(): void;
- static normalFromMat4(): void;
- }
-}
-/**
* Phaser - PixelUtils
*
* A collection of methods useful for manipulating pixels.
@@ -9858,173 +10036,3 @@ module Phaser {
static getPixel(key: string, x: number, y: number): number;
}
}
-/**
-* Phaser - IntersectResult
-*
-* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
-*/
-module Phaser {
- class IntersectResult {
- /**
- * Did they intersect or not?
- * @property result
- * @type {Boolean}
- */
- public result: bool;
- /**
- * @property x
- * @type {Number}
- */
- public x: number;
- /**
- * @property y
- * @type {Number}
- */
- public y: number;
- /**
- * @property x1
- * @type {Number}
- */
- public x1: number;
- /**
- * @property y1
- * @type {Number}
- */
- public y1: number;
- /**
- * @property x2
- * @type {Number}
- */
- public x2: number;
- /**
- * @property y2
- * @type {Number}
- */
- public y2: number;
- /**
- * @property width
- * @type {Number}
- */
- public width: number;
- /**
- * @property height
- * @type {Number}
- */
- public height: number;
- /**
- *
- * @method setTo
- * @param {Number} x1
- * @param {Number} y1
- * @param {Number} [x2]
- * @param {Number} [y2]
- * @param {Number} [width]
- * @param {Number} [height]
- */
- public setTo(x1: number, y1: number, x2?: number, y2?: number, width?: number, height?: number): void;
- }
-}
-/**
-* Phaser - State
-*
-* This is a base State class which can be extended if you are creating your game using TypeScript.
-*/
-module Phaser {
- class State {
- /**
- * State constructor
- * Create a new State
.
- */
- constructor(game: Game);
- /**
- * Reference to Game.
- */
- public game: Game;
- /**
- * Currently used camera.
- * @type {Camera}
- */
- public camera: Camera;
- /**
- * Reference to the assets cache.
- * @type {Cache}
- */
- public cache: Cache;
- /**
- * Reference to the GameObject Factory.
- * @type {GameObjectFactory}
- */
- public add: GameObjectFactory;
- /**
- * Reference to the input manager
- * @type {Input}
- */
- public input: Input;
- /**
- * Reference to the assets loader.
- * @type {Loader}
- */
- public load: Loader;
- /**
- * Reference to the math helper.
- * @type {GameMath}
- */
- public math: GameMath;
- /**
- * Reference to the motion helper.
- * @type {Motion}
- */
- public motion: Motion;
- /**
- * Reference to the sound manager.
- * @type {SoundManager}
- */
- public sound: SoundManager;
- /**
- * Reference to the stage.
- * @type {Stage}
- */
- public stage: Stage;
- /**
- * Reference to game clock.
- * @type {Time}
- */
- public time: Time;
- /**
- * Reference to the tween manager.
- * @type {TweenManager}
- */
- public tweens: TweenManager;
- /**
- * Reference to the world.
- * @type {World}
- */
- public world: World;
- /**
- * Override this method to add some load operations.
- * If you need to use the loader, you may need to use them here.
- */
- public init(): void;
- /**
- * This method is called after the game engine successfully switches states.
- * Feel free to add any setup code here.(Do not load anything here, override init() instead)
- */
- public create(): void;
- /**
- * Put update logic here.
- */
- public update(): void;
- /**
- * Put render operations here.
- */
- public render(): void;
- /**
- * This method will be called when game paused.
- */
- public paused(): void;
- /**
- * This method will be called when the state is destroyed
- */
- public destroy(): void;
- }
-}
diff --git a/build/phaser.js b/build/phaser.js
index 661e4d306..0df38b194 100644
--- a/build/phaser.js
+++ b/build/phaser.js
@@ -760,6 +760,7 @@ var Phaser;
if (typeof y === "undefined") { y = 0; }
this.x = x;
this.y = y;
+ return this;
}
Vec2.prototype.copyFrom = /**
* Copies the x and y properties from any given object to this Vec2.
@@ -3086,6 +3087,7 @@ var Phaser;
(function (Phaser) {
///
///
+ ///
/**
* Phaser - Components - Transform
*/
@@ -3138,7 +3140,7 @@ var Phaser;
this._halfSize.y = this.parent.height / 2;
this._offset.x = this.origin.x * this.parent.width;
this._offset.y = this.origin.y * this.parent.height;
- this._angle = Math.atan2(this.halfHeight - this._offset.y, this.halfWidth - this._offset.x);
+ this._angle = Math.atan2(this.halfHeight - this._offset.x, this.halfWidth - this._offset.y);
this._distance = Math.sqrt(((this._offset.x - this._halfSize.x) * (this._offset.x - this._halfSize.x)) + ((this._offset.y - this._halfSize.y) * (this._offset.y - this._halfSize.y)));
this._size.x = this.parent.width;
this._size.y = this.parent.height;
@@ -4123,7 +4125,7 @@ var Phaser;
* @return {Vec2} A Vec2.
*/
function normalRightHand(a, out) {
- if (typeof out === "undefined") { out = this; }
+ if (typeof out === "undefined") { out = new Phaser.Vec2(); }
return out.setTo(a.y * -1, a.x);
};
Vec2Utils.normalize = /**
@@ -6466,7 +6468,7 @@ var Phaser;
// 5) Iterative velocity constraints solver
this.velocitySolver(velocityIterations);
Physics.Manager.dump("Velocity Solvers", this.bodies[1]);
- // 6) Intergrate position
+ // 6) Integrate position
for(var i = 0; i < this._bl; i++) {
if(this.bodies[i] && this.bodies[i].isDynamic && this.bodies[i].isAwake) {
this.bodies[i].updatePosition(this._delta);
@@ -6597,12 +6599,15 @@ var Phaser;
__extends(Box, _super);
// Give in pixels
function Box(x, y, width, height) {
+ console.log('Box px', x, y, width, height);
x = Physics.Manager.pixelsToMeters(x);
y = Physics.Manager.pixelsToMeters(y);
width = Physics.Manager.pixelsToMeters(width);
height = Physics.Manager.pixelsToMeters(height);
+ console.log('Box m', x, y, width, height);
var hw = width * 0.5;
var hh = height * 0.5;
+ console.log('Box hh', hw, hh);
_super.call(this, [
{
x: -hw + x,
@@ -6932,7 +6937,7 @@ var Phaser;
Physics.Manager.write('p: ' + this.position.toString());
Physics.Manager.write('xf: ' + this.transform.toString());
this.bounds.clear();
- for(var i = 0; i < this.shapes.length; i++) {
+ for(var i = 0; i < this.shapesLength; i++) {
var shape = this.shapes[i];
shape.cacheData(this.transform);
this.bounds.addBounds(shape.bounds);
@@ -13573,14 +13578,16 @@ var Phaser;
* @param y {number} Y position of the new sprite.
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
+ * @param [bodyType] {number} The physics body type of the object (defaults to BODY_DYNAMIC)
* @param [shapeType] The default body shape is either 0 for a Box or 1 for a Circle. See Sprite.body.addShape for custom shapes (polygons, etc)
* @returns {Sprite} The newly created sprite object.
*/
- function (x, y, key, frame, shapeType) {
+ function (x, y, key, frame, bodyType, shapeType) {
if (typeof key === "undefined") { key = ''; }
if (typeof frame === "undefined") { frame = null; }
+ if (typeof bodyType === "undefined") { bodyType = Phaser.Types.BODY_DYNAMIC; }
if (typeof shapeType === "undefined") { shapeType = 0; }
- return this._world.group.add(new Phaser.Sprite(this._game, x, y, key, frame, Phaser.Types.BODY_DYNAMIC, shapeType));
+ return this._world.group.add(new Phaser.Sprite(this._game, x, y, key, frame, bodyType, shapeType));
};
GameObjectFactory.prototype.dynamicTexture = /**
* Create a new DynamicTexture with specific size.
@@ -18582,6 +18589,32 @@ var Phaser;
DebugUtils.context.fillText('cx: ' + sprite.cameraView.x + ' cy: ' + sprite.cameraView.y + ' cw: ' + sprite.cameraView.width + ' ch: ' + sprite.cameraView.height + ' cb: ' + sprite.cameraView.bottom + ' cr: ' + sprite.cameraView.right, x, y + 70);
DebugUtils.context.fillText('inCamera: ' + DebugUtils.game.renderer.inCamera(DebugUtils.game.camera, sprite), x, y + 84);
};
+ DebugUtils.renderPhysicsBodyInfo = /**
+ * Render debug infos. (including name, bounds info, position and some other properties)
+ * @param x {number} X position of the debug info to be rendered.
+ * @param y {number} Y position of the debug info to be rendered.
+ * @param [color] {number} color of the debug info to be rendered. (format is css color string)
+ */
+ function renderPhysicsBodyInfo(body, x, y, color) {
+ if (typeof color === "undefined") { color = 'rgb(255,255,255)'; }
+ DebugUtils.context.fillStyle = color;
+ DebugUtils.context.fillText('Body ID: ' + body.name, x, y);
+ DebugUtils.context.fillText('Position x: ' + body.position.x.toFixed(1) + ' y: ' + body.position.y.toFixed(1) + ' rotation: ' + body.angle.toFixed(1), x, y + 14);
+ DebugUtils.context.fillText('World x: ' + (body.position.x * 50).toFixed(1) + ' y: ' + (body.position.y * 50).toFixed(1), x, y + 28);
+ DebugUtils.context.fillText('Velocity x: ' + body.velocity.x.toFixed(1) + ' y: ' + body.velocity.y.toFixed(1), x, y + 42);
+ if(body.shapes[0].verts.length > 0) {
+ DebugUtils.context.fillText('Vert 1 x: ' + (body.shapes[0].verts[0].x * 50) + ' y: ' + (body.shapes[0].verts[0].y * 50), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + (body.shapes[0].verts[1].x * 50) + ' y: ' + (body.shapes[0].verts[1].y * 50), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + (body.shapes[0].tverts[2].x * 50) + ' y: ' + (body.shapes[0].tverts[2].y * 50), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + (body.shapes[0].tverts[3].x * 50) + ' y: ' + (body.shapes[0].tverts[3].y * 50), x, y + 98);
+ /*
+ DebugUtils.context.fillText('Vert 1 x: ' + body.shapes[0].verts[0].x.toFixed(1) + ' y: ' + body.shapes[0].verts[0].y.toFixed(1), x, y + 56);
+ DebugUtils.context.fillText('Vert 2 x: ' + body.shapes[0].verts[1].x.toFixed(1) + ' y: ' + body.shapes[0].verts[1].y.toFixed(1), x, y + 70);
+ DebugUtils.context.fillText('Vert 3 x: ' + body.shapes[0].verts[2].x.toFixed(1) + ' y: ' + body.shapes[0].verts[2].y.toFixed(1), x, y + 84);
+ DebugUtils.context.fillText('Vert 4 x: ' + body.shapes[0].verts[3].x.toFixed(1) + ' y: ' + body.shapes[0].verts[3].y.toFixed(1), x, y + 98);
+ */
+ }
+ };
DebugUtils.renderSpriteBounds = function renderSpriteBounds(sprite, camera, color) {
if (typeof camera === "undefined") { camera = null; }
if (typeof color === "undefined") { color = 'rgba(0,255,0,0.2)'; }
@@ -18597,15 +18630,18 @@ var Phaser;
if (typeof lineWidth === "undefined") { lineWidth = 1; }
if (typeof fillStyle === "undefined") { fillStyle = 'rgba(0,255,0,0.2)'; }
if (typeof sleepStyle === "undefined") { sleepStyle = 'rgba(100,100,100,0.2)'; }
- for(var s = 0; s < body.shapes.length; s++) {
+ for(var s = 0; s < body.shapesLength; s++) {
DebugUtils.context.beginPath();
if(body.shapes[s].type == Phaser.Physics.Manager.SHAPE_TYPE_POLY) {
var verts = body.shapes[s].tverts;
- DebugUtils.context.moveTo((body.position.x + verts[0].x) * 50, (body.position.y + verts[0].y) * 50);
- for(var i = 0; i < verts.length; i++) {
- DebugUtils.context.lineTo((body.position.x + verts[i].x) * 50, (body.position.y + verts[i].y) * 50);
+ // DebugUtils.context.moveTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.moveTo(verts[0].x * 50, verts[0].y * 50);
+ for(var i = 1; i < verts.length; i++) {
+ // DebugUtils.context.lineTo(body.position.x * 50 + verts[i].x, body.position.y * 50 + verts[i].y);
+ DebugUtils.context.lineTo(verts[i].x * 50, verts[i].y * 50);
}
- DebugUtils.context.lineTo((body.position.x + verts[verts.length - 1].x) * 50, (body.position.y + verts[verts.length - 1].y) * 50);
+ // DebugUtils.context.lineTo(body.position.x * 50 + verts[0].x, body.position.y * 50 + verts[0].y);
+ DebugUtils.context.lineTo(verts[0].x * 50, verts[0].y * 50);
} else if(body.shapes[s].type == Phaser.Physics.Manager.SHAPE_TYPE_CIRCLE) {
var circle = body.shapes[s];
DebugUtils.context.arc(circle.tc.x * 50, circle.tc.y * 50, circle.radius * 50, 0, Math.PI * 2, false);
@@ -19058,6 +19094,84 @@ var Phaser;
})();
Phaser.Game = Game;
})(Phaser || (Phaser = {}));
+///
+/**
+* Phaser - State
+*
+* This is a base State class which can be extended if you are creating your game using TypeScript.
+*/
+var Phaser;
+(function (Phaser) {
+ var State = (function () {
+ /**
+ * State constructor
+ * Create a new State
.
+ */
+ function State(game) {
+ this.game = game;
+ this.add = game.add;
+ this.camera = game.camera;
+ this.cache = game.cache;
+ this.input = game.input;
+ this.load = game.load;
+ this.math = game.math;
+ this.motion = game.motion;
+ this.sound = game.sound;
+ this.stage = game.stage;
+ this.time = game.time;
+ this.tweens = game.tweens;
+ this.world = game.world;
+ }
+ State.prototype.init = // Override these in your own States
+ /**
+ * Override this method to add some load operations.
+ * If you need to use the loader, you may need to use them here.
+ */
+ function () {
+ };
+ State.prototype.create = /**
+ * This method is called after the game engine successfully switches states.
+ * Feel free to add any setup code here.(Do not load anything here, override init() instead)
+ */
+ function () {
+ };
+ State.prototype.update = /**
+ * Put update logic here.
+ */
+ function () {
+ };
+ State.prototype.render = /**
+ * Put render operations here.
+ */
+ function () {
+ };
+ State.prototype.paused = /**
+ * This method will be called when game paused.
+ */
+ function () {
+ };
+ State.prototype.destroy = /**
+ * This method will be called when the state is destroyed
+ */
+ function () {
+ };
+ return State;
+ })();
+ Phaser.State = State;
+ /**
+ * Checks for overlaps between two objects using the world QuadTree. Can be GameObject vs. GameObject, GameObject vs. Group or Group vs. Group.
+ * Note: Does not take the objects scrollFactor into account. All overlaps are check in world space.
+ * @param object1 The first GameObject or Group to check. If null the world.group is used.
+ * @param object2 The second GameObject or Group to check.
+ * @param notifyCallback A callback function that is called if the objects overlap. The two objects will be passed to this function in the same order in which you passed them to Collision.overlap.
+ * @param processCallback A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then notifyCallback will only be called if processCallback returns true.
+ * @param context The context in which the callbacks will be called
+ * @returns {boolean} true if the objects overlap, otherwise false.
+ */
+ //public collide(objectOrGroup1 = null, objectOrGroup2 = null, notifyCallback = null, context? = this.game.callbackContext): bool {
+ // return this.collision.overlap(objectOrGroup1, objectOrGroup2, notifyCallback, Collision.separate, context);
+ //}
+ })(Phaser || (Phaser = {}));
var Phaser;
(function (Phaser) {
/**
@@ -19400,6 +19514,206 @@ var Phaser;
Phaser.Line = Line;
})(Phaser || (Phaser = {}));
///
+/**
+* Phaser - IntersectResult
+*
+* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
+*/
+var Phaser;
+(function (Phaser) {
+ var IntersectResult = (function () {
+ function IntersectResult() {
+ /**
+ * Did they intersect or not?
+ * @property result
+ * @type {Boolean}
+ */
+ this.result = false;
+ }
+ IntersectResult.prototype.setTo = /**
+ *
+ * @method setTo
+ * @param {Number} x1
+ * @param {Number} y1
+ * @param {Number} [x2]
+ * @param {Number} [y2]
+ * @param {Number} [width]
+ * @param {Number} [height]
+ */
+ function (x1, y1, x2, y2, width, height) {
+ if (typeof x2 === "undefined") { x2 = 0; }
+ if (typeof y2 === "undefined") { y2 = 0; }
+ if (typeof width === "undefined") { width = 0; }
+ if (typeof height === "undefined") { height = 0; }
+ this.x = x1;
+ this.y = y1;
+ this.x1 = x1;
+ this.y1 = y1;
+ this.x2 = x2;
+ this.y2 = y2;
+ this.width = width;
+ this.height = height;
+ };
+ return IntersectResult;
+ })();
+ Phaser.IntersectResult = IntersectResult;
+})(Phaser || (Phaser = {}));
+///
+///
+///
+/**
+* Phaser - Mat3Utils
+*
+* A collection of methods useful for manipulating and performing operations on Mat3 objects.
+*
+*/
+var Phaser;
+(function (Phaser) {
+ var Mat3Utils = (function () {
+ function Mat3Utils() { }
+ Mat3Utils.transpose = /**
+ * Transpose the values of a Mat3
+ **/
+ function transpose(source, dest) {
+ if (typeof dest === "undefined") { dest = null; }
+ if(dest === null) {
+ // Transpose ourselves
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a12 = source.data[5];
+ source.data[1] = source.data[3];
+ source.data[2] = source.data[6];
+ source.data[3] = a01;
+ source.data[5] = source.data[7];
+ source.data[6] = a02;
+ source.data[7] = a12;
+ } else {
+ source.data[0] = dest.data[0];
+ source.data[1] = dest.data[3];
+ source.data[2] = dest.data[6];
+ source.data[3] = dest.data[1];
+ source.data[4] = dest.data[4];
+ source.data[5] = dest.data[7];
+ source.data[6] = dest.data[2];
+ source.data[7] = dest.data[5];
+ source.data[8] = dest.data[8];
+ }
+ return source;
+ };
+ Mat3Utils.invert = /**
+ * Inverts a Mat3
+ **/
+ function invert(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ var b01 = a22 * a11 - a12 * a21;
+ var b11 = -a22 * a10 + a12 * a20;
+ var b21 = a21 * a10 - a11 * a20;
+ // Determinant
+ var det = a00 * b01 + a01 * b11 + a02 * b21;
+ if(!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ source.data[0] = b01 * det;
+ source.data[1] = (-a22 * a01 + a02 * a21) * det;
+ source.data[2] = (a12 * a01 - a02 * a11) * det;
+ source.data[3] = b11 * det;
+ source.data[4] = (a22 * a00 - a02 * a20) * det;
+ source.data[5] = (-a12 * a00 + a02 * a10) * det;
+ source.data[6] = b21 * det;
+ source.data[7] = (-a21 * a00 + a01 * a20) * det;
+ source.data[8] = (a11 * a00 - a01 * a10) * det;
+ return source;
+ };
+ Mat3Utils.adjoint = /**
+ * Calculates the adjugate of a Mat3
+ **/
+ function adjoint(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ source.data[0] = (a11 * a22 - a12 * a21);
+ source.data[1] = (a02 * a21 - a01 * a22);
+ source.data[2] = (a01 * a12 - a02 * a11);
+ source.data[3] = (a12 * a20 - a10 * a22);
+ source.data[4] = (a00 * a22 - a02 * a20);
+ source.data[5] = (a02 * a10 - a00 * a12);
+ source.data[6] = (a10 * a21 - a11 * a20);
+ source.data[7] = (a01 * a20 - a00 * a21);
+ source.data[8] = (a00 * a11 - a01 * a10);
+ return source;
+ };
+ Mat3Utils.determinant = /**
+ * Calculates the adjugate of a Mat3
+ **/
+ function determinant(source) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);
+ };
+ Mat3Utils.multiply = /**
+ * Multiplies two Mat3s
+ **/
+ function multiply(source, b) {
+ var a00 = source.data[0];
+ var a01 = source.data[1];
+ var a02 = source.data[2];
+ var a10 = source.data[3];
+ var a11 = source.data[4];
+ var a12 = source.data[5];
+ var a20 = source.data[6];
+ var a21 = source.data[7];
+ var a22 = source.data[8];
+ var b00 = b.data[0];
+ var b01 = b.data[1];
+ var b02 = b.data[2];
+ var b10 = b.data[3];
+ var b11 = b.data[4];
+ var b12 = b.data[5];
+ var b20 = b.data[6];
+ var b21 = b.data[7];
+ var b22 = b.data[8];
+ source.data[0] = b00 * a00 + b01 * a10 + b02 * a20;
+ source.data[1] = b00 * a01 + b01 * a11 + b02 * a21;
+ source.data[2] = b00 * a02 + b01 * a12 + b02 * a22;
+ source.data[3] = b10 * a00 + b11 * a10 + b12 * a20;
+ source.data[4] = b10 * a01 + b11 * a11 + b12 * a21;
+ source.data[5] = b10 * a02 + b11 * a12 + b12 * a22;
+ source.data[6] = b20 * a00 + b21 * a10 + b22 * a20;
+ source.data[7] = b20 * a01 + b21 * a11 + b22 * a21;
+ source.data[8] = b20 * a02 + b21 * a12 + b22 * a22;
+ return source;
+ };
+ Mat3Utils.fromQuaternion = function fromQuaternion() {
+ };
+ Mat3Utils.normalFromMat4 = function normalFromMat4() {
+ };
+ return Mat3Utils;
+ })();
+ Phaser.Mat3Utils = Mat3Utils;
+})(Phaser || (Phaser = {}));
+///
///
///
///
@@ -19563,161 +19877,6 @@ var Phaser;
Phaser.CircleUtils = CircleUtils;
})(Phaser || (Phaser = {}));
///
-///
-///
-/**
-* Phaser - Mat3Utils
-*
-* A collection of methods useful for manipulating and performing operations on Mat3 objects.
-*
-*/
-var Phaser;
-(function (Phaser) {
- var Mat3Utils = (function () {
- function Mat3Utils() { }
- Mat3Utils.transpose = /**
- * Transpose the values of a Mat3
- **/
- function transpose(source, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if(dest === null) {
- // Transpose ourselves
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a12 = source.data[5];
- source.data[1] = source.data[3];
- source.data[2] = source.data[6];
- source.data[3] = a01;
- source.data[5] = source.data[7];
- source.data[6] = a02;
- source.data[7] = a12;
- } else {
- source.data[0] = dest.data[0];
- source.data[1] = dest.data[3];
- source.data[2] = dest.data[6];
- source.data[3] = dest.data[1];
- source.data[4] = dest.data[4];
- source.data[5] = dest.data[7];
- source.data[6] = dest.data[2];
- source.data[7] = dest.data[5];
- source.data[8] = dest.data[8];
- }
- return source;
- };
- Mat3Utils.invert = /**
- * Inverts a Mat3
- **/
- function invert(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- var b01 = a22 * a11 - a12 * a21;
- var b11 = -a22 * a10 + a12 * a20;
- var b21 = a21 * a10 - a11 * a20;
- // Determinant
- var det = a00 * b01 + a01 * b11 + a02 * b21;
- if(!det) {
- return null;
- }
- det = 1.0 / det;
- source.data[0] = b01 * det;
- source.data[1] = (-a22 * a01 + a02 * a21) * det;
- source.data[2] = (a12 * a01 - a02 * a11) * det;
- source.data[3] = b11 * det;
- source.data[4] = (a22 * a00 - a02 * a20) * det;
- source.data[5] = (-a12 * a00 + a02 * a10) * det;
- source.data[6] = b21 * det;
- source.data[7] = (-a21 * a00 + a01 * a20) * det;
- source.data[8] = (a11 * a00 - a01 * a10) * det;
- return source;
- };
- Mat3Utils.adjoint = /**
- * Calculates the adjugate of a Mat3
- **/
- function adjoint(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- source.data[0] = (a11 * a22 - a12 * a21);
- source.data[1] = (a02 * a21 - a01 * a22);
- source.data[2] = (a01 * a12 - a02 * a11);
- source.data[3] = (a12 * a20 - a10 * a22);
- source.data[4] = (a00 * a22 - a02 * a20);
- source.data[5] = (a02 * a10 - a00 * a12);
- source.data[6] = (a10 * a21 - a11 * a20);
- source.data[7] = (a01 * a20 - a00 * a21);
- source.data[8] = (a00 * a11 - a01 * a10);
- return source;
- };
- Mat3Utils.determinant = /**
- * Calculates the adjugate of a Mat3
- **/
- function determinant(source) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);
- };
- Mat3Utils.multiply = /**
- * Multiplies two Mat3s
- **/
- function multiply(source, b) {
- var a00 = source.data[0];
- var a01 = source.data[1];
- var a02 = source.data[2];
- var a10 = source.data[3];
- var a11 = source.data[4];
- var a12 = source.data[5];
- var a20 = source.data[6];
- var a21 = source.data[7];
- var a22 = source.data[8];
- var b00 = b.data[0];
- var b01 = b.data[1];
- var b02 = b.data[2];
- var b10 = b.data[3];
- var b11 = b.data[4];
- var b12 = b.data[5];
- var b20 = b.data[6];
- var b21 = b.data[7];
- var b22 = b.data[8];
- source.data[0] = b00 * a00 + b01 * a10 + b02 * a20;
- source.data[1] = b00 * a01 + b01 * a11 + b02 * a21;
- source.data[2] = b00 * a02 + b01 * a12 + b02 * a22;
- source.data[3] = b10 * a00 + b11 * a10 + b12 * a20;
- source.data[4] = b10 * a01 + b11 * a11 + b12 * a21;
- source.data[5] = b10 * a02 + b11 * a12 + b12 * a22;
- source.data[6] = b20 * a00 + b21 * a10 + b22 * a20;
- source.data[7] = b20 * a01 + b21 * a11 + b22 * a21;
- source.data[8] = b20 * a02 + b21 * a12 + b22 * a22;
- return source;
- };
- Mat3Utils.fromQuaternion = function fromQuaternion() {
- };
- Mat3Utils.normalFromMat4 = function normalFromMat4() {
- };
- return Mat3Utils;
- })();
- Phaser.Mat3Utils = Mat3Utils;
-})(Phaser || (Phaser = {}));
-///
///
///
///
@@ -19745,126 +19904,3 @@ var Phaser;
})();
Phaser.PixelUtils = PixelUtils;
})(Phaser || (Phaser = {}));
-///
-/**
-* Phaser - IntersectResult
-*
-* A light-weight result object to hold the results of an intersection. For when you need more than just true/false.
-*/
-var Phaser;
-(function (Phaser) {
- var IntersectResult = (function () {
- function IntersectResult() {
- /**
- * Did they intersect or not?
- * @property result
- * @type {Boolean}
- */
- this.result = false;
- }
- IntersectResult.prototype.setTo = /**
- *
- * @method setTo
- * @param {Number} x1
- * @param {Number} y1
- * @param {Number} [x2]
- * @param {Number} [y2]
- * @param {Number} [width]
- * @param {Number} [height]
- */
- function (x1, y1, x2, y2, width, height) {
- if (typeof x2 === "undefined") { x2 = 0; }
- if (typeof y2 === "undefined") { y2 = 0; }
- if (typeof width === "undefined") { width = 0; }
- if (typeof height === "undefined") { height = 0; }
- this.x = x1;
- this.y = y1;
- this.x1 = x1;
- this.y1 = y1;
- this.x2 = x2;
- this.y2 = y2;
- this.width = width;
- this.height = height;
- };
- return IntersectResult;
- })();
- Phaser.IntersectResult = IntersectResult;
-})(Phaser || (Phaser = {}));
-///
-/**
-* Phaser - State
-*
-* This is a base State class which can be extended if you are creating your game using TypeScript.
-*/
-var Phaser;
-(function (Phaser) {
- var State = (function () {
- /**
- * State constructor
- * Create a new State
.
- */
- function State(game) {
- this.game = game;
- this.add = game.add;
- this.camera = game.camera;
- this.cache = game.cache;
- this.input = game.input;
- this.load = game.load;
- this.math = game.math;
- this.motion = game.motion;
- this.sound = game.sound;
- this.stage = game.stage;
- this.time = game.time;
- this.tweens = game.tweens;
- this.world = game.world;
- }
- State.prototype.init = // Override these in your own States
- /**
- * Override this method to add some load operations.
- * If you need to use the loader, you may need to use them here.
- */
- function () {
- };
- State.prototype.create = /**
- * This method is called after the game engine successfully switches states.
- * Feel free to add any setup code here.(Do not load anything here, override init() instead)
- */
- function () {
- };
- State.prototype.update = /**
- * Put update logic here.
- */
- function () {
- };
- State.prototype.render = /**
- * Put render operations here.
- */
- function () {
- };
- State.prototype.paused = /**
- * This method will be called when game paused.
- */
- function () {
- };
- State.prototype.destroy = /**
- * This method will be called when the state is destroyed
- */
- function () {
- };
- return State;
- })();
- Phaser.State = State;
- /**
- * Checks for overlaps between two objects using the world QuadTree. Can be GameObject vs. GameObject, GameObject vs. Group or Group vs. Group.
- * Note: Does not take the objects scrollFactor into account. All overlaps are check in world space.
- * @param object1 The first GameObject or Group to check. If null the world.group is used.
- * @param object2 The second GameObject or Group to check.
- * @param notifyCallback A callback function that is called if the objects overlap. The two objects will be passed to this function in the same order in which you passed them to Collision.overlap.
- * @param processCallback A callback function that lets you perform additional checks against the two objects if they overlap. If this is set then notifyCallback will only be called if processCallback returns true.
- * @param context The context in which the callbacks will be called
- * @returns {boolean} true if the objects overlap, otherwise false.
- */
- //public collide(objectOrGroup1 = null, objectOrGroup2 = null, notifyCallback = null, context? = this.game.callbackContext): bool {
- // return this.collision.overlap(objectOrGroup1, objectOrGroup2, notifyCallback, Collision.separate, context);
- //}
- })(Phaser || (Phaser = {}));