mirror of https://github.com/bjornbytes/lovr.git
lovr.headset.isMirrored; lovr.headset.setMirrored;
Also add conf.lua field to configure initial mirroring state.
This commit is contained in:
parent
0c6da83332
commit
49a0ba4d1c
|
@ -48,6 +48,17 @@ int l_lovrHeadsetGetType(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int l_lovrHeadsetIsMirrored(lua_State* L) {
|
||||
lua_pushboolean(L, lovrHeadsetIsMirrored());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int l_lovrHeadsetSetMirrored(lua_State* L) {
|
||||
int mirror = lua_toboolean(L, 1);
|
||||
lovrHeadsetSetMirrored(mirror);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrHeadsetGetDisplayWidth(lua_State* L) {
|
||||
int width;
|
||||
lovrHeadsetGetDisplayDimensions(&width, NULL);
|
||||
|
@ -209,6 +220,8 @@ int l_lovrHeadsetRenderTo(lua_State* L) {
|
|||
const luaL_Reg lovrHeadset[] = {
|
||||
{ "isPresent", l_lovrHeadsetIsPresent },
|
||||
{ "getType", l_lovrHeadsetGetType },
|
||||
{ "isMirrored", l_lovrHeadsetIsMirrored },
|
||||
{ "setMirrored", l_lovrHeadsetSetMirrored },
|
||||
{ "getDisplayWidth", l_lovrHeadsetGetDisplayWidth },
|
||||
{ "getDisplayHeight", l_lovrHeadsetGetDisplayHeight },
|
||||
{ "getDisplayDimensions", l_lovrHeadsetGetDisplayDimensions },
|
||||
|
|
|
@ -36,6 +36,8 @@ void lovrHeadsetDestroy();
|
|||
void lovrHeadsetPoll();
|
||||
int lovrHeadsetIsPresent();
|
||||
const char* lovrHeadsetGetType();
|
||||
int lovrHeadsetIsMirrored();
|
||||
void lovrHeadsetSetMirrored(int mirror);
|
||||
void lovrHeadsetGetDisplayDimensions(int* width, int* height);
|
||||
void lovrHeadsetGetClipDistance(float* near, float* far);
|
||||
void lovrHeadsetSetClipDistance(float near, float far);
|
||||
|
|
|
@ -35,6 +35,7 @@ static TrackedDevicePose_t getPose(unsigned int deviceIndex) {
|
|||
void lovrHeadsetInit() {
|
||||
state.isInitialized = 0;
|
||||
state.isRendering = 0;
|
||||
state.isMirrored = 1;
|
||||
state.texture = NULL;
|
||||
vec_init(&state.controllers);
|
||||
|
||||
|
@ -174,6 +175,14 @@ const char* lovrHeadsetGetType() {
|
|||
return state.isInitialized ? "Vive" : NULL;
|
||||
}
|
||||
|
||||
int lovrHeadsetIsMirrored() {
|
||||
return state.isMirrored;
|
||||
}
|
||||
|
||||
void lovrHeadsetSetMirrored(int mirror) {
|
||||
state.isMirrored = mirror;
|
||||
}
|
||||
|
||||
void lovrHeadsetGetDisplayDimensions(int* width, int* height) {
|
||||
if (!state.isInitialized) {
|
||||
*width = *height = 0;
|
||||
|
@ -646,5 +655,8 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) {
|
|||
|
||||
state.isRendering = 0;
|
||||
lovrGraphicsPopCanvas();
|
||||
lovrGraphicsPlaneFullscreen(state.texture);
|
||||
|
||||
if (state.isMirrored) {
|
||||
lovrGraphicsPlaneFullscreen(state.texture);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
typedef struct {
|
||||
int isInitialized;
|
||||
int isRendering;
|
||||
int isMirrored;
|
||||
|
||||
struct VR_IVRSystem_FnTable* system;
|
||||
struct VR_IVRCompositor_FnTable* compositor;
|
||||
|
|
|
@ -92,6 +92,9 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
|||
" headset = true, "
|
||||
" math = true, "
|
||||
" timer = true "
|
||||
" }, "
|
||||
" headset = { "
|
||||
" mirror = true "
|
||||
" } "
|
||||
"} "
|
||||
|
||||
|
@ -110,6 +113,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
|||
"end "
|
||||
|
||||
"lovr.filesystem.setIdentity(conf.identity or 'default') "
|
||||
"if lovr.headset then lovr.headset.setMirrored(conf.headset and conf.headset.mirror) end "
|
||||
|
||||
"lovr.handlers = setmetatable({ "
|
||||
" quit = function() end, "
|
||||
|
|
Loading…
Reference in New Issue