Compiling, but not yet running correctly. Need to add body renderer next.

This commit is contained in:
Richard Davey
2013-06-14 04:13:00 +01:00
parent 232c96cc54
commit 114d1d2fbf
10 changed files with 376 additions and 61 deletions
+32 -9
View File
@@ -17,17 +17,24 @@ module Phaser.Physics.Advanced {
export class Body {
constructor(sprite: Phaser.Sprite, type: number) {
this.sprite = sprite;
this.game = sprite.game;
constructor(sprite: Phaser.Sprite, type: number, x?: number = 0, y?: number = 0) {
this.id = Phaser.Physics.Advanced.Manager.bodyCounter++;
this.name = 'body' + this.id;
this.type = type;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
if (sprite)
{
this.sprite = sprite;
this.game = sprite.game;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
}
else
{
this.position = new Phaser.Vec2(x, y);
this.angle = 0;
}
this.transform = new Phaser.Transform(this.position, this.angle);
this.centroid = new Phaser.Vec2;
@@ -136,8 +143,22 @@ module Phaser.Physics.Advanced {
public stepCount = 0;
public space: Space;
// duplicate = Util function
// serialize = Util function
/*
public duplicate() {
var body = new Body(this.type, this.transform.t, this.angle);
for (var i = 0; i < this.shapes.length; i++)
{
body.addShape(this.shapes[i].duplicate());
}
body.resetMassData();
return body;
}
*/
public get isDisabled(): bool {
return this.type == Phaser.Types.BODY_DISABLED ? true : false;
@@ -274,6 +295,8 @@ module Phaser.Physics.Advanced {
var mass = shape.area() * shape.density;
var inertia = shape.inertia(mass);
console.log('rmd', centroid, shape);
totalMassCentroid.multiplyAddByScalar(centroid, mass);
totalMass += mass;
totalInertia += inertia;
@@ -335,7 +358,7 @@ module Phaser.Physics.Advanced {
}
private _tempVec2: Phaser.Vec2;
private _tempVec2: Phaser.Vec2 = new Phaser.Vec2;
public updateVelocity(gravity, dt, damping) {
+89 -1
View File
@@ -17,6 +17,8 @@ module Phaser.Physics.Advanced {
this.game = game;
this.space = new Space();
Manager.collision = new Collision();
}
@@ -59,6 +61,92 @@ module Phaser.Physics.Advanced {
public static bodyCounter: number = 0;
public static jointCounter: number = 0;
public static shapeCounter: number = 0;
public space: Space;
public lastTime: number = 0;
public frameRateHz: number = 60;
public timeDelta: number = 0;
public paused: bool = false;
public step: bool = false; // step through the simulation (i.e. per click)
public velocityIterations: number = 8;
public positionIterations: number = 4;
public allowSleep: bool = true;
public warmStarting: bool = true;
public update() {
var time = Date.now();
var frameTime = (time - this.lastTime) / 1000;
this.lastTime = time;
// if rAf - why?
frameTime = Math.floor(frameTime * 60 + 0.5) / 60;
//if (!mouseDown)
//{
// var p = canvasToWorld(mousePosition);
// var body = space.findBodyByPoint(p);
// //domCanvas.style.cursor = body ? "pointer" : "default";
//}
if (!this.paused || this.step)
{
var h = 1 / this.frameRateHz;
this.timeDelta += frameTime;
if (this.step)
{
this.step = false;
this.timeDelta = h;
}
for (var maxSteps = 4; maxSteps > 0 && this.timeDelta >= h; maxSteps--)
{
this.space.step(h, this.velocityIterations, this.positionIterations, this.warmStarting, this.allowSleep);
this.timeDelta -= h;
}
if (this.timeDelta > h)
{
this.timeDelta = 0;
}
//if (sceneIndex < demoArr.length)
//{
// demo = demoArr[sceneIndex];
// demo.runFrame();
//}
}
//frameCount++;
}
public static pixelsToMeters(value: number): number {
return value * 0.02;
@@ -81,7 +169,7 @@ module Phaser.Physics.Advanced {
}
public static inertiaForCircle(mass, center, radius_outer, radius_inner) {
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthsq());
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthSq());
}
public static areaForSegment(a, b, radius) {
+3 -2
View File
@@ -3,6 +3,7 @@
/// <reference path="../../math/Vec2Utils.ts" />
/// <reference path="Manager.ts" />
/// <reference path="Body.ts" />
/// <reference path="Bounds.ts" />
/**
* Phaser - Advanced Physics - Shape
@@ -23,7 +24,7 @@ module Phaser.Physics.Advanced {
this.friction = 1.0;
this.density = 1;
//this.bounds = new Bounds;
this.bounds = new Bounds;
}
@@ -40,7 +41,7 @@ module Phaser.Physics.Advanced {
public density: number;
// Axis-aligned bounding box
public bounds;
public bounds: Bounds;
}
+3 -3
View File
@@ -56,7 +56,7 @@ module Phaser.Physics.Advanced {
}
public centroid() {
//return this.center.duplicate();
return Phaser.Vec2Utils.clone(this.center);
}
public inertia(mass) {
@@ -66,8 +66,8 @@ module Phaser.Physics.Advanced {
public cacheData(xf) {
this.tc = xf.transform(this.center);
this.bounds.mins.set(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.set(this.tc.x + this.radius, this.tc.y + this.radius);
this.bounds.mins.setTo(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.setTo(this.tc.x + this.radius, this.tc.y + this.radius);
}
public pointQuery(p) {
+2 -2
View File
@@ -116,8 +116,8 @@ module Phaser.Physics.Advanced {
t = this.ta.y;
}
this.bounds.mins.set(l - this.radius, b - this.radius);
this.bounds.maxs.set(r + this.radius, t + this.radius);
this.bounds.mins.setTo(l - this.radius, b - this.radius);
this.bounds.maxs.setTo(r + this.radius, t + this.radius);
}
+85 -16
View File
@@ -19112,7 +19112,18 @@ var Phaser;
(function (Advanced) {
var Manager = (function () {
function Manager(game) {
this.lastTime = 0;
this.frameRateHz = 60;
this.timeDelta = 0;
this.paused = false;
this.step = false;
// step through the simulation (i.e. per click)
this.velocityIterations = 8;
this.positionIterations = 4;
this.allowSleep = true;
this.warmStarting = true;
this.game = game;
this.space = new Advanced.Space();
Manager.collision = new Advanced.Collision();
}
Manager.SHAPE_TYPE_CIRCLE = 0;
@@ -19141,6 +19152,40 @@ var Phaser;
Manager.bodyCounter = 0;
Manager.jointCounter = 0;
Manager.shapeCounter = 0;
Manager.prototype.update = function () {
var time = Date.now();
var frameTime = (time - this.lastTime) / 1000;
this.lastTime = time;
// if rAf - why?
frameTime = Math.floor(frameTime * 60 + 0.5) / 60;
//if (!mouseDown)
//{
// var p = canvasToWorld(mousePosition);
// var body = space.findBodyByPoint(p);
// //domCanvas.style.cursor = body ? "pointer" : "default";
//}
if(!this.paused || this.step) {
var h = 1 / this.frameRateHz;
this.timeDelta += frameTime;
if(this.step) {
this.step = false;
this.timeDelta = h;
}
for(var maxSteps = 4; maxSteps > 0 && this.timeDelta >= h; maxSteps--) {
this.space.step(h, this.velocityIterations, this.positionIterations, this.warmStarting, this.allowSleep);
this.timeDelta -= h;
}
if(this.timeDelta > h) {
this.timeDelta = 0;
}
//if (sceneIndex < demoArr.length)
//{
// demo = demoArr[sceneIndex];
// demo.runFrame();
//}
}
//frameCount++;
};
Manager.pixelsToMeters = function pixelsToMeters(value) {
return value * 0.02;
};
@@ -19157,7 +19202,7 @@ var Phaser;
return Math.PI * (radius_outer * radius_outer - radius_inner * radius_inner);
};
Manager.inertiaForCircle = function inertiaForCircle(mass, center, radius_outer, radius_inner) {
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthsq());
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthSq());
};
Manager.areaForSegment = function areaForSegment(a, b, radius) {
return radius * (Math.PI * radius + 2 * Phaser.Vec2Utils.distance(a, b));
@@ -19432,6 +19477,7 @@ var Phaser;
/// <reference path="../../math/Vec2Utils.ts" />
/// <reference path="Manager.ts" />
/// <reference path="Body.ts" />
/// <reference path="Bounds.ts" />
/**
* Phaser - Advanced Physics - Shape
*
@@ -19445,8 +19491,8 @@ var Phaser;
this.elasticity = 0.0;
this.friction = 1.0;
this.density = 1;
//this.bounds = new Bounds;
}
this.bounds = new Advanced.Bounds();
}
return Shape;
})();
Advanced.Shape = Shape;
@@ -19780,15 +19826,15 @@ var Phaser;
return Advanced.Manager.areaForCircle(this.radius, 0);
};
ShapeCircle.prototype.centroid = function () {
//return this.center.duplicate();
};
return Phaser.Vec2Utils.clone(this.center);
};
ShapeCircle.prototype.inertia = function (mass) {
return Advanced.Manager.inertiaForCircle(mass, this.center, this.radius, 0);
};
ShapeCircle.prototype.cacheData = function (xf) {
this.tc = xf.transform(this.center);
this.bounds.mins.set(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.set(this.tc.x + this.radius, this.tc.y + this.radius);
this.bounds.mins.setTo(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.setTo(this.tc.x + this.radius, this.tc.y + this.radius);
};
ShapeCircle.prototype.pointQuery = function (p) {
//return vec2.distsq(this.tc, p) < (this.r * this.r);
@@ -20731,7 +20777,9 @@ var Phaser;
*/
(function (Advanced) {
var Body = (function () {
function Body(sprite, type) {
function Body(sprite, type, x, y) {
if (typeof x === "undefined") { x = 0; }
if (typeof y === "undefined") { y = 0; }
// Shapes
this.shapes = [];
// Joints
@@ -20742,13 +20790,19 @@ var Phaser;
this.categoryBits = 0x0001;
this.maskBits = 0xFFFF;
this.stepCount = 0;
this.sprite = sprite;
this.game = sprite.game;
this._tempVec2 = new Phaser.Vec2();
this.id = Phaser.Physics.Advanced.Manager.bodyCounter++;
this.name = 'body' + this.id;
this.type = type;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
if(sprite) {
this.sprite = sprite;
this.game = sprite.game;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
} else {
this.position = new Phaser.Vec2(x, y);
this.angle = 0;
}
this.transform = new Phaser.Transform(this.position, this.angle);
this.centroid = new Phaser.Vec2();
this.velocity = new Phaser.Vec2();
@@ -20770,8 +20824,22 @@ var Phaser;
this.stepCount = 0;
}
Object.defineProperty(Body.prototype, "isDisabled", {
get: // duplicate = Util function
// serialize = Util function
get: /*
public duplicate() {
var body = new Body(this.type, this.transform.t, this.angle);
for (var i = 0; i < this.shapes.length; i++)
{
body.addShape(this.shapes[i].duplicate());
}
body.resetMassData();
return body;
}
*/
function () {
return this.type == Phaser.Types.BODY_DISABLED ? true : false;
},
@@ -20875,6 +20943,7 @@ var Phaser;
var centroid = shape.centroid();
var mass = shape.area() * shape.density;
var inertia = shape.inertia(mass);
console.log('rmd', centroid, shape);
totalMassCentroid.multiplyAddByScalar(centroid, mass);
totalMass += mass;
totalInertia += inertia;
@@ -21357,8 +21426,8 @@ var Phaser;
b = this.tb.y;
t = this.ta.y;
}
this.bounds.mins.set(l - this.radius, b - this.radius);
this.bounds.maxs.set(r + this.radius, t + this.radius);
this.bounds.mins.setTo(l - this.radius, b - this.radius);
this.bounds.maxs.setTo(r + this.radius, t + this.radius);
};
ShapeSegment.prototype.pointQuery = function (p) {
if(!this.bounds.containPoint(p)) {
+28 -5
View File
@@ -1,5 +1,7 @@
/// <reference path="../../Phaser/Game.ts" />
/// <reference path="../../Phaser/physics/advanced/Manager.ts" />
/// <reference path="../../Phaser/physics/advanced/ShapeBox.ts" />
/// <reference path="../../Phaser/physics/advanced/ShapeCircle.ts" />
(function () {
var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render);
function init() {
@@ -9,16 +11,37 @@
}
var atari;
var card;
var physics;
var circle;
function create() {
atari = game.add.sprite(200, 310, 'atari');
atari = game.add.sprite(200, 100, 'atari');
//card = game.add.sprite(500, 300, 'card');
var body = new Phaser.Physics.Advanced.Body(atari, Phaser.Types.BODY_DYNAMIC);
var body2 = new Phaser.Physics.Advanced.Body(atari, Phaser.Types.BODY_DYNAMIC);
console.log(body);
console.log(body2);
physics = new Phaser.Physics.Advanced.Manager(game);
var walls = new Phaser.Physics.Advanced.Body(null, Phaser.Types.BODY_STATIC);
walls.game = game;
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(0, 0.2, 20.48, 0.4));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(0, 15.16, 20.48, 0.4));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(-10.04, 7.68, 0.4, 14.56));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(10.04, 7.68, 0.4, 14.56));
walls.resetMassData();
physics.space.addBody(walls);
// Add a circle
circle = new Phaser.Physics.Advanced.Body(null, Phaser.Types.BODY_DYNAMIC, 4, 4);
circle.game = game;
var shape = new Phaser.Physics.Advanced.ShapeCircle(0.4, 0, 0);
shape.elasticity = 0.5;
shape.friction = 1.0;
shape.density = 1;
circle.addShape(shape);
circle.resetMassData();
physics.space.addBody(circle);
}
function update() {
physics.update();
}
function render() {
game.stage.context.fillStyle = 'rgb(255,255,0)';
game.stage.context.fillText('x: ' + circle.position.x + ' y: ' + circle.position.y, 32, 32);
game.stage.context.fillText('vx: ' + circle.velocity.x + ' vy: ' + circle.velocity.y, 32, 64);
}
})();
+35 -4
View File
@@ -1,5 +1,7 @@
/// <reference path="../../Phaser/Game.ts" />
/// <reference path="../../Phaser/physics/advanced/Manager.ts" />
/// <reference path="../../Phaser/physics/advanced/ShapeBox.ts" />
/// <reference path="../../Phaser/physics/advanced/ShapeCircle.ts" />
(function () {
@@ -15,24 +17,53 @@
var atari: Phaser.Sprite;
var card: Phaser.Sprite;
var physics: Phaser.Physics.Advanced.Manager;
var circle: Phaser.Physics.Advanced.Body;
function create() {
atari = game.add.sprite(200, 310, 'atari');
atari = game.add.sprite(200, 100, 'atari');
//card = game.add.sprite(500, 300, 'card');
var body = new Phaser.Physics.Advanced.Body(atari, Phaser.Types.BODY_DYNAMIC);
physics = new Phaser.Physics.Advanced.Manager(game);
//body.
var walls = new Phaser.Physics.Advanced.Body(null, Phaser.Types.BODY_STATIC);
walls.game = game;
console.log(body);
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(0, 0.2, 20.48, 0.4));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(0, 15.16, 20.48, 0.4));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(-10.04, 7.68, 0.4, 14.56));
walls.addShape(new Phaser.Physics.Advanced.ShapeBox(10.04, 7.68, 0.4, 14.56));
walls.resetMassData();
physics.space.addBody(walls);
// Add a circle
circle = new Phaser.Physics.Advanced.Body(null, Phaser.Types.BODY_DYNAMIC, 4, 4);
circle.game = game;
var shape = new Phaser.Physics.Advanced.ShapeCircle(0.4, 0, 0);
shape.elasticity = 0.5;
shape.friction = 1.0;
shape.density = 1;
circle.addShape(shape);
circle.resetMassData();
physics.space.addBody(circle);
}
function update() {
physics.update();
}
function render() {
game.stage.context.fillStyle = 'rgb(255,255,0)';
game.stage.context.fillText('x: ' + circle.position.x + ' y: ' + circle.position.y, 32, 32);
game.stage.context.fillText('vx: ' + circle.velocity.x + ' vy: ' + circle.velocity.y, 32, 64);
}
})();
+14 -3
View File
@@ -9610,6 +9610,17 @@ module Phaser.Physics.Advanced {
static bodyCounter: number;
static jointCounter: number;
static shapeCounter: number;
public space: Space;
public lastTime: number;
public frameRateHz: number;
public timeDelta: number;
public paused: bool;
public step: bool;
public velocityIterations: number;
public positionIterations: number;
public allowSleep: bool;
public warmStarting: bool;
public update(): void;
static pixelsToMeters(value: number): number;
static metersToPixels(value: number): number;
static p2m(value: number): number;
@@ -9671,7 +9682,7 @@ module Phaser.Physics.Advanced {
public elasticity: number;
public friction: number;
public density: number;
public bounds;
public bounds: Bounds;
}
}
/**
@@ -9730,7 +9741,7 @@ module Phaser.Physics.Advanced {
public transform(xf): void;
public untransform(xf): void;
public area(): number;
public centroid(): void;
public centroid(): Vec2;
public inertia(mass): number;
public cacheData(xf): void;
public pointQuery(p): bool;
@@ -9838,7 +9849,7 @@ module Phaser.Physics.Advanced {
*/
module Phaser.Physics.Advanced {
class Body {
constructor(sprite: Sprite, type: number);
constructor(sprite: Sprite, type: number, x?: number, y?: number);
/**
* Reference to Phaser.Game
*/
+85 -16
View File
@@ -19112,7 +19112,18 @@ var Phaser;
(function (Advanced) {
var Manager = (function () {
function Manager(game) {
this.lastTime = 0;
this.frameRateHz = 60;
this.timeDelta = 0;
this.paused = false;
this.step = false;
// step through the simulation (i.e. per click)
this.velocityIterations = 8;
this.positionIterations = 4;
this.allowSleep = true;
this.warmStarting = true;
this.game = game;
this.space = new Advanced.Space();
Manager.collision = new Advanced.Collision();
}
Manager.SHAPE_TYPE_CIRCLE = 0;
@@ -19141,6 +19152,40 @@ var Phaser;
Manager.bodyCounter = 0;
Manager.jointCounter = 0;
Manager.shapeCounter = 0;
Manager.prototype.update = function () {
var time = Date.now();
var frameTime = (time - this.lastTime) / 1000;
this.lastTime = time;
// if rAf - why?
frameTime = Math.floor(frameTime * 60 + 0.5) / 60;
//if (!mouseDown)
//{
// var p = canvasToWorld(mousePosition);
// var body = space.findBodyByPoint(p);
// //domCanvas.style.cursor = body ? "pointer" : "default";
//}
if(!this.paused || this.step) {
var h = 1 / this.frameRateHz;
this.timeDelta += frameTime;
if(this.step) {
this.step = false;
this.timeDelta = h;
}
for(var maxSteps = 4; maxSteps > 0 && this.timeDelta >= h; maxSteps--) {
this.space.step(h, this.velocityIterations, this.positionIterations, this.warmStarting, this.allowSleep);
this.timeDelta -= h;
}
if(this.timeDelta > h) {
this.timeDelta = 0;
}
//if (sceneIndex < demoArr.length)
//{
// demo = demoArr[sceneIndex];
// demo.runFrame();
//}
}
//frameCount++;
};
Manager.pixelsToMeters = function pixelsToMeters(value) {
return value * 0.02;
};
@@ -19157,7 +19202,7 @@ var Phaser;
return Math.PI * (radius_outer * radius_outer - radius_inner * radius_inner);
};
Manager.inertiaForCircle = function inertiaForCircle(mass, center, radius_outer, radius_inner) {
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthsq());
return mass * ((radius_outer * radius_outer + radius_inner * radius_inner) * 0.5 + center.lengthSq());
};
Manager.areaForSegment = function areaForSegment(a, b, radius) {
return radius * (Math.PI * radius + 2 * Phaser.Vec2Utils.distance(a, b));
@@ -19432,6 +19477,7 @@ var Phaser;
/// <reference path="../../math/Vec2Utils.ts" />
/// <reference path="Manager.ts" />
/// <reference path="Body.ts" />
/// <reference path="Bounds.ts" />
/**
* Phaser - Advanced Physics - Shape
*
@@ -19445,8 +19491,8 @@ var Phaser;
this.elasticity = 0.0;
this.friction = 1.0;
this.density = 1;
//this.bounds = new Bounds;
}
this.bounds = new Advanced.Bounds();
}
return Shape;
})();
Advanced.Shape = Shape;
@@ -19780,15 +19826,15 @@ var Phaser;
return Advanced.Manager.areaForCircle(this.radius, 0);
};
ShapeCircle.prototype.centroid = function () {
//return this.center.duplicate();
};
return Phaser.Vec2Utils.clone(this.center);
};
ShapeCircle.prototype.inertia = function (mass) {
return Advanced.Manager.inertiaForCircle(mass, this.center, this.radius, 0);
};
ShapeCircle.prototype.cacheData = function (xf) {
this.tc = xf.transform(this.center);
this.bounds.mins.set(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.set(this.tc.x + this.radius, this.tc.y + this.radius);
this.bounds.mins.setTo(this.tc.x - this.radius, this.tc.y - this.radius);
this.bounds.maxs.setTo(this.tc.x + this.radius, this.tc.y + this.radius);
};
ShapeCircle.prototype.pointQuery = function (p) {
//return vec2.distsq(this.tc, p) < (this.r * this.r);
@@ -20731,7 +20777,9 @@ var Phaser;
*/
(function (Advanced) {
var Body = (function () {
function Body(sprite, type) {
function Body(sprite, type, x, y) {
if (typeof x === "undefined") { x = 0; }
if (typeof y === "undefined") { y = 0; }
// Shapes
this.shapes = [];
// Joints
@@ -20742,13 +20790,19 @@ var Phaser;
this.categoryBits = 0x0001;
this.maskBits = 0xFFFF;
this.stepCount = 0;
this.sprite = sprite;
this.game = sprite.game;
this._tempVec2 = new Phaser.Vec2();
this.id = Phaser.Physics.Advanced.Manager.bodyCounter++;
this.name = 'body' + this.id;
this.type = type;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
if(sprite) {
this.sprite = sprite;
this.game = sprite.game;
this.position = new Phaser.Vec2(sprite.x, sprite.y);
this.angle = sprite.rotation;
} else {
this.position = new Phaser.Vec2(x, y);
this.angle = 0;
}
this.transform = new Phaser.Transform(this.position, this.angle);
this.centroid = new Phaser.Vec2();
this.velocity = new Phaser.Vec2();
@@ -20770,8 +20824,22 @@ var Phaser;
this.stepCount = 0;
}
Object.defineProperty(Body.prototype, "isDisabled", {
get: // duplicate = Util function
// serialize = Util function
get: /*
public duplicate() {
var body = new Body(this.type, this.transform.t, this.angle);
for (var i = 0; i < this.shapes.length; i++)
{
body.addShape(this.shapes[i].duplicate());
}
body.resetMassData();
return body;
}
*/
function () {
return this.type == Phaser.Types.BODY_DISABLED ? true : false;
},
@@ -20875,6 +20943,7 @@ var Phaser;
var centroid = shape.centroid();
var mass = shape.area() * shape.density;
var inertia = shape.inertia(mass);
console.log('rmd', centroid, shape);
totalMassCentroid.multiplyAddByScalar(centroid, mass);
totalMass += mass;
totalInertia += inertia;
@@ -21357,8 +21426,8 @@ var Phaser;
b = this.tb.y;
t = this.ta.y;
}
this.bounds.mins.set(l - this.radius, b - this.radius);
this.bounds.maxs.set(r + this.radius, t + this.radius);
this.bounds.mins.setTo(l - this.radius, b - this.radius);
this.bounds.maxs.setTo(r + this.radius, t + this.radius);
};
ShapeSegment.prototype.pointQuery = function (p) {
if(!this.bounds.containPoint(p)) {