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 # 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. 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 ### 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 cmake .. -G Xcode

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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