anchor.diff:      @Override
       public void simpleInitApp() {
           flyCam.setEnabled(false);
  -        niftyDisplay = new NiftyJmeDisplay(assetManager,
  +        niftyDisplay = newNiftyJmeDisplay(assetManager,
                   inputManager,
                   audioRenderer,
                   guiViewPort);
  
positive.code:                 setProgress(0.9f, "Loading cameras");
  
              } else if (frameCount == 7) {
                  List<Camera> cameras = new ArrayList<Camera>();
                  cameras.add(getCamera());
                  TerrainLodControl control = new TerrainLodControl(terrain, cameras);
                  terrain.addControl(control);
                  setProgress(1f, "Loading complete");
  
  
negative.code:     }
  
      @Override
      public void onFocus(boolean getFocus) {
      }
  
      @Override
      public void bind(Nifty nifty, Screen screen, Element elmnt,
              Parameters prmtrs) {
          progressBarElement = elmnt.findElementById("progressbar");
      }
  
      @Override
      public void init(Parameters prmtrs) {
      }
  
  }
  
  ----
  
  NOTE: Try and add all controls near the end, as their update loops may begin executing.
  
  
  === Using multithreading
  
  For more info on multithreading: <<jme3/advanced/multithreading#,The jME3 Threading Model>>
  
  Make sure to change the XML file to point the controller to TestLoadingScreen*1*.
  
  [source,java]
  ----
  
  package jme3test;
  
  import com.jme3.app.SimpleApplication;
  import com.jme3.material.Material;
  import com.jme3.niftygui.NiftyJmeDisplay;
  import static com.jme3.niftygui.NiftyJmeDisplay.newNiftyJmeDisplay;
  import com.jme3.renderer.Camera;
  import com.jme3.terrain.geomipmap.TerrainLodControl;
  import com.jme3.terrain.geomipmap.TerrainQuad;
  import com.jme3.terrain.heightmap.AbstractHeightMap;
  import com.jme3.terrain.heightmap.ImageBasedHeightMap;
  import com.jme3.texture.Texture;
  import com.jme3.texture.Texture.WrapMode;
  import de.lessvoid.nifty.Nifty;
  import de.lessvoid.nifty.controls.Controller;
  import de.lessvoid.nifty.controls.Parameters;
  import de.lessvoid.nifty.elements.Element;
  import de.lessvoid.nifty.elements.render.TextRenderer;
  import de.lessvoid.nifty.input.NiftyInputEvent;
  import de.lessvoid.nifty.screen.Screen;
  import de.lessvoid.nifty.screen.ScreenController;
  import de.lessvoid.nifty.tools.SizeValue;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.concurrent.Callable;
  import java.util.concurrent.Future;
  import java.util.concurrent.ScheduledThreadPoolExecutor;
  
  public class TestLoadingScreen1 extends SimpleApplication implements
          ScreenController, Controller {
  
      private NiftyJmeDisplay niftyDisplay;
      private Nifty nifty;
  