Add debug states for testing seated recenter
Settings: enable seated motion -> unchecked + debug state 1~6 adds a slight delay then performs ReloadFromDisk (to test if ReloadFromDisk alone is causing the snap back) Settings: enable seated motion-> checked + debug state 100+ adds a delay before ReloadFromDisk equal to debug state-100 ms. Then proceeds as normal
This commit is contained in:
@@ -1255,6 +1255,35 @@ void MoveCenterTabController::incomingSeatedReset()
|
|||||||
{
|
{
|
||||||
updateSeatedResetData();
|
updateSeatedResetData();
|
||||||
}
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 1 )
|
||||||
|
{
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 2 )
|
||||||
|
{
|
||||||
|
Sleep( 20 );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 3 )
|
||||||
|
{
|
||||||
|
Sleep( 100 );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 4 )
|
||||||
|
{
|
||||||
|
Sleep( 200 );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 5 )
|
||||||
|
{
|
||||||
|
Sleep( 500 );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
|
else if ( parent->enableDebug() && parent->debugState() == 6 )
|
||||||
|
{
|
||||||
|
Sleep( 1000 );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::reset()
|
void MoveCenterTabController::reset()
|
||||||
@@ -1478,7 +1507,15 @@ void MoveCenterTabController::updateSeatedResetData()
|
|||||||
emit offsetYChanged( m_offsetY );
|
emit offsetYChanged( m_offsetY );
|
||||||
emit offsetZChanged( m_offsetZ );
|
emit offsetZChanged( m_offsetZ );
|
||||||
emit rotationChanged( m_rotation );
|
emit rotationChanged( m_rotation );
|
||||||
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
if ( parent->enableDebug() && parent->debugState() >= 100 )
|
||||||
|
{
|
||||||
|
m_lastSeatedRecenterTimePoint = std::chrono::steady_clock::now();
|
||||||
|
m_pendingSeatedReloadFromDisk = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
|
}
|
||||||
// set pending update here, will be processed on next instance of motion or
|
// set pending update here, will be processed on next instance of motion or
|
||||||
// running the reset() function.
|
// running the reset() function.
|
||||||
m_pendingSeatedRecenter = true;
|
m_pendingSeatedRecenter = true;
|
||||||
@@ -3100,6 +3137,34 @@ void MoveCenterTabController::eventLoopTick(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( parent->enableDebug() && parent->debugState() >= 100 )
|
||||||
|
{
|
||||||
|
if ( m_pendingSeatedReloadFromDisk )
|
||||||
|
{
|
||||||
|
double secondsSinceLastRecenter
|
||||||
|
= std::chrono::duration<double>(
|
||||||
|
std::chrono::steady_clock::now()
|
||||||
|
- m_lastSeatedRecenterTimePoint )
|
||||||
|
.count();
|
||||||
|
|
||||||
|
if ( secondsSinceLastRecenter
|
||||||
|
>= ( static_cast<double>( parent->debugState() ) - 100.0 )
|
||||||
|
/ 1000.0 )
|
||||||
|
{
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk(
|
||||||
|
vr::EChaperoneConfigFile_Live );
|
||||||
|
m_pendingSeatedReloadFromDisk = false;
|
||||||
|
}
|
||||||
|
// stop for one loop tick even if it's time to
|
||||||
|
// ReloadFromDisk to give it a little extra time before we
|
||||||
|
// might process motion.
|
||||||
|
|
||||||
|
// if still m_pendingSeatedReloadFromDisk we'll remain waiting
|
||||||
|
// here until it's time, stopping before processing motion.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// only update dynamic motion if the dash is closed
|
// only update dynamic motion if the dash is closed
|
||||||
if ( !parent->isDashboardVisible() )
|
if ( !parent->isDashboardVisible() )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ private:
|
|||||||
bool m_chaperoneCommitted = true;
|
bool m_chaperoneCommitted = true;
|
||||||
bool m_pendingZeroOffsets = true;
|
bool m_pendingZeroOffsets = true;
|
||||||
bool m_pendingSeatedRecenter = false;
|
bool m_pendingSeatedRecenter = false;
|
||||||
|
bool m_pendingSeatedReloadFromDisk = false;
|
||||||
bool m_dashWasOpenPreviousFrame = false;
|
bool m_dashWasOpenPreviousFrame = false;
|
||||||
bool m_roomSetupModeDetected = false;
|
bool m_roomSetupModeDetected = false;
|
||||||
bool m_seatedModeDetected = false;
|
bool m_seatedModeDetected = false;
|
||||||
@@ -190,6 +191,7 @@ private:
|
|||||||
double m_velocity[3] = { 0.0, 0.0, 0.0 };
|
double m_velocity[3] = { 0.0, 0.0, 0.0 };
|
||||||
std::chrono::steady_clock::time_point m_lastGravityUpdateTimePoint;
|
std::chrono::steady_clock::time_point m_lastGravityUpdateTimePoint;
|
||||||
std::chrono::steady_clock::time_point m_lastDragUpdateTimePoint;
|
std::chrono::steady_clock::time_point m_lastDragUpdateTimePoint;
|
||||||
|
std::chrono::steady_clock::time_point m_lastSeatedRecenterTimePoint;
|
||||||
vr::HmdQuad_t* m_collisionBoundsForReset;
|
vr::HmdQuad_t* m_collisionBoundsForReset;
|
||||||
uint32_t m_collisionBoundsCountForReset = 0;
|
uint32_t m_collisionBoundsCountForReset = 0;
|
||||||
vr::HmdMatrix34_t m_universeCenterForReset
|
vr::HmdMatrix34_t m_universeCenterForReset
|
||||||
|
|||||||
Reference in New Issue
Block a user