From fde92a69a5e0acefa8f54e1220ada62f149c810c Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 27 Oct 2015 13:38:52 -0700 Subject: [PATCH] Improves physics debug drawing --- packages/flutter_sprites/lib/src/physics_world.dart | 8 +++++++- packages/flutter_sprites/lib/src/sprite_box.dart | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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(); }