diff --git a/packages/flutter_sprites/lib/src/physics_world.dart b/packages/flutter_sprites/lib/src/physics_world.dart index 14724882451..e61c065ce24 100644 --- a/packages/flutter_sprites/lib/src/physics_world.dart +++ b/packages/flutter_sprites/lib/src/physics_world.dart @@ -47,6 +47,10 @@ class PhysicsWorld extends Node { List _bodiesScheduledForUpdate = []; + bool drawDebug = false; + + Matrix4 _debugDrawTransform ; + _PhysicsDebugDraw _debugDraw; double b2WorldToNodeConversionFactor = 10.0; @@ -228,8 +232,10 @@ class PhysicsWorld extends Node { } void paint(PaintingCanvas canvas) { + if (drawDebug) { + _debugDrawTransform = new Matrix4.fromFloat64List(canvas.getTotalMatrix()); + } super.paint(canvas); - paintDebug(canvas); } void paintDebug(PaintingCanvas canvas) { diff --git a/packages/flutter_sprites/lib/src/sprite_box.dart b/packages/flutter_sprites/lib/src/sprite_box.dart index 2af9498f984..88176299b25 100644 --- a/packages/flutter_sprites/lib/src/sprite_box.dart +++ b/packages/flutter_sprites/lib/src/sprite_box.dart @@ -347,6 +347,14 @@ class SpriteBox extends RenderBox { Matrix4 totalMatrix = new Matrix4.fromFloat64List(canvas.getTotalMatrix()); _rootNode._visit(canvas, totalMatrix); + // Draw physics debug + for (PhysicsWorld world in _physicsNodes) { + if (world.drawDebug) { + canvas.setMatrix(world._debugDrawTransform.storage); + world.paintDebug(canvas); + } + } + canvas.restore(); }