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); } } }