Updates sprite physics test
diff --git a/examples/game/test_physics.dart b/examples/game/test_physics.dart index aabb773..137a325 100644 --- a/examples/game/test_physics.dart +++ b/examples/game/test_physics.dart
@@ -45,24 +45,11 @@ } class TestBed extends NodeWithSize { - Sprite _ship; Sprite _obstacle; + PhysicsNode _physicsNode; TestBed() : super(new Size(1024.0, 1024.0)) { - PhysicsNode physicsNode = new PhysicsNode(new Offset(0.0, 100.0)); - - _ship = new Sprite(_spriteSheet["ship.png"]); - _ship.position = new Point(512.0, 512.0); - _ship.size = new Size(64.0, 64.0); - _ship.physicsBody = new PhysicsBody( - new PhysicsShapeGroup([ - new PhysicsShapeCircle(Point.origin, 32.0), - new PhysicsShapePolygon([new Point(0.0, 0.0), new Point(50.0, 0.0), new Point(50.0, 50.0), new Point(0.0, 50.0)]) - ]), - friction: 0.5, - tag: "ship" - ); - physicsNode.addChild(_ship); + _physicsNode = new PhysicsNode(new Offset(0.0, 100.0)); _obstacle = new Sprite(_spriteSheet["ship.png"]); _obstacle.position = new Point(532.0, 800.0); @@ -73,23 +60,47 @@ friction: 0.5, tag: "obstacle" ); - physicsNode.addChild(_obstacle); - physicsNode.addContactCallback(myCallback, "obstacle", "ship", PhysicsContactType.begin); + _physicsNode.addChild(_obstacle); + _physicsNode.addContactCallback(myCallback, "obstacle", "ship", PhysicsContactType.begin); - addChild(physicsNode); + addChild(_physicsNode); userInteractionEnabled = true; } void myCallback(PhysicsContactType type, PhysicsContact contact) { print("CONTACT type: $type"); - contact.nodeB.removeFromParent(); } bool handleEvent(SpriteBoxEvent event) { if (event.type == "pointerdown") { Point pos = convertPointToNodeSpace(event.boxPosition); - _ship.position = pos; + + Sprite shipA; + shipA = new Sprite(_spriteSheet["ship.png"]); + shipA.position = new Point(pos.x - 40.0, pos.y); + shipA.size = new Size(64.0, 64.0); + shipA.physicsBody = new PhysicsBody(new PhysicsShapeCircle(Point.origin, 32.0), + friction: 0.5, + tag: "ship" + ); + _physicsNode.addChild(shipA); + shipA.physicsBody.applyLinearImpulse( + new Offset(randomSignedDouble() * 5.0, randomSignedDouble() * 5.0), + shipA.position + ); + + Sprite shipB; + shipB = new Sprite(_spriteSheet["ship.png"]); + shipB.position = new Point(pos.x + 40.0, pos.y); + shipB.size = new Size(64.0, 64.0); + shipB.physicsBody = new PhysicsBody(new PhysicsShapePolygon([new Point(-25.0, -25.0), new Point(25.0, -25.0), new Point(25.0, 25.0), new Point(-25.0, 25.0)]), + friction: 0.5, + tag: "ship" + ); + _physicsNode.addChild(shipB); + + new PhysicsJointWeld(shipA.physicsBody, shipB.physicsBody); } return true; }