private void initializeNewTest() {
        testScale.setText("Object scale: " + String.format("%.1f", scaleMod));
        solverNumIterationsTxt.setText("Solver Iterations: " + solverNumIterations);

        bulletAppState = new BulletAppState();
        bulletAppState.setDebugEnabled(true);
        stateManager.attach(bulletAppState);
        bulletAppState.getPhysicsSpace().setSolverNumIterations(solverNumIterations);

        float floorSize = 80;
        //Left side test - GImpact objects collide with MeshCollisionShape floor
        Vector3f leftFloorPos = new Vector3f(-41, -5, -10);
        Vector3f leftFloorCenter = leftFloorPos.add(floorSize / 2, 0, floorSize / 2);

        dropTest1(leftFloorCenter);
        dropTest2(leftFloorCenter);
        dropPot(leftFloorCenter);
        dropSword(leftFloorCenter);
        dropSign(leftFloorCenter);
        dropRocket(leftFloorCenter);

        Geometry leftFloor = PhysicsTestHelper.createMeshTestFloor(assetManager, floorSize, leftFloorPos);
        addObject(leftFloor);

        //Right side test - GImpact objects collide with GImpact floor
        Vector3f rightFloorPos = new Vector3f(41, -5, -10);
        Vector3f rightFloorCenter = rightFloorPos.add(floorSize / 2, 0, floorSize / 2);

        dropTest1(rightFloorCenter);
        dropTest2(rightFloorCenter);
        dropPot(rightFloorCenter);
        dropSword(rightFloorCenter);
        dropSign(rightFloorCenter);
        dropRocket(rightFloorCenter);

        Geometry rightFloor = PhysicsTestHelper.createGImpactTestFloor(assetManager, floorSize, rightFloorPos);
        addObject(rightFloor);

        //Hide physics debug visualization for floors
        BulletDebugAppState bulletDebugAppState = stateManager.getState(BulletDebugAppState.class);
        bulletDebugAppState.setFilter((Object obj) -> {
            return !(obj.equals(rightFloor.getControl(RigidBodyControl.class))
                || obj.equals(leftFloor.getControl(RigidBodyControl.class)));
        });
    }
This test demonstrates various GImpactCollisionShapes colliding against two identical curved surfaces. The
left surface is a MeshCollisionShape, right surface is another GImpactCollisionShape. An ideal result is
for all objects to land and change to a blue colored mesh indicating they are inactive. Falling through the
floor, or never going inactive (bouncing forever) are failure conditions.
<p>
Observations as of June 2019 (JME v3.3.0-alpha2):
<ol>
<li>
With default starting parameters, Native Bullet should pass the test parameters above. JBullet fails due to
the rocket/MeshCollisionShape never going inactive.
</li>
<li>
Native Bullet behaves better than JBullet. JBullet sometimes allows objects to "gain too much energy" after
a collision, such as the rocket or teapot. Native also does this, to a lesser degree. This generally
appears to happen at larger object scales.
</li>
<li>
JBullet allows some objects to get "stuck" inside the floor, which usually results in a fall-through
eventually, generally a larger scales for this test.
</li>
<li>
Some shapes such as PQTorus and signpost never go inactive at larger scales for both Native and JBullet (test
at 1.5 and 1.9 scale)
</li>
</ol>

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