diff --git a/packages/flame_forge2d/lib/body_component.dart b/packages/flame_forge2d/lib/body_component.dart index 2552db0aa49..4c3b3a5d8ed 100644 --- a/packages/flame_forge2d/lib/body_component.dart +++ b/packages/flame_forge2d/lib/body_component.dart @@ -125,8 +125,7 @@ abstract class BodyComponent extends Component } void renderChain(Canvas canvas, List points) { - final path = Path()..addPolygon(points, true); - canvas.drawPath(path, paint); + canvas.drawPoints(PointMode.polygon, points, paint); } void _renderCircle(Canvas canvas, Fixture fixture) { diff --git a/packages/flame_forge2d/test/body_component_test.dart b/packages/flame_forge2d/test/body_component_test.dart index 6c961f3b037..b2228b3d404 100644 --- a/packages/flame_forge2d/test/body_component_test.dart +++ b/packages/flame_forge2d/test/body_component_test.dart @@ -117,7 +117,7 @@ void main() { ); flameTester.testGameWidget( - 'a ChainShape', + 'an open ChainShape', setUp: (game, tester) async { final body = game.world.createBody(BodyDef()); final shape = ChainShape() @@ -140,7 +140,36 @@ void main() { verify: (game, tester) async { await expectLater( find.byGame(), - matchesGoldenFile(goldenPath('chain_shape')), + matchesGoldenFile(goldenPath('chain_shape_open')), + ); + }, + ); + + flameTester.testGameWidget( + 'a closed ChainShape', + setUp: (game, tester) async { + final body = game.world.createBody(BodyDef()); + final shape = ChainShape() + ..createLoop( + [ + Vector2.zero(), + Vector2.all(10), + Vector2(10, 0), + ], + ); + body.createFixture(FixtureDef(shape)); + + final component = _TestBodyComponent() + ..body = body + ..paint = testPaint; + await game.add(component); + + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile(goldenPath('chain_shape_closed')), ); }, ); diff --git a/packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png b/packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png new file mode 100644 index 00000000000..85b3ce4dd62 Binary files /dev/null and b/packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png differ diff --git a/packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png b/packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png new file mode 100644 index 00000000000..6cf32dee29a Binary files /dev/null and b/packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png differ