Merge remote-tracking branch 'upstream/master' into parenting

This commit is contained in:
HifiExperiments 2020-07-16 13:33:46 -07:00
commit ed5c84548c
7 changed files with 107 additions and 17 deletions

View file

@ -1,6 +1,6 @@
# Build OSX
*Last Updated on July 3, 2020*
*Last Updated on July 13, 2020*
Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only macOS specific instructions are found in this document.
@ -28,7 +28,9 @@ For OpenSSL installed via homebrew, set OPENSSL_ROOT_DIR via
### Xcode
If Xcode is your editor of choice, you can ask CMake to generate Xcode project files instead of Unix Makefiles.
If Xcode is your editor of choice, you can ask CMake to generate Xcode project files instead of Unix Makefiles. You will need to select the Xcode installation in the terminal first if you have not done so already.
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
cmake .. -G Xcode

View file

@ -7,9 +7,9 @@ file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSE
if (WIN32)
vcpkg_download_distfile(
SRANIPAL_SOURCE_ARCHIVE
URLS "${EXTERNAL_BUILD_ASSETS}/seth/sranipal-1.1.0.1-windows.zip"
SHA512 b09ce012abe4e3c71e8e69626bdd7823ff6576601a821ab365275f2764406a3e5f7b65fcf2eb1d0962eff31eb5958a148b00901f67c229dc6ace56eb5e6c9e1b
FILENAME sranipal-1.1.0.1-windows.zip
URLS "${EXTERNAL_BUILD_ASSETS}/seth/sranipal-1.1.0.1-2-windows.zip"
SHA512 f1f68f6beef52ae5e034bc3f44932ae0800ee187b75d80e76ae7b17b8ddd7bc54c039ce5594d231035e3caf3a61fed36f38621a860b4fb20170cb0176d9c28f0
FILENAME sranipal-1.1.0.1-2-windows.zip
)
vcpkg_extract_source_archive(${SRANIPAL_SOURCE_ARCHIVE})

View file

