mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2025-02-16 17:11:15 +00:00
OpenXR controllers coordinates relative to head space
This commit is contained in:
parent
5068ce7199
commit
f2dbc90823
3 changed files with 5 additions and 5 deletions
|
@ -1394,7 +1394,7 @@ void IN_VRSyncActions( void )
|
||||||
getInfo.subactionPath = XR_NULL_PATH;
|
getInfo.subactionPath = XR_NULL_PATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IN_VRUpdateControllers( float predictedDisplayTime )
|
void IN_VRUpdateControllers( XrPosef xfStageFromHead, float predictedDisplayTime )
|
||||||
{
|
{
|
||||||
engine_t* engine = VR_GetEngine();
|
engine_t* engine = VR_GetEngine();
|
||||||
|
|
||||||
|
@ -1406,10 +1406,10 @@ void IN_VRUpdateControllers( float predictedDisplayTime )
|
||||||
if (ActionPoseIsActive(controller[i], subactionPath[i])) {
|
if (ActionPoseIsActive(controller[i], subactionPath[i])) {
|
||||||
XrSpaceLocation loc = {};
|
XrSpaceLocation loc = {};
|
||||||
loc.type = XR_TYPE_SPACE_LOCATION;
|
loc.type = XR_TYPE_SPACE_LOCATION;
|
||||||
OXR(xrLocateSpace(controllerSpace[i], engine->appState.CurrentSpace, predictedDisplayTime, &loc));
|
OXR(xrLocateSpace(controllerSpace[i], engine->appState.HeadSpace, predictedDisplayTime, &loc));
|
||||||
|
|
||||||
engine->appState.TrackedController[i].Active = (loc.locationFlags & XR_SPACE_LOCATION_POSITION_VALID_BIT) != 0;
|
engine->appState.TrackedController[i].Active = (loc.locationFlags & XR_SPACE_LOCATION_POSITION_VALID_BIT) != 0;
|
||||||
engine->appState.TrackedController[i].Pose = loc.pose;
|
engine->appState.TrackedController[i].Pose = XrPosef_Multiply(xfStageFromHead, loc.pose);
|
||||||
} else {
|
} else {
|
||||||
ovrTrackedController_Clear(&engine->appState.TrackedController[i]);
|
ovrTrackedController_Clear(&engine->appState.TrackedController[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ void IN_VRInputFrame( void );
|
||||||
void IN_VRInit( void );
|
void IN_VRInit( void );
|
||||||
void IN_VRSyncActions( void );
|
void IN_VRSyncActions( void );
|
||||||
void IN_VRUpdateHMD( XrPosef xfStageFromHead );
|
void IN_VRUpdateHMD( XrPosef xfStageFromHead );
|
||||||
void IN_VRUpdateControllers( float predictedDisplayTime );
|
void IN_VRUpdateControllers( XrPosef xfStageFromHead, float predictedDisplayTime );
|
||||||
|
|
||||||
void QuatToYawPitchRoll(XrQuaternionf q, vec3_t rotation, vec3_t out);
|
void QuatToYawPitchRoll(XrQuaternionf q, vec3_t rotation, vec3_t out);
|
||||||
|
|
||||||
|
|
|
@ -421,8 +421,8 @@ void VR_DrawFrame( engine_t* engine ) {
|
||||||
|
|
||||||
// Update HMD and controllers
|
// Update HMD and controllers
|
||||||
IN_VRUpdateHMD( invViewTransform[0] );
|
IN_VRUpdateHMD( invViewTransform[0] );
|
||||||
|
IN_VRUpdateControllers( invViewTransform[0], frameState.predictedDisplayTime );
|
||||||
IN_VRSyncActions();
|
IN_VRSyncActions();
|
||||||
IN_VRUpdateControllers( frameState.predictedDisplayTime );
|
|
||||||
|
|
||||||
//Projection used for drawing HUD models etc
|
//Projection used for drawing HUD models etc
|
||||||
float hudScale = M_PI * 15.0f / 180.0f;
|
float hudScale = M_PI * 15.0f / 180.0f;
|
||||||
|
|
Loading…
Reference in a new issue