Search in sources :

Example 41 with AppSettings

use of com.jme3.system.AppSettings in project jmonkeyengine by jMonkeyEngine.

the class VRApplication method start.

/**
     * Starts the application.
     * Creating a rendering context and executing the main loop in a separate thread.
     * @param contextType the {@link com.jme3.system.JmeContext.Type type} of the context to create.
     * @param waitFor if <code>true</code>, the method will wait until the application is started.
     * @throws IllegalArgumentException if the context type is not supported.
     */
public void start(JmeContext.Type contextType, boolean waitFor) {
    if (context != null && context.isCreated()) {
        logger.warning("start() called when application already created!");
        return;
    }
    if (settings == null) {
        settings = new AppSettings(true);
    }
    logger.log(Level.FINE, "Starting application: {0}", getClass().getName());
    // Create VR decicated context
    if (contextType == Type.Display) {
        context = new LwjglDisplayVR();
        context.setSettings(settings);
    } else if (contextType == Type.OffscreenSurface) {
        context = new LwjglOffscreenBufferVR();
        context.setSettings(settings);
    } else {
        logger.severe("Unsupported context type \"" + contextType + "\". Supported are \"Display\" and \"OffscreenSurface\"");
        throw new IllegalArgumentException("Unsupported context type \"" + contextType + "\". Supported are \"Display\" and \"OffscreenSurface\"");
    }
    context.setSystemListener(this);
    context.create(waitFor);
}
Also used : AppSettings(com.jme3.system.AppSettings) LwjglOffscreenBufferVR(com.jme3.system.lwjgl.LwjglOffscreenBufferVR) LwjglDisplayVR(com.jme3.system.lwjgl.LwjglDisplayVR)

Example 42 with AppSettings

use of com.jme3.system.AppSettings in project jmonkeyengine by jMonkeyEngine.

the class VRApplication method initInput.

/**
     * Initializes mouse and keyboard input. Also
     * initializes joystick input if joysticks are enabled in the
     * AppSettings.
     */
private void initInput() {
    mouseInput = context.getMouseInput();
    if (mouseInput != null)
        mouseInput.initialize();
    keyInput = context.getKeyInput();
    if (keyInput != null)
        keyInput.initialize();
    touchInput = context.getTouchInput();
    if (touchInput != null)
        touchInput.initialize();
    if (!settings.getBoolean("DisableJoysticks")) {
        joyInput = context.getJoyInput();
        if (joyInput != null)
            joyInput.initialize();
    }
    inputManager = new InputManager(mouseInput, keyInput, joyInput, touchInput);
}
Also used : InputManager(com.jme3.input.InputManager)

Example 43 with AppSettings

use of com.jme3.system.AppSettings in project jmonkeyengine by jMonkeyEngine.

the class VRApplication method start.

