lovr.headset.getDirection; Controller:getDirection;

This commit is contained in:
bjorn 2019-04-12 15:08:45 -07:00
parent 9131c26fab
commit 44be3608a7
2 changed files with 29 additions and 0 deletions

View File

@ -228,6 +228,19 @@ static int l_lovrHeadsetGetOrientation(lua_State* L) {
return 4;
}
static int l_lovrHeadsetGetDirection(lua_State* L) {
float x, y, z, angle, ax, ay, az;
lovrHeadsetDriver->getPose(&x, &y, &z, &angle, &ax, &ay, &az);
float q[4];
quat_fromAngleAxis(q, angle, ax, ay, az);
float v[3] = { 0.f, 0.f, -1.f };
quat_rotate(q, v);
lua_pushnumber(L, v[0]);
lua_pushnumber(L, v[1]);
lua_pushnumber(L, v[2]);
return 3;
}
static int l_lovrHeadsetGetVelocity(lua_State* L) {
float velocity[3];
lovrHeadsetDriver->getVelocity(&velocity[0], &velocity[1], &velocity[2]);
@ -318,6 +331,7 @@ static const luaL_Reg lovrHeadset[] = {
{ "getPose", l_lovrHeadsetGetPose },
{ "getPosition", l_lovrHeadsetGetPosition },
{ "getOrientation", l_lovrHeadsetGetOrientation },
{ "getDirection", l_lovrHeadsetGetDirection },
{ "getVelocity", l_lovrHeadsetGetVelocity },
{ "getAngularVelocity", l_lovrHeadsetGetAngularVelocity },
{ "getControllers", l_lovrHeadsetGetControllers },

View File

@ -52,6 +52,20 @@ static int l_lovrControllerGetOrientation(lua_State* L) {
return 4;
}
static int l_lovrControllerGetDirection(lua_State* L) {
Controller* controller = luax_checktype(L, 1, Controller);
float x, y, z, angle, ax, ay, az;
lovrHeadsetDriver->controllerGetPose(controller, &x, &y, &z, &angle, &ax, &ay, &az);
float q[4];
quat_fromAngleAxis(q, angle, ax, ay, az);
float v[3] = { 0.f, 0.f, -1.f };
quat_rotate(q, v);
lua_pushnumber(L, v[0]);
lua_pushnumber(L, v[1]);
lua_pushnumber(L, v[2]);
return 3;
}
static int l_lovrControllerGetVelocity(lua_State* L) {
Controller* controller = luax_checktype(L, 1, Controller);
float velocity[3];
@ -121,6 +135,7 @@ const luaL_Reg lovrController[] = {
{ "getPose", l_lovrControllerGetPose },
{ "getPosition", l_lovrControllerGetPosition },
{ "getOrientation", l_lovrControllerGetOrientation },
{ "getDirection", l_lovrControllerGetDirection },
{ "getVelocity", l_lovrControllerGetVelocity },
{ "getAngularVelocity", l_lovrControllerGetAngularVelocity },
{ "getAxis", l_lovrControllerGetAxis },