131 lines
3.9 KiB
Java
Raw Normal View History

Jme3 vr (#828) * Updated OpenVR implementation to 1.0.9 User can specify external OpenVR library to load with openvr.library.path system property. Usage: java -Dopenvr.library.name=my_path_to_library MyApp Removed reference to OCCULUS VR and OpenVR from VRAppstate as this class is generic and does not have to be linked to specific implementation. VRMouseManager can be buggous using OSVR or Occulus VR. Refactored VR implementation packages in order to separate all available implementation. Modifying or adding implementation should no more impact other ones. Renamed some classes in order to be uniform * Sample and VR mouse manager update Adding sample for VR AppState Added OSVRMouseManager in order to handle VRMouseManager for OSVR environment Added OcculusMouseManager in order to handle VRMouseManager for Oculus environment Changed OpenVRMouseManager reference within VRAppState and VREnvironment into VRMouseManager * Revert previous commit as jme3-examples does not handle java8 and lwjgl3 * Adding AWT component rendering within app state Adding AWT component rendering capabilities for any JMonkeyEngine renderer (works with LWJGL 3.1.x and compatible with other implementations) This implementation differs from the previous one as it's relies on AppState (compatible with all JME application) and as it use only produces framebuffer. With this implementation, it is possible to use AWT component ad rendering target and so to integrate JMonkey rendering within AWT / Swing application. This capability was not available with LWJGL3 as the version 3.1.x does not provide anymore AWT link. * AWTComponentAppState update Added Update within AWTComponentAppState and added getter and setter for transfer mode within AWTFramePRocessor * Removing Java 8 related stuff
2019-02-08 15:44:33 +01:00
/*
* Copyright (c) 2009-2018 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.input;
import java.awt.Component;
import java.util.Objects;
import com.jme3.app.Application;
import com.jme3.input.Input;
import com.jme3.input.RawInputListener;
import com.jme3.system.AWTContext;
import com.jme3.system.AWTTaskExecutor;
/**
* The implementation of the {@link Input} dedicated to AWT {@link Component component}.
* <p>
* This class is based on the <a href="http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html">JavaFX</a> original code provided by Alexander Brui (see <a href="https://github.com/JavaSaBr/JME3-JFX">JME3-FX</a>)
* </p>
* @author Julien Seinturier - COMEX SA - <a href="http://www.seinturier.fr">http://www.seinturier.fr</a>
* @author Alexander Brui (JavaSaBr)
*/
public class AWTInput implements Input {
protected static final AWTTaskExecutor EXECUTOR = AWTTaskExecutor.getInstance();
/**
* The context.
*/
protected final AWTContext context;
/**
* The raw listener.
*/
protected RawInputListener listener;
/**
* The input node.
*/
protected Component component;
/**
* The {@link Application JMonkey application} that provide the context.
*/
protected Application application;
/**
* Initializes is it.
*/
protected boolean initialized;
public AWTInput(final AWTContext context) {
this.context = context;
}
public void bind(final Component component) {
this.component = component;
Objects.requireNonNull(this.component, "binded Component cannot be null");
}
public void unbind() {
this.component = null;
}
@Override
public void initialize() {
if (isInitialized()) return;
initializeImpl();
initialized = true;
}
protected void initializeImpl() {
}
@Override
public void update() {
if (!context.isRenderable()) return;
updateImpl();
}
protected void updateImpl() {
}
@Override
public void destroy() {
unbind();
}
@Override
public boolean isInitialized() {
return initialized;
}
@Override
public void setInputListener(RawInputListener listener) {
this.listener = listener;
}
@Override
public long getInputTimeNanos() {
return System.nanoTime();
}
}