protected void updateAsMobile() {
    super.updateAsMobile() ;
    final float height = position.z / INIT_HIGH ;
    //
    //  Check to see if ascent or descent are complete-
    if (stage == STAGE_ASCENT && height >= 1) {
      for (Mobile m : inside()) m.exitWorld() ;
      exitWorld() ;
      stage = STAGE_AWAY ;
      stageInceptTime = world.currentTime() ;
    }
    if (stage == STAGE_DESCENT && height <= 0) {
      performLanding(world, landArea()) ;
      stage = STAGE_LANDED ;
      stageInceptTime = world.currentTime() ;
    }
    //
    //  Otherwise, adjust motion-
    if (inWorld() && ! landed()) adjustFlight(height) ;
  }