anchor.diff:    }
   
     TwoBarrels(CanvasElement canvas) {
  +    canvas.onClick.listen((e){
  +      canvas.requestPointerLock();
  +    });
       window.onResize.listen((e){
         resize(canvas, e.currentTarget.innerWidth, e.currentTarget.innerHeight);
  +    });
  +    window.onMouseMove.listen((e){
  +      mousemove_x = e.movement.x;
  +    });
  +    document.onPointerLockChange.listen((e){
  +      hasPointerLock = canvas == document.pointerLockElement;
       });
       // weird, but without specifying size this array throws exception on []
       _currentlyPressedKeys = new List<bool>(128);
  
positive.code:  * https://github.com/martinsik/dart-webgl-tutorials
   */
  class TwoBarrels {
  
    CanvasElement _canvas;
    webgl.RenderingContext _gl;
    webgl.Program _shaderProgram;
  
negative.code:     // move
      _animate(time);
      _handleKeys();
      
      // rotate player mouse movement;
      if (hasPointerLock) {
        Matrix2 a = new Matrix2.rotation(radians(-mousemove_x*MOUSE_SENSITIVITY));
        player.rotation = a.transform(player.rotation.clone());   
        mousemove_x = 0;
      }
  
      // keep drawing
      window.requestAnimationFrame(this.render);
  