void PhysicsWorld::debugDraw() { if (_debugDraw == nullptr) { _debugDraw = new (std::nothrow) PhysicsDebugDraw(*this); } if (_debugDraw && !_bodies.empty()) { if (_debugDraw->begin()) { if (_debugDrawMask & DEBUGDRAW_SHAPE) { for (Ref* obj : _bodies) { PhysicsBody* body = dynamic_cast<PhysicsBody*>(obj); if (!body->isEnabled()) { continue; } for (auto& shape : body->getShapes()) { _debugDraw->drawShape(*dynamic_cast<PhysicsShape*>(shape)); } } } if (_debugDrawMask & DEBUGDRAW_JOINT) { for (auto joint : _joints) { _debugDraw->drawJoint(*joint); } } _debugDraw->end(); } } }