@Override
    public void update(float tpf) {

        // update VR pose & cameras
        if( environment.getVRViewManager() != null ) {
            environment.getVRViewManager().update(tpf);
        } else if( environment.getObserver() != null ) {
            environment.getCamera().setFrame(((Spatial)environment.getObserver()).getWorldTranslation(), ((Spatial)environment.getObserver()).getWorldRotation());
        }

        if( environment.isInVR() == false || environment.getVRGUIManager().getPositioningMode() == VRGUIPositioningMode.MANUAL ) {
            // only update geometric state here if GUI is in manual mode, or not in VR
            // it will get updated automatically in the view manager update otherwise
            // TODO isn't this done by SimpleApplication?
            for (Spatial spatial : application.getGuiViewPort().getScenes()) {
                //spatial.updateLogicalState(tpf);
                spatial.updateGeometricState();
            }
        }

        // use the analog control on the first tracked controller to push around the mouse
        environment.getVRMouseManager().updateAnalogAsMouse(0, null, null, null, tpf);
    }
Set the {@link AppSettings settings} attached to this app state.
@param settings the {@link AppSettings settings} attached to this app state.
@see #getSettings()
jme3-vr/src/main/java/com/jme3/app/VRAppState.java