@Override
public void start() {
    logger.config("Starting application...");
    // set some default settings in-case
    // settings dialog is not shown
    boolean loadSettings = false;
    if (settings == null) {
        setSettings(new AppSettings(true));
        loadSettings = true;
    }
    GraphicsDevice defDev = null;
    try {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        defDev = ge.getDefaultScreenDevice();
    } catch (Throwable e1) {
        logger.log(Level.SEVERE, "Cannot access default screen device: " + e1.getMessage(), e1);
    }
    if (isInVR() && !compositorAllowed()) {
        logger.warning("VR Composition is not allowed.");
        // "easy extended" mode
        // TO-DO: JFrame was removed in LWJGL 3, need to use new GLFW library to pick "monitor" display of VR device
        // first, find the VR device
        GraphicsDevice VRdev = null;
        GraphicsDevice[] devs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
        // pick the display that isn't the default one
        for (GraphicsDevice gd : devs) {
            if (gd != defDev) {
                VRdev = gd;
                break;
            }
        }
        // did we get the VR device?
        if (VRdev != null) {
            // set properties for VR acceleration
            try {
                java.awt.DisplayMode useDM = null;
                int max = 0;
                for (java.awt.DisplayMode dm : VRdev.getDisplayModes()) {
                    int check = dm.getHeight() + dm.getWidth() + dm.getRefreshRate() + dm.getBitDepth();
                    if (check > max) {
                        max = check;
                        useDM = dm;
                    }
                }
                // create a window for the VR device
                settings.setWidth(useDM.getWidth());
                settings.setHeight(useDM.getHeight());
                settings.setBitsPerPixel(useDM.getBitDepth());
                settings.setFrequency(useDM.getRefreshRate());
                settings.setSwapBuffers(true);
                // allow vsync on this display
                settings.setVSync(true);
                setSettings(settings);
                // make sure we are in the right display mode
                if (VRdev.getDisplayMode().equals(useDM) == false) {
                    VRdev.setDisplayMode(useDM);
                }
                // make a blank cursor to hide it
                //BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
                //Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, new Point(0, 0), "blank cursor");                    
                //VRwindow.setCursor(blankCursor);
                //jmeCanvas.getCanvas().setCursor(blankCursor);
                //VRwindow.pack();
                //VRwindow.setVisible(true);
                //startCanvas();
                logger.config("Starting application [SUCCESS]");
                return;
            } catch (Exception e) {
                logger.log(Level.SEVERE, "Error during application start: " + e.getMessage(), e);
            }
        }
    }
    if (!isInVR()) {
        logger.config("VR mode disabled.");
        // not in VR, show settings dialog
        if (Platform.get() != Platform.MACOSX) {
            if (!JmeSystem.showSettingsDialog(settings, loadSettings)) {
                logger.config("Starting application [SUCCESS]");
                return;
            }
        } else {
            // GLFW workaround on macs
            settings.setFrequency(defDev.getDisplayMode().getRefreshRate());
            settings.setDepthBits(24);
            settings.setVSync(true);
            // try and read resolution from file in local dir
            File resfile = new File("resolution.txt");
            if (resfile.exists()) {
                try {
                    BufferedReader br = new BufferedReader(new FileReader(resfile));
                    settings.setWidth(Integer.parseInt(br.readLine()));
                    settings.setHeight(Integer.parseInt(br.readLine()));
                    try {
                        settings.setFullscreen(br.readLine().toLowerCase(Locale.ENGLISH).contains("full"));
                    } catch (Exception e) {
                        settings.setFullscreen(false);
                    }
                    br.close();
                } catch (Exception e) {
                    settings.setWidth(1280);
                    settings.setHeight(720);
                }
            } else {
                settings.setWidth(1280);
                settings.setHeight(720);
                settings.setFullscreen(false);
            }
            settings.setResizable(false);
        }
        settings.setSwapBuffers(true);
    } else {
        logger.config("VR mode enabled.");
        // use basic mirroring window, skip settings window
        settings.setWidth(xWin);
        settings.setHeight(yWin);
        settings.setBitsPerPixel(24);
        // never sleep in main loop
        settings.setFrameRate(0);
        settings.setFrequency(VRhardware.getDisplayFrequency());
        settings.setFullscreen(false);
        // stop vsyncing on primary monitor!
        settings.setVSync(false);
        settings.setSwapBuffers(!disableSwapBuffers || VRhardware instanceof OSVR);
        settings.setTitle("Put Headset On Now: " + settings.getTitle());
        settings.setResizable(true);
    }
    if (forceDisableMSAA) {
        logger.config("Disabling multisampling.");
        // disable multisampling, which is more likely to break things than be useful
        settings.setSamples(1);
    }
    // set opengl mode
    if (tryOpenGL3) {
        logger.config("Using LWJGL OpenGL 3 renderer.");
        settings.setRenderer(AppSettings.LWJGL_OPENGL3);
    } else {
        logger.config("Using LWJGL OpenGL 2 renderer.");
        settings.setRenderer(AppSettings.LWJGL_OPENGL2);
    }
    setSettings(settings);
    start(JmeContext.Type.Display, false);
    // disable annoying warnings about GUI stuff being updated, which is normal behavior
    // for late GUI placement for VR purposes
    Logger.getLogger("com.jme3").setLevel(Level.SEVERE);
}
Also used : AppSettings(com.jme3.system.AppSettings) OSVR(com.jme3.input.vr.OSVR) GraphicsEnvironment(java.awt.GraphicsEnvironment) CullHint(com.jme3.scene.Spatial.CullHint) MalformedURLException(java.net.MalformedURLException) GraphicsDevice(java.awt.GraphicsDevice) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) File(java.io.File)

