5.8.11 (#668)
* change fix floor re-center to just be standard recenter * add some error handling around calibration state, force chaperone to live state on 0 offset * fix commit * Changed fix floor functions to operate off of move center controller * add cur offset to center rebased to move center tab controller * update version number * fix initialization issue for universe center * add check to re-initialize if calibration state is not yet set i.e. lighthouse sleep * increment version number, slight change for specifically 200 error * remove commented code * fix conversion error warning
This commit is contained in:
@@ -1 +1 @@
|
|||||||
5.8.9-release
|
5.8.11-release
|
||||||
|
|||||||
@@ -861,23 +861,6 @@ void OverlayController::setExclusiveInputEnabled( bool value, bool notify )
|
|||||||
emit exclusiveInputEnabledChanged( value );
|
emit exclusiveInputEnabledChanged( value );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void OverlayController::setOpenXRFixEnabled( bool value, bool notify )
|
|
||||||
{
|
|
||||||
settings::setSetting( settings::BoolSetting::APPLICATION_openXRWorkAround,
|
|
||||||
value );
|
|
||||||
if ( notify )
|
|
||||||
{
|
|
||||||
emit openXRFixEnabledChanged( value );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OverlayController::openXRFixEnabled() const
|
|
||||||
{
|
|
||||||
return settings::getSetting(
|
|
||||||
settings::BoolSetting::APPLICATION_openXRWorkAround );
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void OverlayController::setAutoApplyChaperoneEnabled( bool value, bool notify )
|
void OverlayController::setAutoApplyChaperoneEnabled( bool value, bool notify )
|
||||||
{
|
{
|
||||||
settings::setSetting( settings::BoolSetting::APPLICATION_autoApplyChaperone,
|
settings::setSetting( settings::BoolSetting::APPLICATION_autoApplyChaperone,
|
||||||
@@ -1268,6 +1251,11 @@ void OverlayController::mainEventLoop()
|
|||||||
m_chaperoneUtils.loadChaperoneData();
|
m_chaperoneUtils.loadChaperoneData();
|
||||||
chaperoneDataAlreadyUpdated = true;
|
chaperoneDataAlreadyUpdated = true;
|
||||||
}
|
}
|
||||||
|
if ( previousUniverseId == 0
|
||||||
|
&& !m_moveCenterTabController.isInitComplete() )
|
||||||
|
{
|
||||||
|
m_moveCenterTabController.zeroOffsets();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case vr::VREvent_Input_ActionManifestReloaded:
|
case vr::VREvent_Input_ActionManifestReloaded:
|
||||||
@@ -1359,73 +1347,6 @@ void OverlayController::mainEventLoop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayController::AddOffsetToUniverseCenter(
|
|
||||||
vr::ETrackingUniverseOrigin universe,
|
|
||||||
unsigned axisId,
|
|
||||||
float offset,
|
|
||||||
bool adjustBounds,
|
|
||||||
bool commit )
|
|
||||||
{
|
|
||||||
float offsetArray[3] = { 0, 0, 0 };
|
|
||||||
offsetArray[axisId] = offset;
|
|
||||||
AddOffsetToUniverseCenter( universe, offsetArray, adjustBounds, commit );
|
|
||||||
}
|
|
||||||
|
|
||||||
void OverlayController::AddOffsetToUniverseCenter(
|
|
||||||
vr::ETrackingUniverseOrigin universe,
|
|
||||||
float offset[3],
|
|
||||||
bool adjustBounds,
|
|
||||||
bool commit )
|
|
||||||
{
|
|
||||||
if ( offset[0] != 0.0f || offset[1] != 0.0f || offset[2] != 0.0f )
|
|
||||||
{
|
|
||||||
if ( commit )
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->HideWorkingSetPreview();
|
|
||||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
|
||||||
}
|
|
||||||
vr::HmdMatrix34_t curPos;
|
|
||||||
if ( universe == vr::TrackingUniverseStanding )
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(
|
|
||||||
&curPos );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(
|
|
||||||
&curPos );
|
|
||||||
}
|
|
||||||
for ( int i = 0; i < 3; i++ )
|
|
||||||
{
|
|
||||||
curPos.m[0][3] += curPos.m[0][i] * offset[i];
|
|
||||||
curPos.m[1][3] += curPos.m[1][i] * offset[i];
|
|
||||||
curPos.m[2][3] += curPos.m[2][i] * offset[i];
|
|
||||||
}
|
|
||||||
if ( universe == vr::TrackingUniverseStanding )
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(
|
|
||||||
&curPos );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(
|
|
||||||
&curPos );
|
|
||||||
}
|
|
||||||
if ( adjustBounds && universe == vr::TrackingUniverseStanding )
|
|
||||||
{
|
|
||||||
float collisionOffset[] = { -offset[0], -offset[1], -offset[2] };
|
|
||||||
AddOffsetToCollisionBounds( collisionOffset, false );
|
|
||||||
}
|
|
||||||
if ( commit )
|
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
|
||||||
vr::EChaperoneConfigFile_Live );
|
|
||||||
vr::VRChaperoneSetup()->ReloadFromDisk(
|
|
||||||
vr::EChaperoneConfigFile_Temp );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OverlayController::RotateUniverseCenter(
|
void OverlayController::RotateUniverseCenter(
|
||||||
vr::ETrackingUniverseOrigin universe,
|
vr::ETrackingUniverseOrigin universe,
|
||||||
float yAngle,
|
float yAngle,
|
||||||
|
|||||||
@@ -200,15 +200,6 @@ public:
|
|||||||
const std::string& name,
|
const std::string& name,
|
||||||
const std::string& key = "" );
|
const std::string& key = "" );
|
||||||
|
|
||||||
void AddOffsetToUniverseCenter( vr::ETrackingUniverseOrigin universe,
|
|
||||||
unsigned axisId,
|
|
||||||
float offset,
|
|
||||||
bool adjustBounds = true,
|
|
||||||
bool commit = true );
|
|
||||||
void AddOffsetToUniverseCenter( vr::ETrackingUniverseOrigin universe,
|
|
||||||
float offset[3],
|
|
||||||
bool adjustBounds = true,
|
|
||||||
bool commit = true );
|
|
||||||
void RotateUniverseCenter( vr::ETrackingUniverseOrigin universe,
|
void RotateUniverseCenter( vr::ETrackingUniverseOrigin universe,
|
||||||
float yAngle,
|
float yAngle,
|
||||||
bool adjustBounds = true,
|
bool adjustBounds = true,
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ MyStackViewPage {
|
|||||||
text: "Apply Space Settings Offsets as Center"
|
text: "Apply Space Settings Offsets as Center"
|
||||||
Layout.preferredHeight: 80
|
Layout.preferredHeight: 80
|
||||||
onClicked: {
|
onClicked: {
|
||||||
MoveCenterTabController.zeroOffsets()
|
MoveCenterTabController.addCurOffsetAsCenter()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -207,8 +207,7 @@ void FixFloorTabController::dashboardLoopTick(
|
|||||||
offset[0] = floorOffsetX;
|
offset[0] = floorOffsetX;
|
||||||
offset[2] = floorOffsetZ;
|
offset[2] = floorOffsetZ;
|
||||||
}
|
}
|
||||||
parent->AddOffsetToUniverseCenter(
|
parent->m_moveCenterTabController.addOffset( offset );
|
||||||
vr::TrackingUniverseStanding, offset, true );
|
|
||||||
statusMessage
|
statusMessage
|
||||||
= ( state == 2 ) ? "Recentering ... Ok" : "Fixing ... OK";
|
= ( state == 2 ) ? "Recentering ... Ok" : "Fixing ... OK";
|
||||||
statusMessageTimeout = 1.0;
|
statusMessageTimeout = 1.0;
|
||||||
@@ -302,24 +301,13 @@ void FixFloorTabController::fixFloorClicked()
|
|||||||
|
|
||||||
void FixFloorTabController::recenterClicked()
|
void FixFloorTabController::recenterClicked()
|
||||||
{
|
{
|
||||||
parent->m_moveCenterTabController.reset();
|
parent->m_moveCenterTabController.sendSeatedRecenter();
|
||||||
statusMessage = "Fixing ...";
|
|
||||||
statusMessageTimeout = 1.0;
|
|
||||||
emit statusMessageSignal();
|
|
||||||
emit measureStartSignal();
|
|
||||||
measurementCount = 0;
|
|
||||||
state = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixFloorTabController::undoFixFloorClicked()
|
void FixFloorTabController::undoFixFloorClicked()
|
||||||
{
|
{
|
||||||
parent->m_moveCenterTabController.reset();
|
float off[3] = { -floorOffsetX, -floorOffsetY, -floorOffsetZ };
|
||||||
parent->AddOffsetToUniverseCenter(
|
parent->m_moveCenterTabController.addOffset( off );
|
||||||
vr::TrackingUniverseStanding, 0, -floorOffsetX, false );
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
vr::TrackingUniverseStanding, 1, -floorOffsetY, false );
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
vr::TrackingUniverseStanding, 2, -floorOffsetZ, false );
|
|
||||||
LOG( INFO ) << "Fix Floor: Undo Floor Offset = [" << -floorOffsetX << ", "
|
LOG( INFO ) << "Fix Floor: Undo Floor Offset = [" << -floorOffsetX << ", "
|
||||||
<< -floorOffsetY << ", " << -floorOffsetZ << "]";
|
<< -floorOffsetY << ", " << -floorOffsetZ << "]";
|
||||||
floorOffsetY = 0.0f;
|
floorOffsetY = 0.0f;
|
||||||
|
|||||||
@@ -123,6 +123,27 @@ void MoveCenterTabController::applyOffsetProfile( unsigned index )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MoveCenterTabController::addOffset( float offset[] )
|
||||||
|
{
|
||||||
|
m_universeCenterForReset.m[0][3] += offset[0];
|
||||||
|
m_universeCenterForReset.m[1][3] += offset[1];
|
||||||
|
m_universeCenterForReset.m[2][3] += offset[2];
|
||||||
|
|
||||||
|
m_seatedCenterForReset.m[0][3] += offset[0];
|
||||||
|
m_seatedCenterForReset.m[1][3] += offset[1];
|
||||||
|
m_seatedCenterForReset.m[2][3] += offset[2];
|
||||||
|
|
||||||
|
updateSpace( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MoveCenterTabController::addCurOffsetAsCenter()
|
||||||
|
{
|
||||||
|
float off[3] = { -m_offsetX, m_offsetY, -m_offsetZ };
|
||||||
|
// zeroOffsets();
|
||||||
|
resetOffsets( true );
|
||||||
|
addOffset( off );
|
||||||
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::deleteOffsetProfile( unsigned index )
|
void MoveCenterTabController::deleteOffsetProfile( unsigned index )
|
||||||
{
|
{
|
||||||
if ( index < m_offsetProfiles.size() )
|
if ( index < m_offsetProfiles.size() )
|
||||||
@@ -1097,18 +1118,25 @@ void MoveCenterTabController::zeroOffsets()
|
|||||||
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
|
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
|
||||||
if ( parent->isPreviousShutdownSafe() )
|
if ( parent->isPreviousShutdownSafe() )
|
||||||
{
|
{
|
||||||
// all init complete, safe to autosave chaperone profile
|
|
||||||
parent->m_chaperoneTabController.createNewAutosaveProfile();
|
|
||||||
m_initComplete = true;
|
|
||||||
auto calState = vr::VRChaperone()->GetCalibrationState();
|
auto calState = vr::VRChaperone()->GetCalibrationState();
|
||||||
LOG( INFO ) << "Calibration State after autosave profile is: "
|
if ( calState == 200 )
|
||||||
<< calState;
|
{
|
||||||
|
LOG( WARNING )
|
||||||
|
<< "Chaperone State Does Not Exist Yet, will wait for "
|
||||||
|
"universe change to finish initialization";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// all init complete, safe to autosave chaperone profile
|
||||||
|
parent->m_chaperoneTabController.createNewAutosaveProfile();
|
||||||
|
m_initComplete = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// shutdown was unsafe last session!
|
// shutdown was unsafe last session!
|
||||||
LOG( WARNING ) << "DETECTED UNSAFE SHUTDOWN FROM LAST SESSION";
|
LOG( WARNING ) << "DETECTED UNSAFE SHUTDOWN FROM LAST SESSION";
|
||||||
m_initComplete = true;
|
m_initComplete = false;
|
||||||
if ( !parent->crashRecoveryDisabled() )
|
if ( !parent->crashRecoveryDisabled() )
|
||||||
{
|
{
|
||||||
parent->m_chaperoneTabController.applyAutosavedProfile();
|
parent->m_chaperoneTabController.applyAutosavedProfile();
|
||||||
@@ -1165,8 +1193,18 @@ void MoveCenterTabController::clampVelocity( double* velocity )
|
|||||||
|
|
||||||
void MoveCenterTabController::updateChaperoneResetData()
|
void MoveCenterTabController::updateChaperoneResetData()
|
||||||
{
|
{
|
||||||
// TODO
|
auto cstate = vr::VRChaperone()->GetCalibrationState();
|
||||||
// vr::VRChaperoneSetup()->RevertWorkingCopy();
|
if ( cstate > 199 )
|
||||||
|
{
|
||||||
|
LOG( WARNING ) << "Chaperone Calibration State is error: " << cstate
|
||||||
|
<< " While Trying to Update Reset Data";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
||||||
|
vr::EChaperoneConfigFile_Live );
|
||||||
|
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||||
|
}
|
||||||
unsigned currentQuadCount = 0;
|
unsigned currentQuadCount = 0;
|
||||||
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
||||||
¤tQuadCount );
|
¤tQuadCount );
|
||||||
@@ -1857,16 +1895,6 @@ void MoveCenterTabController::resetOffsets( bool resetOffsetsJustPressed )
|
|||||||
// of keyboard input.
|
// of keyboard input.
|
||||||
if ( resetOffsetsJustPressed )
|
if ( resetOffsetsJustPressed )
|
||||||
{
|
{
|
||||||
auto calState = vr::VRChaperone()->GetCalibrationState();
|
|
||||||
LOG( INFO ) << "Calibration State on Reset Offsets is: " << calState;
|
|
||||||
|
|
||||||
if ( calState > 199 && m_initComplete )
|
|
||||||
{
|
|
||||||
LOG( INFO ) << "Chaperone calibration state is error, attempting "
|
|
||||||
"to apply autosaved profile to fix issue";
|
|
||||||
parent->m_chaperoneTabController.applyAutosavedProfile();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_offsetX = 0.0f;
|
m_offsetX = 0.0f;
|
||||||
m_offsetY = 0.0f;
|
m_offsetY = 0.0f;
|
||||||
m_offsetZ = 0.0f;
|
m_offsetZ = 0.0f;
|
||||||
@@ -1876,6 +1904,16 @@ void MoveCenterTabController::resetOffsets( bool resetOffsetsJustPressed )
|
|||||||
emit offsetZChanged( m_offsetZ );
|
emit offsetZChanged( m_offsetZ );
|
||||||
emit rotationChanged( m_rotation );
|
emit rotationChanged( m_rotation );
|
||||||
updateSpace( true );
|
updateSpace( true );
|
||||||
|
auto calState = vr::VRChaperone()->GetCalibrationState();
|
||||||
|
LOG( INFO ) << "Calibration State on Reset Offsets is: " << calState;
|
||||||
|
|
||||||
|
// if ( calState > 199 && m_initComplete )
|
||||||
|
// {
|
||||||
|
// LOG( INFO ) << "Chaperone calibration state is error,
|
||||||
|
// attempting "
|
||||||
|
// "to apply autosaved profile to fix issue";
|
||||||
|
// parent->m_chaperoneTabController.applyAutosavedProfile();
|
||||||
|
// }
|
||||||
// reset();
|
// reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2478,6 +2516,18 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( ( abs( m_offsetX ) + abs( m_offsetY ) + abs( m_offsetZ )
|
||||||
|
+ abs( static_cast<float>( m_rotation ) ) )
|
||||||
|
== 0
|
||||||
|
&& !forceUpdate )
|
||||||
|
{
|
||||||
|
if ( m_chaperoneHasCommit )
|
||||||
|
{
|
||||||
|
m_chaperoneHasCommit = true;
|
||||||
|
updateChaperoneResetData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_chaperoneHasCommit = false;
|
||||||
|
|
||||||
vr::HmdMatrix34_t offsetUniverseCenter;
|
vr::HmdMatrix34_t offsetUniverseCenter;
|
||||||
|
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ private:
|
|||||||
unsigned m_dragComfortFrameSkipCounter = 0;
|
unsigned m_dragComfortFrameSkipCounter = 0;
|
||||||
unsigned m_turnComfortFrameSkipCounter = 0;
|
unsigned m_turnComfortFrameSkipCounter = 0;
|
||||||
int m_recenterStages = 0;
|
int m_recenterStages = 0;
|
||||||
|
int m_chaperoneHasCommit = false;
|
||||||
|
|
||||||
// Matrix used For Center Marker
|
// Matrix used For Center Marker
|
||||||
vr::HmdMatrix34_t m_offsetmatrix = utils::k_forwardUpMatrix;
|
vr::HmdMatrix34_t m_offsetmatrix = utils::k_forwardUpMatrix;
|
||||||
@@ -279,6 +280,8 @@ public:
|
|||||||
Q_INVOKABLE unsigned getOffsetProfileCount();
|
Q_INVOKABLE unsigned getOffsetProfileCount();
|
||||||
Q_INVOKABLE QString getOffsetProfileName( unsigned index );
|
Q_INVOKABLE QString getOffsetProfileName( unsigned index );
|
||||||
|
|
||||||
|
void addOffset( float offset[3] );
|
||||||
|
|
||||||
// actions:
|
// actions:
|
||||||
void leftHandSpaceDrag( bool leftHandDragActive );
|
void leftHandSpaceDrag( bool leftHandDragActive );
|
||||||
void rightHandSpaceDrag( bool rightHandDragActive );
|
void rightHandSpaceDrag( bool rightHandDragActive );
|
||||||
@@ -353,6 +356,7 @@ public slots:
|
|||||||
void addOffsetProfile( QString name );
|
void addOffsetProfile( QString name );
|
||||||
void applyOffsetProfile( unsigned index );
|
void applyOffsetProfile( unsigned index );
|
||||||
void deleteOffsetProfile( unsigned index );
|
void deleteOffsetProfile( unsigned index );
|
||||||
|
void addCurOffsetAsCenter();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void trackingUniverseChanged( int value );
|
void trackingUniverseChanged( int value );
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{ "major": 5, "minor": 8, "patch": 9, "updateMessage": "", "optionalMessage": "" }
|
{ "major": 5, "minor": 8, "patch": 11, "updateMessage": "", "optionalMessage": "" }
|
||||||
|
|||||||
Reference in New Issue
Block a user