| Index: sky/examples/game/lib/game_demo_box.dart
 | 
| diff --git a/sky/examples/game/lib/game_box.dart b/sky/examples/game/lib/game_demo_box.dart
 | 
| similarity index 52%
 | 
| rename from sky/examples/game/lib/game_box.dart
 | 
| rename to sky/examples/game/lib/game_demo_box.dart
 | 
| index f3849ba73825c03a45a4e2570b3dcd8c39d9df8c..85132e1ddd2c0f05b724c50c0b76491198c5709c 100644
 | 
| --- a/sky/examples/game/lib/game_box.dart
 | 
| +++ b/sky/examples/game/lib/game_demo_box.dart
 | 
| @@ -1,22 +1,22 @@
 | 
|  part of game;
 | 
|  
 | 
| -const double _steeringThreshold = 20.0;
 | 
| -const double _steeringMax = 50.0;
 | 
| +const double _steeringThreshold = 0.0;
 | 
| +const double _steeringMax = 150.0;
 | 
|  
 | 
| -class GameBox extends SpriteBox {
 | 
| +class GameDemoBox extends SpriteBox {
 | 
|  
 | 
| -  GameBox(GameWorld game) : super(game, SpriteBoxTransformMode.letterbox);
 | 
| +  GameDemoBox(GameDemoWorld game) : super(game, SpriteBoxTransformMode.letterbox);
 | 
|  
 | 
| -  GameWorld get _gameWorld => this.rootNode;
 | 
| +  GameDemoWorld get _gameWorld => this.rootNode;
 | 
|  
 | 
|    // Handle pointers
 | 
|    int _firstPointer = -1;
 | 
|    int _secondPointer = -1;
 | 
| -  Vector2 _firstPointerDownPos;
 | 
| +  Point _firstPointerDownPos;
 | 
|  
 | 
|    void handleEvent(Event event, BoxHitTestEntry entry) {
 | 
|      if (event is PointerEvent) {
 | 
| -      Vector2 pointerPos = new Vector2(event.x, event.y);
 | 
| +      Point pointerPos = new Point(event.x, event.y);
 | 
|        int pointer = event.pointer;
 | 
|  
 | 
|        switch (event.type) {
 | 
| @@ -29,7 +29,7 @@ class GameBox extends SpriteBox {
 | 
|            else if (_secondPointer == -1) {
 | 
|              // Assign second pointer
 | 
|              _secondPointer = pointer;
 | 
| -            _gameWorld.controlThrust(1.0);
 | 
| +            _gameWorld.controlFire();
 | 
|            }
 | 
|            else {
 | 
|              // There is a pointer used for steering, let's fire instead
 | 
| @@ -39,14 +39,23 @@ class GameBox extends SpriteBox {
 | 
|          case 'pointermove':
 | 
|            if (pointer == _firstPointer) {
 | 
|              // Handle turning control
 | 
| -            double deltaX = pointerPos[0] - _firstPointerDownPos[0];
 | 
| +            double joystickX = 0.0;
 | 
| +            double deltaX = pointerPos.x - _firstPointerDownPos.x;
 | 
|              if (deltaX > _steeringThreshold || deltaX < -_steeringThreshold) {
 | 
| -              double turnForce = (deltaX - _steeringThreshold)/(_steeringMax - _steeringThreshold);
 | 
| -              if (turnForce > 1.0) turnForce = 1.0;
 | 
| -              if (turnForce < -1.0) turnForce = -1.0;
 | 
| -              _gameWorld.controlSteering(turnForce);
 | 
| -              print("steering: $turnForce");
 | 
| +              joystickX = (deltaX - _steeringThreshold)/(_steeringMax - _steeringThreshold);
 | 
| +              if (joystickX > 1.0) joystickX = 1.0;
 | 
| +              if (joystickX < -1.0) joystickX = -1.0;
 | 
| +            }
 | 
| +
 | 
| +            double joystickY = 0.0;
 | 
| +            double deltaY = pointerPos.y - _firstPointerDownPos.y;
 | 
| +            if (deltaY > _steeringThreshold || deltaY < -_steeringThreshold) {
 | 
| +              joystickY = (deltaY - _steeringThreshold)/(_steeringMax - _steeringThreshold);
 | 
| +              if (joystickY > 1.0) joystickY = 1.0;
 | 
| +              if (joystickY < -1.0) joystickY = -1.0;
 | 
|              }
 | 
| +
 | 
| +            _gameWorld.controlSteering(joystickX, joystickY);
 | 
|            }
 | 
|            break;
 | 
|          case 'pointerup':
 | 
| @@ -55,11 +64,11 @@ class GameBox extends SpriteBox {
 | 
|              // Un-assign the first pointer
 | 
|              _firstPointer = -1;
 | 
|              _firstPointerDownPos = null;
 | 
| -            _gameWorld.controlSteering(null);
 | 
| +            _gameWorld.controlSteering(0.0, 0.0);
 | 
|            }
 | 
|            else if (pointer == _secondPointer) {
 | 
|              _secondPointer = -1;
 | 
| -            _gameWorld.controlThrust(null);
 | 
| +            _gameWorld.controlFire();
 | 
|            }
 | 
|            break;
 | 
|          default:
 | 
| 
 |