1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-02 12:33:52 +00:00

Start controller input;

This commit is contained in:
bjorn 2016-11-12 03:44:33 -08:00
parent 69ecfc550e
commit 40f7260dd3
6 changed files with 33 additions and 0 deletions

View file

@ -75,6 +75,10 @@ void lovrHeadsetGetControllerOrientation(Controller* controller, float* w, float
headset->interface->getControllerOrientation(headset, controller, w, x, y, z);
}
float lovrHeadsetGetControllerAxis(Controller* controller) {
return headset->interface->getControllerAxis(headset, controller);
}
ControllerHand lovrHeadsetGetControllerHand(Controller* controller) {
return headset->interface->getControllerHand(headset, controller);
}

View file

@ -28,6 +28,7 @@ typedef struct {
char (*isControllerPresent)(void* headset, Controller* controller);
void (*getControllerPosition)(void* headset, Controller* controller, float* x, float* y, float* z);
void (*getControllerOrientation)(void* headset, Controller* controller, float* w, float* x, float* y, float* z);
float (*getControllerAxis)(void* headset, Controller* controller);
ControllerHand (*getControllerHand)(void* headset, Controller* controller);
void (*renderTo)(void* headset, headsetRenderCallback callback, void* userdata);
} HeadsetInterface;
@ -55,5 +56,6 @@ Controller* lovrHeadsetGetController(ControllerHand hand);
char lovrHeadsetIsControllerPresent(Controller* controller);
void lovrHeadsetGetControllerPosition(Controller* controller, float* x, float* y, float* z);
void lovrHeadsetGetControllerOrientation(Controller* controller, float* w, float* x, float* y, float* z);
float lovrHeadsetGetControllerAxis(Controller* controller);
ControllerHand lovrHeadsetGetControllerHand(Controller* controller);
void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata);

View file

@ -7,6 +7,7 @@
#include <stdlib.h>
#include "../util.h"
#include "../graphics/graphics.h"
#include <stdint.h>
typedef struct {
struct VR_IVRSystem_FnTable* vrSystem;
@ -48,6 +49,7 @@ static HeadsetInterface interface = {
.isControllerPresent = viveIsControllerPresent,
.getControllerPosition = viveGetControllerPosition,
.getControllerOrientation = viveGetControllerOrientation,
.getControllerAxis = viveGetControllerAxis,
.getControllerHand = viveGetControllerHand,
.renderTo = viveRenderTo
};
@ -307,6 +309,22 @@ void viveGetControllerOrientation(void* headset, Controller* controller, float*
mat4_getRotation(mat4_fromMat44(matrix, pose.mDeviceToAbsoluteTracking.m), w, x, y, z);
}
float viveGetControllerAxis(void* headset, Controller* controller) {
Headset* this = headset;
ViveState* state = this->state;
VRControllerState_t input;
struct VREvent_t event;
while (state->vrSystem->PollNextEvent(&event, sizeof(event))) {
printf("%d\n", event.eventType);
}
int i = state->vrSystem->GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole_TrackedControllerRole_RightHand);
printf("%d %d\n", i, state->controllerIndex[controller->hand]);
state->vrSystem->GetControllerState(i, &input);
return input.rAxis[1].x;
}
ControllerHand viveGetControllerHand(void* headset, Controller* controller) {
return controller->hand;
}

View file

@ -18,5 +18,6 @@ Controller* viveGetController(void* headset, ControllerHand hand);
char viveIsControllerPresent(void* headset, Controller* controller);
void viveGetControllerPosition(void* headset, Controller* controller, float* x, float* y, float* z);
void viveGetControllerOrientation(void* headset, Controller* controller, float* w, float* x, float* y, float* z);
float viveGetControllerAxis(void* headset, Controller* controller);
ControllerHand viveGetControllerHand(void* headset, Controller* controller);
void viveRenderTo(void* headset, headsetRenderCallback callback, void* userdata);

View file

@ -22,6 +22,7 @@ const luaL_Reg lovrController[] = {
{ "isPresent", l_lovrControllerIsPresent },
{ "getPosition", l_lovrControllerGetPosition },
{ "getOrientation", l_lovrControllerGetOrientation },
{ "getAxis", l_lovrControllerGetAxis },
{ "getHand", l_lovrControllerGetHand },
{ NULL, NULL }
};
@ -53,6 +54,12 @@ int l_lovrControllerGetOrientation(lua_State* L) {
return 4;
}
int l_lovrControllerGetAxis(lua_State* L) {
Controller* controller = luax_checkcontroller(L, 1);
lua_pushnumber(L, lovrHeadsetGetControllerAxis(controller));
return 1;
}
int l_lovrControllerGetHand(lua_State* L) {
Controller* controller = luax_checkcontroller(L, 1);
lua_pushstring(L, map_int_find(&ControllerHands, lovrHeadsetGetControllerHand(controller)));

View file

@ -12,4 +12,5 @@ extern const luaL_Reg lovrController[];
int l_lovrControllerIsPresent(lua_State* L);
int l_lovrControllerGetPosition(lua_State* L);
int l_lovrControllerGetOrientation(lua_State* L);
int l_lovrControllerGetAxis(lua_State* L);
int l_lovrControllerGetHand(lua_State* L);