@ -1,6 +1,7 @@
//
// Created by Dante Ruiz on 6/1/17.
// Copyright 2017 High Fidelity, Inc.
// Copyright 2020 Vircadia contributors.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -96,7 +97,8 @@ Item {
HifiControls.ImageMessageBox {
id: imageMessageBox
anchors.fill: parent
anchors.top: parent.top
anchors.topMargin: 444
z: 2000
imageWidth: 442
imageHeight: 670
@ -179,7 +181,7 @@ Item {
HifiControls.CheckBox {
id: checkBox
colorScheme: hifi.colorSchemes.dark
text: "show all input devices"
text: "Show all input devices"
onClicked: {
box.model = inputPlugins();

View file

@ -1,6 +1,7 @@
//
// Created by Dante Ruiz on 6/5/17.
// Copyright 2017 High Fidelity, Inc.
// Copyright 2020 Vircadia contributors.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
@ -71,6 +72,7 @@ Flickable {
property int state: buttonState.disabled
property var lastConfiguration: null
property bool isConfiguring: false
HifiConstants { id: hifi }
@ -360,9 +362,9 @@ Flickable {
RalewayRegular {
id: info
text: "See Recommended Tracker Placement"
text: "See Recommended Placement"
color: hifi.colors.blueHighlight
size: 10
size: 12
anchors {
left: additional.right
leftMargin: 10
@ -415,7 +417,6 @@ Flickable {
id: feetBox
width: 15
height: 15
boxRadius: 7
onClicked: {
if (!checked) {
@ -446,7 +447,6 @@ Flickable {
id: hipBox
width: 15
height: 15
boxRadius: 7
onClicked: {
if (checked) {
@ -486,7 +486,6 @@ Flickable {
id: chestBox
width: 15
height: 15
boxRadius: 7
onClicked: {
if (checked) {
@ -524,7 +523,6 @@ Flickable {
id: shoulderBox
width: 15
height: 15
boxRadius: 7
onClicked: {
if (checked) {
@ -823,7 +821,6 @@ Flickable {
id: viveInDesktop
width: 15
height: 15
boxRadius: 7
anchors.top: advanceSettings.bottom
anchors.topMargin: 5
@ -840,9 +837,71 @@ Flickable {
}
}
HifiControls.CheckBox {
id: eyeTracking
width: 15
height: 15
anchors.top: viveInDesktop.bottom
anchors.topMargin: 5
anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 10
onClicked: {
sendConfigurationSettings();
}
}
RalewayBold {
id: eyeTrackingLabel
size: 12
text: "Use eye tracking (if available)."
color: hifi.colors.lightGrayText
anchors {
left: eyeTracking.right
leftMargin: 5
verticalCenter: eyeTracking.verticalCenter
}
}
RalewayRegular {
id: privacyPolicy
text: "Privacy Policy"
color: hifi.colors.blueHighlight
size: 12
anchors {
left: eyeTrackingLabel.right
leftMargin: 10
verticalCenter: eyeTrackingLabel.verticalCenter
}
Rectangle {
id: privacyPolicyUnderline
color: hifi.colors.blueHighlight
width: privacyPolicy.width
height: 1
anchors {
top: privacyPolicy.bottom
topMargin: 1
left: privacyPolicy.left
}
visible: false
}
MouseArea {
anchors.fill: parent;
hoverEnabled: true
onEntered: privacyPolicyUnderline.visible = true;
onExited: privacyPolicyUnderline.visible = false;
onClicked: HiFiAbout.openUrl("https://vircadia.com/privacy-policy");
}
}
Row {
id: outOfRangeDataStrategyRow
anchors.top: viveInDesktop.bottom
anchors.top: eyeTracking.bottom
anchors.topMargin: 5
anchors.left: openVrConfiguration.left
anchors.leftMargin: leftMargin + 10
@ -966,6 +1025,8 @@ Flickable {
}
function displayConfiguration() {
isConfiguring = true;
var settings = InputConfiguration.configurationSettings(openVrConfiguration.pluginName);
var configurationType = settings["trackerConfiguration"];
displayTrackerConfiguration(configurationType);
@ -982,6 +1043,7 @@ Flickable {
var viveController = settings["handController"];
var desktopMode = settings["desktopMode"];
var hmdDesktopPosition = settings["hmdDesktopTracking"];
var eyeTrackingEnabled = settings["eyeTrackingEnabled"];
armCircumference.realValue = settings.armCircumference;
shoulderWidth.realValue = settings.shoulderWidth;
@ -1004,6 +1066,7 @@ Flickable {
viveInDesktop.checked = desktopMode;
hmdInDesktop.checked = hmdDesktopPosition;
eyeTracking.checked = eyeTrackingEnabled;
outOfRangeDataStrategyComboBox.currentIndex = outOfRangeDataStrategyComboBox.model.indexOf(settings.outOfRangeDataStrategy);
initializeButtonState();
@ -1014,6 +1077,8 @@ Flickable {
};
UserActivityLogger.logAction("mocap_ui_open_dialog", data);
isConfiguring = false;
}
function displayTrackerConfiguration(type) {
@ -1170,6 +1235,7 @@ Flickable {
"shoulderWidth": shoulderWidth.realValue,
"desktopMode": viveInDesktop.checked,
"hmdDesktopTracking": hmdInDesktop.checked,
"eyeTrackingEnabled": eyeTracking.checked,
"outOfRangeDataStrategy": outOfRangeDataStrategyComboBox.model[outOfRangeDataStrategyComboBox.currentIndex]
}
@ -1177,6 +1243,10 @@ Flickable {
}
function sendConfigurationSettings() {
if (isConfiguring) {
// Ignore control value changes during dialog initialization.
return;
}
var settings = composeConfigurationSettings();
InputConfiguration.setConfigurationSettings(settings, openVrConfiguration.pluginName);
updateCalibrationButton();

View file

@ -264,6 +264,10 @@ void ViveControllerManager::setConfigurationSettings(const QJsonObject configura
_hmdDesktopTracking = configurationSettings["hmdDesktopTracking"].toBool();
}
if (configurationSettings.contains("eyeTrackingEnabled")) {
_eyeTrackingEnabled = configurationSettings["eyeTrackingEnabled"].toBool();
}
_inputDevice->configureCalibrationSettings(configurationSettings);
saveSettings();
}
@ -274,6 +278,7 @@ QJsonObject ViveControllerManager::configurationSettings() {
QJsonObject configurationSettings = _inputDevice->configurationSettings();
configurationSettings["desktopMode"] = _desktopMode;
configurationSettings["hmdDesktopTracking"] = _hmdDesktopTracking;
configurationSettings["eyeTrackingEnabled"] = _eyeTrackingEnabled;
return configurationSettings;
}
@ -793,7 +798,7 @@ void ViveControllerManager::pluginUpdate(float deltaTime, const controller::Inpu
}
#ifdef VIVE_PRO_EYE
if (_viveProEye) {
if (_viveProEye && _eyeTrackingEnabled) {
updateEyeTracker(deltaTime, inputCalibrationData);
}
@ -815,6 +820,9 @@ void ViveControllerManager::loadSettings() {
_inputDevice->_shoulderWidth = settings.value("shoulderWidth", QVariant(DEFAULT_SHOULDER_WIDTH)).toDouble();
_inputDevice->_outOfRangeDataStrategy = stringToOutOfRangeDataStrategy(settings.value("outOfRangeDataStrategy", QVariant(DEFAULT_OUT_OF_RANGE_STRATEGY)).toString());
}
const bool DEFAULT_EYE_TRACKING_ENABLED = false;
_eyeTrackingEnabled = settings.value("eyeTrackingEnabled", QVariant(DEFAULT_EYE_TRACKING_ENABLED)).toBool();
}
settings.endGroup();
}
@ -829,6 +837,8 @@ void ViveControllerManager::saveSettings() const {
settings.setValue(QString("shoulderWidth"), _inputDevice->_shoulderWidth);
settings.setValue(QString("outOfRangeDataStrategy"), outOfRangeDataStrategyToString(_inputDevice->_outOfRangeDataStrategy));
}
settings.setValue(QString("eyeTrackingEnabled"), _eyeTrackingEnabled);
}
settings.endGroup();
}
@ -857,6 +867,9 @@ void ViveControllerManager::InputDevice::update(float deltaTime, const controlle
if (_headsetName == "HTC") {
_headsetName += " Vive";
}
if (oculusViaOpenVR()) {
_headsetName = "OpenVR"; // Enables calibration dialog to function when debugging using Oculus.
}
}
// While the keyboard is open, we defer strictly to the keyboard values
if (isOpenVrKeyboardShown()) {

View file

@ -262,6 +262,8 @@ private:
vr::IVRSystem* _system { nullptr };
std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>(_system) };
bool _eyeTrackingEnabled{ false };
#ifdef VIVE_PRO_EYE
bool _viveProEye { false };
std::shared_ptr<ViveProEyeReadThread> _viveProEyeReadThread;

View file

@ -42,7 +42,8 @@
ui = new AppUi({
buttonName: "EXPLORE",
home: Script.resolvePath("explore.html"),
graphicsDirectory: scriptDir
graphicsDirectory: scriptDir,
sortOrder: 8
});
}