Make double recenter behavior default and cleanup debug code

This also adds the option "simpleRecenter" which can be set to true in the ini playspace settings to get single (non loop) recenter behavior back.
This commit is contained in:
Kung-vr
2019-10-21 13:55:21 +09:00
parent 4dea88bd75
commit 2a63525fba
4 changed files with 44 additions and 75 deletions
+35 -71
View File
@@ -158,6 +158,11 @@ void MoveCenterTabController::initStage1()
{
m_enableSeatedMotion = value.toBool();
}
value = settings->value( "simpleRecenter", m_simpleRecenter );
if ( value.isValid() && !value.isNull() )
{
m_simpleRecenter = value.toBool();
}
settings->endGroup();
reloadOffsetProfiles();
m_lastDragUpdateTimePoint = std::chrono::steady_clock::now();
@@ -351,6 +356,10 @@ void MoveCenterTabController::outputLogSettings()
{
LOG( INFO ) << "LOADED SETTINGS: Seated Motion Enabled";
}
if ( m_simpleRecenter )
{
LOG( INFO ) << "LOADED SETTINGS: Simple Recenter Enabled";
}
if ( m_dragBounds )
{
LOG( INFO ) << "LOADED SETTINGS: Space Drag Force Bounds Enabled";
@@ -1207,6 +1216,27 @@ void MoveCenterTabController::setEnableSeatedMotion( bool value, bool notify )
<< m_enableSeatedMotion;
}
bool MoveCenterTabController::simpleRecenter() const
{
return m_simpleRecenter;
}
void MoveCenterTabController::setSimpleRecenter( bool value, bool notify )
{
m_simpleRecenter = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
settings->setValue( "simpleRecenter", m_simpleRecenter );
settings->endGroup();
settings->sync();
if ( notify )
{
emit simpleRecenterChanged( m_simpleRecenter );
}
LOG( INFO ) << "CHANGED SETTINGS: Simple Recenter Set: "
<< m_simpleRecenter;
}
void MoveCenterTabController::modOffsetX( float value, bool notify )
{
if ( !m_lockXToggle )
@@ -1253,7 +1283,10 @@ void MoveCenterTabController::incomingSeatedReset()
{
if ( m_enableSeatedMotion )
{
if ( !m_selfRequestedSeatedRecenter )
// if we didn't send the request from OVRAS, we need to send another
// ResetSeatedZeroPose(). It seems that only after this is sent from
// OVRAS does ReloadFromDisk return valid info on WMR.
if ( !m_selfRequestedSeatedRecenter && !m_simpleRecenter )
{
m_selfRequestedSeatedRecenter = true;
vr::VRSystem()->ResetSeatedZeroPose();
@@ -1263,35 +1296,6 @@ void MoveCenterTabController::incomingSeatedReset()
updateSeatedResetData();
}
}
else if ( parent->enableDebug() && parent->debugState() == 1 )
{
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
else if ( parent->enableDebug() && parent->debugState() == 2 )
{
std::this_thread::sleep_for( std::chrono::milliseconds( 20 ) );
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
else if ( parent->enableDebug() && parent->debugState() == 3 )
{
std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
else if ( parent->enableDebug() && parent->debugState() == 4 )
{
std::this_thread::sleep_for( std::chrono::milliseconds( 200 ) );
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
else if ( parent->enableDebug() && parent->debugState() == 5 )
{
std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) );
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
else if ( parent->enableDebug() && parent->debugState() == 6 )
{
std::this_thread::sleep_for( std::chrono::milliseconds( 1000 ) );
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
}
void MoveCenterTabController::reset()
@@ -1474,10 +1478,6 @@ void MoveCenterTabController::zeroOffsets()
void MoveCenterTabController::sendSeatedRecenter()
{
if ( parent->enableDebug() && parent->debugState() == 7 )
{
m_selfRequestedSeatedRecenter = true;
}
vr::VRSystem()->ResetSeatedZeroPose();
}
@@ -1519,15 +1519,7 @@ void MoveCenterTabController::updateSeatedResetData()
emit offsetYChanged( m_offsetY );
emit offsetZChanged( m_offsetZ );
emit rotationChanged( m_rotation );
if ( parent->enableDebug() && parent->debugState() >= 100 )
{
m_lastSeatedRecenterTimePoint = std::chrono::steady_clock::now();
m_pendingSeatedReloadFromDisk = true;
}
else
{
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
}
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
// done with this recenter, so set self request back to false for next time.
m_selfRequestedSeatedRecenter = false;
// set pending update here, will be processed on next instance of motion or
@@ -3151,34 +3143,6 @@ void MoveCenterTabController::eventLoopTick(
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
if ( !parent->isDashboardVisible() )
{