     body = @getBody()
     physics = body.GetWorld().UserData
     [x_, y_] = physics.rotate([0, -jumpHeight])
-    console.log(x_, y_)
     body.ApplyImpulse(new Box2D.Common.Math.b2Vec2(x_, y_),
                       body.GetWorldCenter())
     @next.doJump()

  all: (callback) ->
    callback(obj) for obj in objects
  select: (callback) ->
    [best, bestScore] = [null, 0]
    for obj in objects
      result = callback(obj)
      if result? and result < bestScore
        [best, bestScore] = [obj, result]
    best



  doGrab: ->
    if @hasCargo()
      @_dropCargo()
    else
      @_grabCargo()

  _dropCargo: ->
    [target, joint] = @current
    @getBody().GetWorld().DestroyJoint(joint)
    @current = null

  _selectTarget: ->
    centre = @getPosition()
    World.select (potential) ->
      return false unless potential.canGrab()
      centrePotential = potential.getPosition()
      distance = (Math.abs(centre.x - centrePotential.x) +
                  Math.abs(centre.y - centrePotential.y))
