Use enum for lovrHeadsetGetType;

This commit is contained in:
bjornbytes 2017-08-12 21:35:01 -07:00
parent b843fc3dbe
commit 5bf174b37d
5 changed files with 37 additions and 16 deletions

View File

@ -5,6 +5,7 @@ map_int_t ControllerAxes;
map_int_t ControllerButtons;
map_int_t HeadsetEyes;
map_int_t HeadsetOrigins;
map_int_t HeadsetTypes;
typedef struct {
lua_State* L;
@ -46,6 +47,11 @@ int l_lovrHeadsetInit(lua_State* L) {
map_set(&HeadsetOrigins, "head", ORIGIN_HEAD);
map_set(&HeadsetOrigins, "floor", ORIGIN_FLOOR);
map_init(&HeadsetTypes);
map_set(&HeadsetTypes, "unknown", HEADSET_UNKNOWN);
map_set(&HeadsetTypes, "vive", HEADSET_VIVE);
map_set(&HeadsetTypes, "rift", HEADSET_RIFT);
lovrHeadsetInit();
headsetRenderData.ref = LUA_NOREF;
@ -59,7 +65,7 @@ int l_lovrHeadsetIsPresent(lua_State* L) {
}
int l_lovrHeadsetGetType(lua_State* L) {
lua_pushstring(L, lovrHeadsetGetType());
luax_pushenum(L, &HeadsetTypes, lovrHeadsetGetType());
return 1;
}

View File

@ -15,6 +15,12 @@ typedef enum {
ORIGIN_FLOOR
} HeadsetOrigin;
typedef enum {
HEADSET_UNKNOWN,
HEADSET_VIVE,
HEADSET_RIFT
} HeadsetType;
typedef enum {
CONTROLLER_AXIS_TRIGGER,
CONTROLLER_AXIS_TOUCHPAD_X,
@ -41,7 +47,7 @@ void lovrHeadsetInit();
void lovrHeadsetDestroy();
void lovrHeadsetPoll();
int lovrHeadsetIsPresent();
const char* lovrHeadsetGetType();
HeadsetType lovrHeadsetGetType();
HeadsetOrigin lovrHeadsetGetOriginType();
int lovrHeadsetIsMirrored();
void lovrHeadsetSetMirrored(int mirror);

View File

@ -58,31 +58,31 @@ void lovrHeadsetInit() {
return;
}
char fnTable[128];
char buffer[128];
sprintf(fnTable, "FnTable:%s", IVRSystem_Version);
state.system = (struct VR_IVRSystem_FnTable*) VR_GetGenericInterface(fnTable, &vrError);
sprintf(buffer, "FnTable:%s", IVRSystem_Version);
state.system = (struct VR_IVRSystem_FnTable*) VR_GetGenericInterface(buffer, &vrError);
if (vrError != EVRInitError_VRInitError_None || !state.system) {
lovrHeadsetDestroy();
return;
}
sprintf(fnTable, "FnTable:%s", IVRCompositor_Version);
state.compositor = (struct VR_IVRCompositor_FnTable*) VR_GetGenericInterface(fnTable, &vrError);
sprintf(buffer, "FnTable:%s", IVRCompositor_Version);
state.compositor = (struct VR_IVRCompositor_FnTable*) VR_GetGenericInterface(buffer, &vrError);
if (vrError != EVRInitError_VRInitError_None || !state.compositor) {
lovrHeadsetDestroy();
return;
}
sprintf(fnTable, "FnTable:%s", IVRChaperone_Version);
state.chaperone = (struct VR_IVRChaperone_FnTable*) VR_GetGenericInterface(fnTable, &vrError);
sprintf(buffer, "FnTable:%s", IVRChaperone_Version);
state.chaperone = (struct VR_IVRChaperone_FnTable*) VR_GetGenericInterface(buffer, &vrError);
if (vrError != EVRInitError_VRInitError_None || !state.chaperone) {
lovrHeadsetDestroy();
return;
}
sprintf(fnTable, "FnTable:%s", IVRRenderModels_Version);
state.renderModels = (struct VR_IVRRenderModels_FnTable*) VR_GetGenericInterface(fnTable, &vrError);
sprintf(buffer, "FnTable:%s", IVRRenderModels_Version);
state.renderModels = (struct VR_IVRRenderModels_FnTable*) VR_GetGenericInterface(buffer, &vrError);
if (vrError != EVRInitError_VRInitError_None || !state.renderModels) {
lovrHeadsetDestroy();
return;
@ -90,7 +90,16 @@ void lovrHeadsetInit() {
state.isInitialized = 1;
state.headsetIndex = k_unTrackedDeviceIndex_Hmd;
state.system->GetStringTrackedDeviceProperty(state.headsetIndex, ETrackedDeviceProperty_Prop_ModelNumber_String, state.type, 128, NULL);
state.system->GetStringTrackedDeviceProperty(state.headsetIndex, ETrackedDeviceProperty_Prop_ManufacturerName_String, buffer, 128, NULL);
if (strncmp(buffer, "HTC", 128)) {
state.type = HEADSET_VIVE;
} else if (strncmp(buffer, "Oculus", 128)) {
state.type = HEADSET_RIFT;
} else {
state.type = HEADSET_UNKNOWN;
}
state.clipNear = 0.1f;
state.clipFar = 30.f;
lovrHeadsetRefreshControllers();
@ -169,7 +178,7 @@ int lovrHeadsetIsPresent() {
return state.isInitialized && state.system->IsTrackedDeviceConnected(state.headsetIndex);
}
const char* lovrHeadsetGetType() {
HeadsetType lovrHeadsetGetType() {
return state.type;
}

View File

@ -29,7 +29,7 @@ typedef struct {
struct VR_IVRRenderModels_FnTable* renderModels;
unsigned int headsetIndex;
char type[128];
HeadsetType type;
TrackedDevicePose_t renderPoses[16];
RenderModel_t* deviceModels[16];

View File

@ -72,8 +72,8 @@ int lovrHeadsetIsPresent() {
return emscripten_vr_is_present();
}
const char* lovrHeadsetGetType() {
return emscripten_vr_get_display_name();
HeadsetType lovrHeadsetGetType() {
return HEADSET_UNKNOWN;
}
HeadsetOrigin lovrHeadsetGetOriginType() {