@ -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" ;
@ -236,6 +242,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 ( ) {
JOpenVRLibrary . VR_ShutdownInternal ( ) ;