Conforming to last master branch

fix-456
jseinturier 8 years ago
parent 888b66892d
commit 9e945462f7
  1. 21
      jme3-vr/src/main/java/com/jme3/app/VREnvironment.java
  2. 120
      jme3-vr/src/main/java/com/jme3/input/vr/OpenVRInput.java

@ -8,7 +8,6 @@ import com.jme3.app.state.AppState;
import com.jme3.input.vr.OSVR;
import com.jme3.input.vr.OpenVR;
import com.jme3.input.vr.VRAPI;
import com.jme3.input.vr.VRBounds;
import com.jme3.input.vr.VRInputAPI;
import com.jme3.renderer.Camera;
import com.jme3.scene.Spatial;
@ -28,8 +27,6 @@ public class VREnvironment {
private VRGuiManager guiManager = null;
private VRMouseManager mouseManager = null;
private VRViewManager viewmanager = null;
private VRBounds bounds = null;
/**
* The underlying system VR API. By default set to {@link VRConstants#SETTING_VRAPI_OPENVR_VALUE}.
@ -76,10 +73,7 @@ public class VREnvironment {
guiManager = new VRGuiManager(this);
mouseManager = new VRMouseManager(this);
bounds = new VRBounds();
dummyCam = new Camera();
// dummyCam = new Camera(settings.getWidth(), settings.getHeight());
processSettings();
}
@ -92,14 +86,6 @@ public class VREnvironment {
return hardware;
}
/**
* Get the VR bounds.
* @return the VR bounds.
*/
public VRBounds getVRBounds(){
return bounds;
}
/**
* Get the VR dedicated input.
* @return the VR dedicated input.
@ -346,7 +332,7 @@ public class VREnvironment {
*/
public Camera getCamera() {
if( isInVR() && getVRViewManager() != null && getVRViewManager().getLeftCamera() != null ) {
return dummyCam;
return getDummyCamera();
}
return application.getCamera();
@ -361,13 +347,12 @@ public class VREnvironment {
if (application.getCamera() != null){
dummyCam = application.getCamera().clone();
} else {
return new Camera();
return new Camera(settings.getWidth(), settings.getHeight());
}
} else {
throw new IllegalStateException("VR environment is not attached to any application.");
}
}
return dummyCam;
}

