Fix possible startup issue on WMR (#160)
* Add more checks for zero quads count for WMR * Delay initial zeroOffsets() to init stage2 * Re-add OpenVR 1.3.22 libraries
This commit is contained in:
@@ -420,7 +420,6 @@ void OverlayController::SetWidget( QQuickItem* quickItem,
|
|||||||
|
|
||||||
m_steamVRTabController.initStage2( this, m_pWindow.get() );
|
m_steamVRTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_chaperoneTabController.initStage2( this, m_pWindow.get() );
|
m_chaperoneTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_moveCenterTabController.initStage2( this, m_pWindow.get() );
|
|
||||||
m_fixFloorTabController.initStage2( this, m_pWindow.get() );
|
m_fixFloorTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_audioTabController.initStage2( this, m_pWindow.get() );
|
m_audioTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_statisticsTabController.initStage2( this, m_pWindow.get() );
|
m_statisticsTabController.initStage2( this, m_pWindow.get() );
|
||||||
@@ -428,6 +427,7 @@ void OverlayController::SetWidget( QQuickItem* quickItem,
|
|||||||
m_reviveTabController.initStage2( this, m_pWindow.get() );
|
m_reviveTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_utilitiesTabController.initStage2( this, m_pWindow.get() );
|
m_utilitiesTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_videoTabController.initStage2( this, m_pWindow.get() );
|
m_videoTabController.initStage2( this, m_pWindow.get() );
|
||||||
|
m_moveCenterTabController.initStage2( this, m_pWindow.get() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayController::OnRenderRequest()
|
void OverlayController::OnRenderRequest()
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ void MoveCenterTabController::initStage1()
|
|||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
m_lastDragUpdateTimePoint = std::chrono::steady_clock::now();
|
m_lastDragUpdateTimePoint = std::chrono::steady_clock::now();
|
||||||
m_lastGravityUpdateTimePoint = std::chrono::steady_clock::now();
|
m_lastGravityUpdateTimePoint = std::chrono::steady_clock::now();
|
||||||
zeroOffsets();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::initStage2( OverlayController* var_parent,
|
void MoveCenterTabController::initStage2( OverlayController* var_parent,
|
||||||
@@ -139,6 +138,7 @@ void MoveCenterTabController::initStage2( OverlayController* var_parent,
|
|||||||
{
|
{
|
||||||
this->parent = var_parent;
|
this->parent = var_parent;
|
||||||
this->widget = var_widget;
|
this->widget = var_widget;
|
||||||
|
zeroOffsets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::outputLogPoses()
|
void MoveCenterTabController::outputLogPoses()
|
||||||
@@ -961,7 +961,13 @@ 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 );
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
unsigned checkQuadCount = 0;
|
||||||
|
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
||||||
|
&checkQuadCount );
|
||||||
|
if ( checkQuadCount > 0 )
|
||||||
|
{
|
||||||
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::updateChaperoneResetData()
|
void MoveCenterTabController::updateChaperoneResetData()
|
||||||
@@ -1024,7 +1030,13 @@ void MoveCenterTabController::updateChaperoneResetData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
unsigned checkQuadCount = 0;
|
||||||
|
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
||||||
|
&checkQuadCount );
|
||||||
|
if ( checkQuadCount > 0 )
|
||||||
|
{
|
||||||
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::applyChaperoneResetData()
|
void MoveCenterTabController::applyChaperoneResetData()
|
||||||
@@ -1043,7 +1055,13 @@ void MoveCenterTabController::applyChaperoneResetData()
|
|||||||
|
|
||||||
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
||||||
|
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
unsigned checkQuadCount = 0;
|
||||||
|
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
||||||
|
&checkQuadCount );
|
||||||
|
if ( checkQuadCount > 0 )
|
||||||
|
{
|
||||||
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// START of drag bindings:
|
// START of drag bindings:
|
||||||
@@ -1760,7 +1778,13 @@ void MoveCenterTabController::saveUncommittedChaperone()
|
|||||||
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
||||||
vr::EChaperoneConfigFile_Live );
|
vr::EChaperoneConfigFile_Live );
|
||||||
m_chaperoneCommitted = true;
|
m_chaperoneCommitted = true;
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
unsigned checkQuadCount = 0;
|
||||||
|
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(
|
||||||
|
nullptr, &checkQuadCount );
|
||||||
|
if ( checkQuadCount > 0 )
|
||||||
|
{
|
||||||
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2240,7 +2264,10 @@ void MoveCenterTabController::updateSpace()
|
|||||||
|
|
||||||
// loadChaperoneData( false ), false so that we don't load live data, and
|
// loadChaperoneData( false ), false so that we don't load live data, and
|
||||||
// reference the working set instead.
|
// reference the working set instead.
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
if ( m_collisionBoundsCountForReset > 0 )
|
||||||
|
{
|
||||||
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
|
}
|
||||||
|
|
||||||
m_oldOffsetX = m_offsetX;
|
m_oldOffsetX = m_offsetX;
|
||||||
m_oldOffsetY = m_offsetY;
|
m_oldOffsetY = m_offsetY;
|
||||||
|
|||||||
Vendored
+12
-69
@@ -1,70 +1,13 @@
|
|||||||
# OpenVR Samples: CMake build guide.
|
OpenVR SDK
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
| Configuration | 32 | 64 |
|
|
||||||
| ----------------------- |:---------:|----------:|
|
|
||||||
| GNU/Linux (gcc 4.8+) | OK | OK |
|
|
||||||
| Windows (msvc 12) | OK | OK |
|
|
||||||
| OSX (clang) | ~ | ~ |
|
|
||||||
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
* Qt 5.x
|
|
||||||
* GLEW 1.11+
|
|
||||||
* SDL2
|
|
||||||
* OpenVR
|
|
||||||
|
|
||||||
The only general external dependency is Qt5.<br/>
|
|
||||||
On GNU/Linux, you will need GLEW 1.11 (available on most package manager).<br/>
|
|
||||||
On Windows x64, you will need the SDL2 runtime library.
|
|
||||||
|
|
||||||
## Build
|
|
||||||
|
|
||||||
**Important:**<br/>
|
|
||||||
*you might need to specify Qt5 cmake module path manually when generating the cache for the first time using the __CMAKE_PREFIX_PATH__ macro (see examples below).*
|
|
||||||
|
|
||||||
We will use the command-line on Unix and [Git Bash](https://git-for-windows.github.io/) on Windows.
|
|
||||||
|
|
||||||
First, move from the repository root to the samples directory to create a build directory:
|
|
||||||
```
|
|
||||||
cd samples
|
|
||||||
mkdir build; cd build
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, depending on your system:
|
|
||||||
|
|
||||||
### Unix
|
|
||||||
|
|
||||||
Generate the CMake cache using Makefile:
|
|
||||||
```
|
|
||||||
cmake .. -G Makefile -DCMAKE_PREFIX_PATH=/opt/Qt/5.6/gcc_64/lib/cmake -DCMAKE_BUILD_TYPE=Release
|
|
||||||
```
|
|
||||||
|
|
||||||
To build type:
|
|
||||||
```
|
|
||||||
make -j4
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
|
|
||||||
Generate the CMake cache using MSVC 12 for x64:
|
|
||||||
```
|
|
||||||
cmake .. -G "Visual Studio 12 2013 Win64" -DCMAKE_PREFIX_PATH=C:/Qt/5.6/msvc2013_64/lib/cmake
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, you can force the compilation on x86 architectures by using the **PLATFORM** property (*be sure to use the right generator and Qt binaries*):
|
|
||||||
```
|
|
||||||
cmake .. -G "Visual Studio 12 2013" -DCMAKE_PREFIX_PATH=C:/Qt/5.6/msvc2013/lib/cmake -DPLATFORM=32
|
|
||||||
```
|
|
||||||
|
|
||||||
To build, simply type:
|
|
||||||
```
|
|
||||||
cmake --build . --target all --config Release
|
|
||||||
```
|
|
||||||
|
|
||||||
*Note : using CMake, the build configuration type (ie. Debug, Release) is set at Build Time with MSVC and at Cache Generation Time with Makefile.*
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
OpenVR is an API and runtime that allows access to VR hardware from multiple
|
||||||
|
vendors without requiring that applications have specific knowledge of the
|
||||||
|
hardware they are targeting. This repository is an SDK that contains the API
|
||||||
|
and samples. The runtime is under SteamVR in Tools on Steam.
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
Documentation for the API is available on the [Github Wiki](https://github.com/ValveSoftware/openvr/wiki/API-Documentation)
|
||||||
|
|
||||||
|
More information on OpenVR and SteamVR can be found on http://steamvr.com
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user