lovr/src/headset/headset.c

56 lines
1.4 KiB
C
Raw Normal View History

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;
bool lovrHeadsetInit(HeadsetDriver* drivers, int count, float offset, int msaa) {
if (initialized) return false;
2018-02-23 09:28:42 +00:00
initialized = true;
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;
#endif
#ifdef LOVR_USE_OCULUS
case DRIVER_OCULUS: interface = &lovrHeadsetOculusDriver; break;
2018-09-11 22:47:03 +00:00
#endif
#ifdef LOVR_USE_OCULUS_MOBILE
case DRIVER_OCULUS_MOBILE: interface = &lovrHeadsetOculusMobileDriver; break;
#endif
#ifdef LOVR_USE_OPENVR
case DRIVER_OPENVR: interface = &lovrHeadsetOpenVRDriver; break;
#endif
#ifdef LOVR_USE_WEBVR
case DRIVER_WEBVR: interface = &lovrHeadsetWebVRDriver; break;
#endif
default: break;
}
if (interface && interface->init(offset, msaa)) {
2018-04-28 23:59:53 +00:00
lovrHeadsetDriver = interface;
break;
}
}
2018-04-28 23:59:53 +00:00
lovrAssert(lovrHeadsetDriver, "No headset driver available, check t.headset.drivers in conf.lua");
return true;
}
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;
}
}
void lovrControllerDestroy(void* ref) {
//
}