Explorar o código

added functionality to use front mounted vive camera. 2nd try

Rickard Edén %!s(int64=8) %!d(string=hai) anos
pai
achega
a65b0ba3af
Modificáronse 1 ficheiros con 21 adicións e 0 borrados
  1. 21 0
      jme3-vr/src/main/java/com/jme3/input/vr/OpenVR.java

+ 21 - 0
jme3-vr/src/main/java/com/jme3/input/vr/OpenVR.java

@@ -18,6 +18,7 @@ import com.jme3.system.jopenvr.OpenVRUtil;
 import com.jme3.system.jopenvr.TrackedDevicePose_t;
 import com.jme3.system.jopenvr.VR_IVRCompositor_FnTable;
 import com.jme3.system.jopenvr.VR_IVRSystem_FnTable;
+import com.jme3.system.jopenvr.VR_IVRTrackedCamera_FnTable;
 import com.jme3.util.VRUtil;
 import com.sun.jna.Memory;
 import com.sun.jna.Pointer;
@@ -41,6 +42,7 @@ public class OpenVR implements VRAPI {
 	private static final Logger logger = Logger.getLogger(OpenVR.class.getName());
 	
     private static VR_IVRCompositor_FnTable compositorFunctions;
+    private static VR_IVRTrackedCamera_FnTable cameraFunctions;
     private static VR_IVRSystem_FnTable vrsystemFunctions;
     
     private static boolean initSuccess = false;
@@ -107,6 +109,10 @@ public class OpenVR implements VRAPI {
         return compositorFunctions;
     }
     
+    public VR_IVRTrackedCamera_FnTable getTrackedCamera(){
+        return cameraFunctions;
+    }
+    
     @Override
     public String getName() {
         return "OpenVR";
@@ -235,6 +241,21 @@ public class OpenVR implements VRAPI {
         }
         return compositorFunctions != null;
     }
+    
+    public void initCamera(boolean allowed) {
+        hmdErrorStore.setValue(0); // clear the error store
+        if( allowed && vrsystemFunctions != null ) {
+        	IntByReference intptr = JOpenVRLibrary.VR_GetGenericInterface(JOpenVRLibrary.IVRTrackedCamera_Version, hmdErrorStore);
+                if (intptr != null){
+                    cameraFunctions = new VR_IVRTrackedCamera_FnTable(intptr.getPointer());
+                    if(cameraFunctions != null && hmdErrorStore.getValue() == 0 ){
+                        cameraFunctions.setAutoSynch(false);
+                        cameraFunctions.read();
+                        logger.config("OpenVR Camera initialized");
+                    }
+                }
+        }
+    }
 
     @Override
     public void destroy() {