nuclear@1: #include nuclear@1: #include "vr.h" nuclear@1: #include "vr_impl.h" nuclear@1: nuclear@1: static bool init_ovr(); nuclear@1: nuclear@1: VRData vr_data; nuclear@1: nuclear@1: extern "C" int vr_init(enum vr_init_mode mode) nuclear@1: { nuclear@1: if(!init_ovr()) { nuclear@1: return -1; nuclear@1: } nuclear@1: return 0; nuclear@1: } nuclear@1: nuclear@1: extern "C" void vr_shutdown(void) nuclear@1: { nuclear@1: System::Destroy(); nuclear@1: } nuclear@1: nuclear@1: nuclear@1: nuclear@1: static bool init_ovr() nuclear@1: { nuclear@1: // initialize Oculus SDK nuclear@1: System::Init(); nuclear@1: if(!(vr_data.ovr_devman = DeviceManager::Create())) { nuclear@1: fprintf(stderr, "failed to create OVR device manager\n"); nuclear@1: return false; nuclear@1: } nuclear@1: nuclear@1: // create the display device nuclear@1: if(!(vr_data.ovr_hmd_dev = vr_data.ovr_devman->EnumerateDevices().CreateDevice())) { nuclear@1: fprintf(stderr, "no oculus rift devices found\n"); nuclear@1: return false; nuclear@1: } nuclear@1: nuclear@1: HMDInfo info; nuclear@1: if(vr_data.ovr_hmd_dev->GetDeviceInfo(&info)) { nuclear@1: printf("oculus device info:\n"); nuclear@1: printf(" name: %s\n", info.DisplayDeviceName); nuclear@1: printf(" ipd: %f\n", info.InterpupillaryDistance); nuclear@1: printf(" distortion: %f %f %f %f\n", info.DistortionK[0], nuclear@1: info.DistortionK[1], info.DistortionK[2], info.DistortionK[3]); nuclear@1: } nuclear@1: nuclear@1: // get the sensor device nuclear@1: if(!(vr_data.ovr_sensor_dev = vr_data.ovr_hmd_dev->GetSensor())) { nuclear@1: fprintf(stderr, "failed to get oculus sensor device\n"); nuclear@1: return false; nuclear@1: } nuclear@1: nuclear@1: SensorInfo sinfo; nuclear@1: if(vr_data.ovr_sensor_dev->GetDeviceInfo(&sinfo)) { nuclear@1: printf("oculus sensor device info:\n"); nuclear@1: printf(" name: %s\n", sinfo.ProductName); nuclear@1: } nuclear@1: nuclear@1: return true; nuclear@1: }