public Mobile pickedMobile(final HUD UI, final Viewport port, Base base) {
    //
    //  You may want to use some pre-emptive culling here in future.
    Mobile nearest = null ;
    float minDist = Float.POSITIVE_INFINITY ;
    for (Mobile m : mobiles) {
      if (m.indoors() || ! (m instanceof Selectable)) continue ;
      if (! m.visibleTo(base)) continue ;
      final float selRad = (m.height() + m.radius()) / 2 ;
      final Vec3D selPos = m.viewPosition(null) ;
      if (! port.mouseIntersects(selPos, selRad, UI)) continue ;
      final float dist = port.isoToFlat(selPos).z ;
      if (dist < minDist) { nearest = m ; minDist = dist ; }
    }
    return nearest ;
  }