2016-11-19 09:28:01 +00:00
|
|
|
#include "headset/headset.h"
|
2019-04-05 12:08:03 +00:00
|
|
|
#include "util.h"
|
2016-08-11 04:17:14 +00:00
|
|
|
|
2018-04-28 23:59:53 +00:00
|
|
|
HeadsetInterface* lovrHeadsetDriver = NULL;
|
2018-02-23 09:28:42 +00:00
|
|
|
static bool initialized = false;
|
2017-10-20 20:32:46 +00:00
|
|
|
|
2018-11-19 16:08:56 +00:00
|
|
|
bool lovrHeadsetInit(HeadsetDriver* drivers, int count, float offset, int msaa) {
|
|
|
|
if (initialized) return false;
|
2018-02-23 09:28:42 +00:00
|
|
|
initialized = true;
|
|
|
|
|
2017-11-25 21:01:56 +00:00
|
|
|
for (int i = 0; i < count; i++) {
|
|
|
|
HeadsetInterface* interface = NULL;
|
|
|
|
|
|
|
|
switch (drivers[i]) {
|
2019-03-07 07:02:03 +00:00
|
|
|
#ifdef LOVR_USE_DESKTOP_HEADSET
|
|
|
|
case DRIVER_DESKTOP: interface = &lovrHeadsetDesktopDriver; break;
|
2018-09-19 07:03:04 +00:00
|
|
|
#endif
|
|
|
|
#ifdef LOVR_USE_OCULUS
|
2018-09-09 17:58:20 +00:00
|
|
|
case DRIVER_OCULUS: interface = &lovrHeadsetOculusDriver; break;
|
2018-09-11 22:47:03 +00:00
|
|
|
#endif
|
2018-10-25 03:40:11 +00:00
|
|
|
#ifdef LOVR_USE_OCULUS_MOBILE
|
|
|
|
case DRIVER_OCULUS_MOBILE: interface = &lovrHeadsetOculusMobileDriver; break;
|
|
|
|
#endif
|
2018-09-19 07:03:04 +00:00
|
|
|
#ifdef LOVR_USE_OPENVR
|
2017-11-25 21:01:56 +00:00
|
|
|
case DRIVER_OPENVR: interface = &lovrHeadsetOpenVRDriver; break;
|
2018-09-19 07:03:04 +00:00
|
|
|
#endif
|
|
|
|
#ifdef LOVR_USE_WEBVR
|
2017-11-25 21:01:56 +00:00
|
|
|
case DRIVER_WEBVR: interface = &lovrHeadsetWebVRDriver; break;
|
2017-10-21 09:52:07 +00:00
|
|
|
#endif
|
2017-11-25 21:01:56 +00:00
|
|
|
default: break;
|
|
|
|
}
|
|
|
|
|
2018-07-29 01:12:57 +00:00
|
|
|
if (interface && interface->init(offset, msaa)) {
|
2018-04-28 23:59:53 +00:00
|
|
|
lovrHeadsetDriver = interface;
|
2017-10-20 20:32:46 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2018-04-28 23:59:53 +00:00
|
|
|
|
|
|
|
lovrAssert(lovrHeadsetDriver, "No headset driver available, check t.headset.drivers in conf.lua");
|
2018-11-19 16:08:56 +00:00
|
|
|
return true;
|
2017-10-20 20:32:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void lovrHeadsetDestroy() {
|
2018-02-23 09:28:42 +00:00
|
|
|
if (!initialized) return;
|
|
|
|
initialized = false;
|
|
|
|
|
2018-04-28 23:59:53 +00:00
|
|
|
if (lovrHeadsetDriver) {
|
|
|
|
lovrHeadsetDriver->destroy();
|
|
|
|
lovrHeadsetDriver = NULL;
|
2017-10-20 20:32:46 +00:00
|
|
|
}
|
|
|
|
}
|
2019-04-05 09:50:11 +00:00
|
|
|
|
|
|
|
void lovrControllerDestroy(void* ref) {
|
2019-04-05 12:44:24 +00:00
|
|
|
//
|
2019-04-05 09:50:11 +00:00
|
|
|
}
|