Headset display dimensions;

This commit is contained in:
bjorn 2016-10-24 16:03:29 -07:00
parent 769ded9c71
commit 9975e695dd
6 changed files with 43 additions and 0 deletions

View File

@ -19,6 +19,10 @@ const char* lovrHeadsetGetType() {
return headset->interface->getType(headset);
}
void lovrHeadsetGetDisplayDimensions(int* width, int* height) {
headset->interface->getDisplayDimensions(headset, width, height);
}
void lovrHeadsetGetClipDistance(float* near, float* far) {
headset->interface->getClipDistance(headset, near, far);
}

View File

@ -14,6 +14,7 @@ typedef struct {
typedef struct {
char (*isPresent)(void* headset);
const char* (*getType)(void* headset);
void (*getDisplayDimensions)(void* headset, int* width, int* height);
void (*getClipDistance)(void* headset, float* near, float* far);
void (*setClipDistance)(void* headset, float near, float far);
void (*getTrackingSize)(void* headset, float* width, float* depth);
@ -40,6 +41,7 @@ typedef struct {
void lovrHeadsetInit();
char lovrHeadsetIsPresent();
const char* lovrHeadsetGetType();
void lovrHeadsetGetDisplayDimensions(int* width, int* height);
void lovrHeadsetGetClipDistance(float* near, float* far);
void lovrHeadsetSetClipDistance(float near, float far);
void lovrHeadsetGetTrackingSize(float* width, float* depth);

View File

@ -34,6 +34,7 @@ typedef struct {
static HeadsetInterface interface = {
.isPresent = viveIsPresent,
.getType = viveGetType,
.getDisplayDimensions = viveGetDisplayDimensions,
.getClipDistance = viveGetClipDistance,
.setClipDistance = viveSetClipDistance,
.getTrackingSize = viveGetTrackingSize,
@ -165,6 +166,13 @@ const char* viveGetType(void* headset) {
return "Vive";
}
void viveGetDisplayDimensions(void* headset, int* width, int* height) {
Headset* this = (Headset*) headset;
ViveState* state = this->state;
*width = state->renderWidth;
*height = state->renderHeight;
}
void viveGetClipDistance(void* headset, float* near, float* far) {
Headset* this = (Headset*) headset;
ViveState* state = this->state;

View File

@ -4,6 +4,7 @@ Headset* viveInit();
void viveDestroy();
char viveIsPresent(void* headset);
const char* viveGetType(void* headset);
void viveGetDisplayDimensions(void* headset, int* width, int* height);
void viveGetClipDistance(void* headset, float* near, float* far);
void viveSetClipDistance(void* headset, float near, float far);
void viveGetTrackingSize(void* headset, float* width, float* depth);

View File

@ -14,6 +14,9 @@ void renderHelper(int eyeIndex, void* userdata) {
const luaL_Reg lovrHeadset[] = {
{ "isPresent", l_lovrHeadsetIsPresent },
{ "getType", l_lovrHeadsetGetType },
{ "getDisplayWidth", l_lovrHeadsetGetDisplayWidth },
{ "getDisplayHeight", l_lovrHeadsetGetDisplayHeight },
{ "getDisplayDimensions", l_lovrHeadsetGetDisplayDimensions },
{ "getClipDistance", l_lovrHeadsetGetClipDistance },
{ "setClipDistance", l_lovrHeadsetSetClipDistance },
{ "getTrackingSize", l_lovrHeadsetGetTrackingSize },
@ -50,6 +53,28 @@ int l_lovrHeadsetGetType(lua_State* L) {
return 1;
}
int l_lovrHeadsetGetDisplayWidth(lua_State* L) {
int width;
lovrHeadsetGetDisplayDimensions(&width, NULL);
lua_pushnumber(L, width);
return 1;
}
int l_lovrHeadsetGetDisplayHeight(lua_State* L) {
int height;
lovrHeadsetGetDisplayDimensions(NULL, &height);
lua_pushnumber(L, height);
return 1;
}
int l_lovrHeadsetGetDisplayDimensions(lua_State* L) {
int width, height;
lovrHeadsetGetDisplayDimensions(&width, &height);
lua_pushnumber(L, width);
lua_pushnumber(L, height);
return 2;
}
int l_lovrHeadsetGetClipDistance(lua_State* L) {
float near, far;
lovrHeadsetGetClipDistance(&near, &far);

View File

@ -9,6 +9,9 @@ extern const luaL_Reg lovrHeadset[];
int l_lovrHeadsetInit(lua_State* L);
int l_lovrHeadsetIsPresent(lua_State* L);
int l_lovrHeadsetGetType(lua_State* L);
int l_lovrHeadsetGetDisplayWidth(lua_State* L);
int l_lovrHeadsetGetDisplayHeight(lua_State* L);
int l_lovrHeadsetGetDisplayDimensions(lua_State* L);
int l_lovrHeadsetGetClipDistance(lua_State* L);
int l_lovrHeadsetSetClipDistance(lua_State* L);
int l_lovrHeadsetGetTrackingSize(lua_State* L);