Debug drawing now happens after collision solver.

This commit is contained in:
photonstorm 2017-08-30 15:50:27 +01:00
parent 48db06febd
commit fd45182bde
2 changed files with 44 additions and 28 deletions

View file

@ -89,7 +89,7 @@ var Body = new Class({
this.collides = COLLIDES.NEVER; this.collides = COLLIDES.NEVER;
}, },
update: function (delta, drawDebug) update: function (delta)
{ {
var pos = this.pos; var pos = this.pos;
@ -119,32 +119,37 @@ var Body = new Class({
go.y = (pos.y - this.offset.y) + go.displayOriginY * go.scaleY; go.y = (pos.y - this.offset.y) + go.displayOriginY * go.scaleY;
} }
if (drawDebug)
{
var graphic = this.world.debugGraphic;
if (this.debugShowBody)
{
graphic.lineStyle(1, this.debugBodyColor, 1);
graphic.strokeRect(pos.x, pos.y, this.size.x, this.size.y);
}
if (this.debugShowVelocity)
{
var x = pos.x + this.size.x / 2;
var y = pos.y + this.size.y / 2;
graphic.lineStyle(1, this.world.defaults.velocityDebugColor, 1);
graphic.lineBetween(x, y, x + this.vel.x, y + this.vel.y);
}
}
if (this.updateCallback) if (this.updateCallback)
{ {
this.updateCallback(this); this.updateCallback(this);
} }
}, },
drawDebug: function (graphic)
{
var pos = this.pos;
if (this.debugShowBody)
{
graphic.lineStyle(1, this.debugBodyColor, 1);
graphic.strokeRect(pos.x, pos.y, this.size.x, this.size.y);
}
if (this.debugShowVelocity)
{
var x = pos.x + this.size.x / 2;
var y = pos.y + this.size.y / 2;
graphic.lineStyle(1, this.world.defaults.velocityDebugColor, 1);
graphic.lineBetween(x, y, x + this.vel.x, y + this.vel.y);
}
},
willDrawDebug: function ()
{
return (this.debugShowBody || this.debugShowVelocity);
},
skipHash: function () skipHash: function ()
{ {
return (!this.enabled || (this.type === 0 && this.checkAgainst === 0 && this.collides === 0)); return (!this.enabled || (this.type === 0 && this.checkAgainst === 0 && this.collides === 0));

View file

@ -226,12 +226,6 @@ var World = new Class({
var len = bodies.length; var len = bodies.length;
var hash = {}; var hash = {};
var size = this.cellSize; var size = this.cellSize;
var debug = this.drawDebug;
if (debug)
{
this.debugGraphic.clear();
}
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
{ {
@ -239,7 +233,7 @@ var World = new Class({
if (body.enabled) if (body.enabled)
{ {
body.update(this.delta, debug); body.update(this.delta);
} }
} }
@ -254,6 +248,23 @@ var World = new Class({
this.checkHash(body, hash, size); this.checkHash(body, hash, size);
} }
} }
if (this.drawDebug)
{
var graphics = this.debugGraphic;
graphics.clear();
for (i = 0; i < len; i++)
{
body = bodies[i];
if (body.willDrawDebug())
{
body.drawDebug(graphics);
}
}
}
}, },
// Check the body against the spatial hash // Check the body against the spatial hash