mirror of
https://github.com/bjornbytes/lovr.git
synced 2024-07-04 13:33:34 +00:00
Start controller input;
This commit is contained in:
parent
69ecfc550e
commit
40f7260dd3
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue