From 96689dec7f23503c2a3c6d71bc92df9195badbd9 Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 27 Oct 2015 13:38:20 -0700 Subject: [PATCH 1/3] Fixes issue with physics collision groups --- packages/flutter_sprites/lib/src/physics_collision_groups.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_sprites/lib/src/physics_collision_groups.dart b/packages/flutter_sprites/lib/src/physics_collision_groups.dart index 5cd412dd830..234f1c4d329 100644 --- a/packages/flutter_sprites/lib/src/physics_collision_groups.dart +++ b/packages/flutter_sprites/lib/src/physics_collision_groups.dart @@ -12,7 +12,7 @@ class _PhysicsCollisionGroups { List getKeysForBitmask(int bitmask) { List keys = []; keyLookup.forEach((Object key, int value) { - if (value & bitmask != null) { + if (value & bitmask != 0) { keys.add(key); } }); From fde92a69a5e0acefa8f54e1220ada62f149c810c Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 27 Oct 2015 13:38:52 -0700 Subject: [PATCH 2/3] 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(); } From 848b79efc828d9b6a0f4642ba39483c5209fccee Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 27 Oct 2015 13:39:19 -0700 Subject: [PATCH 3/3] Updates physics test to draw debug --- examples/game/test_physics.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/game/test_physics.dart b/examples/game/test_physics.dart index ce6029d7e59..3252c1d336a 100644 --- a/examples/game/test_physics.dart +++ b/examples/game/test_physics.dart @@ -53,6 +53,7 @@ class TestBed extends NodeWithSize { TestBed() : super(new Size(1024.0, 1024.0)) { _world = new PhysicsWorld(new Offset(0.0, 100.0)); + _world.drawDebug = true; _group = new PhysicsGroup(); _group2 = new PhysicsGroup(); _group2.position = new Point(50.0, 50.0);