Example 44 with AppSettings

use of com.jme3.system.AppSettings in project jmonkeyengine by jMonkeyEngine.

the class VRGuiManager method getCanvasSize.

/**
	 * Get the GUI canvas size. This method return the size in pixels of the GUI available area within the VR view.
	 * @return the GUI canvas size. This method return the size in pixels of the GUI available area within the VR view.
	 */
public Vector2f getCanvasSize() {
    if (environment != null) {
        if (environment.getApplication() != null) {
            if (screenSize == null) {
                if (environment.isInVR() && environment.getVRHardware() != null) {
                    screenSize = new Vector2f();
                    environment.getVRHardware().getRenderSize(screenSize);
                    screenSize.multLocal(environment.getVRViewManager().getResolutionMuliplier());
                } else {
                    AppSettings as = environment.getApplication().getContext().getSettings();
                    screenSize = new Vector2f(as.getWidth(), as.getHeight());
                }
            }
            return screenSize;
        } else {
            throw new IllegalStateException("VR GUI manager underlying environment is not attached to any application.");
        }
    } else {
        throw new IllegalStateException("VR GUI manager is not attached to any environment.");
    }
}
Also used : AppSettings(com.jme3.system.AppSettings) Vector2f(com.jme3.math.Vector2f)

Example 45 with AppSettings

use of com.jme3.system.AppSettings in project TeachingInSimulation by ScOrPiOzzy.

the class TestJmeToJFXImageView method makeJmeApplication.

@NotNull
private static JmeToJFXApplication makeJmeApplication() {
    final AppSettings settings = JmeToJFXIntegrator.prepareSettings(new AppSettings(true), 60);
    final JmeToJFXApplication application = new JmeToJFXApplication() {

        protected Spatial player;

        @Override
        public void simpleInitApp() {
            super.simpleInitApp();
            // stateManager.attach(new SceneCameraState());
            float aspect = (float) cam.getWidth() / cam.getHeight();
            // flyCam.setDragToRotate(true);
            cam.setFrustumPerspective(45f, aspect, 0.01f, 1000);
            assetManager.registerLocator("E:\\JME_SDKPROJ_HOME\\robot_assets\\assets\\", FileLocator.class);
            assetManager.registerLocator("http://192.168.1.19:8082/assets/", UrlLocator.class);
            player = assetManager.loadModel("Models\\elecComp\\DZ47LEC32.j3o");
            // player = assetManager.loadModel("Model/RT28N-32X/RT28N-32X.j3o");
            // Box b = new Box(1, 1, 1);
            // player = new Geometry("Player", b);
            // Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
            // mat.setColor("Color", ColorRGBA.Blue);
            // player.setMaterial(mat);
            rootNode.attachChild(player);
        }
    };
    application.setSettings(settings);
    application.setShowSettings(false);
    return application;
}
Also used : JmeToJFXApplication(com.jme3x.jfx.injfx.JmeToJFXApplication) AppSettings(com.jme3.system.AppSettings) Spatial(com.jme3.scene.Spatial) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

AppSettings (com.jme3.system.AppSettings)40 LegacyApplication (com.jme3.app.LegacyApplication)5 IOException (java.io.IOException)4 AL (com.jme3.audio.openal.AL)3 ALAudioRenderer (com.jme3.audio.openal.ALAudioRenderer)3 ALC (com.jme3.audio.openal.ALC)3 EFX (com.jme3.audio.openal.EFX)2 MouseInput (com.jme3.input.MouseInput)2 Vector2f (com.jme3.math.Vector2f)2 Mesh (com.jme3.scene.Mesh)2 JmeToJFXApplication (com.jme3x.jfx.injfx.JmeToJFXApplication)2 GraphicsDevice (java.awt.GraphicsDevice)2 BufferedReader (java.io.BufferedReader)2 File (java.io.File)2 InputStream (java.io.InputStream)2 TextView (android.widget.TextView)1 JmeUtil (com.cas.sim.tis.util.JmeUtil)1 SettingsDialog (com.jme3.app.SettingsDialog)1 SelectionListener (com.jme3.app.SettingsDialog.SelectionListener)1 AssetNotFoundException (com.jme3.asset.AssetNotFoundException)1