@Override
    public void simpleInitApp() {
        cam.setLocation(new Vector3f(-7.285349f, -2.2638104f, 4.954474f));
        cam.setRotation(new Quaternion(0.07345789f, 0.92521834f, -0.2876841f, 0.23624739f));
        getFlyByCamera().setMoveSpeed(5);

        DirectionalLight dl = new DirectionalLight();
        dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
        dl.setColor(ColorRGBA.Green);
        rootNode.addLight(dl);

        //Setup interactive test controls
        inputManager.addMapping("restart", new KeyTrigger(KeyInput.KEY_SPACE));
        inputManager.addMapping("pause", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
        inputManager.addMapping("+", new KeyTrigger(KeyInput.KEY_ADD), new KeyTrigger(KeyInput.KEY_EQUALS));
        inputManager.addMapping("-", new KeyTrigger(KeyInput.KEY_SUBTRACT), new KeyTrigger(KeyInput.KEY_MINUS));
        inputManager.addListener((ActionListener) (String name, boolean isPressed, float tpf) -> {
            if (!isPressed) {
                return;
            }
            switch (name) {
                case "restart":
                    cleanup();
                    initializeNewTest();
                    break;
                case "pause":
                    bulletAppState.setSpeed(bulletAppState.getSpeed() > 0.1 ? 0 : bulletSpeed);
                    break;
                case "+":
                    bulletSpeed += 0.1f;
                    if (bulletSpeed > 1f) {
                        bulletSpeed = 1f;
                    }
                    bulletAppState.setSpeed(bulletSpeed);
                    break;
                case "-":
                    bulletSpeed -= 0.1f;
                    if (bulletSpeed < 0.1f) {
                        bulletSpeed = 0.1f;
                    }
                    bulletAppState.setSpeed(bulletSpeed);
                    break;
            }
        }, "pause", "restart", "+", "-");

        guiNode = getGuiNode();
        BitmapFont font = assetManager.loadFont("Interface/Fonts/Default.fnt");
        BitmapText[] testInfo = new BitmapText[2];
        testInfo[0] = new BitmapText(font);
        testInfo[1] = new BitmapText(font);
        speedText = new BitmapText(font);

        float lineHeight = testInfo[0].getLineHeight();
        testInfo[0].setText("Camera move: W/A/S/D/Q/Z     +/-: Increase/Decrease Speed");
        testInfo[0].setLocalTranslation(5, settings.getHeight(), 0);
        guiNode.attachChild(testInfo[0]);
        testInfo[1].setText("Left Click: Toggle pause            Space: Restart test");
        testInfo[1].setLocalTranslation(5, settings.getHeight() - lineHeight, 0);
        guiNode.attachChild(testInfo[1]);

        speedText.setLocalTranslation(202, lineHeight * 1, 0);
        guiNode.attachChild(speedText);

        initializeNewTest();
    }
Test demonstrating a GImpactCollisionShape falling through a curved mesh, when using JBullet. Bullet native
does not experience this issue at the time this test was created.

@author lou
jme3-examples/src/main/java/jme3test/bullet/TestIssue1120.java