@Override
  protected void initState() {
    main.getInputManager().addRawInputListener(this);
    if (!init) {
      main.getInputManager().deleteMapping("FLYCAM_RotateDrag");
      main.getInputManager()
          .addMapping("FLYCAM_RotateDrag", new MouseButtonTrigger(MouseInput.BUTTON_RIGHT));
      main.getInputManager().addListener(main.getFlyByCamera(), "FLYCAM_RotateDrag");

      objIcons = main.getAssetManager().loadTexture("Textures/Spatials/ObjIcons.png");

      initCtrlPanel();

      obj1Node =
          new InteractiveNode(screen) {
            @Override
            public void onSpatialMouseDown(MouseButtonEvent evt) {
              handleObjectClick(this);
              evt.setConsumed();
            }

            @Override
            public void onSpatialMouseUp(MouseButtonEvent evt) {
              evt.setConsumed();
            }
          };
      obj1Node.setName("Box");
      Box obj1 = new Box(1, 1, 1);
      Geometry obj1Geom = new Geometry();
      obj1Geom.setMesh(obj1);
      obj1Node.attachChild(obj1Geom);
      obj1Node.setIcon("x=0|y=0|w=64|h=64");
      obj1Node.setDefaultMaterial(getMaterial(ColorRGBA.Blue));
      obj1Node.setHighlightMaterial(getMaterial(new ColorRGBA(0.5f, 0.5f, 1f, 1f)));
      obj1Node.setToolTipText("I'm a Box\n\nPick me up and put\nme in your inventory.");
      obj1Node.setLocalTranslation(-3, 0, 0);

      obj2Node =
          new InteractiveNode(screen) {
            @Override
            public void onSpatialMouseDown(MouseButtonEvent evt) {
              handleObjectClick(this);
              evt.setConsumed();
            }

            @Override
            public void onSpatialMouseUp(MouseButtonEvent evt) {
              evt.setConsumed();
            }
          };
      obj2Node.setName("Sphere");
      Sphere obj2 = new Sphere(8, 8, 1f);
      Geometry obj2Geom = new Geometry();
      obj2Geom.setMesh(obj2);
      obj2Node.attachChild(obj2Geom);
      obj2Node.setIcon("x=64|y=0|w=64|h=64");
      obj2Node.setDefaultMaterial(getMaterial(ColorRGBA.Red));
      obj2Node.setHighlightMaterial(getMaterial(new ColorRGBA(1f, 0.5f, 0.5f, 1f)));
      obj2Node.setToolTipText("I'm a Sphere\n\nPick me up and put\nme in your inventory.");
      obj2Node.setLocalTranslation(0, 0, 0);

      obj3Node =
          new InteractiveNode(screen) {
            @Override
            public void onSpatialMouseDown(MouseButtonEvent evt) {
              handleObjectClick(this);
              evt.setConsumed();
            }

            @Override
            public void onSpatialMouseUp(MouseButtonEvent evt) {
              evt.setConsumed();
            }
          };
      obj3Node.setName("Torus");
      Torus obj3 = new Torus(8, 8, 0.5f, 1f);
      Geometry obj3Geom = new Geometry();
      obj3Geom.setMesh(obj3);
      obj3Node.attachChild(obj3Geom);
      obj3Node.setIcon("x=0|y=64|w=64|h=64");
      obj3Node.setDefaultMaterial(getMaterial(ColorRGBA.Green));
      obj3Node.setHighlightMaterial(getMaterial(new ColorRGBA(0.5f, 1f, 0.5f, 1f)));
      obj3Node.setToolTipText("I'm a Torus\n\nPick me up and put\nme in your inventory.");
      obj3Node.setLocalTranslation(3, 0, 0);

      cursor =
          new ButtonAdapter(
              screen,
              UIDUtil.getUID(),
              Vector2f.ZERO,
              new Vector2f(iconSize, iconSize),
              Vector4f.ZERO,
              null) {
            @Override
            public void update(float tpf) {
              setPosition(screen.getMouseXY().x + 25, screen.getMouseXY().y - 50);
            }
          };
      cursor.setIsEnabled(false);
      cursor.setInterval(1);
      cursor.setTextureAtlasImage(objIcons, iconDefault);
      cursor.setIsModal(true);
      cursor.setIsGlobalModal(true);
      cursor.setEffectZOrder(false);
      cursor.setIgnoreMouse(true);

      init = true;
    }
    screen.setUse3DSceneSupport(true);
    main.getTests().addCtrlPanel(cPanel);
    if (obj1Node.getIsInScene()) main.getRootNode().attachChild(obj1Node);
    if (obj2Node.getIsInScene()) main.getRootNode().attachChild(obj2Node);
    if (obj3Node.getIsInScene()) main.getRootNode().attachChild(obj3Node);
    screen.addElement(cursor);
    cursor.move(0, 0, 20);
    main.addSceneLights();
  }