mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:28:46 +02:00
Merge branch 'master' of github.com:highfidelity/hifi into faster-getters-on-avatar-for-scripts
This commit is contained in:
commit
62b7ba6446
17 changed files with 236 additions and 94 deletions
|
@ -17,8 +17,8 @@
|
||||||
#include <QtCore/QThread>
|
#include <QtCore/QThread>
|
||||||
|
|
||||||
#include <LogHandler.h>
|
#include <LogHandler.h>
|
||||||
#include <SharedUtil.h>
|
|
||||||
#include <HifiConfigVariantMap.h>
|
#include <HifiConfigVariantMap.h>
|
||||||
|
#include <SharedUtil.h>
|
||||||
#include <ShutdownEventListener.h>
|
#include <ShutdownEventListener.h>
|
||||||
|
|
||||||
#include "Assignment.h"
|
#include "Assignment.h"
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
{
|
{
|
||||||
"label": "Places / Paths",
|
"label": "Places / Paths",
|
||||||
"html_id": "places_paths",
|
"html_id": "places_paths",
|
||||||
|
"restart": false,
|
||||||
"settings": [
|
"settings": [
|
||||||
{
|
{
|
||||||
"name": "paths",
|
"name": "paths",
|
||||||
|
|
|
@ -40,11 +40,11 @@
|
||||||
#include <LogHandler.h>
|
#include <LogHandler.h>
|
||||||
#include <PathUtils.h>
|
#include <PathUtils.h>
|
||||||
#include <NumericalConstants.h>
|
#include <NumericalConstants.h>
|
||||||
|
#include <Trace.h>
|
||||||
|
#include <StatTracker.h>
|
||||||
|
|
||||||
#include "DomainServerNodeData.h"
|
#include "DomainServerNodeData.h"
|
||||||
#include "NodeConnectionData.h"
|
#include "NodeConnectionData.h"
|
||||||
#include <Trace.h>
|
|
||||||
#include <StatTracker.h>
|
|
||||||
|
|
||||||
int const DomainServer::EXIT_CODE_REBOOT = 234923;
|
int const DomainServer::EXIT_CODE_REBOOT = 234923;
|
||||||
|
|
||||||
|
|
|
@ -1250,7 +1250,7 @@ bool DomainServerSettingsManager::recurseJSONObjectAndOverwriteSettings(const QJ
|
||||||
|
|
||||||
if (!matchingDescriptionObject.isEmpty()) {
|
if (!matchingDescriptionObject.isEmpty()) {
|
||||||
updateSetting(rootKey, rootValue, *thisMap, matchingDescriptionObject);
|
updateSetting(rootKey, rootValue, *thisMap, matchingDescriptionObject);
|
||||||
if (rootKey != SECURITY_ROOT_KEY && rootKey != BROADCASTING_KEY) {
|
if (rootKey != SECURITY_ROOT_KEY && rootKey != BROADCASTING_KEY && rootKey != SETTINGS_PATHS_KEY ) {
|
||||||
needRestart = true;
|
needRestart = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Binary file not shown.
BIN
interface/resources/images/calibration-help.png
Normal file
BIN
interface/resources/images/calibration-help.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
64
interface/resources/qml/controls-uit/ImageMessageBox.qml
Normal file
64
interface/resources/qml/controls-uit/ImageMessageBox.qml
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
//
|
||||||
|
// ImageMessageBox.qml
|
||||||
|
//
|
||||||
|
// Created by Dante Ruiz on 7/5/2017
|
||||||
|
// Copyright 2017 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
import QtQuick 2.5
|
||||||
|
import QtQuick.Controls 1.4
|
||||||
|
import "../styles-uit"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: imageBox
|
||||||
|
visible: false
|
||||||
|
anchors.fill: parent
|
||||||
|
property alias source: image.source
|
||||||
|
property alias imageWidth: image.width
|
||||||
|
property alias imageHeight: image.height
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "black"
|
||||||
|
opacity: 0.3
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
HiFiGlyphs {
|
||||||
|
id: closeGlyphButton
|
||||||
|
text: hifi.glyphs.close
|
||||||
|
size: 25
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: parent.top
|
||||||
|
topMargin: 15
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onEntered: {
|
||||||
|
parent.text = hifi.glyphs.closeInverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
onExited: {
|
||||||
|
parent.text = hifi.glyphs.close;
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
imageBox.visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -65,7 +65,7 @@ Rectangle {
|
||||||
|
|
||||||
HiFiGlyphs {
|
HiFiGlyphs {
|
||||||
id: image
|
id: image
|
||||||
text: hifi.glyphs.avatar1
|
text: hifi.glyphs.avatarTPose
|
||||||
size: 190
|
size: 190
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import "../../controls-uit" as HifiControls
|
||||||
StackView {
|
StackView {
|
||||||
id: stack
|
id: stack
|
||||||
initialItem: inputConfiguration
|
initialItem: inputConfiguration
|
||||||
|
property alias messageVisible: imageMessageBox.visible
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: inputConfiguration
|
id: inputConfiguration
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -26,6 +27,15 @@ StackView {
|
||||||
|
|
||||||
property var pluginSettings: null
|
property var pluginSettings: null
|
||||||
|
|
||||||
|
HifiControls.ImageMessageBox {
|
||||||
|
id: imageMessageBox
|
||||||
|
anchors.fill: parent
|
||||||
|
z: 2000
|
||||||
|
imageWidth: 442
|
||||||
|
imageHeight: 670
|
||||||
|
source: "../../../images/calibration-help.png"
|
||||||
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: inputConfiguration.width
|
width: inputConfiguration.width
|
||||||
height: 1
|
height: 1
|
||||||
|
@ -167,7 +177,7 @@ StackView {
|
||||||
loader.item.pluginName = box.currentText;
|
loader.item.pluginName = box.currentText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loader.item.hasOwnProperty("displayInformation")) {
|
if (loader.item.hasOwnProperty("displayInformation")) {
|
||||||
loader.item.displayConfiguration();
|
loader.item.displayConfiguration();
|
||||||
}
|
}
|
||||||
|
@ -183,20 +193,20 @@ StackView {
|
||||||
return InputConfiguration.activeInputPlugins();
|
return InputConfiguration.activeInputPlugins();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
changeSource();
|
changeSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeSource() {
|
function changeSource() {
|
||||||
loader.source = "";
|
loader.source = "";
|
||||||
var source = "";
|
var source = "";
|
||||||
if (box.currentText == "Vive") {
|
if (box.currentText == "Vive") {
|
||||||
source = InputConfiguration.configurationLayout("OpenVR");
|
source = InputConfiguration.configurationLayout("OpenVR");
|
||||||
} else {
|
} else {
|
||||||
source = InputConfiguration.configurationLayout(box.currentText);
|
source = InputConfiguration.configurationLayout(box.currentText);
|
||||||
}
|
}
|
||||||
|
|
||||||
loader.source = source;
|
loader.source = source;
|
||||||
if (source === "") {
|
if (source === "") {
|
||||||
box.label = "(not configurable)";
|
box.label = "(not configurable)";
|
||||||
|
@ -204,14 +214,14 @@ StackView {
|
||||||
box.label = "";
|
box.label = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: timer
|
id: timer
|
||||||
repeat: false
|
repeat: false
|
||||||
interval: 300
|
interval: 300
|
||||||
onTriggered: initialize()
|
onTriggered: initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,9 +50,12 @@ Rectangle {
|
||||||
readonly property int apply: 1
|
readonly property int apply: 1
|
||||||
readonly property int applyAndCalibrate: 2
|
readonly property int applyAndCalibrate: 2
|
||||||
readonly property int calibrate: 3
|
readonly property int calibrate: 3
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: mouseArea
|
id: mouseArea
|
||||||
|
@ -64,6 +67,7 @@ Rectangle {
|
||||||
mouse.accepted = false;
|
mouse.accepted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
color: hifi.colors.baseGray
|
color: hifi.colors.baseGray
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
|
@ -146,6 +150,7 @@ Rectangle {
|
||||||
label: "Y: offset"
|
label: "Y: offset"
|
||||||
minimumValue: -10
|
minimumValue: -10
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
|
value: -0.05
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
|
@ -161,15 +166,16 @@ Rectangle {
|
||||||
minimumValue: -10
|
minimumValue: -10
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
decimals: 4
|
decimals: 4
|
||||||
|
value: -0.05
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: hands
|
id: hands
|
||||||
|
|
||||||
|
@ -245,7 +251,7 @@ Rectangle {
|
||||||
anchors.left: openVrConfiguration.left
|
anchors.left: openVrConfiguration.left
|
||||||
anchors.leftMargin: leftMargin + 10
|
anchors.leftMargin: leftMargin + 10
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
|
||||||
HifiControls.SpinBox {
|
HifiControls.SpinBox {
|
||||||
id: handYOffset
|
id: handYOffset
|
||||||
decimals: 4
|
decimals: 4
|
||||||
|
@ -269,7 +275,7 @@ Rectangle {
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
decimals: 4
|
decimals: 4
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -290,6 +296,52 @@ Rectangle {
|
||||||
anchors.leftMargin: leftMargin
|
anchors.leftMargin: leftMargin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RalewayRegular {
|
||||||
|
id: info
|
||||||
|
|
||||||
|
text: "See Recommended Tracker Placement"
|
||||||
|
color: hifi.colors.blueHighlight
|
||||||
|
size: 10
|
||||||
|
anchors {
|
||||||
|
left: additional.right
|
||||||
|
leftMargin: 10
|
||||||
|
verticalCenter: additional.verticalCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: selected
|
||||||
|
color: hifi.colors.blueHighlight
|
||||||
|
|
||||||
|
width: info.width
|
||||||
|
height: 1
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: info.bottom
|
||||||
|
topMargin: 1
|
||||||
|
left: info.left
|
||||||
|
right: info.right
|
||||||
|
}
|
||||||
|
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent;
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onEntered: {
|
||||||
|
selected.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
onExited: {
|
||||||
|
selected.visible = false;
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
stack.messageVisible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
id: feetConfig
|
id: feetConfig
|
||||||
anchors.top: additional.bottom
|
anchors.top: additional.bottom
|
||||||
|
@ -379,6 +431,7 @@ Rectangle {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
hipBox.checked = true;
|
hipBox.checked = true;
|
||||||
feetBox.checked = true;
|
feetBox.checked = true;
|
||||||
|
shoulderBox.checked = false;
|
||||||
}
|
}
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -416,6 +469,7 @@ Rectangle {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
hipBox.checked = true;
|
hipBox.checked = true;
|
||||||
feetBox.checked = true;
|
feetBox.checked = true;
|
||||||
|
chestBox.checked = false;
|
||||||
}
|
}
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -463,7 +517,7 @@ Rectangle {
|
||||||
anchors.leftMargin: leftMargin
|
anchors.leftMargin: leftMargin
|
||||||
|
|
||||||
radius: hifi.buttons.radius
|
radius: hifi.buttons.radius
|
||||||
|
|
||||||
gradient: Gradient {
|
gradient: Gradient {
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 0.2
|
position: 0.2
|
||||||
|
@ -479,7 +533,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 1.0
|
position: 1.0
|
||||||
color: {
|
color: {
|
||||||
|
@ -495,10 +549,10 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HiFiGlyphs {
|
HiFiGlyphs {
|
||||||
id: glyphButton
|
id: glyphButton
|
||||||
color: enabled ? hifi.buttons.textColor[calibrationButton.color]
|
color: enabled ? hifi.buttons.textColor[calibrationButton.color]
|
||||||
|
@ -512,7 +566,7 @@ Rectangle {
|
||||||
bottomMargin: 1
|
bottomMargin: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: calibrationText
|
id: calibrationText
|
||||||
font.capitalization: Font.AllUppercase
|
font.capitalization: Font.AllUppercase
|
||||||
|
@ -527,7 +581,7 @@ Rectangle {
|
||||||
topMargin: 7
|
topMargin: 7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -549,19 +603,19 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onPressed: {
|
onPressed: {
|
||||||
calibrationButton.pressed = true;
|
calibrationButton.pressed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onReleased: {
|
onReleased: {
|
||||||
calibrationButton.pressed = false;
|
calibrationButton.pressed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onEntered: {
|
onEntered: {
|
||||||
calibrationButton.hovered = true;
|
calibrationButton.hovered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onExited: {
|
onExited: {
|
||||||
calibrationButton.hovered = false;
|
calibrationButton.hovered = false;
|
||||||
}
|
}
|
||||||
|
@ -652,7 +706,7 @@ Rectangle {
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: advanceSettings
|
id: advanceSettings
|
||||||
|
|
||||||
text: "Advance Settings"
|
text: "Advanced Settings"
|
||||||
size: 12
|
size: 12
|
||||||
|
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
@ -683,7 +737,7 @@ Rectangle {
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: viveDesktopText
|
id: viveDesktopText
|
||||||
size: 10
|
size: 10
|
||||||
text: "Use vive devices in desktop mode"
|
text: "Use Vive devices in desktop mode"
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
|
@ -718,14 +772,14 @@ Rectangle {
|
||||||
calibratingScreen = screen.createObject();
|
calibratingScreen = screen.createObject();
|
||||||
stack.push(calibratingScreen);
|
stack.push(calibratingScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status["calibrated"]) {
|
if (status["calibrated"]) {
|
||||||
calibrationScreen.success();
|
calibrationScreen.success();
|
||||||
|
|
||||||
if (status["UI"]) {
|
if (status["UI"]) {
|
||||||
logAction("mocap_ui_success", status);
|
logAction("mocap_ui_success", status);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (!status["calibrated"]) {
|
} else if (!status["calibrated"]) {
|
||||||
calibrationScreen.failure();
|
calibrationScreen.failure();
|
||||||
|
|
||||||
|
@ -840,11 +894,11 @@ Rectangle {
|
||||||
var handOverride = handSetting["override"];
|
var handOverride = handSetting["override"];
|
||||||
|
|
||||||
var settingsChanged = false;
|
var settingsChanged = false;
|
||||||
|
|
||||||
if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
|
if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var lastHead = lastConfiguration["headConfiguration"];
|
var lastHead = lastConfiguration["headConfiguration"];
|
||||||
if (lastHead["override"] !== headOverride) {
|
if (lastHead["override"] !== headOverride) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
|
@ -854,13 +908,13 @@ Rectangle {
|
||||||
if (lastHand["override"] !== handOverride) {
|
if (lastHand["override"] !== handOverride) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsChanged) {
|
if (settingsChanged) {
|
||||||
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
|
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
|
||||||
state = buttonState.apply;
|
state = buttonState.apply;
|
||||||
} else {
|
} else {
|
||||||
state = buttonState.applyAndCalibrate;
|
state = buttonState.applyAndCalibrate;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (state == buttonState.apply) {
|
if (state == buttonState.apply) {
|
||||||
state = buttonState.disabled;
|
state = buttonState.disabled;
|
||||||
|
@ -868,7 +922,7 @@ Rectangle {
|
||||||
state = buttonState.calibrate;
|
state = buttonState.calibrate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lastConfiguration = settings;
|
lastConfiguration = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -885,7 +939,7 @@ Rectangle {
|
||||||
state = buttonState.disabled;
|
state = buttonState.disabled;
|
||||||
} else {
|
} else {
|
||||||
state = buttonState.calibrate;
|
state = buttonState.calibrate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCalibrationButton() {
|
function updateCalibrationButton() {
|
||||||
|
@ -951,7 +1005,7 @@ Rectangle {
|
||||||
"Y": handYOffset.value,
|
"Y": handYOffset.value,
|
||||||
"Z": handZOffset.value
|
"Z": handZOffset.value
|
||||||
}
|
}
|
||||||
|
|
||||||
var settingsObject = {
|
var settingsObject = {
|
||||||
"bodyConfiguration": trackerConfiguration,
|
"bodyConfiguration": trackerConfiguration,
|
||||||
"headConfiguration": headObject,
|
"headConfiguration": headObject,
|
||||||
|
|
|
@ -336,5 +336,6 @@ Item {
|
||||||
readonly property string source: "\ue01c"
|
readonly property string source: "\ue01c"
|
||||||
readonly property string playback_play: "\ue01d"
|
readonly property string playback_play: "\ue01d"
|
||||||
readonly property string stop_square: "\ue01e"
|
readonly property string stop_square: "\ue01e"
|
||||||
|
readonly property string avatarTPose: "\ue01f"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -952,58 +952,68 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
// Make sure we don't time out during slow operations at startup
|
// Make sure we don't time out during slow operations at startup
|
||||||
updateHeartbeat();
|
updateHeartbeat();
|
||||||
|
|
||||||
|
|
||||||
// sessionRunTime will be reset soon by loadSettings. Grab it now to get previous session value.
|
|
||||||
// The value will be 0 if the user blew away settings this session, which is both a feature and a bug.
|
|
||||||
static const QString TESTER = "HIFI_TESTER";
|
|
||||||
auto gpuIdent = GPUIdent::getInstance();
|
|
||||||
auto glContextData = getGLContextData();
|
|
||||||
QJsonObject properties = {
|
|
||||||
{ "version", applicationVersion() },
|
|
||||||
{ "tester", QProcessEnvironment::systemEnvironment().contains(TESTER) },
|
|
||||||
{ "previousSessionCrashed", _previousSessionCrashed },
|
|
||||||
{ "previousSessionRuntime", sessionRunTime.get() },
|
|
||||||
{ "cpu_architecture", QSysInfo::currentCpuArchitecture() },
|
|
||||||
{ "kernel_type", QSysInfo::kernelType() },
|
|
||||||
{ "kernel_version", QSysInfo::kernelVersion() },
|
|
||||||
{ "os_type", QSysInfo::productType() },
|
|
||||||
{ "os_version", QSysInfo::productVersion() },
|
|
||||||
{ "gpu_name", gpuIdent->getName() },
|
|
||||||
{ "gpu_driver", gpuIdent->getDriver() },
|
|
||||||
{ "gpu_memory", static_cast<qint64>(gpuIdent->getMemory()) },
|
|
||||||
{ "gl_version_int", glVersionToInteger(glContextData.value("version").toString()) },
|
|
||||||
{ "gl_version", glContextData["version"] },
|
|
||||||
{ "gl_vender", glContextData["vendor"] },
|
|
||||||
{ "gl_sl_version", glContextData["sl_version"] },
|
|
||||||
{ "gl_renderer", glContextData["renderer"] },
|
|
||||||
{ "ideal_thread_count", QThread::idealThreadCount() }
|
|
||||||
};
|
|
||||||
auto macVersion = QSysInfo::macVersion();
|
|
||||||
if (macVersion != QSysInfo::MV_None) {
|
|
||||||
properties["os_osx_version"] = QSysInfo::macVersion();
|
|
||||||
}
|
|
||||||
auto windowsVersion = QSysInfo::windowsVersion();
|
|
||||||
if (windowsVersion != QSysInfo::WV_None) {
|
|
||||||
properties["os_win_version"] = QSysInfo::windowsVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
ProcessorInfo procInfo;
|
|
||||||
if (getProcessorInfo(procInfo)) {
|
|
||||||
properties["processor_core_count"] = procInfo.numProcessorCores;
|
|
||||||
properties["logical_processor_count"] = procInfo.numLogicalProcessors;
|
|
||||||
properties["processor_l1_cache_count"] = procInfo.numProcessorCachesL1;
|
|
||||||
properties["processor_l2_cache_count"] = procInfo.numProcessorCachesL2;
|
|
||||||
properties["processor_l3_cache_count"] = procInfo.numProcessorCachesL3;
|
|
||||||
}
|
|
||||||
|
|
||||||
// add firstRun flag from settings to launch event
|
|
||||||
Setting::Handle<bool> firstRun { Settings::firstRun, true };
|
Setting::Handle<bool> firstRun { Settings::firstRun, true };
|
||||||
properties["first_run"] = firstRun.get();
|
|
||||||
|
|
||||||
// add the user's machine ID to the launch event
|
// once the settings have been loaded, check if we need to flip the default for UserActivityLogger
|
||||||
properties["machine_fingerprint"] = uuidStringWithoutCurlyBraces(FingerprintUtils::getMachineFingerprint());
|
auto& userActivityLogger = UserActivityLogger::getInstance();
|
||||||
|
if (!userActivityLogger.isDisabledSettingSet()) {
|
||||||
|
// the user activity logger is opt-out for Interface
|
||||||
|
// but it's defaulted to disabled for other targets
|
||||||
|
// so we need to enable it here if it has never been disabled by the user
|
||||||
|
userActivityLogger.disable(false);
|
||||||
|
}
|
||||||
|
|
||||||
UserActivityLogger::getInstance().logAction("launch", properties);
|
if (userActivityLogger.isEnabled()) {
|
||||||
|
// sessionRunTime will be reset soon by loadSettings. Grab it now to get previous session value.
|
||||||
|
// The value will be 0 if the user blew away settings this session, which is both a feature and a bug.
|
||||||
|
static const QString TESTER = "HIFI_TESTER";
|
||||||
|
auto gpuIdent = GPUIdent::getInstance();
|
||||||
|
auto glContextData = getGLContextData();
|
||||||
|
QJsonObject properties = {
|
||||||
|
{ "version", applicationVersion() },
|
||||||
|
{ "tester", QProcessEnvironment::systemEnvironment().contains(TESTER) },
|
||||||
|
{ "previousSessionCrashed", _previousSessionCrashed },
|
||||||
|
{ "previousSessionRuntime", sessionRunTime.get() },
|
||||||
|
{ "cpu_architecture", QSysInfo::currentCpuArchitecture() },
|
||||||
|
{ "kernel_type", QSysInfo::kernelType() },
|
||||||
|
{ "kernel_version", QSysInfo::kernelVersion() },
|
||||||
|
{ "os_type", QSysInfo::productType() },
|
||||||
|
{ "os_version", QSysInfo::productVersion() },
|
||||||
|
{ "gpu_name", gpuIdent->getName() },
|
||||||
|
{ "gpu_driver", gpuIdent->getDriver() },
|
||||||
|
{ "gpu_memory", static_cast<qint64>(gpuIdent->getMemory()) },
|
||||||
|
{ "gl_version_int", glVersionToInteger(glContextData.value("version").toString()) },
|
||||||
|
{ "gl_version", glContextData["version"] },
|
||||||
|
{ "gl_vender", glContextData["vendor"] },
|
||||||
|
{ "gl_sl_version", glContextData["sl_version"] },
|
||||||
|
{ "gl_renderer", glContextData["renderer"] },
|
||||||
|
{ "ideal_thread_count", QThread::idealThreadCount() }
|
||||||
|
};
|
||||||
|
auto macVersion = QSysInfo::macVersion();
|
||||||
|
if (macVersion != QSysInfo::MV_None) {
|
||||||
|
properties["os_osx_version"] = QSysInfo::macVersion();
|
||||||
|
}
|
||||||
|
auto windowsVersion = QSysInfo::windowsVersion();
|
||||||
|
if (windowsVersion != QSysInfo::WV_None) {
|
||||||
|
properties["os_win_version"] = QSysInfo::windowsVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
ProcessorInfo procInfo;
|
||||||
|
if (getProcessorInfo(procInfo)) {
|
||||||
|
properties["processor_core_count"] = procInfo.numProcessorCores;
|
||||||
|
properties["logical_processor_count"] = procInfo.numLogicalProcessors;
|
||||||
|
properties["processor_l1_cache_count"] = procInfo.numProcessorCachesL1;
|
||||||
|
properties["processor_l2_cache_count"] = procInfo.numProcessorCachesL2;
|
||||||
|
properties["processor_l3_cache_count"] = procInfo.numProcessorCachesL3;
|
||||||
|
}
|
||||||
|
|
||||||
|
properties["first_run"] = firstRun.get();
|
||||||
|
|
||||||
|
// add the user's machine ID to the launch event
|
||||||
|
properties["machine_fingerprint"] = uuidStringWithoutCurlyBraces(FingerprintUtils::getMachineFingerprint());
|
||||||
|
|
||||||
|
userActivityLogger.logAction("launch", properties);
|
||||||
|
}
|
||||||
|
|
||||||
// Tell our entity edit sender about our known jurisdictions
|
// Tell our entity edit sender about our known jurisdictions
|
||||||
_entityEditSender.setServerJurisdictions(&_entityServerJurisdictions);
|
_entityEditSender.setServerJurisdictions(&_entityServerJurisdictions);
|
||||||
|
|
|
@ -319,7 +319,7 @@ Menu::Menu() {
|
||||||
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
|
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
|
||||||
});
|
});
|
||||||
|
|
||||||
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings");
|
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings...");
|
||||||
connect(action, &QAction::triggered, [] {
|
connect(action, &QAction::triggered, [] {
|
||||||
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
|
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
|
||||||
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
bool isEnabled() { return !_disabled.get(); }
|
bool isEnabled() { return !_disabled.get(); }
|
||||||
|
bool isDisabledSettingSet() const { return _disabled.isSet(); }
|
||||||
|
|
||||||
void disable(bool disable);
|
void disable(bool disable);
|
||||||
void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters());
|
void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters());
|
||||||
|
@ -53,7 +54,7 @@ private slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UserActivityLogger();
|
UserActivityLogger();
|
||||||
Setting::Handle<bool> _disabled { "UserActivityLoggerDisabled", false };
|
Setting::Handle<bool> _disabled { "UserActivityLoggerDisabled", true };
|
||||||
|
|
||||||
QElapsedTimer _timer;
|
QElapsedTimer _timer;
|
||||||
};
|
};
|
||||||
|
|
|
@ -107,6 +107,7 @@ namespace Setting {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isSet() const {
|
bool isSet() const {
|
||||||
|
maybeInit();
|
||||||
return _isSet;
|
return _isSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -482,10 +482,10 @@ function populateNearbyUserList(selectData, oldAudioData) {
|
||||||
isPresent: true,
|
isPresent: true,
|
||||||
isReplicated: avatar.isReplicated
|
isReplicated: avatar.isReplicated
|
||||||
};
|
};
|
||||||
|
// Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin.
|
||||||
|
Users.requestUsernameFromID(id);
|
||||||
if (id) {
|
if (id) {
|
||||||
addAvatarNode(id); // No overlay for ourselves
|
addAvatarNode(id); // No overlay for ourselves
|
||||||
// Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin.
|
|
||||||
Users.requestUsernameFromID(id);
|
|
||||||
avatarsOfInterest[id] = true;
|
avatarsOfInterest[id] = true;
|
||||||
} else {
|
} else {
|
||||||
// Return our username from the Account API
|
// Return our username from the Account API
|
||||||
|
|
|
@ -42,7 +42,6 @@ ACClientApp::ACClientApp(int argc, char* argv[]) :
|
||||||
const QCommandLineOption listenPortOption("listenPort", "listen port", QString::number(INVALID_PORT));
|
const QCommandLineOption listenPortOption("listenPort", "listen port", QString::number(INVALID_PORT));
|
||||||
parser.addOption(listenPortOption);
|
parser.addOption(listenPortOption);
|
||||||
|
|
||||||
|
|
||||||
if (!parser.parse(QCoreApplication::arguments())) {
|
if (!parser.parse(QCoreApplication::arguments())) {
|
||||||
qCritical() << parser.errorText() << endl;
|
qCritical() << parser.errorText() << endl;
|
||||||
parser.showHelp();
|
parser.showHelp();
|
||||||
|
@ -66,6 +65,7 @@ ACClientApp::ACClientApp(int argc, char* argv[]) :
|
||||||
const_cast<QLoggingCategory*>(&shared())->setEnabled(QtInfoMsg, false);
|
const_cast<QLoggingCategory*>(&shared())->setEnabled(QtInfoMsg, false);
|
||||||
const_cast<QLoggingCategory*>(&shared())->setEnabled(QtWarningMsg, false);
|
const_cast<QLoggingCategory*>(&shared())->setEnabled(QtWarningMsg, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString domainServerAddress = "127.0.0.1:40103";
|
QString domainServerAddress = "127.0.0.1:40103";
|
||||||
if (parser.isSet(domainAddressOption)) {
|
if (parser.isSet(domainAddressOption)) {
|
||||||
|
|
Loading…
Reference in a new issue