mirror of
https://github.com/bjornbytes/lovr.git
synced 2024-07-03 04:53:35 +00:00
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;
|
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 l_lovrHeadsetGetDisplayWidth(lua_State* L) {
|
||||||
int width;
|
int width;
|
||||||
lovrHeadsetGetDisplayDimensions(&width, NULL);
|
lovrHeadsetGetDisplayDimensions(&width, NULL);
|
||||||
|
@ -209,6 +220,8 @@ int l_lovrHeadsetRenderTo(lua_State* L) {
|
||||||
const luaL_Reg lovrHeadset[] = {
|
const luaL_Reg lovrHeadset[] = {
|
||||||
{ "isPresent", l_lovrHeadsetIsPresent },
|
{ "isPresent", l_lovrHeadsetIsPresent },
|
||||||
{ "getType", l_lovrHeadsetGetType },
|
{ "getType", l_lovrHeadsetGetType },
|
||||||
|
{ "isMirrored", l_lovrHeadsetIsMirrored },
|
||||||
|
{ "setMirrored", l_lovrHeadsetSetMirrored },
|
||||||
{ "getDisplayWidth", l_lovrHeadsetGetDisplayWidth },
|
{ "getDisplayWidth", l_lovrHeadsetGetDisplayWidth },
|
||||||
{ "getDisplayHeight", l_lovrHeadsetGetDisplayHeight },
|
{ "getDisplayHeight", l_lovrHeadsetGetDisplayHeight },
|
||||||
{ "getDisplayDimensions", l_lovrHeadsetGetDisplayDimensions },
|
{ "getDisplayDimensions", l_lovrHeadsetGetDisplayDimensions },
|
||||||
|
|
|
@ -36,6 +36,8 @@ void lovrHeadsetDestroy();
|
||||||
void lovrHeadsetPoll();
|
void lovrHeadsetPoll();
|
||||||
int lovrHeadsetIsPresent();
|
int lovrHeadsetIsPresent();
|
||||||
const char* lovrHeadsetGetType();
|
const char* lovrHeadsetGetType();
|
||||||
|
int lovrHeadsetIsMirrored();
|
||||||
|
void lovrHeadsetSetMirrored(int mirror);
|
||||||
void lovrHeadsetGetDisplayDimensions(int* width, int* height);
|
void lovrHeadsetGetDisplayDimensions(int* width, int* height);
|
||||||
void lovrHeadsetGetClipDistance(float* near, float* far);
|
void lovrHeadsetGetClipDistance(float* near, float* far);
|
||||||
void lovrHeadsetSetClipDistance(float near, float far);
|
void lovrHeadsetSetClipDistance(float near, float far);
|
||||||
|
|
|
@ -35,6 +35,7 @@ static TrackedDevicePose_t getPose(unsigned int deviceIndex) {
|
||||||
void lovrHeadsetInit() {
|
void lovrHeadsetInit() {
|
||||||
state.isInitialized = 0;
|
state.isInitialized = 0;
|
||||||
state.isRendering = 0;
|
state.isRendering = 0;
|
||||||
|
state.isMirrored = 1;
|
||||||
state.texture = NULL;
|
state.texture = NULL;
|
||||||
vec_init(&state.controllers);
|
vec_init(&state.controllers);
|
||||||
|
|
||||||
|
@ -174,6 +175,14 @@ const char* lovrHeadsetGetType() {
|
||||||
return state.isInitialized ? "Vive" : NULL;
|
return state.isInitialized ? "Vive" : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int lovrHeadsetIsMirrored() {
|
||||||
|
return state.isMirrored;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lovrHeadsetSetMirrored(int mirror) {
|
||||||
|
state.isMirrored = mirror;
|
||||||
|
}
|
||||||
|
|
||||||
void lovrHeadsetGetDisplayDimensions(int* width, int* height) {
|
void lovrHeadsetGetDisplayDimensions(int* width, int* height) {
|
||||||
if (!state.isInitialized) {
|
if (!state.isInitialized) {
|
||||||
*width = *height = 0;
|
*width = *height = 0;
|
||||||
|
@ -646,5 +655,8 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) {
|
||||||
|
|
||||||
state.isRendering = 0;
|
state.isRendering = 0;
|
||||||
lovrGraphicsPopCanvas();
|
lovrGraphicsPopCanvas();
|
||||||
|
|
||||||
|
if (state.isMirrored) {
|
||||||
lovrGraphicsPlaneFullscreen(state.texture);
|
lovrGraphicsPlaneFullscreen(state.texture);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int isInitialized;
|
int isInitialized;
|
||||||
int isRendering;
|
int isRendering;
|
||||||
|
int isMirrored;
|
||||||
|
|
||||||
struct VR_IVRSystem_FnTable* system;
|
struct VR_IVRSystem_FnTable* system;
|
||||||
struct VR_IVRCompositor_FnTable* compositor;
|
struct VR_IVRCompositor_FnTable* compositor;
|
||||||
|
|
|
@ -92,6 +92,9 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
" headset = true, "
|
" headset = true, "
|
||||||
" math = true, "
|
" math = true, "
|
||||||
" timer = true "
|
" timer = true "
|
||||||
|
" }, "
|
||||||
|
" headset = { "
|
||||||
|
" mirror = true "
|
||||||
" } "
|
" } "
|
||||||
"} "
|
"} "
|
||||||
|
|
||||||
|
@ -110,6 +113,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
"end "
|
"end "
|
||||||
|
|
||||||
"lovr.filesystem.setIdentity(conf.identity or 'default') "
|
"lovr.filesystem.setIdentity(conf.identity or 'default') "
|
||||||
|
"if lovr.headset then lovr.headset.setMirrored(conf.headset and conf.headset.mirror) end "
|
||||||
|
|
||||||
"lovr.handlers = setmetatable({ "
|
"lovr.handlers = setmetatable({ "
|
||||||
" quit = function() end, "
|
" quit = function() end, "
|
||||||
|
|
Loading…
Reference in a new issue