Prevent applictaion of uninitialized chaperone basis

This commit is contained in:
Kung-vr
2019-09-18 00:29:00 +09:00
parent 4b0be27ff6
commit 229b11b3c8
2 changed files with 25 additions and 3 deletions
+15 -1
View File
@@ -38,7 +38,6 @@ namespace advsettings
{
void MoveCenterTabController::initStage1()
{
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
auto value = settings->value( "adjustChaperone", m_adjustChaperone );
@@ -1095,6 +1094,12 @@ void MoveCenterTabController::incomingSeatedReset()
void MoveCenterTabController::reset()
{
if ( !m_chaperoneBasisAcquired )
{
LOG( WARNING ) << "WARNING: Attempted reset offsets before chaperone "
"basis is acquired!";
return;
}
vr::VRChaperoneSetup()->HideWorkingSetPreview();
m_heightToggle = false;
emit heightToggleChanged( m_heightToggle );
@@ -1132,6 +1137,15 @@ void MoveCenterTabController::zeroOffsets()
emit rotationChanged( m_rotation );
updateChaperoneResetData();
m_pendingZeroOffsets = false;
if ( !m_chaperoneBasisAcquired )
{
m_chaperoneBasisAcquired = true;
if ( !m_initComplete )
{
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
m_initComplete = true;
}
}
if ( m_roomSetupModeDetected )
{
LOG( INFO ) << "room setup EXIT detected";
+10 -2
View File
@@ -89,6 +89,8 @@ private:
OverlayController* parent;
int m_trackingUniverse = static_cast<int>( vr::TrackingUniverseStanding );
bool m_chaperoneBasisAcquired = false;
bool m_initComplete = false;
float m_offsetX = 0.0f;
float m_offsetY = 0.0f;
float m_offsetZ = 0.0f;
@@ -172,8 +174,14 @@ private:
std::chrono::steady_clock::time_point m_lastDragUpdateTimePoint;
vr::HmdQuad_t* m_collisionBoundsForReset;
uint32_t m_collisionBoundsCountForReset = 0;
vr::HmdMatrix34_t m_universeCenterForReset;
vr::HmdMatrix34_t m_seatedCenterForReset;
vr::HmdMatrix34_t m_universeCenterForReset
= { { { 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f, 0.0f } } };
vr::HmdMatrix34_t m_seatedCenterForReset
= { { { 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f, 0.0f } } };
vr::HmdQuad_t* m_collisionBoundsForOffset;
void updateHmdRotationCounter( vr::TrackedDevicePose_t hmdPose,