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);
|
headset->interface->getControllerOrientation(headset, controller, w, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float lovrHeadsetGetControllerAxis(Controller* controller) {
|
||||||
|
return headset->interface->getControllerAxis(headset, controller);
|
||||||
|
}
|
||||||
|
|
||||||
ControllerHand lovrHeadsetGetControllerHand(Controller* controller) {
|
ControllerHand lovrHeadsetGetControllerHand(Controller* controller) {
|
||||||
return headset->interface->getControllerHand(headset, controller);
|
return headset->interface->getControllerHand(headset, controller);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ typedef struct {
|
||||||
char (*isControllerPresent)(void* headset, Controller* controller);
|
char (*isControllerPresent)(void* headset, Controller* controller);
|
||||||
void (*getControllerPosition)(void* headset, Controller* controller, float* x, float* y, float* z);
|
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);
|
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);
|
ControllerHand (*getControllerHand)(void* headset, Controller* controller);
|
||||||
void (*renderTo)(void* headset, headsetRenderCallback callback, void* userdata);
|
void (*renderTo)(void* headset, headsetRenderCallback callback, void* userdata);
|
||||||
} HeadsetInterface;
|
} HeadsetInterface;
|
||||||
|
@ -55,5 +56,6 @@ Controller* lovrHeadsetGetController(ControllerHand hand);
|
||||||
char lovrHeadsetIsControllerPresent(Controller* controller);
|
char lovrHeadsetIsControllerPresent(Controller* controller);
|
||||||
void lovrHeadsetGetControllerPosition(Controller* controller, float* x, float* y, float* z);
|
void lovrHeadsetGetControllerPosition(Controller* controller, float* x, float* y, float* z);
|
||||||
void lovrHeadsetGetControllerOrientation(Controller* controller, float* w, 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);
|
ControllerHand lovrHeadsetGetControllerHand(Controller* controller);
|
||||||
void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata);
|
void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata);
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "../util.h"
|
#include "../util.h"
|
||||||
#include "../graphics/graphics.h"
|
#include "../graphics/graphics.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct VR_IVRSystem_FnTable* vrSystem;
|
struct VR_IVRSystem_FnTable* vrSystem;
|
||||||
|
@ -48,6 +49,7 @@ static HeadsetInterface interface = {
|
||||||
.isControllerPresent = viveIsControllerPresent,
|
.isControllerPresent = viveIsControllerPresent,
|
||||||
.getControllerPosition = viveGetControllerPosition,
|
.getControllerPosition = viveGetControllerPosition,
|
||||||
.getControllerOrientation = viveGetControllerOrientation,
|
.getControllerOrientation = viveGetControllerOrientation,
|
||||||
|
.getControllerAxis = viveGetControllerAxis,
|
||||||
.getControllerHand = viveGetControllerHand,
|
.getControllerHand = viveGetControllerHand,
|
||||||
.renderTo = viveRenderTo
|
.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);
|
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) {
|
ControllerHand viveGetControllerHand(void* headset, Controller* controller) {
|
||||||
return controller->hand;
|
return controller->hand;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,5 +18,6 @@ Controller* viveGetController(void* headset, ControllerHand hand);
|
||||||
char viveIsControllerPresent(void* headset, Controller* controller);
|
char viveIsControllerPresent(void* headset, Controller* controller);
|
||||||
void viveGetControllerPosition(void* headset, Controller* controller, float* x, float* y, float* z);
|
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);
|
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);
|
ControllerHand viveGetControllerHand(void* headset, Controller* controller);
|
||||||
void viveRenderTo(void* headset, headsetRenderCallback callback, void* userdata);
|
void viveRenderTo(void* headset, headsetRenderCallback callback, void* userdata);
|
||||||
|
|
|
@ -22,6 +22,7 @@ const luaL_Reg lovrController[] = {
|
||||||
{ "isPresent", l_lovrControllerIsPresent },
|
{ "isPresent", l_lovrControllerIsPresent },
|
||||||
{ "getPosition", l_lovrControllerGetPosition },
|
{ "getPosition", l_lovrControllerGetPosition },
|
||||||
{ "getOrientation", l_lovrControllerGetOrientation },
|
{ "getOrientation", l_lovrControllerGetOrientation },
|
||||||
|
{ "getAxis", l_lovrControllerGetAxis },
|
||||||
{ "getHand", l_lovrControllerGetHand },
|
{ "getHand", l_lovrControllerGetHand },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
@ -53,6 +54,12 @@ int l_lovrControllerGetOrientation(lua_State* L) {
|
||||||
return 4;
|
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) {
|
int l_lovrControllerGetHand(lua_State* L) {
|
||||||
Controller* controller = luax_checkcontroller(L, 1);
|
Controller* controller = luax_checkcontroller(L, 1);
|
||||||
lua_pushstring(L, map_int_find(&ControllerHands, lovrHeadsetGetControllerHand(controller)));
|
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_lovrControllerIsPresent(lua_State* L);
|
||||||
int l_lovrControllerGetPosition(lua_State* L);
|
int l_lovrControllerGetPosition(lua_State* L);
|
||||||
int l_lovrControllerGetOrientation(lua_State* L);
|
int l_lovrControllerGetOrientation(lua_State* L);
|
||||||
|
int l_lovrControllerGetAxis(lua_State* L);
|
||||||
int l_lovrControllerGetHand(lua_State* L);
|
int l_lovrControllerGetHand(lua_State* L);
|
||||||
|
|
Loading…
Reference in a new issue