@ -5,7 +5,6 @@
*/
package com.jme3.input.vr;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -184,50 +183,28 @@ public class OpenVRInput implements VRInputAPI {
@Override
public Vector3f getVelocity(int controllerIndex) {
if (environment != null){
if (environment.getVRHardware() instanceof OpenVR){
int index = OpenVRInput.controllerIndex[controllerIndex];
if( needsNewVelocity[index] ) {
((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].readField("vVelocity");
needsNewVelocity[index] = false;
}
tempVel.x = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vVelocity.v[0];
tempVel.y = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vVelocity.v[1];
tempVel.z = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vVelocity.v[2];
return tempVel;
} else {
throw new IllegalStateException("VR hardware "+environment.getVRHardware().getClass().getSimpleName()+" is not a subclass of "+OpenVR.class.getSimpleName());
}
} else {
throw new IllegalStateException("VR input is not attached to a VR environment.");
}
int index = OpenVRInput.controllerIndex[controllerIndex];
if( needsNewVelocity[index] ) {
OpenVR.hmdTrackedDevicePoses[index].readField("vVelocity");
needsNewVelocity[index] = false;
}
tempVel.x = OpenVR.hmdTrackedDevicePoses[index].vVelocity.v[0];
tempVel.y = OpenVR.hmdTrackedDevicePoses[index].vVelocity.v[1];
tempVel.z = OpenVR.hmdTrackedDevicePoses[index].vVelocity.v[2];
return tempVel;
}
@Override
public Vector3f getAngularVelocity(int controllerIndex) {
if (environment != null){
if (environment.getVRHardware() instanceof OpenVR){
int index = OpenVRInput.controllerIndex[controllerIndex];
if( needsNewAngVelocity[index] ) {
((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].readField("vAngularVelocity");
needsNewAngVelocity[index] = false;
}
tempVel.x = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vAngularVelocity.v[0];
tempVel.y = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vAngularVelocity.v[1];
tempVel.z = ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[index].vAngularVelocity.v[2];
return tempVel;
} else {
throw new IllegalStateException("VR hardware "+environment.getVRHardware().getClass().getSimpleName()+" is not a subclass of "+OpenVR.class.getSimpleName());
}
} else {
throw new IllegalStateException("VR input is not attached to a VR environment.");
}
int index = OpenVRInput.controllerIndex[controllerIndex];
if( needsNewAngVelocity[index] ) {
OpenVR.hmdTrackedDevicePoses[index].readField("vAngularVelocity");
needsNewAngVelocity[index] = false;
}
tempVel.x = OpenVR.hmdTrackedDevicePoses[index].vAngularVelocity.v[0];
tempVel.y = OpenVR.hmdTrackedDevicePoses[index].vAngularVelocity.v[1];
tempVel.z = OpenVR.hmdTrackedDevicePoses[index].vAngularVelocity.v[2];
return tempVel;
}
@Override
@ -332,16 +309,7 @@ public class OpenVRInput implements VRInputAPI {
return false;
}
if (environment != null){
if (environment.getVRHardware() instanceof OpenVR){
return ((OpenVR)environment.getVRHardware()).hmdTrackedDevicePoses[controllerIndex[index]].bPoseIsValid != 0;
} else {
throw new IllegalStateException("VR hardware "+environment.getVRHardware().getClass().getSimpleName()+" is not a subclass of "+OpenVR.class.getSimpleName());
}
} else {
throw new IllegalStateException("VR input is not attached to a VR environment.");
}
return OpenVR.hmdTrackedDevicePoses[controllerIndex[index]].bPoseIsValid != 0;
}
@Override
@ -349,19 +317,9 @@ public class OpenVRInput implements VRInputAPI {
if( isInputDeviceTracking(index) == false ){
return null;
}
if (environment != null){
if (environment.getVRHardware() instanceof OpenVR){
index = controllerIndex[index];
VRUtil.convertMatrix4toQuat(((OpenVR)environment.getVRHardware()).poseMatrices[index], rotStore[index]);
return rotStore[index];
} else {
throw new IllegalStateException("VR hardware "+environment.getVRHardware().getClass().getSimpleName()+" is not a subclass of "+OpenVR.class.getSimpleName());
}
} else {
throw new IllegalStateException("VR input is not attached to a VR environment.");
}
index = controllerIndex[index];
VRUtil.convertMatrix4toQuat(OpenVR.poseMatrices[index], rotStore[index]);
return rotStore[index];
}
@Override
@ -370,23 +328,12 @@ public class OpenVRInput implements VRInputAPI {
return null;
}
if (environment != null){
if (environment.getVRHardware() instanceof OpenVR){
// the hmdPose comes in rotated funny, fix that here
index = controllerIndex[index];
((OpenVR)environment.getVRHardware()).poseMatrices[index].toTranslationVector(posStore[index]);
posStore[index].x = -posStore[index].x;
posStore[index].z = -posStore[index].z;
return posStore[index];
} else {
throw new IllegalStateException("VR hardware "+environment.getVRHardware().getClass().getSimpleName()+" is not a subclass of "+OpenVR.class.getSimpleName());
}
} else {
throw new IllegalStateException("VR input is not attached to a VR environment.");
}
// the hmdPose comes in rotated funny, fix that here
index = controllerIndex[index];
OpenVR.poseMatrices[index].toTranslationVector(posStore[index]);
posStore[index].x = -posStore[index].x;
posStore[index].z = -posStore[index].z;
return posStore[index];
}
@Override
@ -464,7 +411,8 @@ public class OpenVRInput implements VRInputAPI {
if (environment != null){
controllerCount = 0;
for(int i=0;i<JOpenVRLibrary.k_unMaxTrackedDeviceCount;i++) {
if( ((OpenVR)environment.getVRHardware()).getVRSystem().GetTrackedDeviceClass.apply(i) == JOpenVRLibrary.ETrackedDeviceClass.ETrackedDeviceClass_TrackedDeviceClass_Controller ) {
int classCallback = ((OpenVR)environment.getVRHardware()).getVRSystem().GetTrackedDeviceClass.apply(i);
if( classCallback == JOpenVRLibrary.ETrackedDeviceClass.ETrackedDeviceClass_TrackedDeviceClass_Controller || classCallback == JOpenVRLibrary.ETrackedDeviceClass.ETrackedDeviceClass_TrackedDeviceClass_GenericTracker) {
String controllerName = "Unknown";
String manufacturerName = "Unknown";
@ -477,12 +425,6 @@ public class OpenVRInput implements VRInputAPI {
controllerIndex[controllerCount] = i;
// Adding tracked controller to control.
if (trackedControllers == null){
trackedControllers = new ArrayList<VRTrackedController>(JOpenVRLibrary.k_unMaxTrackedDeviceCount);
}
trackedControllers.add(new OpenVRTrackedController(i, this, controllerName, manufacturerName, environment));
// Send an Haptic pulse to the controller
triggerHapticPulse(controllerCount, 1.0f);
@ -503,7 +445,7 @@ public class OpenVRInput implements VRInputAPI {
if (environment != null){
for(int i=0;i<controllerCount;i++) {
int index = controllerIndex[i];
((OpenVR)environment.getVRHardware()).getVRSystem().GetControllerState.apply(index, cStates[index], 5);
((OpenVR)environment.getVRHardware()).getVRSystem().GetControllerState.apply(index, cStates[index], 64);
cStates[index].readField("ulButtonPressed");
cStates[index].readField("rAxis");
needsNewVelocity[index] = true;

Loading…
Cancel
Save