diff --git a/packages/flutter_sprites/lib/physics_joint.dart b/packages/flutter_sprites/lib/physics_joint.dart index 1a5020a65e..2c251a862e 100644 --- a/packages/flutter_sprites/lib/physics_joint.dart +++ b/packages/flutter_sprites/lib/physics_joint.dart @@ -25,6 +25,7 @@ abstract class PhysicsJoint { if (_joint == null) { _physicsNode = physicsNode; _joint = _createB2Joint(physicsNode); + _physicsNode._joints.add(this); } } @@ -32,6 +33,7 @@ abstract class PhysicsJoint { if (_joint != null && _active) { _physicsNode.b2World.destroyJoint(_joint); _joint = null; + _physicsNode._joints.remove(this); } _active = false; } diff --git a/packages/flutter_sprites/lib/physics_node.dart b/packages/flutter_sprites/lib/physics_node.dart index fb76b21781..fbaeb9c008 100644 --- a/packages/flutter_sprites/lib/physics_node.dart +++ b/packages/flutter_sprites/lib/physics_node.dart @@ -31,6 +31,8 @@ class PhysicsNode extends Node { _ContactHandler _contactHandler; + List _joints = []; + List _bodiesScheduledForDestruction = []; double b2WorldToNodeConversionFactor = 10.0;