public void DrawDebugData()
{
if (_debugDraw == null)
{
return;
}
DebugDraw.DrawFlags flags = _debugDraw.Flags;
if ((flags & DebugDraw.DrawFlags.Shape) != 0)
{
for (Body b = _bodyList; b != null; b = b.GetNext())
{
Transform xf = b.GetTransform();
for (Fixture f = b.GetFixtureList(); f != null; f = f.GetNext())
{
if (b.IsStatic())
{
DrawShape(f, xf, new Color(0.5f, 0.9f, 0.5f));
}
else if (b.IsSleeping())
{
DrawShape(f, xf, new Color(0.5f, 0.5f, 0.9f));
}
else
{
DrawShape(f, xf, new Color(0.9f, 0.9f, 0.9f));
}
}
}
}
if ((flags & DebugDraw.DrawFlags.Joint) != 0)
{
for (Joint j = _jointList; j != null; j = j.GetNext())
{
if (j.GetType() != JointType.MouseJoint)
{
DrawJoint(j);
}
}
}
if ((flags & DebugDraw.DrawFlags.Pair) != 0)
{
// TODO_ERIN
}
if ((flags & DebugDraw.DrawFlags.Aabb) != 0)
{
Color color = new Color(0.9f, 0.3f, 0.9f);
BroadPhase bp = _contactManager._broadPhase;
for (Body b = _bodyList; b != null; b = b.GetNext())
{
for (Fixture f = b.GetFixtureList(); f != null; f = f.GetNext())
{
AABB aabb = bp.GetFatAABB(f.ProxyId);
Vec2[] vs = new Vec2[4];
vs[0].Set(aabb.LowerBound.X, aabb.LowerBound.Y);
vs[1].Set(aabb.UpperBound.X, aabb.LowerBound.Y);
vs[2].Set(aabb.UpperBound.X, aabb.UpperBound.Y);
vs[3].Set(aabb.LowerBound.X, aabb.UpperBound.Y);
_debugDraw.DrawPolygon(vs, 4, color);
}
}
}
if ((flags & DebugDraw.DrawFlags.CenterOfMass) != 0)
{
for (Body b = _bodyList; b != null; b = b.GetNext())
{
Transform xf = b.GetTransform();
xf.Position = b.GetWorldCenter();
_debugDraw.DrawXForm(xf);
}
}
}